gnu: einstein: Use mirror for source download.
[jackhill/guix/guix.git] / gnu / packages / ruby.scm
CommitLineData
6ef8c59a 1;;; GNU Guix --- Functional package management for GNU
37ab3aba 2;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
402b03e6 3;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
f586c877 4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
37ab3aba 5;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
6742c6f6 6;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
cba53c60 7;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
47956fa0 8;;; Copyright © 2017 ng0 <ng0@n0.is>
0899352f 9;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
2e77bbed 10;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
81a22171 11;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
6a9d2266 12;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
433e3154 13;;; Copyright © 2017, 2018, 2019 Christopher Baines <mail@cbaines.net>
4db80f8b 14;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
8ef06557 15;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
3355e49c 16;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
fc4f7c45 17;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com>
6ef8c59a
PP
18;;;
19;;; This file is part of GNU Guix.
20;;;
21;;; GNU Guix is free software; you can redistribute it and/or modify it
22;;; under the terms of the GNU General Public License as published by
23;;; the Free Software Foundation; either version 3 of the License, or (at
24;;; your option) any later version.
25;;;
26;;; GNU Guix is distributed in the hope that it will be useful, but
27;;; WITHOUT ANY WARRANTY; without even the implied warranty of
28;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29;;; GNU General Public License for more details.
30;;;
31;;; You should have received a copy of the GNU General Public License
32;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
33
34(define-module (gnu packages ruby)
35 #:use-module ((guix licenses) #:prefix license:)
36 #:use-module (gnu packages)
1db791d5 37 #:use-module (gnu packages base)
933dad91 38 #:use-module (gnu packages bison)
15b16c2c 39 #:use-module (gnu packages check)
6ef8c59a 40 #:use-module (gnu packages compression)
2a9ce5cb 41 #:use-module (gnu packages crypto)
4a9e0585 42 #:use-module (gnu packages databases)
255d1bbe 43 #:use-module (gnu packages dbm)
c41fba01 44 #:use-module (gnu packages rails)
6ef8c59a 45 #:use-module (gnu packages readline)
6ef8c59a 46 #:use-module (gnu packages autotools)
ad79eb55 47 #:use-module (gnu packages java)
6ef8c59a 48 #:use-module (gnu packages libffi)
f3d7bb93 49 #:use-module (gnu packages libidn)
c41fba01
CB
50 #:use-module (gnu packages linux)
51 #:use-module (gnu packages lsof)
34138e42 52 #:use-module (gnu packages maths)
0c8eedc1 53 #:use-module (gnu packages ncurses)
fe5dd5f4 54 #:use-module (gnu packages networking)
3ca43524 55 #:use-module (gnu packages node)
ac09beba 56 #:use-module (gnu packages python)
44d10b1f 57 #:use-module (gnu packages python-xyz)
763624f5 58 #:use-module (gnu packages ragel)
30f08487 59 #:use-module (gnu packages rsync)
cd0322a3 60 #:use-module (gnu packages sqlite)
cc2b77df 61 #:use-module (gnu packages tls)
66e20863 62 #:use-module (gnu packages version-control)
6ef8c59a
PP
63 #:use-module (guix packages)
64 #:use-module (guix download)
bda0c139 65 #:use-module (guix git-download)
6ef8c59a 66 #:use-module (guix utils)
acf735f2 67 #:use-module (guix build-system gnu)
e920bfca 68 #:use-module (gnu packages xml)
c2c4e5b2 69 #:use-module (gnu packages web)
15b16c2c
CB
70 #:use-module (guix build-system ruby)
71 #:use-module ((srfi srfi-1) #:select (alist-delete)))
6ef8c59a
PP
72
73(define-public ruby
74 (package
75 (name "ruby")
35db2ba7 76 (version "2.5.3")
6ef8c59a
PP
77 (source
78 (origin
79 (method url-fetch)
6becfdff
MW
80 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
81 (version-major+minor version)
12d39eb5 82 "/ruby-" version ".tar.xz"))
6ef8c59a
PP
83 (sha256
84 (base32
35db2ba7 85 "0vrhrw7kcz9mg0jkqnihkcxqy5k05v8k1j0y2735z8wfk8sx1j8w"))
65e84e31
BW
86 (modules '((guix build utils)))
87 (snippet `(begin
88 ;; Remove bundled libffi
c033c195 89 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
65e84e31 90 #t))))
6ef8c59a
PP
91 (build-system gnu-build-system)
92 (arguments
93 `(#:test-target "test"
6ef8c59a 94 #:phases
9656b8be 95 (modify-phases %standard-phases
65e84e31 96 (add-before 'configure 'replace-bin-sh-and-remove-libffi
9656b8be
BW
97 (lambda _
98 (substitute* '("Makefile.in"
99 "ext/pty/pty.c"
100 "io.c"
101 "lib/mkmf.rb"
102 "process.c"
103 "test/rubygems/test_gem_ext_configure_builder.rb"
104 "test/rdoc/test_rdoc_parser.rb"
105 "test/ruby/test_rubyoptions.rb"
106 "test/ruby/test_process.rb"
107 "test/ruby/test_system.rb"
108 "tool/rbinstall.rb")
109 (("/bin/sh") (which "sh")))
110 #t)))))
6ef8c59a
PP
111 (inputs
112 `(("readline" ,readline)
6ef8c59a
PP
113 ("openssl" ,openssl)
114 ("libffi" ,libffi)
115 ("gdbm" ,gdbm)
116 ("zlib" ,zlib)))
117 (native-search-paths
118 (list (search-path-specification
119 (variable "GEM_PATH")
3cb3fa67 120 (files (list (string-append "lib/ruby/vendor_ruby"))))))
6becfdff 121 (synopsis "Programming language interpreter")
6ef8c59a
PP
122 (description "Ruby is a dynamic object-oriented programming language with
123a focus on simplicity and productivity.")
bf3be6a5 124 (home-page "https://www.ruby-lang.org")
6ef8c59a
PP
125 (license license:ruby)))
126
93cae02f
CB
127(define-public ruby-2.4
128 (package
129 (inherit ruby)
130 (version "2.4.3")
131 (source
132 (origin
133 (method url-fetch)
134 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
135 (version-major+minor version)
136 "/ruby-" version ".tar.xz"))
137 (sha256
138 (base32
139 "0l9bv67dgsphk42lmiskhrnh47hbyj6rfg2rcjx22xivpx07srr3"))
140 (patches (search-patches "ruby-rubygems-276-for-ruby24.patch"))
141 (modules '((guix build utils)))
142 (snippet `(begin
143 ;; Remove bundled libffi
144 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
145 #t))))))
146
98bb983c 147(define-public ruby-2.3
800a7dd5
BW
148 (package
149 (inherit ruby)
2e77bbed 150 (version "2.3.8")
800a7dd5
BW
151 (source
152 (origin
153 (method url-fetch)
154 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
155 (version-major+minor version)
156 "/ruby-" version ".tar.xz"))
157 (sha256
158 (base32
2e77bbed 159 "1zhxbjff08pvbnxvn58krns6q0p6g4977q6ykfn823gxhifn63wi"))
800a7dd5
BW
160 (modules '((guix build utils)))
161 (snippet `(begin
162 ;; Remove bundled libffi
163 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
164 #t))))))
165
933dad91
RW
166(define-public mruby
167 (package
168 (name "mruby")
169 (version "2.0.0")
170 (source
171 (origin
172 (method git-fetch)
173 (uri (git-reference
174 (url "https://github.com/mruby/mruby.git")
175 (commit version)))
176 (file-name (git-file-name name version))
177 (sha256
178 (base32
179 "1r6w1asjshff43ymdwa6xmrkggza99mi2kw88k7ic6ag2j81hcj5"))))
180 (build-system gnu-build-system)
181 (arguments
182 `(#:test-target "test"
183 #:phases
184 (modify-phases %standard-phases
185 (delete 'configure)
186 (add-after 'unpack 'enable-verbose-tests
187 (lambda _
188 (substitute* "Makefile"
189 (("ruby ./minirake" m)
190 (string-append m " --verbose")))
191 #t))
192 (add-after 'unpack 'disable-broken-tests
193 (lambda _
194 (substitute* "mrbgems/mruby-io/test/io.rb"
195 (("assert\\('IO.popen.+$" m)
196 (string-append m "skip \"Hangs in the Guix build environment\"\n"))
197 (("assert\\('IO#isatty.+$" m)
198 (string-append m "skip \"Disable for Guix; there is no /dev/tty\"\n"))
199 ;; This one is really weird. The *expected* output is all wrong.
200 (("assert\\('`cmd`.*" m)
201 (string-append m "skip \"Disable for Guix\"\n"))
202 (("echo foo")
203 (string-append (which "echo") " foo")))
204 #t))
205 ;; There is no install target
206 (replace 'install
207 (lambda* (#:key outputs #:allow-other-keys)
208 (let* ((out (assoc-ref outputs "out"))
209 (bin (string-append out "/bin"))
210 (lib (string-append out "/lib")))
211 (mkdir-p bin)
212 (copy-recursively "build/host/bin" bin)
213 (mkdir-p lib)
214 (copy-recursively "build/host/lib" lib))
215 #t)))))
216 (native-inputs
217 `(("ruby" ,ruby)
218 ("bison" ,bison)))
219 (home-page "https://github.com/mruby/mruby")
220 (synopsis "Lightweight Ruby")
221 (description "mruby is the lightweight implementation of the Ruby
222language. Its syntax is Ruby 1.9 compatible. mruby can be linked and
223embedded within your application.")
224 (license license:expat)))
225
34372d39
RW
226(define-public ruby-commander
227 (package
228 (name "ruby-commander")
229 (version "4.4.7")
230 (source
231 (origin
232 (method url-fetch)
233 (uri (rubygems-uri "commander" version))
234 (sha256
235 (base32
236 "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg"))))
237 (build-system ruby-build-system)
238 (arguments
239 `(#:test-target "spec"
240 #:phases
241 (modify-phases %standard-phases
242 ;; Don't run or require rubocop, the code linting tool, as this is a
243 ;; bit unnecessary.
244 (add-after 'unpack 'dont-run-rubocop
245 (lambda _
246 (substitute* "Rakefile"
247 ((".*rubocop.*") "")
248 ((".*RuboCop.*") ""))
249 #t)))))
250 (propagated-inputs
251 `(("ruby-highline" ,ruby-highline)))
252 (native-inputs
253 `(("bundler" ,bundler)
254 ("ruby-rspec-core" ,ruby-rspec-core)
255 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
256 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
257 ("ruby-simplecov" ,ruby-simplecov)))
258 (home-page "https://github.com/commander-rb/commander")
259 (synopsis "Library for building Ruby command-line executables")
260 (description
261 "Commander aims to be a complete solution for Ruby command-line
262executables. Commander bridges the gap between other terminal related
263libraries (OptionParser, HighLine), while providing many new features, and an
264elegant API.")
265 (license license:expat)))
266
823ed097
CB
267(define-public ruby-highline
268 (package
269 (name "ruby-highline")
6742c6f6 270 (version "2.0.1")
823ed097
CB
271 (source
272 (origin
273 (method url-fetch)
274 (uri (rubygems-uri "highline" version))
275 (sha256
276 (base32
6742c6f6 277 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
823ed097
CB
278 (build-system ruby-build-system)
279 (arguments
280 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
281 (native-inputs
282 `(("bundler" ,bundler)
283 ("ruby-code-statistics" ,ruby-code-statistics)))
284 (synopsis
285 "HighLine helps you build command-line interfaces")
286 (description
287 "HighLine provides a high-level IO library that provides validation,
288type conversion, and more for command-line interfaces. HighLine also includes
289a menu system for providing multiple options to the user.")
290 (home-page "https://github.com/JEG2/highline")
291 (license (list license:gpl2 license:ruby))))
292
bda0c139
DT
293(define-public ruby-hoe
294 (package
295 (name "ruby-hoe")
05f2f8bc 296 (version "3.16.2")
bda0c139 297 (source (origin
e83c6d00
DT
298 (method url-fetch)
299 (uri (rubygems-uri "hoe" version))
bda0c139
DT
300 (sha256
301 (base32
05f2f8bc 302 "12q6dn2irsfamdbjpqvs0dwl4i1vl7wflxrcg972h9jw0ds38f3a"))))
bda0c139 303 (build-system ruby-build-system)
bda0c139
DT
304 (synopsis "Ruby project management helper")
305 (description
306 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
307maintain, and release projects and includes a dynamic plug-in system allowing
308for easy extensibility. Hoe ships with plug-ins for all the usual project
309tasks including rdoc generation, testing, packaging, deployment, and
310announcement.")
2f3800e5 311 (home-page "https://www.zenspider.com/projects/hoe.html")
bda0c139
DT
312 (license license:expat)))
313
022170dc
PP
314(define-public ruby-rake-compiler
315 (package
316 (name "ruby-rake-compiler")
0cd7b816 317 (version "1.0.4")
022170dc
PP
318 (source (origin
319 (method url-fetch)
e83c6d00 320 (uri (rubygems-uri "rake-compiler" version))
022170dc
PP
321 (sha256
322 (base32
0cd7b816 323 "1xpdi4w8zaklk1i9ps8g3k0icw3v5fcks092l84w28rgrpx82qip"))))
022170dc
PP
324 (build-system ruby-build-system)
325 (arguments
e83c6d00 326 '(#:tests? #f)) ; needs cucumber
022170dc 327 (synopsis "Building and packaging helper for Ruby native extensions")
e881752c 328 (description "Rake-compiler provides a framework for building and
022170dc
PP
329packaging native C and Java extensions in Ruby.")
330 (home-page "https://github.com/rake-compiler/rake-compiler")
331 (license license:expat)))
332
30f08487
RW
333(define-public ruby-rsync
334 (package
335 (name "ruby-rsync")
336 (version "1.0.9")
337 (source
338 (origin
339 (method url-fetch)
340 (uri (rubygems-uri "rsync" version))
341 (sha256
342 (base32
343 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
344 (build-system ruby-build-system)
345 (arguments
346 '(#:test-target "spec"
347 #:phases
348 (modify-phases %standard-phases
349 (add-after 'unpack 'remove-coveralls-requirement
350 (lambda _
351 (substitute* "spec/spec_helper.rb"
352 (("require 'coveralls'") "")
353 (("Coveralls.wear!") ""))
354 #t)))))
355 (native-inputs
356 `(("bundler" ,bundler)
357 ("rsync" ,rsync)
358 ("ruby-rspec-core" ,ruby-rspec-core)
359 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
360 ("ruby-rspec-mocks" ,ruby-rspec-mocks)))
361 (home-page "https://github.com/jbussdieker/ruby-rsync")
362 (synopsis "Ruby wrapper around rsync")
363 (description
364 "Ruby Rsync is a Ruby library that can synchronize files between remote
365hosts by wrapping the @file{rsync} binary.")
366 (license license:expat)))
367
acf735f2
DT
368(define-public ruby-i18n
369 (package
370 (name "ruby-i18n")
cbb50182 371 (version "1.1.0")
acf735f2
DT
372 (source (origin
373 (method url-fetch)
e83c6d00 374 (uri (rubygems-uri "i18n" version))
acf735f2
DT
375 (sha256
376 (base32
cbb50182 377 "0ppvmla21hssvrfm8g1n2fnb4lxn4yhy9qmmba0imanflgldrjmr"))))
acf735f2
DT
378 (build-system ruby-build-system)
379 (arguments
0bfdfd37 380 '(#:tests? #f)) ; no tests
cbb50182 381 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
acf735f2
DT
382 (synopsis "Internationalization library for Ruby")
383 (description "Ruby i18n is an internationalization and localization
384solution for Ruby programs. It features translation and localization,
385interpolation of values to translations, pluralization, customizable
386transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
387translation data, custom key/scope separator, custom exception handlers, and
388an extensible architecture with a swappable backend.")
7bf837fd 389 (home-page "https://github.com/svenfuchs/i18n")
acf735f2 390 (license license:expat)))
eb0c2dd6 391
62b138ca
CB
392(define-public ruby-iruby
393 (package
394 (name "ruby-iruby")
395 (version "0.3")
396 (source
397 (origin
398 (method url-fetch)
399 (uri (rubygems-uri "iruby" version))
400 (sha256
401 (base32
402 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
403 (build-system ruby-build-system)
404 (arguments
405 ;; TODO: Tests currently fail.
406 ;;
407 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
408 ;;
409 ;; 1) Failure:
410 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
411 ;; In [ expected
412 ;;
413 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
414 '(#:tests? #f
415 #:phases
416 (modify-phases %standard-phases
417 (add-after 'unpack 'patch-ipython
418 (lambda* (#:key inputs #:allow-other-keys)
419 (substitute* "lib/iruby/command.rb"
420 (("version = `")
421 (string-append
422 "version = `"
423 (assoc-ref inputs "python-ipython")
424 "/bin/"))
425 (("Kernel\\.exec\\('")
426 (string-append
427 "Kernel.exec('"
428 (assoc-ref inputs "python-ipython")
429 "/bin/")))
430 #t)))))
431 (inputs
432 `(("python-ipython" ,python-ipython)))
433 (propagated-inputs
434 `(("ruby-bond" ,ruby-bond)
435 ("ruby-data_uri" ,ruby-data_uri)
436 ("ruby-mimemagic" ,ruby-mimemagic)
437 ("ruby-multi-json" ,ruby-multi-json)
438 ("ruby-cztop" ,ruby-cztop)
439 ;; Optional inputs
440 ("ruby-pry" ,ruby-pry)))
441 (synopsis "Ruby kernel for Jupyter/IPython")
442 (description
443 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
444notebook).")
445 (home-page "https://github.com/SciRuby/iruby")
446 (license license:expat)))
447
eb0c2dd6
DT
448;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
449;; dependencies use RSpec for their test suites! To avoid these circular
450;; dependencies, we disable tests for all of the RSpec-related packages.
87688ff3 451(define-public ruby-rspec-support
eb0c2dd6
DT
452 (package
453 (name "ruby-rspec-support")
bee67d18 454 (version "3.8.0")
eb0c2dd6
DT
455 (source (origin
456 (method url-fetch)
e83c6d00 457 (uri (rubygems-uri "rspec-support" version))
eb0c2dd6
DT
458 (sha256
459 (base32
bee67d18 460 "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609"))))
eb0c2dd6
DT
461 (build-system ruby-build-system)
462 (arguments
463 '(#:tests? #f)) ; avoid dependency cycles
464 (synopsis "RSpec support library")
465 (description "Support utilities for RSpec gems.")
466 (home-page "https://github.com/rspec/rspec-support")
467 (license license:expat)))
468
469(define-public ruby-rspec-core
470 (package
471 (name "ruby-rspec-core")
bee67d18 472 (version "3.8.0")
eb0c2dd6
DT
473 (source (origin
474 (method url-fetch)
e83c6d00 475 (uri (rubygems-uri "rspec-core" version))
eb0c2dd6
DT
476 (sha256
477 (base32
bee67d18 478 "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p"))))
eb0c2dd6
DT
479 (build-system ruby-build-system)
480 (arguments
481 '(#:tests? #f)) ; avoid dependency cycles
482 (propagated-inputs
483 `(("ruby-rspec-support" ,ruby-rspec-support)))
484 (synopsis "RSpec core library")
485 (description "Rspec-core provides the RSpec test runner and example
486groups.")
487 (home-page "https://github.com/rspec/rspec-core")
488 (license license:expat)))
e6962009 489
64c318f2
BW
490(define-public ruby-rspec-core-2
491 (package (inherit ruby-rspec-core)
492 (version "2.14.8")
493 (source (origin
494 (method url-fetch)
495 (uri (rubygems-uri "rspec-core" version))
496 (sha256
497 (base32
498 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
499 (propagated-inputs `())))
500
20c05ea9 501(define-public ruby-diff-lcs
e6962009
DT
502 (package
503 (name "ruby-diff-lcs")
e2fcef39 504 (version "1.3")
e6962009
DT
505 (source (origin
506 (method url-fetch)
e83c6d00 507 (uri (rubygems-uri "diff-lcs" version))
e6962009
DT
508 (sha256
509 (base32
e2fcef39 510 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
e6962009
DT
511 (build-system ruby-build-system)
512 (arguments
513 '(#:tests? #f)) ; avoid dependency cycles
514 (synopsis "Compute the difference between two Enumerable sequences")
515 (description "Diff::LCS computes the difference between two Enumerable
516sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
517It includes utilities to create a simple HTML diff output format and a
518standard diff-like tool.")
519 (home-page "https://github.com/halostatue/diff-lcs")
520 (license license:expat)))
521
522(define-public ruby-rspec-expectations
523 (package
524 (name "ruby-rspec-expectations")
bee67d18 525 (version "3.8.2")
e6962009
DT
526 (source (origin
527 (method url-fetch)
e83c6d00 528 (uri (rubygems-uri "rspec-expectations" version))
e6962009
DT
529 (sha256
530 (base32
bee67d18 531 "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm"))))
e6962009
DT
532 (build-system ruby-build-system)
533 (arguments
534 '(#:tests? #f)) ; avoid dependency cycles
535 (propagated-inputs
536 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 537 ("ruby-diff-lcs" ,ruby-diff-lcs)))
e881752c 538 (synopsis "RSpec expectations library")
e6962009
DT
539 (description "Rspec-expectations provides a simple API to express expected
540outcomes of a code example.")
541 (home-page "https://github.com/rspec/rspec-expectations")
542 (license license:expat)))
4f2a0cac 543
fb157f25
BW
544(define-public ruby-rspec-expectations-2
545 (package (inherit ruby-rspec-expectations)
546 (version "2.14.5")
547 (source (origin
548 (method url-fetch)
549 (uri (rubygems-uri "rspec-expectations" version))
550 (sha256
551 (base32
552 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
553 (propagated-inputs
554 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
555
999ffb26
DM
556(define-public ruby-rspec-its
557 (package
558 (name "ruby-rspec-its")
559 (version "1.2.0")
560 (source
561 (origin
3306f02a
CB
562 (method git-fetch)
563 (uri (git-reference
564 (url "https://github.com/rspec/rspec-its.git")
565 (commit (string-append "v" version))))
566 (file-name (git-file-name name version))
999ffb26
DM
567 (sha256
568 (base32
3306f02a
CB
569 "190rz7v4q4wk80fzhr5hknvxx4vb2pywmqr8wc41w2blj9ylzi0f"))
570 (patches
571 (list
572 (origin (method url-fetch)
573 (uri (string-append
574 "https://github.com/rspec/rspec-its/commit/"
575 "bfaab439c7c879f5ef25552f41827891f6308373.patch"))
576 (file-name "ruby-rspec-its-fix-specs-for-ruby-2.4.patch")
577 (sha256
578 (base32
579 "0lnik0kvrpgkakvdb2fmzg22pdlraf6kiidr9sv6rnfyviiqwxgh")))))))
999ffb26
DM
580 (build-system ruby-build-system)
581 (arguments
3306f02a
CB
582 `(#:test-target "spec"
583 #:phases
584 (modify-phases %standard-phases
585 (add-after 'unpack 'dont-install-gems-from-gemfile
586 (lambda _
587 (substitute* "Gemfile"
588 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
589 ""))
590 #t))
591 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
592 (lambda _
593 (substitute* "rspec-its.gemspec"
594 (("rake.*") "rake'\n")
595 (("cucumber.*") "cucumber'\n")
596 (("bundler.*") "bundler'\n")
597 (("aruba.*") "aruba'\n"))
598 #t)))))
999ffb26
DM
599 (propagated-inputs
600 `(("ruby-rspec-core" ,ruby-rspec-core)
601 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
3306f02a
CB
602 (native-inputs
603 `(("bundler" ,bundler)
604 ("ruby-cucumber" ,ruby-cucumber)
605 ("ruby-aruba" ,ruby-aruba)))
606 (synopsis "RSpec extension that provides the @code{its} method")
607 (description
608 "RSpec::Its provides the its method as a short-hand to specify the expected
609value of an attribute. For example, one can use @code{its(:size)\\{should
610eq(1)\\}}.")
999ffb26
DM
611 (home-page "https://github.com/rspec/rspec-its")
612 (license license:expat)))
613
4f2a0cac
DT
614(define-public ruby-rspec-mocks
615 (package
616 (name "ruby-rspec-mocks")
bee67d18 617 (version "3.8.0")
4f2a0cac
DT
618 (source (origin
619 (method url-fetch)
e83c6d00 620 (uri (rubygems-uri "rspec-mocks" version))
4f2a0cac
DT
621 (sha256
622 (base32
bee67d18 623 "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp"))))
4f2a0cac
DT
624 (build-system ruby-build-system)
625 (arguments
626 '(#:tests? #f)) ; avoid dependency cycles
627 (propagated-inputs
628 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 629 ("ruby-diff-lcs" ,ruby-diff-lcs)))
4f2a0cac
DT
630 (synopsis "RSpec stubbing and mocking library")
631 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
632support for stubbing and mocking.")
633 (home-page "https://github.com/rspec/rspec-mocks")
634 (license license:expat)))
d4fde1f2 635
6da9adeb
BW
636(define-public ruby-rspec-mocks-2
637 (package (inherit ruby-rspec-mocks)
638 (version "2.14.6")
639 (source (origin
640 (method url-fetch)
641 (uri (rubygems-uri "rspec-mocks" version))
642 (sha256
643 (base32
644 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
645 (propagated-inputs
646 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
647
198bc648
CB
648(define-public ruby-rspec-rerun
649 (package
650 (name "ruby-rspec-rerun")
651 (version "1.1.0")
652 (source
653 (origin
654 (method url-fetch)
655 (uri (rubygems-uri "rspec-rerun" version))
656 (sha256
657 (base32
658 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
659 (build-system ruby-build-system)
660 (arguments
661 '(;; No included tests
662 #:tests? #f))
663 (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
664 (synopsis "Track failed RSpec tests to re-run them")
665 (description
666 "This package provides an automated way to track, and then re-run failed
667RSpec tests.")
668 (home-page "https://github.com/dblock/rspec-rerun")
669 (license license:expat)))
670
d4fde1f2
DT
671(define-public ruby-rspec
672 (package
673 (name "ruby-rspec")
bee67d18 674 (version "3.8.0")
d4fde1f2
DT
675 (source (origin
676 (method url-fetch)
e83c6d00 677 (uri (rubygems-uri "rspec" version))
d4fde1f2
DT
678 (sha256
679 (base32
bee67d18 680 "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3"))))
d4fde1f2
DT
681 (build-system ruby-build-system)
682 (arguments
683 '(#:tests? #f)) ; avoid dependency cycles
684 (propagated-inputs
685 `(("ruby-rspec-core" ,ruby-rspec-core)
686 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
687 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
688 (synopsis "Behavior-driven development framework for Ruby")
689 (description "RSpec is a behavior-driven development (BDD) framework for
690Ruby. This meta-package includes the RSpec test runner, along with the
691expectations and mocks frameworks.")
692 (home-page "http://rspec.info/")
693 (license license:expat)))
2cbc105b 694
5ac984b3
BW
695(define-public ruby-rspec-2
696 (package (inherit ruby-rspec)
697 (version "2.14.1")
698 (source (origin
699 (method url-fetch)
700 (uri (rubygems-uri "rspec" version))
701 (sha256
702 (base32
703 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
704 (propagated-inputs
705 `(("ruby-rspec-core" ,ruby-rspec-core-2)
706 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
707 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
708
2cbc105b
DT
709;; Bundler is yet another source of circular dependencies, so we must disable
710;; its test suite as well.
711(define-public bundler
712 (package
713 (name "bundler")
4fdd4d33 714 (version "1.17.3")
2cbc105b
DT
715 (source (origin
716 (method url-fetch)
e83c6d00 717 (uri (rubygems-uri "bundler" version))
2cbc105b
DT
718 (sha256
719 (base32
4fdd4d33 720 "0ln3gnk7cls81gwsbxvrmlidsfd78s6b2hzlm4d4a9wbaidzfjxw"))))
2cbc105b
DT
721 (build-system ruby-build-system)
722 (arguments
723 '(#:tests? #f)) ; avoid dependency cycles
724 (synopsis "Ruby gem bundler")
725 (description "Bundler automatically downloads and installs a list of gems
726specified in a \"Gemfile\", as well as their dependencies.")
2f3800e5 727 (home-page "https://bundler.io/")
2cbc105b 728 (license license:expat)))
98b87b82 729
cf36174f
RW
730(define-public ruby-builder
731 (package
732 (name "ruby-builder")
42b48db2 733 (version "3.2.3")
cf36174f
RW
734 (source (origin
735 (method url-fetch)
736 (uri (rubygems-uri "builder" version))
737 (sha256
738 (base32
42b48db2 739 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
cf36174f
RW
740 (build-system ruby-build-system)
741 (arguments
742 `(#:phases
743 (modify-phases %standard-phases
744 (add-after 'unpack 'do-not-use-rvm
745 (lambda _
746 (substitute* "rakelib/tags.rake"
747 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
748 #t)))))
749 (synopsis "Ruby library to create structured data")
750 (description "Builder provides a number of builder objects that make it
751easy to create structured data. Currently the following builder objects are
752supported: XML Markup and XML Events.")
753 (home-page "https://github.com/jimweirich/builder")
754 (license license:expat)))
755
566f71f8
CB
756(define-public ruby-bump
757 (package
758 (name "ruby-bump")
759 (version "0.7.0")
760 (source
761 (origin
762 (method url-fetch)
763 (uri (rubygems-uri "bump" version))
764 (sha256
765 (base32
766 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
767 (build-system ruby-build-system)
768 (arguments
769 '(;; No included tests
770 #:tests? #f))
771 (synopsis "Tool for working with Rubygems")
772 (description
773 "Bump provides commands to manage Rubygem versioning, updating to the
774next patch version for example.")
775 (home-page "https://github.com/gregorym/bump")
776 (license license:expat)))
777
ad79eb55
RW
778(define-public ruby-rjb
779 (package
780 (name "ruby-rjb")
aeb4e61e 781 (version "1.5.5")
ad79eb55
RW
782 (source (origin
783 (method url-fetch)
784 (uri (rubygems-uri "rjb" version))
785 (sha256
786 (base32
aeb4e61e 787 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
ad79eb55
RW
788 (build-system ruby-build-system)
789 (arguments
790 `(#:tests? #f ; no rakefile
791 #:phases
792 (modify-phases %standard-phases
793 (add-before 'build 'set-java-home
794 (lambda* (#:key inputs #:allow-other-keys)
795 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
796 #t)))))
797 (native-inputs
d2540f80 798 `(("jdk" ,icedtea "jdk")))
ad79eb55
RW
799 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
800 (description "RJB is a bridge program that connects Ruby and Java via the
801Java Native Interface.")
2f3800e5 802 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
ad79eb55
RW
803 (license license:lgpl2.1+)))
804
f9ae2c06
PP
805(define-public ruby-log4r
806 (package
807 (name "ruby-log4r")
808 (version "1.1.10")
809 (source
810 (origin
811 (method url-fetch)
812 (uri (rubygems-uri "log4r" version))
813 (sha256
814 (base32
815 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
816 (build-system ruby-build-system)
817 (arguments
818 '(#:tests? #f)) ; no Rakefile in gem
819 (synopsis "Flexible logging library for Ruby")
820 (description "Comprehensive and flexible logging library written
821in Ruby for use in Ruby programs. It features a hierarchical logging
822system of any number of levels, custom level names, logger
823inheritance, multiple output destinations per log event, execution
824tracing, custom formatting, thread safteyness, XML and YAML
825configuration, and more.")
826 (home-page "http://log4r.rubyforge.org/")
827 (license license:bsd-3)))
828
71a03c29
RW
829(define-public ruby-atoulme-antwrap
830 (package
831 (name "ruby-atoulme-antwrap")
832 (version "0.7.5")
833 (source (origin
834 (method url-fetch)
835 (uri (rubygems-uri "atoulme-Antwrap" version))
836 (sha256
837 (base32
838 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
839 (build-system ruby-build-system)
840 ;; Test data required for most of the tests are not included.
841 (arguments `(#:tests? #f))
842 (native-inputs
843 `(("ruby-hoe" ,ruby-hoe)))
844 (inputs
845 `(("ruby-rjb" ,ruby-rjb)))
846 (synopsis "Ruby wrapper for the Ant build tool")
847 (description "Antwrap is a Ruby module that wraps the Apache Ant build
848tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
849script.")
850 (home-page "http://rubyforge.org/projects/antwrap/")
851 (license license:expat)))
852
fe1ddad5
RW
853(define-public ruby-atoulme-saikuro
854 (package
855 (name "ruby-atoulme-saikuro")
856 (version "1.2.1")
857 (source (origin
858 (method url-fetch)
859 (uri (rubygems-uri "atoulme-Saikuro" version))
860 (sha256
861 (base32
862 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
863 (build-system ruby-build-system)
864 ;; FIXME: There are no unit tests. The tests are demonstrations of the
865 ;; "saikuro" tool.
866 (arguments `(#:tests? #f))
867 (synopsis "Cyclomatic complexity analyzer")
868 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
869given Ruby source code Saikuro will generate a report listing the cyclomatic
870complexity of each method found. In addition, Saikuro counts the number of
871lines per method and can generate a listing of the number of tokens on each
872line of code.")
873 (home-page "http://www.github.com/atoulme/Saikuro")
874 ;; File headers contain the BSD-3 license and the README.rdoc says that
875 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
876 ;; of the Expat license.
877 (license license:bsd-3)))
878
34138e42
BW
879(define-public ruby-asciidoctor
880 (package
881 (name "ruby-asciidoctor")
9933a8e7 882 (version "1.5.7.1")
34138e42
BW
883 (source
884 (origin
885 (method url-fetch)
886 (uri (rubygems-uri "asciidoctor" version))
887 (sha256
888 (base32
9933a8e7 889 "0v52bzc72cvg7zfgq27pa4mgyf29dx9m20fghrw1xmvwgd519n1w"))))
34138e42
BW
890 (build-system ruby-build-system)
891 (arguments
892 `(#:test-target "test:all"
893 #:phases
894 (modify-phases %standard-phases
895 (add-before 'check 'remove-circular-tests
896 (lambda _
897 ;; Remove tests that require circular dependencies to load or pass.
898 (delete-file "test/invoker_test.rb")
899 (delete-file "test/converter_test.rb")
900 (delete-file "test/options_test.rb")
901 #t)))))
902 (native-inputs
903 `(("ruby-minitest" ,ruby-minitest)
904 ("ruby-nokogiri" ,ruby-nokogiri)
905 ("ruby-asciimath" ,ruby-asciimath)
906 ("ruby-coderay" ,ruby-coderay)))
907 (synopsis "Converter from AsciiDoc content to other formats")
908 (description
909 "Asciidoctor is a text processor and publishing toolchain for converting
20860819 910AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other formats.")
bba082a1 911 (home-page "https://asciidoctor.org")
34138e42
BW
912 (license license:expat)))
913
d5840f77
CB
914(define-public ruby-ast
915 (package
916 (name "ruby-ast")
917 (version "2.4.0")
918 (source
919 (origin
920 (method url-fetch)
921 (uri (rubygems-uri "ast" version))
922 (sha256
923 (base32
924 "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7"))))
925 (build-system ruby-build-system)
926 (arguments
927 '(#:phases
928 (modify-phases %standard-phases
929 (add-after 'unpack 'remove-coveralls-requirement
930 (lambda _
931 (substitute* "test/helper.rb"
932 (("require 'coveralls'") "")
933 (("Coveralls::SimpleCov::Formatter") ""))
934 #t))
935 (add-after 'extract-gemspec 'remove-unnecessary-requirements
936 (lambda _
937 (substitute* "ast.gemspec"
938 ((".*coveralls.*") "\n")
939 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
940 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
941 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n"))
942 #t)))))
943 (native-inputs
944 `(("bundler" ,bundler)
945 ("ruby-simplecov" ,ruby-simplecov)
946 ("ruby-json-pure" ,ruby-json-pure)
947 ("ruby-mime-times" ,ruby-mime-types)
948 ("ruby-yard" ,ruby-yard)
949 ("ruby-kramdown" ,ruby-kramdown)
950 ("ruby-rest-client" ,ruby-rest-client)
951 ("ruby-bacon" ,ruby-bacon)
952 ("ruby-bacon-colored-output" ,ruby-bacon-colored-output)
953 ("ruby-racc" ,ruby-racc)))
954 (synopsis "Library for working with Abstract Syntax Trees")
955 (description
956 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
957It does this through immutable data structures.")
958 (home-page "https://whitequark.github.io/ast/")
959 (license license:expat)))
960
b88502c9
BW
961(define-public ruby-sporkmonger-rack-mount
962 ;; Testing the addressable gem requires a newer commit than that released, so
963 ;; use an up to date version.
964 (let ((revision "1")
965 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
966 (package
967 (name "ruby-sporkmonger-rack-mount")
968 (version (git-version "0.8.3" revision commit))
969 (source (origin
970 (method git-fetch)
971 (uri (git-reference
972 (url "https://github.com/sporkmonger/rack-mount.git")
973 (commit commit)))
974 (file-name (git-file-name name version))
975 (sha256
976 (base32
977 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
978 (build-system ruby-build-system)
979 (arguments
980 ;; Tests currently fail so disable them.
981 ;; https://github.com/sporkmonger/rack-mount/pull/1
982 `(#:tests? #f))
983 (propagated-inputs `(("ruby-rack" ,ruby-rack)))
984 (synopsis "Stackable dynamic tree based Rack router")
985 (description
986 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
987continue trying routes if the response returns pass. This allows multiple
988routes to be nested or stacked on top of each other.")
989 (home-page "https://github.com/sporkmonger/rack-mount")
990 (license license:expat))))
991
2f9e0b68
RW
992(define-public ruby-ci-reporter
993 (package
994 (name "ruby-ci-reporter")
995 (version "2.0.0")
996 (source (origin
997 (method url-fetch)
998 (uri (rubygems-uri "ci_reporter" version))
999 (sha256
1000 (base32
1001 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
1002 (build-system ruby-build-system)
1003 (arguments
1004 `(#:test-target "rspec"))
1005 (propagated-inputs
1006 `(("ruby-builder" ,ruby-builder)))
1007 (native-inputs
1008 `(("bundler" ,bundler)
1009 ("ruby-rspec" ,ruby-rspec)))
1010 (synopsis "Generate XML reports of runs test")
1011 (description
1012 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
1013you to generate XML reports of your test runs. The resulting files can be
1014read by a continuous integration system that understands Ant's JUnit report
1015format.")
1016 (home-page "https://github.com/nicksieger/ci_reporter")
1017 (license license:expat)))
1018
2ed201c1
CB
1019(define-public ruby-contracts
1020 (package
1021 (name "ruby-contracts")
1022 (version "0.16.0")
1023 (source
1024 (origin
1025 (method url-fetch)
1026 (uri (rubygems-uri "contracts" version))
1027 (sha256
1028 (base32
1029 "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"))))
1030 (build-system ruby-build-system)
1031 (arguments
1032 '(#:test-target "spec"
1033 #:phases
1034 (modify-phases %standard-phases
1035 ;; Don't run or require rubocop, the code linting tool, as this is a
1036 ;; bit unnecessary.
1037 (add-after 'unpack 'dont-run-rubocop
1038 (lambda _
1039 (substitute* "Rakefile"
1040 ((".*rubocop.*") "")
1041 ((".*RuboCop.*") ""))
1042 #t)))))
1043 (native-inputs
1044 `(("ruby-rspec" ,ruby-rspec)))
1045 (synopsis "Method contracts for Ruby")
1046 (description
1047 "This library provides contracts for Ruby. A contract describes the
1048correct inputs and output for a method, and will raise an error if a incorrect
1049value is found.")
1050 (home-page "https://github.com/egonSchiele/contracts.ruby")
1051 (license license:bsd-2)))
1052
6f8bf0eb
CB
1053(define-public ruby-crack
1054 (package
1055 (name "ruby-crack")
1056 (version "0.4.3")
1057 (source
1058 (origin
1059 (method url-fetch)
1060 (uri (rubygems-uri "crack" version))
1061 (sha256
1062 (base32
1063 "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k"))))
1064 (build-system ruby-build-system)
1065 (arguments
1066 `(#:phases
1067 (modify-phases %standard-phases
1068 (replace 'check
1069 (lambda* (#:key tests? #:allow-other-keys)
1070 (when tests?
1071 (for-each (lambda (file)
1072 (display file)(display "\n")
1073 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
1074 (find-files "test" ".*rb$")))
1075 #t)))))
1076 (propagated-inputs
1077 `(("ruby-safe-yaml" ,ruby-safe-yaml)))
1078 (synopsis "Simple JSON and XML parsing for Ruby")
1079 (description
1080 "@code{crack} provides really simple JSON and XML parsing, extracted from
1081code in Merb and Rails.")
1082 (home-page "https://github.com/jnunemaker/crack")
1083 (license license:expat)))
1084
bef3506e
CB
1085(define-public ruby-cliver
1086 (package
1087 (name "ruby-cliver")
1088 (version "0.3.2")
1089 (source
1090 (origin
1091 (method url-fetch)
1092 (uri (rubygems-uri "cliver" version))
1093 (sha256
1094 (base32
1095 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
1096 (build-system ruby-build-system)
1097 (arguments
1098 '(#:phases
1099 (modify-phases %standard-phases
1100 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
1101 ;; would be nice, but the tests look to be incompatible:
1102 ;;
1103 ;; NoMethodError: undefined method `last_comment'
1104 (replace 'check
1105 (lambda* (#:key tests? #:allow-other-keys)
1106 (when tests?
1107 (invoke "rspec"))
1108 #t)))))
1109 (native-inputs
1110 `(("bundler" ,bundler)
1111 ("ruby-rspec" ,ruby-rspec-2)))
1112 (synopsis "Assertions for command-line dependencies in Ruby")
1113 (description
1114 "@code{cliver} provides a way to detect missing command-line
1115dependencies, including versions.")
1116 (home-page "https://github.com/yaauie/cliver")
1117 (license license:expat)))
1118
fe5dd5f4
CB
1119(define-public ruby-czmq-ffi-gen
1120 (package
1121 (name "ruby-czmq-ffi-gen")
1122 (version "0.13.0")
1123 (source
1124 (origin
1125 (method url-fetch)
1126 (uri (rubygems-uri "czmq-ffi-gen" version))
1127 (sha256
1128 (base32
1129 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
1130 (build-system ruby-build-system)
1131 (arguments
1132 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
1133 #:phases
1134 (modify-phases %standard-phases
1135 (add-after 'unpack 'patch-lib_dirs
1136 (lambda* (#:key inputs #:allow-other-keys)
1137 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
1138 (("lib\\_dirs = \\[.*\\]")
1139 (string-append "lib_dirs = ['"
1140 (assoc-ref inputs "czmq") "/lib"
1141 "']")))
1142 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
1143 (("lib\\_dirs = \\[.*\\]")
1144 (string-append "lib_dirs = ['"
1145 (assoc-ref inputs "zeromq") "/lib"
1146 "']"))))))))
1147 (inputs
1148 `(("zeromq" ,zeromq)
1149 ("czmq" ,czmq)))
1150 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
1151 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
1152 (description
1153 "These Ruby bindings are not intended to be directly used, but rather
1154used by higher level bindings like those provided by CZTop.")
1155 (home-page
1156 "https://github.com/paddor/czmq-ffi-gen")
1157 (license license:isc)))
1158
d0afff26
CB
1159(define-public ruby-cztop
1160 (package
1161 (name "ruby-cztop")
1162 (version "0.12.2")
1163 (source
1164 (origin
1165 (method url-fetch)
1166 (uri (rubygems-uri "cztop" version))
1167 (sha256
1168 (base32
1169 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
1170 (build-system ruby-build-system)
1171 (arguments
1172 '(#:test-target "spec"
1173 #:phases
1174 (modify-phases %standard-phases
1175 (add-after 'unpack 'patch-lib_paths
1176 (lambda* (#:key inputs #:allow-other-keys)
1177 (substitute* "lib/cztop/poller/zmq.rb"
1178 (("lib\\_paths = \\[.*\\]")
1179 (string-append "lib_paths = ['"
1180 (assoc-ref inputs "zeromq") "/lib"
1181 "']"))))))))
1182 (native-inputs
1183 `(("bundler" ,bundler)
1184 ("ruby-rspec" ,ruby-rspec)))
1185 (inputs
1186 `(("zeromq" ,zeromq)))
1187 (propagated-inputs
1188 `(("ruby-czmq-ffi-gen" ,ruby-czmq-ffi-gen)))
1189 (synopsis "CZMQ Ruby bindings")
1190 (description
1191 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
1192CZMQ. The focus of of CZTop is on being easy to use and providing first class
1193support for security mechanisms.")
1194 (home-page "https://github.com/paddor/cztop")
1195 (license license:isc)))
1196
b004fb6a
RW
1197(define-public ruby-saikuro-treemap
1198 (package
1199 (name "ruby-saikuro-treemap")
1200 (version "0.2.0")
1201 (source (origin
1202 (method url-fetch)
1203 (uri (rubygems-uri "saikuro_treemap" version))
1204 (sha256
1205 (base32
1206 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
1207 (build-system ruby-build-system)
1208 ;; Some of the tests fail because the generated JSON has keys in a
1209 ;; different order. This is a problem with the test suite rather than any
1210 ;; of the involved libraries.
1211 (arguments `(#:tests? #f))
1212 (propagated-inputs
1213 `(("ruby-json-pure" ,ruby-json-pure)
1214 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
1215 (synopsis "Generate complexity treemap based on saikuro analysis")
1216 (description
1217 "This gem generates a treemap showing the complexity of Ruby code on
1218which it is run. It uses Saikuro under the covers to analyze Ruby code
1219complexity.")
7bf837fd 1220 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
b004fb6a
RW
1221 (license license:expat)))
1222
92b37500
CB
1223(define-public ruby-oauth2
1224 (package
1225 (name "ruby-oauth2")
1226 (version "1.4.1")
1227 (source
1228 (origin
1229 (method url-fetch)
1230 (uri (rubygems-uri "oauth2" version))
1231 (sha256
1232 (base32
1233 "0av6nlb5y2sm6m8fx669ywrqa9858yqaqfqzny75nqp3anag89qh"))))
1234 (build-system ruby-build-system)
1235 (arguments
1236 '(#:tests? #f)) ; No included tests
1237 (propagated-inputs
1238 `(("ruby-faraday" ,ruby-faraday)
1239 ("ruby-jwt" ,ruby-jwt)
1240 ("ruby-multi-json" ,ruby-multi-json)
1241 ("ruby-multi-xml" ,ruby-multi-xml)
1242 ("ruby-rack" ,ruby-rack)))
1243 (synopsis "Ruby wrapper for the OAuth 2.0")
1244 (description
1245 "This package provides a Ruby wrapper for the OAuth 2.0 protocol built
1246with a similar style to the original OAuth spec.")
1247 (home-page "https://github.com/oauth-xx/oauth2")
1248 (license license:expat)))
1249
29dc4823
CB
1250(define-public ruby-omniauth
1251 (package
1252 (name "ruby-omniauth")
1253 (version "1.9.0")
1254 (source
1255 (origin
1256 (method url-fetch)
1257 (uri (rubygems-uri "omniauth" version))
1258 (sha256
1259 (base32
1260 "1p16h1rp8by05k8gfw17xjhgwp60dk8qmj1xalv1n23kmxfsxb1x"))))
1261 (build-system ruby-build-system)
1262 (arguments
1263 '(#:tests? #f)) ; No included tests
1264 (propagated-inputs
1265 `(("ruby-hashie" ,ruby-hashie)
1266 ("ruby-rack" ,ruby-rack)))
1267 (synopsis "Generalized Rack framework for multiple-provider authentication")
1268 (description
1269 "This package provides a generalized Rack framework for multiple-provider
1270authentication.")
1271 (home-page "https://github.com/omniauth/omniauth")
1272 (license license:expat)))
1273
d6084cdb
CB
1274(define-public ruby-omniauth-oauth2
1275 (package
1276 (name "ruby-omniauth-oauth2")
1277 (version "1.6.0")
1278 (source
1279 (origin
1280 (method url-fetch)
1281 (uri (rubygems-uri "omniauth-oauth2" version))
1282 (sha256
1283 (base32
1284 "11mi36l9d97r77q99jnafdc1yaa0a9wahhpp7dj7ank8q52g7g79"))))
1285 (build-system ruby-build-system)
1286 (arguments
1287 '(#:phases
1288 (modify-phases %standard-phases
1289 (add-after 'unpack 'remove-unnecessary-dependencies
1290 (lambda _
1291 ;; The coveralls gem submits coverage information to an online
1292 ;; service, and is unnecessary when running the tests
1293 (substitute* "Gemfile"
1294 ((".*coveralls\"") ""))
1295 (substitute* "spec/helper.rb"
1296 (("require \"coveralls\"") "")
1297 (("Coveralls::SimpleCov::Formatter") ""))
1298 #t)))))
1299 (propagated-inputs
1300 `(("ruby-oauth2" ,ruby-oauth2)
1301 ("ruby-omniauth" ,ruby-omniauth)))
1302 (native-inputs
1303 `(("bundler" ,bundler)
1304 ("ruby-rspec" ,ruby-rspec)
1305 ("ruby-simplecov" ,ruby-simplecov)
1306 ("ruby-rack-test" ,ruby-rack-test)
1307 ("ruby-webmock" ,ruby-webmock-2)))
1308 (synopsis "Abstract OAuth2 strategy for OmniAuth")
1309 (description
1310 "This library provides a generic OAuth2 strategy for OmniAuth. It
1311doesn't provide a way to gather user information, so should be used as a
1312building block for authentication strategies.")
1313 (home-page "https://github.com/omniauth/omniauth-oauth2")
1314 (license license:expat)))
1315
433e3154
CB
1316(define-public ruby-open4
1317 (package
1318 (name "ruby-open4")
1319 (version "1.3.4")
1320 (source
1321 (origin
1322 (method url-fetch)
1323 (uri (rubygems-uri "open4" version))
1324 (sha256
1325 (base32
1326 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
1327 (build-system ruby-build-system)
1328 (arguments
1329 '(#:phases
1330 (modify-phases %standard-phases
1331 (add-after 'unpack 'patch
1332 (lambda _
1333 (substitute* "rakefile"
1334 ;; Update the Rakefile so it works
1335 (("-rubygems") "-rrubygems")
1336 (("Config") "RbConfig"))
1337 #t))
1338 (add-before 'check 'set-LIB
1339 (lambda _
1340 ;; This is used in the rakefile when running the tests
1341 (setenv "LIB" "open4")
1342 #t)))))
1343 (synopsis "Open child processes from Ruby and manage them easily")
1344 (description
1345 "@code{Open4} is a Ruby library to run child processes and manage their
1346input and output.")
1347 (home-page "https://github.com/ahoward/open4")
1348 (license license:ruby)))
1349
cef87ed6
CB
1350(define-public ruby-options
1351 (package
1352 (name "ruby-options")
1353 (version "2.3.2")
1354 (source
1355 (origin
1356 (method url-fetch)
1357 (uri (rubygems-uri "options" version))
1358 (sha256
1359 (base32
1360 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
1361 (build-system ruby-build-system)
1362 (arguments
1363 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
1364 #:phases
1365 (modify-phases %standard-phases
1366 (add-before 'check 'set-LIB
1367 (lambda _
1368 ;; This is used in the Rakefile, and setting it avoids an issue
1369 ;; with running the tests.
fe27238c
CB
1370 (setenv "LIB" "options")
1371 #t)))))
cef87ed6
CB
1372 (synopsis "Ruby library to parse options from *args cleanly")
1373 (description
1374 "The @code{options} library helps with parsing keyword options in Ruby
1375functions.")
1376 (home-page "https://github.com/ahoward/options")
1377 (license license:ruby)))
1378
d15dbe83
CB
1379(define-public ruby-erubi
1380 (package
1381 (name "ruby-erubi")
1382 (version "1.8.0")
1383 (source
1384 (origin
1385 (method url-fetch)
1386 (uri (rubygems-uri "erubi" version))
1387 (sha256
1388 (base32
1389 "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1"))))
1390 (build-system ruby-build-system)
1391 (synopsis "ERB template engine for Ruby")
1392 (description
1393 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
1394Erubis")
1395 (home-page "https://github.com/jeremyevans/erubi")
1396 (license license:expat)))
1397
d64ebebd
BW
1398(define-public ruby-erubis
1399 (package
1400 (name "ruby-erubis")
1401 (version "2.7.0")
1402 (source
1403 (origin
1404 (method url-fetch)
1405 (uri (rubygems-uri "erubis" version))
1406 (sha256
1407 (base32
1408 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
1409 (build-system ruby-build-system)
1410 (arguments
1411 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
1412 (synopsis "Implementation of embedded Ruby (eRuby)")
1413 (description
1414 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
1415features such as multi-language support, auto escaping, auto trimming spaces
1416around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
1417support.")
1418 (home-page "http://www.kuwata-lab.com/erubis/")
1419 (license license:expat)))
1420
3ca43524
CB
1421(define-public ruby-execjs
1422 (package
1423 (name "ruby-execjs")
1424 (version "2.7.0")
1425 (source
1426 (origin
1427 ;; fetch from github as the gem does not contain testing code
1428 (method git-fetch)
1429 (uri (git-reference
1430 (url "https://github.com/rails/execjs.git")
1431 (commit (string-append "v" version))))
1432 (file-name (git-file-name name version))
1433 (sha256
1434 (base32
1435 "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
1436 (build-system ruby-build-system)
1437 (native-inputs
1438 `(("bundler" ,bundler)
1439 ;; The test suite tests all the available backends. Currenly, this just
1440 ;; means the node backend.
1441 ;;
1442 ;; PASSED: test:node
1443 ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
1444 ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
1445 ("node" ,node)))
1446 (synopsis "Run JavaScript code from Ruby")
1447 (description
1448 "ExecJS lets you run JavaScript code from Ruby. It automatically picks a
1449runtime to evaluate your JavaScript program, then returns the result to you as
1450a Ruby object.")
1451 (home-page "https://github.com/rails/execjs")
1452 (license license:expat)))
1453
cc53e630
RW
1454(define-public ruby-orderedhash
1455 (package
1456 (name "ruby-orderedhash")
1457 (version "0.0.6")
1458 (source (origin
1459 (method url-fetch)
1460 (uri (rubygems-uri "orderedhash" version))
1461 (sha256
1462 (base32
1463 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
1464 (build-system ruby-build-system)
1465 (arguments
1466 '(#:tests? #f)) ; no test suite
1467 (synopsis "Ruby library providing an order-preserving hash")
1468 (description "Orderedhash is a Ruby library providing a hash
1469implementation that preserves the order of items and features some array-like
1470extensions.")
1471 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
1472 (license license:public-domain)))
1473
28c5d42d
PP
1474(define-public ruby-libxml
1475 (package
1476 (name "ruby-libxml")
acbc5062 1477 (version "3.0.0")
28c5d42d
PP
1478 (source
1479 (origin
1480 (method url-fetch)
1481 (uri (rubygems-uri "libxml-ruby" version))
1482 (sha256
1483 (base32
acbc5062 1484 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
28c5d42d
PP
1485 (build-system ruby-build-system)
1486 (inputs
1487 `(("zlib" ,zlib)
1488 ("libxml2" ,libxml2)))
1489 (arguments
1490 '(#:tests? #f ; test suite hangs for unknown reason
1491 #:gem-flags
1492 (list "--"
1493 (string-append "--with-xml2-include="
1494 (assoc-ref %build-inputs "libxml2")
1495 "/include/libxml2" ))))
1496 (synopsis "Ruby bindings for GNOME Libxml2")
1497 (description "The Libxml-Ruby project provides Ruby language bindings for
1498the GNOME Libxml2 XML toolkit.")
2f3800e5 1499 (home-page "https://xml4r.github.com/libxml-ruby")
28c5d42d
PP
1500 (license license:expat)))
1501
b3222518
CB
1502(define-public ruby-lino
1503 (package
1504 (name "ruby-lino")
1505 (version "1.1.0")
1506 (source
1507 (origin
1508 (method url-fetch)
1509 (uri (rubygems-uri "lino" version))
1510 (sha256
1511 (base32
1512 "11d29g0fk372b9fcpyr0k6hxm2b4j4igpysmi542hgbbgqgp9cd3"))))
1513 (build-system ruby-build-system)
1514 (arguments
1515 '(#:tests? #f)) ; No included tests
1516 (propagated-inputs
1517 `(("ruby-hamster" ,ruby-hamster)
1518 ("ruby-open4" ,ruby-open4)))
1519 (synopsis "Build and execute commands in Ruby")
1520 (description
1521 "@code{Lino} provides an interface to run external commands. It provides
1522an interface to add options as well as managing the standard input, output and
1523error streams.")
1524 (home-page "https://github.com/tobyclemson/lino")
1525 (license license:expat)))
1526
8b9bde07
RW
1527(define-public ruby-xml-simple
1528 (package
1529 (name "ruby-xml-simple")
1530 (version "1.1.5")
1531 (source (origin
1532 (method url-fetch)
1533 (uri (rubygems-uri "xml-simple" version))
1534 (sha256
1535 (base32
1536 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
1537 (build-system ruby-build-system)
1538 (arguments
1539 '(#:tests? #f)) ; no test suite
1540 (synopsis "Simple Ruby library for XML processing")
1541 (description "This library provides a simple API for XML processing in
1542Ruby.")
1543 (home-page "https://github.com/maik/xml-simple")
1544 (license license:ruby)))
1545
2cb3ab48
RW
1546(define-public ruby-thor
1547 (package
1548 (name "ruby-thor")
2e8cd862 1549 (version "0.19.4")
2cb3ab48
RW
1550 (source (origin
1551 (method url-fetch)
1552 (uri (rubygems-uri "thor" version))
1553 (sha256
1554 (base32
2e8cd862 1555 "01n5dv9kql60m6a00zc0r66jvaxx98qhdny3klyj0p3w34pad2ns"))))
2cb3ab48
RW
1556 (build-system ruby-build-system)
1557 (arguments
1558 '(#:tests? #f)) ; no test suite
1559 (native-inputs
1560 `(("bundler" ,bundler)))
1561 (synopsis "Ruby toolkit for building command-line interfaces")
1562 (description "Thor is a toolkit for building powerful command-line
1563interfaces.")
1564 (home-page "http://whatisthor.com/")
1565 (license license:expat)))
1566
ec79018e
RW
1567(define-public ruby-lumberjack
1568 (package
1569 (name "ruby-lumberjack")
41700efa 1570 (version "1.0.13")
ec79018e
RW
1571 (source (origin
1572 (method url-fetch)
1573 (uri (rubygems-uri "lumberjack" version))
1574 (sha256
1575 (base32
41700efa 1576 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
ec79018e
RW
1577 (build-system ruby-build-system)
1578 (native-inputs
8be62d3f
BW
1579 `(("ruby-rspec" ,ruby-rspec)
1580 ("ruby-timecop" ,ruby-timecop)))
ec79018e
RW
1581 (synopsis "Logging utility library for Ruby")
1582 (description "Lumberjack is a simple logging utility that can be a drop in
1583replacement for Logger or ActiveSupport::BufferedLogger. It provides support
1584for automatically rolling log files even with multiple processes writing the
1585same log file.")
7bf837fd 1586 (home-page "https://github.com/bdurand/lumberjack")
ec79018e
RW
1587 (license license:expat)))
1588
2a9ce5cb
CB
1589(define-public ruby-rbnacl
1590 (package
1591 (name "ruby-rbnacl")
1592 (version "6.0.1")
1593 (source
1594 (origin
1595 (method url-fetch)
1596 (uri (rubygems-uri "rbnacl" version))
1597 (sha256
1598 (base32
1599 "0ajxy5kj2jw09wdsla3jmha8w07vj5l14288xr9djpl327g3lzhn"))))
1600 (build-system ruby-build-system)
1601 (arguments
1602 `(#:phases
1603 (modify-phases %standard-phases
1604 (add-after 'unpack 'remove-unnecessary-dependencies
1605 (lambda _
1606 ;; Coveralls relates to a network service, and Rubocop to code
1607 ;; linting and both are unnecessary to run the tests
1608 (substitute* "Gemfile"
1609 ((".*rubocop.*") "\n")
1610 ((".*guard-rspec.*") "\n")
1611 ((".*coveralls.*") "\n"))
1612 (substitute* "spec/spec_helper.rb"
1613 (("require \"coveralls\"") "")
1614 (("Coveralls.wear!") ""))
1615 #t))
1616 (add-after 'unpack 'use-libsodium-from-store
1617 (lambda* (#:key inputs #:allow-other-keys)
1618 (substitute* '("lib/rbnacl/init.rb"
1619 "lib/rbnacl/sodium.rb")
1620 (("ffi_lib \\[.+\\]")
1621 (string-append "ffi_lib [\""
1622 (assoc-ref inputs "libsodium") "/lib/libsodium.so"
1623 "\"]")))
1624 #t))
1625 ;; Run Rspec directly to avoid the Rubocop dependency in the Rakefile
1626 (replace 'check
1627 (lambda* (#:key tests? #:allow-other-keys)
1628 (when tests?
1629 (invoke "rspec"))
1630 #t)))))
1631 (propagated-inputs
1632 `(("ruby-ffi" ,ruby-ffi)))
1633 (inputs
1634 `(("libsodium" ,libsodium)))
1635 (native-inputs
1636 `(("bundler" ,bundler)
1637 ("ruby-rspec" ,ruby-rspec)))
1638 (synopsis "Ruby FFI binding to libsodium")
1639 (description
1640 "This package provides Ruby FFI bindings to the Networking and
1641Cryptography (NaCl) library, also known as libsodium. This provides a
1642high-level toolkit for building cryptographic systems and protocols.")
1643 (home-page "https://github.com/crypto-rb/rbnacl")
1644 (license license:expat)))
1645
70b4cf38
RW
1646(define-public ruby-nenv
1647 (package
1648 (name "ruby-nenv")
12313cd0 1649 (version "0.3.0")
70b4cf38
RW
1650 (source (origin
1651 (method url-fetch)
1652 (uri (rubygems-uri "nenv" version))
1653 (sha256
1654 (base32
12313cd0 1655 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
70b4cf38
RW
1656 (build-system ruby-build-system)
1657 (arguments
1658 `(#:tests? #f)) ; no tests included
1659 (native-inputs
1660 `(("ruby-rspec" ,ruby-rspec)
1661 ("bundler" ,bundler)))
1662 (synopsis "Ruby interface for modifying the environment")
1663 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
1664and inspect the environment.")
1665 (home-page "https://github.com/e2/nenv")
1666 (license license:expat)))
1667
8d9e9f28
RW
1668(define-public ruby-permutation
1669 (package
1670 (name "ruby-permutation")
1671 (version "0.1.8")
1672 (source (origin
1673 (method url-fetch)
1674 (uri (rubygems-uri "permutation" version))
1675 (sha256
1676 (base32
1677 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
1678 (build-system ruby-build-system)
1679 (arguments
1680 `(#:phases
1681 (modify-phases %standard-phases
1682 (add-after 'unpack 'fix-rakefile
1683 (lambda _
1684 (substitute* "Rakefile"
1685 (("require 'rake/gempackagetask'")
1686 "require 'rubygems/package_task'")
1687 (("include Config") ""))
1688 #t))
1689 (replace 'check
1690 (lambda _
9923d5a4 1691 (invoke "ruby" "-Ilib" "test/test.rb"))))))
8d9e9f28
RW
1692 (synopsis "Library to perform operations with sequence permutations")
1693 (description "This package provides a Ruby library to perform different
1694operations with permutations of sequences, such as strings and arrays.")
2f3800e5 1695 (home-page "https://flori.github.io/permutation")
8d9e9f28
RW
1696 (license license:gpl2))) ; GPL 2 only
1697
c5d14d42
RW
1698(define-public ruby-shellany
1699 (package
1700 (name "ruby-shellany")
1701 (version "0.0.1")
1702 (source (origin
1703 (method url-fetch)
1704 (uri (rubygems-uri "shellany" version))
1705 (sha256
1706 (base32
1707 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
1708 (build-system ruby-build-system)
1709 (arguments
1710 `(#:test-target "default"
1711 #:phases
1712 (modify-phases %standard-phases
1713 (add-after 'unpack 'fix-version-test
1714 (lambda _
1715 (substitute* "spec/shellany_spec.rb"
1716 (("^RSpec") "require \"shellany\"\nRSpec"))
1717 #t)))))
1718 (native-inputs
1719 `(("ruby-rspec" ,ruby-rspec)
1720 ("ruby-nenv" ,ruby-nenv)
1721 ("bundler" ,bundler)))
1722 (synopsis "Capture command output")
1723 (description "Shellany is a Ruby library providing functions to capture
1724the output produced by running shell commands.")
1725 (home-page "https://rubygems.org/gems/shellany")
1726 (license license:expat)))
1727
d152162f
RW
1728(define-public ruby-notiffany
1729 (package
1730 (name "ruby-notiffany")
a7ca218c 1731 (version "0.1.1")
d152162f
RW
1732 (source (origin
1733 (method url-fetch)
1734 (uri (rubygems-uri "notiffany" version))
1735 (sha256
1736 (base32
a7ca218c 1737 "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx"))))
d152162f
RW
1738 (build-system ruby-build-system)
1739 ;; Tests are not included in the gem.
1740 (arguments `(#:tests? #f))
1741 (propagated-inputs
1742 `(("ruby-shellany" ,ruby-shellany)
1743 ("ruby-nenv" ,ruby-nenv)))
1744 (native-inputs
1745 `(("bundler" ,bundler)))
1746 (synopsis "Wrapper libray for notification libraries")
1747 (description "Notiffany is a Ruby wrapper libray for notification
1748libraries such as Libnotify.")
1749 (home-page "https://github.com/guard/notiffany")
1750 (license license:expat)))
1751
8528365b
RW
1752(define-public ruby-formatador
1753 (package
1754 (name "ruby-formatador")
1755 (version "0.2.5")
1756 (source (origin
1757 (method url-fetch)
1758 (uri (rubygems-uri "formatador" version))
1759 (sha256
1760 (base32
1761 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
1762 (build-system ruby-build-system)
1763 ;; Circular dependency: Tests require ruby-shindo, which requires
1764 ;; ruby-formatador at runtime.
1765 (arguments `(#:tests? #f))
1766 (synopsis "Ruby library to format text on stdout")
1767 (description "Formatador is a Ruby library to format text printed to the
1768standard output stream.")
7bf837fd 1769 (home-page "https://github.com/geemus/formatador")
8528365b
RW
1770 (license license:expat)))
1771
5437c741
CB
1772(define-public ruby-fuubar
1773 (package
1774 (name "ruby-fuubar")
1775 (version "2.3.2")
1776 (source
1777 (origin
1778 ;; Fetch from the git repository, as the gem package doesn't include
1779 ;; the tests.
1780 (method git-fetch)
1781 (uri (git-reference
1782 (url "https://github.com/thekompanee/fuubar.git")
1783 (commit (string-append "releases/v" version))))
1784 (file-name (git-file-name name version))
1785 (sha256
1786 (base32
1787 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
1788 (build-system ruby-build-system)
1789 (arguments
1790 '(;; TODO: Some tests fail, unsure why.
1791 ;; 21 examples, 7 failures
1792 #:tests? #f
1793 #:phases
1794 (modify-phases %standard-phases
1795 (add-before 'build 'delete-certificate
1796 (lambda _
1797 ;; Remove 's.cert_chain' as we do not build with a private key
1798 (substitute* "fuubar.gemspec"
1799 ((".*cert_chain.*") "")
1800 ((".*signing_key.*") ""))
1801 #t))
1802 (replace 'check
1803 (lambda* (#:key tests? #:allow-other-keys)
1804 (when tests?
1805 (invoke "rspec"))
1806 #t)))))
1807 (native-inputs
1808 `(("bundler" ,bundler)))
1809 (propagated-inputs
1810 `(("ruby-rspec-core" ,ruby-rspec-core)
1811 ("ruby-progressbar" ,ruby-progressbar)))
1812 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
1813 (description
1814 "Fuubar is an RSpec formatter that uses a progress bar instead of a
1815string of letters and dots as feedback. It also stops on the first test
1816failure.")
1817 (home-page "https://github.com/thekompanee/fuubar")
1818 (license license:expat)))
1819
8ea991e3
CB
1820(define-public ruby-haml
1821 (package
1822 (name "ruby-haml")
1823 (version "5.0.4")
1824 (source
1825 (origin
1826 (method url-fetch)
1827 (uri (rubygems-uri "haml" version))
1828 (sha256
1829 (base32
1830 "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"))))
1831 (build-system ruby-build-system)
1832 (arguments
1833 '(#:tests? #f)) ; No included tests
1834 (propagated-inputs
1835 `(("ruby-tilt" ,ruby-tilt)
1836 ("ruby-temple" ,ruby-temple)))
1837 (synopsis "Haml is a Ruby library to generate HTML documents")
1838 (description
1839 "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of
1840HTML or XML that is designed to express the structure of documents using
1841indentation rather than closing tags. It was originally envisioned as a
1842plugin for Ruby on Rails, but it can function as a stand-alone templating
1843engine.")
1844 (home-page "http://haml.info/")
1845 (license license:expat)))
1846
353b7eb8
CB
1847(define-public ruby-hamster
1848 (package
1849 (name "ruby-hamster")
1850 (version "3.0.0")
1851 (source
1852 (origin
1853 (method url-fetch)
1854 (uri (rubygems-uri "hamster" version))
1855 (sha256
1856 (base32
1857 "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
1858 (build-system ruby-build-system)
1859 (arguments
1860 '(#:phases
1861 (modify-phases %standard-phases
1862 (add-after 'unpack 'remove-unnecessary-dependencies
1863 (lambda _
1864 ;; pry is a debugging tool, and is unnecessary when running the
1865 ;; tests
1866 (substitute* "spec/lib/hamster/vector/insert_spec.rb"
1867 (("require 'pry'") ""))
1868 (substitute* "spec/spec_helper.rb"
1869 (("require \"pry\"") "")
1870 ;; CodeClimate is an online service, and is unnecessary for
1871 ;; running the tests
1872 (("require \"codeclimate-test-reporter\"") "")
1873 (("CodeClimate.*\n") ""))
1874 #t))
1875 ;; No Rakefile is included, so run rspec directly.
1876 (replace 'check
1877 (lambda* (#:key tests? #:allow-other-keys)
1878 (when tests?
1879 (invoke "rspec"))
1880 #t)))))
1881 (propagated-inputs
1882 `(("ruby-concurrent" ,ruby-concurrent)))
1883 (native-inputs
1884 `(("ruby-rspec" ,ruby-rspec)))
1885 (synopsis "Efficient, immutable, thread-safe collection classes for Ruby")
1886 (description
1887 "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector},
1888@code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an
1889immutable queue or stack).")
1890 (home-page "https://github.com/hamstergem/hamster")
1891 (license license:expat)))
1892
21781436
CB
1893(define-public ruby-hashdiff
1894 (package
1895 (name "ruby-hashdiff")
1896 (version "0.3.8")
1897 (source
1898 (origin
1899 (method url-fetch)
1900 (uri (rubygems-uri "hashdiff" version))
1901 (sha256
1902 (base32
1903 "19ykg5pax8798nh1yv71adkx0zzs7gn2rxjj86v7nsw0jba5lask"))))
1904 (build-system ruby-build-system)
1905 (arguments
1906 '(#:phases
1907 (modify-phases %standard-phases
1908 ;; Run tests directly via rspec to avoid Rake issue:
1909 ;; NoMethodError: undefined method `last_comment'
1910 (replace 'check
1911 (lambda* (#:key tests? #:allow-other-keys)
1912 (when tests?
1913 (invoke "rspec"))
1914 #t)))))
1915 (native-inputs
1916 `(("bundler" ,bundler)
1917 ("ruby-rspec" ,ruby-rspec-2)))
1918 (synopsis "HashDiff computes the smallest difference between two hashes")
1919 (description
1920 "HashDiff is a Ruby library to compute the smallest difference between
1921two hashes.")
1922 (home-page "https://github.com/liufengyun/hashdiff")
1923 (license license:expat)))
1924
7ac4610f
RW
1925(define-public ruby-shindo
1926 (package
1927 (name "ruby-shindo")
1928 (version "0.3.8")
1929 (source (origin
1930 (method url-fetch)
1931 (uri (rubygems-uri "shindo" version))
1932 (sha256
1933 (base32
1934 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
1935 (build-system ruby-build-system)
1936 (arguments
1937 `(#:test-target "shindo_tests"
1938 #:phases
1939 (modify-phases %standard-phases
1940 (add-after 'unpack 'fix-tests
0b060e34
CB
1941 (lambda _
1942 (substitute* "tests/tests_helper.rb"
1943 (("-rubygems") ""))
1944 (substitute* "Rakefile"
1945 (("system \"shindo") "system \"./bin/shindo")
1946 ;; This test doesn't work, so we disable it.
1947 (("fail \"The build_error test should fail") "#")
1948 ((" -rubygems") ""))
1949 #t)))))
7ac4610f
RW
1950 (propagated-inputs
1951 `(("ruby-formatador" ,ruby-formatador)))
1952 (synopsis "Simple depth first Ruby testing")
1953 (description "Shindo is a simple depth first testing library for Ruby.")
1954 (home-page "https://github.com/geemus/shindo")
1955 (license license:expat)))
1956
f13636f2
RW
1957(define-public ruby-rubygems-tasks
1958 (package
1959 (name "ruby-rubygems-tasks")
1960 (version "0.2.4")
1961 (source (origin
1962 (method url-fetch)
1963 (uri (rubygems-uri "rubygems-tasks" version))
1964 (sha256
1965 (base32
1966 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
1967 (build-system ruby-build-system)
1968 ;; Tests need Internet access.
1969 (arguments `(#:tests? #f))
1970 (native-inputs
1971 `(("ruby-rspec" ,ruby-rspec)
1972 ("ruby-yard" ,ruby-yard)))
1973 (synopsis "Rake tasks for managing and releasing Ruby Gems")
1974 (description "Rubygems-task provides Rake tasks for managing and releasing
1975Ruby Gems.")
1976 (home-page "https://github.com/postmodern/rubygems-tasks")
1977 (license license:expat)))
1978
cb6bc5df
CB
1979(define-public ruby-rubyzip
1980 (package
1981 (name "ruby-rubyzip")
1982 (version "1.2.1")
1983 (source
1984 (origin
1985 (method url-fetch)
1986 (uri (rubygems-uri "rubyzip" version))
1987 (sha256
1988 (base32
1989 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
1990 (build-system ruby-build-system)
1991 (arguments
1992 '(#:phases
1993 (modify-phases %standard-phases
1994 (add-before 'check 'patch-tests
1995 (lambda* (#:key inputs #:allow-other-keys)
1996 (substitute* "test/gentestfiles.rb"
1997 (("/usr/bin/zip")
1998 (string-append
1999 (assoc-ref inputs "zip") "/bin/zip")))
2000 (substitute* "test/input_stream_test.rb"
2001 (("/usr/bin/env ruby") (which "ruby")))
2002 #t)))))
2003 (native-inputs
2004 `(("bundler" ,bundler)
2005 ("ruby-simplecov" ,ruby-simplecov)
2006 ("zip" ,zip)
2007 ("unzip" ,unzip)))
2008 (synopsis "Ruby module is for reading and writing zip files")
2009 (description
2010 "The rubyzip module provides ways to read from and create zip files.")
2011 (home-page "http://github.com/rubyzip/rubyzip")
2012 (license license:bsd-2)))
2013
58b59742
RW
2014(define-public ruby-simplecov-html
2015 (package
2016 (name "ruby-simplecov-html")
53fd476f 2017 (version "0.10.2")
58b59742
RW
2018 (source (origin
2019 (method url-fetch)
2020 (uri (rubygems-uri "simplecov-html" version))
2021 (sha256
2022 (base32
53fd476f 2023 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
58b59742 2024 (build-system ruby-build-system)
8b749cf3 2025 (arguments `(#:tests? #f)) ; there are no tests
58b59742
RW
2026 (native-inputs
2027 `(("bundler" ,bundler)))
2028 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
2029 (description "This package provides the default HTML formatter for
2030the SimpleCov code coverage tool for Ruby version 1.9 and above.")
2031 (home-page "https://github.com/colszowka/simplecov-html")
2032 (license license:expat)))
2033
a84fa2ad
RW
2034(define-public ruby-simplecov
2035 (package
2036 (name "ruby-simplecov")
1b107245 2037 (version "0.12.0")
a84fa2ad
RW
2038 (source (origin
2039 (method url-fetch)
2040 (uri (rubygems-uri "simplecov" version))
2041 (sha256
2042 (base32
1b107245 2043 "0ffhyrfnq2zm2mc1742a4hqy475g3qa1zf6yfldwg1ldh5sn3qbx"))))
a84fa2ad
RW
2044 (build-system ruby-build-system)
2045 ;; Simplecov depends on rubocop for code style checking at build time.
2046 ;; Rubocop needs simplecov at build time.
2047 (arguments `(#:tests? #f))
2048 (propagated-inputs
2049 `(("ruby-json" ,ruby-json)
2050 ("ruby-docile" ,ruby-docile)
2051 ("ruby-simplecov-html" ,ruby-simplecov-html)))
2052 (native-inputs
2053 `(("bundler" ,bundler)))
2054 (synopsis "Code coverage framework for Ruby")
2055 (description "SimpleCov is a code coverage framework for Ruby with a
2056powerful configuration library and automatic merging of coverage across test
2057suites.")
7bf837fd 2058 (home-page "https://github.com/colszowka/simplecov")
a84fa2ad
RW
2059 (license license:expat)))
2060
98b87b82
DT
2061(define-public ruby-useragent
2062 (package
2063 (name "ruby-useragent")
3b0e45c8 2064 (version "0.16.8")
98b87b82
DT
2065 (source (origin
2066 (method url-fetch)
e83c6d00 2067 (uri (rubygems-uri "useragent" version))
98b87b82
DT
2068 (sha256
2069 (base32
3b0e45c8 2070 "1139cjqyv1hk1qcw89k81ajjkqyakqgbcyvmfrsmjqi8yn9kgqhq"))))
98b87b82
DT
2071 (build-system ruby-build-system)
2072 (arguments
e83c6d00 2073 '(#:tests? #f)) ; no test suite
98b87b82
DT
2074 (synopsis "HTTP user agent parser for Ruby")
2075 (description "UserAgent is a Ruby library that parses and compares HTTP
2076User Agents.")
2077 (home-page "https://github.com/gshutler/useragent")
2078 (license license:expat)))
96086cc5 2079
f7e9b2f3
CB
2080(define-public ruby-backports
2081 (package
2082 (name "ruby-backports")
2083 (version "3.11.4")
2084 (source
2085 (origin
2086 (method url-fetch)
2087 (uri (rubygems-uri "backports" version))
2088 (sha256
2089 (base32
2090 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
2091 (build-system ruby-build-system)
2092 (arguments
2093 '(;; TODO: This should be default, but there is one test failure
2094 #:test-target "all_spec"))
2095 (native-inputs
2096 `(("ruby-mspec" ,ruby-mspec)
2097 ("ruby-activesupport" ,ruby-activesupport)))
2098 (synopsis "Backports of the features in newer Ruby versions")
2099 (description
2100 "Backports enables more compatibility across Ruby versions by providing
2101backports of some features.")
2102 (home-page "https://github.com/marcandre/backports")
2103 (license license:expat)))
2104
96086cc5
DT
2105(define-public ruby-bacon
2106 (package
2107 (name "ruby-bacon")
e83c6d00 2108 (version "1.2.0")
96086cc5
DT
2109 (source (origin
2110 (method url-fetch)
e83c6d00 2111 (uri (rubygems-uri "bacon" version))
96086cc5
DT
2112 (sha256
2113 (base32
e83c6d00 2114 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
96086cc5 2115 (build-system ruby-build-system)
96086cc5
DT
2116 (synopsis "Small RSpec clone")
2117 (description "Bacon is a small RSpec clone providing all essential
2118features.")
2119 (home-page "https://github.com/chneukirchen/bacon")
2120 (license license:expat)))
de59d316 2121
a8d2bf3c
CB
2122(define-public ruby-bacon-bits
2123 (package
2124 (name "ruby-bacon-bits")
2125 (version "0.1.0")
2126 (source
2127 (origin
2128 (method url-fetch)
2129 (uri (rubygems-uri "bacon-bits" version))
2130 (sha256
2131 (base32
2132 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
2133 (build-system ruby-build-system)
2134 (arguments
2135 ;; No tests
2136 '(#:tests? #f))
2137 (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
2138 (synopsis "Extensions to Bacon, for disabling tests, before and after
2139blocks and more")
2140 (description
2141 "This extends the bacon testing framework with useful extensions to
2142disable tests, have before and after blocks that run once and more.")
2143 (home-page "https://github.com/cldwalker/bacon-bits")
2144 (license license:expat)))
2145
65f65889
CB
2146(define-public ruby-bacon-colored-output
2147 (package
2148 (name "ruby-bacon-colored-output")
2149 (version "1.1.1")
2150 (source
2151 (origin
2152 (method url-fetch)
2153 (uri (rubygems-uri "bacon-colored_output" version))
2154 (sha256
2155 (base32
2156 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
2157 (build-system ruby-build-system)
2158 (arguments
2159 '(;; No included tests
2160 #:tests? #f))
2161 (propagated-inputs
2162 `(("ruby-bacon" ,ruby-bacon)))
2163 (synopsis "Colored output for Bacon test framework")
2164 (description
2165 "This package adds color through ANSI escape codes to Bacon test
2166output.")
2167 (home-page "https://github.com/whitequark/bacon-colored_output")
2168 (license license:expat)))
2169
e259bdf0
DT
2170(define-public ruby-connection-pool
2171 (package
2172 (name "ruby-connection-pool")
58021db4 2173 (version "2.2.2")
e259bdf0
DT
2174 (source (origin
2175 (method url-fetch)
e83c6d00 2176 (uri (rubygems-uri "connection_pool" version))
e259bdf0
DT
2177 (sha256
2178 (base32
58021db4 2179 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
e259bdf0
DT
2180 (build-system ruby-build-system)
2181 (native-inputs
2182 `(("bundler" ,bundler)))
2183 (synopsis "Generic connection pool for Ruby")
2184 (description "Connection_pool provides a generic connection pooling
2185interface for Ruby programs.")
2186 (home-page "https://github.com/mperham/connection_pool")
2187 (license license:expat)))
4c0aeb44
DT
2188
2189(define-public ruby-net-http-persistent
2190 (package
2191 (name "ruby-net-http-persistent")
185ea446 2192 (version "3.0.0")
4c0aeb44
DT
2193 (source (origin
2194 (method url-fetch)
e83c6d00 2195 (uri (rubygems-uri "net-http-persistent" version))
4c0aeb44
DT
2196 (sha256
2197 (base32
185ea446 2198 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
4c0aeb44 2199 (build-system ruby-build-system)
4c0aeb44
DT
2200 (native-inputs
2201 `(("ruby-connection-pool" ,ruby-connection-pool)
2202 ("ruby-hoe" ,ruby-hoe)))
2203 (synopsis "Persistent HTTP connection manager")
2204 (description "Net::HTTP::Persistent manages persistent HTTP connections
2205using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
2206 (home-page "https://github.com/drbrain/net-http-persistent")
2207 (license license:expat)))
afbbdf77 2208
f88bacaf
RW
2209(define-public ruby-power-assert
2210 (package
2211 (name "ruby-power-assert")
3918146b 2212 (version "0.2.7")
f88bacaf
RW
2213 (source (origin
2214 (method url-fetch)
2215 (uri (rubygems-uri "power_assert" version))
2216 (sha256
2217 (base32
3918146b 2218 "0ka6w71lcan4wgf111xi3pcn9ma9lhakv31jg8w007nwzi0xfjbi"))))
f88bacaf
RW
2219 (build-system ruby-build-system)
2220 (native-inputs
2221 `(("bundler" ,bundler)))
2222 (synopsis "Assert library with descriptive assertion messages")
2223 (description "Power-assert is an assertion library providing descriptive
2224assertion messages for tests.")
2225 (home-page "https://github.com/k-tsj/power_assert")
2226 (license (list license:bsd-2 license:ruby))))
2227
e42e3bfa
CB
2228(define-public ruby-powerpack
2229 (package
2230 (name "ruby-powerpack")
2231 (version "0.1.2")
2232 (source
2233 (origin
2234 (method url-fetch)
2235 (uri (rubygems-uri "powerpack" version))
2236 (sha256
2237 (base32
2238 "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
2239 (build-system ruby-build-system)
2240 (arguments
2241 '(#:test-target "spec"))
2242 (native-inputs
2243 `(("bundler" ,bundler)
2244 ("ruby-rspec" ,ruby-rspec)
2245 ("ruby-yard" ,ruby-yard)))
2246 (synopsis "Useful extensions to core Ruby classes")
2247 (description
2248 "This package provides a few useful extensions to core Ruby classes,
2249including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
2250@code{String}.")
2251 (home-page "https://github.com/bbatsov/powerpack")
2252 (license license:expat)))
2253
347eb21e
RW
2254(define-public ruby-locale
2255 (package
2256 (name "ruby-locale")
2257 (version "2.1.2")
2258 (source (origin
2259 (method url-fetch)
2260 (uri (rubygems-uri "locale" version))
2261 (sha256
2262 (base32
2263 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
2264 (build-system ruby-build-system)
2265 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
2266 ;; which needs ruby-gettext, which needs ruby-locale. To break the
2267 ;; dependency cycle we disable tests.
2268 (arguments `(#:tests? #f))
2269 (native-inputs
2270 `(("bundler" ,bundler)
2271 ("ruby-yard" ,ruby-yard)))
2272 (synopsis "Ruby library providing basic localization APIs")
2273 (description
2274 "Ruby-Locale is the pure ruby library which provides basic APIs for
2275localization.")
2276 (home-page "https://github.com/ruby-gettext/locale")
2277 (license (list license:lgpl3+ license:ruby))))
2278
09e2b0af
CB
2279(define-public ruby-temple
2280 (package
2281 (name "ruby-temple")
2282 (version "0.8.1")
2283 (source
2284 (origin
2285 (method url-fetch)
2286 (uri (rubygems-uri "temple" version))
2287 (sha256
2288 (base32
2289 "158d7ygbwcifqnvrph219p7m78yjdjazhykv5darbkms7bxm5y09"))))
2290 (build-system ruby-build-system)
2291 (native-inputs
2292 `(("ruby-tilt" ,ruby-tilt)
2293 ("ruby-bacon" ,ruby-bacon)
2294 ("ruby-erubis" ,ruby-erubis)))
2295 (synopsis "Template compilation framework in Ruby")
2296 (description
2297 "Temple is an abstraction and framework for compiling templates to pure
2298Ruby.")
2299 (home-page "https://github.com/judofyr/temple")
2300 (license license:expat)))
2301
e2333ea3
RW
2302(define-public ruby-text
2303 (package
2304 (name "ruby-text")
2305 (version "1.3.1")
2306 (source (origin
2307 (method url-fetch)
2308 (uri (rubygems-uri "text" version))
2309 (sha256
2310 (base32
2311 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
2312 (build-system ruby-build-system)
2313 (synopsis "Collection of text algorithms for Ruby")
2314 (description
2315 "This package provides a collection of text algorithms: Levenshtein,
2316Soundex, Metaphone, Double Metaphone, Porter Stemming.")
7bf837fd 2317 (home-page "https://github.com/threedaymonk/text")
e2333ea3
RW
2318 (license license:expat)))
2319
c1f52261
RW
2320(define-public ruby-gettext
2321 (package
2322 (name "ruby-gettext")
2323 (version "3.1.7")
2324 (source (origin
2325 (method url-fetch)
2326 (uri (rubygems-uri "gettext" version))
2327 (sha256
2328 (base32
2329 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
2330 (build-system ruby-build-system)
2331 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
2332 ;; which needs ruby-gettext. To break the dependency cycle we disable
2333 ;; tests.
2334 (arguments `(#:tests? #f))
2335 (propagated-inputs
2336 `(("ruby-locale" ,ruby-locale)
2337 ("ruby-text" ,ruby-text)))
2338 (native-inputs
2339 `(("bundler" ,bundler)
2340 ("ruby-yard" ,ruby-yard)))
2341 (synopsis "GNU gettext-like program for Ruby")
2342 (description
2343 "Gettext is a GNU gettext-like program for Ruby. The catalog
2344file (po-file) used is the same as that used by GNU gettext, allowing you to
2345use GNU gettext tools for maintenance.")
2f3800e5 2346 (home-page "https://ruby-gettext.github.com/")
c1f52261
RW
2347 (license (list license:lgpl3+ license:ruby))))
2348
cc5aeb8c
RW
2349(define-public ruby-packnga
2350 (package
2351 (name "ruby-packnga")
1d60c436 2352 (version "1.0.4")
cc5aeb8c
RW
2353 (source (origin
2354 (method url-fetch)
2355 (uri (rubygems-uri "packnga" version))
2356 (sha256
2357 (base32
1d60c436 2358 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
cc5aeb8c
RW
2359 (build-system ruby-build-system)
2360 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
2361 ;; To break the dependency cycle we disable tests.
2362 (arguments `(#:tests? #f))
2363 (propagated-inputs
2364 `(("ruby-gettext" ,ruby-gettext)
2365 ("ruby-yard" ,ruby-yard)))
2366 (native-inputs
2367 `(("bundler" ,bundler)))
2368 (synopsis "Utility library to package internationalized libraries")
2369 (description
2370 "Packnga is a library to translate to many languages using YARD.")
2371 (home-page "http://ranguba.org/packnga/")
2372 (license license:lgpl2.0+)))
2373
93dc8684
CB
2374(define-public ruby-test-construct
2375 (package
2376 (name "ruby-test-construct")
2377 (version "2.0.1")
2378 (source
2379 (origin
2380 (method url-fetch)
2381 (uri (rubygems-uri "test_construct" version))
2382 (sha256
2383 (base32
2384 "1a2ym3l068d0pxzzr95kvqx87zpdsarxslz9ygd4qfm9frrz0kgj"))))
2385 (build-system ruby-build-system)
2386 (native-inputs
2387 `(("bundler" ,bundler)
2388 ("ruby-mocha" ,ruby-mocha)
2389 ("ruby-rspec" ,ruby-rspec)))
2390 (synopsis "Creates temporary files and directories for testing")
2391 (description
2392 "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
2393temporary files and directories during tests.")
2394 (home-page "https://github.com/bhb/test_construct")
2395 (license license:expat)))
2396
3383f5bd
RW
2397(define-public ruby-test-unit
2398 (package
2399 (name "ruby-test-unit")
d74d96e4 2400 (version "3.2.5")
3383f5bd
RW
2401 (source (origin
2402 (method url-fetch)
2403 (uri (rubygems-uri "test-unit" version))
2404 (sha256
2405 (base32
d74d96e4 2406 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
3383f5bd
RW
2407 (build-system ruby-build-system)
2408 (propagated-inputs
2409 `(("ruby-power-assert" ,ruby-power-assert)))
2410 (native-inputs
2411 `(("bundler" ,bundler)
2412 ("ruby-packnga" ,ruby-packnga)
2413 ("ruby-yard" ,ruby-yard)))
2414 (synopsis "Unit testing framework for Ruby")
2415 (description "@code{Test::Unit} is unit testing framework for Ruby, based
2416on xUnit principles. These were originally designed by Kent Beck, creator of
2417extreme programming software development methodology, for Smalltalk's SUnit.
2418It allows writing tests, checking results and automated testing in Ruby.")
2f3800e5 2419 (home-page "https://test-unit.github.io/")
3383f5bd
RW
2420 (license (list license:psfl license:ruby))))
2421
76b732fb
CB
2422(define-public ruby-markaby
2423 (package
2424 (name "ruby-markaby")
2425 (version "0.9.0")
2426 (source
2427 (origin
2428 (method url-fetch)
2429 (uri (rubygems-uri "markaby" version))
2430 (sha256
2431 (base32
2432 "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
2433 (build-system ruby-build-system)
2434 (arguments
2435 '(#:phases
2436 (modify-phases %standard-phases
2437 ;; Run rspec manually without using the Rakefile, as the versions of
2438 ;; Rake and RSpec 2 are incompatible:
2439 ;;
2440 ;; NoMethodError: undefined method `last_comment'
2441 (replace 'check
2442 (lambda* (#:key tests? #:allow-other-keys)
2443 (when tests?
2444 (invoke "rspec"))
2445 #t)))))
2446 (propagated-inputs
2447 `(("ruby-builder" ,ruby-builder)))
2448 (native-inputs
2449 `(("bundler" ,bundler)
2450 ("ruby-rspec" ,ruby-rspec-2)))
2451 (synopsis "Write HTML pages in pure Ruby")
2452 (description
2453 "Markaby allows writing HTML packages in pure Ruby. This is similar to
e54af322 2454the functionality provided by @acronym{ERB, Embedded Ruby}, but without the
76b732fb
CB
2455mixture of HTML and additional ERB syntax.")
2456 (home-page "http://markaby.github.io/")
2457 (license license:expat)))
2458
b9511aa9
CB
2459(define-public ruby-maruku
2460 (package
2461 (name "ruby-maruku")
2462 (version "0.7.3")
2463 (source
2464 (origin
2465 (method url-fetch)
2466 (uri (rubygems-uri "maruku" version))
2467 (sha256
2468 (base32
2469 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
2470 (build-system ruby-build-system)
2471 (arguments
2472 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
2473 #:tests? #f
2474 #:phases
2475 (modify-phases %standard-phases
2476 (replace 'check
2477 (lambda* (#:key tests? #:allow-other-keys)
2478 (when tests?
2479 (invoke "rspec"))
2480 #t)))))
2481 (native-inputs
2482 `(("ruby-rspec" ,ruby-rspec)
2483 ("ruby-simplecov" ,ruby-simplecov)
2484 ("ruby-nokogiri-diff" ,ruby-nokogiri-diff)))
2485 (synopsis "Markdown interpreter in Ruby")
2486 (description
2487 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
2488HTML, and PDF through LaTeX.")
2489 (home-page "https://github.com/bhollis/maruku")
2490 (license license:expat)))
2491
25d6d49b
RW
2492(define-public ruby-metaclass
2493 (package
2494 (name "ruby-metaclass")
2495 (version "0.0.4")
2496 (source (origin
2497 (method url-fetch)
2498 (uri (rubygems-uri "metaclass" version))
2499 (sha256
2500 (base32
2501 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
2502 (build-system ruby-build-system)
2503 (arguments
2504 `(#:phases
2505 (modify-phases %standard-phases
2506 (add-after 'unpack 'add-test-unit-to-search-path
761e7042 2507 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2508 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
2509 (substitute* "Rakefile"
2510 (("t\\.libs << \"test\"" line)
2511 (string-append line "; t.libs << \""
3cb3fa67 2512 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
2513 "/gems/test-unit-"
2514 ,(package-version ruby-test-unit)
2515 "/lib\""))))
2516 #t)))))
25d6d49b
RW
2517 (native-inputs
2518 `(("bundler" ,bundler)
2519 ("ruby-test-unit" ,ruby-test-unit)))
2520 (synopsis "Ruby library adding metaclass method to all objects")
2521 (description
2522 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
2523objects.")
7bf837fd 2524 (home-page "https://github.com/floehopper/metaclass")
25d6d49b
RW
2525 (license license:expat)))
2526
1d1d20b0
CB
2527(define-public ruby-mspec
2528 (package
2529 (name "ruby-mspec")
2530 (version "1.9.1")
2531 (source
2532 (origin
2533 (method url-fetch)
2534 (uri (rubygems-uri "mspec" version))
2535 (sha256
2536 (base32
2537 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
2538 (build-system ruby-build-system)
2539 (arguments
2540 '(;; TODO: 3 test failures
2541 ;; ./spec/mocks/mock_spec.rb:82
2542 ;; ./spec/utils/name_map_spec.rb:151
2543 ;; ./spec/utils/name_map_spec.rb:155
2544 #:tests? #f
2545 #:phases
2546 (modify-phases %standard-phases
2547 (add-after 'extract-gemspec 'change-dependency-constraints
2548 (lambda _
2549 (substitute* "mspec.gemspec"
2550 (("rake.*") "rake>)\n")
2551 (("rspec.*") "rspec>)\n"))
2552 #t))
2553 (replace 'check
2554 (lambda* (#:key tests? #:allow-other-keys)
2555 (when tests?
2556 (invoke "rspec" "spec"))
2557 #t)))))
2558 (native-inputs
2559 `(("bundler" ,bundler)
2560 ("ruby-rake" ,ruby-rake)
2561 ("ruby-rspec" ,ruby-rspec)))
2562 (synopsis "MSpec is a specialized framework for RubySpec")
2563 (description
2564 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
2565for basic features. MSpec contains additional features that assist in writing
2566specs for Ruby implementations in ruby/spec.")
2567 (home-page "http://rubyspec.org")
2568 (license license:expat)))
2569
b8aecc31
CB
2570(define-public ruby-mysql2
2571 (package
2572 (name "ruby-mysql2")
2573 (version "0.5.2")
2574 (source
2575 (origin
2576 (method git-fetch)
2577 (uri (git-reference
2578 (url "https://github.com/brianmario/mysql2.git")
2579 (commit version)))
2580 (file-name (git-file-name name version))
2581 (sha256
2582 (base32
2583 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
2584 (build-system ruby-build-system)
2585 (arguments
2586 '(;; TODO: Tests require a running MySQL/MariaDB service
2587 #:tests? #f
2588 #:phases
2589 (modify-phases %standard-phases
2590 (replace 'replace-git-ls-files
2591 (lambda _
2592 (substitute* "mysql2.gemspec"
2593 (("git ls-files .*`") "find . -type f |sort`"))
2594 #t))
2595 (add-before 'install 'set-MAKEFLAGS
2596 (lambda* (#:key outputs #:allow-other-keys)
2597 (setenv "MAKEFLAGS"
2598 (string-append
2599 "V=1 "
2600 "prefix=" (assoc-ref outputs "out")))
2601 #t))
2602 ;; Move the 'check phase to after 'install, as then you can test
2603 ;; using the installed mysql2 gem in the store.
2604 (delete 'check)
2605 (add-after 'install 'check
2606 (lambda* (#:key outputs tests? #:allow-other-keys)
2607 (setenv "GEM_PATH"
2608 (string-append
2609 (getenv "GEM_PATH")
2610 ":"
2611 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
2612 (when tests?
2613 (invoke "rspec"))
2614 #t)))))
2615 (inputs
2616 `(("mariadb" ,mariadb)
2617 ("zlib" ,zlib)))
2618 (native-inputs
2619 `(("ruby-rspec" ,ruby-rspec)
2620 ("ruby-rake-compiler" ,ruby-rake-compiler)))
2621 (synopsis "MySQL library for Ruby, binding to libmysql")
2622 (description
2623 "This package provides a simple, fast MySQL library for Ruby, binding to
2624libmysql.")
2625 (home-page "https://github.com/brianmario/mysql2")
2626 (license license:expat)))
2627
21f7b7bd
RW
2628(define-public ruby-blankslate
2629 (package
2630 (name "ruby-blankslate")
2631 (version "3.1.3")
2632 (source (origin
2633 (method url-fetch)
2634 (uri (rubygems-uri "blankslate" version))
2635 (sha256
2636 (base32
2637 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
2638 (build-system ruby-build-system)
2639 (arguments
2640 `(#:phases
2641 (modify-phases %standard-phases
2642 (replace 'check
9923d5a4 2643 (lambda _ (invoke "rspec" "spec/"))))))
21f7b7bd
RW
2644 (native-inputs
2645 `(("bundler" ,bundler)
2646 ("ruby-rspec" ,ruby-rspec)))
2647 (synopsis "Abstract base class with no predefined methods")
2648 (description
2649 "BlankSlate provides an abstract base class with no predefined
2650methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
2651as a base class when writing classes that depend upon
2652@code{method_missing} (e.g. dynamic proxies).")
7bf837fd 2653 (home-page "https://github.com/masover/blankslate")
21f7b7bd
RW
2654 (license license:expat)))
2655
afdb437c
CB
2656(define-public ruby-bond
2657 (package
2658 (name "ruby-bond")
2659 (version "0.5.1")
2660 (source
2661 (origin
2662 (method url-fetch)
2663 (uri (rubygems-uri "bond" version))
2664 (sha256
2665 (base32
2666 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
2667 (build-system ruby-build-system)
2668 (native-inputs
2669 `(("ruby-bacon" ,ruby-bacon)
2670 ("ruby-bacon-bits" ,ruby-bacon-bits)
2671 ("ruby-mocha-on-bacon" ,ruby-mocha-on-bacon)))
2672 (synopsis "Bond can provide custom autocompletion for arguments, methods
2673and more")
2674 (description
2675 "Bond can autocomplete argument(s) to methods, uniquely completing per
2676module, per method and per argument. Bond provides a configuration system and
2677a DSL for creating custom completions and completion rules. Bond can also
2678load completions that ship with gems. Bond is able to offer more than irb's
2679completion since it uses the full line of input when completing as opposed to
2680irb's last-word approach.")
2681 (home-page "http://tagaholic.me/bond/")
2682 (license license:expat)))
2683
f3d7bb93
CB
2684(define-public ruby-idn-ruby
2685 (package
2686 (name "ruby-idn-ruby")
2687 (version "0.1.0")
2688 (source
2689 (origin
2690 (method url-fetch)
2691 (uri (rubygems-uri "idn-ruby" version))
2692 (sha256
2693 (base32
2694 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
2695 (build-system ruby-build-system)
2696 (arguments
2697 '(#:phases
2698 (modify-phases %standard-phases
2699 (delete 'check)
2700 (add-after 'install 'check
2701 (lambda* (#:key tests? outputs #:allow-other-keys)
2702 (when tests?
2703 (let* ((gem-file (cadr (find-files "." "\\.gem")))
2704 (name-and-version (basename gem-file ".gem")))
2705 (apply invoke
2706 "ruby" "--verbose"
2707 (string-append "-I"
2708 (assoc-ref outputs "out")
2709 "/lib/ruby/vendor_ruby/gems/"
2710 name-and-version
2711 "/lib")
2712 (find-files "./test" ".*\\.rb"))))
2713 #t)))))
2714 (inputs
2715 `(("libidn" ,libidn)))
2716 (synopsis "Ruby Bindings for the GNU LibIDN library")
2717 (description
2718 "Ruby Bindings for the GNU LibIDN library, an implementation of the
2719Stringprep, Punycode and IDNA specifications. These are used to encode and
2720decode internationalized domain + names according to the IDNA2003
2721specifications.
2722
2723Included are the most important parts of the Stringprep, Punycode and IDNA
2724APIs like performing Stringprep processings, encoding to and decoding from
2725Punycode strings and converting entire domain names to and from the ACE
2726encoded form.")
2727 (home-page "https://github.com/deepfryed/idn-ruby")
2728 (license license:asl2.0)))
2729
4016ba3f
RW
2730(define-public ruby-instantiator
2731 (package
2732 (name "ruby-instantiator")
688c9076 2733 (version "0.0.7")
4016ba3f
RW
2734 (source (origin
2735 (method url-fetch)
2736 (uri (rubygems-uri "instantiator" version))
2737 (sha256
2738 (base32
688c9076 2739 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
4016ba3f
RW
2740 (build-system ruby-build-system)
2741 (arguments
2742 `(#:phases
2743 (modify-phases %standard-phases
2744 (add-after 'unpack 'add-test-unit-to-search-path
761e7042 2745 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2746 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
2747 (substitute* "Rakefile"
2748 (("t\\.libs << \"test\"" line)
2749 (string-append line "; t.libs << \""
3cb3fa67 2750 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
2751 "/gems/test-unit-"
2752 ,(package-version ruby-test-unit)
2753 "/lib\""))))
2754 #t)))))
4016ba3f
RW
2755 (propagated-inputs
2756 `(("ruby-blankslate" ,ruby-blankslate)))
2757 (native-inputs
2758 `(("bundler" ,bundler)
2759 ("ruby-test-unit" ,ruby-test-unit)))
2760 (synopsis "Instantiate an arbitrary Ruby class")
2761 (description
2762 "Instantiator lets you instantiate an arbitrary Ruby class without
2763knowing anything about the constructor.")
2764 (home-page "https://github.com/floehopper/instantiator")
2765 (license license:expat)))
2766
97aee8d3
RW
2767(define-public ruby-introspection
2768 (package
2769 (name "ruby-introspection")
98ff58a5 2770 (version "0.0.4")
97aee8d3
RW
2771 (source (origin
2772 (method url-fetch)
2773 (uri (rubygems-uri "introspection" version))
2774 (sha256
2775 (base32
98ff58a5 2776 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
97aee8d3
RW
2777 (build-system ruby-build-system)
2778 (arguments
2779 `(#:phases
2780 (modify-phases %standard-phases
2781 (add-after 'unpack 'add-test-unit-to-search-path
2782 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2783 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
2784 (substitute* "Rakefile"
2785 (("t\\.libs << \"test\"" line)
2786 (string-append line "; t.libs << \""
3cb3fa67 2787 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
2788 "/gems/test-unit-"
2789 ,(package-version ruby-test-unit)
2790 "/lib\""))))
97aee8d3
RW
2791 #t)))))
2792 (propagated-inputs
2793 `(("ruby-instantiator" ,ruby-instantiator)
2794 ("ruby-metaclass" ,ruby-metaclass)))
2795 (native-inputs
2796 `(("bundler" ,bundler)
2797 ("ruby-blankslate" ,ruby-blankslate)
2798 ("ruby-test-unit" ,ruby-test-unit)))
2799 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
2800 (description
2801 "Introspection provides tools to inspect the hierarchy of method
2802definitions on a Ruby object.")
2803 (home-page "https://github.com/floehopper/introspection")
2804 (license license:expat)))
2805
d93062fd
RW
2806(define-public ruby-redcarpet
2807 (package
2808 (name "ruby-redcarpet")
5ca48923 2809 (version "3.4.0")
d93062fd
RW
2810 (source (origin
2811 (method url-fetch)
2812 (uri (rubygems-uri "redcarpet" version))
2813 (sha256
2814 (base32
5ca48923 2815 "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7"))))
d93062fd
RW
2816 (build-system ruby-build-system)
2817 (arguments
2818 `(#:phases
2819 (modify-phases %standard-phases
2820 ;; The gem archive does not include the conformance tests.
2821 (add-after 'unpack 'disable-conformance-tests
2822 (lambda _
2823 (substitute* "Rakefile"
2824 (("task :test => %w\\[test:unit test:conformance\\]")
2825 "task :test => %w[test:unit]"))
2826 #t)))))
2827 (native-inputs
2828 `(("bundler" ,bundler)
2829 ("ruby-test-unit" ,ruby-test-unit)
2830 ("ruby-rake-compiler" ,ruby-rake-compiler)))
2831 (synopsis "Extensible Markdown to (X)HTML converter")
2832 (description
2833 "Redcarpet is an extensible Ruby library for Markdown processing and
2834conversion to (X)HTML.")
7bf837fd 2835 (home-page "https://github.com/vmg/redcarpet")
d93062fd
RW
2836 (license license:expat)))
2837
09924294
CB
2838(define-public ruby-rerun
2839 (package
2840 (name "ruby-rerun")
2841 (version "0.13.0")
2842 (source
2843 (origin
2844 (method url-fetch)
2845 (uri (rubygems-uri "rerun" version))
2846 (sha256
2847 (base32
2848 "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
2849 (build-system ruby-build-system)
2850 (arguments
2851 '(#:tests? #f)) ; No included tests
2852 (propagated-inputs
2853 `(("ruby-listen" ,ruby-listen)))
2854 (synopsis "Run a process, and restart when some monitored files change")
2855 (description
52beae7b 2856 "Rerun is a tool to launch programs, then monitor the file system, and
09924294
CB
2857restart the program when any of the monitored files change. It's written in
2858Ruby, but can be used for all programs.")
2859 (home-page "https://github.com/alexch/rerun/")
2860 (license license:expat)))
2861
4f2a52ae
RW
2862(define-public ruby-mocha
2863 (package
2864 (name "ruby-mocha")
2865 (version "1.1.0")
2866 (source (origin
2867 (method url-fetch)
2868 (uri (rubygems-uri "mocha" version))
2869 (sha256
2870 (base32
2871 "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
2872 (build-system ruby-build-system)
2873 (arguments
2874 `(#:phases
2875 (modify-phases %standard-phases
2876 (add-after 'unpack 'add-test-unit-to-search-path
2877 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2878 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
2879 (substitute* "Rakefile"
2880 (("t\\.libs << 'test'" line)
2881 (string-append line "; t.libs << \""
3cb3fa67 2882 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
2883 "/gems/test-unit-"
2884 ,(package-version ruby-test-unit)
2885 "/lib\""))))
4f2a52ae
RW
2886 #t))
2887 (add-before 'check 'use-latest-redcarpet
2888 (lambda _
2889 (substitute* "mocha.gemspec"
71596c3c
BW
2890 (("<redcarpet>.freeze, \\[\"~> 1\"\\]")
2891 "<redcarpet>.freeze, [\">= 3\"]"))
4f2a52ae
RW
2892 #t))
2893 (add-before 'check 'hardcode-version
2894 (lambda _
2895 ;; Mocha is undefined at build time
2896 (substitute* "Rakefile"
2897 (("#\\{Mocha::VERSION\\}") ,version))
2898 #t))
2899 (add-before 'check 'remove-failing-test
2900 ;; FIXME: This test fails for reasons unrelated to Guix packaging.
2901 (lambda _
2902 (delete-file "test/acceptance/stubbing_nil_test.rb")
2903 #t)))))
2904 (propagated-inputs
2905 `(("ruby-metaclass" ,ruby-metaclass)))
2906 (native-inputs
2907 `(("bundler" ,bundler)
2908 ("ruby-yard" ,ruby-yard)
2909 ("ruby-introspection" ,ruby-introspection)
2910 ("ruby-test-unit" ,ruby-test-unit)
2911 ("ruby-redcarpet" ,ruby-redcarpet)))
2912 (synopsis "Mocking and stubbing library for Ruby")
2913 (description
2914 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
2915allows mocking and stubbing of methods on real (non-mock) classes.")
2916 (home-page "http://gofreerange.com/mocha/docs")
2917 (license license:expat)))
2918
cf646acf
CB
2919(define-public ruby-mocha-on-bacon
2920 (package
2921 (name "ruby-mocha-on-bacon")
2922 (version "0.2.3")
2923 (source
2924 (origin
2925 (method url-fetch)
2926 (uri (rubygems-uri "mocha-on-bacon" version))
2927 (sha256
2928 (base32
2929 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
2930 (build-system ruby-build-system)
2931 (arguments
2932 ;; rubygems.org release missing tests
2933 '(#:tests? #f))
2934 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
2935 (synopsis "Mocha adapter for Bacon")
2936 (description
2937 "This package provides a Mocha adapter for Bacon, allowing you to use the
2938Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
2939 (home-page
2940 "https://github.com/alloy/mocha-on-bacon")
2941 (license license:expat)))
2942
2c84ba7e
RW
2943(define-public ruby-net-ssh
2944 (package
2945 (name "ruby-net-ssh")
5803f872 2946 (version "4.2.0")
2c84ba7e
RW
2947 (source (origin
2948 (method url-fetch)
2949 (uri (rubygems-uri "net-ssh" version))
2950 (sha256
2951 (base32
5803f872 2952 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
2c84ba7e
RW
2953 (build-system ruby-build-system)
2954 (native-inputs
a7938625
MB
2955 `(("bundler" ,bundler)
2956 ("ruby-mocha" ,ruby-mocha)
2c84ba7e
RW
2957 ("ruby-test-unit" ,ruby-test-unit)))
2958 (synopsis "Ruby implementation of the SSH2 client protocol")
2959 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
2960client protocol. It allows you to write programs that invoke and interact
2961with processes on remote servers, via SSH2.")
2962 (home-page "https://github.com/net-ssh/net-ssh")
2963 (license license:expat)))
2964
d38755cb
DM
2965(define-public ruby-net-scp
2966 (package
2967 (name "ruby-net-scp")
2968 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
2969 (version "1.2.2.rc2")
2970 (source
2971 (origin
e405f996
TGR
2972 (method git-fetch)
2973 (uri (git-reference
2974 (url "https://github.com/net-ssh/net-scp.git")
2975 (commit (string-append "v" version))))
2976 (file-name (git-file-name name version))
d38755cb 2977 (sha256
e405f996 2978 (base32 "1nyn17sy71fn7zs3y6wbgcn35318c10flqgc0582409095x4h0sx"))))
d38755cb
DM
2979 (build-system ruby-build-system)
2980 (native-inputs
2981 `(("bundler" ,bundler)
2982 ("ruby-test-unit" ,ruby-test-unit)
2983 ("ruby-mocha" ,ruby-mocha)))
2984 (propagated-inputs
2985 `(("ruby-net-ssh" ,ruby-net-ssh)))
2986 (synopsis "Pure-Ruby SCP client library")
2987 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
2988client protocol.")
2989 (home-page "https://github.com/net-ssh/net-scp")
2990 (license license:expat)))
2991
2206e948
DT
2992(define-public ruby-minitest
2993 (package
2994 (name "ruby-minitest")
88a105c1 2995 (version "5.11.3")
2206e948 2996 (source (origin
e83c6d00
DT
2997 (method url-fetch)
2998 (uri (rubygems-uri "minitest" version))
2206e948
DT
2999 (sha256
3000 (base32
88a105c1 3001 "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"))))
2206e948 3002 (build-system ruby-build-system)
2206e948
DT
3003 (native-inputs
3004 `(("ruby-hoe" ,ruby-hoe)))
3005 (synopsis "Small test suite library for Ruby")
3006 (description "Minitest provides a complete suite of Ruby testing
3007facilities supporting TDD, BDD, mocking, and benchmarking.")
3008 (home-page "https://github.com/seattlerb/minitest")
3009 (license license:expat)))
3010
1db6e09f
RW
3011;; This is the last release of Minitest 4, which is used by some packages.
3012(define-public ruby-minitest-4
3013 (package (inherit ruby-minitest)
3014 (version "4.7.5")
3015 (source (origin
3016 (method url-fetch)
3017 (uri (rubygems-uri "minitest" version))
3018 (sha256
3019 (base32
3020 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
3021 (arguments
3022 `(#:phases
3023 (modify-phases %standard-phases
3024 (add-after 'unpack 'remove-unsupported-method
3025 (lambda _
3026 (substitute* "Rakefile"
3027 (("self\\.rubyforge_name = .*") ""))
9a7017eb
BW
3028 #t))
3029 (add-after 'build 'exclude-failing-tests
3030 (lambda _
3031 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
3032 ;; Fixnum.
3033 (delete-file "test/minitest/test_minitest_spec.rb")
3034 #t)))))))
1db6e09f 3035
450a3f7f
CB
3036(define-public ruby-minitest-around
3037 (package
3038 (name "ruby-minitest-around")
3039 (version "0.5.0")
3040 (source
3041 (origin
3042 (method url-fetch)
3043 (uri (rubygems-uri "minitest-around" version))
3044 (sha256
3045 (base32
3046 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
3047 (build-system ruby-build-system)
3048 (arguments
3049 '(#:phases
3050 (modify-phases %standard-phases
3051 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
3052 (lambda _
3053 (substitute* "minitest-around.gemspec"
3054 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n"))
3055 #t)))))
3056 (propagated-inputs
3057 `(("ruby-minitest" ,ruby-minitest)))
3058 (native-inputs
3059 `(("bundler" ,bundler)
3060 ("ruby-cucumber" ,ruby-cucumber)
3061 ("ruby-bump" ,ruby-bump)
3062 ("ruby-test-construct" ,ruby-test-construct)))
3063 (synopsis "Run code around tests in Minitest")
3064 (description
3065 "This library provides a way to run code around tests in Minitest,
3066written using either the unit test or spec style.")
3067 (home-page "https://github.com/splattael/minitest-around")
3068 (license license:expat)))
3069
35130835
DT
3070(define-public ruby-minitest-sprint
3071 (package
3072 (name "ruby-minitest-sprint")
3073 (version "1.1.0")
3074 (source (origin
e83c6d00
DT
3075 (method url-fetch)
3076 (uri (rubygems-uri "minitest-sprint" version))
35130835
DT
3077 (sha256
3078 (base32
e83c6d00 3079 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
35130835 3080 (build-system ruby-build-system)
35130835
DT
3081 (native-inputs
3082 `(("ruby-hoe" ,ruby-hoe)
3083 ("ruby-minitest" ,ruby-minitest)))
3084 (synopsis "Fast test suite runner for minitest")
3085 (description "Minitest-sprint is a test runner for minitest that makes it
3086easier to re-run individual failing tests.")
3087 (home-page "https://github.com/seattlerb/minitest-sprint")
3088 (license license:expat)))
3089
0808e361
DT
3090(define-public ruby-minitest-bacon
3091 (package
3092 (name "ruby-minitest-bacon")
6f9652b0 3093 (version "1.0.3")
0808e361 3094 (source (origin
e83c6d00
DT
3095 (method url-fetch)
3096 (uri (rubygems-uri "minitest-bacon" version))
0808e361
DT
3097 (sha256
3098 (base32
6f9652b0 3099 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
0808e361 3100 (build-system ruby-build-system)
0808e361
DT
3101 (native-inputs
3102 `(("ruby-hoe" ,ruby-hoe)))
3103 (inputs
3104 `(("ruby-minitest" ,ruby-minitest)))
3105 (synopsis "Bacon compatibility library for minitest")
3106 (description "Minitest-bacon extends minitest with bacon-like
3107functionality, making it easier to migrate test suites from bacon to minitest.")
3108 (home-page "https://github.com/seattlerb/minitest-bacon")
3109 (license license:expat)))
3110
39dc0eb5
BW
3111(define-public ruby-minitest-focus
3112 (package
3113 (name "ruby-minitest-focus")
3114 (version "1.1.2")
3115 (source
3116 (origin
3117 (method url-fetch)
3118 (uri (rubygems-uri "minitest-focus" version))
3119 (sha256
3120 (base32
3121 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
3122 (build-system ruby-build-system)
3123 (propagated-inputs
3124 `(("ruby-minitest" ,ruby-minitest)))
3125 (native-inputs
3126 `(("ruby-hoe" ,ruby-hoe)))
3127 (synopsis "Allows a few specific tests to be focused on")
3128 (description
3129 "@code{minitest-focus} gives the ability focus on a few tests with ease
3130without having to use command-line arguments. It introduces a @code{focus}
3131class method for use in testing classes, specifying that the next defined test
3132is to be run.")
3133 (home-page "https://github.com/seattlerb/minitest-focus")
3134 (license license:expat)))
3135
99fc5cd5
BW
3136(define-public ruby-minitest-pretty-diff
3137 ;; Use git reference because gem is out of date and does not contain testing
3138 ;; script. There are no releases on GitHub.
3139 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
3140 (package
3141 (name "ruby-minitest-pretty-diff")
3142 (version (string-append "0.1-1." (string-take commit 8)))
3143 (source (origin
3144 (method git-fetch)
3145 (uri (git-reference
3146 (url "https://github.com/adammck/minitest-pretty_diff.git")
3147 (commit commit)))
3148 (file-name (string-append name "-" version "-checkout"))
3149 (sha256
3150 (base32
3151 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
3152 (build-system ruby-build-system)
3153 (arguments
3154 `(#:phases
3155 (modify-phases %standard-phases
3156 (replace 'check
3157 (lambda _
9923d5a4 3158 (invoke "script/test"))))))
99fc5cd5
BW
3159 (native-inputs
3160 `(("bundler" ,bundler)
3161 ("ruby-turn" ,ruby-turn)))
3162 (synopsis "Pretty-print hashes and arrays in MiniTest")
3163 (description
3164 "@code{minitest-pretty_diff} monkey-patches
3165@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
3166diffing them. This makes it easier to spot differences between nested
3167structures when tests fail.")
3168 (home-page "https://github.com/adammck/minitest-pretty_diff")
3169 (license license:expat))))
3170
685d0d2f
BW
3171(define-public ruby-minitest-moar
3172 (package
3173 (name "ruby-minitest-moar")
3174 (version "0.0.4")
3175 (source
3176 (origin
3177 (method url-fetch)
3178 (uri (rubygems-uri "minitest-moar" version))
3179 (sha256
3180 (base32
3181 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
3182 (build-system ruby-build-system)
3183 (arguments
3184 `(#:phases
3185 (modify-phases %standard-phases
3186 (add-before 'check 'clean-dependencies
3187 (lambda _
3188 ;; Remove all gems defined in the Gemfile because these are not
3189 ;; truly needed.
3190 (substitute* "Gemfile"
3191 (("gem .*") ""))
3192 ;; Remove byebug as not needed to run tests.
3193 (substitute* "test/test_helper.rb"
3194 (("require 'byebug'") ""))
3195 #t)))))
3196 (native-inputs
3197 `(("bundler" ,bundler)
3198 ("ruby-minitest" ,ruby-minitest)))
3199 (synopsis "Extra features and changes to MiniTest")
3200 (description "@code{MiniTest Moar} add some additional features and
3201changes some default behaviours in MiniTest. For instance, Moar replaces the
3202MiniTest @code{Object#stub} with a global @code{stub} method.")
3203 (home-page "https://github.com/dockyard/minitest-moar")
3204 (license license:expat)))
3205
e07ef1d6
BW
3206(define-public ruby-minitest-bonus-assertions
3207 (package
3208 (name "ruby-minitest-bonus-assertions")
c9e261b7 3209 (version "3.0")
e07ef1d6
BW
3210 (source
3211 (origin
3212 (method url-fetch)
3213 (uri (rubygems-uri "minitest-bonus-assertions" version))
3214 (sha256
3215 (base32
c9e261b7 3216 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
e07ef1d6
BW
3217 (build-system ruby-build-system)
3218 (arguments
3219 `(#:phases
3220 (modify-phases %standard-phases
3221 (add-before 'check 'clean-dependencies
3222 (lambda _
3223 ;; Remove unneeded require statement that would entail another
3224 ;; dependency.
3225 (substitute* "test/minitest_config.rb"
3226 (("require 'minitest/bisect'") ""))
3227 #t)))))
3228 (native-inputs
3229 `(("ruby-hoe" ,ruby-hoe)
3230 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
3231 ("ruby-minitest-focus" ,ruby-minitest-focus)
3232 ("ruby-minitest-moar" ,ruby-minitest-moar)))
3233 (synopsis "Bonus assertions for @code{Minitest}")
3234 (description
3235 "Minitest bonus assertions provides extra MiniTest assertions. For
3236instance, it provides @code{assert_true}, @code{assert_false} and
3237@code{assert_set_equal}.")
3238 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
3239 (license license:expat)))
3240
e2c9a9cc
CB
3241(define-public ruby-minitest-reporters
3242 (package
3243 (name "ruby-minitest-reporters")
3244 (version "1.3.6")
3245 (source
3246 (origin
3247 (method url-fetch)
3248 (uri (rubygems-uri "minitest-reporters" version))
3249 (sha256
3250 (base32
3251 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
3252 (build-system ruby-build-system)
3253 (arguments
3254 '(#:phases
3255 (modify-phases %standard-phases
3256 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
3257 ;; including it as an input can lead to circular dependencies.
3258 (add-after 'unpack 'remove-rubocop-from-Rakefile
3259 (lambda _
3260 (substitute* "Rakefile"
3261 (("require 'rubocop/rake\\_task'") "")
3262 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
3263 #t))
3264 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
3265 (lambda _
3266 (substitute* "minitest-reporters.gemspec"
3267 ((".*%q<rubocop>.*") "\n"))
3268 #t)))))
3269 (propagated-inputs
3270 `(("ruby-ansi" ,ruby-ansi)
3271 ("ruby-builder" ,ruby-builder)
3272 ("ruby-minitest" ,ruby-minitest)
3273 ("ruby-progressbar" ,ruby-progressbar)))
3274 (native-inputs
3275 `(("bundler" ,bundler)
3276 ("ruby-maruku" ,ruby-maruku)))
3277 (synopsis "Enhanced reporting for Minitest tests")
3278 (description
3279 "@code{minitest/reporters} provides a custom Minitest runner to improve
3280how the test state is reported. A number of different reporters are
3281available, including a spec reporter, progress bar reporter, a HTML
3282reporter.")
3283 (home-page "https://github.com/kern/minitest-reporters")
3284 (license license:expat)))
3285
e582fa93
BW
3286(define-public ruby-minitest-rg
3287 (package
3288 (name "ruby-minitest-rg")
3289 (version "5.2.0")
3290 (source
3291 (origin
3292 (method url-fetch)
3293 (uri (rubygems-uri "minitest-rg" version))
3294 (sha256
3295 (base32
3296 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
3297 (build-system ruby-build-system)
3298 (arguments
3299 ;; Some tests fail even outside Guix, so disable tests.
3300 ;; https://github.com/blowmage/minitest-rg/issues/12
3301 ;; https://github.com/blowmage/minitest-rg/pull/13
3302 `(#:tests? #f))
3303 (propagated-inputs
3304 `(("ruby-minitest" ,ruby-minitest)))
3305 (synopsis "Coloured output for Minitest")
3306 (description
3307 "@code{minitest-rg} changes the colour of the output from Minitest.")
3308 (home-page "http://blowmage.com/minitest-rg")
3309 (license license:expat)))
3310
2a96dbe6
BW
3311(define-public ruby-minitest-hooks
3312 (package
3313 (name "ruby-minitest-hooks")
eaaf8b12 3314 (version "1.4.2")
2a96dbe6
BW
3315 (source
3316 (origin
3317 (method url-fetch)
3318 (uri (rubygems-uri "minitest-hooks" version))
3319 (sha256
3320 (base32
eaaf8b12 3321 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
2a96dbe6
BW
3322 (build-system ruby-build-system)
3323 (arguments
3324 '(#:test-target "spec"))
3325 (native-inputs
3326 `(("ruby-sequel" ,ruby-sequel)
3327 ("ruby-sqlite3" ,ruby-sqlite3)))
3328 (synopsis "Hooks for the minitest framework")
3329 (description
3330 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
3331@code{around_all} hooks for Minitest. This allows, for instance, running each
3332suite of specs inside a database transaction, running each spec inside its own
3333savepoint inside that transaction. This can significantly speed up testing
3334for specs that share expensive database setup code.")
7bf837fd 3335 (home-page "https://github.com/jeremyevans/minitest-hooks")
2a96dbe6
BW
3336 (license license:expat)))
3337
afbbdf77
DT
3338(define-public ruby-daemons
3339 (package
3340 (name "ruby-daemons")
f03153db 3341 (version "1.2.5")
afbbdf77
DT
3342 (source (origin
3343 (method url-fetch)
e83c6d00 3344 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
3345 (sha256
3346 (base32
f03153db 3347 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
afbbdf77
DT
3348 (build-system ruby-build-system)
3349 (arguments
3350 `(#:tests? #f)) ; no test suite
3351 (synopsis "Daemonize Ruby programs")
3352 (description "Daemons provides a way to wrap existing Ruby scripts to be
3353run as a daemon and to be controlled by simple start/stop/restart commands.")
3354 (home-page "https://github.com/thuehlinger/daemons")
3355 (license license:expat)))
b03eb6ac
CB
3356
3357(define-public ruby-data_uri
3358 (package
3359 (name "ruby-data_uri")
3360 (version "0.1.0")
3361 (source
3362 (origin
3363 (method url-fetch)
3364 (uri (rubygems-uri "data_uri" version))
3365 (sha256
3366 (base32
3367 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
3368 (build-system ruby-build-system)
3369 (synopsis "URI class for parsing data URIs")
3370 (description
3371 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
3372embedded inside a URI. The URI::Data class provides support for parsing these
3373URIs using the normal URI.parse method.")
3374 (home-page "https://github.com/dball/data_uri")
3375 (license license:expat)))
66e20863
DT
3376
3377(define-public ruby-git
3378 (package
3379 (name "ruby-git")
ceaff59e 3380 (version "1.3.0")
66e20863
DT
3381 (source (origin
3382 (method url-fetch)
e83c6d00 3383 (uri (rubygems-uri "git" version))
66e20863
DT
3384 (sha256
3385 (base32
ceaff59e 3386 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
66e20863
DT
3387 (build-system ruby-build-system)
3388 (arguments
e83c6d00
DT
3389 `(#:tests? #f ; no tests
3390 #:phases (modify-phases %standard-phases
3391 (add-after 'install 'patch-git-binary
3392 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
3393 ;; Make the default git binary an absolute path to the
3394 ;; store.
e83c6d00
DT
3395 (let ((git (string-append (assoc-ref inputs "git")
3396 "/bin/git"))
3cb3fa67
CB
3397 (config (string-append
3398 (assoc-ref outputs "out")
3399 "/lib/ruby/vendor_ruby/gems/git-"
3400 ,version "/lib/git/config.rb")))
e83c6d00 3401 (substitute* (list config)
66e20863
DT
3402 (("'git'")
3403 (string-append "'" git "'")))
e83c6d00 3404 #t))))))
66e20863
DT
3405 (inputs
3406 `(("git" ,git)))
3407 (synopsis "Ruby wrappers for Git")
3408 (description "Ruby/Git is a Ruby library that can be used to create, read
3409and manipulate Git repositories by wrapping system calls to the git binary.")
3410 (home-page "https://github.com/schacon/ruby-git")
3411 (license license:expat)))
71d3e2c2
DT
3412
3413(define-public ruby-slop
3414 (package
3415 (name "ruby-slop")
d14e5eaa 3416 (version "4.5.0")
71d3e2c2
DT
3417 (source (origin
3418 (method url-fetch)
e83c6d00 3419 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
3420 (sha256
3421 (base32
d14e5eaa 3422 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
71d3e2c2
DT
3423 (build-system ruby-build-system)
3424 (native-inputs
3425 `(("ruby-minitest" ,ruby-minitest)))
3426 (synopsis "Ruby command line option parser")
3427 (description "Slop provides a Ruby domain specific language for gathering
3428options and parsing command line flags.")
3429 (home-page "https://github.com/leejarvis/slop")
3430 (license license:expat)))
e778a549 3431
5337f8b9
DT
3432(define-public ruby-slop-3
3433 (package (inherit ruby-slop)
3434 (version "3.6.0")
3435 (source (origin
3436 (method url-fetch)
3437 (uri (rubygems-uri "slop" version))
3438 (sha256
3439 (base32
3440 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
3441
ca914b5b
CB
3442(define-public ruby-multi-xml
3443 (package
3444 (name "ruby-multi-xml")
3445 (version "0.6.0")
3446 (source
3447 (origin
3448 (method url-fetch)
3449 (uri (rubygems-uri "multi_xml" version))
3450 (sha256
3451 (base32
3452 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
3453 (build-system ruby-build-system)
3454 (arguments
3455 '(#:tests? #f)) ; No included tests
3456 (synopsis "Swappable XML backends for Ruby")
3457 (description
3458 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
3459Nokogiri, Ox, or REXML.")
3460 (home-page "https://github.com/sferik/multi_xml")
3461 (license license:expat)))
3462
e778a549
DT
3463(define-public ruby-multipart-post
3464 (package
3465 (name "ruby-multipart-post")
3466 (version "2.0.0")
3467 (source (origin
3468 (method url-fetch)
e83c6d00 3469 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
3470 (sha256
3471 (base32
e83c6d00 3472 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
3473 (build-system ruby-build-system)
3474 (native-inputs
3475 `(("bundler" ,bundler)))
3476 (synopsis "Multipart POST library for Ruby")
3477 (description "Multipart-Post Adds multipart POST capability to Ruby's
3478net/http library.")
3479 (home-page "https://github.com/nicksieger/multipart-post")
3480 (license license:expat)))
f8da3af0 3481
9a97e7ce
CB
3482(define-public ruby-multi-json
3483 (package
3484 (name "ruby-multi-json")
1b6f5475 3485 (version "1.13.1")
9a97e7ce
CB
3486 (source
3487 (origin
3488 (method url-fetch)
1b6f5475
BW
3489 ;; Tests are not distributed at rubygems.org so download from GitHub
3490 ;; instead.
3491 (uri (string-append "https://github.com/intridea/multi_json/archive/v"
3492 version ".tar.gz"))
3493 (file-name (string-append name "-" version ".tar.gz"))
9a97e7ce
CB
3494 (sha256
3495 (base32
1b6f5475 3496 "1s64xqvrnrxmb59v6b2kchnisawg5ai9ky1w60dy6z6ws9la1xv4"))))
9a97e7ce
CB
3497 (build-system ruby-build-system)
3498 (arguments
1b6f5475
BW
3499 `(#:phases
3500 (modify-phases %standard-phases
3501 (add-after 'unpack 'remove-signing-key-reference
3502 (lambda _
3503 (substitute* "multi_json.gemspec"
3504 ((".*spec.signing_key.*") ""))
3505 #t)))))
3506 (native-inputs
3507 `(("bundler" ,bundler)
3508 ("ruby-rspec" ,ruby-rspec)
3509 ("ruby-yard" ,ruby-yard)
3510 ("ruby-json-pure" ,ruby-json-pure)
3511 ("ruby-oj" ,ruby-oj)
3512 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
9a97e7ce
CB
3513 (synopsis "Common interface to multiple JSON libraries for Ruby")
3514 (description
3515 "This package provides a common interface to multiple JSON libraries,
3516including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
3517NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
1b6f5475 3518 (home-page "https://github.com/intridea/multi_json")
9a97e7ce
CB
3519 (license license:expat)))
3520
5edef88b
BW
3521(define-public ruby-multi-test
3522 (package
3523 (name "ruby-multi-test")
3524 (version "0.1.2")
3525 (source
3526 (origin
3527 (method url-fetch)
3528 (uri (rubygems-uri "multi_test" version))
3529 (sha256
3530 (base32
3531 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
3532 (build-system ruby-build-system)
3533 (arguments
3534 '(;; Tests require different sets of specific gem versions to be available,
3535 ;; and there is no gemfile that specifies the newest versions of
3536 ;; dependencies to be tested.
3537 #:tests? #f))
3538 (synopsis
3539 "Interface to testing libraries loaded into a running Ruby process")
3540 (description
3541 "@code{multi_test} provides a uniform interface onto whatever testing
3542libraries that have been loaded into a running Ruby process to help control
3543rogue test/unit/autorun requires.")
3544 (home-page "https://github.com/cucumber/multi_test")
9a97e7ce
CB
3545 (license license:expat)))
3546
f8da3af0
DT
3547(define-public ruby-arel
3548 (package
3549 (name "ruby-arel")
aecd533d 3550 (version "9.0.0")
f8da3af0
DT
3551 (source (origin
3552 (method url-fetch)
3553 (uri (rubygems-uri "arel" version))
3554 (sha256
3555 (base32
aecd533d 3556 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
f8da3af0
DT
3557 (build-system ruby-build-system)
3558 (arguments '(#:tests? #f)) ; no tests
3559 (home-page "https://github.com/rails/arel")
3560 (synopsis "SQL AST manager for Ruby")
6f23e2fb
TGR
3561 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
3562Ruby. It simplifies the generation of complex SQL queries and adapts to
3563various relational database implementations.")
f8da3af0 3564 (license license:expat)))
616eaead 3565
554bf4f6
CB
3566(define-public ruby-marcel
3567 (package
3568 (name "ruby-marcel")
3569 (version "0.3.3")
3570 (source
3571 (origin
3572 (method url-fetch)
3573 (uri (rubygems-uri "marcel" version))
3574 (sha256
3575 (base32
3576 "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
3577 (build-system ruby-build-system)
3578 (arguments
3579 '(;; No included tests
3580 #:tests? #f))
3581 (propagated-inputs
3582 `(("ruby-mimemagic" ,ruby-mimemagic)))
3583 (synopsis "MIME type detection using magic numbers, filenames and extensions")
3584 (description
3585 "@code{marcel} provides @acronym{MIME, Multipurpose Internet Mail
3586Extensions} type detection using magic numbers, filenames, and extensions")
3587 (home-page "https://github.com/basecamp/marcel")
3588 (license license:expat)))
3589
616eaead 3590(define-public ruby-minitar
bfaf8efd
BW
3591 ;; We package from the GitHub source to fix the security issue reported at
3592 ;; https://github.com/halostatue/minitar/issues/16.
3593 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
3594 (package
3595 (name "ruby-minitar")
3596 (version (string-append "0.5.4-1." (string-take commit 8)))
3597 (source
3598 (origin
3599 (method git-fetch)
3600 (uri (git-reference
3601 (url "https://github.com/halostatue/minitar.git")
3602 (commit commit)))
3603 (file-name (string-append name "-" version "-checkout"))
3604 (sha256
3605 (base32
3606 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
3607 (build-system ruby-build-system)
3608 (arguments
3609 '(#:tests? #f)) ; missing a gemspec
3610 (synopsis "Ruby library and utility for handling tar archives")
3611 (description
3612 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
616eaead 3613that provides the ability to deal with POSIX tar archive files.")
bfaf8efd
BW
3614 (home-page "http://www.github.com/atoulme/minitar")
3615 (license (list license:gpl2+ license:ruby)))))
bea1c0e2
DT
3616
3617(define-public ruby-mini-portile
3618 (package
3619 (name "ruby-mini-portile")
3620 (version "0.6.2")
3621 (source
3622 (origin
3623 (method url-fetch)
3624 (uri (rubygems-uri "mini_portile" version))
3625 (sha256
3626 (base32
3627 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
3628 (build-system ruby-build-system)
3629 (arguments
3630 '(#:tests? #f)) ; tests require network access
3631 (synopsis "Ports system for Ruby developers")
3632 (description "Mini-portile is a port/recipe system for Ruby developers.
3633It provides a standard way to compile against specific versions of libraries
3634to reproduce user environments.")
7bf837fd 3635 (home-page "https://github.com/flavorjones/mini_portile")
bea1c0e2 3636 (license license:expat)))
e920bfca 3637
d000fc92
BW
3638(define-public ruby-mini-portile-2
3639 (package (inherit ruby-mini-portile)
26f4a377 3640 (version "2.2.0")
d000fc92
BW
3641 (source (origin
3642 (method url-fetch)
3643 (uri (rubygems-uri "mini_portile2" version))
3644 (sha256
3645 (base32
26f4a377 3646 "0g5bpgy08q0nc0anisg3yvwc1gc3inl854fcrg48wvg7glqd6dpm"))))))
d000fc92 3647
e920bfca
DT
3648(define-public ruby-nokogiri
3649 (package
3650 (name "ruby-nokogiri")
efb94fda 3651 (version "1.8.0")
e920bfca
DT
3652 (source (origin
3653 (method url-fetch)
3654 (uri (rubygems-uri "nokogiri" version))
3655 (sha256
3656 (base32
efb94fda 3657 "1nffsyx1xjg6v5n9rrbi8y1arrcx2i5f21cp6clgh9iwiqkr7rnn"))))
e920bfca
DT
3658 (build-system ruby-build-system)
3659 (arguments
3660 ;; Tests fail because Nokogiri can only test with an installed extension,
3661 ;; and also because many test framework dependencies are missing.
7b01f250 3662 `(#:tests? #f
e920bfca
DT
3663 #:gem-flags (list "--" "--use-system-libraries"
3664 (string-append "--with-xml2-include="
3665 (assoc-ref %build-inputs "libxml2")
5e7f1b0b
BW
3666 "/include/libxml2" ))
3667 #:phases
3668 (modify-phases %standard-phases
7b01f250
BW
3669 (add-before 'build 'patch-extconf
3670 ;; 'pkg-config' is not included in the GEM_PATH during
3671 ;; installation, so we add it directly to the load path.
3672 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 3673 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
7b01f250
BW
3674 (substitute* "ext/nokogiri/extconf.rb"
3675 (("gem 'pkg-config'.*")
3676 (string-append "$:.unshift '"
3cb3fa67 3677 pkg-config "/lib/ruby/vendor_ruby"
7b01f250
BW
3678 "/gems/pkg-config-"
3679 ,(package-version ruby-pkg-config)
3680 "/lib'\n"))))
5e7f1b0b 3681 #t)))))
e920bfca 3682 (native-inputs
7b01f250 3683 `(("ruby-hoe" ,ruby-hoe)))
e920bfca
DT
3684 (inputs
3685 `(("zlib" ,zlib)
3686 ("libxml2" ,libxml2)
3687 ("libxslt" ,libxslt)))
3688 (propagated-inputs
7b01f250
BW
3689 `(("ruby-mini-portile" ,ruby-mini-portile-2)
3690 ("ruby-pkg-config" ,ruby-pkg-config)))
e920bfca
DT
3691 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
3692 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
3693both CSS3 selector and XPath 1.0 support.")
3694 (home-page "http://www.nokogiri.org/")
3695 (license license:expat)))
30b0b725
DT
3696
3697(define-public ruby-method-source
3698 (package
3699 (name "ruby-method-source")
c8355037 3700 (version "0.9.0")
30b0b725
DT
3701 (source
3702 (origin
3703 (method url-fetch)
3704 (uri (rubygems-uri "method_source" version))
3705 (sha256
3706 (base32
c8355037 3707 "0xqj21j3vfq4ldia6i2akhn2qd84m0iqcnsl49kfpq3xk6x0dzgn"))))
30b0b725 3708 (build-system ruby-build-system)
c8355037
BW
3709 (arguments
3710 `(#:test-target "spec"))
30b0b725 3711 (native-inputs
c8355037 3712 `(("ruby-rspec" ,ruby-rspec)
30b0b725
DT
3713 ("git" ,git)))
3714 (synopsis "Retrieve the source code for Ruby methods")
3715 (description "Method_source retrieves the source code for Ruby methods.
3716Additionally, it can extract source code from Proc and Lambda objects or just
3717extract comments.")
3718 (home-page "https://github.com/banister/method_source")
3719 (license license:expat)))
2e3fdea4
DT
3720
3721(define-public ruby-coderay
3722 (package
3723 (name "ruby-coderay")
5cf0997a 3724 (version "1.1.2")
2e3fdea4
DT
3725 (source
3726 (origin
3727 (method url-fetch)
3728 (uri (rubygems-uri "coderay" version))
3729 (sha256
3730 (base32
5cf0997a 3731 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
2e3fdea4
DT
3732 (build-system ruby-build-system)
3733 (arguments
3734 '(#:tests? #f)) ; missing test files
3735 (synopsis "Ruby syntax highlighting library")
3736 (description "Coderay is a Ruby library that provides syntax highlighting
3737for select languages.")
3738 (home-page "http://coderay.rubychan.de")
3739 (license license:expat)))
96e76083 3740
54993457
CB
3741(define-public ruby-parser
3742 (package
3743 (name "ruby-parser")
3744 (version "2.6.0.0")
3745 (source
3746 (origin
3747 (method url-fetch)
3748 (uri (rubygems-uri "parser" version))
3749 (sha256
3750 (base32
3751 "1hhz2k5417vr2k1llwqgjdnmyrhlpqicy0y2arr6r1gp04fg9wlm"))))
3752 (build-system ruby-build-system)
3753 (native-inputs
3754 `(("bundler" ,bundler)
3755 ("ruby-cliver" ,ruby-cliver)
3756 ("ruby-simplecov" ,ruby-simplecov)
3757 ("ruby-racc" ,ruby-racc)))
3758 (inputs
3759 `(("ragel" ,ragel)))
3760 (propagated-inputs
3761 `(("ruby-ast" ,ruby-ast)))
3762 (synopsis "Ruby parser written in pure Ruby")
3763 (description
3764 "This package provides a Ruby parser written in pure Ruby.")
3765 (home-page "https://github.com/whitequark/parser")
3766 (license license:expat)))
3767
16f423cb
CB
3768(define-public ruby-prawn-manual-builder
3769 (package
3770 (name "ruby-prawn-manual-builder")
3771 (version "0.3.0")
3772 (source
3773 (origin
3774 (method url-fetch)
3775 (uri (rubygems-uri "prawn-manual_builder" version))
3776 (sha256
3777 (base32
3778 "0wbjnkqp55p5wmz85ldypcray223glckd209hmdxhnzk8s5pb3za"))))
3779 (build-system ruby-build-system)
3780 (arguments
3781 '(;; No included tests
3782 #:tests? #f
3783 #:phases
3784 (modify-phases %standard-phases
3785 (add-after 'extract-gemspec 'patch-gemspec
3786 (lambda _
3787 (substitute* ".gemspec"
3788 ;; Loosen the requirement for pdf-inspector
3789 (("~> 1\\.0\\.7") ">= 0")))))))
3790 (propagated-inputs
3791 `(("ruby-coderay" ,ruby-coderay)))
3792 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
3793 (description
3794 "This package provides a tool for writing manuals for Prawn and Prawn
3795accessories")
3796 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
3797 (license (list
3798 ;; GPLv2 or GPLv3 or custom license described in LICENSE file
3799 license:gpl2
3800 license:gpl3))))
3801
268643b9
CB
3802(define-public ruby-progress_bar
3803 (package
3804 (name "ruby-progress_bar")
3805 (version "1.1.0")
3806 (source
3807 (origin
3808 (method url-fetch)
3809 (uri (rubygems-uri "progress_bar" version))
3810 (sha256
3811 (base32
3812 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
3813 (build-system ruby-build-system)
3814 (arguments
3815 '(#:test-target "spec"))
3816 (propagated-inputs
3817 `(("ruby-highline" ,ruby-highline)
3818 ("ruby-options" ,ruby-options)))
3819 (native-inputs
3820 `(("bundler" ,bundler)
3821 ("ruby-rspec" ,ruby-rspec)
3822 ("ruby-timecop" ,ruby-timecop)))
3823 (synopsis
3824 "Ruby library for displaying progress bars")
3825 (description
3826 "ProgressBar is a simple library for displaying progress bars. The
3827maximum value is configurable, and additional information can be displayed
3828like the percentage completion, estimated time remaining, elapsed time and
3829rate.")
3830 (home-page "https://github.com/paul/progress_bar")
3831 (license license:wtfpl2)))
3832
95f85d44
CB
3833(define-public ruby-dep
3834 (package
3835 (name "ruby-dep")
3836 (version "1.5.0")
3837 (source
3838 (origin
3839 (method url-fetch)
3840 (uri (rubygems-uri "ruby_dep" version))
3841 (sha256
3842 (base32
3843 "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
3844 (build-system ruby-build-system)
3845 (arguments
3846 '(#:tests? #f)) ; No included tests
3847 (synopsis "Creates a version constraint of supported Rubies")
3848 (description
3849 "This package helps create a version constraint of supported Rubies,
3850suitable for a gemspec file.")
3851 (home-page "https://github.com/e2/ruby_dep")
3852 (license license:expat)))
3853
158a9253
CB
3854(define-public ruby-progressbar
3855 (package
3856 (name "ruby-progressbar")
3857 (version "1.10.0")
3858 (source
3859 (origin
3860 (method url-fetch)
3861 (uri (rubygems-uri "ruby-progressbar" version))
3862 (sha256
3863 (base32
3864 "1cv2ym3rl09svw8940ny67bav7b2db4ms39i4raaqzkf59jmhglk"))))
3865 (build-system ruby-build-system)
3866 (arguments
3867 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
3868 #:tests? #f))
3869 (synopsis "Text progress bar library for Ruby")
3870 (description
3871 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
3872The output can be customized with a formatting system.")
3873 (home-page "https://github.com/jfelchner/ruby-progressbar")
3874 (license license:expat)))
3875
96e76083
DT
3876(define-public ruby-pry
3877 (package
3878 (name "ruby-pry")
1bf02b20 3879 (version "0.11.3")
96e76083
DT
3880 (source
3881 (origin
3882 (method url-fetch)
3883 (uri (rubygems-uri "pry" version))
3884 (sha256
3885 (base32
1bf02b20 3886 "1mh312k3y94sj0pi160wpia0ps8f4kmzvm505i6bvwynfdh7v30g"))))
96e76083
DT
3887 (build-system ruby-build-system)
3888 (arguments
3889 '(#:tests? #f)) ; no tests
3890 (propagated-inputs
3891 `(("ruby-coderay" ,ruby-coderay)
1960d4fd 3892 ("ruby-method-source" ,ruby-method-source)))
96e76083
DT
3893 (synopsis "Ruby REPL")
3894 (description "Pry is an IRB alternative and runtime developer console for
3895Ruby. It features syntax highlighting, a plugin architecture, runtime
3896invocation, and source and documentation browsing.")
2f3800e5 3897 (home-page "https://pryrepl.org")
96e76083 3898 (license license:expat)))
1415792a 3899
051deeb7
RW
3900(define-public ruby-guard
3901 (package
3902 (name "ruby-guard")
3903 (version "2.13.0")
3904 (source (origin
3905 (method url-fetch)
3906 ;; The gem does not include a Rakefile, nor does it contain a
3907 ;; gemspec file, nor does it come with the tests. This is why
3908 ;; we fetch the tarball from Github.
3909 (uri (string-append "https://github.com/guard/guard/archive/v"
3910 version ".tar.gz"))
3911 (file-name (string-append name "-" version ".tar.gz"))
3912 (sha256
3913 (base32
3914 "1hwj0yi17k6f5axrm0k2bb7fq71dlp0zfywmd7pij9iimbppcca0"))))
3915 (build-system ruby-build-system)
3916 (arguments
3917 `(#:tests? #f ; tests require cucumber
3918 #:phases
3919 (modify-phases %standard-phases
3920 (add-after 'unpack 'remove-git-ls-files
3921 (lambda* (#:key outputs #:allow-other-keys)
3922 (substitute* "guard.gemspec"
3923 (("git ls-files -z") "find . -type f -print0"))
3924 #t))
3925 (replace 'build
3926 (lambda _
9923d5a4 3927 (invoke "gem" "build" "guard.gemspec"))))))
051deeb7
RW
3928 (propagated-inputs
3929 `(("ruby-formatador" ,ruby-formatador)
3930 ("ruby-listen" ,ruby-listen)
3931 ("ruby-lumberjack" ,ruby-lumberjack)
3932 ("ruby-nenv" ,ruby-nenv)
3933 ("ruby-notiffany" ,ruby-notiffany)
3934 ("ruby-pry" ,ruby-pry)
3935 ("ruby-shellany" ,ruby-shellany)
3936 ("ruby-thor" ,ruby-thor)))
3937 (native-inputs
3938 `(("bundler" ,bundler)
3939 ("ruby-rspec" ,ruby-rspec)))
3940 (synopsis "Tool to handle events on file system modifications")
3941 (description
3942 "Guard is a command line tool to easily handle events on file system
3943modifications. Guard automates various tasks by running custom rules whenever
3944file or directories are modified.")
3945 (home-page "http://guardgem.org/")
3946 (license license:expat)))
3947
bcbb3cc9
CB
3948(define-public ruby-tilt
3949 (package
3950 (name "ruby-tilt")
3951 (version "2.0.9")
3952 (source
3953 (origin
3954 (method url-fetch)
3955 (uri (rubygems-uri "tilt" version))
3956 (sha256
3957 (base32
3958 "0ca4k0clwf0rkvy7726x4nxpjxkpv67w043i39saxgldxd97zmwz"))))
3959 (build-system ruby-build-system)
3960 (arguments
3961 '(#:phases
3962 (modify-phases %standard-phases
3963 (add-after 'unpack 'remove-some-dependencies
3964 (lambda _
3965 (substitute* "Gemfile"
3966 ;; TODO ronn is used for generating the manual
3967 (("gem 'ronn'.*") "\n")
3968 ;; ruby-haml has a runtime dependency on ruby-tilt, so don't
3969 ;; pass it in as a native-input
3970 (("gem 'haml'.*") "\n")
3971 ;; TODO Not all of these gems are packaged for Guix yet:
3972 ;; less, coffee-script, livescript, babel-transpiler,
3973 ;; typescript-node
3974 (("if can_execjs") "if false")
3975 ;; Disable the secondary group to reduce the number of
3976 ;; dependencies. None of the normal approaches work, so patch
3977 ;; the Gemfile instead.
3978 (("group :secondary") "[].each"))
3979 #t)))))
3980 (native-inputs
3981 `(("bundler" ,bundler)
3982 ("ruby-yard" ,ruby-yard)
3983 ("ruby-builder" ,ruby-builder)
3984 ("ruby-erubis" ,ruby-erubis)
3985 ("ruby-markaby" ,ruby-markaby)
3986 ("ruby-sassc" ,ruby-sassc)))
3987 (synopsis "Generic interface to multiple Ruby template engines")
3988 (description
3989 "Tilt is a thin interface over a number of different Ruby template
3990engines in an attempt to make their usage as generic as possible.")
3991 (home-page "https://github.com/rtomayko/tilt/")
3992 (license license:expat)))
3993
1415792a
DT
3994(define-public ruby-thread-safe
3995 (package
3996 (name "ruby-thread-safe")
313dd5dd 3997 (version "0.3.6")
1415792a
DT
3998 (source
3999 (origin
4000 (method url-fetch)
4001 (uri (rubygems-uri "thread_safe" version))
4002 (sha256
4003 (base32
313dd5dd 4004 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
1415792a
DT
4005 (build-system ruby-build-system)
4006 (arguments
4007 '(#:tests? #f)) ; needs simplecov, among others
4008 (synopsis "Thread-safe utilities for Ruby")
4009 (description "The thread_safe library provides thread-safe collections and
4010utilities for Ruby.")
4011 (home-page "https://github.com/ruby-concurrency/thread_safe")
4012 (license license:asl2.0)))
08a1b701
DT
4013
4014(define-public ruby-tzinfo
4015 (package
4016 (name "ruby-tzinfo")
4237af85 4017 (version "1.2.4")
08a1b701
DT
4018 (source
4019 (origin
4020 (method url-fetch)
4021 (uri (rubygems-uri "tzinfo" version))
4022 (sha256
4023 (base32
4237af85 4024 "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp"))))
08a1b701
DT
4025 (build-system ruby-build-system)
4026 (propagated-inputs
4027 `(("ruby-thread-safe" ,ruby-thread-safe)))
4028 (synopsis "Time zone library for Ruby")
4029 (description "TZInfo is a Ruby library that provides daylight savings
4030aware transformations between times in different time zones.")
2f3800e5 4031 (home-page "https://tzinfo.github.io")
1e12924a
BW
4032 (license license:expat)))
4033
4034(define-public ruby-tzinfo-data
4035 (package
4036 (name "ruby-tzinfo-data")
92513191 4037 (version "1.2017.3")
1e12924a
BW
4038 (source
4039 (origin
4040 (method url-fetch)
4041 ;; Download from GitHub because the rubygems version does not contain
4042 ;; Rakefile or tests.
4043 (uri (string-append
4044 "https://github.com/tzinfo/tzinfo-data/archive/v"
4045 version
4046 ".tar.gz"))
4047 (file-name (string-append name "-" version ".tar.gz"))
4048 (sha256
4049 (base32
92513191 4050 "01wff7syqzikbxalbg3isgxasmvzicr85bzadzkb6bf20bip4v54"))
1e12924a
BW
4051 ;; Remove the known test failure.
4052 ;; https://github.com/tzinfo/tzinfo-data/issues/10
4053 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
4054 (patches (search-patches
4055 "ruby-tzinfo-data-ignore-broken-test.patch"))))
4056 (build-system ruby-build-system)
4057 (propagated-inputs
4058 `(("ruby-tzinfo" ,ruby-tzinfo)))
4059 (synopsis "Data from the IANA Time Zone database")
4060 (description
4061 "This library provides @code{TZInfo::Data}, which contains data from the
4062IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
2f3800e5 4063 (home-page "https://tzinfo.github.io")
08a1b701 4064 (license license:expat)))
c99e2247 4065
48e6851f
RW
4066(define-public ruby-rb-inotify
4067 (package
4068 (name "ruby-rb-inotify")
32bbfea8 4069 (version "0.9.10")
48e6851f
RW
4070 (source
4071 (origin
4072 (method url-fetch)
4073 (uri (rubygems-uri "rb-inotify" version))
4074 (sha256
4075 (base32
32bbfea8 4076 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
48e6851f
RW
4077 (build-system ruby-build-system)
4078 (arguments
4079 '(#:tests? #f ; there are no tests
4080 #:phases
4081 (modify-phases %standard-phases
4082 ;; Building the gemspec with rake is not working here since it is
4083 ;; generated with Jeweler. It is also unnecessary because the
4084 ;; existing gemspec does not use any development tools to generate a
4085 ;; list of files.
4086 (replace 'build
4087 (lambda _
9923d5a4 4088 (invoke "gem" "build" "rb-inotify.gemspec"))))))
48e6851f
RW
4089 (propagated-inputs
4090 `(("ruby-ffi" ,ruby-ffi)))
4091 (native-inputs
4092 `(("ruby-yard" ,ruby-yard)))
4093 (synopsis "Ruby wrapper for Linux's inotify")
4094 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
4095kernel subsystem for monitoring changes to files and directories.")
4096 (home-page "https://github.com/nex3/rb-inotify")
4097 (license license:expat)))
4098
a75bdfce
RW
4099(define-public ruby-pry-editline
4100 (package
4101 (name "ruby-pry-editline")
4102 (version "1.1.2")
4103 (source (origin
4104 (method url-fetch)
4105 (uri (rubygems-uri "pry-editline" version))
4106 (sha256
4107 (base32
4108 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
4109 (build-system ruby-build-system)
4110 (arguments `(#:tests? #f)) ; no tests included
4111 (native-inputs
4112 `(("bundler" ,bundler)))
4113 (synopsis "Open the current REPL line in an editor")
4114 (description
4115 "This gem provides a plugin for the Ruby REPL to enable opening the
4116current line in an external editor.")
4117 (home-page "https://github.com/tpope/pry-editline")
4118 (license license:expat)))
4119
d3b20a02
RW
4120(define-public ruby-sdoc
4121 (package
4122 (name "ruby-sdoc")
fdf3a68d 4123 (version "0.4.2")
d3b20a02
RW
4124 (source (origin
4125 (method url-fetch)
4126 (uri (rubygems-uri "sdoc" version))
4127 (sha256
4128 (base32
fdf3a68d 4129 "0qhvy10vnmrqcgh8494m13kd5ag9c3sczzhfasv8j0294ylk679n"))))
d3b20a02
RW
4130 (build-system ruby-build-system)
4131 (arguments
4132 `(#:phases
4133 (modify-phases %standard-phases
fc29d5e6 4134 (add-before 'check 'set-rubylib-and-patch-gemfile
d3b20a02 4135 (lambda _
fdf3a68d 4136 (setenv "RUBYLIB" "lib")
fc29d5e6
BW
4137 (substitute* "sdoc.gemspec"
4138 (("s.add_runtime_dependency.*") "\n")
4139 (("s.add_dependency.*") "\n"))
4140 (substitute* "Gemfile"
4141 (("gem \"rake\".*")
4142 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
d3b20a02
RW
4143 #t)))))
4144 (propagated-inputs
4145 `(("ruby-json" ,ruby-json)))
4146 (native-inputs
4147 `(("bundler" ,bundler)
fdf3a68d
BW
4148 ("ruby-minitest" ,ruby-minitest)
4149 ("ruby-hoe" ,ruby-hoe)))
d3b20a02
RW
4150 (synopsis "Generate searchable RDoc documentation")
4151 (description
4152 "SDoc is an RDoc documentation generator to build searchable HTML
4153documentation for Ruby code.")
7bf837fd 4154 (home-page "https://github.com/voloko/sdoc")
d3b20a02
RW
4155 (license license:expat)))
4156
70b002aa
RW
4157(define-public ruby-tins
4158 (package
4159 (name "ruby-tins")
fbefd6ff 4160 (version "1.15.0")
70b002aa
RW
4161 (source (origin
4162 (method url-fetch)
4163 (uri (rubygems-uri "tins" version))
4164 (sha256
4165 (base32
fbefd6ff 4166 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
70b002aa
RW
4167 (build-system ruby-build-system)
4168 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
4169 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
4170 ;; the gemspec.
4171 (arguments
4172 `(#:tests? #f ; there are no tests
4173 #:phases
4174 (modify-phases %standard-phases
4175 (replace 'build
4176 (lambda _
4177 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
4178 ;; causes an error.
4179 (substitute* "tins.gemspec"
4180 (("\"lib/spruz\", ") ""))
9923d5a4 4181 (invoke "gem" "build" "tins.gemspec"))))))
70b002aa
RW
4182 (synopsis "Assorted tools for Ruby")
4183 (description "Tins is a Ruby library providing assorted tools.")
4184 (home-page "https://github.com/flori/tins")
4185 (license license:expat)))
4186
bc8277e4
RW
4187(define-public ruby-gem-hadar
4188 (package
4189 (name "ruby-gem-hadar")
3fd577e3 4190 (version "1.9.1")
bc8277e4
RW
4191 (source (origin
4192 (method url-fetch)
4193 (uri (rubygems-uri "gem_hadar" version))
4194 (sha256
4195 (base32
3fd577e3 4196 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
bc8277e4
RW
4197 (build-system ruby-build-system)
4198 ;; This gem needs itself at development time. We disable rebuilding of the
4199 ;; gemspec to avoid this loop.
4200 (arguments
4201 `(#:tests? #f ; there are no tests
4202 #:phases
4203 (modify-phases %standard-phases
4204 (replace 'build
4205 (lambda _
9923d5a4 4206 (invoke "gem" "build" "gem_hadar.gemspec"))))))
bc8277e4
RW
4207 (propagated-inputs
4208 `(("git" ,git)
4209 ("ruby-tins" ,ruby-tins)
3fd577e3 4210 ("ruby-yard" ,ruby-yard)))
bc8277e4
RW
4211 (synopsis "Library for the development of Ruby gems")
4212 (description
4213 "This library contains some useful functionality to support the
4214development of Ruby gems.")
4215 (home-page "https://github.com/flori/gem_hadar")
4216 (license license:expat)))
4217
d8cafe29
RW
4218(define-public ruby-minitest-tu-shim
4219 (package
4220 (name "ruby-minitest-tu-shim")
4221 (version "1.3.3")
4222 (source (origin
4223 (method url-fetch)
4224 (uri (rubygems-uri "minitest_tu_shim" version))
4225 (sha256
4226 (base32
4227 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
4228 (build-system ruby-build-system)
4229 (arguments
4230 `(#:phases
4231 (modify-phases %standard-phases
4232 (add-after 'unpack 'fix-test-include-path
4233 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 4234 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
761e7042
BW
4235 (substitute* "Rakefile"
4236 (("Hoe\\.add_include_dirs .*")
4237 (string-append "Hoe.add_include_dirs \""
3cb3fa67 4238 minitest "/lib/ruby/vendor_ruby"
761e7042
BW
4239 "/gems/minitest-"
4240 ,(package-version ruby-minitest-4)
4241 "/lib" "\""))))
4242 #t))
d8cafe29
RW
4243 (add-before 'check 'fix-test-assumptions
4244 (lambda _
4245 ;; The test output includes the file name, so a couple of tests
4246 ;; fail. Changing the regular expressions slightly fixes this
4247 ;; problem.
4248 (substitute* "test/test_mini_test.rb"
4249 (("output.sub!\\(.*, 'FILE:LINE'\\)")
4250 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
4251 (("gsub\\(/.*, 'FILE:LINE'\\)")
4252 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
4253 #t)))))
4254 (propagated-inputs
4255 `(("ruby-minitest-4" ,ruby-minitest-4)))
4256 (native-inputs
4257 `(("ruby-hoe" ,ruby-hoe)))
4258 (synopsis "Adapter library between minitest and test/unit")
4259 (description
4260 "This library bridges the gap between the small and fast minitest and
4261Ruby's large and slower test/unit.")
4262 (home-page "https://rubygems.org/gems/minitest_tu_shim")
4263 (license license:expat)))
4264
fd83a212
RW
4265(define-public ruby-term-ansicolor
4266 (package
4267 (name "ruby-term-ansicolor")
f3a6311a 4268 (version "1.6.0")
fd83a212
RW
4269 (source (origin
4270 (method url-fetch)
4271 (uri (rubygems-uri "term-ansicolor" version))
4272 (sha256
4273 (base32
f3a6311a 4274 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
fd83a212
RW
4275 (build-system ruby-build-system)
4276 ;; Rebuilding the gemspec seems to require git, even though this is not a
4277 ;; git repository, so we just build the gem from the existing gemspec.
4278 (arguments
4279 `(#:phases
4280 (modify-phases %standard-phases
39ecb977
CB
4281 (add-after 'unpack 'fix-test
4282 (lambda -
4283 (substitute* "tests/hsl_triple_test.rb"
4284 (("0\\\\\\.0%")
4285 "0\\.?0?%"))))
fd83a212
RW
4286 (replace 'build
4287 (lambda _
9923d5a4 4288 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
fd83a212
RW
4289 (propagated-inputs
4290 `(("ruby-tins" ,ruby-tins)))
4291 (native-inputs
4292 `(("ruby-gem-hadar" ,ruby-gem-hadar)
4293 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
4294 (synopsis "Ruby library to control the attributes of terminal output")
4295 (description
4296 "This Ruby library uses ANSI escape sequences to control the attributes
4297of terminal output.")
2f3800e5 4298 (home-page "https://flori.github.io/term-ansicolor/")
fd83a212
RW
4299 ;; There is no mention of the "or later" clause.
4300 (license license:gpl2)))
4301
a714c30f
CB
4302(define-public ruby-terraform
4303 (package
4304 (name "ruby-terraform")
4305 (version "0.22.0")
4306 (source
4307 (origin
4308 (method url-fetch)
4309 (uri (rubygems-uri "ruby-terraform" version))
4310 (sha256
4311 (base32
4312 "13zjkp71cd19j2ds2h9rqwcfr1zdg5nsh63p89l6qcsc9z39z324"))))
4313 (build-system ruby-build-system)
4314 (arguments
4315 '(#:tests? #f)) ; No included tests
4316 (propagated-inputs
4317 `(("ruby-lino" ,ruby-lino)))
4318 (synopsis "Ruby wrapper around the Terraform command line interface")
4319 (description
4320 "This package provides a Ruby wrapper around the Terraform command line
4321interface so that Terraform can be more easily invoked from Ruby code.")
4322 (home-page "https://github.com/infrablocks/ruby_terraform")
4323 (license license:expat)))
4324
6e376ca4
RW
4325(define-public ruby-pstree
4326 (package
4327 (name "ruby-pstree")
4328 (version "0.1.0")
4329 (source (origin
4330 (method url-fetch)
4331 (uri (rubygems-uri "pstree" version))
4332 (sha256
4333 (base32
4334 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
4335 (build-system ruby-build-system)
4336 (native-inputs
4337 `(("ruby-gem-hadar" ,ruby-gem-hadar)
4338 ("bundler" ,bundler)))
4339 (synopsis "Create a process tree data structure")
4340 (description
4341 "This library uses the output of the @code{ps} command to create a
4342process tree data structure for the current host.")
2f3800e5 4343 (home-page "https://github.com/flori/pstree")
6e376ca4
RW
4344 ;; There is no mention of the "or later" clause.
4345 (license license:gpl2)))
4346
53239b5f
RW
4347(define-public ruby-utils
4348 (package
4349 (name "ruby-utils")
cd698b6e 4350 (version "0.9.0")
53239b5f
RW
4351 (source (origin
4352 (method url-fetch)
4353 (uri (rubygems-uri "utils" version))
4354 (sha256
4355 (base32
cd698b6e 4356 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
53239b5f
RW
4357 (build-system ruby-build-system)
4358 (propagated-inputs
4359 `(("ruby-tins" ,ruby-tins)
4360 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
4361 ("ruby-pstree" ,ruby-pstree)
4362 ("ruby-pry-editline" ,ruby-pry-editline)))
4363 (native-inputs
4364 `(("ruby-gem-hadar" ,ruby-gem-hadar)
4365 ("bundler" ,bundler)))
4366 (synopsis "Command line tools for working with Ruby")
4367 (description
4368 "This package provides assorted command line tools that may be useful
4369when working with Ruby code.")
4370 (home-page "https://github.com/flori/utils")
4371 ;; There is no mention of the "or later" clause.
4372 (license license:gpl2)))
4373
433f10b5
CB
4374(define-public ruby-jaro-winkler
4375 (package
4376 (name "ruby-jaro-winkler")
4377 (version "1.5.2")
4378 (source
4379 (origin
4380 (method url-fetch)
4381 (uri (rubygems-uri "jaro_winkler" version))
4382 (sha256
4383 (base32
4384 "1zz27z88qznix4r65gd9h56gl177snlfpgv10b0s69vi8qpl909l"))))
4385 (build-system ruby-build-system)
4386 (arguments
4387 '(;; No included tests
4388 #:tests? #f))
4389 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
4390 (description
4391 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
4392algorithm. It is written as a C extension and will fallback to a pure Ruby
4393implementation on platforms where this is unsupported.")
4394 (home-page "https://github.com/tonytonyjan/jaro_winkler")
4395 (license license:expat)))
4396
c99e2247
DT
4397(define-public ruby-json
4398 (package
4399 (name "ruby-json")
a281acce 4400 (version "2.1.0")
c99e2247
DT
4401 (source
4402 (origin
4403 (method url-fetch)
4404 (uri (rubygems-uri "json" version))
4405 (sha256
4406 (base32
a281acce 4407 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
c99e2247
DT
4408 (build-system ruby-build-system)
4409 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
4410 (synopsis "JSON library for Ruby")
4411 (description "This Ruby library provides a JSON implementation written as
4412a native C extension.")
4413 (home-page "http://json-jruby.rubyforge.org/")
4414 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 4415
763624f5
RW
4416(define-public ruby-json-pure
4417 (package
4418 (name "ruby-json-pure")
ac01cb07 4419 (version "2.1.0")
763624f5
RW
4420 (source (origin
4421 (method url-fetch)
4422 (uri (rubygems-uri "json_pure" version))
4423 (sha256
4424 (base32
ac01cb07 4425 "12yf9fmhr4c2jm3xl20vf1qyz5i63vc8a6ngz9j0f86nqwhmi2as"))))
763624f5
RW
4426 (build-system ruby-build-system)
4427 (arguments
ac01cb07 4428 `(#:phases
763624f5 4429 (modify-phases %standard-phases
ac01cb07 4430 (add-after 'unpack 'fix-rakefile
763624f5 4431 (lambda _
ac01cb07
BW
4432 (substitute* "Rakefile"
4433 ;; Since this is not a git repository, do not call 'git'.
4434 (("`git ls-files`") "`find . -type f |sort`")
4435 ;; Loosen dependency constraint.
4436 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
4437 #t))
4438 (add-after 'replace-git-ls-files 'regenerate-gemspec
4439 (lambda _
4440 ;; Regenerate gemspec so loosened dependency constraints are
4441 ;; propagated.
17cfb7ae
CB
4442 (invoke "rake" "gemspec")))
4443 (add-after 'regenerate-gemspec 'fix-json-java.gemspec
4444 (lambda _
4445 ;; This gemspec doesn't look to be generated by the above
4446 ;; command, so patch it separately.
4447 (substitute* "json-java.gemspec"
4448 (("%q<test-unit>\\.freeze, \\[\"~> 2\\.0\"\\]")
4449 "%q<test-unit>.freeze, [\">= 2.0\"]"))
4450 #t)))))
763624f5 4451 (native-inputs
ac01cb07 4452 `(("bundler" ,bundler)
0c9f73cd
TGR
4453 ("ragel" ,ragel)
4454 ("ruby-simplecov" ,ruby-simplecov)
4455 ("ruby-test-unit" ,ruby-test-unit)))
763624f5
RW
4456 (synopsis "JSON implementation in pure Ruby")
4457 (description
4458 "This package provides a JSON implementation written in pure Ruby.")
2f3800e5 4459 (home-page "https://flori.github.com/json")
763624f5
RW
4460 (license license:ruby)))
4461
2a8581ac
CB
4462(define-public ruby-jwt
4463 (package
4464 (name "ruby-jwt")
4465 (version "2.1.0")
4466 (source
4467 (origin
4468 (method url-fetch)
4469 (uri (rubygems-uri "jwt" version))
4470 (sha256
4471 (base32
4472 "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky"))))
4473 (build-system ruby-build-system)
4474 (arguments
4475 '(#:test-target "test"
4476 #:phases
4477 (modify-phases %standard-phases
4478 (add-after 'unpack 'remove-unnecessary-dependencies
4479 (lambda _
4480 (substitute* "spec/spec_helper.rb"
4481 (("require 'simplecov.*") "\n")
4482 ;; Use [].each to disable running the SimpleCov configuration
4483 ;; block
4484 (("SimpleCov\\.configure") "[].each")
4485 (("require 'codeclimate-test-reporter'") "")
4486 (("require 'codacy-coverage'") "")
4487 (("Codacy::Reporter\\.start") ""))
4488 #t)))))
4489 (native-inputs
4490 `(("bundler" ,bundler)
4491 ("ruby-rspec" ,ruby-rspec)
4492 ("ruby-rbnacl" ,ruby-rbnacl)))
4493 (synopsis "Ruby implementation of the JSON Web Token standard")
4494 (description
4495 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
4496@acronym{JWT, JSON Web Token} standard.")
4497 (home-page "https://github.com/jwt/ruby-jwt")
4498 (license license:expat)))
4499
16b324cd
RW
4500;; Even though this package only provides bindings for a Mac OSX API it is
4501;; required by "ruby-listen" at runtime.
4502(define-public ruby-rb-fsevent
4503 (package
4504 (name "ruby-rb-fsevent")
b0ef15ed 4505 (version "0.10.3")
16b324cd
RW
4506 (source (origin
4507 (method url-fetch)
4508 (uri (rubygems-uri "rb-fsevent" version))
4509 (sha256
4510 (base32
b0ef15ed 4511 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
16b324cd
RW
4512 (build-system ruby-build-system)
4513 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
4514 ;; "listen", which needs "rb-fsevent" at runtime.
4515 (arguments `(#:tests? #f))
4516 (synopsis "FSEvents API with signals catching")
4517 (description
4518 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
4519 (home-page "https://rubygems.org/gems/rb-fsevent")
4520 (license license:expat)))
4521
b86be2ad
RW
4522(define-public ruby-listen
4523 (package
4524 (name "ruby-listen")
c3b36fa1 4525 (version "3.1.5")
b86be2ad
RW
4526 (source
4527 (origin
35602819
CB
4528 ;; The gem does not include a Rakefile, so fetch from the Git
4529 ;; repository.
4530 (method git-fetch)
4531 (uri (git-reference
4532 (url "https://github.com/guard/listen.git")
4533 (commit (string-append "v" version))))
4534 (file-name (git-file-name name version))
b86be2ad
RW
4535 (sha256
4536 (base32
35602819 4537 "1hqmkfa9f2xb5jlvqbafdxjd5ax75jm8gqj5nh3k22xq0kacsvgg"))))
b86be2ad 4538 (build-system ruby-build-system)
35602819
CB
4539 (arguments
4540 `(#:test-target "spec"
4541 #:phases
4542 (modify-phases %standard-phases
4543 (add-after 'unpack 'fix-files-in-gemspec
4544 (lambda _
4545 (substitute* "listen.gemspec"
4546 (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
4547 #t))
4548 (add-before 'check 'remove-unnecessary-dependencies'
4549 (lambda _
4550 (substitute* "Rakefile"
4551 ;; Rubocop is for code linting, and is unnecessary for running
4552 ;; the tests.
4553 ((".*rubocop.*") ""))
4554 #t)))))
4555 (native-inputs
4556 `(("bundler" ,bundler)
4557 ("ruby-rspec" ,ruby-rspec)))
4558 (inputs
4559 `(;; ruby-thor is used for the command line interface, and is referenced
4560 ;; in the wrapper, and therefore just needs to be an input.
4561 ("ruby-thor" ,ruby-thor)))
b86be2ad 4562 (propagated-inputs
35602819
CB
4563 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
4564 ("ruby-rb-inotify" ,ruby-rb-inotify)
4565 ("ruby-dep" ,ruby-dep)))
b86be2ad
RW
4566 (synopsis "Listen to file modifications")
4567 (description "The Listen gem listens to file modifications and notifies
4568you about the changes.")
4569 (home-page "https://github.com/guard/listen")
4570 (license license:expat)))
4571
8d3c5ff6
CB
4572(define-public ruby-loofah
4573 (package
4574 (name "ruby-loofah")
4575 (version "2.2.3")
4576 (source
4577 (origin
4578 (method url-fetch)
4579 (uri (rubygems-uri "loofah" version))
4580 (sha256
4581 (base32
4582 "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg"))))
4583 (build-system ruby-build-system)
4584 (arguments
4585 '(#:phases
4586 (modify-phases %standard-phases
4587 (add-after 'unpack 'remove-unnecessary-dependencies
4588 (lambda _
4589 ;; concourse is a development tool which is unused, so remove it
4590 ;; so it's not required.
4591 (substitute* "Gemfile"
4592 ((".*\"concourse\".*") "\n"))
4593 (substitute* "Rakefile"
4594 (("require 'concourse'") "")
4595 (("Concourse\\.new.*") "\n"))
4596 #t)))))
4597 (native-inputs
4598 `(("ruby-hoe" ,ruby-hoe)
4599 ("ruby-rr" ,ruby-rr)))
4600 (propagated-inputs
4601 `(("ruby-nokogiri" ,ruby-nokogiri)
4602 ("ruby-crass" ,ruby-crass)))
4603 (synopsis "Ruby library for manipulating and transforming HTML/XML")
4604 (description
4605 "Loofah is a general library for manipulating and transforming HTML/XML
4606documents and fragments. It's built on top of Nokogiri and libxml2.")
4607 (home-page "https://github.com/flavorjones/loofah")
4608 (license license:expat)))
4609
5ff89a1b
DT
4610(define-public ruby-activesupport
4611 (package
4612 (name "ruby-activesupport")
bcf1fe5b 4613 (version "5.2.2.1")
5ff89a1b
DT
4614 (source
4615 (origin
4616 (method url-fetch)
4617 (uri (rubygems-uri "activesupport" version))
4618 (sha256
4619 (base32
bcf1fe5b 4620 "161bp4p01v1a1lvszrhd1a02zf9x1p1l1yhw79a3rix1kvzkkdqb"))))
5ff89a1b
DT
4621 (build-system ruby-build-system)
4622 (arguments
2af45e50
BW
4623 `(#:phases
4624 (modify-phases %standard-phases
4625 (replace 'check
4626 (lambda _
9923d5a4
TGR
4627 ;; There are no tests, instead attempt to load the library.
4628 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
5ff89a1b 4629 (propagated-inputs
2af45e50
BW
4630 `(("ruby-concurrent" ,ruby-concurrent)
4631 ("ruby-i18n" ,ruby-i18n)
5ff89a1b 4632 ("ruby-minitest" ,ruby-minitest)
606ee9a1
BW
4633 ("ruby-tzinfo" ,ruby-tzinfo)
4634 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
5ff89a1b
DT
4635 (synopsis "Ruby on Rails utility library")
4636 (description "ActiveSupport is a toolkit of support libraries and Ruby
4637core extensions extracted from the Rails framework. It includes support for
4638multibyte strings, internationalization, time zones, and testing.")
4639 (home-page "http://www.rubyonrails.org")
4640 (license license:expat)))
f847ad7b 4641
3996f0aa
RW
4642(define-public ruby-crass
4643 (package
4644 (name "ruby-crass")
a0e0f9d7 4645 (version "1.0.4")
3996f0aa
RW
4646 (source (origin
4647 (method url-fetch)
4648 (uri (rubygems-uri "crass" version))
4649 (sha256
4650 (base32
a0e0f9d7 4651 "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi"))))
3996f0aa
RW
4652 (build-system ruby-build-system)
4653 (native-inputs
4654 `(("bundler" ,bundler)
4655 ("ruby-minitest" ,ruby-minitest)))
4656 (synopsis "Pure Ruby CSS parser")
4657 (description
4658 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
4659 (home-page "https://github.com/rgrove/crass/")
4660 (license license:expat)))
4661
c2c4e5b2 4662(define-public ruby-nokogumbo
f1ae7c62
BW
4663 (let ((commit "fb51ff299a1c34346837580b6d1d9a60fadf5dbd"))
4664 (package
4665 (name "ruby-nokogumbo")
4666 (version (string-append "1.4.7-1." (string-take commit 8)))
4667 (source (origin
4668 ;; We use the git reference, because there's no Rakefile in the
4669 ;; published gem and the tarball on Github is outdated.
4670 (method git-fetch)
4671 (uri (git-reference
4672 (url "https://github.com/rubys/nokogumbo.git")
4673 (commit "d56f954d20a")))
4674 (file-name (string-append name "-" version "-checkout"))
4675 (sha256
4676 (base32
4677 "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
4678 (build-system ruby-build-system)
4679 (arguments
4680 `(#:modules ((guix build ruby-build-system)
4681 (guix build utils)
4682 (ice-9 rdelim))
4683 #:phases
4684 (modify-phases %standard-phases
5c31e981 4685 (add-after 'unpack 'build-gemspec
f1ae7c62
BW
4686 (lambda _
4687 (substitute* "Rakefile"
4688 ;; Build Makefile even without a copy of gumbo-parser sources
4689 (("'gumbo-parser/src',") "")
4690 ;; We don't bundle gumbo-parser sources
4691 (("'gumbo-parser/src/\\*',") "")
4692 (("'gumbo-parser/visualc/include/\\*',") "")
4693 ;; The definition of SOURCES will be cut in gemspec, and
4694 ;; "FileList" will be undefined.
4695 (("SOURCES \\+ FileList\\[")
4696 "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
4697
4698 ;; Copy the Rakefile and cut out the gemspec.
4699 (copy-file "Rakefile" ".gemspec")
4700 (with-atomic-file-replacement ".gemspec"
4701 (lambda (in out)
4702 (let loop ((line (read-line in 'concat))
4703 (skipping? #t))
4704 (if (eof-object? line)
4705 #t
4706 (let ((skip-next? (if skipping?
4707 (not (string-prefix? "SPEC =" line))
4708 (string-prefix? "end" line))))
4709 (when (or (not skipping?)
4710 (and skipping? (not skip-next?)))
4711 (format #t "~a" line)
4712 (display line out))
4713 (loop (read-line in 'concat) skip-next?))))))
4714 #t)))))
4715 (inputs
4716 `(("gumbo-parser" ,gumbo-parser)))
4717 (propagated-inputs
4718 `(("ruby-nokogiri" ,ruby-nokogiri)))
4719 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
4720 (description
4721 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
c2c4e5b2 4722access the result as a Nokogiri parsed document.")
f1ae7c62
BW
4723 (home-page "https://github.com/rubys/nokogumbo/")
4724 (license license:asl2.0))))
c2c4e5b2 4725
d56ff88b
RW
4726(define-public ruby-sanitize
4727 (package
4728 (name "ruby-sanitize")
f812145e 4729 (version "4.6.3")
d56ff88b
RW
4730 (source (origin
4731 (method url-fetch)
4732 ;; The gem does not include the Rakefile, so we download the
4733 ;; release tarball from Github.
4734 (uri (string-append "https://github.com/rgrove/"
4735 "sanitize/archive/v" version ".tar.gz"))
4736 (file-name (string-append name "-" version ".tar.gz"))
4737 (sha256
4738 (base32
f812145e 4739 "1fmqppwif3cm8h79006jfzkdnlxxzlry9kzk03psk0d5xpg55ycc"))))
d56ff88b
RW
4740 (build-system ruby-build-system)
4741 (propagated-inputs
4742 `(("ruby-crass" ,ruby-crass)
4743 ("ruby-nokogiri" ,ruby-nokogiri)
4744 ("ruby-nokogumbo" ,ruby-nokogumbo)))
4745 (native-inputs
4746 `(("bundler" ,bundler)
4747 ("ruby-minitest" ,ruby-minitest)
4748 ("ruby-redcarpet" ,ruby-redcarpet)
4749 ("ruby-yard" ,ruby-yard)))
4750 (synopsis "Whitelist-based HTML and CSS sanitizer")
4751 (description
4752 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
4753acceptable elements, attributes, and CSS properties, Sanitize will remove all
4754unacceptable HTML and/or CSS from a string.")
4755 (home-page "https://github.com/rgrove/sanitize/")
4756 (license license:expat)))
4757
ed4b6b18
BW
4758(define-public ruby-oj
4759 (package
4760 (name "ruby-oj")
4761 (version "3.6.7")
4762 (source
4763 (origin
4764 (method url-fetch)
4765 ;; Version on rubygems.org does not contain Rakefile, so download from
4766 ;; GitHub instead.
4767 (uri (string-append "https://github.com/ohler55/oj/archive/v"
4768 version ".tar.gz"))
4769 (file-name (string-append name "-" version ".tar.gz"))
4770 (sha256
4771 (base32
4772 "1x28ga72jxlnmsd8g8c0fw81vlh54r0qgagw2lxsd3x3la091g2h"))))
4773 (build-system ruby-build-system)
4774 (arguments
4775 '(#:test-target "test_all"
4776 #:phases
4777 (modify-phases %standard-phases
4778 (add-before 'check 'disable-bundler
4779 (lambda _
4780 (substitute* "Rakefile"
4781 (("Bundler\\.with_clean_env") "1.times")
4782 (("bundle exec ") "")))))))
4783 (native-inputs
4784 `(("bundler" ,bundler)
4785 ("ruby-rspec" ,ruby-rspec)
4786 ("ruby-rake-compiler" ,ruby-rake-compiler)))
4787 (synopsis "JSON parser for Ruby optimized for speed")
4788 (description
4789 "Oj is a JSON parser and generator for Ruby, where the encoding and
4790decoding of JSON is implemented as a C extension to Ruby.")
4791 (home-page "http://www.ohler.com/oj")
4792 (license (list license:expat ; Ruby code
4793 license:bsd-3)))) ; extension code
4794
f847ad7b
DT
4795(define-public ruby-ox
4796 (package
4797 (name "ruby-ox")
263c0dbf 4798 (version "2.6.0")
f847ad7b
DT
4799 (source
4800 (origin
4801 (method url-fetch)
4802 (uri (rubygems-uri "ox" version))
4803 (sha256
4804 (base32
263c0dbf 4805 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
f847ad7b
DT
4806 (build-system ruby-build-system)
4807 (arguments
4808 '(#:tests? #f)) ; no tests
4809 (synopsis "Optimized XML library for Ruby")
4810 (description
4811 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
4812written as a native C extension. It was designed to be an alternative to
4813Nokogiri and other Ruby XML parsers for generic XML parsing and as an
4814alternative to Marshal for Object serialization. ")
4815 (home-page "http://www.ohler.com/ox")
4816 (license license:expat)))
4a9e0585 4817
0c4e7625
RW
4818(define-public ruby-redcloth
4819 (package
4820 (name "ruby-redcloth")
2a91494e 4821 (version "4.3.2")
0c4e7625
RW
4822 (source (origin
4823 (method url-fetch)
4824 (uri (rubygems-uri "RedCloth" version))
4825 (sha256
4826 (base32
2a91494e 4827 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
0c4e7625
RW
4828 (build-system ruby-build-system)
4829 (arguments
4830 `(#:tests? #f ; no tests
4831 #:phases
4832 (modify-phases %standard-phases
4833 ;; Redcloth has complicated rake tasks to build various versions for
4834 ;; multiple targets using RVM. We don't want this so we just use the
4835 ;; existing gemspec.
4836 (replace 'build
4837 (lambda _
9923d5a4 4838 (invoke "gem" "build" "redcloth.gemspec"))))))
0c4e7625
RW
4839 (native-inputs
4840 `(("bundler" ,bundler)
4841 ("ruby-diff-lcs" ,ruby-diff-lcs)
4842 ("ruby-rspec-2" ,ruby-rspec-2)))
4843 (synopsis "Textile markup language parser for Ruby")
4844 (description
4845 "RedCloth is a Ruby parser for the Textile markup language.")
4846 (home-page "http://redcloth.org")
4847 (license license:expat)))
4848
4a9e0585
DT
4849(define-public ruby-pg
4850 (package
4851 (name "ruby-pg")
ffc4869e 4852 (version "1.1.4")
4a9e0585
DT
4853 (source
4854 (origin
4855 (method url-fetch)
4856 (uri (rubygems-uri "pg" version))
4857 (sha256
4858 (base32
ffc4869e 4859 "0fmnyxcyrvgdbgq7m09whgn9i8rwfybk0w8aii1nc4g5kqw0k2jy"))))
4a9e0585
DT
4860 (build-system ruby-build-system)
4861 (arguments
4862 '(#:test-target "spec"))
4863 (native-inputs
4864 `(("ruby-rake-compiler" ,ruby-rake-compiler)
4865 ("ruby-hoe" ,ruby-hoe)
4866 ("ruby-rspec" ,ruby-rspec)))
4867 (inputs
ffc4869e 4868 `(("postgresql" ,postgresql)))
4a9e0585
DT
4869 (synopsis "Ruby interface to PostgreSQL")
4870 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
4db80f8b 4871with PostgreSQL 9.0 and later.")
4a9e0585
DT
4872 (home-page "https://bitbucket.org/ged/ruby-pg")
4873 (license license:ruby)))
468e5657
DT
4874
4875(define-public ruby-byebug
4876 (package
4877 (name "ruby-byebug")
d5489a61 4878 (version "9.0.6")
468e5657
DT
4879 (source
4880 (origin
4881 (method url-fetch)
4882 (uri (rubygems-uri "byebug" version))
4883 (sha256
4884 (base32
d5489a61 4885 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
468e5657
DT
4886 (build-system ruby-build-system)
4887 (arguments
4888 '(#:tests? #f)) ; no tests
4889 (synopsis "Debugger for Ruby 2")
4890 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
4891TracePoint C API for execution control and the Debug Inspector C API for call
4892stack navigation. The core component provides support that front-ends can
4893build on. It provides breakpoint handling and bindings for stack frames among
4894other things and it comes with a command line interface.")
7bf837fd 4895 (home-page "https://github.com/deivid-rodriguez/byebug")
468e5657 4896 (license license:bsd-2)))
64b6ccc3 4897
5799bc2b
RW
4898(define-public ruby-netrc
4899 (package
4900 (name "ruby-netrc")
4901 (version "0.11.0")
4902 (source (origin
4903 (method url-fetch)
4904 (uri (rubygems-uri "netrc" version))
4905 (sha256
4906 (base32
4907 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
4908 (build-system ruby-build-system)
4909 (arguments
4910 `(#:phases
4911 (modify-phases %standard-phases
4912 (replace 'check
4913 ;; There is no Rakefile and minitest can only run one file at once,
4914 ;; so we have to iterate over all test files.
4915 (lambda _
9923d5a4
TGR
4916 (map (lambda (file)
4917 (invoke "ruby" "-Itest" file))
4918 (find-files "./test" "test_.*\\.rb")))))))
5799bc2b
RW
4919 (native-inputs
4920 `(("ruby-minitest" ,ruby-minitest)))
4921 (synopsis "Library to read and update netrc files")
4922 (description
4923 "This library can read and update netrc files, preserving formatting
4924including comments and whitespace.")
4925 (home-page "https://github.com/geemus/netrc")
4926 (license license:expat)))
4927
3a6989ce
RW
4928(define-public ruby-unf-ext
4929 (package
4930 (name "ruby-unf-ext")
4931 (version "0.0.7.1")
4932 (source (origin
4933 (method url-fetch)
4934 (uri (rubygems-uri "unf_ext" version))
4935 (sha256
4936 (base32
4937 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
4938 (build-system ruby-build-system)
b809cc9a
RW
4939 (arguments
4940 `(#:phases
4941 (modify-phases %standard-phases
4942 (add-after 'build 'build-ext
9923d5a4 4943 (lambda _ (invoke "rake" "compile:unf_ext"))))))
3a6989ce
RW
4944 (native-inputs
4945 `(("bundler" ,bundler)
4946 ("ruby-rake-compiler" ,ruby-rake-compiler)
4947 ("ruby-test-unit" ,ruby-test-unit)))
4948 (synopsis "Unicode normalization form support library")
4949 (description
4950 "This package provides unicode normalization form support for Ruby.")
4951 (home-page "https://github.com/knu/ruby-unf_ext")
4952 (license license:expat)))
4953
2632a067 4954(define-public ruby-tdiff
5071f17b
BW
4955 ;; Use a newer than released snapshot so that rspec-2 is not required.
4956 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
4957 (package
4958 (name "ruby-tdiff")
4959 (version (string-append "0.3.3-1." (string-take commit 8)))
4960 (source (origin
4961 (method git-fetch)
4962 (uri (git-reference
4963 (url "https://github.com/postmodern/tdiff.git")
4964 (commit commit)))
4965 (file-name (string-append name "-" version "-checkout"))
4966 (sha256
4967 (base32
4968 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
4969 (build-system ruby-build-system)
4970 (native-inputs
4971 `(("ruby-rspec" ,ruby-rspec)
4972 ("ruby-yard" ,ruby-yard)
4973 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
4974 (synopsis "Calculate the differences between two tree-like structures")
4975 (description
4976 "This library provides functions to calculate the differences between two
2632a067 4977tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
5071f17b
BW
4978 (home-page "https://github.com/postmodern/tdiff")
4979 (license license:expat))))
2632a067 4980
f60f5002 4981(define-public ruby-nokogiri-diff
5b0c223a
BW
4982 ;; Use a newer than released snapshot so that rspec-2 is not required.
4983 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
4984 (package
4985 (name "ruby-nokogiri-diff")
4986 (version (string-append "0.2.0-1." (string-take commit 8)))
4987 (source (origin
4988 (method git-fetch)
4989 (uri (git-reference
4990 (url "https://github.com/postmodern/nokogiri-diff.git")
4991 (commit commit)))
4992 (file-name (string-append name "-" version "-checkout"))
4993 (sha256
4994 (base32
4995 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
4996 (build-system ruby-build-system)
4997 (propagated-inputs
4998 `(("ruby-tdiff" ,ruby-tdiff)
4999 ("ruby-nokogiri" ,ruby-nokogiri)))
5000 (native-inputs
5001 `(("ruby-rspec" ,ruby-rspec)
5002 ("ruby-yard" ,ruby-yard)
5003 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
5004 (synopsis "Calculate the differences between two XML/HTML documents")
5005 (description
5006 "@code{Nokogiri::Diff} adds the ability to calculate the
f60f5002 5007differences (added or removed nodes) between two XML/HTML documents.")
5b0c223a
BW
5008 (home-page "https://github.com/postmodern/nokogiri-diff")
5009 (license license:expat))))
f60f5002 5010
6dc21310
CB
5011(define-public ruby-racc
5012 (package
5013 (name "ruby-racc")
5014 (version "1.4.14")
5015 (source
5016 (origin
5017 (method url-fetch)
5018 (uri (rubygems-uri "racc" version))
5019 (sha256
5020 (base32
5021 "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
5022 (build-system ruby-build-system)
5023 (native-inputs
5024 `(("ruby-hoe" ,ruby-hoe)
5025 ("ruby-rake-compiler" ,ruby-rake-compiler)))
5026 (synopsis "LALR(1) parser generator for Ruby")
5027 (description
5028 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
5029generates Ruby program.")
5030 (home-page "http://i.loveruby.net/en/projects/racc/")
5031 (license (list
5032 ;; Generally licensed under the LGPL2.1, and some files also
5033 ;; available under the same license as Ruby.
5034 license:lgpl2.1
5035 license:ruby))))
5036
64b6ccc3
DT
5037(define-public ruby-rack
5038 (package
5039 (name "ruby-rack")
288d2480 5040 (version "2.0.6")
64b6ccc3
DT
5041 (source
5042 (origin
5043 (method url-fetch)
1db791d5
BW
5044 ;; Download from GitHub so that the patch can be applied.
5045 (uri (string-append
5046 "https://github.com/rack/rack/archive/"
5047 version
5048 ".tar.gz"))
5049 (file-name (string-append name "-" version ".tar.gz"))
64b6ccc3
DT
5050 (sha256
5051 (base32
288d2480 5052 "0pb3g5ymvbf07xaxcn51dpqv3djlxavckp3qkxsjdxiqznb0d9p1"))
1db791d5
BW
5053 ;; Ignore test which fails inside the build environment but works
5054 ;; outside.
5055 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
64b6ccc3
DT
5056 (build-system ruby-build-system)
5057 (arguments
5058 '(#:phases
5059 (modify-phases %standard-phases
5060 (add-before 'check 'fix-tests
5061 (lambda _
5062 ;; A few of the tests use the length of a file on disk for
5063 ;; Content-Length and Content-Range headers. However, this file
5064 ;; has a shebang in it which an earlier phase patches, growing
5065 ;; the file size from 193 to 239 bytes when the store prefix is
5066 ;; "/gnu/store".
5067 (let ((size-diff (- (string-length (which "ruby"))
5068 (string-length "/usr/bin/env ruby"))))
5069 (substitute* '("test/spec_file.rb")
5070 (("193")
5071 (number->string (+ 193 size-diff)))
5072 (("bytes(.)22-33" all delimiter)
5073 (string-append "bytes"
5074 delimiter
5075 (number->string (+ 22 size-diff))
5076 "-"
5077 (number->string (+ 33 size-diff))))))
5078 #t)))))
5079 (native-inputs
1db791d5
BW
5080 `(("ruby-minitest" ,ruby-minitest)
5081 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
5082 ("which" ,which)))
5083 (propagated-inputs
5084 `(("ruby-concurrent" ,ruby-concurrent)))
64b6ccc3
DT
5085 (synopsis "Unified web application interface for Ruby")
5086 (description "Rack provides a minimal, modular and adaptable interface for
5087developing web applications in Ruby. By wrapping HTTP requests and responses,
5088it unifies the API for web servers, web frameworks, and software in between
5089into a single method call.")
2f3800e5 5090 (home-page "https://rack.github.io/")
64b6ccc3 5091 (license license:expat)))
62e4cc5a 5092
20a0f804
BW
5093(define-public ruby-rack-test
5094 (package
5095 (name "ruby-rack-test")
5096 (version "0.8.3")
5097 (source
5098 (origin
5099 (method url-fetch)
5100 (uri (rubygems-uri "rack-test" version))
5101 (sha256
5102 (base32
5103 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
5104 (build-system ruby-build-system)
5105 (arguments
5106 ;; Disable tests because of circular dependencies: requires sinatra,
5107 ;; which requires rack-protection, which requires rack-test. Instead
5108 ;; simply require the library.
5109 `(#:phases
5110 (modify-phases %standard-phases
5111 (replace 'check
5112 (lambda _
5113 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
5114 (propagated-inputs
5115 `(("ruby-rack" ,ruby-rack)))
5116 (synopsis "Testing API for Rack applications")
5117 (description
5118 "Rack::Test is a small, simple testing API for Rack applications. It can
5119be used on its own or as a reusable starting point for Web frameworks and
5120testing libraries to build on.")
5121 (home-page "https://github.com/rack-test/rack-test")
5122 (license license:expat)))
5123
a0a7e690
BW
5124(define-public ruby-rack-protection
5125 (package
5126 (name "ruby-rack-protection")
3355e49c 5127 (version "2.0.5")
a0a7e690
BW
5128 (source
5129 (origin
5130 (method url-fetch)
5131 (uri (rubygems-uri "rack-protection" version))
5132 (sha256
5133 (base32
3355e49c 5134 "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk"))))
a0a7e690
BW
5135 (build-system ruby-build-system)
5136 (arguments
fafeeaa2 5137 '(;; Tests missing from the gem.
a0a7e690
BW
5138 #:tests? #f))
5139 (propagated-inputs
5140 `(("ruby-rack" ,ruby-rack)))
5141 (native-inputs
5142 `(("bundler" ,bundler)
5143 ("ruby-rspec" ,ruby-rspec-2)
5144 ("ruby-rack-test" ,ruby-rack-test)))
5145 (synopsis "Rack middleware that protects against typical web attacks")
5146 (description "Rack middleware that can be used to protect against typical
5147web attacks. It can protect all Rack apps, including Rails. For instance, it
5148protects against cross site request forgery, cross site scripting,
5149clickjacking, directory traversal, session hijacking and IP spoofing.")
5150 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
5151 (license license:expat)))
5152
6edabcb2
CB
5153(define-public ruby-rainbow
5154 (package
5155 (name "ruby-rainbow")
5156 (version "3.0.0")
5157 (source
5158 (origin
5159 (method url-fetch)
5160 (uri (rubygems-uri "rainbow" version))
5161 (sha256
5162 (base32
5163 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
5164 (build-system ruby-build-system)
5165 (arguments
5166 '(#:phases
5167 (modify-phases %standard-phases
5168 ;; Run rspec directly, to avoid requiring Rubocop which is used from
5169 ;; the Rakefile.
5170 (replace 'check
5171 (lambda* (#:key tests? #:allow-other-keys)
5172 (when tests?
5173 (invoke "rspec"))
5174 #t)))))
5175 (native-inputs
5176 `(("bundler" ,bundler)
5177 ("ruby-rspec" ,ruby-rspec)))
5178 (synopsis "Colorize printed text on ANSI terminals")
5179 (description
5180 "@code{rainbow} provides a string presenter object to colorize strings by
5181wrapping them in ANSI escape codes.")
5182 (home-page "https://github.com/sickill/rainbow")
79193b20
CB
5183 (license license:expat)))
5184
6188d643
CB
5185(define-public ruby-rr
5186 (package
5187 (name "ruby-rr")
5188 (version "1.2.1")
5189 (source
5190 (origin
5191 (method url-fetch)
5192 (uri (rubygems-uri "rr" version))
5193 (sha256
5194 (base32
5195 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
5196 (build-system ruby-build-system)
5197 (arguments
5198 '(#:tests? #f)) ; test files not included
5199 (native-inputs
5200 `(("bundler" ,bundler)
5201 ("ruby-rspec" ,ruby-rspec)))
5202 (synopsis "Ruby test double framework")
5203 (description
5204 "RR is a test double framework that features a rich selection of double
5205techniques and a terse syntax.")
5206 (home-page "https://rr.github.io/rr/")
5207 (license license:expat)))
5208
79193b20
CB
5209(define-public ruby-rest-client
5210 (package
5211 (name "ruby-rest-client")
5212 (version "2.0.2")
5213 (source
5214 (origin
5215 (method url-fetch)
5216 (uri (rubygems-uri "rest-client" version))
5217 (sha256
5218 (base32
5219 "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
5220 (build-system ruby-build-system)
5221 (arguments
5222 '(#:phases
5223 (modify-phases %standard-phases
5224 (add-before 'check 'remove-unnecessary-development-dependencies
5225 (lambda _
5226 (substitute* "rest-client.gemspec"
5227 ;; Remove rubocop as it's unused. Rubocop also indirectly
5228 ;; depends on this package through ruby-parser and ruby-ast so
5229 ;; this avoids a dependency loop.
5230 ((".*rubocop.*") "\n")
5231 ;; Remove pry as it's unused, it's a debugging tool
5232 ((".*pry.*") "\n")
5233 ;; Remove an unnecessarily strict rdoc dependency
5234 ((".*rdoc.*") "\n"))
5235 #t))
5236 (add-before 'check 'delete-network-dependent-tests
5237 (lambda _
5238 (delete-file "spec/integration/request_spec.rb")
5239 (delete-file "spec/integration/httpbin_spec.rb")
5240 #t)))))
5241 (propagated-inputs
5242 `(("ruby-http-cookie" ,ruby-http-cookie)
5243 ("ruby-mime-types" ,ruby-mime-types)
5244 ("ruby-netrc" ,ruby-netrc)))
5245 (native-inputs
5246 `(("bundler" ,bundler)
eea094cc
TGR
5247 ("ruby-webmock" ,ruby-webmock-2)
5248 ("ruby-rspec" ,ruby-rspec)))
79193b20
CB
5249 (synopsis "Simple HTTP and REST client for Ruby")
5250 (description
5251 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
5252inspired by the Sinatra microframework style of specifying actions:
5253@code{get}, @code{put}, @code{post}, @code{delete}.")
5254 (home-page "https://github.com/rest-client/rest-client")
6edabcb2
CB
5255 (license license:expat)))
5256
5d8fe6de
CB
5257(define-public ruby-rubocop
5258 (package
5259 (name "ruby-rubocop")
5260 (version "0.64.0")
5261 (source
5262 (origin
5263 (method url-fetch)
5264 (uri (rubygems-uri "rubocop" version))
5265 (sha256
5266 (base32
5267 "07shi6kncwhkvlh9ci9rgccrjsq4448hbic3yrakh2w65ppynvbj"))))
5268 (build-system ruby-build-system)
5269 (arguments
5270 '(;; No included tests
5271 #:tests? #f))
5272 (propagated-inputs
5273 `(("ruby-parser" ,ruby-parser)
5274 ("ruby-powerpack" ,ruby-powerpack)
5275 ("ruby-rainbow" ,ruby-rainbow)
5276 ("ruby-progressbar" ,ruby-progressbar)
5277 ("ruby-parallel" ,ruby-parallel)
5278 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
5279 ("ruby-unicode-display-width" ,ruby-unicode-display-width)))
5280 (synopsis "Ruby code style checking tool")
5281 (description
5282 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
5283the community-driven Ruby Style Guide.")
5284 (home-page "https://github.com/rubocop-hq/rubocop")
5285 (license license:expat)))
5286
6ef85256
BW
5287(define-public ruby-contest
5288 (package
5289 (name "ruby-contest")
5290 (version "0.1.3")
5291 (source
5292 (origin
5293 (method url-fetch)
5294 (uri (rubygems-uri "contest" version))
5295 (sha256
5296 (base32
5297 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
5298 (build-system ruby-build-system)
5299 (synopsis "Write declarative tests using nested contexts")
5300 (description
5301 "Contest allows writing declarative @code{Test::Unit} tests using nested
5302contexts without performance penalties.")
5303 (home-page "https://github.com/citrusbyte/contest")
5304 (license license:expat)))
5305
c4550f75
BW
5306(define-public ruby-creole
5307 (package
5308 (name "ruby-creole")
5309 (version "0.5.0")
5310 (source
5311 (origin
5312 (method url-fetch)
5313 (uri (rubygems-uri "creole" version))
5314 (sha256
5315 (base32
5316 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
5317 (build-system ruby-build-system)
5318 (native-inputs
5319 `(("ruby-bacon" ,ruby-bacon)))
5320 (synopsis "Creole markup language converter")
5321 (description
5322 "Creole is a lightweight markup language and this library for converting
5323creole to @code{HTML}.")
5324 (home-page "https://github.com/minad/creole")
5325 (license license:ruby)))
5326
6aaa815e
PP
5327(define-public ruby-docile
5328 (package
5329 (name "ruby-docile")
5330 (version "1.1.5")
5331 (source
5332 (origin
5333 (method url-fetch)
5334 (uri (rubygems-uri "docile" version))
5335 (sha256
5336 (base32
5337 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
5338 (build-system ruby-build-system)
5339 (arguments
5340 '(#:tests? #f)) ; needs github-markup, among others
5341 (synopsis "Ruby EDSL helper library")
5342 (description "Docile is a Ruby library that provides an interface for
5343creating embedded domain specific languages (EDSLs) that manipulate existing
5344Ruby classes.")
5345 (home-page "https://ms-ati.github.io/docile/")
5346 (license license:expat)))
5347
44514637 5348(define-public ruby-gherkin
62e4cc5a 5349 (package
44514637 5350 (name "ruby-gherkin")
aada5f6f 5351 (version "5.1.0")
62e4cc5a
PP
5352 (source
5353 (origin
5354 (method url-fetch)
44514637 5355 (uri (rubygems-uri "gherkin" version))
62e4cc5a
PP
5356 (sha256
5357 (base32
aada5f6f 5358 "1cgcdchwwdm10rsk44frjwqd4ihprhxjbm799nscqy2q1raqfj5s"))))
62e4cc5a
PP
5359 (build-system ruby-build-system)
5360 (native-inputs
5361 `(("bundler" ,bundler)))
5362 (arguments
5363 '(#:tests? #f)) ; needs simplecov, among others
5364 (synopsis "Gherkin parser for Ruby")
44514637 5365 (description "Gherkin is a parser and compiler for the Gherkin language.
aada5f6f
CB
5366It is intended be used by all Cucumber implementations to parse
5367@file{.feature} files.")
5368 (home-page "https://github.com/cucumber-attic/gherkin")
62e4cc5a 5369 (license license:expat)))
cd89fecb 5370
15b16c2c
CB
5371(define-public ruby-aruba
5372 (package
5373 (name "ruby-aruba")
5374 (version "0.14.8")
5375 (source
5376 (origin
5377 (method url-fetch)
5378 (uri (rubygems-uri "aruba" version))
5379 (sha256
5380 (base32
5381 "0zdd81l1lp0x78sxa6kkfqclpj5il3xl70nz05wqv2sfzzhqydxh"))))
5382 (build-system ruby-build-system)
5383 (arguments
5384 '(#:test-target "spec"
5385 #:phases
5386 (modify-phases %standard-phases
5387 (add-after 'unpack 'patch
5388 (lambda _
5389 (substitute* "spec/aruba/api_spec.rb"
5390 ;; This resolves some errors in the specs
5391 ;;
5392 ;; undefined method `parse' for Time:Class
5393 (("require 'spec_helper'")
5394 "require 'spec_helper'\nrequire 'time'"))
5395 ;; Avoid shebang issues in this spec file
5396 (substitute* "spec/aruba/matchers/command_spec.rb"
5397 (("/usr/bin/env bash")
5398 (which "bash")))
5399 #t))
5400 (add-before 'check 'remove-unnecessary-dependencies
5401 (lambda _
5402 (substitute* "Gemfile"
5403 ((".*byebug.*") "\n")
5404 ((".*pry.*") "\n")
5405 ((".*yaml.*") "\n")
5406 ((".*bcat.*") "\n")
5407 ((".*kramdown.*") "\n")
5408 ((".*rubocop.*") "\n")
5409 ((".*cucumber-pro.*") "\n")
5410 ((".*cucumber.*") "\n")
5411 ((".*license_finder.*") "\n")
5412 ((".*rake.*") "gem 'rake'\n")
5413 ((".*simplecov.*") "\n")
5414 ((".*relish.*") "\n"))
5415 (substitute* "spec/spec_helper.rb"
5416 ((".*simplecov.*") "")
5417 (("^SimpleCov.*") ""))
5418 (substitute* "aruba.gemspec"
5419 (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
5420 "spec.add_runtime_dependency 'cucumber'"))
5421 #t))
5422 (add-before 'check 'set-home
5423 (lambda _ (setenv "HOME" "/tmp") #t)))))
5424 (native-inputs
5425 `(("bundler" ,bundler)
5426 ("ruby-rspec" ,ruby-rspec)
5427 ("ruby-fuubar" ,ruby-fuubar)))
5428 (propagated-inputs
5429 `(("ruby-childprocess" ,ruby-childprocess)
5430 ("ruby-contracts" ,ruby-contracts)
5431 ("ruby-cucumber" ,ruby-cucumber)
5432 ("ruby-ffi" ,ruby-ffi)
5433 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
5434 ("ruby-thor" ,ruby-thor)
5435 ("ruby-yard" ,ruby-yard)))
5436 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
5437 (description
5438 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
5439command-line applications. It supports applications written in any
5440language.")
5441 (home-page "https://github.com/cucumber/aruba")
5442 (license license:expat)))
5443
5444;; A version of ruby-aruba without tests run so that circular dependencies can
5445;; be avoided.
5446(define ruby-aruba-without-tests
5447 (package
5448 (inherit ruby-aruba)
5449 (arguments '(#:tests? #f))
5450 (propagated-inputs
5451 `(("ruby-cucumber" ,ruby-cucumber-without-tests)
5452 ,@(alist-delete "ruby-cucumber"
5453 (package-propagated-inputs ruby-aruba))))
5454 (native-inputs '())))
5455
5456(define-public ruby-cucumber
5457 (package
5458 (name "ruby-cucumber")
5459 (version "3.1.2")
5460 (source
5461 (origin
5462 (method git-fetch)
5463 (uri (git-reference
5464 (url "https://github.com/cucumber/cucumber-ruby.git")
5465 (commit (string-append "v" version))))
5466 (file-name (git-file-name name version))
5467 (sha256
5468 (base32
5469 "0764wp2cjg60qa3l69q1dxda5g06a01n5w92szqbf89d2hgl47n3"))))
5470 (build-system ruby-build-system)
5471 (arguments
5472 '(#:test-target "spec"
5473 #:phases
5474 (modify-phases %standard-phases
5475 ;; Don't run or require rubocop, the code linting tool, as this is a
5476 ;; bit unnecessary.
5477 (add-after 'unpack 'dont-run-rubocop
5478 (lambda _
5479 (substitute* "Rakefile"
5480 ((".*rubocop/rake\\_task.*") "")
5481 ((".*RuboCop.*") ""))
5482 #t)))))
5483 (propagated-inputs
5484 `(("ruby-builder" ,ruby-builder)
5485 ("ruby-cucumber-core" ,ruby-cucumber-core)
5486 ("ruby-cucumber-wire" ,ruby-cucumber-wire)
5487 ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
5488 ("ruby-diff-lcs" ,ruby-diff-lcs)
5489 ("ruby-gherkin" ,ruby-gherkin)
5490 ("ruby-multi-json" ,ruby-multi-json)
5491 ("ruby-multi-test" ,ruby-multi-test)))
5492 (native-inputs
5493 `(("bundler" ,bundler)
5494 ;; Use a untested version of aruba, to avoid a circular dependency, as
5495 ;; ruby-aruba depends on ruby-cucumber.
5496 ("ruby-aruba", ruby-aruba-without-tests)
5497 ("ruby-rspec" ,ruby-rspec)
5498 ("ruby-pry" ,ruby-pry)
5499 ("ruby-nokogiri" ,ruby-nokogiri)))
5500 (synopsis "Describe automated tests in plain language")
5501 (description
5502 "Cucumber is a tool for running automated tests written in plain
5503language. It's designed to support a Behaviour Driven Development (BDD)
5504software development workflow.")
5505 (home-page "https://cucumber.io/")
5506 (license license:expat)))
5507
5508(define ruby-cucumber-without-tests
5509 (package (inherit ruby-cucumber)
5510 (arguments
5511 '(#:tests? #f))
5512 (native-inputs
5513 '())))
5514
cd89fecb
PP
5515(define-public ruby-cucumber-core
5516 (package
5517 (name "ruby-cucumber-core")
5cd047e8
CB
5518 ;; Stick to major version 3, until version 4 of Cucumber is released.
5519 (version "3.2.1")
cd89fecb
PP
5520 (source
5521 (origin
5522 (method url-fetch)
5523 (uri (rubygems-uri "cucumber-core" version))
5524 (sha256
5525 (base32
5cd047e8 5526 "1iavlh8hqj9lwljbpkw06259gdicbr1bdb6pbj5yy3n8szgr8k3c"))))
cd89fecb
PP
5527 (build-system ruby-build-system)
5528 (propagated-inputs
5cd047e8
CB
5529 `(("ruby-backports" ,ruby-backports)
5530 ("ruby-gherkin" ,ruby-gherkin)
5531 ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
cd89fecb
PP
5532 (native-inputs
5533 `(("bundler" ,bundler)))
5534 (arguments
5535 '(#:tests? #f)) ; needs simplecov, among others
5536 (synopsis "Core library for the Cucumber BDD app")
5537 (description "Cucumber is a tool for running automated tests
5538written in plain language. Because they're written in plain language,
5539they can be read by anyone on your team. Because they can be read by
5540anyone, you can use them to help improve communication, collaboration
5541and trust on your team.")
5542 (home-page "https://cucumber.io/")
5543 (license license:expat)))
212d563d 5544
fb1a8954
CB
5545(define-public ruby-cucumber-expressions
5546 (package
5547 (name "ruby-cucumber-expressions")
5548 (version "6.0.1")
5549 (source
5550 (origin
5551 (method url-fetch)
5552 (uri (rubygems-uri "cucumber-expressions" version))
5553 (sha256
5554 (base32
5555 "0zwmv6hznyz9vk81f5dhwcr9jhxx2vmbk8yyazayvllvhy0fkpdw"))))
5556 (build-system ruby-build-system)
5557 (arguments
5558 '(#:test-target "spec"))
5559 (native-inputs
5560 `(("bundler" ,bundler)
5561 ("ruby-rspec" ,ruby-rspec)
5562 ("ruby-simplecov" ,ruby-simplecov)))
5563 (synopsis "Simpler alternative to Regular Expressions")
5564 (description "Cucumber Expressions offer similar functionality to Regular
5565Expressions, with a syntax that is easier to read and write. Cucumber
5566Expressions are extensible with parameter types.")
5567 (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
5568 (license license:expat)))
5569
ce872770
CB
5570(define-public ruby-cucumber-wire
5571 (package
5572 (name "ruby-cucumber-wire")
5573 ;; Package version 0.0.1 initially, as this is what's needed by Cucumber
5574 ;; 3, and Cucumber 4 hasn't been released yet.
5575 (version "0.0.1")
5576 (source
5577 (origin
5578 (method url-fetch)
5579 (uri (rubygems-uri "cucumber-wire" version))
5580 (sha256
5581 (base32
5582 "09ymvqb0sbw2if1nxg8rcj33sf0va88ancq5nmp8g01dfwzwma2f"))))
5583 (build-system ruby-build-system)
5584 (arguments
5585 '(;; TODO: Currently, the tests can't be run as cucumber is required,
5586 ;; which would lead to a circular dependency.
5587 #:tests? #f
5588 #:test-target "default"
5589 #:phases
5590 (modify-phases %standard-phases
5591 (add-before 'check 'set-CUCUMBER_USE_RELEASED_GEMS
5592 (lambda _
5593 (setenv "CUCUMBER_USE_RELEASED_GEMS" "true")
5594 #t)))))
5595 (native-inputs
5596 `(("bundler" ,bundler)
5597 ("ruby-rspec" ,ruby-rspec)))
5598 (synopsis "Cucumber wire protocol plugin")
5599 (description
5600 "Cucumber's wire protocol allows step definitions to be implemented and
5601invoked on any platform.")
5602 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
5603 (license license:expat)))
5604
0ce8f344
CB
5605(define-public ruby-cucumber-tag-expressions
5606 (package
5607 (name "ruby-cucumber-tag-expressions")
5608 (version "1.1.1")
5609 (source
5610 (origin
5611 (method url-fetch)
5612 (uri (rubygems-uri "cucumber-tag_expressions" version))
5613 (sha256
5614 (base32
5615 "0cvmbljybws0qzjs1l67fvr9gqr005l8jk1ni5gcsis9pfmqh3vc"))))
5616 (build-system ruby-build-system)
5617 (arguments
5618 '(#:phases
5619 (modify-phases %standard-phases
5620 (replace 'check
5621 (lambda _
5622 (invoke "rspec")
5623 #t)))))
5624 (native-inputs
5625 `(("ruby-rspec" ,ruby-rspec)))
5626 (synopsis "Cucumber tag expressions for Ruby")
5627 (description
5628 "Cucumber tag expression parser for Ruby. A tag expression is an infix
5629boolean expression used by Cucumber.")
5630 (home-page "https://github.com/cucumber/tag-expressions-ruby")
5631 (license license:expat)))
5632
73a5aff7
CB
5633(define-public ruby-bindex
5634 (package
5635 (name "ruby-bindex")
5636 (version "0.5.0")
5637 (source
5638 (origin
5639 (method url-fetch)
5640 (uri (rubygems-uri "bindex" version))
5641 (sha256
5642 (base32
5643 "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
5644 (build-system ruby-build-system)
5645 (arguments
5646 '(#:test-target "default"))
5647 (native-inputs
5648 `(("bundler" ,bundler)
5649 ("ruby-rake-compiler" ,ruby-rake-compiler)))
5650 (synopsis "Provides access for bindings relating to Ruby exceptions")
5651 (description
5652 "@code{bindex} provides a way to access the bindings that relate to
5653exceptions in Ruby, providing more information about the context in which the
5654exception occurred.")
5655 (home-page "https://github.com/gsamokovarov/bindex")
5656 (license license:expat)))
5657
212d563d
PP
5658(define-public ruby-bio-logger
5659 (package
5660 (name "ruby-bio-logger")
5661 (version "1.0.1")
5662 (source
5663 (origin
5664 (method url-fetch)
5665 (uri (rubygems-uri "bio-logger" version))
5666 (sha256
5667 (base32
5668 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
5669 (build-system ruby-build-system)
5670 (arguments
5671 `(#:tests? #f)) ; rake errors, missing shoulda
5672 (propagated-inputs
5673 `(("ruby-log4r" ,ruby-log4r)))
5674 (synopsis "Log4r wrapper for Ruby")
5675 (description "Bio-logger is a wrapper around Log4r adding extra logging
5676features such as filtering and fine grained logging.")
5677 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
5678 (license license:expat)))
07f61cb2 5679
2db0f9c8
BW
5680(define-public ruby-yajl-ruby
5681 (package
5682 (name "ruby-yajl-ruby")
5683 (version "1.4.1")
5684 (source
5685 (origin
5686 (method url-fetch)
5687 (uri (rubygems-uri "yajl-ruby" version))
5688 (sha256
5689 (base32
5690 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
5691 (build-system ruby-build-system)
5692 (arguments
5693 '(#:test-target "spec"
5694 #:phases
5695 (modify-phases %standard-phases
5696 (add-before 'check 'patch-test-to-update-load-path
5697 (lambda _
5698 (substitute* "spec/parsing/large_number_spec.rb"
5699 (("require \"yajl\"")
5700 "$LOAD_PATH << 'lib'; require 'yajl'"))
5701 #t)))))
5702 (native-inputs
5703 `(("ruby-rake-compiler" ,ruby-rake-compiler)
5704 ("ruby-rspec" ,ruby-rspec)))
5705 (synopsis "Streaming JSON parsing and encoding library for Ruby")
5706 (description
5707 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
5708is compatible with the JSON gem, so yajl-ruby can act as a drop in
5709replacement.
5710
5711A modified copy of yajl is used, and included in the package.")
5712 (home-page "https://github.com/brianmario/yajl-ruby")
5713 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
5714 license:bsd-3)))) ; Included, modified copy of yajl
5715
07f61cb2 5716(define-public ruby-yard
6499893e
BW
5717 (package
5718 (name "ruby-yard")
50135ff8 5719 (version "0.9.16")
6499893e
BW
5720 (source
5721 (origin
5722 (method url-fetch)
5723 ;; Tests do not pass if we build from the distributed gem.
5724 (uri (string-append "https://github.com/lsegal/yard/archive/v"
3a3e3099 5725 version ".tar.gz"))
6499893e
BW
5726 (file-name (string-append name "-" version ".tar.gz"))
5727 (sha256
5728 (base32
50135ff8 5729 "0sqpbayy9sb406jh0zqg6qha1xds863qz9531dh6vp58hc00clfq"))))
6499893e
BW
5730 (build-system ruby-build-system)
5731 (arguments
5732 `(#:phases
5733 (modify-phases %standard-phases
5734 (replace 'check
5735 (lambda _
5736 ;; $HOME needs to be set to somewhere writeable for tests to run
5737 (setenv "HOME" "/tmp")
5738 ;; Run tests without using 'rake' to avoid dependencies.
9923d5a4 5739 (invoke "rspec"))))))
6499893e
BW
5740 (native-inputs
5741 `(("ruby-rspec" ,ruby-rspec)
5742 ("ruby-rack" ,ruby-rack)))
5743 (synopsis "Documentation generation tool for Ruby")
5744 (description
5745 "YARD is a documentation generation tool for the Ruby programming
07f61cb2
BW
5746language. It enables the user to generate consistent, usable documentation
5747that can be exported to a number of formats very easily, and also supports
5748extending for custom Ruby constructs such as custom class level definitions.")
2f3800e5 5749 (home-page "https://yardoc.org")
6499893e 5750 (license license:expat)))
2cbcd23a 5751
ad686ef3
RW
5752(define-public ruby-clap
5753 (package
5754 (name "ruby-clap")
5755 (version "1.0.0")
5756 (source (origin
5757 (method url-fetch)
5758 (uri (rubygems-uri "clap" version))
5759 (sha256
5760 (base32
5761 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
5762 (build-system ruby-build-system)
5763 ;; Clap needs cutest for running tests, but cutest needs clap.
5764 (arguments `(#:tests? #f))
5765 (synopsis "Command line argument parsing for simple applications")
5766 (description
5767 "Clap provides command line argument parsing features. It covers the
5768simple case of executing code based on the flags or parameters passed.")
5769 (home-page "https://github.com/djanowski/cutest")
0c80451e
RW
5770 (license license:expat)))
5771
5772(define-public ruby-cutest
5773 (package
5774 (name "ruby-cutest")
5775 (version "1.2.2")
5776 (source (origin
5777 (method url-fetch)
5778 (uri (rubygems-uri "cutest" version))
5779 (sha256
5780 (base32
5781 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
5782 (build-system ruby-build-system)
5783 (propagated-inputs
5784 `(("ruby-clap" ,ruby-clap)))
5785 (synopsis "Run tests in separate processes")
5786 (description
5787 "Cutest runs tests in separate processes to avoid shared state.")
5788 (home-page "https://github.com/djanowski/cutest")
ad686ef3
RW
5789 (license license:expat)))
5790
ac09beba
RW
5791(define-public ruby-pygmentize
5792 (package
5793 (name "ruby-pygmentize")
5794 (version "0.0.3")
5795 (source (origin
5796 (method url-fetch)
5797 (uri (rubygems-uri "pygmentize" version))
5798 (sha256
5799 (base32
5800 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
5801 (build-system ruby-build-system)
5802 (arguments
5803 `(#:phases
5804 (modify-phases %standard-phases
5805 (add-after 'unpack 'fix-pygmentize-path
5806 (lambda _
5807 (substitute* "lib/pygmentize.rb"
5808 (("\"/usr/bin/env python.*")
5809 (string-append "\"" (which "pygmentize") "\"\n")))
5810 #t))
5811 (add-after 'build 'do-not-use-vendor-directory
5812 (lambda _
5813 ;; Remove bundled pygments sources
5814 ;; FIXME: ruby-build-system does not support snippets.
5815 (delete-file-recursively "vendor")
5816 (substitute* "pygmentize.gemspec"
5817 (("\"vendor/\\*\\*/\\*\",") ""))
5818 #t)))))
5819 (inputs
5820 `(("pygments" ,python-pygments)))
5821 (native-inputs
5822 `(("ruby-cutest" ,ruby-cutest)
5823 ("ruby-nokogiri" ,ruby-nokogiri)))
5824 (synopsis "Thin Ruby wrapper around pygmentize")
5825 (description
5826 "Pygmentize provides a simple way to call pygmentize from within a Ruby
5827application.")
5828 (home-page "https://github.com/djanowski/pygmentize")
5829 (license license:expat)))
5830
2cbcd23a
DT
5831(define-public ruby-eventmachine
5832 (package
5833 (name "ruby-eventmachine")
c207fa5e 5834 (version "1.2.7")
2cbcd23a
DT
5835 (source
5836 (origin
5837 (method url-fetch)
5838 (uri (rubygems-uri "eventmachine" version))
5839 (sha256
5840 (base32
c207fa5e 5841 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
2cbcd23a
DT
5842 (build-system ruby-build-system)
5843 (arguments
c5d269fb 5844 '(#:tests? #f)) ; test suite tries to connect to google.com
2cbcd23a
DT
5845 (native-inputs
5846 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
5847 (synopsis "Single-threaded network event framework for Ruby")
5848 (description
5849 "EventMachine implements a single-threaded engine for arbitrary network
5850communications. EventMachine wraps all interactions with sockets, allowing
5851programs to concentrate on the implementation of network protocols. It can be
5852used to create both network servers and clients.")
24a26227
TGR
5853 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
5854 (home-page "https://github.com/eventmachine/eventmachine")
2cbcd23a 5855 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
7d3a1a2d 5856
e218b0c8
BW
5857(define-public ruby-ruby-engine
5858 (package
5859 (name "ruby-ruby-engine")
5860 (version "1.0.1")
5861 (source
5862 (origin
5863 (method url-fetch)
5864 (uri (rubygems-uri "ruby_engine" version))
5865 (sha256
5866 (base32
5867 "1d0sd4q50zkcqhr395wj1wpn2ql52r0fpwhzjfvi1bljml7k546v"))))
5868 (build-system ruby-build-system)
5869 (arguments
5870 `(#:phases
5871 (modify-phases %standard-phases
5872 (add-before 'check 'clean-up
5873 (lambda _
5874 (delete-file "Gemfile.lock")
5875 (substitute* "ruby_engine.gemspec"
5876 ;; Remove unnecessary imports that would entail further
5877 ;; dependencies.
5878 ((".*<rdoc.*") "")
5879 ((".*<rubygems-tasks.*") "")
5880 ;; Remove extraneous .gem file
5881 (("\\\"pkg/ruby_engine-1.0.0.gem\\\",") "")
5882 ;; Soften rake dependency
5883 (("%q<rake>.freeze, \\[\\\"~> 10.0\\\"\\]")
5884 "%q<rake>.freeze, [\">= 10.0\"]")
5885 ;; Soften the rspec dependency
5886 (("%q<rspec>.freeze, \\[\\\"~> 2.4\\\"\\]")
5887 "%q<rspec>.freeze, [\">= 2.4\"]"))
5888 (substitute* "Rakefile"
5889 (("require 'rubygems/tasks'") "")
5890 (("Gem::Tasks.new") ""))
5891 ;; Remove extraneous .gem file that otherwise gets installed.
5892 (delete-file "pkg/ruby_engine-1.0.0.gem")
5893 #t)))))
5894 (native-inputs
5895 `(("bundler" ,bundler)
5896 ("ruby-rake" ,ruby-rake)
5897 ("ruby-rspec" ,ruby-rspec)))
5898 (synopsis "Simplifies checking for Ruby implementation")
5899 (description
5900 "@code{ruby_engine} provides an RubyEngine class that can be used to
5901check which implementation of Ruby is in use. It can provide the interpreter
5902name and provides query methods such as @{RubyEngine.mri?}.")
5903 (home-page "https://github.com/janlelis/ruby_engine")
5904 (license license:expat)))
5905
8092e333
BW
5906(define-public ruby-turn
5907 (package
5908 (name "ruby-turn")
5909 (version "0.9.7")
5910 (source
5911 (origin
5912 (method url-fetch)
5913 (uri (rubygems-uri "turn" version))
5914 (sha256
5915 (base32
5916 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
5917 (build-system ruby-build-system)
5918 (arguments
5919 `(#:phases
5920 (modify-phases %standard-phases
5921 ;; Tests fail because turn changes its environment so can no longer
5922 ;; find test/unit. Instead simply test if the executable runs
5923 ;; without issue.
5924 (replace 'check
5925 (lambda _
9923d5a4 5926 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
8092e333
BW
5927 (propagated-inputs
5928 `(("ruby-ansi" ,ruby-ansi)
5929 ("ruby-minitest" ,ruby-minitest-4)))
5930 (synopsis "Alternate set of alternative runners for MiniTest")
5931 (description
5932 "TURN provides a set of alternative runners for MiniTest which are both
5933colorful and informative. TURN displays each test on a separate line with
5934failures being displayed immediately instead of at the end of the tests. Note
5935that TURN is no longer being maintained.")
5936 (home-page "http://rubygems.org/gems/turn")
5937 (license license:expat)))
5938
8279b1d3
CB
5939(define-public ruby-mimemagic
5940 (package
5941 (name "ruby-mimemagic")
5942 (version "0.3.2")
5943 (source
5944 (origin
5945 (method url-fetch)
5946 (uri (rubygems-uri "mimemagic" version))
5947 (sha256
5948 (base32
5949 "00ibc1mhvdfyfyl103xwb45621nwyqxf124cni5hyfhag0fn1c3q"))))
5950 (build-system ruby-build-system)
5951 (arguments
5952 '(#:phases
5953 (modify-phases %standard-phases
5954 ;; This phase breaks the tests, as it patches some of the test data.
5955 (delete 'patch-source-shebangs))))
5956 (native-inputs
5957 `(("ruby-bacon" ,ruby-bacon)))
5958 (synopsis "Ruby library for MIME detection by extension or content")
5959 (description
5960 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
5961extension or content, using the freedesktop.org.xml shared-mime-info
5962database.")
5963 (home-page "https://github.com/minad/mimemagic")
5964 (license license:expat)))
5965
32d1c06f
BW
5966(define-public ruby-mime-types-data
5967 (package
5968 (name "ruby-mime-types-data")
f49511db 5969 (version "3.2016.0521")
32d1c06f
BW
5970 (source
5971 (origin
5972 (method url-fetch)
5973 (uri (rubygems-uri "mime-types-data" version))
5974 (sha256
5975 (base32
f49511db 5976 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
32d1c06f
BW
5977 (build-system ruby-build-system)
5978 (native-inputs
5979 `(("ruby-hoe" ,ruby-hoe)))
5980 (synopsis "Registry for information about MIME media type definitions")
5981 (description
5982 "@code{mime-types-data} provides a registry for information about
5983Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
5984be used with the Ruby mime-types library or other software to determine
5985defined filename extensions for MIME types, or to use filename extensions to
5986look up the likely MIME type definitions.")
5987 (home-page "https://github.com/mime-types/mime-types-data/")
5988 (license license:expat)))
5989
d39b606c
BW
5990(define-public ruby-mime-types
5991 (package
5992 (name "ruby-mime-types")
803bcc81 5993 (version "3.1")
d39b606c
BW
5994 (source
5995 (origin
5996 (method url-fetch)
5997 (uri (rubygems-uri "mime-types" version))
5998 (sha256
5999 (base32
803bcc81 6000 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
d39b606c
BW
6001 (build-system ruby-build-system)
6002 (propagated-inputs
6003 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
6004 (native-inputs
6005 `(("ruby-hoe" ,ruby-hoe)
6006 ("ruby-fivemat" ,ruby-fivemat)
6007 ("ruby-minitest-focus" ,ruby-minitest-focus)
6008 ("ruby-minitest-rg" ,ruby-minitest-rg)
803bcc81
BW
6009 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
6010 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
d39b606c
BW
6011 (synopsis "Library and registry for MIME content type definitions")
6012 (description "The mime-types library provides a library and registry for
6013information about Multipurpose Internet Mail Extensions (MIME) content type
6014definitions. It can be used to determine defined filename extensions for MIME
6015types, or to use filename extensions to look up the likely MIME type
6016definitions.")
6017 (home-page "https://github.com/mime-types/ruby-mime-types")
6018 (license license:expat)))
6019
eb5e0bd9
BW
6020(define-public ruby-fivemat
6021 (package
6022 (name "ruby-fivemat")
c664ebcc 6023 (version "1.3.7")
eb5e0bd9
BW
6024 (source
6025 (origin
6026 (method url-fetch)
6027 (uri (rubygems-uri "fivemat" version))
6028 (sha256
6029 (base32
c664ebcc 6030 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
eb5e0bd9
BW
6031 (build-system ruby-build-system)
6032 (arguments
6033 `(#:tests? #f)) ; no tests
6034 (synopsis "Each test file given its own line of dots")
6035 (description
6036 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
6037its own line of dots during testing. It aims to provide test output that is
6038neither too verbose nor too minimal.")
6039 (home-page "https://github.com/tpope/fivemat")
6040 (license license:expat)))
6041
4fea500b
BW
6042(define-public ruby-sqlite3
6043 (package
6044 (name "ruby-sqlite3")
cba53c60 6045 (version "1.3.13")
4fea500b
BW
6046 (source
6047 (origin
6048 (method url-fetch)
6049 (uri (rubygems-uri "sqlite3" version))
6050 (sha256
6051 (base32
cba53c60 6052 "01ifzp8nwzqppda419c9wcvr8n82ysmisrs0hph9pdmv1lpa4f5i"))))
4fea500b
BW
6053 (build-system ruby-build-system)
6054 (arguments
6055 `(#:phases
6056 (modify-phases %standard-phases
54a93355
MB
6057 (add-before 'check 'adjust-failing-test
6058 (lambda _
6059 ;; XXX: This test fails with SQLite versions >= 3.21.
6060 ;; See <https://github.com/sparklemotion/sqlite3-ruby/issues/226>.
6061 (substitute* "test/test_integration_resultset.rb"
6062 (("\"integer\", \"text\"") "\"INTEGER\", \"text\""))
6063 #t))
4fea500b
BW
6064 (add-before 'check 'add-gemtest-file
6065 ;; This file exists in the repository but is not distributed.
9923d5a4 6066 (lambda _ (invoke "touch" ".gemtest"))))))
4fea500b
BW
6067 (inputs
6068 `(("sqlite" ,sqlite)))
6069 (native-inputs
6070 `(("ruby-hoe" ,ruby-hoe)
6071 ("ruby-rake-compiler" ,ruby-rake-compiler)
6072 ("ruby-mini-portile" ,ruby-mini-portile)))
6073 (synopsis "Interface with SQLite3 databases")
6074 (description
6075 "This module allows Ruby programs to interface with the SQLite3 database
6076engine.")
6077 (home-page
6078 "https://github.com/sparklemotion/sqlite3-ruby")
6079 (license license:bsd-3)))
6080
4dfa39cc
BW
6081(define-public ruby-shoulda-context
6082 (package
6083 (name "ruby-shoulda-context")
e7d1d472 6084 (version "1.2.2")
4dfa39cc
BW
6085 (source
6086 (origin
6087 (method url-fetch)
6088 (uri (rubygems-uri "shoulda-context" version))
6089 (sha256
6090 (base32
e7d1d472 6091 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
4dfa39cc
BW
6092 (build-system ruby-build-system)
6093 (arguments
6094 `(#:phases
6095 (modify-phases %standard-phases
6096 (replace 'check
6097 (lambda _
6098 ;; Do not run tests to avoid circular dependence with rails.
6099 ;; Instead just import the library to test.
9923d5a4 6100 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
4dfa39cc
BW
6101 (synopsis "Test::Unit context framework extracted from Shoulda")
6102 (description
6103 "@code{shoulda-context} is the context framework extracted from Shoulda.
6104Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
6105context, setup, and should blocks combine to produce natural test method
6106names.")
6107 (home-page "https://github.com/thoughtbot/shoulda-context")
6108 (license license:expat)))
6109
e4fea008
BW
6110(define-public ruby-shoulda-matchers
6111 (package
6112 (name "ruby-shoulda-matchers")
d1c1f368 6113 (version "3.1.2")
e4fea008
BW
6114 (source
6115 (origin
6116 (method url-fetch)
6117 (uri (rubygems-uri "shoulda-matchers" version))
6118 (sha256
6119 (base32
d1c1f368 6120 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
e4fea008
BW
6121 (build-system ruby-build-system)
6122 (arguments
6123 `(#:phases
6124 (modify-phases %standard-phases
e4fea008
BW
6125 (replace 'check
6126 (lambda _
6127 ;; Do not run tests to avoid circular dependence with rails. Instead
6128 ;; just import the library to test.
9923d5a4 6129 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
e4fea008
BW
6130 (propagated-inputs
6131 `(("ruby-activesupport" ,ruby-activesupport)))
6132 (synopsis "Collection of testing matchers extracted from Shoulda")
6133 (description
6134 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
6135test common Rails functionality. These tests would otherwise be much longer,
6136more complex, and error-prone.")
6137 (home-page "https://github.com/thoughtbot/shoulda-matchers")
6138 (license license:expat)))
6139
3885c58b
BW
6140(define-public ruby-shoulda-matchers-2
6141 (package
6142 (inherit ruby-shoulda-matchers)
6143 (version "2.8.0")
6144 (source (origin
6145 (method url-fetch)
6146 (uri (rubygems-uri "shoulda-matchers" version))
6147 (sha256
6148 (base32
6149 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
6150
6f390716
BW
6151(define-public ruby-shoulda
6152 (package
6153 (name "ruby-shoulda")
6154 (version "3.5.0")
6155 (source
6156 (origin
6157 (method url-fetch)
6158 (uri (rubygems-uri "shoulda" version))
6159 (sha256
6160 (base32
6161 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
6162 (build-system ruby-build-system)
6163 (arguments
6164 `(#:phases
6165 (modify-phases %standard-phases
6166 (replace 'check
6167 ;; Don't run tests to avoid circular dependence with rails. Instead
6168 ;; just import the library to test.
9923d5a4 6169 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
6f390716
BW
6170 (propagated-inputs
6171 `(("ruby-shoulda-context" ,ruby-shoulda-context)
6172 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
6173 (synopsis "Context framework and matchers for testing")
6174 (description
6175 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
6176@code{shoulda-matchers} providing tools for writing tests.")
6177 (home-page "https://github.com/thoughtbot/shoulda")
6178 (license license:expat)))
6179
3b44bcdf
BW
6180(define-public ruby-unf
6181 (package
6182 (name "ruby-unf")
6183 (version "0.1.4")
6184 (source
6185 (origin
6186 (method url-fetch)
6187 (uri (rubygems-uri "unf" version))
6188 (sha256
6189 (base32
6190 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
6191 (build-system ruby-build-system)
6192 (arguments
6193 `(#:phases
6194 (modify-phases %standard-phases
6195 (add-before 'check 'add-dependency-to-bundler
6196 (lambda _
6197 ;; test-unit is required but not provided by the bundler
6198 ;; environment. This is fixed in the upstream repository but fix
6199 ;; has not been released.
6200 (substitute* "Gemfile"
6201 (("^gemspec") "gem 'test-unit'\ngemspec"))
6202 #t)))))
6203 (propagated-inputs
6204 `(("ruby-unf-ext" ,ruby-unf-ext)))
6205 (native-inputs
6206 `(("ruby-shoulda" ,ruby-shoulda)
6207 ("bundler" ,bundler)
6208 ("ruby-test-unit" ,ruby-test-unit)))
6209 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
6210 (description
6211 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
6212support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
6213@code{java.text.Normalizer} on JRuby.")
6214 (home-page "https://github.com/knu/ruby-unf")
6215 (license license:bsd-2)))
6216
e32c99d2
CB
6217(define-public ruby-warden
6218 (package
6219 (name "ruby-warden")
6220 (version "1.2.8")
6221 (source
6222 (origin
6223 (method url-fetch)
6224 (uri (rubygems-uri "warden" version))
6225 (sha256
6226 (base32
6227 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
6228 (build-system ruby-build-system)
6229 (arguments
6230 '(#:tests? #f)) ; No included tests
6231 (propagated-inputs
6232 `(("ruby-rack" ,ruby-rack)))
6233 (synopsis "Rack middleware providing authentication")
6234 (description
6235 "Warden is a Rack-based middleware that provides a mechanism for
6236authentication in Ruby web applications.")
6237 (home-page "https://github.com/wardencommunity/warden")
6238 (license license:expat)))
6239
e42eecdb
CB
6240(define-public ruby-warden-oauth2
6241 (package
6242 (name "ruby-warden-oauth2")
6243 (version "0.0.1")
6244 (source
6245 (origin
6246 (method url-fetch)
6247 (uri (rubygems-uri "warden-oauth2" version))
6248 (sha256
6249 (base32
6250 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
6251 (build-system ruby-build-system)
6252 (arguments
6253 '(#:test-target "spec"
6254 #:phases
6255 (modify-phases %standard-phases
6256 (add-after 'unpack 'remove-unnecessary-dependencies
6257 (lambda _
6258 (substitute* "Gemfile"
6259 ;; All of these gems relate to development, and are unnecessary
6260 ;; when running the tests
6261 (("gem 'guard-bundler'") "")
6262 (("gem 'guard'") "")
6263 (("gem 'guard-rspec'") "")
6264 (("gem 'rb-fsevent'") "")
6265 (("gem 'pry'") "")
6266 (("gem 'growl'") ""))
6267 #t))
6268 ;; The test suite doesn't work with rspec@2, and this is incompatible
6269 ;; with the current version of Rake, so invoke Rspec directly
6270 (replace 'check
6271 (lambda* (#:key tests? #:allow-other-keys)
6272 (when tests?
6273 (invoke "bundle" "exec" "rspec"))
6274 #t)))))
6275 (propagated-inputs
6276 `(("ruby-warden" ,ruby-warden)))
6277 (native-inputs
6278 `(("bundler" ,bundler)
6279 ("ruby-rspec" ,ruby-rspec-2)
6280 ("ruby-rack-test" ,ruby-rack-test)))
6281 (synopsis "OAuth 2.0 strategies for Warden")
6282 (description
6283 "This library extends Warden to support OAuth 2.0 authorized API
6284requests.")
6285 (home-page "https://github.com/opperator/warden-oauth2")
6286 (license license:expat)))
6287
8c7ae384
CB
6288(define-public ruby-webmock-2
6289 (package
6290 (name "ruby-webmock")
6291 (version "2.3.2")
6292 (source
6293 (origin
6294 (method url-fetch)
6295 (uri (rubygems-uri "webmock" version))
6296 (sha256
6297 (base32
6298 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))
6299 (build-system ruby-build-system)
6300 (native-inputs
6301 `(("bundler" ,bundler)
6302 ("ruby-rspec" ,ruby-rspec)))
6303 (propagated-inputs
6304 `(("ruby-addressable" ,ruby-addressable)
6305 ("ruby-crack" ,ruby-crack)
6306 ("ruby-hashdiff" ,ruby-hashdiff)))
6307 (synopsis "Allows stubbing and setting expectations on HTTP requests")
6308 (description
6309 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
6310requests. This is useful when testing software.")
6311 (home-page "https://github.com/bblimke/webmock")
6312 (license license:expat)))
6313
d8c189ed
CB
6314(define-public ruby-unicode-display-width
6315 (package
6316 (name "ruby-unicode-display-width")
6317 (version "1.4.1")
6318 (source
6319 (origin
6320 (method url-fetch)
6321 (uri (rubygems-uri "unicode-display_width" version))
6322 (sha256
6323 (base32
6324 "0bq528fibi8s0jmxz0xzlgzggdq0x4fx46wfqz49478pv8gb2diq"))))
6325 (build-system ruby-build-system)
6326 (arguments
6327 '(;; Test data not included.
6328 #:tests? #f))
6329 (synopsis "Determine the monospace display width of Ruby strings")
6330 (description
6331 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
6332display width of strings in Ruby.")
6333 (home-page "https://github.com/janlelis/unicode-display_width")
6334 (license license:expat)))
6335
6120589f
CB
6336;; There is another gem called 'ruby-version' so we use an underscore in this
6337;; name
6338(define-public ruby_version
6339 (package
6340 (name "ruby_version")
6341 (version "1.0.1")
6342 (source
6343 (origin
6344 (method url-fetch)
6345 (uri (rubygems-uri "ruby_version" version))
6346 (sha256
6347 (base32
6348 "0854i1bjy56176anr05l5m0vc81nl53c7fyfg7sljj62m1d64dgj"))))
6349 (build-system ruby-build-system)
6350 (arguments
6351 '(#:phases
6352 (modify-phases %standard-phases
6353 (add-before 'check 'fix-dependencies
6354 (lambda _
6355 ;; Remove the Gemfile.lock, as we want to use Guix packages at
6356 ;; whatever versions.
6357 (delete-file "Gemfile.lock")
6358 ;; Remove the incldued gem file as it's unnecessary.
6359 (delete-file "pkg/ruby_version-1.0.0.gem")
6360 (substitute* "ruby_version.gemspec"
6361 ;; Don't require rdoc and rubygems-tasks as they're unnecessary
6362 ((".*rdoc.*") "\n")
6363 ((".*rubygems-tasks.*") "\n")
6364 ;; Accept any version of rake and rspec
6365 (("%q<rake.*") "%q<rake>)\n")
6366 (("%q<rspec.*") "%q<rspec>)\n"))
6367 ;; Remove the use of rubygems-tasks from the Rakefile, as it's
6368 ;; unnecessary.
6369 (substitute* "Rakefile"
6370 (("^require 'rubygems/tasks'") "")
6371 (("Gem::Tasks.new") ""))
6372 #t)))))
6373 (native-inputs
6374 `(("bundler" ,bundler)
6375 ("ruby-rspec" ,ruby-rspec)))
6376 (synopsis "Ruby library to help check the Ruby version")
6377 (description
6378 "@code{ruby_version} provides a @code{RubyVersion} module to simplify
6379checking for the right Ruby version in software.")
6380 (home-page "https://github.com/janlelis/ruby_version")
6381 (license license:expat)))
6382
a229acff
CB
6383(define-public ruby-websocket-driver
6384 (package
6385 (name "ruby-websocket-driver")
6386 (version "0.7.0")
6387 (source
6388 (origin
6389 (method url-fetch)
6390 (uri (rubygems-uri "websocket-driver" version))
6391 (sha256
6392 (base32
6393 "1551k3fs3kkb3ghqfj3n5lps0ikb9pyrdnzmvgfdxy8574n4g1dn"))))
6394 (build-system ruby-build-system)
6395 (arguments
6396 '(;; No included tests
6397 #:tests? #f))
6398 (propagated-inputs
6399 `(("ruby-websocket-extensions" ,ruby-websocket-extensions)))
6400 (synopsis "WebSocket protocol handler with pluggable I/O")
6401 (description
6402 "@code{websocket-driver} provides a complete implementation of the
6403WebSocket protocols that can be hooked up to any TCP library")
6404 (home-page "https://github.com/faye/websocket-driver-ruby")
6405 (license license:expat)))
6406
52b015a9
CB
6407(define-public ruby-websocket-extensions
6408 (package
6409 (name "ruby-websocket-extensions")
6410 (version "0.1.3")
6411 (source
6412 (origin
6413 (method url-fetch)
6414 (uri (rubygems-uri "websocket-extensions" version))
6415 (sha256
6416 (base32
6417 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
6418 (build-system ruby-build-system)
6419 (arguments
6420 '(;; No included tests
6421 #:tests? #f))
6422 (synopsis "Generic extension manager for WebSocket connections")
6423 (description
6424 "@code{websocket-extensions} provides a container for registering
6425extension plugins.")
6426 (home-page "https://github.com/faye/websocket-extensions-ruby")
6427 (license license:expat)))
6428
5799aadd
BW
6429(define-public ruby-domain-name
6430 (package
6431 (name "ruby-domain-name")
222999c9 6432 (version "0.5.20180417")
5799aadd
BW
6433 (source
6434 (origin
6435 (method url-fetch)
6436 (uri (rubygems-uri "domain_name" version))
6437 (sha256
6438 (base32
222999c9 6439 "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v"))))
5799aadd
BW
6440 (build-system ruby-build-system)
6441 (arguments
6442 `(#:phases
6443 (modify-phases %standard-phases
6444 (add-before 'check 'fix-versions
6445 (lambda _
6446 ;; Fix NameError that appears to already be fixed upstream.
6447 (substitute* "Rakefile"
6448 (("DomainName::VERSION")
6449 "Bundler::GemHelper.gemspec.version"))
6450 ;; Loosen unnecessarily strict test-unit version specification.
6451 (substitute* "domain_name.gemspec"
71596c3c 6452 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
5799aadd
BW
6453 #t)))))
6454 (propagated-inputs
6455 `(("ruby-unf" ,ruby-unf)))
6456 (native-inputs
6457 `(("ruby-shoulda" ,ruby-shoulda)
6458 ("bundler" ,bundler)
6459 ("ruby-test-unit" ,ruby-test-unit)))
6460 (synopsis "Domain name manipulation library")
6461 (description
6462 "@code{domain_name} is a Domain name manipulation library. It parses a
6463domain name ready for extracting the registered domain and TLD (Top Level
6464Domain). It can also be used for cookie domain validation based on the Public
6465Suffix List.")
6466 (home-page "https://github.com/knu/ruby-domain_name")
6467 (license license:bsd-2)))
6468
d114ceeb
BW
6469(define-public ruby-http-cookie
6470 (package
6471 (name "ruby-http-cookie")
2a2eb07d 6472 (version "1.0.3")
d114ceeb
BW
6473 (source
6474 (origin
6475 (method url-fetch)
6476 (uri (rubygems-uri "http-cookie" version))
6477 (sha256
6478 (base32
2a2eb07d 6479 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
d114ceeb
BW
6480 (build-system ruby-build-system)
6481 (arguments
6482 `(#:phases
6483 (modify-phases %standard-phases
6484 (add-before 'check 'add-dependency-to-bundler
6485 (lambda _
6486 ;; Fix NameError
6487 (substitute* "Rakefile"
6488 (("HTTP::Cookie::VERSION")
6489 "Bundler::GemHelper.gemspec.version"))
6490 #t)))))
6491 (propagated-inputs
6492 `(("ruby-domain-name" ,ruby-domain-name)))
6493 (native-inputs
6494 `(("rubysimplecov" ,ruby-simplecov)
6495 ("bundler" ,bundler)
6496 ("ruby-sqlite3" ,ruby-sqlite3)
6497 ("ruby-test-unit" ,ruby-test-unit)))
6498 (synopsis "Handle HTTP Cookies based on RFC 6265")
6499 (description
6500 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
6501RFC 6265. It has been designed with security, standards compliance and
6502compatibility in mind, to behave just the same as today's major web browsers.
6503It has built-in support for the legacy @code{cookies.txt} and
6504@code{cookies.sqlite} formats of Mozilla Firefox.")
6505 (home-page "https://github.com/sparklemotion/http-cookie")
6506 (license license:expat)))
6507
1c8e6fd3
CB
6508(define-public ruby-httpclient
6509 (package
6510 (name "ruby-httpclient")
6511 (version "2.8.3")
6512 (source
6513 (origin
6514 (method url-fetch)
6515 (uri (rubygems-uri "httpclient" version))
6516 (sha256
6517 (base32
6518 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
6519 (build-system ruby-build-system)
6520 (arguments
6521 '(;; TODO: Some tests currently fail
6522 ;; ------
6523 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
6524 ;; 2 omissions, 0 notifications
6525 ;; 91.866% passed
6526 ;; ------
6527 ;; 6.49 tests/s, 22.41 assertions/s
6528 #:tests? #f
6529 #:phases
6530 (modify-phases %standard-phases
6531 (replace 'check
6532 (lambda* (#:key tests? #:allow-other-keys)
6533 (if tests?
9923d5a4
TGR
6534 (invoke "ruby"
6535 "-Ilib"
6536 "test/runner.rb")
0076f5a9 6537 #t))))))
1c8e6fd3
CB
6538 (native-inputs
6539 `(("ruby-rack" ,ruby-rack)))
6540 (synopsis
6541 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
6542 (description
6543 "The @code{httpclient} ruby library provides functionality related to
6544HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
6545Cookie, multithreading and authentication (digest, NTLM) support.
6546
6547Also provided is a @command{httpclient} command, which can perform HTTP
6548requests either using arguments or with an interactive prompt.")
6549 (home-page "https://github.com/nahi/httpclient")
6550 (license license:ruby)))
6551
7d3a1a2d
BW
6552(define-public ruby-ansi
6553 (package
6554 (name "ruby-ansi")
6555 (version "1.5.0")
6556 (source
6557 (origin
6558 (method url-fetch)
6559 ;; Fetch from GitHub as the gem does not contain testing code.
6560 (uri (string-append "https://github.com/rubyworks/ansi/archive/"
6561 version ".tar.gz"))
6562 (file-name (string-append name "-" version ".tar.gz"))
6563 (sha256
6564 (base32
6565 "1zdip30hivyipi8hndhb457bhiz033awd00bgrsk5axjrwp6zhly"))))
6566 (build-system ruby-build-system)
6567 (arguments
6568 `(#:phases
6569 (modify-phases %standard-phases
6570 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
6571 ;; cycle ansi, qed, ansi. Instead simply test that the library can
6572 ;; be require'd.
6573 (replace 'check
6574 (lambda _
9923d5a4 6575 (invoke "ruby" "-Ilib" "-r" "ansi")))
0899352f
MB
6576 (add-before 'validate-runpath 'replace-broken-symlink
6577 (lambda* (#:key outputs #:allow-other-keys)
6578 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
6579 (file (string-append
6580 out "/lib/ruby/vendor_ruby/gems/ansi-"
6581 ,version "/lib/ansi.yml")))
0899352f
MB
6582 ;; XXX: This symlink is broken since ruby 2.4.
6583 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
6584 (delete-file file)
6585 (symlink "../.index" file)
6586 #t))))))
7d3a1a2d
BW
6587 (synopsis "ANSI escape code related libraries")
6588 (description
6589 "This package is a collection of ANSI escape code related libraries
6590enabling ANSI colorization and stylization of console output. Included in the
6591library are the @code{Code} module, which defines ANSI codes as constants and
6592methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
6593@code{ProgressBar}, and a @code{String} subclass. The library also includes a
6594@code{Terminal} module which provides information about the current output
6595device.")
2f3800e5 6596 (home-page "https://rubyworks.github.io/ansi")
7d3a1a2d 6597 (license license:bsd-2)))
7c033c46
BW
6598
6599(define-public ruby-systemu
6600 (package
6601 (name "ruby-systemu")
6602 (version "2.6.5")
6603 (source
6604 (origin
6605 (method url-fetch)
6606 (uri (rubygems-uri "systemu" version))
6607 (sha256
6608 (base32
6609 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
6610 (build-system ruby-build-system)
6611 (arguments
6612 `(#:phases
6613 (modify-phases %standard-phases
6614 (add-before 'check 'set-version
6615 (lambda _
6616 (setenv "VERSION" ,version)
6617 #t)))))
6618 (synopsis "Capture of stdout/stderr and handling of child processes")
6619 (description
6620 "Systemu can be used on any platform to return status, stdout, and stderr
6621of any command. Unlike other methods like @code{open3} and @code{popen4}
6622there is no danger of full pipes or threading issues hanging your process or
6623subprocess.")
6624 (home-page "https://github.com/ahoward/systemu")
6625 (license license:ruby)))
3d84a99e
BW
6626
6627(define-public ruby-bio-commandeer
6628 (package
6629 (name "ruby-bio-commandeer")
37b08547 6630 (version "0.4.0")
3d84a99e
BW
6631 (source
6632 (origin
6633 (method url-fetch)
6634 (uri (rubygems-uri "bio-commandeer" version))
6635 (sha256
6636 (base32
37b08547 6637 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
3d84a99e
BW
6638 (build-system ruby-build-system)
6639 (arguments
6640 `(#:phases
6641 (modify-phases %standard-phases
6642 (replace 'check
6643 ;; Run test without calling 'rake' so that jeweler is
6644 ;; not required as an input.
6645 (lambda _
9923d5a4 6646 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
3d84a99e
BW
6647 (propagated-inputs
6648 `(("ruby-bio-logger" ,ruby-bio-logger)
6649 ("ruby-systemu" ,ruby-systemu)))
6650 (native-inputs
6651 `(("bundler" ,bundler)
6652 ("ruby-rspec" ,ruby-rspec)))
6653 (synopsis "Simplified running of shell commands from within Ruby")
6654 (description
6655 "Bio-commandeer provides an opinionated method of running shell commands
6656from within Ruby. The advantage of bio-commandeer over other methods of
6657running external commands is that when something goes wrong, messages printed
6658to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
6659detail to ease debugging.")
7bf837fd 6660 (home-page "https://github.com/wwood/bioruby-commandeer")
3d84a99e 6661 (license license:expat)))
7c8131c7
BW
6662
6663(define-public ruby-rubytest
6664 (package
6665 (name "ruby-rubytest")
6666 (version "0.8.1")
6667 (source
6668 (origin
6669 (method url-fetch)
6670 (uri (rubygems-uri "rubytest" version))
6671 (sha256
6672 (base32
6673 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
6674 (build-system ruby-build-system)
6675 (arguments
6676 ;; Disable regular testing to break the cycle rubytest, qed, brass,
6677 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
6678 ;; simply test that the library can be require'd.
6679 `(#:phases
6680 (modify-phases %standard-phases
6681 (replace 'check
6682 (lambda _
9923d5a4 6683 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
7c8131c7
BW
6684 (propagated-inputs
6685 `(("ruby-ansi" ,ruby-ansi)))
6686 (synopsis "Universal test harness for Ruby")
6687 (description
6688 "Rubytest is a testing meta-framework for Ruby. It can handle any
6689compliant test framework and can run tests from multiple frameworks in a
6690single pass.")
2f3800e5 6691 (home-page "https://rubyworks.github.io/rubytest")
7c8131c7 6692 (license license:bsd-2)))
90fcedf2
BW
6693
6694(define-public ruby-brass
6695 (package
6696 (name "ruby-brass")
6697 (version "1.2.1")
6698 (source
6699 (origin
6700 (method url-fetch)
6701 (uri (rubygems-uri "brass" version))
6702 (sha256
6703 (base32
6704 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
6705 (build-system ruby-build-system)
6706 (arguments
6707 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
6708 ;; Instead simply test that the library can be require'd.
6709 `(#:phases
6710 (modify-phases %standard-phases
6711 (replace 'check
6712 (lambda _
9923d5a4 6713 (invoke "ruby" "-Ilib" "-r" "brass"))))))
90fcedf2
BW
6714 (synopsis "Basic foundational assertions framework")
6715 (description
6716 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
6717foundational assertions framework for other assertion and test frameworks to
6718make use of.")
2f3800e5 6719 (home-page "https://rubyworks.github.io/brass")
90fcedf2 6720 (license license:bsd-2)))
120fc74b
BW
6721
6722(define-public ruby-qed
6723 (package
6724 (name "ruby-qed")
6725 (version "2.9.2")
6726 (source
6727 (origin
6728 (method url-fetch)
6729 (uri (rubygems-uri "qed" version))
6730 (sha256
6731 (base32
6732 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
6733 (build-system ruby-build-system)
6734 (arguments
6735 ;; Disable testing to break the cycle qed, ansi, qed, among others.
6736 ;; Instead simply test that the executable runs using --copyright.
6737 `(#:phases
6738 (modify-phases %standard-phases
6739 (replace 'check
6740 (lambda _
9923d5a4 6741 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
120fc74b
BW
6742 (propagated-inputs
6743 `(("ruby-ansi" ,ruby-ansi)
6744 ("ruby-brass" ,ruby-brass)))
6745 (synopsis "Test framework utilizing literate programming techniques")
6746 (description
6747 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
6748@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
6749Development} (BDD) utilizing Literate Programming techniques. QED sits
6750somewhere between lower-level testing tools like @code{Test::Unit} and
6751requirement specifications systems like Cucumber.")
2f3800e5 6752 (home-page "https://rubyworks.github.io/qed")
120fc74b 6753 (license license:bsd-2)))
9273ee8f 6754
dbbe88d3
CB
6755(define-public ruby-que
6756 (package
6757 (name "ruby-que")
6758 (version "1.0.0.beta3")
6759 (source
6760 (origin
6761 (method url-fetch)
6762 (uri (rubygems-uri "que" version))
6763 (sha256
6764 (base32
6765 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
6766 (build-system ruby-build-system)
6767 (arguments
6768 '(#:tests? #f)) ; No included tests
6769 (synopsis "Job queue using PostgreSQL written in Ruby")
6770 (description
6771 "This package provides a job queue that uses PostgreSQL for storing jobs
6772and locking between worker processes.")
6773 (home-page "https://github.com/chanks/que")
6774 (license license:expat)))
6775
9273ee8f
BW
6776(define-public ruby-ae
6777 (package
6778 (name "ruby-ae")
6779 (version "1.8.2")
6780 (source
6781 (origin
6782 (method url-fetch)
6783 ;; Fetch from github so tests are included.
6784 (uri (string-append
6785 "https://github.com/rubyworks/ae/archive/"
6786 version ".tar.gz"))
6787 (file-name (string-append name "-" version ".tar.gz"))
6788 (sha256
6789 (base32
6790 "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl"))))
6791 (build-system ruby-build-system)
6792 (arguments
6793 `(#:phases
6794 (modify-phases %standard-phases
6795 (replace 'check
9923d5a4 6796 (lambda _ (invoke "qed")))
de6f6efd
MB
6797 (add-before 'validate-runpath 'replace-broken-symlink
6798 (lambda* (#:key outputs #:allow-other-keys)
6799 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
6800 (file (string-append
6801 out "/lib/ruby/vendor_ruby/gems/ae-"
6802 ,version "/lib/ae.yml")))
de6f6efd
MB
6803 ;; XXX: This symlink is broken since ruby 2.4.
6804 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
6805 (delete-file file)
6806 (symlink "../.index" file)
6807 #t))))))
9273ee8f
BW
6808 (propagated-inputs
6809 `(("ruby-ansi" ,ruby-ansi)))
6810 (native-inputs
6811 `(("ruby-qed" ,ruby-qed)))
6812 (synopsis "Assertions library")
6813 (description
6814 "Assertive Expressive (AE) is an assertions library specifically designed
6815for reuse by other test frameworks.")
2f3800e5 6816 (home-page "https://rubyworks.github.io/ae")
9273ee8f 6817 (license license:bsd-2)))
78bb471f
BW
6818
6819(define-public ruby-lemon
6820 (package
6821 (name "ruby-lemon")
6822 (version "0.9.1")
6823 (source
6824 (origin
6825 (method url-fetch)
6826 (uri (rubygems-uri "lemon" version))
6827 (sha256
6828 (base32
6829 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
6830 (build-system ruby-build-system)
6831 (arguments
6832 `(#:phases
6833 (modify-phases %standard-phases
9923d5a4 6834 (replace 'check (lambda _ (invoke "qed"))))))
78bb471f
BW
6835 (propagated-inputs
6836 `(("ruby-ae" ,ruby-ae)
6837 ("ruby-ansi" ,ruby-ansi)
6838 ("ruby-rubytest" ,ruby-rubytest)))
6839 (native-inputs
6840 `(("ruby-qed" ,ruby-qed)))
6841 (synopsis "Test framework correlating code structure and test unit")
6842 (description
6843 "Lemon is a unit testing framework that enforces highly formal
6844case-to-class and unit-to-method test construction. This enforcement can help
6845focus concern on individual units of behavior.")
2f3800e5 6846 (home-page "https://rubyworks.github.io/lemon")
78bb471f 6847 (license license:bsd-2)))
0832804e
BW
6848
6849(define-public ruby-rubytest-cli
6850 (package
6851 (name "ruby-rubytest-cli")
6852 (version "0.2.0")
6853 (source
6854 (origin
6855 (method url-fetch)
6856 (uri (rubygems-uri "rubytest-cli" version))
6857 (sha256
6858 (base32
6859 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
6860 (build-system ruby-build-system)
6861 (arguments
6862 `(#:tests? #f)) ; no tests
6863 (propagated-inputs
6864 `(("ruby-ansi" ,ruby-ansi)
6865 ("ruby-rubytest" ,ruby-rubytest)))
6866 (synopsis "Command-line interface for rubytest")
6867 (description
6868 "Rubytest CLI is a command-line interface for running tests for
6869Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
2f3800e5 6870 (home-page "https://rubyworks.github.io/rubytest-cli")
0832804e 6871 (license license:bsd-2)))
72ccbfe3
BW
6872
6873(define-public ruby-hashery
6874 (package
6875 (name "ruby-hashery")
cba96208 6876 (version "2.1.2")
72ccbfe3
BW
6877 (source
6878 (origin
6879 (method url-fetch)
6880 (uri (rubygems-uri "hashery" version))
6881 (sha256
6882 (base32
cba96208 6883 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
72ccbfe3
BW
6884 (build-system ruby-build-system)
6885 (arguments
6886 `(#:phases
6887 (modify-phases %standard-phases
6888 (replace 'check
6889 (lambda _
9923d5a4
TGR
6890 (invoke "qed")
6891 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
72ccbfe3
BW
6892 (native-inputs
6893 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
6894 ("ruby-qed" ,ruby-qed)
6895 ("ruby-lemon" ,ruby-lemon)))
6896 (synopsis "Hash-like classes with extra features")
6897 (description
6898 "The Hashery is a tight collection of @code{Hash}-like classes.
6899Included are the auto-sorting @code{Dictionary} class, the efficient
6900@code{LRUHash}, the flexible @code{OpenHash} and the convenient
6901@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
6902defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
6903standard @code{Hash} making it possible to subclass and augment to fit any
6904specific use case.")
2f3800e5 6905 (home-page "https://rubyworks.github.io/hashery")
72ccbfe3 6906 (license license:bsd-2)))
1f1d71e0
BW
6907
6908(define-public ruby-rc4
6909 (package
6910 (name "ruby-rc4")
6911 (version "0.1.5")
6912 (source
6913 (origin
6914 (method url-fetch)
6915 (uri (rubygems-uri "ruby-rc4" version))
6916 (sha256
6917 (base32
6918 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
6919 (build-system ruby-build-system)
6920 (arguments
6921 `(#:phases
6922 (modify-phases %standard-phases
6923 (replace 'check
6924 (lambda _
9923d5a4 6925 (invoke "rspec" "spec/rc4_spec.rb"))))))
1f1d71e0
BW
6926 (native-inputs
6927 `(("ruby-rspec" ,ruby-rspec-2)))
6928 (synopsis "Implementation of the RC4 algorithm")
6929 (description
6930 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
6931 (home-page "https://github.com/caiges/Ruby-RC4")
6932 (license license:expat)))
f3e085a8
BW
6933
6934(define-public ruby-afm
6935 (package
6936 (name "ruby-afm")
6937 (version "0.2.2")
6938 (source
6939 (origin
6940 (method url-fetch)
6941 (uri (rubygems-uri "afm" version))
6942 (sha256
6943 (base32
6944 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
6945 (build-system ruby-build-system)
6946 (native-inputs
6947 `(("bundler" ,bundler)))
6948 (synopsis "Read Adobe Font Metrics (afm) files")
6949 (description
6950 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
6951files and use the data therein.")
7bf837fd 6952 (home-page "https://github.com/halfbyte/afm")
f3e085a8 6953 (license license:expat)))
acb6be42
BW
6954
6955(define-public ruby-ascii85
6956 (package
6957 (name "ruby-ascii85")
5854082a 6958 (version "1.0.3")
acb6be42
BW
6959 (source
6960 (origin
6961 (method url-fetch)
6962 (uri (rubygems-uri "Ascii85" version))
6963 (sha256
6964 (base32
5854082a 6965 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
acb6be42
BW
6966 (build-system ruby-build-system)
6967 (native-inputs
6968 `(("bundler" ,bundler)))
6969 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
6970 (description
6971 "This library provides methods to encode and decode Ascii85
6972binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
6973@dfn{Portable Document Format} (PDF) file formats.")
6974 (home-page "https://github.com/datawraith/ascii85gem")
6975 (license license:expat)))
edf8caae
BW
6976
6977(define-public ruby-ttfunk
6978 (package
6979 (name "ruby-ttfunk")
afb7a3e8 6980 (version "1.5.1")
edf8caae
BW
6981 (source
6982 (origin
6983 (method url-fetch)
6984 ;; fetch from github as the gem does not contain testing code
6985 (uri (string-append
6986 "https://github.com/prawnpdf/ttfunk/archive/"
6987 version ".tar.gz"))
6988 (file-name (string-append name "-" version ".tar.gz"))
6989 (sha256
6990 (base32
afb7a3e8 6991 "1ymcn12n5iws401yz03zsj8rr653fdqq13czsrciq09phgh9jzc5"))))
edf8caae
BW
6992 (build-system ruby-build-system)
6993 (arguments
6994 `(#:test-target "spec"
6995 #:phases
6996 (modify-phases %standard-phases
afb7a3e8
JL
6997 (add-before 'build 'remove-ssh
6998 (lambda _
6999 ;; remove dependency on an ssh key pair that doesn't exist
7000 (substitute* "ttfunk.gemspec"
7001 (("spec.signing_key.*") ""))
7002 #t))
edf8caae
BW
7003 (add-before 'check 'remove-rubocop
7004 (lambda _
7005 ;; remove rubocop as a dependency as not needed for testing
7006 (substitute* "ttfunk.gemspec"
7007 (("spec.add_development_dependency\\('rubocop'.*") ""))
7008 (substitute* "Rakefile"
7009 (("require 'rubocop/rake_task'") "")
afb7a3e8 7010 (("RuboCop::RakeTask.new") ""))
edf8caae
BW
7011 #t)))))
7012 (native-inputs
7013 `(("ruby-rspec" ,ruby-rspec)
afb7a3e8 7014 ("ruby-yard" ,ruby-yard)
edf8caae
BW
7015 ("bundler" ,bundler)))
7016 (synopsis "Font metrics parser for the Prawn PDF generator")
7017 (description
7018 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
7019part of the Prawn PDF generator.")
7020 (home-page "https://github.com/prawnpdf/ttfunk")
7021 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
7022 ;; for details."
7023 (license (list license:gpl2 license:gpl3 license:ruby))))
cbdd428c 7024
9270298f
BW
7025(define-public ruby-puma
7026 (package
7027 (name "ruby-puma")
63755fcd 7028 (version "3.9.1")
9270298f
BW
7029 (source
7030 (origin
7031 (method url-fetch)
7032 ;; Fetch from GitHub because distributed gem does not contain tests.
7033 (uri (string-append "https://github.com/puma/puma/archive/v"
7034 version ".tar.gz"))
7035 (file-name (string-append name "-" version ".tar.gz"))
7036 (sha256
7037 (base32
63755fcd 7038 "03pifga841h17brh4vgia8i2ybh3cmsyg0dbybzdf6dq51wzcxdx"))))
9270298f
BW
7039 (build-system ruby-build-system)
7040 (arguments
63755fcd
BW
7041 `(#:tests? #f ; Tests require an out-dated version of minitest.
7042 #:phases
9270298f
BW
7043 (modify-phases %standard-phases
7044 (add-before 'build 'fix-gemspec
7045 (lambda _
7046 (substitute* "puma.gemspec"
7047 (("git ls-files") "find * |sort"))
7048 #t)))))
9270298f
BW
7049 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
7050 (description
7051 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
7052for Ruby/Rack applications. Puma is intended for use in both development and
7053production environments. In order to get the best throughput, it is highly
7054recommended that you use a Ruby implementation with real threads like Rubinius
7055or JRuby.")
7056 (home-page "http://puma.io")
7057 (license license:expat)))
7058
b0813490
BW
7059(define-public ruby-hoe-git
7060 (package
7061 (name "ruby-hoe-git")
7062 (version "1.6.0")
7063 (source
7064 (origin
7065 (method url-fetch)
7066 (uri (rubygems-uri "hoe-git" version))
7067 (sha256
7068 (base32
7069 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
7070 (build-system ruby-build-system)
7071 (propagated-inputs
7072 `(("ruby-hoe" ,ruby-hoe)
7073 ("git" ,git)))
7074 (synopsis "Hoe plugins for tighter Git integration")
7075 (description
7076 "This package provides a set of Hoe plugins for tighter Git integration.
7077It provides tasks to automate release tagging and pushing and changelog
7078generation.")
7bf837fd 7079 (home-page "https://github.com/jbarnette/hoe-git")
b0813490
BW
7080 (license license:expat)))
7081
cbdd428c
BW
7082(define-public ruby-sequel
7083 (package
7084 (name "ruby-sequel")
65a7f09c 7085 (version "4.49.0")
cbdd428c
BW
7086 (source
7087 (origin
7088 (method url-fetch)
7089 (uri (rubygems-uri "sequel" version))
7090 (sha256
7091 (base32
65a7f09c 7092 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
cbdd428c
BW
7093 (build-system ruby-build-system)
7094 (arguments
7095 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
7096 (synopsis "Database toolkit for Ruby")
7097 (description "Sequel provides thread safety, connection pooling and a
7098concise DSL for constructing SQL queries and table schemas. It includes a
7099comprehensive ORM layer for mapping records to Ruby objects and handling
7100associated records.")
7101 (home-page "http://sequel.jeremyevans.net")
7102 (license license:expat)))
3cc78097
BW
7103
7104(define-public ruby-timecop
7105 (package
7106 (name "ruby-timecop")
3d4a5eb5 7107 (version "0.9.1")
3cc78097
BW
7108 (source
7109 (origin
7110 (method url-fetch)
7111 (uri (rubygems-uri "timecop" version))
7112 (sha256
7113 (base32
3d4a5eb5 7114 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
3cc78097
BW
7115 (build-system ruby-build-system)
7116 (arguments
7117 `(#:phases
7118 (modify-phases %standard-phases
7119 (add-before 'check 'set-check-rubylib
7120 (lambda _
7121 ;; Set RUBYLIB so timecop tests finds its own lib.
7122 (setenv "RUBYLIB" "lib")
7123 #t)))))
7124 (native-inputs
7125 `(("bundler" ,bundler)
7126 ("ruby-minitest-rg" ,ruby-minitest-rg)
7127 ("ruby-mocha" ,ruby-mocha)
7128 ("ruby-activesupport" ,ruby-activesupport)))
66e07664 7129 (synopsis "Test mocks for time-dependent functions")
3cc78097
BW
7130 (description
7131 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
7132making it easier to test time-dependent code. It provides a unified method to
7133mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
7134call.")
7135 (home-page "https://github.com/travisjeffery/timecop")
7136 (license license:expat)))
7137
dae620b8
BW
7138(define-public ruby-concurrent
7139 (package
7140 (name "ruby-concurrent")
21aecec1 7141 (version "1.0.5")
dae620b8
BW
7142 (source
7143 (origin
7144 (method url-fetch)
7145 ;; Download from GitHub because the rubygems version does not contain
7146 ;; Rakefile.
7147 (uri (string-append
7148 "https://github.com/ruby-concurrency/concurrent-ruby/archive/v"
7149 version
7150 ".tar.gz"))
7151 (file-name (string-append name "-" version ".tar.gz"))
7152 (sha256
7153 (base32
21aecec1 7154 "0qhv0qzsby4iijgwa4s9r88zj8123pmyz1dwaqzdk57xgqll9pny"))
dae620b8
BW
7155 ;; Exclude failing test reported at
7156 ;; https://github.com/ruby-concurrency/concurrent-ruby/issues/534
402b03e6
LC
7157 (patches (search-patches "ruby-concurrent-ignore-broken-test.patch"
7158 "ruby-concurrent-test-arm.patch"))))
dae620b8
BW
7159 (build-system ruby-build-system)
7160 (arguments
7161 `(#:test-target "spec"
7162 #:phases
7163 (modify-phases %standard-phases
520e89eb 7164 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
dae620b8
BW
7165 (lambda _
7166 ;; Delete extra gemspec files so 'first-gemspec' chooses the
7167 ;; correct one.
7168 (delete-file "concurrent-ruby-edge.gemspec")
7169 (delete-file "concurrent-ruby-ext.gemspec")
7170 #t))
520e89eb
BW
7171 (add-before 'build 'replace-git-ls-files2
7172 (lambda _
7173 (substitute* "support/file_map.rb"
7174 (("git ls-files") "find * |sort"))
7175 #t))
dae620b8
BW
7176 (add-before 'check 'rake-compile
7177 ;; Fix the test error described at
7178 ;; https://github.com/ruby-concurrency/concurrent-ruby/pull/408
9923d5a4 7179 (lambda _ (invoke "rake" "compile")))
9019b37f
BW
7180 (add-before 'check 'remove-timecop-dependency
7181 ;; Remove timecop-dependent tests as having timecop as a depedency
7182 ;; causes circular depedencies.
7183 (lambda _
7184 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
7185 (delete-file "spec/concurrent/scheduled_task_spec.rb")
7186 #t)))))
dae620b8
BW
7187 (native-inputs
7188 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9019b37f 7189 ("ruby-rspec" ,ruby-rspec)))
dae620b8
BW
7190 (synopsis "Concurrency tools for Ruby")
7191 (description
7192 "This library provides modern concurrency tools including agents,
7193futures, promises, thread pools, actors, supervisors, and more. It is
7194inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
7195patterns.")
7196 (home-page "http://www.concurrent-ruby.com")
7197 (license license:expat)))
2de61e34
BW
7198
7199(define-public ruby-pkg-config
7200 (package
7201 (name "ruby-pkg-config")
884a80dd 7202 (version "1.2.5")
2de61e34
BW
7203 (source
7204 (origin
7205 (method url-fetch)
7206 (uri (rubygems-uri "pkg-config" version))
7207 (sha256
7208 (base32
884a80dd 7209 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
2de61e34
BW
7210 (build-system ruby-build-system)
7211 (arguments
7212 ;; Tests require extra files not included in the gem.
7213 `(#:tests? #f))
7214 (synopsis "Detect libraries for compiling Ruby native extensions")
7215 (description
7216 "@code{pkg-config} can be used in your extconf.rb to properly detect need
7217libraries for compiling Ruby native extensions.")
7218 (home-page "https://github.com/ruby-gnome2/pkg-config")
7219 (license license:lgpl2.0+)))
6689c636
MFM
7220
7221(define-public ruby-net-http-digest-auth
7222 (package
7223 (name "ruby-net-http-digest-auth")
ba074a85 7224 (version "1.4.1")
6689c636
MFM
7225 (source
7226 (origin
7227 (method url-fetch)
7228 (uri (rubygems-uri "net-http-digest_auth" version))
7229 (sha256
7230 (base32
ba074a85 7231 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
6689c636
MFM
7232 (build-system ruby-build-system)
7233 (native-inputs
7234 `(("ruby-hoe" ,ruby-hoe)))
7235 (synopsis "RFC 2617 HTTP digest authentication library")
7236 (description
7237 "This library implements HTTP's digest authentication scheme based on
7238RFC 2617. This enables the use of the digest authentication scheme instead
7239of the more insecure basic authentication scheme.")
7bf837fd 7240 (home-page "https://github.com/drbrain/net-http-digest_auth")
6689c636 7241 (license license:expat)))
06116573 7242
7243(define-public ruby-mail
7244 (package
7245 (name "ruby-mail")
04de0cb5 7246 (version "2.6.6")
06116573 7247 (source
7248 (origin
7249 (method url-fetch)
7250 (uri (rubygems-uri "mail" version))
7251 (sha256
7252 (base32
04de0cb5 7253 "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
06116573 7254 (build-system ruby-build-system)
7255 (propagated-inputs
7256 `(("ruby-mime-types" ,ruby-mime-types)))
7257 (arguments
7258 ;; Tests require extra gems not included in the Gemfile.
7259 ;; XXX: Try enabling this for the next version with mini_mime.
7260 `(#:tests? #f))
7261 (synopsis "Mail library for Ruby")
7262 (description
7263 "Mail is an internet library for Ruby that is designed to handle email
7264generation, parsing and sending. The purpose of this library is to provide
7265a single point of access to handle all email functions, including sending
7266and receiving emails. All network type actions are done through proxy
7267methods to @code{Net::SMTP}, @code{Net::POP3} etc.
7268
7269Mail has been designed with a very simple object oriented system that
7270really opens up the email messages you are parsing, if you know what you
7271are doing, you can fiddle with every last bit of your email directly.")
7272 (home-page "https://github.com/mikel/mail")
7273 (license license:expat)))
9b4c8e1b 7274
4d372cb9
CB
7275(define-public ruby-mathn
7276 (package
7277 (name "ruby-mathn")
7278 (version "0.1.0")
7279 (source
7280 (origin
7281 (method url-fetch)
7282 (uri (rubygems-uri "mathn" version))
7283 (sha256
7284 (base32
7285 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
7286 (build-system ruby-build-system)
7287 (native-inputs
7288 `(("bundler" ,bundler)
7289 ("ruby-rake-compiler" ,ruby-rake-compiler)))
7290 (synopsis "Extends math operations for increased precision")
7291 (description
7292 "This gem makes mathematical operations more precise in Ruby and
7293integrates other mathematical standard libraries. Prior to Ruby 2.5,
7294@code{mathn} was part of the Ruby standard library.")
7295 (home-page "https://github.com/ruby/mathn")
7296 (license license:bsd-2)))
7297
9b4c8e1b
BW
7298(define-public ruby-code-statistics
7299 (package
7300 (name "ruby-code-statistics")
7301 (version "0.2.13")
7302 (source
7303 (origin
7304 (method url-fetch)
7305 (uri (rubygems-uri "code_statistics" version))
7306 (sha256
7307 (base32
7308 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
7309 (build-system ruby-build-system)
7310 (arguments
7311 `(#:tests? #f)) ; Not all test code is included in gem.
7312 (synopsis "Port of the rails 'rake stats' method")
7313 (description
7314 "This gem is a port of the rails 'rake stats' method so it can be made
7315more robust and work for non rails projects.")
7316 (home-page "http://github.com/danmayer/code_statistics")
7317 (license license:expat)))
f90c25c1
CL
7318
7319(define-public ruby-rubypants
7320 (package
7321 (name "ruby-rubypants")
7322 (version "0.6.0")
7323 (source (origin
7324 (method url-fetch)
7325 (uri (rubygems-uri "rubypants" version))
7326 (sha256
7327 (base32
7328 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
7329 (build-system ruby-build-system)
7330 (arguments
7331 '(#:tests? #f)) ; need Codecov
7332 (synopsis "Port of the smart-quotes library SmartyPants")
7333 (description
7334 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
7335original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
7336and BBEdit that easily translates plain ASCII punctuation characters into
7337smart typographic punctuation HTML entities.")
7338 (home-page "https://github.com/jmcnevin/rubypants")
7339 (license license:bsd-2)))
beb34835
CL
7340
7341(define-public ruby-org-ruby
7342 (package
7343 (name "ruby-org-ruby")
7344 (version "0.9.12")
7345 (source (origin
7346 (method url-fetch)
7347 (uri (rubygems-uri "org-ruby" version))
7348 (sha256
7349 (base32
7350 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
7351 (build-system ruby-build-system)
7352 (arguments
7353 '(#:tests? #f)) ; no rakefile
7354 (propagated-inputs
7355 `(("ruby-rubypants" ,ruby-rubypants)))
7356 (synopsis "Org-mode parser written in Ruby")
7357 (description
7358 "Org-ruby is an org-mode parser written in Ruby. The most significant
7359thing this library does today is convert org-mode files to HTML or Textile or
7360Markdown.")
7361 (home-page "https://github.com/wallyqs/org-ruby")
7362 (license license:expat)))
670ee20a
BW
7363
7364(define-public ruby-rake
7365 (package
7366 (name "ruby-rake")
d6fb32b8 7367 (version "12.3.1")
670ee20a
BW
7368 (source
7369 (origin
7370 (method url-fetch)
7371 (uri (rubygems-uri "rake" version))
7372 (sha256
7373 (base32
d6fb32b8 7374 "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg"))))
670ee20a
BW
7375 (build-system ruby-build-system)
7376 (native-inputs
7377 `(("bundler" ,bundler)))
7378 (synopsis "Rake is a Make-like program implemented in Ruby")
7379 (description
7380 "Rake is a Make-like program where tasks and dependencies are specified
7381in standard Ruby syntax.")
7382 (home-page "https://github.com/ruby/rake")
7383 (license license:expat)))
45498f51 7384
1f10e28d 7385(define-public ruby-childprocess-0.6
45498f51
DM
7386 (package
7387 (name "ruby-childprocess")
1f10e28d 7388 (version "0.6.3")
45498f51
DM
7389 (source
7390 (origin
7391 (method url-fetch)
7392 (uri (rubygems-uri "childprocess" version))
7393 (sha256
7394 (base32
1f10e28d 7395 "1p3f43scdzx9zxmy2kw5zsc3az6v46nq4brwcxmnscjy4w4racbv"))))
45498f51
DM
7396 (build-system ruby-build-system)
7397 (arguments
7398 `(#:tests? #f))
7399 (native-inputs
7400 `(("bundler" ,bundler)
7401 ("ruby-rspec" ,ruby-rspec)))
7402 (propagated-inputs
7403 `(("ruby-ffi" ,ruby-ffi)))
7404 (synopsis "Control external programs running in the background, in Ruby")
7405 (description "@code{childprocess} provides a gem to control external
7406programs running in the background, in Ruby.")
7407 (home-page "http://github.com/enkessler/childprocess")
7408 (license license:expat)))
1f10e28d
DM
7409
7410(define-public ruby-childprocess
7411 (package
7412 (inherit ruby-childprocess-0.6)
7413 (name "ruby-childprocess")
7414 (version "0.9.0")
7415 (source
7416 (origin
7417 (method url-fetch)
7418 (uri (rubygems-uri "childprocess" version))
7419 (sha256
7420 (base32
7421 "0a61922kmvcxyj5l70fycapr87gz1dzzlkfpq85rfqk5vdh3d28p"))))))
0d16905b
JL
7422
7423(define-public ruby-public-suffix
7424 (package
7425 (name "ruby-public-suffix")
7426 (version "3.0.3")
7427 (source (origin
7428 (method url-fetch)
7429 (uri (rubygems-uri "public_suffix" version))
7430 (sha256
7431 (base32
7432 "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l"))))
7433 (build-system ruby-build-system)
7434 (arguments
1f4fc125
CB
7435 '(#:phases
7436 (modify-phases %standard-phases
7437 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
7438 ;; including it as an input can lead to circular dependencies.
7439 (add-after 'unpack 'remove-rubocop-from-Rakefile
7440 (lambda _
7441 (substitute* "Rakefile"
7442 (("require \"rubocop/rake\\_task\"") "")
7443 (("RuboCop::RakeTask\\.new") ""))
7444 #t)))))
7445 (native-inputs
7446 `(("bundler" ,bundler)
7447 ("ruby-yard" ,ruby-yard)
7448 ("ruby-mocha" ,ruby-mocha)
7449 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
0d16905b
JL
7450 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
7451 (synopsis "Domain name parser")
7452 (description "The gem @code{public_suffix} is a domain name parser,
7453written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
7454is one under which Internet users can (or historically could) directly
7455register names. Some examples of public suffixes are @code{.com},
7456@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
7457all known public suffixes.")
7458 (license license:expat)))
6f2c4efb
JL
7459
7460(define-public ruby-addressable
7461 (package
7462 (name "ruby-addressable")
0a794b30 7463 (version "2.6.0")
6f2c4efb
JL
7464 (source (origin
7465 (method url-fetch)
7466 (uri (rubygems-uri "addressable" version))
7467 (sha256
7468 (base32
0a794b30 7469 "0bcm2hchn897xjhqj9zzsxf3n9xhddymj4lsclz508f4vw3av46l"))))
6f2c4efb 7470 (build-system ruby-build-system)
0a794b30
CB
7471 (arguments
7472 '(#:test-target "spec"
7473 #:phases
7474 (modify-phases %standard-phases
7475 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
7476 (lambda _
7477 (substitute* "Gemfile"
7478 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
7479 ((".*launchy.*") "")
7480 ((".*rake.*") "gem 'rake'\n")
7481 ((".*redcarpet.*") ""))
7482 #t))
7483 (add-before 'check 'delete-network-dependent-test
7484 (lambda _
7485 (delete-file "spec/addressable/net_http_compat_spec.rb")
7486 #t)))))
7487 (native-inputs
7488 `(("ruby-rspec" ,ruby-rspec)
7489 ("bundler" ,bundler)
7490 ("ruby-idn-ruby" ,ruby-idn-ruby)
7491 ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
7492 ("ruby-rspec-its", ruby-rspec-its)
7493 ("ruby-yard" ,ruby-yard)
7494 ("ruby-simplecov" ,ruby-simplecov)))
6f2c4efb
JL
7495 (propagated-inputs
7496 `(("ruby-public-suffix" ,ruby-public-suffix)))
6f2c4efb
JL
7497 (home-page "https://github.com/sporkmonger/addressable")
7498 (synopsis "Alternative URI implementation")
7499 (description "Addressable is a replacement for the URI implementation that
7500is part of Ruby's standard library. It more closely conforms to RFC 3986,
7501RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
7502 (license license:asl2.0)))
9c7f15c0
JL
7503
7504(define-public ruby-colorator
7505 (package
7506 (name "ruby-colorator")
7507 (version "1.1.0")
7508 (source (origin
7509 (method url-fetch)
7510 (uri (rubygems-uri "colorator" version))
7511 (sha256
7512 (base32
7513 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
7514 (build-system ruby-build-system)
7515 (arguments
7516 ;; No test target
7517 `(#:tests? #f))
7518 (home-page "http://octopress.org/colorator/")
7519 (synopsis "Terminal color library")
7520 (description "Colorator is a Ruby gem that helps you colorize your text
7521for the terminal.")
7522 (license license:expat)))
78b9c291
JL
7523
7524(define-public ruby-command-line-reporter
7525 (package
7526 (name "ruby-command-line-reporter")
7527 (version "4.0.0")
7528 (source (origin
7529 (method url-fetch)
7530 (uri (rubygems-uri "command_line_reporter" version))
7531 (sha256
7532 (base32
7533 "1qma35xrb772whxwy1rs9bicb9d6lvz0s2dd2dnn4fr6zcbcxc0a"))))
7534 (build-system ruby-build-system)
7535 (arguments
7536 ;; No Rakefile
7537 `(#:tests? #f
7538 #:phases
7539 (modify-phases %standard-phases
7540 (add-before 'build 'fix-dependencies
7541 (lambda _
7542 (substitute* ".gemspec"
7543 ;; colored is unmaintained
7544 (("colored") "colorator")
7545 ;; colorator version
7546 (("= 1.2") "= 1.1"))
7547 #t)))))
7548 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
7549 (home-page "https://github.com/wbailey/command_line_reporter")
7550 (synopsis "Report production while executing Ruby scripts")
7551 (description "This gem provides a DSL that makes it easy to write reports
7552of various types in ruby. It eliminates the need to litter your source with
7553puts statements, instead providing a more readable, expressive interface to
7554your application.")
7555 (license license:asl2.0)))
f22c0387
JL
7556
7557(define-public ruby-command-line-reporter-3
7558 (package
7559 (inherit ruby-command-line-reporter)
7560 (version "3.3.6")
7561 (source (origin
7562 (method url-fetch)
7563 (uri (rubygems-uri "command_line_reporter" version))
7564 (sha256
7565 (base32
7566 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
6bba8ecf
JL
7567
7568(define-public ruby-rdoc
7569 (package
7570 (name "ruby-rdoc")
7571 (version "6.0.4")
7572 (source
7573 (origin
7574 (method url-fetch)
7575 (uri (rubygems-uri "rdoc" version))
7576 (sha256
7577 (base32
7578 "0anv42cqcdc6g4n386mrva7mgav5i0c2ry3yzvzzc6z6hymkmcr7"))))
7579 (build-system ruby-build-system)
7580 (native-inputs
7581 `(("bundler" ,bundler)))
7582 (home-page "https://ruby.github.io/rdoc/")
7583 (synopsis "HTML and command-line documentation utility")
7584 (description "RDoc produces HTML and command-line documentation for Ruby
7585projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
7586documentation from the command-line.")
7587 (license license:gpl2+)))
18077ffc
JL
7588
7589(define-public ruby-sass-listen
7590 (package
7591 (name "ruby-sass-listen")
7592 (version "4.0.0")
7593 (source (origin
7594 (method url-fetch)
7595 (uri (rubygems-uri "sass-listen" version))
7596 (sha256
7597 (base32
7598 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
7599 (build-system ruby-build-system)
7600 (arguments
7601 ;; No test target
7602 `(#:tests? #f))
7603 (propagated-inputs
7604 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
7605 ("ruby-rb-inotify" ,ruby-rb-inotify)))
7606 (home-page "https://github.com/sass/listen")
7607 (synopsis "File modification notification library")
7608 (description "The Listen gem listens to file modifications and notifies you
7609about the changes.")
7610 (license license:expat)))
0c8eedc1
JL
7611
7612(define-public ruby-terminfo
7613 (package
7614 (name "ruby-terminfo")
7615 (version "0.1.1")
7616 (source
7617 (origin
7618 (method url-fetch)
7619 (uri (rubygems-uri "ruby-terminfo" version))
7620 (sha256
7621 (base32
7622 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
7623 (build-system ruby-build-system)
7624 (arguments
7625 `(#:test-target "test"
7626 ;; Rakefile requires old packages and would need modification to
7627 ;; work with current software.
7628 #:tests? #f))
7629 (inputs
7630 `(("ncurses" ,ncurses)))
7631 (native-inputs
7632 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
7633 ("ruby-rdoc" ,ruby-rdoc)))
7634 (home-page "http://www.a-k-r.org/ruby-terminfo/")
7635 (synopsis "Terminfo binding for Ruby")
7636 (description "Ruby-terminfo provides terminfo binding for Ruby.")
7637 (license license:bsd-3)))
ddc3a667
JL
7638
7639(define-public ruby-diffy
7640 (package
7641 (name "ruby-diffy")
7642 (version "3.2.1")
7643 (source
7644 (origin
7645 (method url-fetch)
7646 (uri (rubygems-uri "diffy" version))
7647 (sha256
7648 (base32
7649 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
7650 (build-system ruby-build-system)
7651 (arguments
7652 ;; No tests
7653 `(#:tests? #f))
7654 (native-inputs
7655 `(("ruby-rspec" ,ruby-rspec)))
7656 (home-page "https://github.com/samg/diffy")
7657 (synopsis "Convenient diffing in ruby")
7658 (description "Diffy provides a convenient way to generate a diff from two
7659strings or files.")
7660 (license license:expat)))
6456beef
JL
7661
7662(define-public ruby-sass-spec
7663 (package
7664 (name "ruby-sass-spec")
7665 (version "3.5.4")
11df8321
TGR
7666 (source
7667 (origin
7668 (method git-fetch)
7669 (uri (git-reference
7670 (url "https://github.com/sass/sass-spec.git")
7671 (commit (string-append "v" version))))
7672 (file-name (git-file-name name version))
7673 (sha256
7674 (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
6456beef
JL
7675 (build-system ruby-build-system)
7676 (propagated-inputs
7677 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
7678 ("ruby-diffy" ,ruby-diffy)
7679 ("ruby-terminfo" ,ruby-terminfo)))
7680 (arguments
2c7cb711
CB
7681 `(;; This package contains tests for a sass implementation, and the to
7682 ;; avoid any circular dependencies, the tests are not run here
7683 #:tests? #f
7684 #:phases
7685 (modify-phases %standard-phases
7686 (add-after 'unpack 'patch-test
7687 (lambda _
7688 (delete-file "spec/values/colors/alpha_hex-3.5/error")
7689 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
7690 (("string") "color")))))))
6456beef
JL
7691 (home-page "https://github.com/sass/sass-spec")
7692 (synopsis "Test suite for Sass")
7693 (description "Sass Spec is a test suite for Sass. Test cases are all in
7694the @file{spec} directory.")
7695 (license license:expat)))
f00f4492
JL
7696
7697(define-public ruby-sass
7698 (package
7699 (name "ruby-sass")
11ff2adc 7700 (version "3.6.0")
f00f4492
JL
7701 (source (origin
7702 (method url-fetch)
7703 (uri (rubygems-uri "sass" version))
7704 (sha256
7705 (base32
11ff2adc 7706 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
f00f4492
JL
7707 (build-system ruby-build-system)
7708 (propagated-inputs
7709 `(("ruby-sass-listen" ,ruby-sass-listen)))
7710 (native-inputs
11ff2adc
CB
7711 `(("ruby-sass-spec" ,ruby-sass-spec)
7712 ("ruby-mathn" ,ruby-mathn)))
f00f4492
JL
7713 (home-page "http://sass-lang.com/")
7714 (synopsis "CSS extension language")
7715 (description "Sass is a CSS extension language. It extends CSS with
7716features that don't exist yet like variables, nesting, mixins and inheritance.")
7717 (license license:expat)))
5e242cb4 7718
9efc888d
CB
7719(define-public ruby-sassc
7720 (package
7721 (name "ruby-sassc")
7722 (version "2.0.1")
7723 (source
7724 (origin
7725 (method url-fetch)
7726 (uri (rubygems-uri "sassc" version))
7727 (sha256
7728 (base32
7729 "1sr4825rlwsrl7xrsm0sgalcpf5zgp4i56dbi3qxfa9lhs8r6zh4"))))
7730 (build-system ruby-build-system)
7731 (arguments
7732 '(#:phases
7733 (modify-phases %standard-phases
7734 ;; TODO: This would be better as a snippet, but the ruby-build-system
7735 ;; doesn't seem to support that
7736 (add-after 'unpack 'remove-libsass
7737 (lambda _
7738 (delete-file-recursively "ext")
7739 #t))
7740 (add-after 'unpack 'dont-check-the-libsass-version
7741 (lambda _
7742 (substitute* "test/native_test.rb"
7743 (("assert_equal.*Native\\.version") ""))
7744 #t))
7745 (add-after 'unpack 'remove-git-from-gemspec
7746 (lambda _
7747 (substitute* "sassc.gemspec"
7748 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`")
7749 (("`git submodule --quiet foreach pwd`") "''"))
7750 #t))
7751 (add-after 'unpack 'remove-extensions-from-gemspec
7752 (lambda _
7753 (substitute* "sassc.gemspec"
7754 (("\\[\"ext/Rakefile\"\\]") "[]"))
7755 #t))
7756 (add-after 'unpack 'fix-Rakefile
7757 (lambda _
7758 (substitute* "Rakefile"
7759 (("test: 'libsass:compile'") ":test"))
7760 #t))
7761 (add-after 'unpack 'remove-unnecessary-dependencies
7762 (lambda _
7763 (substitute* "test/test_helper.rb"
7764 (("require \"pry\"") ""))
7765 #t))
7766 (add-before 'build 'patch-native.rb
7767 (lambda* (#:key inputs #:allow-other-keys)
7768 (substitute* "lib/sassc/native.rb"
7769 ((".*gem_root = spec.gem_dir") "")
7770 (("ffi_lib .*\n")
7771 (string-append
7772 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))
7773 #t))
7774 ;; The gemspec still references the libsass files, so just keep the
7775 ;; one in the gem.
7776 (delete 'extract-gemspec))))
7777 (propagated-inputs
7778 `(("ruby-ffi" ,ruby-ffi)
7779 ("ruby-rake" ,ruby-rake)))
7780 (inputs
7781 `(("libsass" ,libsass)))
7782 (native-inputs
7783 `(("bundler" ,bundler)
7784 ("ruby-minitest-around" ,ruby-minitest-around)
7785 ("ruby-test-construct" ,ruby-test-construct)))
7786 (synopsis "Use libsss from Ruby")
7787 (description
7788 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
7789bindings to the libsass library. This enables rendering
7790@acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
7791 (home-page "https://github.com/sass/sassc-ruby")
7792 (license license:expat)))
7793
5e242cb4
JL
7794(define-public ruby-jekyll-sass-converter
7795 (package
7796 (name "ruby-jekyll-sass-converter")
7797 (version "1.5.2")
7798 (source (origin
7799 (method url-fetch)
7800 (uri (rubygems-uri "jekyll-sass-converter" version))
7801 (sha256
7802 (base32
7803 "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk"))))
7804 (build-system ruby-build-system)
7805 (propagated-inputs
7806 `(("ruby-sass" ,ruby-sass)))
7807 (arguments
7808 ;; No rakefile
7809 `(#:tests? #f))
7810 (home-page "https://github.com/jekyll/jekyll-sass-converter")
7811 (synopsis "Sass converter for Jekyll")
7812 (description "This gem provide built-in support for the Sass converter
7813in Jekyll.")
7814 (license license:expat)))
ceac6f6f
JL
7815
7816(define-public ruby-jekyll-watch
7817 (package
7818 (name "ruby-jekyll-watch")
6cbba8a3 7819 (version "2.1.2")
ceac6f6f
JL
7820 (source (origin
7821 (method url-fetch)
7822 (uri (rubygems-uri "jekyll-watch" version))
7823 (sha256
7824 (base32
6cbba8a3 7825 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
ceac6f6f
JL
7826 (build-system ruby-build-system)
7827 (propagated-inputs
6cbba8a3 7828 `(("ruby-listen" ,ruby-listen)))
ceac6f6f
JL
7829 (arguments
7830 ;; No rakefile
7831 `(#:tests? #f))
7832 (home-page "https://github.com/jekyll/jekyll-watch")
7833 (synopsis "Jekyll auto-rebuild support")
7834 (description "This gems add the @code{--watch} switch to the jekyll CLI
7835interface. It allows Jekyll to rebuild your site when a file changes.")
7836 (license license:expat)))
3224a5a8
JL
7837
7838(define-public ruby-parallel
7839 (package
7840 (name "ruby-parallel")
c41fba01
CB
7841 (version "1.13.0")
7842 (source
7843 (origin
7844 (method git-fetch)
7845 (uri (git-reference
7846 (url "https://github.com/grosser/parallel.git")
7847 (commit (string-append "v" version))))
7848 (file-name (git-file-name name version))
7849 (sha256
7850 (base32
7851 "1isqzbqxz2ndad4i5z3lb9ldrhaijfncj8bmffv04sq44sv87ikv"))))
3224a5a8 7852 (build-system ruby-build-system)
c41fba01
CB
7853 (arguments
7854 `(;; TODO 3 test failures
7855 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
7856 ;; open unnecessary pipes
7857 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
7858 ;; SQLite in processes
7859 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
7860 ;; SQLite in threads
7861 #:tests? #f
7862 #:test-target "rspec-rerun:spec"
7863 #:phases
7864 (modify-phases %standard-phases
7865 (add-after 'unpack 'patch-Gemfile
7866 (lambda _
7867 (substitute* "Gemfile"
7868 (("gem 'rspec-legacy_formatters'") "")
7869 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
7870 (add-before 'check 'delete-Gemfile.lock
7871 (lambda _
7872 ;; Bundler isn't being used for fetching dependendencies, so
7873 ;; delete the Gemfile.lock
7874 (delete-file "Gemfile.lock")
7875 #t))
7876 (add-before 'build 'patch-gemspec
7877 (lambda _
7878 (substitute* "parallel.gemspec"
7879 (("git ls-files") "find"))
7880 #t)))))
7881 (native-inputs
7882 `(("ruby-rspec" ,ruby-rspec)
7883 ("ruby-rspec-rerun" ,ruby-rspec-rerun)
7884 ("bundler" ,bundler)
7885 ("ruby-activerecord" ,ruby-activerecord)
7886 ("ruby-progressbar" ,ruby-progressbar)
7887 ("ruby-bump" ,ruby-bump)
7888 ("procps" ,procps)
7889 ("lsof" ,lsof)
7890 ("ruby-mysql2" ,ruby-mysql2)
7891 ("ruby-sqlite3" ,ruby-sqlite3)
7892 ("ruby-i18n" ,ruby-i18n)))
3224a5a8
JL
7893 (home-page "https://github.com/grosser/parallel")
7894 (synopsis "Parallel processing in Ruby")
7895 (description "Parallel allows you to run any code in parallel Processes
7896(to use all CPUs) or Threads(to speedup blocking operations). It is best
7897suited for map-reduce or e.g. parallel downloads/uploads.")
7898 (license license:expat)))
83d9f672
JL
7899
7900(define-public ruby-cane
7901 (package
7902 (name "ruby-cane")
7903 (version "3.0.0")
7904 (source (origin
7905 (method url-fetch)
7906 (uri (rubygems-uri "cane" version))
7907 (sha256
7908 (base32
7909 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
7910 (build-system ruby-build-system)
7911 (arguments `(#:tests? #f)); No rakefile
7912 (home-page "https://github.com/square/cane")
7913 (propagated-inputs
7914 `(("ruby-parallel" ,ruby-parallel)))
7915 (synopsis "Code quality threshold checking")
7916 (description "Cane fails your build if code quality thresholds are not met.")
7917 (license license:asl2.0)))
00d71efc
JL
7918
7919(define-public ruby-morecane
7920 (package
7921 (name "ruby-morecane")
7922 (version "0.2.0")
7923 (source (origin
7924 (method url-fetch)
7925 (uri (rubygems-uri "morecane" version))
7926 (sha256
7927 (base32
7928 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
7929 (build-system ruby-build-system)
7930 (home-page "https://github.com/yob/morecane")
7931 (arguments `(#:tests? #f)); No rakefile
7932 (propagated-inputs
7933 `(("ruby-parallel" ,ruby-parallel)))
7934 (synopsis "Extra checks for cane")
7935 (description "The cane gem provides a great framework for running quality
7936checks over your ruby project as part of continuous integration build. It
7937comes with a few checks out of the box, but also provides an API for loading
7938custom checks. This gem provides a set of additional checks.")
7939 (license license:expat)))
abbe629c
JL
7940
7941(define-public ruby-pdf-reader
7942 (package
7943 (name "ruby-pdf-reader")
7944 (version "2.1.0")
7945 (source (origin
7946 (method url-fetch)
7947 (uri (rubygems-uri "pdf-reader" version))
7948 (sha256
7949 (base32
7950 "1b3ig4wpcgdbqa7yw0ahwbmikkkywn2a22bfmrknl5ls7g066x45"))))
7951 (build-system ruby-build-system)
7952 (arguments `(#:test-target "spec"))
7953 (native-inputs
7954 `(("bundler" ,bundler)
7955 ("ruby-rspec" ,ruby-rspec)
7956 ("ruby-cane" ,ruby-cane)
7957 ("ruby-morecane" ,ruby-morecane)))
7958 (propagated-inputs
7959 `(("ruby-afm" ,ruby-afm)
7960 ("ruby-ascii85" ,ruby-ascii85)
7961 ("ruby-hashery" ,ruby-hashery)
7962 ("ruby-rc4" ,ruby-rc4)
7963 ("ruby-ttfunk" ,ruby-ttfunk)))
7964 (home-page "https://github.com/yob/pdf-reader")
7965 (synopsis "PDF parser in Ruby")
7966 (description "The PDF::Reader library implements a PDF parser conforming as
7967much as possible to the PDF specification from Adobe. It provides programmatic
7968access to the contents of a PDF file with a high degree of flexibility.")
7969 (license license:gpl3+)))
461fb859
JL
7970
7971(define-public ruby-pdf-inspector
7972 (package
7973 (name "ruby-pdf-inspector")
7974 (version "1.3.0")
7975 (source (origin
7976 (method url-fetch)
7977 (uri (rubygems-uri "pdf-inspector" version))
7978 (sha256
7979 (base32
7980 "1g853az4xzgqxr5xiwhb76g4sqmjg4s79mm35mp676zjsrwpa47w"))))
7981 (build-system ruby-build-system)
7982 (propagated-inputs
7983 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
7984 (arguments `(#:tests? #f)); No rakefile
7985 (home-page "https://github.com/prawnpdf/pdf-inspector")
7986 (synopsis "Analysis classes for inspecting PDF output")
7987 (description "This library provides a number of PDF::Reader based tools for
7988use in testing PDF output. Presently, the primary purpose of this tool is to
7989support the tests found in Prawn, a pure Ruby PDF generation library.")
7990 (license license:gpl3+)))
770e3b53
JL
7991
7992(define-public ruby-pdf-core
7993 (package
7994 (name "ruby-pdf-core")
7995 (version "0.8.1")
7996 (source (origin
7997 (method url-fetch)
7998 (uri (rubygems-uri "pdf-core" version))
7999 (sha256
8000 (base32
8001 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
8002 (build-system ruby-build-system)
8003 (arguments
8004 ; No test target
8005 `(#:tests? #f))
8006 (home-page "https://github.com/prawnpdf/pdf-core")
8007 (synopsis "Low level PDF features for Prawn")
8008 (description "This is an experimental gem that extracts low-level PDF
8009functionality from Prawn.")
8010 (license license:gpl3+)))
37fbced7 8011
7ad8dd08
JL
8012(define-public ruby-prawn
8013 (package
8014 (name "ruby-prawn")
8015 (version "2.2.2")
8016 (source (origin
8017 (method url-fetch)
8018 (uri (rubygems-uri "prawn" version))
8019 (sha256
8020 (base32
8021 "1qdjf1v6sfl44g3rqxlg8k4jrzkwaxgvh2l4xws97a8f3xv4na4m"))))
8022 (build-system ruby-build-system)
8023 (arguments
8024 ; No tests
8025 `(#:tests? #f
8026 #:phases
8027 (modify-phases %standard-phases
8028 (add-before 'build 'fix-dependencies
8029 (lambda _
8030 (substitute* "prawn.gemspec"
8031 (("~> 0.7.0") "~> 0.7"))
8032 #t)))))
8033 (propagated-inputs
8034 `(("ruby-pdf-core" ,ruby-pdf-core)
8035 ("ruby-ttfunk" ,ruby-ttfunk)))
8036 (native-inputs
8037 `(("bundler" ,bundler)
8038 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
8039 ("ruby-rspec" ,ruby-rspec)
8040 ("ruby-simplecov" ,ruby-simplecov)
8041 ("ruby-yard" ,ruby-yard)))
8042 (home-page "http://prawnpdf.org/api-docs/2.0/")
8043 (synopsis "PDF generation for Ruby")
8044 (description "Prawn is a pure Ruby PDF generation library.")
8045 (license license:gpl3+)))
197ca8ec
JL
8046
8047(define-public ruby-prawn-table
8048 (package
8049 (name "ruby-prawn-table")
8050 (version "0.2.2")
8051 (source (origin
8052 (method url-fetch)
8053 (uri (rubygems-uri "prawn-table" version))
8054 (sha256
8055 (base32
8056 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
8057 (build-system ruby-build-system)
197ca8ec 8058 (propagated-inputs
0927b039
CB
8059 `(("ruby-prawn" ,ruby-prawn)
8060 ("ruby-pdf-inspector" ,ruby-pdf-inspector)))
8061 (native-inputs
8062 `(("bundler" ,bundler)
8063 ("ruby-yard" ,ruby-yard)
8064 ("ruby-mocha" ,ruby-mocha)
8065 ("ruby-coderay" ,ruby-coderay)
8066 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
8067 ("ruby-simplecov" ,ruby-simplecov)
8068 ("ruby-rspec-2" ,ruby-rspec-2)))
8069 (arguments
8070 '(;; TODO: 1 test fails
8071 ;; Failure/Error: pdf.page_count.should == 1
8072 ;; expected: 1
8073 ;; got: 2 (using ==)
8074 ;; # ./spec/table_spec.rb:1308
8075 ;;
8076 ;; 225 examples, 1 failure
8077 #:tests? #f
8078 #:phases
8079 (modify-phases %standard-phases
8080 (add-before 'check 'patch-gemspec
8081 (lambda _
8082 (substitute* "prawn-table.gemspec"
8083 ;; Loosen the requirement for pdf-inspector
8084 (("~> 1\\.1\\.0") ">= 0")
8085 ;; Loosen the requirement for pdf-reader
8086 (("~> 1\\.2") ">= 0"))))
8087 (replace 'check
8088 (lambda* (#:key tests? #:allow-other-keys)
8089 (when tests?
8090 (invoke "rspec"))
8091 #t)))))
197ca8ec
JL
8092 (home-page "https://github.com/prawnpdf/prawn-table")
8093 (synopsis "Tables support for Prawn")
8094 (description "This gem provides tables support for Prawn.")
8095 (license license:gpl3+)))
03127069
JL
8096
8097(define-public ruby-kramdown
8098 (package
8099 (name "ruby-kramdown")
8100 (version "1.17.0")
8101 (source (origin
8102 (method url-fetch)
8103 (uri (rubygems-uri "kramdown" version))
8104 (sha256
8105 (base32
8106 "1n1c4jmrh5ig8iv1rw81s4mw4xsp4v97hvf8zkigv4hn5h542qjq"))))
8107 (build-system ruby-build-system)
8108 (arguments `(#:tests? #f)); FIXME: some test failures
8109 (native-inputs
8110 `(("ruby-prawn" ,ruby-prawn)
8111 ("ruby-prawn-table" ,ruby-prawn-table)))
8112 (home-page "https://kramdown.gettalong.org/")
8113 (synopsis "Markdown parsing and converting library")
8114 (description "Kramdown is a library for parsing and converting a superset
8115of Markdown. It is completely written in Ruby, supports standard Markdown
8116(with some minor modifications) and various extensions that have been made
8117popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
8118 (license license:expat)))
fa0063bc
JL
8119
8120(define-public ruby-http-parser.rb
8121 (package
8122 (name "ruby-http-parser.rb")
8123 (version "0.6.0")
8124 (source
8125 (origin
8126 (method url-fetch)
8127 (uri (rubygems-uri "http_parser.rb" version))
8128 (sha256
8129 (base32
8130 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
8131 (build-system ruby-build-system)
8132 (arguments
8133 ;; No tests
8134 `(#:tests? #f))
8135 (native-inputs
8136 `(("ruby-rake-compiler" ,ruby-rake-compiler)
8137 ("ruby-rspec" ,ruby-rspec)))
8138 (home-page "https://github.com/tmm1/http_parser.rb")
8139 (synopsis "HTTP parser un Ruby")
8140 (description "This gem is a simple callback-based HTTP request/response
8141parser for writing http servers, clients and proxies.")
8142 (license license:expat)))
5e2f74bd
JL
8143
8144(define-public ruby-em-websocket
8145 (package
8146 (name "ruby-em-websocket")
8147 (version "0.5.1")
8148 (source
8149 (origin
8150 (method url-fetch)
8151 (uri (rubygems-uri "em-websocket" version))
8152 (sha256
8153 (base32
8154 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
8155 (build-system ruby-build-system)
8156 (arguments
8157 ;; No tests
8158 `(#:tests? #f))
8159 (propagated-inputs
8160 `(("ruby-eventmachine" ,ruby-eventmachine)
8161 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
8162 (native-inputs
8163 `(("bundler" ,bundler)
8164 ("ruby-rspec" ,ruby-rspec)))
8165 (home-page "https://github.com/igrigorik/em-websocket")
8166 (synopsis "EventMachine based WebSocket server")
8167 (description "Em-websocket is an EventMachine based WebSocket server
8168implementation.")
8169 (license license:expat)))
4ce0414b
JL
8170
8171(define-public ruby-rouge
8172 (package
8173 (name "ruby-rouge")
8174 (version "3.2.1")
8175 (source (origin
8176 (method url-fetch)
8177 (uri (rubygems-uri "rouge" version))
8178 (sha256
8179 (base32
8180 "0h79gn2wmn1wix2d27lgiaimccyj8gvizrllyym500pir408x62f"))))
8181 (build-system ruby-build-system)
8182 (arguments `(#:tests? #f)); No rakefile
8183 (home-page "http://rouge.jneen.net/")
8184 (synopsis "Code highlighter")
8185 (description "Rouge is a code highlighter written in Ruby. It supports more
8186than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
8187is compatible with stylesheets designed for pygments.")
8188 (license (list
8189 ;; rouge is licensed under expat
8190 license:expat
8191 ;; pygments is licensed under bsd-2
8192 license:bsd-2))))
2c5028bd
JL
8193
8194(define-public ruby-rouge-2
8195 (package
8196 (inherit ruby-rouge)
8197 (version "2.2.1")
8198 (source (origin
8199 (method url-fetch)
8200 (uri (rubygems-uri "rouge" version))
8201 (sha256
8202 (base32
8203 "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs"))))))
2e072e37
JL
8204
8205(define-public ruby-hashie
8206 (package
8207 (name "ruby-hashie")
8208 (version "3.6.0")
8209 (source (origin
8210 (method url-fetch)
8211 (uri (rubygems-uri "hashie" version))
8212 (sha256
8213 (base32
8214 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
8215 (build-system ruby-build-system)
8216 (native-inputs
8217 `(("bundler" ,bundler)))
8218 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
8219 (home-page "https://github.com/intridea/hashie")
8220 (synopsis "Extensions to Ruby Hashes")
8221 (description "Hashie is a collection of classes and mixins that make Ruby
8222hashes more powerful.")
8223 (license license:expat)))
73bfc125
JL
8224
8225(define-public ruby-heredoc-unindent
8226 (package
8227 (name "ruby-heredoc-unindent")
8228 (version "1.2.0")
8229 (source (origin
8230 (method url-fetch)
8231 (uri (rubygems-uri "heredoc_unindent" version))
8232 (sha256
8233 (base32
8234 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
8235 (build-system ruby-build-system)
8236 (native-inputs
8237 `(("ruby-hoe" ,ruby-hoe)))
8238 (home-page "https://github.com/adrianomitre/heredoc_unindent")
8239 (synopsis "Heredoc indentation cleaner")
8240 (description "This gem removes common margin from indented strings, such
8241as the ones produced by indented heredocs. In other words, it strips out
4f66ae28 8242leading whitespace chars at the beginning of each line, but only as much as
73bfc125
JL
8243the line with the smallest margin.
8244
8245It is acknowledged that many strings defined by heredocs are just code and
8246fact is that most parsers are insensitive to indentation. If, however, the
8247strings are to be used otherwise, be it for printing or testing, the extra
8248indentation will probably be an issue and hence this gem.")
8249 (license license:expat)))
f8ae2ee5
JL
8250
8251(define-public ruby-safe-yaml
8252 (package
8253 (name "ruby-safe-yaml")
8254 (version "1.0.4")
28cf8dab
CB
8255 (source
8256 (origin
8257 ;; TODO Fetch from the git repository so a patch can be applied
8258 (method git-fetch)
8259 (uri (git-reference
8260 (url "https://github.com/dtao/safe_yaml.git")
8261 (commit version)))
8262 (file-name (git-file-name name version))
8263 (sha256
8264 (base32
8265 "1wnln8xdy8g6kwdj4amm8773xwffqxpf2sxslk6jjh2wxsy1lrig"))
8266 (patches
8267 (search-patches "ruby-safe-yaml-add-require-time.patch"))))
f8ae2ee5
JL
8268 (build-system ruby-build-system)
8269 (native-inputs
8270 `(("ruby-rspec" ,ruby-rspec)
8271 ("ruby-hashie" ,ruby-hashie)
8272 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
28cf8dab
CB
8273 (arguments
8274 '(#:test-target "spec"
8275 #:phases
8276 (modify-phases %standard-phases
8277 (add-before 'check 'set-TZ
8278 (lambda _
8279 ;; This test is dependent on the timezone
8280 ;; spec/transform/to_date_spec.rb:35
8281 ;; # SafeYAML::Transform::ToDate converts times to the local
8282 ;; timezone
8283 (setenv "TZ" "UTC-11")
8284 #t)))))
f8ae2ee5
JL
8285 (home-page "https://github.com/dtao/safe_yaml")
8286 (synopsis "YAML parser")
8287 (description "The SafeYAML gem provides an alternative implementation of
8288YAML.load suitable for accepting user input in Ruby applications.")
8289 (license license:expat)))
f1ec4d76
JL
8290
8291(define-public ruby-mercenary
8292 (package
8293 (name "ruby-mercenary")
8294 (version "0.3.6")
8295 (source (origin
8296 (method url-fetch)
8297 (uri (rubygems-uri "mercenary" version))
8298 (sha256
8299 (base32
8300 "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"))))
8301 (build-system ruby-build-system)
8302 (arguments `(#:test-target "spec"))
8303 (native-inputs
8304 `(("bundler" ,bundler)))
8305 (home-page "https://github.com/jekyll/mercenary")
8306 (synopsis "Command-line apps library in Ruby")
8307 (description "Mercenary is a lightweight and flexible library for writing
8308command-line apps in Ruby.")
8309 (license license:expat)))
a13d451e
JL
8310
8311(define-public ruby-liquid
8312 (package
8313 (name "ruby-liquid")
8314 (version "4.0.0")
8315 (source (origin
8316 (method url-fetch)
8317 (uri (rubygems-uri "liquid" version))
8318 (sha256
8319 (base32
8320 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
8321 (build-system ruby-build-system)
8322 (arguments `(#:tests? #f)); No rakefile
8323 (home-page "https://shopify.github.io/liquid/")
8324 (synopsis "Template language")
8325 (description "Liquid is a template language written in Ruby. It is used
8326to load dynamic content on storefronts.")
8327 (license license:expat)))
49395112
JL
8328
8329(define-public ruby-forwardable-extended
8330 (package
8331 (name "ruby-forwardable-extended")
8332 (version "2.6.0")
8333 (source (origin
8334 (method url-fetch)
8335 (uri (rubygems-uri "forwardable-extended" version))
8336 (sha256
8337 (base32
8338 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
8339 (build-system ruby-build-system)
8340 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
8341 (home-page "https://github.com/envygeeks/forwardable-extended")
8342 (synopsis "Delegation to hashes and instance variables in Forwardable")
8343 (description "Forwardable Extended provides more @code{Forwardable}
8344methods for your source as @code{Forwardable::Extended}.")
8345 (license license:expat)))
37296113
JL
8346
8347(define-public ruby-pathutil
8348 (package
8349 (name "ruby-pathutil")
8350 (version "0.16.1")
8351 (source (origin
8352 (method url-fetch)
8353 (uri (rubygems-uri "pathutil" version))
8354 (sha256
8355 (base32
8356 "0wc18ms1rzi44lpjychyw2a96jcmgxqdvy2949r4vvb5f4p0lgvz"))))
8357 (build-system ruby-build-system)
8358 (propagated-inputs
8359 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
8360 (native-inputs
8361 `(("bundler" ,bundler)
8362 ("ruby-rspec" ,ruby-rspec)))
8363 ;; Fails with: cannot load such file --
8364 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
8365 (arguments `(#:tests? #f))
8366 (home-page "https://github.com/envygeeks/pathutil")
8367 (synopsis "Extended implementation of Pathname")
8368 (description "Pathutil tries to be a faster pure Ruby implementation of
8369Pathname.")
8370 (license license:expat)))
49e1dde5
JL
8371
8372(define-public jekyll
8373 (package
8374 (name "jekyll")
fcf82fd3 8375 (version "3.8.6")
49e1dde5
JL
8376 (source (origin
8377 (method url-fetch)
8378 (uri (rubygems-uri "jekyll" version))
8379 (sha256
8380 (base32
fcf82fd3 8381 "1ph1jjjl25vmzif7bvxzviq7azjm384pm7ba4k24cah94285bzhz"))))
49e1dde5
JL
8382 (build-system ruby-build-system)
8383 (arguments
fcf82fd3 8384 ;; No rakefile, but a test subdirectory.
49e1dde5
JL
8385 `(#:tests? #f
8386 #:phases
8387 (modify-phases %standard-phases
8388 (add-before 'build 'fix-i18n
8389 (lambda _
8390 (substitute* ".gemspec"
8391 (("~> 0.7") ">= 0.7"))
8392 #t)))))
8393 (propagated-inputs
8394 `(("ruby-addressable" ,ruby-addressable)
8395 ("ruby-colorator" ,ruby-colorator)
8396 ("ruby-em-websocket" ,ruby-em-websocket)
8397 ("ruby-i18n" ,ruby-i18n)
8398 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
8399 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
8400 ("ruby-kramdown" ,ruby-kramdown)
8401 ("ruby-liquid" ,ruby-liquid)
8402 ("ruby-mercenary" ,ruby-mercenary)
8403 ("ruby-pathutil" ,ruby-pathutil)
8404 ("ruby-rouge" ,ruby-rouge-2)
8405 ("ruby-safe-yaml" ,ruby-safe-yaml)))
8406 (home-page "https://jekyllrb.com/")
8407 (synopsis "Static site generator")
8408 (description "Jekyll is a simple, blog aware, static site generator.")
8409 (license license:expat)))
37a0f470
JL
8410
8411(define-public ruby-jekyll-paginate-v2
8412 (package
8413 (name "ruby-jekyll-paginate-v2")
8414 (version "2.0.0")
8415 (source (origin
8416 (method url-fetch)
8417 (uri (rubygems-uri "jekyll-paginate-v2" version))
8418 (sha256
8419 (base32
8420 "154bfpyml6abxww9868hhyfvxasl8qhsc5zy2q30c7dxaj0igdib"))))
8421 (build-system ruby-build-system)
8422 (propagated-inputs
8423 `(("jekyll" ,jekyll)))
8424 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
8425 (synopsis "Pagination Generator for Jekyll 3")
8426 (description "The Pagination Generator forms the core of the pagination
8427logic in Jekyll. It calculates and generates the pagination pages.")
8428 (license license:expat)))
909eae21
CB
8429
8430(define-public ruby-faraday
8431 (package
8432 (name "ruby-faraday")
8433 (version "0.15.4")
8434 (source
8435 (origin
8436 (method url-fetch)
8437 (uri (rubygems-uri "faraday" version))
8438 (sha256
8439 (base32
8440 "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0"))))
8441 (build-system ruby-build-system)
8442 (arguments
8443 '(#:tests? #f))
8444 (propagated-inputs
8445 `(("ruby-multipart-post" ,ruby-multipart-post)))
8446 (synopsis "Ruby HTTP/REST API client library")
8447 (description
8448 "Faraday is a HTTP/REST API client library which provides a common
8449interface over different adapters.")
8450 (home-page "https://github.com/lostisland/faraday")
8451 (license license:expat)))
a058cbfd
CB
8452
8453(define-public ruby-nio4r
8454 (package
8455 (name "ruby-nio4r")
8456 (version "2.3.1")
8457 (source
8458 (origin
8459 (method url-fetch)
8460 (uri (rubygems-uri "nio4r" version))
8461 (sha256
8462 (base32
8463 "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr"))))
8464 (build-system ruby-build-system)
8465 (arguments
8466 '(#:phases
8467 (modify-phases %standard-phases
8468 (add-after 'unpack 'remove-unnecessary-dependencies
8469 (lambda _
8470 (substitute* "spec/spec_helper.rb"
8471 ;; Coveralls is for uploading test coverage information to an
8472 ;; online service, and thus unnecessary for building the Guix
8473 ;; package
8474 (("require \"coveralls\"") "")
8475 (("Coveralls\\.wear!") "")
8476 ;; Remove rspec/retry as we are not retrying the tests
8477 (("require \"rspec/retry\"") "")
8478 (("config\\.display_try_failure_messages = true") "")
8479 (("config\\.verbose_retry = true") ""))
8480 #t))
8481 (add-before 'check 'compile
8482 (lambda _
8483 (invoke "rake" "compile")
8484 #t))
8485 (replace 'check
8486 (lambda* (#:key tests? #:allow-other-keys)
8487 (when tests?
8488 (invoke "rspec"))
8489 #t)))))
8490 (native-inputs
8491 `(("bundler" ,bundler)
8492 ("ruby-rake-compiler" ,ruby-rake-compiler)
8493 ("ruby-rspec" ,ruby-rspec)
8494 ("ruby-rubocop" ,ruby-rubocop)))
8495 (synopsis "New I/O for Ruby")
8496 (description
8497 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
8498for scalable network clients and servers.")
8499 (home-page "https://github.com/socketry/nio4r")
8500 (license license:expat)))
f9da1ada
CB
8501
8502(define-public ruby-globalid
8503 (package
8504 (name "ruby-globalid")
8505 (version "0.4.2")
8506 (source
8507 (origin
8508 (method url-fetch)
8509 (uri (rubygems-uri "globalid" version))
8510 (sha256
8511 (base32
8512 "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"))))
8513 (build-system ruby-build-system)
8514 (arguments
8515 '(;; No included tests
8516 #:tests? #f))
8517 (propagated-inputs
8518 `(("ruby-activesupport" ,ruby-activesupport)))
8519 (synopsis "Generate URIs idenfitying model instances in Ruby")
8520 (description
8521 "@code{GlobalID} provides a way to generate URIs from a model in Ruby that
8522uniquely identify it.")
8523 (home-page "https://rubyonrails.org/")
8524 (license license:expat)))
15606d98
CB
8525
8526(define-public ruby-sprockets
8527 (package
8528 (name "ruby-sprockets")
8529 (version "3.7.2")
8530 (source
8531 (origin
8532 (method url-fetch)
8533 (uri (rubygems-uri "sprockets" version))
8534 (sha256
8535 (base32
8536 "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"))))
8537 (build-system ruby-build-system)
8538 (arguments
8539 '(;; No included tests
8540 #:tests? #f))
8541 (propagated-inputs
8542 `(("ruby-concurrent" ,ruby-concurrent)
8543 ("ruby-rack" ,ruby-rack)))
8544 (synopsis "Sprockets is a Rack-based asset packaging system")
8545 (description
8546 "Sprockets is a Rack-based asset packaging system that concatenates and
8547serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
8548 (home-page "https://github.com/rails/sprockets")
8549 (license license:expat)))
acb9e3d8
PN
8550
8551(define-public ruby-mustermann
8552 (package
8553 (name "ruby-mustermann")
8554 (version "1.0.3")
8555 (source
8556 (origin
8557 (method url-fetch)
8558 (uri (rubygems-uri "mustermann" version))
8559 (sha256
8560 (base32
8561 "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1"))))
8562 (build-system ruby-build-system)
8563 (arguments
8564 ;; No tests.
8565 '(#:tests? #f))
8566 (synopsis "Library implementing patterns that behave like regular expressions")
8567 (description "Given a string pattern, Mustermann will turn it into an
8568object that behaves like a regular expression and has comparable performance
8569characteristics.")
8570 (home-page "https://github.com/sinatra/mustermann")
8571 (license license:expat)))
3bb094e2
PN
8572
8573(define-public ruby-sinatra
8574 (package
8575 (name "ruby-sinatra")
8576 (version "2.0.5")
8577 (source
8578 (origin
8579 (method url-fetch)
8580 (uri (rubygems-uri "sinatra" version))
8581 (sha256
8582 (base32
8583 "1gasgn5f15myv08k10i16p326pchxjsy37pgqfw0xm66kcc5d7ry"))))
8584 (build-system ruby-build-system)
8585 (propagated-inputs
8586 `(("ruby-mustermann" ,ruby-mustermann)
8587 ("ruby-rack" ,ruby-rack)
8588 ("ruby-rack-protection" ,ruby-rack-protection)
8589 ("ruby-tilt" ,ruby-tilt)))
8590 (synopsis "DSL for quick web applications creation in Ruby")
8591 (description
8592 "Sinatra is a DSL for quickly creating web applications in Ruby with
8593minimal effort.")
8594 (home-page "http://sinatrarb.com/")
8595 (license license:expat)))
6e87695b
PN
8596
8597(define-public ruby-thin
8598 (package
8599 (name "ruby-thin")
8600 (version "1.7.2")
8601 (source
8602 (origin
8603 (method url-fetch)
8604 (uri (rubygems-uri "thin" version))
8605 (sha256
8606 (base32
8607 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
8608 (build-system ruby-build-system)
8609 (arguments
8610 ;; No tests.
8611 '(#:tests? #f))
8612 (propagated-inputs
8613 `(("ruby-daemons" ,ruby-daemons)
8614 ("ruby-eventmachine" ,ruby-eventmachine)
8615 ("ruby-rack" ,ruby-rack)))
8616 (synopsis "Thin and fast web server for Ruby")
8617 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
8618@itemize
8619@item the Mongrel parser,
8620@item Event Machine, a network I/O library with high scalability, performance
8621and stability,
8622@item Rack, a minimal interface between webservers and Ruby frameworks.
8623@end itemize\n")
8624 (home-page "http://code.macournoyer.com/thin/")
8625 (license license:ruby)))
be6016db
PN
8626
8627(define-public ruby-skinny
8628 (package
8629 (name "ruby-skinny")
8630 (version "0.2.4")
8631 (source
8632 (origin
8633 (method url-fetch)
8634 (uri (rubygems-uri "skinny" version))
8635 (sha256
8636 (base32
8637 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
8638 (build-system ruby-build-system)
8639 (arguments
8640 '(#:tests? #f ; No included tests
8641 #:phases
8642 (modify-phases %standard-phases
8643 (add-before 'build 'patch-gemspec
8644 (lambda _
8645 (substitute* ".gemspec"
8646 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
8647 "<eventmachine>, [\">= 1.0.0\"")
8648 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, ["))
8649 #t)))))
8650 (propagated-inputs
8651 `(("ruby-eventmachine" ,ruby-eventmachine)
8652 ("ruby-thin" ,ruby-thin)))
8653 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
8654 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
8655the Thin library.")
8656 (home-page "https://github.com/sj26/skinny")
8657 (license license:expat)))
df747c8d
PN
8658
8659(define-public mailcatcher
8660 (package
8661 (name "mailcatcher")
8662 (version "0.7.1")
8663 (source
8664 (origin
8665 (method url-fetch)
8666 (uri (rubygems-uri "mailcatcher" version))
8667 (sha256
8668 (base32
8669 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
8670 (build-system ruby-build-system)
8671 (arguments
8672 ;; Tests require web/assets which is not included in the output. We
8673 ;; might be able to fix this by adding the Git repository to the GEM_PATH
8674 ;; of the tests. See ruby-mysql2.
8675 '(#:tests? #f
8676 #:phases
8677 (modify-phases %standard-phases
8678 (add-before 'build 'patch-gemspec
8679 (lambda _
8680 (substitute* ".gemspec"
8681 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
8682 "<eventmachine>, [\">= 1.0.9.1")
8683 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
8684 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
8685 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))
8686 #t))
8687 (add-before 'build 'loosen-dependency-contraint
8688 (lambda _
8689 (substitute* "lib/mail_catcher.rb"
8690 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
8691 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
8692 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
8693 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))
8694 #t)))))
8695 (inputs
8696 `(("ruby-eventmachine" ,ruby-eventmachine)
8697 ("ruby-mail" ,ruby-mail)
8698 ("ruby-rack" ,ruby-rack)
8699 ("ruby-sinatra" ,ruby-sinatra)
8700 ("ruby-skinny" ,ruby-skinny)
8701 ("ruby-sqlite3" ,ruby-sqlite3)
8702 ("ruby-thin" ,ruby-thin)))
8703 (synopsis "SMTP server which catches messages to display them a browser")
8704 (description
8705 "MailCatcher runs a super simple SMTP server which catches any message
8706sent to it to display in a web interface. Run mailcatcher, set your favourite
8707app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
8708then check out http://127.0.0.1:1080 to see the mail.")
8709 (home-page "https://mailcatcher.me")
8710 (license license:expat)))
fc4f7c45
MK
8711
8712(define-public ruby-backport
8713 (package
8714 (name "ruby-backport")
8715 (version "1.1.1")
8716 (source
8717 (origin
8718 ;; The gem does not include test code, so fetch from the Git repository
8719 (method git-fetch)
8720 (uri (git-reference
8721 (url "https://github.com/castwide/backport.git")
8722 (commit (string-append "v" version))))
8723 (file-name (git-file-name name version))
8724 (sha256
8725 (base32
8726 "0ii3y1wx1n48nd2mhlv0v61b2m21h7dg30if9vc2idza7k4afyw8"))))
8727 (build-system ruby-build-system)
8728 (arguments
8729 `(#:test-target "spec"))
8730 (native-inputs
8731 `(("bundler" ,bundler)
8732 ("ruby-rspec" ,ruby-rspec)))
8733 (inputs
8734 `(("ruby-simplecov" ,ruby-simplecov)))
8735 (synopsis "Pure Ruby library for event-driven IO")
8736 (description
8737 "This package provides a pure Ruby library for event-driven IO.")
8738 (home-page "https://github.com/castwide/backport")
8739 (license license:expat)))