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