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