gnu: ruby-tilt: Update to 2.0.10.
[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)
c84dd8d4 54 #:use-module (gnu packages haskell-xyz)
ad79eb55 55 #:use-module (gnu packages java)
6ef8c59a 56 #:use-module (gnu packages libffi)
f3d7bb93 57 #:use-module (gnu packages libidn)
c41fba01
CB
58 #:use-module (gnu packages linux)
59 #:use-module (gnu packages lsof)
34138e42 60 #:use-module (gnu packages maths)
0c8eedc1 61 #:use-module (gnu packages ncurses)
fe5dd5f4 62 #:use-module (gnu packages networking)
3ca43524 63 #:use-module (gnu packages node)
dff5392f 64 #:use-module (gnu packages protobuf)
ac09beba 65 #:use-module (gnu packages python)
44d10b1f 66 #:use-module (gnu packages python-xyz)
763624f5 67 #:use-module (gnu packages ragel)
30f08487 68 #:use-module (gnu packages rsync)
cd0322a3 69 #:use-module (gnu packages sqlite)
cc2b77df 70 #:use-module (gnu packages tls)
66e20863 71 #:use-module (gnu packages version-control)
6ef8c59a
PP
72 #:use-module (guix packages)
73 #:use-module (guix download)
bda0c139 74 #:use-module (guix git-download)
6ef8c59a 75 #:use-module (guix utils)
acf735f2 76 #:use-module (guix build-system gnu)
e920bfca 77 #:use-module (gnu packages xml)
c2c4e5b2 78 #:use-module (gnu packages web)
15b16c2c
CB
79 #:use-module (guix build-system ruby)
80 #:use-module ((srfi srfi-1) #:select (alist-delete)))
6ef8c59a
PP
81
82(define-public ruby
83 (package
84 (name "ruby")
4914c157 85 (version "2.6.5")
6ef8c59a
PP
86 (source
87 (origin
88 (method url-fetch)
6becfdff
MW
89 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
90 (version-major+minor version)
12d39eb5 91 "/ruby-" version ".tar.xz"))
6ef8c59a
PP
92 (sha256
93 (base32
4914c157 94 "0qhsw2mr04f3lqinkh557msr35pb5rdaqy4vdxcj91flgxqxmmnm"))
65e84e31
BW
95 (modules '((guix build utils)))
96 (snippet `(begin
97 ;; Remove bundled libffi
c033c195 98 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
65e84e31 99 #t))))
6ef8c59a
PP
100 (build-system gnu-build-system)
101 (arguments
102 `(#:test-target "test"
fd248cb8 103 #:configure-flags '("--enable-shared") ; dynamic linking
6ef8c59a 104 #:phases
9656b8be 105 (modify-phases %standard-phases
65e84e31 106 (add-before 'configure 'replace-bin-sh-and-remove-libffi
9656b8be
BW
107 (lambda _
108 (substitute* '("Makefile.in"
109 "ext/pty/pty.c"
110 "io.c"
111 "lib/mkmf.rb"
112 "process.c"
113 "test/rubygems/test_gem_ext_configure_builder.rb"
114 "test/rdoc/test_rdoc_parser.rb"
115 "test/ruby/test_rubyoptions.rb"
116 "test/ruby/test_process.rb"
117 "test/ruby/test_system.rb"
118 "tool/rbinstall.rb")
119 (("/bin/sh") (which "sh")))
120 #t)))))
6ef8c59a
PP
121 (inputs
122 `(("readline" ,readline)
6ef8c59a
PP
123 ("openssl" ,openssl)
124 ("libffi" ,libffi)
4914c157
CB
125 ("gdbm" ,gdbm)))
126 (propagated-inputs
127 `(("zlib" ,zlib)))
6ef8c59a
PP
128 (native-search-paths
129 (list (search-path-specification
130 (variable "GEM_PATH")
3cb3fa67 131 (files (list (string-append "lib/ruby/vendor_ruby"))))))
6becfdff 132 (synopsis "Programming language interpreter")
6ef8c59a
PP
133 (description "Ruby is a dynamic object-oriented programming language with
134a focus on simplicity and productivity.")
bf3be6a5 135 (home-page "https://www.ruby-lang.org")
6ef8c59a
PP
136 (license license:ruby)))
137
1cc7d340
RP
138(define-public ruby-2.7
139 (package
140 (inherit ruby)
141 (version "2.7.1")
142 (source
143 (origin
144 (method url-fetch)
145 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
146 (version-major+minor version)
147 "/ruby-" version ".tar.gz"))
148 (sha256
149 (base32
150 "0674x98f542y02r7n2yv2qhmh97blqhi2mvh2dn5f000vlxlh66l"))
151 (modules '((guix build utils)))
152 (snippet `(begin
153 ;; Remove bundled libffi
154 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
155 #t))))
156 (arguments
157 `(#:test-target "test"
158 #:configure-flags '("--enable-shared") ; dynamic linking
159 #:phases
160 (modify-phases %standard-phases
161 (add-before 'configure 'replace-bin-sh-and-remove-libffi
162 (lambda _
163 (substitute* '("configure.ac"
164 "template/Makefile.in"
165 "lib/rubygems/installer.rb"
166 "ext/pty/pty.c"
167 "io.c"
168 "lib/mkmf.rb"
169 "process.c"
170 "test/rubygems/test_gem_ext_configure_builder.rb"
171 "test/rdoc/test_rdoc_parser.rb"
172 "test/ruby/test_rubyoptions.rb"
173 "test/ruby/test_process.rb"
174 "test/ruby/test_system.rb"
175 "tool/rbinstall.rb")
176 (("/bin/sh") (which "sh")))
177 #t)))))
178 (native-inputs
179 `(("autoconf" ,autoconf)))))
180
227fab3e
CB
181(define-public ruby-2.5
182 (package
183 (inherit ruby)
a09ff632 184 (version "2.5.8")
227fab3e
CB
185 (source
186 (origin
187 (method url-fetch)
188 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
189 (version-major+minor version)
190 "/ruby-" version ".tar.xz"))
191 (sha256
192 (base32
a09ff632 193 "0vad5ah1lrdhxsyqr5iqc8c7r7qczpmm76cz8rsf4crimpzv5483"))
227fab3e
CB
194 (modules '((guix build utils)))
195 (snippet `(begin
196 ;; Remove bundled libffi
197 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
198 #t))))))
199
93cae02f
CB
200(define-public ruby-2.4
201 (package
202 (inherit ruby)
dfe211f9 203 (version "2.4.10")
93cae02f
CB
204 (source
205 (origin
206 (method url-fetch)
207 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
208 (version-major+minor version)
209 "/ruby-" version ".tar.xz"))
210 (sha256
211 (base32
dfe211f9 212 "1prhqlgik1zmw9lakl6hkriqslspw48pvhxff17h7ns42p8qwrnm"))
93cae02f
CB
213 (modules '((guix build utils)))
214 (snippet `(begin
215 ;; Remove bundled libffi
216 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
217 #t))))))
218
933dad91
RW
219(define-public mruby
220 (package
221 (name "mruby")
222 (version "2.0.0")
223 (source
224 (origin
225 (method git-fetch)
226 (uri (git-reference
227 (url "https://github.com/mruby/mruby.git")
228 (commit version)))
229 (file-name (git-file-name name version))
230 (sha256
231 (base32
232 "1r6w1asjshff43ymdwa6xmrkggza99mi2kw88k7ic6ag2j81hcj5"))))
233 (build-system gnu-build-system)
234 (arguments
235 `(#:test-target "test"
236 #:phases
237 (modify-phases %standard-phases
238 (delete 'configure)
239 (add-after 'unpack 'enable-verbose-tests
240 (lambda _
241 (substitute* "Makefile"
242 (("ruby ./minirake" m)
243 (string-append m " --verbose")))
244 #t))
245 (add-after 'unpack 'disable-broken-tests
246 (lambda _
247 (substitute* "mrbgems/mruby-io/test/io.rb"
248 (("assert\\('IO.popen.+$" m)
249 (string-append m "skip \"Hangs in the Guix build environment\"\n"))
250 (("assert\\('IO#isatty.+$" m)
251 (string-append m "skip \"Disable for Guix; there is no /dev/tty\"\n"))
252 ;; This one is really weird. The *expected* output is all wrong.
253 (("assert\\('`cmd`.*" m)
254 (string-append m "skip \"Disable for Guix\"\n"))
255 (("echo foo")
256 (string-append (which "echo") " foo")))
257 #t))
258 ;; There is no install target
259 (replace 'install
260 (lambda* (#:key outputs #:allow-other-keys)
261 (let* ((out (assoc-ref outputs "out"))
262 (bin (string-append out "/bin"))
263 (lib (string-append out "/lib")))
264 (mkdir-p bin)
265 (copy-recursively "build/host/bin" bin)
266 (mkdir-p lib)
267 (copy-recursively "build/host/lib" lib))
268 #t)))))
269 (native-inputs
270 `(("ruby" ,ruby)
271 ("bison" ,bison)))
272 (home-page "https://github.com/mruby/mruby")
273 (synopsis "Lightweight Ruby")
274 (description "mruby is the lightweight implementation of the Ruby
275language. Its syntax is Ruby 1.9 compatible. mruby can be linked and
276embedded within your application.")
277 (license license:expat)))
278
34372d39
RW
279(define-public ruby-commander
280 (package
281 (name "ruby-commander")
282 (version "4.4.7")
283 (source
284 (origin
285 (method url-fetch)
286 (uri (rubygems-uri "commander" version))
287 (sha256
288 (base32
289 "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg"))))
290 (build-system ruby-build-system)
291 (arguments
292 `(#:test-target "spec"
293 #:phases
294 (modify-phases %standard-phases
295 ;; Don't run or require rubocop, the code linting tool, as this is a
296 ;; bit unnecessary.
297 (add-after 'unpack 'dont-run-rubocop
298 (lambda _
299 (substitute* "Rakefile"
300 ((".*rubocop.*") "")
301 ((".*RuboCop.*") ""))
302 #t)))))
303 (propagated-inputs
304 `(("ruby-highline" ,ruby-highline)))
305 (native-inputs
306 `(("bundler" ,bundler)
307 ("ruby-rspec-core" ,ruby-rspec-core)
308 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
309 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
310 ("ruby-simplecov" ,ruby-simplecov)))
311 (home-page "https://github.com/commander-rb/commander")
312 (synopsis "Library for building Ruby command-line executables")
313 (description
314 "Commander aims to be a complete solution for Ruby command-line
315executables. Commander bridges the gap between other terminal related
316libraries (OptionParser, HighLine), while providing many new features, and an
317elegant API.")
318 (license license:expat)))
319
823ed097
CB
320(define-public ruby-highline
321 (package
322 (name "ruby-highline")
6742c6f6 323 (version "2.0.1")
823ed097
CB
324 (source
325 (origin
326 (method url-fetch)
327 (uri (rubygems-uri "highline" version))
328 (sha256
329 (base32
6742c6f6 330 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
823ed097
CB
331 (build-system ruby-build-system)
332 (arguments
333 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
334 (native-inputs
335 `(("bundler" ,bundler)
336 ("ruby-code-statistics" ,ruby-code-statistics)))
337 (synopsis
338 "HighLine helps you build command-line interfaces")
339 (description
340 "HighLine provides a high-level IO library that provides validation,
341type conversion, and more for command-line interfaces. HighLine also includes
342a menu system for providing multiple options to the user.")
343 (home-page "https://github.com/JEG2/highline")
344 (license (list license:gpl2 license:ruby))))
345
bda0c139
DT
346(define-public ruby-hoe
347 (package
348 (name "ruby-hoe")
d0d2dd24 349 (version "3.21.0")
bda0c139 350 (source (origin
e83c6d00
DT
351 (method url-fetch)
352 (uri (rubygems-uri "hoe" version))
bda0c139
DT
353 (sha256
354 (base32
d0d2dd24 355 "0qid0n56mgsjvq5ksxajv0gb92akky8imwgvw22ajms5g4fd6nf4"))))
bda0c139 356 (build-system ruby-build-system)
d0d2dd24
CB
357 (arguments
358 '(#:phases
359 (modify-phases %standard-phases
360 ;; One of the tests fails if the SOURCE_DATE_EPOCH environment
361 ;; variable is set, so unset it for the duration of the tests.
362 ;;
363 ;; TestHoe#test_possibly_better
364 ;; [/tmp/guix-build-ruby-hoe-3.20.0.drv-0/gem/test/test_hoe.rb:250]:
365 ;; Expected: 2019-11-12 00:00:00 UTC
366 ;; Actual: 1970-01-01 00:00:00 UTC
367 (add-before 'check 'unset-SOURCE-DATE-EPOCH
368 (lambda _
369 (unsetenv "SOURCE_DATE_EPOCH")
370 #t))
371 (add-after 'check 'set-SOURCE-DATE-EPOCH-again
372 (lambda _
373 (setenv "SOURCE_DATE_EPOCH" "1")
374 #t)))))
bda0c139
DT
375 (synopsis "Ruby project management helper")
376 (description
377 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
378maintain, and release projects and includes a dynamic plug-in system allowing
379for easy extensibility. Hoe ships with plug-ins for all the usual project
380tasks including rdoc generation, testing, packaging, deployment, and
381announcement.")
2f3800e5 382 (home-page "https://www.zenspider.com/projects/hoe.html")
bda0c139
DT
383 (license license:expat)))
384
022170dc
PP
385(define-public ruby-rake-compiler
386 (package
387 (name "ruby-rake-compiler")
7ac6bd00 388 (version "1.1.0")
022170dc
PP
389 (source (origin
390 (method url-fetch)
e83c6d00 391 (uri (rubygems-uri "rake-compiler" version))
022170dc
PP
392 (sha256
393 (base32
7ac6bd00 394 "0l4hg21v0phfrfsc2hilgmwvn2imxr0byqh8dv16bya1s5d3km0q"))))
022170dc
PP
395 (build-system ruby-build-system)
396 (arguments
e83c6d00 397 '(#:tests? #f)) ; needs cucumber
022170dc 398 (synopsis "Building and packaging helper for Ruby native extensions")
e881752c 399 (description "Rake-compiler provides a framework for building and
022170dc
PP
400packaging native C and Java extensions in Ruby.")
401 (home-page "https://github.com/rake-compiler/rake-compiler")
402 (license license:expat)))
403
30f08487
RW
404(define-public ruby-rsync
405 (package
406 (name "ruby-rsync")
407 (version "1.0.9")
408 (source
409 (origin
410 (method url-fetch)
411 (uri (rubygems-uri "rsync" version))
412 (sha256
413 (base32
414 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
415 (build-system ruby-build-system)
416 (arguments
417 '(#:test-target "spec"
418 #:phases
419 (modify-phases %standard-phases
420 (add-after 'unpack 'remove-coveralls-requirement
421 (lambda _
422 (substitute* "spec/spec_helper.rb"
423 (("require 'coveralls'") "")
424 (("Coveralls.wear!") ""))
425 #t)))))
426 (native-inputs
427 `(("bundler" ,bundler)
428 ("rsync" ,rsync)
429 ("ruby-rspec-core" ,ruby-rspec-core)
430 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
431 ("ruby-rspec-mocks" ,ruby-rspec-mocks)))
432 (home-page "https://github.com/jbussdieker/ruby-rsync")
433 (synopsis "Ruby wrapper around rsync")
434 (description
435 "Ruby Rsync is a Ruby library that can synchronize files between remote
436hosts by wrapping the @file{rsync} binary.")
437 (license license:expat)))
438
acf735f2
DT
439(define-public ruby-i18n
440 (package
441 (name "ruby-i18n")
92dddf6b 442 (version "1.7.0")
acf735f2
DT
443 (source (origin
444 (method url-fetch)
e83c6d00 445 (uri (rubygems-uri "i18n" version))
acf735f2
DT
446 (sha256
447 (base32
92dddf6b 448 "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl"))))
acf735f2
DT
449 (build-system ruby-build-system)
450 (arguments
0bfdfd37 451 '(#:tests? #f)) ; no tests
cbb50182 452 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
acf735f2
DT
453 (synopsis "Internationalization library for Ruby")
454 (description "Ruby i18n is an internationalization and localization
455solution for Ruby programs. It features translation and localization,
456interpolation of values to translations, pluralization, customizable
457transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
458translation data, custom key/scope separator, custom exception handlers, and
459an extensible architecture with a swappable backend.")
92dddf6b 460 (home-page "https://github.com/ruby-i18n/i18n")
acf735f2 461 (license license:expat)))
eb0c2dd6 462
62b138ca
CB
463(define-public ruby-iruby
464 (package
465 (name "ruby-iruby")
466 (version "0.3")
467 (source
468 (origin
469 (method url-fetch)
470 (uri (rubygems-uri "iruby" version))
471 (sha256
472 (base32
473 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
474 (build-system ruby-build-system)
475 (arguments
476 ;; TODO: Tests currently fail.
477 ;;
478 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
479 ;;
480 ;; 1) Failure:
481 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
482 ;; In [ expected
483 ;;
484 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
485 '(#:tests? #f
486 #:phases
487 (modify-phases %standard-phases
488 (add-after 'unpack 'patch-ipython
489 (lambda* (#:key inputs #:allow-other-keys)
490 (substitute* "lib/iruby/command.rb"
491 (("version = `")
492 (string-append
493 "version = `"
494 (assoc-ref inputs "python-ipython")
495 "/bin/"))
496 (("Kernel\\.exec\\('")
497 (string-append
498 "Kernel.exec('"
499 (assoc-ref inputs "python-ipython")
500 "/bin/")))
501 #t)))))
502 (inputs
503 `(("python-ipython" ,python-ipython)))
504 (propagated-inputs
505 `(("ruby-bond" ,ruby-bond)
506 ("ruby-data_uri" ,ruby-data_uri)
507 ("ruby-mimemagic" ,ruby-mimemagic)
508 ("ruby-multi-json" ,ruby-multi-json)
509 ("ruby-cztop" ,ruby-cztop)
510 ;; Optional inputs
511 ("ruby-pry" ,ruby-pry)))
512 (synopsis "Ruby kernel for Jupyter/IPython")
513 (description
514 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
515notebook).")
516 (home-page "https://github.com/SciRuby/iruby")
517 (license license:expat)))
518
eb0c2dd6
DT
519;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
520;; dependencies use RSpec for their test suites! To avoid these circular
521;; dependencies, we disable tests for all of the RSpec-related packages.
87688ff3 522(define-public ruby-rspec-support
eb0c2dd6
DT
523 (package
524 (name "ruby-rspec-support")
bee67d18 525 (version "3.8.0")
eb0c2dd6
DT
526 (source (origin
527 (method url-fetch)
e83c6d00 528 (uri (rubygems-uri "rspec-support" version))
eb0c2dd6
DT
529 (sha256
530 (base32
bee67d18 531 "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609"))))
eb0c2dd6
DT
532 (build-system ruby-build-system)
533 (arguments
534 '(#:tests? #f)) ; avoid dependency cycles
535 (synopsis "RSpec support library")
536 (description "Support utilities for RSpec gems.")
537 (home-page "https://github.com/rspec/rspec-support")
538 (license license:expat)))
539
540(define-public ruby-rspec-core
541 (package
542 (name "ruby-rspec-core")
bee67d18 543 (version "3.8.0")
eb0c2dd6
DT
544 (source (origin
545 (method url-fetch)
e83c6d00 546 (uri (rubygems-uri "rspec-core" version))
eb0c2dd6
DT
547 (sha256
548 (base32
bee67d18 549 "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p"))))
eb0c2dd6
DT
550 (build-system ruby-build-system)
551 (arguments
552 '(#:tests? #f)) ; avoid dependency cycles
553 (propagated-inputs
554 `(("ruby-rspec-support" ,ruby-rspec-support)))
555 (synopsis "RSpec core library")
556 (description "Rspec-core provides the RSpec test runner and example
557groups.")
558 (home-page "https://github.com/rspec/rspec-core")
559 (license license:expat)))
e6962009 560
64c318f2
BW
561(define-public ruby-rspec-core-2
562 (package (inherit ruby-rspec-core)
563 (version "2.14.8")
564 (source (origin
565 (method url-fetch)
566 (uri (rubygems-uri "rspec-core" version))
567 (sha256
568 (base32
569 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
570 (propagated-inputs `())))
571
20c05ea9 572(define-public ruby-diff-lcs
e6962009
DT
573 (package
574 (name "ruby-diff-lcs")
e2fcef39 575 (version "1.3")
e6962009
DT
576 (source (origin
577 (method url-fetch)
e83c6d00 578 (uri (rubygems-uri "diff-lcs" version))
e6962009
DT
579 (sha256
580 (base32
e2fcef39 581 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
e6962009
DT
582 (build-system ruby-build-system)
583 (arguments
584 '(#:tests? #f)) ; avoid dependency cycles
585 (synopsis "Compute the difference between two Enumerable sequences")
586 (description "Diff::LCS computes the difference between two Enumerable
587sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
588It includes utilities to create a simple HTML diff output format and a
589standard diff-like tool.")
590 (home-page "https://github.com/halostatue/diff-lcs")
591 (license license:expat)))
592
593(define-public ruby-rspec-expectations
594 (package
595 (name "ruby-rspec-expectations")
bee67d18 596 (version "3.8.2")
e6962009
DT
597 (source (origin
598 (method url-fetch)
e83c6d00 599 (uri (rubygems-uri "rspec-expectations" version))
e6962009
DT
600 (sha256
601 (base32
bee67d18 602 "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm"))))
e6962009
DT
603 (build-system ruby-build-system)
604 (arguments
605 '(#:tests? #f)) ; avoid dependency cycles
606 (propagated-inputs
607 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 608 ("ruby-diff-lcs" ,ruby-diff-lcs)))
e881752c 609 (synopsis "RSpec expectations library")
e6962009
DT
610 (description "Rspec-expectations provides a simple API to express expected
611outcomes of a code example.")
612 (home-page "https://github.com/rspec/rspec-expectations")
613 (license license:expat)))
4f2a0cac 614
fb157f25
BW
615(define-public ruby-rspec-expectations-2
616 (package (inherit ruby-rspec-expectations)
617 (version "2.14.5")
618 (source (origin
619 (method url-fetch)
620 (uri (rubygems-uri "rspec-expectations" version))
621 (sha256
622 (base32
623 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
624 (propagated-inputs
625 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
626
999ffb26
DM
627(define-public ruby-rspec-its
628 (package
629 (name "ruby-rspec-its")
b2244c68 630 (version "1.3.0")
999ffb26
DM
631 (source
632 (origin
3306f02a
CB
633 (method git-fetch)
634 (uri (git-reference
635 (url "https://github.com/rspec/rspec-its.git")
636 (commit (string-append "v" version))))
637 (file-name (git-file-name name version))
999ffb26
DM
638 (sha256
639 (base32
b2244c68 640 "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p"))))
999ffb26
DM
641 (build-system ruby-build-system)
642 (arguments
3306f02a
CB
643 `(#:test-target "spec"
644 #:phases
645 (modify-phases %standard-phases
646 (add-after 'unpack 'dont-install-gems-from-gemfile
647 (lambda _
648 (substitute* "Gemfile"
649 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
650 ""))
651 #t))
7c8eb479 652 (add-before 'build 'loosen-ffi-requirement
b2244c68 653 (lambda _
7c8eb479 654 ;; Accept any version of ruby-ffi.
b2244c68 655 (substitute* "Gemfile"
7c8eb479
MB
656 ((" gem 'ffi', '~> 1\\.9\\.25'")
657 " gem 'ffi'"))
b2244c68 658 #t))
3306f02a
CB
659 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
660 (lambda _
661 (substitute* "rspec-its.gemspec"
662 (("rake.*") "rake'\n")
b2244c68
BH
663 (("spec.add_development_dependency 'cucumber'.*")
664 "spec.add_development_dependency 'cucumber'\n")
3306f02a 665 (("bundler.*") "bundler'\n")
b2244c68 666 (("\"aruba.*") "'aruba'\n"))
3306f02a 667 #t)))))
999ffb26
DM
668 (propagated-inputs
669 `(("ruby-rspec-core" ,ruby-rspec-core)
670 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
3306f02a
CB
671 (native-inputs
672 `(("bundler" ,bundler)
673 ("ruby-cucumber" ,ruby-cucumber)
b2244c68 674 ("ruby-ffi" ,ruby-ffi)
3306f02a
CB
675 ("ruby-aruba" ,ruby-aruba)))
676 (synopsis "RSpec extension that provides the @code{its} method")
677 (description
678 "RSpec::Its provides the its method as a short-hand to specify the expected
679value of an attribute. For example, one can use @code{its(:size)\\{should
680eq(1)\\}}.")
999ffb26
DM
681 (home-page "https://github.com/rspec/rspec-its")
682 (license license:expat)))
683
d7bd7016
MC
684;;; This variant is used to break a cycle with ruby-protobuf.
685(define-public ruby-rspec-its-minimal
686 (hidden-package
687 (package
688 (inherit ruby-rspec-its)
689 (arguments
690 (substitute-keyword-arguments (package-arguments ruby-rspec-its)
691 ((#:tests? _ #f) #f)))
692 (native-inputs '()))))
693
4f2a0cac
DT
694(define-public ruby-rspec-mocks
695 (package
696 (name "ruby-rspec-mocks")
bee67d18 697 (version "3.8.0")
4f2a0cac
DT
698 (source (origin
699 (method url-fetch)
e83c6d00 700 (uri (rubygems-uri "rspec-mocks" version))
4f2a0cac
DT
701 (sha256
702 (base32
bee67d18 703 "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp"))))
4f2a0cac
DT
704 (build-system ruby-build-system)
705 (arguments
706 '(#:tests? #f)) ; avoid dependency cycles
707 (propagated-inputs
708 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 709 ("ruby-diff-lcs" ,ruby-diff-lcs)))
4f2a0cac
DT
710 (synopsis "RSpec stubbing and mocking library")
711 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
712support for stubbing and mocking.")
713 (home-page "https://github.com/rspec/rspec-mocks")
714 (license license:expat)))
d4fde1f2 715
6da9adeb
BW
716(define-public ruby-rspec-mocks-2
717 (package (inherit ruby-rspec-mocks)
718 (version "2.14.6")
719 (source (origin
720 (method url-fetch)
721 (uri (rubygems-uri "rspec-mocks" version))
722 (sha256
723 (base32
724 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
725 (propagated-inputs
726 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
727
198bc648
CB
728(define-public ruby-rspec-rerun
729 (package
730 (name "ruby-rspec-rerun")
731 (version "1.1.0")
732 (source
733 (origin
734 (method url-fetch)
735 (uri (rubygems-uri "rspec-rerun" version))
736 (sha256
737 (base32
738 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
739 (build-system ruby-build-system)
740 (arguments
741 '(;; No included tests
742 #:tests? #f))
743 (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
744 (synopsis "Track failed RSpec tests to re-run them")
745 (description
746 "This package provides an automated way to track, and then re-run failed
747RSpec tests.")
748 (home-page "https://github.com/dblock/rspec-rerun")
749 (license license:expat)))
750
9c4cb1ef
CD
751(define-public ruby-rspec-wait
752 (package
753 (name "ruby-rspec-wait")
754 (version "0.0.9")
755 (source
756 (origin
757 (method url-fetch)
758 (uri (rubygems-uri "rspec-wait" version))
759 (sha256
760 (base32
761 "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
762 (build-system ruby-build-system)
763 (arguments
764 '(#:phases
765 (modify-phases %standard-phases
766 (replace 'check
767 (lambda _
768 (invoke "rake" "spec"))))))
769 (native-inputs
770 `(("bundler" ,bundler)))
771 (propagated-inputs
772 `(("ruby-rspec" ,ruby-rspec)))
773 (home-page "https://github.com/laserlemon/rspec-wait")
774 (synopsis "Wait for conditions in RSpec")
775 (description
776 "RSpec::Wait strives to make it easier to test asynchronous or slow
777interactions.")
778 (license license:expat)))
779
d4fde1f2
DT
780(define-public ruby-rspec
781 (package
782 (name "ruby-rspec")
bee67d18 783 (version "3.8.0")
d4fde1f2
DT
784 (source (origin
785 (method url-fetch)
e83c6d00 786 (uri (rubygems-uri "rspec" version))
d4fde1f2
DT
787 (sha256
788 (base32
bee67d18 789 "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3"))))
d4fde1f2
DT
790 (build-system ruby-build-system)
791 (arguments
792 '(#:tests? #f)) ; avoid dependency cycles
793 (propagated-inputs
794 `(("ruby-rspec-core" ,ruby-rspec-core)
795 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
796 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
797 (synopsis "Behavior-driven development framework for Ruby")
798 (description "RSpec is a behavior-driven development (BDD) framework for
799Ruby. This meta-package includes the RSpec test runner, along with the
800expectations and mocks frameworks.")
35739712 801 (home-page "https://rspec.info/")
d4fde1f2 802 (license license:expat)))
2cbc105b 803
5ac984b3
BW
804(define-public ruby-rspec-2
805 (package (inherit ruby-rspec)
806 (version "2.14.1")
807 (source (origin
808 (method url-fetch)
809 (uri (rubygems-uri "rspec" version))
810 (sha256
811 (base32
812 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
813 (propagated-inputs
814 `(("ruby-rspec-core" ,ruby-rspec-core-2)
815 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
816 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
817
2cbc105b
DT
818;; Bundler is yet another source of circular dependencies, so we must disable
819;; its test suite as well.
820(define-public bundler
821 (package
822 (name "bundler")
cbee8e31 823 (version "2.1.4")
2cbc105b
DT
824 (source (origin
825 (method url-fetch)
e83c6d00 826 (uri (rubygems-uri "bundler" version))
2cbc105b
DT
827 (sha256
828 (base32
cbee8e31 829 "12glbb1357x91fvd004jgkw7ihlkpc9dwr349pd7j83isqhls0ah"))))
2cbc105b
DT
830 (build-system ruby-build-system)
831 (arguments
832 '(#:tests? #f)) ; avoid dependency cycles
833 (synopsis "Ruby gem bundler")
834 (description "Bundler automatically downloads and installs a list of gems
835specified in a \"Gemfile\", as well as their dependencies.")
2f3800e5 836 (home-page "https://bundler.io/")
2cbc105b 837 (license license:expat)))
98b87b82 838
cf36174f
RW
839(define-public ruby-builder
840 (package
841 (name "ruby-builder")
42b48db2 842 (version "3.2.3")
cf36174f
RW
843 (source (origin
844 (method url-fetch)
845 (uri (rubygems-uri "builder" version))
846 (sha256
847 (base32
42b48db2 848 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
cf36174f
RW
849 (build-system ruby-build-system)
850 (arguments
851 `(#:phases
852 (modify-phases %standard-phases
853 (add-after 'unpack 'do-not-use-rvm
854 (lambda _
855 (substitute* "rakelib/tags.rake"
856 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
857 #t)))))
858 (synopsis "Ruby library to create structured data")
859 (description "Builder provides a number of builder objects that make it
860easy to create structured data. Currently the following builder objects are
861supported: XML Markup and XML Events.")
862 (home-page "https://github.com/jimweirich/builder")
863 (license license:expat)))
864
566f71f8
CB
865(define-public ruby-bump
866 (package
867 (name "ruby-bump")
868 (version "0.7.0")
869 (source
870 (origin
871 (method url-fetch)
872 (uri (rubygems-uri "bump" version))
873 (sha256
874 (base32
875 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
876 (build-system ruby-build-system)
877 (arguments
878 '(;; No included tests
879 #:tests? #f))
880 (synopsis "Tool for working with Rubygems")
881 (description
882 "Bump provides commands to manage Rubygem versioning, updating to the
883next patch version for example.")
884 (home-page "https://github.com/gregorym/bump")
885 (license license:expat)))
886
ad79eb55
RW
887(define-public ruby-rjb
888 (package
889 (name "ruby-rjb")
aeb4e61e 890 (version "1.5.5")
ad79eb55
RW
891 (source (origin
892 (method url-fetch)
893 (uri (rubygems-uri "rjb" version))
894 (sha256
895 (base32
aeb4e61e 896 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
ad79eb55
RW
897 (build-system ruby-build-system)
898 (arguments
899 `(#:tests? #f ; no rakefile
900 #:phases
901 (modify-phases %standard-phases
902 (add-before 'build 'set-java-home
903 (lambda* (#:key inputs #:allow-other-keys)
904 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
905 #t)))))
906 (native-inputs
d2540f80 907 `(("jdk" ,icedtea "jdk")))
ad79eb55
RW
908 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
909 (description "RJB is a bridge program that connects Ruby and Java via the
910Java Native Interface.")
2f3800e5 911 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
ad79eb55
RW
912 (license license:lgpl2.1+)))
913
f9ae2c06
PP
914(define-public ruby-log4r
915 (package
916 (name "ruby-log4r")
917 (version "1.1.10")
918 (source
919 (origin
920 (method url-fetch)
921 (uri (rubygems-uri "log4r" version))
922 (sha256
923 (base32
924 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
925 (build-system ruby-build-system)
926 (arguments
927 '(#:tests? #f)) ; no Rakefile in gem
928 (synopsis "Flexible logging library for Ruby")
929 (description "Comprehensive and flexible logging library written
930in Ruby for use in Ruby programs. It features a hierarchical logging
931system of any number of levels, custom level names, logger
932inheritance, multiple output destinations per log event, execution
933tracing, custom formatting, thread safteyness, XML and YAML
934configuration, and more.")
935 (home-page "http://log4r.rubyforge.org/")
936 (license license:bsd-3)))
937
71a03c29
RW
938(define-public ruby-atoulme-antwrap
939 (package
940 (name "ruby-atoulme-antwrap")
941 (version "0.7.5")
942 (source (origin
943 (method url-fetch)
944 (uri (rubygems-uri "atoulme-Antwrap" version))
945 (sha256
946 (base32
947 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
948 (build-system ruby-build-system)
949 ;; Test data required for most of the tests are not included.
950 (arguments `(#:tests? #f))
951 (native-inputs
952 `(("ruby-hoe" ,ruby-hoe)))
953 (inputs
954 `(("ruby-rjb" ,ruby-rjb)))
955 (synopsis "Ruby wrapper for the Ant build tool")
956 (description "Antwrap is a Ruby module that wraps the Apache Ant build
957tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
958script.")
959 (home-page "http://rubyforge.org/projects/antwrap/")
960 (license license:expat)))
961
fe1ddad5
RW
962(define-public ruby-atoulme-saikuro
963 (package
964 (name "ruby-atoulme-saikuro")
965 (version "1.2.1")
966 (source (origin
967 (method url-fetch)
968 (uri (rubygems-uri "atoulme-Saikuro" version))
969 (sha256
970 (base32
971 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
972 (build-system ruby-build-system)
973 ;; FIXME: There are no unit tests. The tests are demonstrations of the
974 ;; "saikuro" tool.
975 (arguments `(#:tests? #f))
976 (synopsis "Cyclomatic complexity analyzer")
977 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
978given Ruby source code Saikuro will generate a report listing the cyclomatic
979complexity of each method found. In addition, Saikuro counts the number of
980lines per method and can generate a listing of the number of tokens on each
981line of code.")
982 (home-page "http://www.github.com/atoulme/Saikuro")
983 ;; File headers contain the BSD-3 license and the README.rdoc says that
984 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
985 ;; of the Expat license.
986 (license license:bsd-3)))
987
c84dd8d4
MC
988(define-public ruby-pandoc-ruby
989 (package
990 (name "ruby-pandoc-ruby")
991 (version "2.1.4")
992 (source
993 (origin
994 (method git-fetch) ;the gem lacks many test files
995 (uri (git-reference
996 (url "https://github.com/xwmx/pandoc-ruby.git")
997 (commit version)))
998 (file-name (git-file-name name version))
999 (sha256
1000 (base32
1001 "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935"))))
1002 (build-system ruby-build-system)
1003 (arguments
1004 `(#:phases
1005 (modify-phases %standard-phases
1006 (add-after 'unpack 'disable-failing-tests
1007 ;; TODO: Remove this phase after ghc-pandoc gets upgraded to 2.9.2+
1008 ;; (see: https://github.com/xwmx/pandoc-ruby/issues/39).
1009 (lambda _
1010 (substitute* "test/test_conversions.rb"
1011 (("next if from == to.*" all)
1012 (string-append
1013 all
1014 " next if ['plain', 'beamer'].include? to\n")))
1015 #t))
1016 (add-after 'unpack 'patch-pandoc-path
1017 (lambda* (#:key inputs #:allow-other-keys)
1018 (let ((pandoc (string-append (assoc-ref inputs "ghc-pandoc")
1019 "/bin/pandoc")))
1020 (substitute* "lib/pandoc-ruby.rb"
1021 (("@@pandoc_path = 'pandoc'")
1022 (format #f "@@pandoc_path = '~a'" pandoc)))
1023 (substitute* "test/test_pandoc_ruby.rb"
1024 (("('|\")pandoc" _ quote)
1025 (string-append quote pandoc))
1026 (("\\^pandoc")
1027 ".*pandoc"))
1028 #t)))
1029 (add-after 'extract-gemspec 'remove-Gemfile.lock
1030 (lambda _
1031 (delete-file "Gemfile.lock")
1032 (substitute* "pandoc-ruby.gemspec"
1033 (("Gemfile\\.lock") ""))
1034 #t)))))
1035 (native-inputs
1036 `(("ruby-mocha" ,ruby-mocha)))
1037 (inputs
1038 `(("ghc-pandoc" ,ghc-pandoc)))
1039 (synopsis "Ruby wrapper for Pandoc")
1040 (description "PandocRuby is a wrapper for Pandoc, a Haskell library with
1041command line tools for converting one markup format to another. Pandoc can
1042convert documents from a variety of formats including markdown,
1043reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a
1044variety of other formats, including markdown, reStructuredText, HTML, LaTeX,
1045ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki
1046markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and
1047more.")
1048 (home-page "https://github.com/xwmx/pandoc-ruby")
1049 (license license:expat)))
1050
34138e42
BW
1051(define-public ruby-asciidoctor
1052 (package
1053 (name "ruby-asciidoctor")
9933a8e7 1054 (version "1.5.7.1")
34138e42
BW
1055 (source
1056 (origin
1057 (method url-fetch)
1058 (uri (rubygems-uri "asciidoctor" version))
1059 (sha256
1060 (base32
9933a8e7 1061 "0v52bzc72cvg7zfgq27pa4mgyf29dx9m20fghrw1xmvwgd519n1w"))))
34138e42
BW
1062 (build-system ruby-build-system)
1063 (arguments
1064 `(#:test-target "test:all"
1065 #:phases
1066 (modify-phases %standard-phases
1067 (add-before 'check 'remove-circular-tests
1068 (lambda _
1069 ;; Remove tests that require circular dependencies to load or pass.
1070 (delete-file "test/invoker_test.rb")
1071 (delete-file "test/converter_test.rb")
1072 (delete-file "test/options_test.rb")
1073 #t)))))
1074 (native-inputs
1075 `(("ruby-minitest" ,ruby-minitest)
1076 ("ruby-nokogiri" ,ruby-nokogiri)
1077 ("ruby-asciimath" ,ruby-asciimath)
1078 ("ruby-coderay" ,ruby-coderay)))
1079 (synopsis "Converter from AsciiDoc content to other formats")
1080 (description
1081 "Asciidoctor is a text processor and publishing toolchain for converting
20860819 1082AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other formats.")
bba082a1 1083 (home-page "https://asciidoctor.org")
34138e42
BW
1084 (license license:expat)))
1085
d5840f77
CB
1086(define-public ruby-ast
1087 (package
1088 (name "ruby-ast")
1089 (version "2.4.0")
1090 (source
1091 (origin
1092 (method url-fetch)
1093 (uri (rubygems-uri "ast" version))
1094 (sha256
1095 (base32
1096 "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7"))))
1097 (build-system ruby-build-system)
1098 (arguments
1099 '(#:phases
1100 (modify-phases %standard-phases
1101 (add-after 'unpack 'remove-coveralls-requirement
1102 (lambda _
1103 (substitute* "test/helper.rb"
1104 (("require 'coveralls'") "")
1105 (("Coveralls::SimpleCov::Formatter") ""))
1106 #t))
1107 (add-after 'extract-gemspec 'remove-unnecessary-requirements
1108 (lambda _
1109 (substitute* "ast.gemspec"
1110 ((".*coveralls.*") "\n")
1111 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
1112 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
1113 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n"))
1114 #t)))))
1115 (native-inputs
1116 `(("bundler" ,bundler)
1117 ("ruby-simplecov" ,ruby-simplecov)
1118 ("ruby-json-pure" ,ruby-json-pure)
1119 ("ruby-mime-times" ,ruby-mime-types)
1120 ("ruby-yard" ,ruby-yard)
1121 ("ruby-kramdown" ,ruby-kramdown)
1122 ("ruby-rest-client" ,ruby-rest-client)
1123 ("ruby-bacon" ,ruby-bacon)
1124 ("ruby-bacon-colored-output" ,ruby-bacon-colored-output)
1125 ("ruby-racc" ,ruby-racc)))
1126 (synopsis "Library for working with Abstract Syntax Trees")
1127 (description
1128 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
1129It does this through immutable data structures.")
1130 (home-page "https://whitequark.github.io/ast/")
1131 (license license:expat)))
1132
b88502c9
BW
1133(define-public ruby-sporkmonger-rack-mount
1134 ;; Testing the addressable gem requires a newer commit than that released, so
1135 ;; use an up to date version.
1136 (let ((revision "1")
1137 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
1138 (package
1139 (name "ruby-sporkmonger-rack-mount")
1140 (version (git-version "0.8.3" revision commit))
1141 (source (origin
1142 (method git-fetch)
1143 (uri (git-reference
1144 (url "https://github.com/sporkmonger/rack-mount.git")
1145 (commit commit)))
1146 (file-name (git-file-name name version))
1147 (sha256
1148 (base32
1149 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
1150 (build-system ruby-build-system)
1151 (arguments
1152 ;; Tests currently fail so disable them.
1153 ;; https://github.com/sporkmonger/rack-mount/pull/1
1154 `(#:tests? #f))
1155 (propagated-inputs `(("ruby-rack" ,ruby-rack)))
1156 (synopsis "Stackable dynamic tree based Rack router")
1157 (description
1158 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
1159continue trying routes if the response returns pass. This allows multiple
1160routes to be nested or stacked on top of each other.")
1161 (home-page "https://github.com/sporkmonger/rack-mount")
1162 (license license:expat))))
1163
2f9e0b68
RW
1164(define-public ruby-ci-reporter
1165 (package
1166 (name "ruby-ci-reporter")
1167 (version "2.0.0")
1168 (source (origin
1169 (method url-fetch)
1170 (uri (rubygems-uri "ci_reporter" version))
1171 (sha256
1172 (base32
1173 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
1174 (build-system ruby-build-system)
1175 (arguments
1176 `(#:test-target "rspec"))
1177 (propagated-inputs
1178 `(("ruby-builder" ,ruby-builder)))
1179 (native-inputs
1180 `(("bundler" ,bundler)
1181 ("ruby-rspec" ,ruby-rspec)))
1182 (synopsis "Generate XML reports of runs test")
1183 (description
1184 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
1185you to generate XML reports of your test runs. The resulting files can be
1186read by a continuous integration system that understands Ant's JUnit report
1187format.")
1188 (home-page "https://github.com/nicksieger/ci_reporter")
1189 (license license:expat)))
1190
2ed201c1
CB
1191(define-public ruby-contracts
1192 (package
1193 (name "ruby-contracts")
1194 (version "0.16.0")
1195 (source
1196 (origin
1197 (method url-fetch)
1198 (uri (rubygems-uri "contracts" version))
1199 (sha256
1200 (base32
1201 "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"))))
1202 (build-system ruby-build-system)
1203 (arguments
1204 '(#:test-target "spec"
1205 #:phases
1206 (modify-phases %standard-phases
1207 ;; Don't run or require rubocop, the code linting tool, as this is a
1208 ;; bit unnecessary.
1209 (add-after 'unpack 'dont-run-rubocop
1210 (lambda _
1211 (substitute* "Rakefile"
1212 ((".*rubocop.*") "")
1213 ((".*RuboCop.*") ""))
1214 #t)))))
1215 (native-inputs
1216 `(("ruby-rspec" ,ruby-rspec)))
1217 (synopsis "Method contracts for Ruby")
1218 (description
1219 "This library provides contracts for Ruby. A contract describes the
1220correct inputs and output for a method, and will raise an error if a incorrect
1221value is found.")
1222 (home-page "https://github.com/egonSchiele/contracts.ruby")
1223 (license license:bsd-2)))
1224
6f8bf0eb
CB
1225(define-public ruby-crack
1226 (package
1227 (name "ruby-crack")
1228 (version "0.4.3")
1229 (source
1230 (origin
1231 (method url-fetch)
1232 (uri (rubygems-uri "crack" version))
1233 (sha256
1234 (base32
1235 "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k"))))
1236 (build-system ruby-build-system)
1237 (arguments
1238 `(#:phases
1239 (modify-phases %standard-phases
1240 (replace 'check
1241 (lambda* (#:key tests? #:allow-other-keys)
1242 (when tests?
1243 (for-each (lambda (file)
1244 (display file)(display "\n")
1245 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
1246 (find-files "test" ".*rb$")))
1247 #t)))))
1248 (propagated-inputs
1249 `(("ruby-safe-yaml" ,ruby-safe-yaml)))
1250 (synopsis "Simple JSON and XML parsing for Ruby")
1251 (description
1252 "@code{crack} provides really simple JSON and XML parsing, extracted from
1253code in Merb and Rails.")
1254 (home-page "https://github.com/jnunemaker/crack")
1255 (license license:expat)))
1256
bef3506e
CB
1257(define-public ruby-cliver
1258 (package
1259 (name "ruby-cliver")
1260 (version "0.3.2")
1261 (source
1262 (origin
1263 (method url-fetch)
1264 (uri (rubygems-uri "cliver" version))
1265 (sha256
1266 (base32
1267 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
1268 (build-system ruby-build-system)
1269 (arguments
1270 '(#:phases
1271 (modify-phases %standard-phases
1272 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
1273 ;; would be nice, but the tests look to be incompatible:
1274 ;;
1275 ;; NoMethodError: undefined method `last_comment'
1276 (replace 'check
1277 (lambda* (#:key tests? #:allow-other-keys)
1278 (when tests?
1279 (invoke "rspec"))
1280 #t)))))
1281 (native-inputs
1282 `(("bundler" ,bundler)
1283 ("ruby-rspec" ,ruby-rspec-2)))
1284 (synopsis "Assertions for command-line dependencies in Ruby")
1285 (description
1286 "@code{cliver} provides a way to detect missing command-line
1287dependencies, including versions.")
1288 (home-page "https://github.com/yaauie/cliver")
1289 (license license:expat)))
1290
fe5dd5f4
CB
1291(define-public ruby-czmq-ffi-gen
1292 (package
1293 (name "ruby-czmq-ffi-gen")
1294 (version "0.13.0")
1295 (source
1296 (origin
1297 (method url-fetch)
1298 (uri (rubygems-uri "czmq-ffi-gen" version))
1299 (sha256
1300 (base32
1301 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
1302 (build-system ruby-build-system)
1303 (arguments
1304 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
1305 #:phases
1306 (modify-phases %standard-phases
1307 (add-after 'unpack 'patch-lib_dirs
1308 (lambda* (#:key inputs #:allow-other-keys)
1309 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
1310 (("lib\\_dirs = \\[.*\\]")
1311 (string-append "lib_dirs = ['"
1312 (assoc-ref inputs "czmq") "/lib"
1313 "']")))
1314 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
1315 (("lib\\_dirs = \\[.*\\]")
1316 (string-append "lib_dirs = ['"
1317 (assoc-ref inputs "zeromq") "/lib"
1318 "']"))))))))
1319 (inputs
1320 `(("zeromq" ,zeromq)
1321 ("czmq" ,czmq)))
1322 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
1323 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
1324 (description
1325 "These Ruby bindings are not intended to be directly used, but rather
1326used by higher level bindings like those provided by CZTop.")
1327 (home-page
1328 "https://github.com/paddor/czmq-ffi-gen")
1329 (license license:isc)))
1330
d0afff26
CB
1331(define-public ruby-cztop
1332 (package
1333 (name "ruby-cztop")
1334 (version "0.12.2")
1335 (source
1336 (origin
1337 (method url-fetch)
1338 (uri (rubygems-uri "cztop" version))
1339 (sha256
1340 (base32
1341 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
1342 (build-system ruby-build-system)
1343 (arguments
1344 '(#:test-target "spec"
1345 #:phases
1346 (modify-phases %standard-phases
1347 (add-after 'unpack 'patch-lib_paths
1348 (lambda* (#:key inputs #:allow-other-keys)
1349 (substitute* "lib/cztop/poller/zmq.rb"
1350 (("lib\\_paths = \\[.*\\]")
1351 (string-append "lib_paths = ['"
1352 (assoc-ref inputs "zeromq") "/lib"
1353 "']"))))))))
1354 (native-inputs
1355 `(("bundler" ,bundler)
1356 ("ruby-rspec" ,ruby-rspec)))
1357 (inputs
1358 `(("zeromq" ,zeromq)))
1359 (propagated-inputs
1360 `(("ruby-czmq-ffi-gen" ,ruby-czmq-ffi-gen)))
1361 (synopsis "CZMQ Ruby bindings")
1362 (description
1363 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
1364CZMQ. The focus of of CZTop is on being easy to use and providing first class
1365support for security mechanisms.")
1366 (home-page "https://github.com/paddor/cztop")
1367 (license license:isc)))
1368
b004fb6a
RW
1369(define-public ruby-saikuro-treemap
1370 (package
1371 (name "ruby-saikuro-treemap")
1372 (version "0.2.0")
1373 (source (origin
1374 (method url-fetch)
1375 (uri (rubygems-uri "saikuro_treemap" version))
1376 (sha256
1377 (base32
1378 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
1379 (build-system ruby-build-system)
1380 ;; Some of the tests fail because the generated JSON has keys in a
1381 ;; different order. This is a problem with the test suite rather than any
1382 ;; of the involved libraries.
1383 (arguments `(#:tests? #f))
1384 (propagated-inputs
1385 `(("ruby-json-pure" ,ruby-json-pure)
1386 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
1387 (synopsis "Generate complexity treemap based on saikuro analysis")
1388 (description
1389 "This gem generates a treemap showing the complexity of Ruby code on
1390which it is run. It uses Saikuro under the covers to analyze Ruby code
1391complexity.")
7bf837fd 1392 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
b004fb6a
RW
1393 (license license:expat)))
1394
92b37500
CB
1395(define-public ruby-oauth2
1396 (package
1397 (name "ruby-oauth2")
5dd10be5 1398 (version "1.4.2")
92b37500
CB
1399 (source
1400 (origin
1401 (method url-fetch)
1402 (uri (rubygems-uri "oauth2" version))
1403 (sha256
5dd10be5 1404 (base32 "15i9z4j5pcjkr30lkcd79xzbr4kpmy0bqgwa436fqyqk646fv036"))))
92b37500
CB
1405 (build-system ruby-build-system)
1406 (arguments
5dd10be5 1407 '(#:tests? #f)) ; no included tests
92b37500
CB
1408 (propagated-inputs
1409 `(("ruby-faraday" ,ruby-faraday)
1410 ("ruby-jwt" ,ruby-jwt)
1411 ("ruby-multi-json" ,ruby-multi-json)
1412 ("ruby-multi-xml" ,ruby-multi-xml)
1413 ("ruby-rack" ,ruby-rack)))
1414 (synopsis "Ruby wrapper for the OAuth 2.0")
1415 (description
1416 "This package provides a Ruby wrapper for the OAuth 2.0 protocol built
1417with a similar style to the original OAuth spec.")
1418 (home-page "https://github.com/oauth-xx/oauth2")
1419 (license license:expat)))
1420
29dc4823
CB
1421(define-public ruby-omniauth
1422 (package
1423 (name "ruby-omniauth")
a7b7817d 1424 (version "1.9.1")
29dc4823
CB
1425 (source
1426 (origin
1427 (method url-fetch)
1428 (uri (rubygems-uri "omniauth" version))
1429 (sha256
a7b7817d 1430 (base32 "002vi9gwamkmhf0dsj2im1d47xw2n1jfhnzl18shxf3ampkqfmyz"))))
29dc4823
CB
1431 (build-system ruby-build-system)
1432 (arguments
1433 '(#:tests? #f)) ; No included tests
1434 (propagated-inputs
1435 `(("ruby-hashie" ,ruby-hashie)
1436 ("ruby-rack" ,ruby-rack)))
1437 (synopsis "Generalized Rack framework for multiple-provider authentication")
1438 (description
1439 "This package provides a generalized Rack framework for multiple-provider
1440authentication.")
1441 (home-page "https://github.com/omniauth/omniauth")
1442 (license license:expat)))
1443
d6084cdb
CB
1444(define-public ruby-omniauth-oauth2
1445 (package
1446 (name "ruby-omniauth-oauth2")
1447 (version "1.6.0")
1448 (source
1449 (origin
1450 (method url-fetch)
1451 (uri (rubygems-uri "omniauth-oauth2" version))
1452 (sha256
1453 (base32
1454 "11mi36l9d97r77q99jnafdc1yaa0a9wahhpp7dj7ank8q52g7g79"))))
1455 (build-system ruby-build-system)
1456 (arguments
1457 '(#:phases
1458 (modify-phases %standard-phases
1459 (add-after 'unpack 'remove-unnecessary-dependencies
1460 (lambda _
1461 ;; The coveralls gem submits coverage information to an online
1462 ;; service, and is unnecessary when running the tests
1463 (substitute* "Gemfile"
1464 ((".*coveralls\"") ""))
1465 (substitute* "spec/helper.rb"
1466 (("require \"coveralls\"") "")
1467 (("Coveralls::SimpleCov::Formatter") ""))
1468 #t)))))
1469 (propagated-inputs
1470 `(("ruby-oauth2" ,ruby-oauth2)
1471 ("ruby-omniauth" ,ruby-omniauth)))
1472 (native-inputs
1473 `(("bundler" ,bundler)
1474 ("ruby-rspec" ,ruby-rspec)
1475 ("ruby-simplecov" ,ruby-simplecov)
1476 ("ruby-rack-test" ,ruby-rack-test)
1477 ("ruby-webmock" ,ruby-webmock-2)))
1478 (synopsis "Abstract OAuth2 strategy for OmniAuth")
1479 (description
1480 "This library provides a generic OAuth2 strategy for OmniAuth. It
1481doesn't provide a way to gather user information, so should be used as a
1482building block for authentication strategies.")
1483 (home-page "https://github.com/omniauth/omniauth-oauth2")
1484 (license license:expat)))
1485
433e3154
CB
1486(define-public ruby-open4
1487 (package
1488 (name "ruby-open4")
1489 (version "1.3.4")
1490 (source
1491 (origin
1492 (method url-fetch)
1493 (uri (rubygems-uri "open4" version))
1494 (sha256
1495 (base32
1496 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
1497 (build-system ruby-build-system)
1498 (arguments
1499 '(#:phases
1500 (modify-phases %standard-phases
1501 (add-after 'unpack 'patch
1502 (lambda _
1503 (substitute* "rakefile"
1504 ;; Update the Rakefile so it works
1505 (("-rubygems") "-rrubygems")
1506 (("Config") "RbConfig"))
1507 #t))
1508 (add-before 'check 'set-LIB
1509 (lambda _
1510 ;; This is used in the rakefile when running the tests
1511 (setenv "LIB" "open4")
1512 #t)))))
1513 (synopsis "Open child processes from Ruby and manage them easily")
1514 (description
1515 "@code{Open4} is a Ruby library to run child processes and manage their
1516input and output.")
1517 (home-page "https://github.com/ahoward/open4")
1518 (license license:ruby)))
1519
cef87ed6
CB
1520(define-public ruby-options
1521 (package
1522 (name "ruby-options")
1523 (version "2.3.2")
1524 (source
1525 (origin
1526 (method url-fetch)
1527 (uri (rubygems-uri "options" version))
1528 (sha256
1529 (base32
1530 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
1531 (build-system ruby-build-system)
1532 (arguments
1533 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
1534 #:phases
1535 (modify-phases %standard-phases
1536 (add-before 'check 'set-LIB
1537 (lambda _
1538 ;; This is used in the Rakefile, and setting it avoids an issue
1539 ;; with running the tests.
fe27238c
CB
1540 (setenv "LIB" "options")
1541 #t)))))
cef87ed6
CB
1542 (synopsis "Ruby library to parse options from *args cleanly")
1543 (description
1544 "The @code{options} library helps with parsing keyword options in Ruby
1545functions.")
1546 (home-page "https://github.com/ahoward/options")
1547 (license license:ruby)))
1548
d15dbe83
CB
1549(define-public ruby-erubi
1550 (package
1551 (name "ruby-erubi")
1552 (version "1.8.0")
1553 (source
1554 (origin
1555 (method url-fetch)
1556 (uri (rubygems-uri "erubi" version))
1557 (sha256
1558 (base32
1559 "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1"))))
1560 (build-system ruby-build-system)
1561 (synopsis "ERB template engine for Ruby")
1562 (description
1563 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
1564Erubis")
1565 (home-page "https://github.com/jeremyevans/erubi")
1566 (license license:expat)))
1567
d64ebebd
BW
1568(define-public ruby-erubis
1569 (package
1570 (name "ruby-erubis")
1571 (version "2.7.0")
1572 (source
1573 (origin
1574 (method url-fetch)
1575 (uri (rubygems-uri "erubis" version))
1576 (sha256
1577 (base32
1578 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
1579 (build-system ruby-build-system)
1580 (arguments
1581 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
1582 (synopsis "Implementation of embedded Ruby (eRuby)")
1583 (description
1584 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
1585features such as multi-language support, auto escaping, auto trimming spaces
1586around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
1587support.")
1588 (home-page "http://www.kuwata-lab.com/erubis/")
1589 (license license:expat)))
1590
3ca43524
CB
1591(define-public ruby-execjs
1592 (package
1593 (name "ruby-execjs")
1594 (version "2.7.0")
1595 (source
1596 (origin
1597 ;; fetch from github as the gem does not contain testing code
1598 (method git-fetch)
1599 (uri (git-reference
1600 (url "https://github.com/rails/execjs.git")
1601 (commit (string-append "v" version))))
1602 (file-name (git-file-name name version))
1603 (sha256
1604 (base32
1605 "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
1606 (build-system ruby-build-system)
1607 (native-inputs
1608 `(("bundler" ,bundler)
1609 ;; The test suite tests all the available backends. Currenly, this just
1610 ;; means the node backend.
1611 ;;
1612 ;; PASSED: test:node
1613 ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
1614 ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
1615 ("node" ,node)))
1616 (synopsis "Run JavaScript code from Ruby")
1617 (description
1618 "ExecJS lets you run JavaScript code from Ruby. It automatically picks a
1619runtime to evaluate your JavaScript program, then returns the result to you as
1620a Ruby object.")
1621 (home-page "https://github.com/rails/execjs")
1622 (license license:expat)))
1623
6623a151
MB
1624(define-public ruby-fakefs
1625 (package
1626 (name "ruby-fakefs")
1627 (version "1.2.2")
1628 (home-page "https://github.com/fakefs/fakefs")
1629 (source (origin
1630 ;; The Rubygems release does not contain tests.
1631 (method git-fetch)
1632 (uri (git-reference
1633 (url home-page)
1634 (commit (string-append "v" version))))
1635 (file-name (git-file-name name version))
1636 (sha256
1637 (base32
1638 "008dq9knyip2bfbl0mrk8b8r7bv0k3bf128wcfqsgy1rqal4mgwk"))))
1639 (build-system ruby-build-system)
1640 (arguments
1641 '(#:phases (modify-phases %standard-phases
1642 (replace 'replace-git-ls-files
1643 (lambda _
1644 (substitute* "fakefs.gemspec"
1645 (("`git ls-files lib README.md LICENSE`")
1646 "`find lib README.md LICENSE -type f | sort`"))
1647 #t))
1648 (add-before 'check 'remove-version-constraints
1649 (lambda _
1650 ;; Drop hard version requirements for test dependencies.
1651 (substitute* "fakefs.gemspec"
1652 (("(.*add_development_dependency .*), .*" _ dep)
1653 (string-append dep "\n")))
a011f67b 1654 #t)))))
6623a151
MB
1655 (native-inputs
1656 `(("ruby-bump" ,ruby-bump)
1657 ("ruby-maxitest" ,ruby-maxitest)
1658 ("ruby-rubocop" ,ruby-rubocop)
1659 ("ruby-rspec" ,ruby-rspec)))
1660 (synopsis "Fake file system for Ruby")
1661 (description
1662 "This package provides a fake file system for use in test suites. It
1663avoids the need for manually creating temporary directories, or dealing
1664with platform intricacies in @code{File} and @code{FileUtils}.")
1665 (license license:expat)))
1666
cc53e630
RW
1667(define-public ruby-orderedhash
1668 (package
1669 (name "ruby-orderedhash")
1670 (version "0.0.6")
1671 (source (origin
1672 (method url-fetch)
1673 (uri (rubygems-uri "orderedhash" version))
1674 (sha256
1675 (base32
1676 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
1677 (build-system ruby-build-system)
1678 (arguments
1679 '(#:tests? #f)) ; no test suite
1680 (synopsis "Ruby library providing an order-preserving hash")
1681 (description "Orderedhash is a Ruby library providing a hash
1682implementation that preserves the order of items and features some array-like
1683extensions.")
1684 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
1685 (license license:public-domain)))
1686
28c5d42d
PP
1687(define-public ruby-libxml
1688 (package
1689 (name "ruby-libxml")
acbc5062 1690 (version "3.0.0")
28c5d42d
PP
1691 (source
1692 (origin
1693 (method url-fetch)
1694 (uri (rubygems-uri "libxml-ruby" version))
1695 (sha256
1696 (base32
acbc5062 1697 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
28c5d42d
PP
1698 (build-system ruby-build-system)
1699 (inputs
1700 `(("zlib" ,zlib)
1701 ("libxml2" ,libxml2)))
1702 (arguments
1703 '(#:tests? #f ; test suite hangs for unknown reason
1704 #:gem-flags
1705 (list "--"
1706 (string-append "--with-xml2-include="
1707 (assoc-ref %build-inputs "libxml2")
1708 "/include/libxml2" ))))
1709 (synopsis "Ruby bindings for GNOME Libxml2")
1710 (description "The Libxml-Ruby project provides Ruby language bindings for
1711the GNOME Libxml2 XML toolkit.")
2f3800e5 1712 (home-page "https://xml4r.github.com/libxml-ruby")
28c5d42d
PP
1713 (license license:expat)))
1714
b3222518
CB
1715(define-public ruby-lino
1716 (package
1717 (name "ruby-lino")
1718 (version "1.1.0")
1719 (source
1720 (origin
1721 (method url-fetch)
1722 (uri (rubygems-uri "lino" version))
1723 (sha256
1724 (base32
1725 "11d29g0fk372b9fcpyr0k6hxm2b4j4igpysmi542hgbbgqgp9cd3"))))
1726 (build-system ruby-build-system)
1727 (arguments
1728 '(#:tests? #f)) ; No included tests
1729 (propagated-inputs
1730 `(("ruby-hamster" ,ruby-hamster)
1731 ("ruby-open4" ,ruby-open4)))
1732 (synopsis "Build and execute commands in Ruby")
1733 (description
1734 "@code{Lino} provides an interface to run external commands. It provides
1735an interface to add options as well as managing the standard input, output and
1736error streams.")
1737 (home-page "https://github.com/tobyclemson/lino")
1738 (license license:expat)))
1739
8b9bde07
RW
1740(define-public ruby-xml-simple
1741 (package
1742 (name "ruby-xml-simple")
1743 (version "1.1.5")
1744 (source (origin
1745 (method url-fetch)
1746 (uri (rubygems-uri "xml-simple" version))
1747 (sha256
1748 (base32
1749 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
1750 (build-system ruby-build-system)
1751 (arguments
1752 '(#:tests? #f)) ; no test suite
1753 (synopsis "Simple Ruby library for XML processing")
1754 (description "This library provides a simple API for XML processing in
1755Ruby.")
1756 (home-page "https://github.com/maik/xml-simple")
1757 (license license:ruby)))
1758
2cb3ab48
RW
1759(define-public ruby-thor
1760 (package
1761 (name "ruby-thor")
bb719d6a 1762 (version "1.0.1")
2cb3ab48 1763 (source (origin
bb719d6a
MB
1764 ;; Pull from git because the gem has no tests.
1765 (method git-fetch)
1766 (uri (git-reference
1767 (url "https://github.com/erikhuda/thor")
1768 (commit (string-append "v" version))))
1769 (file-name (git-file-name name version))
2cb3ab48
RW
1770 (sha256
1771 (base32
bb719d6a 1772 "1anrx5vynk57hn5c8ig5pgkmcsbj9q5mvckd5rviw1jid7n89k57"))))
2cb3ab48
RW
1773 (build-system ruby-build-system)
1774 (arguments
bb719d6a
MB
1775 '(#:phases (modify-phases %standard-phases
1776 (add-after 'unpack 'fix-readline-tests
1777 (lambda _
1778 ;; Ensure Readline is initialized before running the
1779 ;; test to avoid a type clash with the mock ::Readline.
1780 ;; See <https://github.com/erikhuda/thor/pull/717>.
1781 (substitute* "spec/line_editor/readline_spec.rb"
1782 (("unless defined\\? ::Readline" all)
1783 (string-append "Thor::LineEditor::Readline.available?\n"
1784 all)))
1785 #t))
1786 (add-after 'unpack 'remove-coveralls-dependency
1787 (lambda _
1788 ;; Do not hook the test suite into the online
1789 ;; coveralls service.
1790 (substitute* "Gemfile"
1791 ((".*coveralls.*") ""))
1792 (substitute* "spec/helper.rb"
1793 (("require \"coveralls\"") "")
1794 (("Coveralls::SimpleCov::Formatter") "")
1795 ;; Also drop the WebMock dependency which is only
1796 ;; present to allow a coveralls.io connection, and
1797 ;; would otherwise introduce a circular dependency.
1798 (("require \"webmock/rspec\"") "")
1799 (("WebMock\\.disable_net_connect.*") ""))
1800 #t))
1801 (add-after 'unpack 'disable-network-tests
1802 (lambda _
1803 ;; These tests attempt to look up example.com.
1804 (substitute* "spec/actions/file_manipulation_spec.rb"
1805 (("it \"accepts (https?) remote sources" _ proto)
1806 (string-append "xit \"accepts " proto " remote sources")))
1807 #t))
1808 (add-after 'unpack 'disable-quality-tests
1809 (lambda _
1810 ;; These tests attempt to check the git repository for
1811 ;; tabs vs spaces, double vs single quotes, etc, and
1812 ;; depend on the git checkout.
1813 (delete-file "spec/quality_spec.rb")
1814 #t))
1815 (add-before 'check 'make-files-writable
1816 (lambda _
1817 ;; The tests needs rw access to the test suite.
1818 (for-each make-file-writable (find-files "spec"))
1819 #t))
1820 (replace 'check
1821 (lambda _
1822 (invoke "rspec" "spec"))))))
2cb3ab48 1823 (native-inputs
bb719d6a
MB
1824 `(("ruby-rspec" ,ruby-rspec)
1825 ("ruby-simplecov" ,ruby-simplecov)))
2cb3ab48
RW
1826 (synopsis "Ruby toolkit for building command-line interfaces")
1827 (description "Thor is a toolkit for building powerful command-line
1828interfaces.")
1829 (home-page "http://whatisthor.com/")
1830 (license license:expat)))
1831
ec79018e
RW
1832(define-public ruby-lumberjack
1833 (package
1834 (name "ruby-lumberjack")
41700efa 1835 (version "1.0.13")
ec79018e
RW
1836 (source (origin
1837 (method url-fetch)
1838 (uri (rubygems-uri "lumberjack" version))
1839 (sha256
1840 (base32
41700efa 1841 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
ec79018e
RW
1842 (build-system ruby-build-system)
1843 (native-inputs
8be62d3f
BW
1844 `(("ruby-rspec" ,ruby-rspec)
1845 ("ruby-timecop" ,ruby-timecop)))
ec79018e
RW
1846 (synopsis "Logging utility library for Ruby")
1847 (description "Lumberjack is a simple logging utility that can be a drop in
1848replacement for Logger or ActiveSupport::BufferedLogger. It provides support
1849for automatically rolling log files even with multiple processes writing the
1850same log file.")
7bf837fd 1851 (home-page "https://github.com/bdurand/lumberjack")
ec79018e
RW
1852 (license license:expat)))
1853
2a9ce5cb
CB
1854(define-public ruby-rbnacl
1855 (package
1856 (name "ruby-rbnacl")
1857 (version "6.0.1")
1858 (source
1859 (origin
1860 (method url-fetch)
1861 (uri (rubygems-uri "rbnacl" version))
1862 (sha256
1863 (base32
1864 "0ajxy5kj2jw09wdsla3jmha8w07vj5l14288xr9djpl327g3lzhn"))))
1865 (build-system ruby-build-system)
1866 (arguments
1867 `(#:phases
1868 (modify-phases %standard-phases
1869 (add-after 'unpack 'remove-unnecessary-dependencies
1870 (lambda _
1871 ;; Coveralls relates to a network service, and Rubocop to code
1872 ;; linting and both are unnecessary to run the tests
1873 (substitute* "Gemfile"
1874 ((".*rubocop.*") "\n")
1875 ((".*guard-rspec.*") "\n")
1876 ((".*coveralls.*") "\n"))
1877 (substitute* "spec/spec_helper.rb"
1878 (("require \"coveralls\"") "")
1879 (("Coveralls.wear!") ""))
1880 #t))
1881 (add-after 'unpack 'use-libsodium-from-store
1882 (lambda* (#:key inputs #:allow-other-keys)
1883 (substitute* '("lib/rbnacl/init.rb"
1884 "lib/rbnacl/sodium.rb")
1885 (("ffi_lib \\[.+\\]")
1886 (string-append "ffi_lib [\""
1887 (assoc-ref inputs "libsodium") "/lib/libsodium.so"
1888 "\"]")))
1889 #t))
1890 ;; Run Rspec directly to avoid the Rubocop dependency in the Rakefile
1891 (replace 'check
1892 (lambda* (#:key tests? #:allow-other-keys)
1893 (when tests?
1894 (invoke "rspec"))
1895 #t)))))
1896 (propagated-inputs
1897 `(("ruby-ffi" ,ruby-ffi)))
1898 (inputs
1899 `(("libsodium" ,libsodium)))
1900 (native-inputs
1901 `(("bundler" ,bundler)
1902 ("ruby-rspec" ,ruby-rspec)))
1903 (synopsis "Ruby FFI binding to libsodium")
1904 (description
1905 "This package provides Ruby FFI bindings to the Networking and
1906Cryptography (NaCl) library, also known as libsodium. This provides a
1907high-level toolkit for building cryptographic systems and protocols.")
1908 (home-page "https://github.com/crypto-rb/rbnacl")
1909 (license license:expat)))
1910
70b4cf38
RW
1911(define-public ruby-nenv
1912 (package
1913 (name "ruby-nenv")
12313cd0 1914 (version "0.3.0")
70b4cf38
RW
1915 (source (origin
1916 (method url-fetch)
1917 (uri (rubygems-uri "nenv" version))
1918 (sha256
1919 (base32
12313cd0 1920 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
70b4cf38
RW
1921 (build-system ruby-build-system)
1922 (arguments
1923 `(#:tests? #f)) ; no tests included
1924 (native-inputs
1925 `(("ruby-rspec" ,ruby-rspec)
1926 ("bundler" ,bundler)))
1927 (synopsis "Ruby interface for modifying the environment")
1928 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
1929and inspect the environment.")
1930 (home-page "https://github.com/e2/nenv")
1931 (license license:expat)))
1932
af59d4b4
MB
1933(define-public ruby-ptools
1934 (package
1935 (name "ruby-ptools")
1936 (version "1.3.5")
1937 (source (origin
1938 (method url-fetch)
1939 (uri (rubygems-uri "ptools" version))
1940 (sha256
1941 (base32
1942 "1jb1h1nsk9zwykpniw8filbsk26kjsdlpk5wz6w0zyamcd41h87j"))))
1943 (build-system ruby-build-system)
1944 (arguments
1945 '(#:phases (modify-phases %standard-phases
1946 (add-after 'unpack 'patch-/bin/ls
1947 (lambda _
1948 (substitute* "test/test_binary.rb"
1949 (("/bin/ls")
1950 (which "ls")))
1951 #t))
1952 (add-before 'install 'create-gem
1953 (lambda _
1954 ;; Do not attempt to sign the gem.
1955 (substitute* "Rakefile"
1956 (("spec\\.signing_key = .*")
1957 ""))
1958 (invoke "rake" "gem:create"))))))
1959 (synopsis "Extra methods for Ruby's @code{File} class")
1960 (description
1961 "The @dfn{ptools} (power tools) library extends Ruby's core @code{File}
1962class with many additional methods modelled after common POSIX tools, such as
1963@code{File.which} for finding executables, @code{File.tail} to print the last
1964lines of a file, @code{File.wc} to count words, and so on.")
1965 (home-page "https://github.com/djberg96/ptools")
1966 (license license:artistic2.0)))
1967
8d9e9f28
RW
1968(define-public ruby-permutation
1969 (package
1970 (name "ruby-permutation")
1971 (version "0.1.8")
1972 (source (origin
1973 (method url-fetch)
1974 (uri (rubygems-uri "permutation" version))
1975 (sha256
1976 (base32
1977 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
1978 (build-system ruby-build-system)
1979 (arguments
1980 `(#:phases
1981 (modify-phases %standard-phases
1982 (add-after 'unpack 'fix-rakefile
1983 (lambda _
1984 (substitute* "Rakefile"
1985 (("require 'rake/gempackagetask'")
1986 "require 'rubygems/package_task'")
1987 (("include Config") ""))
1988 #t))
1989 (replace 'check
1990 (lambda _
9923d5a4 1991 (invoke "ruby" "-Ilib" "test/test.rb"))))))
8d9e9f28
RW
1992 (synopsis "Library to perform operations with sequence permutations")
1993 (description "This package provides a Ruby library to perform different
1994operations with permutations of sequences, such as strings and arrays.")
2f3800e5 1995 (home-page "https://flori.github.io/permutation")
8d9e9f28
RW
1996 (license license:gpl2))) ; GPL 2 only
1997
c5d14d42
RW
1998(define-public ruby-shellany
1999 (package
2000 (name "ruby-shellany")
2001 (version "0.0.1")
2002 (source (origin
2003 (method url-fetch)
2004 (uri (rubygems-uri "shellany" version))
2005 (sha256
2006 (base32
2007 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
2008 (build-system ruby-build-system)
2009 (arguments
2010 `(#:test-target "default"
2011 #:phases
2012 (modify-phases %standard-phases
2013 (add-after 'unpack 'fix-version-test
2014 (lambda _
2015 (substitute* "spec/shellany_spec.rb"
2016 (("^RSpec") "require \"shellany\"\nRSpec"))
2017 #t)))))
2018 (native-inputs
2019 `(("ruby-rspec" ,ruby-rspec)
2020 ("ruby-nenv" ,ruby-nenv)
2021 ("bundler" ,bundler)))
2022 (synopsis "Capture command output")
2023 (description "Shellany is a Ruby library providing functions to capture
2024the output produced by running shell commands.")
2025 (home-page "https://rubygems.org/gems/shellany")
2026 (license license:expat)))
2027
d152162f
RW
2028(define-public ruby-notiffany
2029 (package
2030 (name "ruby-notiffany")
8c1e4a4f 2031 (version "0.1.3")
d152162f
RW
2032 (source (origin
2033 (method url-fetch)
2034 (uri (rubygems-uri "notiffany" version))
2035 (sha256
2036 (base32
8c1e4a4f 2037 "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk"))))
d152162f
RW
2038 (build-system ruby-build-system)
2039 ;; Tests are not included in the gem.
2040 (arguments `(#:tests? #f))
2041 (propagated-inputs
2042 `(("ruby-shellany" ,ruby-shellany)
2043 ("ruby-nenv" ,ruby-nenv)))
2044 (native-inputs
2045 `(("bundler" ,bundler)))
01eb17de
VC
2046 (synopsis "Wrapper library for notification libraries")
2047 (description "Notiffany is a Ruby wrapper library for notification
d152162f
RW
2048libraries such as Libnotify.")
2049 (home-page "https://github.com/guard/notiffany")
2050 (license license:expat)))
2051
96bf7521
MB
2052(define-public ruby-forking-test-runner
2053 (package
2054 (name "ruby-forking-test-runner")
2055 (version "1.6.0")
2056 (home-page "https://github.com/grosser/forking_test_runner")
2057 (source (origin
2058 (method git-fetch)
2059 (uri (git-reference (url home-page)
2060 (commit (string-append "v" version))))
2061 (file-name (git-file-name name version))
2062 (sha256
2063 (base32
2064 "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m"))))
2065 (build-system ruby-build-system)
2066 (arguments
2067 '(#:test-target "spec"
2068 ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has
2069 ;; 1.4.1, which in turn breaks the tests that use ActiveRecord.
2070 #:tests? #f
2071 #:phases (modify-phases %standard-phases
2072 (replace 'replace-git-ls-files
2073 (lambda _
2074 (substitute* "forking_test_runner.gemspec"
2075 (("`git ls-files lib/ bin/ MIT-LICENSE`")
2076 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
2077 #t))
2078 (add-before 'check 'remove-version-constraints
2079 (lambda _
2080 ;; Ignore hard coded version constraints for the tests.
2081 (delete-file "Gemfile.lock")
2082 #t))
2083 (add-before 'check 'set-HOME
2084 (lambda _
2085 ;; Many tests invoke Bundler, and fails when Bundler
2086 ;; warns that /homeless-shelter does not exist.
2087 (setenv "HOME" "/tmp")
2088 #t)))))
2089 (native-inputs
2090 `(("ruby-activerecord" ,ruby-activerecord)
2091 ("ruby-bump" ,ruby-bump)
2092 ("ruby-rspec" ,ruby-rspec)
2093 ("ruby-sqlite3" ,ruby-sqlite3)
2094 ("ruby-wwtd" ,ruby-wwtd)))
2095 (propagated-inputs
2096 `(("ruby-parallel-tests" ,ruby-parallel-tests)))
2097 (synopsis "Run every test in a fork")
2098 (description
2099 "This package is a wrapper around @code{parallel_tests} that runs every
2100test in a fork to avoid pollution and get clean output per test.")
2101 (license license:expat)))
2102
8528365b
RW
2103(define-public ruby-formatador
2104 (package
2105 (name "ruby-formatador")
2106 (version "0.2.5")
2107 (source (origin
2108 (method url-fetch)
2109 (uri (rubygems-uri "formatador" version))
2110 (sha256
2111 (base32
2112 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
2113 (build-system ruby-build-system)
2114 ;; Circular dependency: Tests require ruby-shindo, which requires
2115 ;; ruby-formatador at runtime.
2116 (arguments `(#:tests? #f))
2117 (synopsis "Ruby library to format text on stdout")
2118 (description "Formatador is a Ruby library to format text printed to the
2119standard output stream.")
7bf837fd 2120 (home-page "https://github.com/geemus/formatador")
8528365b
RW
2121 (license license:expat)))
2122
5437c741
CB
2123(define-public ruby-fuubar
2124 (package
2125 (name "ruby-fuubar")
2126 (version "2.3.2")
2127 (source
2128 (origin
2129 ;; Fetch from the git repository, as the gem package doesn't include
2130 ;; the tests.
2131 (method git-fetch)
2132 (uri (git-reference
2133 (url "https://github.com/thekompanee/fuubar.git")
2134 (commit (string-append "releases/v" version))))
2135 (file-name (git-file-name name version))
2136 (sha256
2137 (base32
2138 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
2139 (build-system ruby-build-system)
2140 (arguments
2141 '(;; TODO: Some tests fail, unsure why.
2142 ;; 21 examples, 7 failures
2143 #:tests? #f
2144 #:phases
2145 (modify-phases %standard-phases
2146 (add-before 'build 'delete-certificate
2147 (lambda _
2148 ;; Remove 's.cert_chain' as we do not build with a private key
2149 (substitute* "fuubar.gemspec"
2150 ((".*cert_chain.*") "")
2151 ((".*signing_key.*") ""))
2152 #t))
2153 (replace 'check
2154 (lambda* (#:key tests? #:allow-other-keys)
2155 (when tests?
2156 (invoke "rspec"))
2157 #t)))))
2158 (native-inputs
2159 `(("bundler" ,bundler)))
2160 (propagated-inputs
2161 `(("ruby-rspec-core" ,ruby-rspec-core)
2162 ("ruby-progressbar" ,ruby-progressbar)))
2163 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
2164 (description
2165 "Fuubar is an RSpec formatter that uses a progress bar instead of a
2166string of letters and dots as feedback. It also stops on the first test
2167failure.")
2168 (home-page "https://github.com/thekompanee/fuubar")
2169 (license license:expat)))
2170
8ea991e3
CB
2171(define-public ruby-haml
2172 (package
2173 (name "ruby-haml")
2174 (version "5.0.4")
2175 (source
2176 (origin
2177 (method url-fetch)
2178 (uri (rubygems-uri "haml" version))
2179 (sha256
2180 (base32
2181 "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"))))
2182 (build-system ruby-build-system)
2183 (arguments
2184 '(#:tests? #f)) ; No included tests
2185 (propagated-inputs
2186 `(("ruby-tilt" ,ruby-tilt)
2187 ("ruby-temple" ,ruby-temple)))
2188 (synopsis "Haml is a Ruby library to generate HTML documents")
2189 (description
2190 "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of
2191HTML or XML that is designed to express the structure of documents using
2192indentation rather than closing tags. It was originally envisioned as a
2193plugin for Ruby on Rails, but it can function as a stand-alone templating
2194engine.")
2195 (home-page "http://haml.info/")
2196 (license license:expat)))
2197
353b7eb8
CB
2198(define-public ruby-hamster
2199 (package
2200 (name "ruby-hamster")
2201 (version "3.0.0")
2202 (source
2203 (origin
2204 (method url-fetch)
2205 (uri (rubygems-uri "hamster" version))
2206 (sha256
2207 (base32
2208 "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
2209 (build-system ruby-build-system)
2210 (arguments
2211 '(#:phases
2212 (modify-phases %standard-phases
2213 (add-after 'unpack 'remove-unnecessary-dependencies
2214 (lambda _
2215 ;; pry is a debugging tool, and is unnecessary when running the
2216 ;; tests
2217 (substitute* "spec/lib/hamster/vector/insert_spec.rb"
2218 (("require 'pry'") ""))
2219 (substitute* "spec/spec_helper.rb"
2220 (("require \"pry\"") "")
2221 ;; CodeClimate is an online service, and is unnecessary for
2222 ;; running the tests
2223 (("require \"codeclimate-test-reporter\"") "")
2224 (("CodeClimate.*\n") ""))
2225 #t))
2226 ;; No Rakefile is included, so run rspec directly.
2227 (replace 'check
2228 (lambda* (#:key tests? #:allow-other-keys)
2229 (when tests?
2230 (invoke "rspec"))
2231 #t)))))
2232 (propagated-inputs
2233 `(("ruby-concurrent" ,ruby-concurrent)))
2234 (native-inputs
2235 `(("ruby-rspec" ,ruby-rspec)))
2236 (synopsis "Efficient, immutable, thread-safe collection classes for Ruby")
2237 (description
2238 "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector},
2239@code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an
2240immutable queue or stack).")
2241 (home-page "https://github.com/hamstergem/hamster")
2242 (license license:expat)))
2243
21781436
CB
2244(define-public ruby-hashdiff
2245 (package
2246 (name "ruby-hashdiff")
2247 (version "0.3.8")
2248 (source
2249 (origin
2250 (method url-fetch)
2251 (uri (rubygems-uri "hashdiff" version))
2252 (sha256
2253 (base32
2254 "19ykg5pax8798nh1yv71adkx0zzs7gn2rxjj86v7nsw0jba5lask"))))
2255 (build-system ruby-build-system)
2256 (arguments
2257 '(#:phases
2258 (modify-phases %standard-phases
2259 ;; Run tests directly via rspec to avoid Rake issue:
2260 ;; NoMethodError: undefined method `last_comment'
2261 (replace 'check
2262 (lambda* (#:key tests? #:allow-other-keys)
2263 (when tests?
2264 (invoke "rspec"))
2265 #t)))))
2266 (native-inputs
2267 `(("bundler" ,bundler)
2268 ("ruby-rspec" ,ruby-rspec-2)))
2269 (synopsis "HashDiff computes the smallest difference between two hashes")
2270 (description
2271 "HashDiff is a Ruby library to compute the smallest difference between
2272two hashes.")
2273 (home-page "https://github.com/liufengyun/hashdiff")
2274 (license license:expat)))
2275
3cc8e029
MB
2276(define-public ruby-hydra
2277 ;; No releases yet.
2278 (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
2279 (revision "0"))
2280 (package
2281 (name "ruby-hydra")
2282 (version (git-version "0.0" revision commit))
2283 (home-page "https://github.com/hyphenation/hydra")
2284 (source (origin
2285 (method git-fetch)
2286 (uri (git-reference (url home-page) (commit commit)))
2287 (file-name (git-file-name name version))
2288 (sha256
2289 (base32
2290 "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
2291 (build-system ruby-build-system)
2292 (arguments
2293 '(#:phases (modify-phases %standard-phases
2294 (add-after 'unpack 'make-files-writable
2295 (lambda _
2296 (for-each make-file-writable (find-files "."))
2297 #t))
2298 (replace 'check
2299 (lambda _
2300 (invoke "rspec"))))))
2301 (native-inputs
2302 `(("ruby-rspec" ,ruby-rspec)))
2303 (propagated-inputs
2304 `(("ruby-byebug" ,ruby-byebug)))
2305 (synopsis "Ruby hyphenation patterns")
2306 (description
2307 "ruby-hydra is a Ruby library for working with hyphenation patterns.")
2308 (license license:expat))))
2309
7ac4610f
RW
2310(define-public ruby-shindo
2311 (package
2312 (name "ruby-shindo")
2313 (version "0.3.8")
2314 (source (origin
2315 (method url-fetch)
2316 (uri (rubygems-uri "shindo" version))
2317 (sha256
2318 (base32
2319 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
2320 (build-system ruby-build-system)
2321 (arguments
2322 `(#:test-target "shindo_tests"
2323 #:phases
2324 (modify-phases %standard-phases
2325 (add-after 'unpack 'fix-tests
0b060e34
CB
2326 (lambda _
2327 (substitute* "tests/tests_helper.rb"
2328 (("-rubygems") ""))
2329 (substitute* "Rakefile"
2330 (("system \"shindo") "system \"./bin/shindo")
2331 ;; This test doesn't work, so we disable it.
2332 (("fail \"The build_error test should fail") "#")
2333 ((" -rubygems") ""))
2334 #t)))))
7ac4610f
RW
2335 (propagated-inputs
2336 `(("ruby-formatador" ,ruby-formatador)))
2337 (synopsis "Simple depth first Ruby testing")
2338 (description "Shindo is a simple depth first testing library for Ruby.")
2339 (home-page "https://github.com/geemus/shindo")
2340 (license license:expat)))
2341
f13636f2
RW
2342(define-public ruby-rubygems-tasks
2343 (package
2344 (name "ruby-rubygems-tasks")
f0f5f2d3 2345 (version "0.2.5")
f13636f2
RW
2346 (source (origin
2347 (method url-fetch)
2348 (uri (rubygems-uri "rubygems-tasks" version))
2349 (sha256
2350 (base32
f0f5f2d3 2351 "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx"))))
f13636f2
RW
2352 (build-system ruby-build-system)
2353 ;; Tests need Internet access.
2354 (arguments `(#:tests? #f))
2355 (native-inputs
2356 `(("ruby-rspec" ,ruby-rspec)
2357 ("ruby-yard" ,ruby-yard)))
2358 (synopsis "Rake tasks for managing and releasing Ruby Gems")
2359 (description "Rubygems-task provides Rake tasks for managing and releasing
2360Ruby Gems.")
2361 (home-page "https://github.com/postmodern/rubygems-tasks")
2362 (license license:expat)))
2363
cb6bc5df
CB
2364(define-public ruby-rubyzip
2365 (package
2366 (name "ruby-rubyzip")
2367 (version "1.2.1")
2368 (source
2369 (origin
2370 (method url-fetch)
2371 (uri (rubygems-uri "rubyzip" version))
2372 (sha256
2373 (base32
2374 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
2375 (build-system ruby-build-system)
2376 (arguments
2377 '(#:phases
2378 (modify-phases %standard-phases
2379 (add-before 'check 'patch-tests
2380 (lambda* (#:key inputs #:allow-other-keys)
2381 (substitute* "test/gentestfiles.rb"
2382 (("/usr/bin/zip")
2383 (string-append
2384 (assoc-ref inputs "zip") "/bin/zip")))
2385 (substitute* "test/input_stream_test.rb"
2386 (("/usr/bin/env ruby") (which "ruby")))
2387 #t)))))
2388 (native-inputs
2389 `(("bundler" ,bundler)
2390 ("ruby-simplecov" ,ruby-simplecov)
2391 ("zip" ,zip)
2392 ("unzip" ,unzip)))
2393 (synopsis "Ruby module is for reading and writing zip files")
2394 (description
2395 "The rubyzip module provides ways to read from and create zip files.")
2396 (home-page "http://github.com/rubyzip/rubyzip")
2397 (license license:bsd-2)))
2398
58b59742
RW
2399(define-public ruby-simplecov-html
2400 (package
2401 (name "ruby-simplecov-html")
53fd476f 2402 (version "0.10.2")
58b59742
RW
2403 (source (origin
2404 (method url-fetch)
2405 (uri (rubygems-uri "simplecov-html" version))
2406 (sha256
2407 (base32
53fd476f 2408 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
58b59742 2409 (build-system ruby-build-system)
8b749cf3 2410 (arguments `(#:tests? #f)) ; there are no tests
58b59742
RW
2411 (native-inputs
2412 `(("bundler" ,bundler)))
2413 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
2414 (description "This package provides the default HTML formatter for
2415the SimpleCov code coverage tool for Ruby version 1.9 and above.")
2416 (home-page "https://github.com/colszowka/simplecov-html")
2417 (license license:expat)))
2418
a84fa2ad
RW
2419(define-public ruby-simplecov
2420 (package
2421 (name "ruby-simplecov")
d432682b 2422 (version "0.17.1")
a84fa2ad
RW
2423 (source (origin
2424 (method url-fetch)
2425 (uri (rubygems-uri "simplecov" version))
2426 (sha256
2427 (base32
d432682b 2428 "1135k46nik05sdab30yxb8264lqiz01c8v000g16cl9pjc4mxrdw"))))
a84fa2ad
RW
2429 (build-system ruby-build-system)
2430 ;; Simplecov depends on rubocop for code style checking at build time.
2431 ;; Rubocop needs simplecov at build time.
2432 (arguments `(#:tests? #f))
2433 (propagated-inputs
2434 `(("ruby-json" ,ruby-json)
2435 ("ruby-docile" ,ruby-docile)
2436 ("ruby-simplecov-html" ,ruby-simplecov-html)))
2437 (native-inputs
2438 `(("bundler" ,bundler)))
2439 (synopsis "Code coverage framework for Ruby")
2440 (description "SimpleCov is a code coverage framework for Ruby with a
2441powerful configuration library and automatic merging of coverage across test
2442suites.")
7bf837fd 2443 (home-page "https://github.com/colszowka/simplecov")
a84fa2ad
RW
2444 (license license:expat)))
2445
98b87b82
DT
2446(define-public ruby-useragent
2447 (package
2448 (name "ruby-useragent")
959d908d 2449 (version "0.16.10")
98b87b82
DT
2450 (source (origin
2451 (method url-fetch)
e83c6d00 2452 (uri (rubygems-uri "useragent" version))
98b87b82
DT
2453 (sha256
2454 (base32
959d908d 2455 "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p"))))
98b87b82
DT
2456 (build-system ruby-build-system)
2457 (arguments
e83c6d00 2458 '(#:tests? #f)) ; no test suite
98b87b82
DT
2459 (synopsis "HTTP user agent parser for Ruby")
2460 (description "UserAgent is a Ruby library that parses and compares HTTP
2461User Agents.")
2462 (home-page "https://github.com/gshutler/useragent")
2463 (license license:expat)))
96086cc5 2464
f7e9b2f3
CB
2465(define-public ruby-backports
2466 (package
2467 (name "ruby-backports")
2468 (version "3.11.4")
2469 (source
2470 (origin
2471 (method url-fetch)
2472 (uri (rubygems-uri "backports" version))
2473 (sha256
2474 (base32
2475 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
2476 (build-system ruby-build-system)
2477 (arguments
2478 '(;; TODO: This should be default, but there is one test failure
2479 #:test-target "all_spec"))
2480 (native-inputs
2481 `(("ruby-mspec" ,ruby-mspec)
2482 ("ruby-activesupport" ,ruby-activesupport)))
2483 (synopsis "Backports of the features in newer Ruby versions")
2484 (description
2485 "Backports enables more compatibility across Ruby versions by providing
2486backports of some features.")
2487 (home-page "https://github.com/marcandre/backports")
2488 (license license:expat)))
2489
96086cc5
DT
2490(define-public ruby-bacon
2491 (package
2492 (name "ruby-bacon")
e83c6d00 2493 (version "1.2.0")
96086cc5
DT
2494 (source (origin
2495 (method url-fetch)
e83c6d00 2496 (uri (rubygems-uri "bacon" version))
96086cc5
DT
2497 (sha256
2498 (base32
e83c6d00 2499 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
96086cc5 2500 (build-system ruby-build-system)
96086cc5
DT
2501 (synopsis "Small RSpec clone")
2502 (description "Bacon is a small RSpec clone providing all essential
2503features.")
2504 (home-page "https://github.com/chneukirchen/bacon")
2505 (license license:expat)))
de59d316 2506
a8d2bf3c
CB
2507(define-public ruby-bacon-bits
2508 (package
2509 (name "ruby-bacon-bits")
2510 (version "0.1.0")
2511 (source
2512 (origin
2513 (method url-fetch)
2514 (uri (rubygems-uri "bacon-bits" version))
2515 (sha256
2516 (base32
2517 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
2518 (build-system ruby-build-system)
2519 (arguments
2520 ;; No tests
2521 '(#:tests? #f))
2522 (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
2523 (synopsis "Extensions to Bacon, for disabling tests, before and after
2524blocks and more")
2525 (description
2526 "This extends the bacon testing framework with useful extensions to
2527disable tests, have before and after blocks that run once and more.")
2528 (home-page "https://github.com/cldwalker/bacon-bits")
2529 (license license:expat)))
2530
65f65889
CB
2531(define-public ruby-bacon-colored-output
2532 (package
2533 (name "ruby-bacon-colored-output")
2534 (version "1.1.1")
2535 (source
2536 (origin
2537 (method url-fetch)
2538 (uri (rubygems-uri "bacon-colored_output" version))
2539 (sha256
2540 (base32
2541 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
2542 (build-system ruby-build-system)
2543 (arguments
2544 '(;; No included tests
2545 #:tests? #f))
2546 (propagated-inputs
2547 `(("ruby-bacon" ,ruby-bacon)))
2548 (synopsis "Colored output for Bacon test framework")
2549 (description
2550 "This package adds color through ANSI escape codes to Bacon test
2551output.")
2552 (home-page "https://github.com/whitequark/bacon-colored_output")
2553 (license license:expat)))
2554
e259bdf0
DT
2555(define-public ruby-connection-pool
2556 (package
2557 (name "ruby-connection-pool")
58021db4 2558 (version "2.2.2")
e259bdf0
DT
2559 (source (origin
2560 (method url-fetch)
e83c6d00 2561 (uri (rubygems-uri "connection_pool" version))
e259bdf0
DT
2562 (sha256
2563 (base32
58021db4 2564 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
e259bdf0
DT
2565 (build-system ruby-build-system)
2566 (native-inputs
2567 `(("bundler" ,bundler)))
2568 (synopsis "Generic connection pool for Ruby")
2569 (description "Connection_pool provides a generic connection pooling
2570interface for Ruby programs.")
2571 (home-page "https://github.com/mperham/connection_pool")
2572 (license license:expat)))
4c0aeb44 2573
4a98314d
MB
2574(define-public ruby-fast-gettext
2575 (package
2576 (name "ruby-fast-gettext")
c3beb7ce 2577 (version "2.0.3")
4a98314d
MB
2578 (home-page "https://github.com/grosser/fast_gettext")
2579 (source (origin
2580 (method git-fetch)
2581 (uri (git-reference (url home-page)
2582 (commit (string-append "v" version))))
2583 (file-name (git-file-name name version))
2584 (sha256
2585 (base32
c3beb7ce 2586 "1dg14apq5sfjshhcq0idphhs7aq9ikzswhqmn689p1h76mxqr1v6"))))
4a98314d
MB
2587 (build-system ruby-build-system)
2588 (arguments
2589 '(#:test-target "spec"
2590 #:phases (modify-phases %standard-phases
2591 (add-before 'check 'remove-version-constraints
2592 (lambda _
2593 (delete-file "Gemfile.lock")
2594 #t))
2595 (add-before 'check 'remove-activerecord-test
2596 (lambda _
2597 ;; FIXME: This test fails because ActiveRecord depends on
2598 ;; a different version of ruby-sqlite than the currently
2599 ;; available one.
2600 (delete-file
2601 "spec/fast_gettext/translation_repository/db_spec.rb")
2602 #t))
2603 (add-before 'check 'disable-i18n-test
2604 (lambda _
2605 ;; XXX: This test checks i18n intricasies with Rails 3 and
2606 ;; automatically disables itself for Rails 4.0, but does
2607 ;; not know about newer versions as it has not been updated
2608 ;; since 2014. Disable for later versions of Rails too.
2609 (substitute* "spec/fast_gettext/vendor/string_spec.rb"
2610 (((string-append "ActiveRecord::VERSION::MAJOR == 4 and "
2611 "ActiveRecord::VERSION::MINOR == 0"))
2612 "ActiveRecord::VERSION::MAJOR >= 4"))
2613 #t)))))
2614 (native-inputs
2615 `(;; For tests.
2616 ("ruby-activerecord" ,ruby-activerecord)
2617 ("ruby-activesupport" ,ruby-activesupport)
2618 ("ruby-bump" ,ruby-bump)
2619 ("ruby-forking-test-runner" ,ruby-forking-test-runner)
2620 ("ruby-i18n" ,ruby-i18n)
2621 ("ruby-rubocop" ,ruby-rubocop)
2622 ("ruby-rspec" ,ruby-rspec)
2623 ("ruby-single-cov" ,ruby-single-cov)
2624 ("ruby-sqlite3" ,ruby-sqlite3)
2625 ("ruby-wwtd" ,ruby-wwtd)))
2626 (synopsis "Fast implementation of @code{GetText}")
2627 (description
2628 "This package provides an alternative implementation of the Ruby
2629@code{GetText} library that is approximately 12x faster yet thread safe.")
2630 ;; Some parts are covered by the Ruby license, see file headers.
2631 (license (list license:expat license:ruby))))
2632
4c0aeb44
DT
2633(define-public ruby-net-http-persistent
2634 (package
2635 (name "ruby-net-http-persistent")
185ea446 2636 (version "3.0.0")
4c0aeb44
DT
2637 (source (origin
2638 (method url-fetch)
e83c6d00 2639 (uri (rubygems-uri "net-http-persistent" version))
4c0aeb44
DT
2640 (sha256
2641 (base32
185ea446 2642 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
4c0aeb44 2643 (build-system ruby-build-system)
4c0aeb44
DT
2644 (native-inputs
2645 `(("ruby-connection-pool" ,ruby-connection-pool)
2646 ("ruby-hoe" ,ruby-hoe)))
2647 (synopsis "Persistent HTTP connection manager")
2648 (description "Net::HTTP::Persistent manages persistent HTTP connections
2649using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
2650 (home-page "https://github.com/drbrain/net-http-persistent")
2651 (license license:expat)))
afbbdf77 2652
f88bacaf
RW
2653(define-public ruby-power-assert
2654 (package
2655 (name "ruby-power-assert")
6754323b 2656 (version "1.1.5")
f88bacaf
RW
2657 (source (origin
2658 (method url-fetch)
2659 (uri (rubygems-uri "power_assert" version))
2660 (sha256
2661 (base32
6754323b 2662 "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s"))))
f88bacaf 2663 (build-system ruby-build-system)
6754323b
CB
2664 (arguments
2665 '(#:tests? #f)) ; No included tests
f88bacaf
RW
2666 (native-inputs
2667 `(("bundler" ,bundler)))
2668 (synopsis "Assert library with descriptive assertion messages")
2669 (description "Power-assert is an assertion library providing descriptive
2670assertion messages for tests.")
2671 (home-page "https://github.com/k-tsj/power_assert")
2672 (license (list license:bsd-2 license:ruby))))
2673
e42e3bfa
CB
2674(define-public ruby-powerpack
2675 (package
2676 (name "ruby-powerpack")
2677 (version "0.1.2")
2678 (source
2679 (origin
2680 (method url-fetch)
2681 (uri (rubygems-uri "powerpack" version))
2682 (sha256
2683 (base32
2684 "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
2685 (build-system ruby-build-system)
2686 (arguments
2687 '(#:test-target "spec"))
2688 (native-inputs
2689 `(("bundler" ,bundler)
2690 ("ruby-rspec" ,ruby-rspec)
2691 ("ruby-yard" ,ruby-yard)))
2692 (synopsis "Useful extensions to core Ruby classes")
2693 (description
2694 "This package provides a few useful extensions to core Ruby classes,
2695including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
2696@code{String}.")
2697 (home-page "https://github.com/bbatsov/powerpack")
2698 (license license:expat)))
2699
347eb21e
RW
2700(define-public ruby-locale
2701 (package
2702 (name "ruby-locale")
2703 (version "2.1.2")
2704 (source (origin
2705 (method url-fetch)
2706 (uri (rubygems-uri "locale" version))
2707 (sha256
2708 (base32
2709 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
2710 (build-system ruby-build-system)
2711 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
2712 ;; which needs ruby-gettext, which needs ruby-locale. To break the
2713 ;; dependency cycle we disable tests.
2714 (arguments `(#:tests? #f))
2715 (native-inputs
2716 `(("bundler" ,bundler)
2717 ("ruby-yard" ,ruby-yard)))
2718 (synopsis "Ruby library providing basic localization APIs")
2719 (description
2720 "Ruby-Locale is the pure ruby library which provides basic APIs for
2721localization.")
2722 (home-page "https://github.com/ruby-gettext/locale")
2723 (license (list license:lgpl3+ license:ruby))))
2724
09e2b0af
CB
2725(define-public ruby-temple
2726 (package
2727 (name "ruby-temple")
2728 (version "0.8.1")
2729 (source
2730 (origin
2731 (method url-fetch)
2732 (uri (rubygems-uri "temple" version))
2733 (sha256
2734 (base32
2735 "158d7ygbwcifqnvrph219p7m78yjdjazhykv5darbkms7bxm5y09"))))
2736 (build-system ruby-build-system)
2737 (native-inputs
2738 `(("ruby-tilt" ,ruby-tilt)
2739 ("ruby-bacon" ,ruby-bacon)
2740 ("ruby-erubis" ,ruby-erubis)))
2741 (synopsis "Template compilation framework in Ruby")
2742 (description
2743 "Temple is an abstraction and framework for compiling templates to pure
2744Ruby.")
2745 (home-page "https://github.com/judofyr/temple")
2746 (license license:expat)))
2747
e2333ea3
RW
2748(define-public ruby-text
2749 (package
2750 (name "ruby-text")
2751 (version "1.3.1")
2752 (source (origin
2753 (method url-fetch)
2754 (uri (rubygems-uri "text" version))
2755 (sha256
2756 (base32
2757 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
2758 (build-system ruby-build-system)
2759 (synopsis "Collection of text algorithms for Ruby")
2760 (description
2761 "This package provides a collection of text algorithms: Levenshtein,
2762Soundex, Metaphone, Double Metaphone, Porter Stemming.")
7bf837fd 2763 (home-page "https://github.com/threedaymonk/text")
e2333ea3
RW
2764 (license license:expat)))
2765
c1f52261
RW
2766(define-public ruby-gettext
2767 (package
2768 (name "ruby-gettext")
2769 (version "3.1.7")
2770 (source (origin
2771 (method url-fetch)
2772 (uri (rubygems-uri "gettext" version))
2773 (sha256
2774 (base32
2775 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
2776 (build-system ruby-build-system)
2777 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
2778 ;; which needs ruby-gettext. To break the dependency cycle we disable
2779 ;; tests.
2780 (arguments `(#:tests? #f))
2781 (propagated-inputs
2782 `(("ruby-locale" ,ruby-locale)
2783 ("ruby-text" ,ruby-text)))
2784 (native-inputs
2785 `(("bundler" ,bundler)
2786 ("ruby-yard" ,ruby-yard)))
2787 (synopsis "GNU gettext-like program for Ruby")
2788 (description
2789 "Gettext is a GNU gettext-like program for Ruby. The catalog
2790file (po-file) used is the same as that used by GNU gettext, allowing you to
2791use GNU gettext tools for maintenance.")
2f3800e5 2792 (home-page "https://ruby-gettext.github.com/")
c1f52261
RW
2793 (license (list license:lgpl3+ license:ruby))))
2794
cc5aeb8c
RW
2795(define-public ruby-packnga
2796 (package
2797 (name "ruby-packnga")
1d60c436 2798 (version "1.0.4")
cc5aeb8c
RW
2799 (source (origin
2800 (method url-fetch)
2801 (uri (rubygems-uri "packnga" version))
2802 (sha256
2803 (base32
1d60c436 2804 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
cc5aeb8c
RW
2805 (build-system ruby-build-system)
2806 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
2807 ;; To break the dependency cycle we disable tests.
2808 (arguments `(#:tests? #f))
2809 (propagated-inputs
2810 `(("ruby-gettext" ,ruby-gettext)
2811 ("ruby-yard" ,ruby-yard)))
2812 (native-inputs
2813 `(("bundler" ,bundler)))
2814 (synopsis "Utility library to package internationalized libraries")
2815 (description
2816 "Packnga is a library to translate to many languages using YARD.")
2817 (home-page "http://ranguba.org/packnga/")
2818 (license license:lgpl2.0+)))
2819
93dc8684
CB
2820(define-public ruby-test-construct
2821 (package
2822 (name "ruby-test-construct")
2823 (version "2.0.1")
2824 (source
2825 (origin
2826 (method url-fetch)
2827 (uri (rubygems-uri "test_construct" version))
2828 (sha256
2829 (base32
2830 "1a2ym3l068d0pxzzr95kvqx87zpdsarxslz9ygd4qfm9frrz0kgj"))))
2831 (build-system ruby-build-system)
2832 (native-inputs
2833 `(("bundler" ,bundler)
2834 ("ruby-mocha" ,ruby-mocha)
2835 ("ruby-rspec" ,ruby-rspec)))
2836 (synopsis "Creates temporary files and directories for testing")
2837 (description
2838 "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
2839temporary files and directories during tests.")
2840 (home-page "https://github.com/bhb/test_construct")
2841 (license license:expat)))
2842
3383f5bd
RW
2843(define-public ruby-test-unit
2844 (package
2845 (name "ruby-test-unit")
d74d96e4 2846 (version "3.2.5")
3383f5bd
RW
2847 (source (origin
2848 (method url-fetch)
2849 (uri (rubygems-uri "test-unit" version))
2850 (sha256
2851 (base32
d74d96e4 2852 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
3383f5bd
RW
2853 (build-system ruby-build-system)
2854 (propagated-inputs
2855 `(("ruby-power-assert" ,ruby-power-assert)))
2856 (native-inputs
2857 `(("bundler" ,bundler)
2858 ("ruby-packnga" ,ruby-packnga)
2859 ("ruby-yard" ,ruby-yard)))
2860 (synopsis "Unit testing framework for Ruby")
2861 (description "@code{Test::Unit} is unit testing framework for Ruby, based
2862on xUnit principles. These were originally designed by Kent Beck, creator of
2863extreme programming software development methodology, for Smalltalk's SUnit.
2864It allows writing tests, checking results and automated testing in Ruby.")
2f3800e5 2865 (home-page "https://test-unit.github.io/")
3383f5bd
RW
2866 (license (list license:psfl license:ruby))))
2867
76b732fb
CB
2868(define-public ruby-markaby
2869 (package
2870 (name "ruby-markaby")
2871 (version "0.9.0")
2872 (source
2873 (origin
2874 (method url-fetch)
2875 (uri (rubygems-uri "markaby" version))
2876 (sha256
2877 (base32
2878 "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
2879 (build-system ruby-build-system)
2880 (arguments
2881 '(#:phases
2882 (modify-phases %standard-phases
2883 ;; Run rspec manually without using the Rakefile, as the versions of
2884 ;; Rake and RSpec 2 are incompatible:
2885 ;;
2886 ;; NoMethodError: undefined method `last_comment'
2887 (replace 'check
2888 (lambda* (#:key tests? #:allow-other-keys)
2889 (when tests?
2890 (invoke "rspec"))
2891 #t)))))
2892 (propagated-inputs
2893 `(("ruby-builder" ,ruby-builder)))
2894 (native-inputs
2895 `(("bundler" ,bundler)
2896 ("ruby-rspec" ,ruby-rspec-2)))
2897 (synopsis "Write HTML pages in pure Ruby")
2898 (description
2899 "Markaby allows writing HTML packages in pure Ruby. This is similar to
e54af322 2900the functionality provided by @acronym{ERB, Embedded Ruby}, but without the
76b732fb 2901mixture of HTML and additional ERB syntax.")
41181b76 2902 (home-page "https://markaby.github.io/")
76b732fb
CB
2903 (license license:expat)))
2904
b9511aa9
CB
2905(define-public ruby-maruku
2906 (package
2907 (name "ruby-maruku")
2908 (version "0.7.3")
2909 (source
2910 (origin
2911 (method url-fetch)
2912 (uri (rubygems-uri "maruku" version))
2913 (sha256
2914 (base32
2915 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
2916 (build-system ruby-build-system)
2917 (arguments
2918 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
2919 #:tests? #f
2920 #:phases
2921 (modify-phases %standard-phases
2922 (replace 'check
2923 (lambda* (#:key tests? #:allow-other-keys)
2924 (when tests?
2925 (invoke "rspec"))
2926 #t)))))
2927 (native-inputs
2928 `(("ruby-rspec" ,ruby-rspec)
2929 ("ruby-simplecov" ,ruby-simplecov)
2930 ("ruby-nokogiri-diff" ,ruby-nokogiri-diff)))
2931 (synopsis "Markdown interpreter in Ruby")
2932 (description
2933 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
2934HTML, and PDF through LaTeX.")
2935 (home-page "https://github.com/bhollis/maruku")
2936 (license license:expat)))
2937
25d6d49b
RW
2938(define-public ruby-metaclass
2939 (package
2940 (name "ruby-metaclass")
2941 (version "0.0.4")
2942 (source (origin
2943 (method url-fetch)
2944 (uri (rubygems-uri "metaclass" version))
2945 (sha256
2946 (base32
2947 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
2948 (build-system ruby-build-system)
2949 (arguments
2950 `(#:phases
2951 (modify-phases %standard-phases
2952 (add-after 'unpack 'add-test-unit-to-search-path
761e7042 2953 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2954 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
2955 (substitute* "Rakefile"
2956 (("t\\.libs << \"test\"" line)
2957 (string-append line "; t.libs << \""
3cb3fa67 2958 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
2959 "/gems/test-unit-"
2960 ,(package-version ruby-test-unit)
2961 "/lib\""))))
2962 #t)))))
25d6d49b
RW
2963 (native-inputs
2964 `(("bundler" ,bundler)
2965 ("ruby-test-unit" ,ruby-test-unit)))
2966 (synopsis "Ruby library adding metaclass method to all objects")
2967 (description
2968 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
2969objects.")
7bf837fd 2970 (home-page "https://github.com/floehopper/metaclass")
25d6d49b
RW
2971 (license license:expat)))
2972
fae1c866
MB
2973(define-public ruby-mkmf-lite
2974 (package
2975 (name "ruby-mkmf-lite")
2976 (version "0.3.2")
2977 (source (origin
2978 (method url-fetch)
2979 (uri (rubygems-uri "mkmf-lite" version))
2980 (sha256
2981 (base32
2982 "0br9k6zijj1zc25n8p7f2j1mwl58nfgdknf3q13h9k156jvrir06"))))
2983 (build-system ruby-build-system)
2984 (propagated-inputs
2985 `(("ruby-ptools" ,ruby-ptools)))
2986 (synopsis "Lightweight alternative to @code{mkmf}")
2987 (description
2988 "@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed
2989for use as a library. It does not create packages, builds, or log files of
2990any kind. Instead, it provides mixin methods that you can use in FFI or tests
2991to check for the presence of header files, constants, and so on.")
2992 (home-page "https://github.com/djberg96/mkmf-lite")
2993 (license license:asl2.0)))
2994
1d1d20b0
CB
2995(define-public ruby-mspec
2996 (package
2997 (name "ruby-mspec")
2998 (version "1.9.1")
2999 (source
3000 (origin
3001 (method url-fetch)
3002 (uri (rubygems-uri "mspec" version))
3003 (sha256
3004 (base32
3005 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
3006 (build-system ruby-build-system)
3007 (arguments
3008 '(;; TODO: 3 test failures
3009 ;; ./spec/mocks/mock_spec.rb:82
3010 ;; ./spec/utils/name_map_spec.rb:151
3011 ;; ./spec/utils/name_map_spec.rb:155
3012 #:tests? #f
3013 #:phases
3014 (modify-phases %standard-phases
3015 (add-after 'extract-gemspec 'change-dependency-constraints
3016 (lambda _
3017 (substitute* "mspec.gemspec"
3018 (("rake.*") "rake>)\n")
3019 (("rspec.*") "rspec>)\n"))
3020 #t))
3021 (replace 'check
3022 (lambda* (#:key tests? #:allow-other-keys)
3023 (when tests?
3024 (invoke "rspec" "spec"))
3025 #t)))))
3026 (native-inputs
3027 `(("bundler" ,bundler)
3028 ("ruby-rake" ,ruby-rake)
3029 ("ruby-rspec" ,ruby-rspec)))
3030 (synopsis "MSpec is a specialized framework for RubySpec")
3031 (description
3032 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
3033for basic features. MSpec contains additional features that assist in writing
3034specs for Ruby implementations in ruby/spec.")
3035 (home-page "http://rubyspec.org")
3036 (license license:expat)))
3037
b8aecc31
CB
3038(define-public ruby-mysql2
3039 (package
3040 (name "ruby-mysql2")
3041 (version "0.5.2")
3042 (source
3043 (origin
3044 (method git-fetch)
3045 (uri (git-reference
3046 (url "https://github.com/brianmario/mysql2.git")
3047 (commit version)))
3048 (file-name (git-file-name name version))
3049 (sha256
3050 (base32
3051 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
3052 (build-system ruby-build-system)
3053 (arguments
3054 '(;; TODO: Tests require a running MySQL/MariaDB service
3055 #:tests? #f
3056 #:phases
3057 (modify-phases %standard-phases
3058 (replace 'replace-git-ls-files
3059 (lambda _
3060 (substitute* "mysql2.gemspec"
3061 (("git ls-files .*`") "find . -type f |sort`"))
3062 #t))
3063 (add-before 'install 'set-MAKEFLAGS
3064 (lambda* (#:key outputs #:allow-other-keys)
3065 (setenv "MAKEFLAGS"
3066 (string-append
3067 "V=1 "
3068 "prefix=" (assoc-ref outputs "out")))
3069 #t))
3070 ;; Move the 'check phase to after 'install, as then you can test
3071 ;; using the installed mysql2 gem in the store.
3072 (delete 'check)
3073 (add-after 'install 'check
3074 (lambda* (#:key outputs tests? #:allow-other-keys)
3075 (setenv "GEM_PATH"
3076 (string-append
3077 (getenv "GEM_PATH")
3078 ":"
3079 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
3080 (when tests?
3081 (invoke "rspec"))
3082 #t)))))
3083 (inputs
2b8491fb
JL
3084 `(("mariadb" ,mariadb "lib")
3085 ("mariadb-dev" ,mariadb "dev")
b8aecc31
CB
3086 ("zlib" ,zlib)))
3087 (native-inputs
3088 `(("ruby-rspec" ,ruby-rspec)
3089 ("ruby-rake-compiler" ,ruby-rake-compiler)))
3090 (synopsis "MySQL library for Ruby, binding to libmysql")
3091 (description
3092 "This package provides a simple, fast MySQL library for Ruby, binding to
3093libmysql.")
3094 (home-page "https://github.com/brianmario/mysql2")
3095 (license license:expat)))
3096
21f7b7bd
RW
3097(define-public ruby-blankslate
3098 (package
3099 (name "ruby-blankslate")
3100 (version "3.1.3")
3101 (source (origin
3102 (method url-fetch)
3103 (uri (rubygems-uri "blankslate" version))
3104 (sha256
3105 (base32
3106 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
3107 (build-system ruby-build-system)
3108 (arguments
3109 `(#:phases
3110 (modify-phases %standard-phases
3111 (replace 'check
9923d5a4 3112 (lambda _ (invoke "rspec" "spec/"))))))
21f7b7bd
RW
3113 (native-inputs
3114 `(("bundler" ,bundler)
3115 ("ruby-rspec" ,ruby-rspec)))
3116 (synopsis "Abstract base class with no predefined methods")
3117 (description
3118 "BlankSlate provides an abstract base class with no predefined
3119methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
3120as a base class when writing classes that depend upon
3121@code{method_missing} (e.g. dynamic proxies).")
7bf837fd 3122 (home-page "https://github.com/masover/blankslate")
21f7b7bd
RW
3123 (license license:expat)))
3124
afdb437c
CB
3125(define-public ruby-bond
3126 (package
3127 (name "ruby-bond")
3128 (version "0.5.1")
3129 (source
3130 (origin
3131 (method url-fetch)
3132 (uri (rubygems-uri "bond" version))
3133 (sha256
3134 (base32
3135 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
3136 (build-system ruby-build-system)
3137 (native-inputs
3138 `(("ruby-bacon" ,ruby-bacon)
3139 ("ruby-bacon-bits" ,ruby-bacon-bits)
3140 ("ruby-mocha-on-bacon" ,ruby-mocha-on-bacon)))
3141 (synopsis "Bond can provide custom autocompletion for arguments, methods
3142and more")
3143 (description
3144 "Bond can autocomplete argument(s) to methods, uniquely completing per
3145module, per method and per argument. Bond provides a configuration system and
3146a DSL for creating custom completions and completion rules. Bond can also
3147load completions that ship with gems. Bond is able to offer more than irb's
3148completion since it uses the full line of input when completing as opposed to
3149irb's last-word approach.")
3150 (home-page "http://tagaholic.me/bond/")
3151 (license license:expat)))
3152
f3d7bb93
CB
3153(define-public ruby-idn-ruby
3154 (package
3155 (name "ruby-idn-ruby")
3156 (version "0.1.0")
3157 (source
3158 (origin
3159 (method url-fetch)
3160 (uri (rubygems-uri "idn-ruby" version))
3161 (sha256
3162 (base32
3163 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
3164 (build-system ruby-build-system)
3165 (arguments
3166 '(#:phases
3167 (modify-phases %standard-phases
3168 (delete 'check)
3169 (add-after 'install 'check
3170 (lambda* (#:key tests? outputs #:allow-other-keys)
3171 (when tests?
3172 (let* ((gem-file (cadr (find-files "." "\\.gem")))
3173 (name-and-version (basename gem-file ".gem")))
3174 (apply invoke
3175 "ruby" "--verbose"
3176 (string-append "-I"
3177 (assoc-ref outputs "out")
3178 "/lib/ruby/vendor_ruby/gems/"
3179 name-and-version
3180 "/lib")
3181 (find-files "./test" ".*\\.rb"))))
3182 #t)))))
3183 (inputs
3184 `(("libidn" ,libidn)))
3185 (synopsis "Ruby Bindings for the GNU LibIDN library")
3186 (description
3187 "Ruby Bindings for the GNU LibIDN library, an implementation of the
3188Stringprep, Punycode and IDNA specifications. These are used to encode and
3189decode internationalized domain + names according to the IDNA2003
3190specifications.
3191
3192Included are the most important parts of the Stringprep, Punycode and IDNA
3193APIs like performing Stringprep processings, encoding to and decoding from
3194Punycode strings and converting entire domain names to and from the ACE
3195encoded form.")
3196 (home-page "https://github.com/deepfryed/idn-ruby")
3197 (license license:asl2.0)))
3198
4016ba3f
RW
3199(define-public ruby-instantiator
3200 (package
3201 (name "ruby-instantiator")
688c9076 3202 (version "0.0.7")
4016ba3f
RW
3203 (source (origin
3204 (method url-fetch)
3205 (uri (rubygems-uri "instantiator" version))
3206 (sha256
3207 (base32
688c9076 3208 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
4016ba3f
RW
3209 (build-system ruby-build-system)
3210 (arguments
3211 `(#:phases
3212 (modify-phases %standard-phases
3213 (add-after 'unpack 'add-test-unit-to-search-path
761e7042 3214 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 3215 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
3216 (substitute* "Rakefile"
3217 (("t\\.libs << \"test\"" line)
3218 (string-append line "; t.libs << \""
3cb3fa67 3219 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
3220 "/gems/test-unit-"
3221 ,(package-version ruby-test-unit)
3222 "/lib\""))))
3223 #t)))))
4016ba3f
RW
3224 (propagated-inputs
3225 `(("ruby-blankslate" ,ruby-blankslate)))
3226 (native-inputs
3227 `(("bundler" ,bundler)
3228 ("ruby-test-unit" ,ruby-test-unit)))
3229 (synopsis "Instantiate an arbitrary Ruby class")
3230 (description
3231 "Instantiator lets you instantiate an arbitrary Ruby class without
3232knowing anything about the constructor.")
3233 (home-page "https://github.com/floehopper/instantiator")
3234 (license license:expat)))
3235
97aee8d3
RW
3236(define-public ruby-introspection
3237 (package
3238 (name "ruby-introspection")
98ff58a5 3239 (version "0.0.4")
97aee8d3
RW
3240 (source (origin
3241 (method url-fetch)
3242 (uri (rubygems-uri "introspection" version))
3243 (sha256
3244 (base32
98ff58a5 3245 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
97aee8d3
RW
3246 (build-system ruby-build-system)
3247 (arguments
3248 `(#:phases
3249 (modify-phases %standard-phases
3250 (add-after 'unpack 'add-test-unit-to-search-path
3251 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 3252 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
3253 (substitute* "Rakefile"
3254 (("t\\.libs << \"test\"" line)
3255 (string-append line "; t.libs << \""
3cb3fa67 3256 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
3257 "/gems/test-unit-"
3258 ,(package-version ruby-test-unit)
3259 "/lib\""))))
97aee8d3
RW
3260 #t)))))
3261 (propagated-inputs
3262 `(("ruby-instantiator" ,ruby-instantiator)
3263 ("ruby-metaclass" ,ruby-metaclass)))
3264 (native-inputs
3265 `(("bundler" ,bundler)
3266 ("ruby-blankslate" ,ruby-blankslate)
3267 ("ruby-test-unit" ,ruby-test-unit)))
3268 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
3269 (description
3270 "Introspection provides tools to inspect the hierarchy of method
3271definitions on a Ruby object.")
3272 (home-page "https://github.com/floehopper/introspection")
3273 (license license:expat)))
3274
d93062fd
RW
3275(define-public ruby-redcarpet
3276 (package
3277 (name "ruby-redcarpet")
ba4084bb 3278 (version "3.5.0")
d93062fd
RW
3279 (source (origin
3280 (method url-fetch)
3281 (uri (rubygems-uri "redcarpet" version))
3282 (sha256
3283 (base32
ba4084bb 3284 "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k"))))
d93062fd
RW
3285 (build-system ruby-build-system)
3286 (arguments
3287 `(#:phases
3288 (modify-phases %standard-phases
3289 ;; The gem archive does not include the conformance tests.
3290 (add-after 'unpack 'disable-conformance-tests
3291 (lambda _
3292 (substitute* "Rakefile"
3293 (("task :test => %w\\[test:unit test:conformance\\]")
3294 "task :test => %w[test:unit]"))
3295 #t)))))
3296 (native-inputs
3297 `(("bundler" ,bundler)
3298 ("ruby-test-unit" ,ruby-test-unit)
3299 ("ruby-rake-compiler" ,ruby-rake-compiler)))
3300 (synopsis "Extensible Markdown to (X)HTML converter")
3301 (description
3302 "Redcarpet is an extensible Ruby library for Markdown processing and
3303conversion to (X)HTML.")
7bf837fd 3304 (home-page "https://github.com/vmg/redcarpet")
d93062fd
RW
3305 (license license:expat)))
3306
09924294
CB
3307(define-public ruby-rerun
3308 (package
3309 (name "ruby-rerun")
3310 (version "0.13.0")
3311 (source
3312 (origin
3313 (method url-fetch)
3314 (uri (rubygems-uri "rerun" version))
3315 (sha256
3316 (base32
3317 "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
3318 (build-system ruby-build-system)
3319 (arguments
3320 '(#:tests? #f)) ; No included tests
3321 (propagated-inputs
3322 `(("ruby-listen" ,ruby-listen)))
3323 (synopsis "Run a process, and restart when some monitored files change")
3324 (description
52beae7b 3325 "Rerun is a tool to launch programs, then monitor the file system, and
09924294
CB
3326restart the program when any of the monitored files change. It's written in
3327Ruby, but can be used for all programs.")
3328 (home-page "https://github.com/alexch/rerun/")
3329 (license license:expat)))
3330
8d85543b
MB
3331(define-public ruby-maxitest
3332 (package
3333 (name "ruby-maxitest")
3334 (version "3.6.0")
3335 (home-page "https://github.com/grosser/maxitest")
3336 (source (origin
3337 ;; Pull from git because the gem does not contain tests.
3338 (method git-fetch)
3339 (uri (git-reference
3340 (url home-page)
3341 (commit (string-append "v" version))))
3342 (file-name (git-file-name name version))
3343 (sha256
3344 (base32
3345 "07b3j0bv3dx5j42jlvpvl07aaxplyi6wq688y3jl8y528ww2hjz8"))))
3346 (build-system ruby-build-system)
3347 (arguments
3348 '(#:test-target "default"
3349 #:phases (modify-phases %standard-phases
3350 (replace 'replace-git-ls-files
3351 (lambda _
3352 (substitute* "maxitest.gemspec"
3353 (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
3354 "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))
3355 #t))
3356 (add-before 'check 'remove-version-constraints
3357 (lambda _
3358 ;; Don't use specific versions of dependencies, instead
3359 ;; take whatever is available in Guix.
3360 (delete-file "Gemfile.lock")
3361 #t))
3362 (add-before 'check 'add-mtest-on-PATH
3363 (lambda _
3364 ;; Tests use 'mtest' which is not automatically added on
3365 ;; PATH.
3366 (setenv "PATH" (string-append (getcwd) "/bin:"
3367 (getenv "PATH")))
3368 #t)))))
3369 (native-inputs
3370 `(("ps" ,procps)
3371 ("ruby-bump" ,ruby-bump)
3372 ("ruby-byebug" ,ruby-byebug)
3373 ("ruby-rspec" ,ruby-rspec)
3374 ("ruby-wwtd" ,ruby-wwtd)))
3375 (propagated-inputs
3376 `(("ruby-minitest" ,ruby-minitest)))
3377 (synopsis "Minitest with extra features")
3378 (description
3379 "Maxitest is a wrapper around Minitest with extra functionality such
3380as timeouts, an @command{mtest} executable that can run tests by line
3381number, support for interrupted tests, better backtraces, and more.")
3382 (license license:expat)))
3383
4f2a52ae
RW
3384(define-public ruby-mocha
3385 (package
3386 (name "ruby-mocha")
2fc3cc24 3387 (version "1.11.2")
4f2a52ae
RW
3388 (source (origin
3389 (method url-fetch)
3390 (uri (rubygems-uri "mocha" version))
3391 (sha256
3392 (base32
2fc3cc24 3393 "0hxmkm8qxd04vwj8mqnpyrf2dwy7g1k9zipdfhl4y71cw7ijm9n4"))))
4f2a52ae
RW
3394 (build-system ruby-build-system)
3395 (arguments
3396 `(#:phases
3397 (modify-phases %standard-phases
2fc3cc24
MB
3398 (add-before 'check 'remove-rubocop-dependency
3399 (lambda _
3400 ;; Disable dependency on Rubocop, which is just a linter,
3401 ;; and would introduce a circular dependency.
3402 (substitute* "mocha.gemspec"
3403 ((".*rubocop.*")
3404 "true\n"))
3405 #t)))))
4f2a52ae 3406 (native-inputs
2fc3cc24 3407 `(("ruby-introspection" ,ruby-introspection)))
4f2a52ae
RW
3408 (synopsis "Mocking and stubbing library for Ruby")
3409 (description
3410 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
3411allows mocking and stubbing of methods on real (non-mock) classes.")
3412 (home-page "http://gofreerange.com/mocha/docs")
e3febab5
MB
3413 ;; Mocha can be used with either license at the users choice.
3414 (license (list license:expat license:ruby))))
4f2a52ae 3415
cf646acf
CB
3416(define-public ruby-mocha-on-bacon
3417 (package
3418 (name "ruby-mocha-on-bacon")
3419 (version "0.2.3")
3420 (source
3421 (origin
3422 (method url-fetch)
3423 (uri (rubygems-uri "mocha-on-bacon" version))
3424 (sha256
3425 (base32
3426 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
3427 (build-system ruby-build-system)
3428 (arguments
3429 ;; rubygems.org release missing tests
3430 '(#:tests? #f))
3431 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
3432 (synopsis "Mocha adapter for Bacon")
3433 (description
3434 "This package provides a Mocha adapter for Bacon, allowing you to use the
3435Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
3436 (home-page
3437 "https://github.com/alloy/mocha-on-bacon")
3438 (license license:expat)))
3439
2c84ba7e
RW
3440(define-public ruby-net-ssh
3441 (package
3442 (name "ruby-net-ssh")
5803f872 3443 (version "4.2.0")
2c84ba7e
RW
3444 (source (origin
3445 (method url-fetch)
3446 (uri (rubygems-uri "net-ssh" version))
3447 (sha256
3448 (base32
5803f872 3449 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
2c84ba7e
RW
3450 (build-system ruby-build-system)
3451 (native-inputs
a7938625
MB
3452 `(("bundler" ,bundler)
3453 ("ruby-mocha" ,ruby-mocha)
2c84ba7e
RW
3454 ("ruby-test-unit" ,ruby-test-unit)))
3455 (synopsis "Ruby implementation of the SSH2 client protocol")
3456 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
3457client protocol. It allows you to write programs that invoke and interact
3458with processes on remote servers, via SSH2.")
3459 (home-page "https://github.com/net-ssh/net-ssh")
3460 (license license:expat)))
3461
d38755cb
DM
3462(define-public ruby-net-scp
3463 (package
3464 (name "ruby-net-scp")
3465 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
3466 (version "1.2.2.rc2")
3467 (source
3468 (origin
e405f996
TGR
3469 (method git-fetch)
3470 (uri (git-reference
3471 (url "https://github.com/net-ssh/net-scp.git")
3472 (commit (string-append "v" version))))
3473 (file-name (git-file-name name version))
d38755cb 3474 (sha256
e405f996 3475 (base32 "1nyn17sy71fn7zs3y6wbgcn35318c10flqgc0582409095x4h0sx"))))
d38755cb
DM
3476 (build-system ruby-build-system)
3477 (native-inputs
3478 `(("bundler" ,bundler)
3479 ("ruby-test-unit" ,ruby-test-unit)
3480 ("ruby-mocha" ,ruby-mocha)))
3481 (propagated-inputs
3482 `(("ruby-net-ssh" ,ruby-net-ssh)))
3483 (synopsis "Pure-Ruby SCP client library")
3484 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
3485client protocol.")
3486 (home-page "https://github.com/net-ssh/net-scp")
3487 (license license:expat)))
3488
2206e948
DT
3489(define-public ruby-minitest
3490 (package
3491 (name "ruby-minitest")
88a105c1 3492 (version "5.11.3")
2206e948 3493 (source (origin
e83c6d00
DT
3494 (method url-fetch)
3495 (uri (rubygems-uri "minitest" version))
2206e948
DT
3496 (sha256
3497 (base32
88a105c1 3498 "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"))))
2206e948 3499 (build-system ruby-build-system)
2206e948
DT
3500 (native-inputs
3501 `(("ruby-hoe" ,ruby-hoe)))
3502 (synopsis "Small test suite library for Ruby")
3503 (description "Minitest provides a complete suite of Ruby testing
3504facilities supporting TDD, BDD, mocking, and benchmarking.")
3505 (home-page "https://github.com/seattlerb/minitest")
3506 (license license:expat)))
3507
1db6e09f
RW
3508;; This is the last release of Minitest 4, which is used by some packages.
3509(define-public ruby-minitest-4
3510 (package (inherit ruby-minitest)
3511 (version "4.7.5")
3512 (source (origin
3513 (method url-fetch)
3514 (uri (rubygems-uri "minitest" version))
3515 (sha256
3516 (base32
3517 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
3518 (arguments
3519 `(#:phases
3520 (modify-phases %standard-phases
3521 (add-after 'unpack 'remove-unsupported-method
3522 (lambda _
3523 (substitute* "Rakefile"
3524 (("self\\.rubyforge_name = .*") ""))
9a7017eb
BW
3525 #t))
3526 (add-after 'build 'exclude-failing-tests
3527 (lambda _
3528 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
3529 ;; Fixnum.
3530 (delete-file "test/minitest/test_minitest_spec.rb")
3531 #t)))))))
1db6e09f 3532
450a3f7f
CB
3533(define-public ruby-minitest-around
3534 (package
3535 (name "ruby-minitest-around")
3536 (version "0.5.0")
3537 (source
3538 (origin
3539 (method url-fetch)
3540 (uri (rubygems-uri "minitest-around" version))
3541 (sha256
3542 (base32
3543 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
3544 (build-system ruby-build-system)
3545 (arguments
3546 '(#:phases
3547 (modify-phases %standard-phases
3548 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
3549 (lambda _
3550 (substitute* "minitest-around.gemspec"
3551 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n"))
3552 #t)))))
3553 (propagated-inputs
3554 `(("ruby-minitest" ,ruby-minitest)))
3555 (native-inputs
3556 `(("bundler" ,bundler)
3557 ("ruby-cucumber" ,ruby-cucumber)
3558 ("ruby-bump" ,ruby-bump)
3559 ("ruby-test-construct" ,ruby-test-construct)))
3560 (synopsis "Run code around tests in Minitest")
3561 (description
3562 "This library provides a way to run code around tests in Minitest,
3563written using either the unit test or spec style.")
3564 (home-page "https://github.com/splattael/minitest-around")
3565 (license license:expat)))
3566
35130835
DT
3567(define-public ruby-minitest-sprint
3568 (package
3569 (name "ruby-minitest-sprint")
3570 (version "1.1.0")
3571 (source (origin
e83c6d00
DT
3572 (method url-fetch)
3573 (uri (rubygems-uri "minitest-sprint" version))
35130835
DT
3574 (sha256
3575 (base32
e83c6d00 3576 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
35130835 3577 (build-system ruby-build-system)
35130835
DT
3578 (native-inputs
3579 `(("ruby-hoe" ,ruby-hoe)
3580 ("ruby-minitest" ,ruby-minitest)))
3581 (synopsis "Fast test suite runner for minitest")
3582 (description "Minitest-sprint is a test runner for minitest that makes it
3583easier to re-run individual failing tests.")
3584 (home-page "https://github.com/seattlerb/minitest-sprint")
3585 (license license:expat)))
3586
0808e361
DT
3587(define-public ruby-minitest-bacon
3588 (package
3589 (name "ruby-minitest-bacon")
6f9652b0 3590 (version "1.0.3")
0808e361 3591 (source (origin
e83c6d00
DT
3592 (method url-fetch)
3593 (uri (rubygems-uri "minitest-bacon" version))
0808e361
DT
3594 (sha256
3595 (base32
6f9652b0 3596 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
0808e361 3597 (build-system ruby-build-system)
0808e361
DT
3598 (native-inputs
3599 `(("ruby-hoe" ,ruby-hoe)))
3600 (inputs
3601 `(("ruby-minitest" ,ruby-minitest)))
3602 (synopsis "Bacon compatibility library for minitest")
3603 (description "Minitest-bacon extends minitest with bacon-like
3604functionality, making it easier to migrate test suites from bacon to minitest.")
3605 (home-page "https://github.com/seattlerb/minitest-bacon")
3606 (license license:expat)))
3607
39dc0eb5
BW
3608(define-public ruby-minitest-focus
3609 (package
3610 (name "ruby-minitest-focus")
3611 (version "1.1.2")
3612 (source
3613 (origin
3614 (method url-fetch)
3615 (uri (rubygems-uri "minitest-focus" version))
3616 (sha256
3617 (base32
3618 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
3619 (build-system ruby-build-system)
3620 (propagated-inputs
3621 `(("ruby-minitest" ,ruby-minitest)))
3622 (native-inputs
3623 `(("ruby-hoe" ,ruby-hoe)))
3624 (synopsis "Allows a few specific tests to be focused on")
3625 (description
3626 "@code{minitest-focus} gives the ability focus on a few tests with ease
3627without having to use command-line arguments. It introduces a @code{focus}
3628class method for use in testing classes, specifying that the next defined test
3629is to be run.")
3630 (home-page "https://github.com/seattlerb/minitest-focus")
3631 (license license:expat)))
3632
99fc5cd5
BW
3633(define-public ruby-minitest-pretty-diff
3634 ;; Use git reference because gem is out of date and does not contain testing
3635 ;; script. There are no releases on GitHub.
3636 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
3637 (package
3638 (name "ruby-minitest-pretty-diff")
3639 (version (string-append "0.1-1." (string-take commit 8)))
3640 (source (origin
3641 (method git-fetch)
3642 (uri (git-reference
3643 (url "https://github.com/adammck/minitest-pretty_diff.git")
3644 (commit commit)))
3645 (file-name (string-append name "-" version "-checkout"))
3646 (sha256
3647 (base32
3648 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
3649 (build-system ruby-build-system)
3650 (arguments
3651 `(#:phases
3652 (modify-phases %standard-phases
3653 (replace 'check
3654 (lambda _
9923d5a4 3655 (invoke "script/test"))))))
99fc5cd5
BW
3656 (native-inputs
3657 `(("bundler" ,bundler)
3658 ("ruby-turn" ,ruby-turn)))
3659 (synopsis "Pretty-print hashes and arrays in MiniTest")
3660 (description
3661 "@code{minitest-pretty_diff} monkey-patches
3662@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
3663diffing them. This makes it easier to spot differences between nested
3664structures when tests fail.")
3665 (home-page "https://github.com/adammck/minitest-pretty_diff")
3666 (license license:expat))))
3667
685d0d2f
BW
3668(define-public ruby-minitest-moar
3669 (package
3670 (name "ruby-minitest-moar")
3671 (version "0.0.4")
3672 (source
3673 (origin
3674 (method url-fetch)
3675 (uri (rubygems-uri "minitest-moar" version))
3676 (sha256
3677 (base32
3678 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
3679 (build-system ruby-build-system)
3680 (arguments
3681 `(#:phases
3682 (modify-phases %standard-phases
3683 (add-before 'check 'clean-dependencies
3684 (lambda _
3685 ;; Remove all gems defined in the Gemfile because these are not
3686 ;; truly needed.
3687 (substitute* "Gemfile"
3688 (("gem .*") ""))
3689 ;; Remove byebug as not needed to run tests.
3690 (substitute* "test/test_helper.rb"
3691 (("require 'byebug'") ""))
3692 #t)))))
3693 (native-inputs
3694 `(("bundler" ,bundler)
3695 ("ruby-minitest" ,ruby-minitest)))
3696 (synopsis "Extra features and changes to MiniTest")
3697 (description "@code{MiniTest Moar} add some additional features and
3698changes some default behaviours in MiniTest. For instance, Moar replaces the
3699MiniTest @code{Object#stub} with a global @code{stub} method.")
3700 (home-page "https://github.com/dockyard/minitest-moar")
3701 (license license:expat)))
3702
e07ef1d6
BW
3703(define-public ruby-minitest-bonus-assertions
3704 (package
3705 (name "ruby-minitest-bonus-assertions")
c9e261b7 3706 (version "3.0")
e07ef1d6
BW
3707 (source
3708 (origin
3709 (method url-fetch)
3710 (uri (rubygems-uri "minitest-bonus-assertions" version))
3711 (sha256
3712 (base32
c9e261b7 3713 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
e07ef1d6
BW
3714 (build-system ruby-build-system)
3715 (arguments
3716 `(#:phases
3717 (modify-phases %standard-phases
3718 (add-before 'check 'clean-dependencies
3719 (lambda _
3720 ;; Remove unneeded require statement that would entail another
3721 ;; dependency.
3722 (substitute* "test/minitest_config.rb"
3723 (("require 'minitest/bisect'") ""))
3724 #t)))))
3725 (native-inputs
3726 `(("ruby-hoe" ,ruby-hoe)
3727 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
3728 ("ruby-minitest-focus" ,ruby-minitest-focus)
3729 ("ruby-minitest-moar" ,ruby-minitest-moar)))
3730 (synopsis "Bonus assertions for @code{Minitest}")
3731 (description
3732 "Minitest bonus assertions provides extra MiniTest assertions. For
3733instance, it provides @code{assert_true}, @code{assert_false} and
3734@code{assert_set_equal}.")
3735 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
3736 (license license:expat)))
3737
e2c9a9cc
CB
3738(define-public ruby-minitest-reporters
3739 (package
3740 (name "ruby-minitest-reporters")
3741 (version "1.3.6")
3742 (source
3743 (origin
3744 (method url-fetch)
3745 (uri (rubygems-uri "minitest-reporters" version))
3746 (sha256
3747 (base32
3748 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
3749 (build-system ruby-build-system)
3750 (arguments
3751 '(#:phases
3752 (modify-phases %standard-phases
3753 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
3754 ;; including it as an input can lead to circular dependencies.
3755 (add-after 'unpack 'remove-rubocop-from-Rakefile
3756 (lambda _
3757 (substitute* "Rakefile"
3758 (("require 'rubocop/rake\\_task'") "")
3759 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
3760 #t))
3761 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
3762 (lambda _
3763 (substitute* "minitest-reporters.gemspec"
3764 ((".*%q<rubocop>.*") "\n"))
3765 #t)))))
3766 (propagated-inputs
3767 `(("ruby-ansi" ,ruby-ansi)
3768 ("ruby-builder" ,ruby-builder)
3769 ("ruby-minitest" ,ruby-minitest)
3770 ("ruby-progressbar" ,ruby-progressbar)))
3771 (native-inputs
3772 `(("bundler" ,bundler)
3773 ("ruby-maruku" ,ruby-maruku)))
3774 (synopsis "Enhanced reporting for Minitest tests")
3775 (description
3776 "@code{minitest/reporters} provides a custom Minitest runner to improve
3777how the test state is reported. A number of different reporters are
3778available, including a spec reporter, progress bar reporter, a HTML
3779reporter.")
3780 (home-page "https://github.com/kern/minitest-reporters")
3781 (license license:expat)))
3782
e582fa93
BW
3783(define-public ruby-minitest-rg
3784 (package
3785 (name "ruby-minitest-rg")
3786 (version "5.2.0")
3787 (source
3788 (origin
3789 (method url-fetch)
3790 (uri (rubygems-uri "minitest-rg" version))
3791 (sha256
3792 (base32
3793 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
3794 (build-system ruby-build-system)
3795 (arguments
3796 ;; Some tests fail even outside Guix, so disable tests.
3797 ;; https://github.com/blowmage/minitest-rg/issues/12
3798 ;; https://github.com/blowmage/minitest-rg/pull/13
3799 `(#:tests? #f))
3800 (propagated-inputs
3801 `(("ruby-minitest" ,ruby-minitest)))
3802 (synopsis "Coloured output for Minitest")
3803 (description
3804 "@code{minitest-rg} changes the colour of the output from Minitest.")
8e486e80 3805 (home-page "https://blowmage.com/minitest-rg/")
e582fa93
BW
3806 (license license:expat)))
3807
2a96dbe6
BW
3808(define-public ruby-minitest-hooks
3809 (package
3810 (name "ruby-minitest-hooks")
eaaf8b12 3811 (version "1.4.2")
2a96dbe6
BW
3812 (source
3813 (origin
3814 (method url-fetch)
3815 (uri (rubygems-uri "minitest-hooks" version))
3816 (sha256
3817 (base32
eaaf8b12 3818 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
2a96dbe6
BW
3819 (build-system ruby-build-system)
3820 (arguments
3821 '(#:test-target "spec"))
3822 (native-inputs
3823 `(("ruby-sequel" ,ruby-sequel)
3824 ("ruby-sqlite3" ,ruby-sqlite3)))
3825 (synopsis "Hooks for the minitest framework")
3826 (description
3827 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
3828@code{around_all} hooks for Minitest. This allows, for instance, running each
3829suite of specs inside a database transaction, running each spec inside its own
3830savepoint inside that transaction. This can significantly speed up testing
3831for specs that share expensive database setup code.")
7bf837fd 3832 (home-page "https://github.com/jeremyevans/minitest-hooks")
2a96dbe6
BW
3833 (license license:expat)))
3834
afbbdf77
DT
3835(define-public ruby-daemons
3836 (package
3837 (name "ruby-daemons")
f03153db 3838 (version "1.2.5")
afbbdf77
DT
3839 (source (origin
3840 (method url-fetch)
e83c6d00 3841 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
3842 (sha256
3843 (base32
f03153db 3844 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
afbbdf77
DT
3845 (build-system ruby-build-system)
3846 (arguments
3847 `(#:tests? #f)) ; no test suite
3848 (synopsis "Daemonize Ruby programs")
3849 (description "Daemons provides a way to wrap existing Ruby scripts to be
3850run as a daemon and to be controlled by simple start/stop/restart commands.")
3851 (home-page "https://github.com/thuehlinger/daemons")
3852 (license license:expat)))
b03eb6ac
CB
3853
3854(define-public ruby-data_uri
3855 (package
3856 (name "ruby-data_uri")
3857 (version "0.1.0")
3858 (source
3859 (origin
3860 (method url-fetch)
3861 (uri (rubygems-uri "data_uri" version))
3862 (sha256
3863 (base32
3864 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
3865 (build-system ruby-build-system)
3866 (synopsis "URI class for parsing data URIs")
3867 (description
3868 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
3869embedded inside a URI. The URI::Data class provides support for parsing these
3870URIs using the normal URI.parse method.")
3871 (home-page "https://github.com/dball/data_uri")
3872 (license license:expat)))
66e20863 3873
72c785f9
MB
3874(define-public ruby-deep-merge
3875 (package
3876 (name "ruby-deep-merge")
3877 (version "1.2.1")
3878 (home-page "https://github.com/danielsdeleo/deep_merge")
3879 ;; The Rubygem source does not contain the gemspec required for tests.
3880 (source (origin
3881 (method git-fetch)
3882 (uri (git-reference (url home-page) (commit version)))
3883 (file-name (git-file-name name version))
3884 (sha256
3885 (base32
3886 "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931"))))
3887 (build-system ruby-build-system)
3888 (native-inputs
3889 `(("ruby-minitest" ,ruby-minitest)))
3890 (synopsis "Recursively merge hashes")
3891 (description
3892 "Deep Merge is a set of utility functions for @code{Hash}. It permits
3893you to merge elements inside a hash together recursively.")
3894 (license license:expat)))
3895
66e20863
DT
3896(define-public ruby-git
3897 (package
3898 (name "ruby-git")
ceaff59e 3899 (version "1.3.0")
66e20863
DT
3900 (source (origin
3901 (method url-fetch)
e83c6d00 3902 (uri (rubygems-uri "git" version))
66e20863
DT
3903 (sha256
3904 (base32
ceaff59e 3905 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
66e20863
DT
3906 (build-system ruby-build-system)
3907 (arguments
e83c6d00
DT
3908 `(#:tests? #f ; no tests
3909 #:phases (modify-phases %standard-phases
3910 (add-after 'install 'patch-git-binary
3911 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
3912 ;; Make the default git binary an absolute path to the
3913 ;; store.
e83c6d00
DT
3914 (let ((git (string-append (assoc-ref inputs "git")
3915 "/bin/git"))
3cb3fa67
CB
3916 (config (string-append
3917 (assoc-ref outputs "out")
3918 "/lib/ruby/vendor_ruby/gems/git-"
3919 ,version "/lib/git/config.rb")))
e83c6d00 3920 (substitute* (list config)
66e20863
DT
3921 (("'git'")
3922 (string-append "'" git "'")))
e83c6d00 3923 #t))))))
66e20863
DT
3924 (inputs
3925 `(("git" ,git)))
3926 (synopsis "Ruby wrappers for Git")
3927 (description "Ruby/Git is a Ruby library that can be used to create, read
3928and manipulate Git repositories by wrapping system calls to the git binary.")
3929 (home-page "https://github.com/schacon/ruby-git")
3930 (license license:expat)))
71d3e2c2 3931
95598153
MB
3932(define-public ruby-hocon
3933 (package
3934 (name "ruby-hocon")
fd13ec5f 3935 (version "1.3.1")
95598153
MB
3936 (home-page "https://github.com/puppetlabs/ruby-hocon")
3937 (source (origin
3938 (method git-fetch)
3939 (uri (git-reference (url home-page) (commit version)))
3940 (file-name (git-file-name name version))
3941 (sha256
3942 (base32
fd13ec5f 3943 "172hh2zr0n9nnszv0qvlgwszgkrq84yahrg053m68asy79zpmbqr"))))
95598153
MB
3944 (build-system ruby-build-system)
3945 (arguments
3946 '(#:phases (modify-phases %standard-phases
3947 (replace 'check
3948 (lambda* (#:key tests? #:allow-other-keys)
3949 (if tests?
3950 (invoke "rspec")
3951 (format #t "test suite not run~%"))
3952 #t)))))
3953 (native-inputs
3954 `(("bundler" ,bundler)
3955 ("ruby-rspec" ,ruby-rspec)))
3956 (synopsis "HOCON config library")
3957 (description
3958 "This package provides Ruby support for the @acronym{HOCON,
3959Human-Optimized Config Object Notation} configuration file format. It
3960supports parsing and modifying HOCON and JSON files, and rendering parsed
3961objects back to a @code{String}.")
3962 (license license:asl2.0)))
3963
71d3e2c2
DT
3964(define-public ruby-slop
3965 (package
3966 (name "ruby-slop")
d14e5eaa 3967 (version "4.5.0")
71d3e2c2
DT
3968 (source (origin
3969 (method url-fetch)
e83c6d00 3970 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
3971 (sha256
3972 (base32
d14e5eaa 3973 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
71d3e2c2
DT
3974 (build-system ruby-build-system)
3975 (native-inputs
3976 `(("ruby-minitest" ,ruby-minitest)))
3977 (synopsis "Ruby command line option parser")
3978 (description "Slop provides a Ruby domain specific language for gathering
3979options and parsing command line flags.")
3980 (home-page "https://github.com/leejarvis/slop")
3981 (license license:expat)))
e778a549 3982
5337f8b9
DT
3983(define-public ruby-slop-3
3984 (package (inherit ruby-slop)
3985 (version "3.6.0")
3986 (source (origin
3987 (method url-fetch)
3988 (uri (rubygems-uri "slop" version))
3989 (sha256
3990 (base32
3991 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
3992
ca914b5b
CB
3993(define-public ruby-multi-xml
3994 (package
3995 (name "ruby-multi-xml")
3996 (version "0.6.0")
3997 (source
3998 (origin
3999 (method url-fetch)
4000 (uri (rubygems-uri "multi_xml" version))
4001 (sha256
4002 (base32
4003 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
4004 (build-system ruby-build-system)
4005 (arguments
4006 '(#:tests? #f)) ; No included tests
4007 (synopsis "Swappable XML backends for Ruby")
4008 (description
4009 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
4010Nokogiri, Ox, or REXML.")
4011 (home-page "https://github.com/sferik/multi_xml")
4012 (license license:expat)))
4013
e778a549
DT
4014(define-public ruby-multipart-post
4015 (package
4016 (name "ruby-multipart-post")
4017 (version "2.0.0")
4018 (source (origin
4019 (method url-fetch)
e83c6d00 4020 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
4021 (sha256
4022 (base32
e83c6d00 4023 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
4024 (build-system ruby-build-system)
4025 (native-inputs
4026 `(("bundler" ,bundler)))
4027 (synopsis "Multipart POST library for Ruby")
4028 (description "Multipart-Post Adds multipart POST capability to Ruby's
4029net/http library.")
4030 (home-page "https://github.com/nicksieger/multipart-post")
4031 (license license:expat)))
f8da3af0 4032
9a97e7ce
CB
4033(define-public ruby-multi-json
4034 (package
4035 (name "ruby-multi-json")
1b6f5475 4036 (version "1.13.1")
9a97e7ce
CB
4037 (source
4038 (origin
b872b47b 4039 (method git-fetch)
1b6f5475
BW
4040 ;; Tests are not distributed at rubygems.org so download from GitHub
4041 ;; instead.
b872b47b
EF
4042 (uri (git-reference
4043 (url "https://github.com/intridea/multi_json")
4044 (commit (string-append "v" version))))
4045 (file-name (git-file-name name version))
9a97e7ce
CB
4046 (sha256
4047 (base32
b872b47b 4048 "18wpb6p01rrkl4v33byh70vxj2a5jxkfxzv3pz8z6pssy4ymwkm4"))))
9a97e7ce
CB
4049 (build-system ruby-build-system)
4050 (arguments
1b6f5475
BW
4051 `(#:phases
4052 (modify-phases %standard-phases
4053 (add-after 'unpack 'remove-signing-key-reference
4054 (lambda _
4055 (substitute* "multi_json.gemspec"
4056 ((".*spec.signing_key.*") ""))
4057 #t)))))
4058 (native-inputs
4059 `(("bundler" ,bundler)
4060 ("ruby-rspec" ,ruby-rspec)
4061 ("ruby-yard" ,ruby-yard)
4062 ("ruby-json-pure" ,ruby-json-pure)
4063 ("ruby-oj" ,ruby-oj)
4064 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
9a97e7ce
CB
4065 (synopsis "Common interface to multiple JSON libraries for Ruby")
4066 (description
4067 "This package provides a common interface to multiple JSON libraries,
4068including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
4069NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
1b6f5475 4070 (home-page "https://github.com/intridea/multi_json")
9a97e7ce
CB
4071 (license license:expat)))
4072
5edef88b
BW
4073(define-public ruby-multi-test
4074 (package
4075 (name "ruby-multi-test")
4076 (version "0.1.2")
4077 (source
4078 (origin
4079 (method url-fetch)
4080 (uri (rubygems-uri "multi_test" version))
4081 (sha256
4082 (base32
4083 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
4084 (build-system ruby-build-system)
4085 (arguments
4086 '(;; Tests require different sets of specific gem versions to be available,
4087 ;; and there is no gemfile that specifies the newest versions of
4088 ;; dependencies to be tested.
4089 #:tests? #f))
4090 (synopsis
4091 "Interface to testing libraries loaded into a running Ruby process")
4092 (description
4093 "@code{multi_test} provides a uniform interface onto whatever testing
4094libraries that have been loaded into a running Ruby process to help control
4095rogue test/unit/autorun requires.")
4096 (home-page "https://github.com/cucumber/multi_test")
9a97e7ce
CB
4097 (license license:expat)))
4098
f8da3af0
DT
4099(define-public ruby-arel
4100 (package
4101 (name "ruby-arel")
aecd533d 4102 (version "9.0.0")
f8da3af0
DT
4103 (source (origin
4104 (method url-fetch)
4105 (uri (rubygems-uri "arel" version))
4106 (sha256
4107 (base32
aecd533d 4108 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
f8da3af0
DT
4109 (build-system ruby-build-system)
4110 (arguments '(#:tests? #f)) ; no tests
4111 (home-page "https://github.com/rails/arel")
4112 (synopsis "SQL AST manager for Ruby")
6f23e2fb
TGR
4113 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
4114Ruby. It simplifies the generation of complex SQL queries and adapts to
4115various relational database implementations.")
f8da3af0 4116 (license license:expat)))
616eaead 4117
554bf4f6
CB
4118(define-public ruby-marcel
4119 (package
4120 (name "ruby-marcel")
4121 (version "0.3.3")
4122 (source
4123 (origin
4124 (method url-fetch)
4125 (uri (rubygems-uri "marcel" version))
4126 (sha256
4127 (base32
4128 "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
4129 (build-system ruby-build-system)
4130 (arguments
4131 '(;; No included tests
4132 #:tests? #f))
4133 (propagated-inputs
4134 `(("ruby-mimemagic" ,ruby-mimemagic)))
4135 (synopsis "MIME type detection using magic numbers, filenames and extensions")
4136 (description
4137 "@code{marcel} provides @acronym{MIME, Multipurpose Internet Mail
4138Extensions} type detection using magic numbers, filenames, and extensions")
4139 (home-page "https://github.com/basecamp/marcel")
4140 (license license:expat)))
4141
616eaead 4142(define-public ruby-minitar
bfaf8efd
BW
4143 ;; We package from the GitHub source to fix the security issue reported at
4144 ;; https://github.com/halostatue/minitar/issues/16.
4145 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
4146 (package
4147 (name "ruby-minitar")
4148 (version (string-append "0.5.4-1." (string-take commit 8)))
4149 (source
4150 (origin
4151 (method git-fetch)
4152 (uri (git-reference
4153 (url "https://github.com/halostatue/minitar.git")
4154 (commit commit)))
4155 (file-name (string-append name "-" version "-checkout"))
4156 (sha256
4157 (base32
4158 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
4159 (build-system ruby-build-system)
4160 (arguments
4161 '(#:tests? #f)) ; missing a gemspec
4162 (synopsis "Ruby library and utility for handling tar archives")
4163 (description
4164 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
616eaead 4165that provides the ability to deal with POSIX tar archive files.")
bfaf8efd
BW
4166 (home-page "http://www.github.com/atoulme/minitar")
4167 (license (list license:gpl2+ license:ruby)))))
bea1c0e2
DT
4168
4169(define-public ruby-mini-portile
4170 (package
4171 (name "ruby-mini-portile")
4172 (version "0.6.2")
4173 (source
4174 (origin
4175 (method url-fetch)
4176 (uri (rubygems-uri "mini_portile" version))
4177 (sha256
4178 (base32
4179 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
4180 (build-system ruby-build-system)
4181 (arguments
4182 '(#:tests? #f)) ; tests require network access
4183 (synopsis "Ports system for Ruby developers")
4184 (description "Mini-portile is a port/recipe system for Ruby developers.
4185It provides a standard way to compile against specific versions of libraries
4186to reproduce user environments.")
7bf837fd 4187 (home-page "https://github.com/flavorjones/mini_portile")
bea1c0e2 4188 (license license:expat)))
e920bfca 4189
d000fc92
BW
4190(define-public ruby-mini-portile-2
4191 (package (inherit ruby-mini-portile)
a88ac044 4192 (version "2.4.0")
d000fc92
BW
4193 (source (origin
4194 (method url-fetch)
4195 (uri (rubygems-uri "mini_portile2" version))
4196 (sha256
4197 (base32
a88ac044 4198 "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"))))))
d000fc92 4199
e920bfca
DT
4200(define-public ruby-nokogiri
4201 (package
4202 (name "ruby-nokogiri")
62cc7344 4203 (version "1.10.9")
e920bfca
DT
4204 (source (origin
4205 (method url-fetch)
4206 (uri (rubygems-uri "nokogiri" version))
4207 (sha256
4208 (base32
62cc7344 4209 "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm"))))
e920bfca
DT
4210 (build-system ruby-build-system)
4211 (arguments
4212 ;; Tests fail because Nokogiri can only test with an installed extension,
4213 ;; and also because many test framework dependencies are missing.
7b01f250 4214 `(#:tests? #f
e920bfca
DT
4215 #:gem-flags (list "--" "--use-system-libraries"
4216 (string-append "--with-xml2-include="
4217 (assoc-ref %build-inputs "libxml2")
5e7f1b0b
BW
4218 "/include/libxml2" ))
4219 #:phases
4220 (modify-phases %standard-phases
7b01f250
BW
4221 (add-before 'build 'patch-extconf
4222 ;; 'pkg-config' is not included in the GEM_PATH during
4223 ;; installation, so we add it directly to the load path.
4224 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 4225 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
7b01f250
BW
4226 (substitute* "ext/nokogiri/extconf.rb"
4227 (("gem 'pkg-config'.*")
4228 (string-append "$:.unshift '"
3cb3fa67 4229 pkg-config "/lib/ruby/vendor_ruby"
7b01f250
BW
4230 "/gems/pkg-config-"
4231 ,(package-version ruby-pkg-config)
4232 "/lib'\n"))))
5e7f1b0b 4233 #t)))))
e920bfca 4234 (native-inputs
7b01f250 4235 `(("ruby-hoe" ,ruby-hoe)))
e920bfca
DT
4236 (inputs
4237 `(("zlib" ,zlib)
4238 ("libxml2" ,libxml2)
4239 ("libxslt" ,libxslt)))
4240 (propagated-inputs
7b01f250
BW
4241 `(("ruby-mini-portile" ,ruby-mini-portile-2)
4242 ("ruby-pkg-config" ,ruby-pkg-config)))
e920bfca
DT
4243 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
4244 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
4245both CSS3 selector and XPath 1.0 support.")
4246 (home-page "http://www.nokogiri.org/")
4247 (license license:expat)))
30b0b725
DT
4248
4249(define-public ruby-method-source
4250 (package
4251 (name "ruby-method-source")
ec08f469 4252 (version "1.0.0")
30b0b725
DT
4253 (source
4254 (origin
4255 (method url-fetch)
4256 (uri (rubygems-uri "method_source" version))
4257 (sha256
4258 (base32
ec08f469 4259 "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"))))
30b0b725 4260 (build-system ruby-build-system)
c8355037
BW
4261 (arguments
4262 `(#:test-target "spec"))
30b0b725 4263 (native-inputs
c8355037 4264 `(("ruby-rspec" ,ruby-rspec)
30b0b725
DT
4265 ("git" ,git)))
4266 (synopsis "Retrieve the source code for Ruby methods")
4267 (description "Method_source retrieves the source code for Ruby methods.
4268Additionally, it can extract source code from Proc and Lambda objects or just
4269extract comments.")
4270 (home-page "https://github.com/banister/method_source")
4271 (license license:expat)))
2e3fdea4
DT
4272
4273(define-public ruby-coderay
4274 (package
4275 (name "ruby-coderay")
5cf0997a 4276 (version "1.1.2")
2e3fdea4
DT
4277 (source
4278 (origin
4279 (method url-fetch)
4280 (uri (rubygems-uri "coderay" version))
4281 (sha256
4282 (base32
5cf0997a 4283 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
2e3fdea4
DT
4284 (build-system ruby-build-system)
4285 (arguments
4286 '(#:tests? #f)) ; missing test files
4287 (synopsis "Ruby syntax highlighting library")
4288 (description "Coderay is a Ruby library that provides syntax highlighting
4289for select languages.")
4290 (home-page "http://coderay.rubychan.de")
4291 (license license:expat)))
96e76083 4292
f9083965
MC
4293(define-public ruby-cuke-modeler
4294 (package
4295 (name "ruby-cuke-modeler")
4296 (version "3.1.0")
4297 (source
4298 (origin
4299 (method url-fetch)
4300 (uri (rubygems-uri "cuke_modeler" version))
4301 (sha256
4302 (base32
4303 "19smj3g3wvz0203l549sadpcxgh0ir350a6k78gq0bmlv9cchmjb"))))
4304 (build-system ruby-build-system)
4305 (arguments `(#:tests? #f)) ;no test suite in gem
4306 (propagated-inputs
4307 `(("ruby-gherkin" ,ruby-gherkin)))
4308 (synopsis "Gherkin test suite analysis tool")
4309 (description "CukeModeler facilitates modeling a test suite that is
4310written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by
4311providing an abstraction layer on top of the Abstract Syntax Tree (AST) that
4312the @code{cucumber-gherkin} generates when parsing features, as well as
4313providing models for feature files and directories in order to be able to have
4314a fully traversable model tree of a test suite's structure. These models can
4315then be analyzed or manipulated more easily than the underlying AST layer.")
4316 (home-page "https://github.com/enkessler/cuke_modeler")
4317 (license license:expat)))
4318
2156cc9c
MB
4319(define-public ruby-parallel-tests
4320 (package
4321 (name "ruby-parallel-tests")
8a01e2fa 4322 (version "3.0.0")
2156cc9c
MB
4323 (home-page "https://github.com/grosser/parallel_tests")
4324 (source (origin
4325 (method git-fetch)
4326 (uri (git-reference
4327 (url home-page)
4328 (commit (string-append "v" version))))
4329 (file-name (string-append name version))
4330 (sha256
4331 (base32
8a01e2fa 4332 "08a6ndqn2dqacmc7yg48k0dh2rfrynvhkd5hiay16dl9m1r9q8pz"))))
2156cc9c
MB
4333 (build-system ruby-build-system)
4334 (arguments
4335 '(#:test-target "default"
4336 #:phases (modify-phases %standard-phases
4337 (add-after 'patch-source-shebangs 'patch-shell-invokations
4338 (lambda _
4339 (substitute* '("lib/parallel_tests/tasks.rb"
4340 "spec/parallel_tests/tasks_spec.rb")
4341 (("/bin/sh") (which "sh"))
4342 (("/bin/bash") (which "bash")))
4343 #t))
4344 (add-before 'check 'remove-version-constraints
4345 (lambda _
4346 ;; Remove hard coded version constraints, instead just
4347 ;; use whatever versions are available in Guix.
4348 (delete-file "Gemfile.lock")
4349 (substitute* "Gemfile"
4350 (("'minitest',.*")
4351 "'minitest'\n")
4352 (("'cucumber',.*")
4353 "'cucumber'\n"))
4354 #t))
4355 (add-before 'check 'disable-rails-test
4356 (lambda _
4357 ;; XXX: This test attempts to download and run the test
4358 ;; suites of multiple Rails versions(!) directly.
4359 (delete-file "spec/rails_spec.rb")
4360 #t))
4361 (add-before 'check 'set-HOME
4362 (lambda _
4363 ;; Some tests check the output of Bundler, and fail when
4364 ;; Bundler warns that /homeless-shelter does not exist.
4365 (setenv "HOME" "/tmp")
4366 #t)))))
4367 (native-inputs
4368 `(("ruby-bump" ,ruby-bump)
4369 ("ruby-cucumber" ,ruby-cucumber)
8a01e2fa 4370 ("ruby-cuke-modeler" ,ruby-cuke-modeler)
2156cc9c
MB
4371 ("ruby-minitest" ,ruby-minitest)
4372 ("ruby-rake" ,ruby-rake)
4373 ("ruby-rspec" ,ruby-rspec)
4374 ("ruby-spinach" ,ruby-spinach)))
4375 (propagated-inputs
4376 `(("ruby-parallel" ,ruby-parallel)))
4377 (synopsis "Run tests in parallel")
4378 (description
4379 "This package can speed up @code{Test::Unit}, @code{RSpec},
4380@code{Cucumber}, and @code{Spinach} tests by running them concurrently
4381across multiple CPU cores.")
4382 (license license:expat)))
4383
54993457
CB
4384(define-public ruby-parser
4385 (package
4386 (name "ruby-parser")
4387 (version "2.6.0.0")
4388 (source
4389 (origin
4390 (method url-fetch)
4391 (uri (rubygems-uri "parser" version))
4392 (sha256
4393 (base32
4394 "1hhz2k5417vr2k1llwqgjdnmyrhlpqicy0y2arr6r1gp04fg9wlm"))))
4395 (build-system ruby-build-system)
4396 (native-inputs
4397 `(("bundler" ,bundler)
4398 ("ruby-cliver" ,ruby-cliver)
4399 ("ruby-simplecov" ,ruby-simplecov)
4400 ("ruby-racc" ,ruby-racc)))
4401 (inputs
4402 `(("ragel" ,ragel)))
4403 (propagated-inputs
4404 `(("ruby-ast" ,ruby-ast)))
4405 (synopsis "Ruby parser written in pure Ruby")
4406 (description
4407 "This package provides a Ruby parser written in pure Ruby.")
4408 (home-page "https://github.com/whitequark/parser")
4409 (license license:expat)))
4410
a8cdfd53
MC
4411(define-public ruby-sexp-processor
4412 (package
4413 (name "ruby-sexp-processor")
4414 (version "4.15.0")
4415 (source
4416 (origin
4417 (method url-fetch)
4418 (uri (rubygems-uri "sexp_processor" version))
4419 (sha256
4420 (base32
4421 "0d1vks77xnd0m3s94a58f9bkdwlaml5qdkmprx279m2s0pc2gv55"))))
4422 (build-system ruby-build-system)
4423 (native-inputs
4424 ;; TODO: Add ruby-minitest-proveit once available.
4425 `(("hoe" ,ruby-hoe)))
4426 (synopsis "ParseTree fork which includes generic S-exp processing tools")
4427 (description "The sexp_processor package is derived from ParseTree, but
4428contrary to ParseTree, it includes all the generic S-exp processing tools.
4429Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and
4430@code{Environment}")
4431 (home-page "https://github.com/seattlerb/sexp_processor")
4432 (license license:expat)))
4433
24be6751
MC
4434(define-public ruby-ruby-parser
4435 (package
4436 (name "ruby-ruby-parser")
4437 (version "3.14.2")
4438 (source
4439 (origin
4440 (method url-fetch)
4441 (uri (rubygems-uri "ruby_parser" version))
4442 (sha256
4443 (base32
4444 "09qcdyjjw3p7g6cjm5m9swkms1xnv35ndiy7yw24cas16qrhha6c"))))
4445 (build-system ruby-build-system)
4446 (native-inputs
4447 `(("hoe" ,ruby-hoe)
4448 ("racc" ,ruby-racc)
4449 ("unifdef" ,unifdef)))
4450 (propagated-inputs
4451 `(("ruby-sexp-processor" ,ruby-sexp-processor)))
4452 (home-page "https://github.com/seattlerb/ruby_parser/")
4453 (synopsis "Ruby parser written in pure Ruby")
4454 (description "The ruby_parser (RP) package provides a Ruby parser written
4455in pure Ruby. It outputs S-expressions which can be manipulated and converted
4456back to Ruby via the @code{ruby2ruby} library.")
4457 (license license:expat)))
4458
16f423cb
CB
4459(define-public ruby-prawn-manual-builder
4460 (package
4461 (name "ruby-prawn-manual-builder")
1d4f0019 4462 (version "0.3.1")
16f423cb
CB
4463 (source
4464 (origin
4465 (method url-fetch)
4466 (uri (rubygems-uri "prawn-manual_builder" version))
4467 (sha256
1d4f0019 4468 (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs"))))
16f423cb
CB
4469 (build-system ruby-build-system)
4470 (arguments
1d4f0019 4471 '(#:tests? #f ; no included tests
16f423cb
CB
4472 #:phases
4473 (modify-phases %standard-phases
4474 (add-after 'extract-gemspec 'patch-gemspec
4475 (lambda _
4476 (substitute* ".gemspec"
4477 ;; Loosen the requirement for pdf-inspector
4478 (("~> 1\\.0\\.7") ">= 0")))))))
4479 (propagated-inputs
4480 `(("ruby-coderay" ,ruby-coderay)))
4481 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
4482 (description
4483 "This package provides a tool for writing manuals for Prawn and Prawn
4484accessories")
4485 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
4486 (license (list
4487 ;; GPLv2 or GPLv3 or custom license described in LICENSE file
4488 license:gpl2
4489 license:gpl3))))
4490
268643b9
CB
4491(define-public ruby-progress_bar
4492 (package
4493 (name "ruby-progress_bar")
4494 (version "1.1.0")
4495 (source
4496 (origin
4497 (method url-fetch)
4498 (uri (rubygems-uri "progress_bar" version))
4499 (sha256
4500 (base32
4501 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
4502 (build-system ruby-build-system)
4503 (arguments
4504 '(#:test-target "spec"))
4505 (propagated-inputs
4506 `(("ruby-highline" ,ruby-highline)
4507 ("ruby-options" ,ruby-options)))
4508 (native-inputs
4509 `(("bundler" ,bundler)
4510 ("ruby-rspec" ,ruby-rspec)
4511 ("ruby-timecop" ,ruby-timecop)))
4512 (synopsis
4513 "Ruby library for displaying progress bars")
4514 (description
4515 "ProgressBar is a simple library for displaying progress bars. The
4516maximum value is configurable, and additional information can be displayed
4517like the percentage completion, estimated time remaining, elapsed time and
4518rate.")
4519 (home-page "https://github.com/paul/progress_bar")
4520 (license license:wtfpl2)))
4521
95f85d44
CB
4522(define-public ruby-dep
4523 (package
4524 (name "ruby-dep")
4525 (version "1.5.0")
4526 (source
4527 (origin
4528 (method url-fetch)
4529 (uri (rubygems-uri "ruby_dep" version))
4530 (sha256
4531 (base32
4532 "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
4533 (build-system ruby-build-system)
4534 (arguments
4535 '(#:tests? #f)) ; No included tests
4536 (synopsis "Creates a version constraint of supported Rubies")
4537 (description
4538 "This package helps create a version constraint of supported Rubies,
4539suitable for a gemspec file.")
4540 (home-page "https://github.com/e2/ruby_dep")
4541 (license license:expat)))
4542
158a9253
CB
4543(define-public ruby-progressbar
4544 (package
4545 (name "ruby-progressbar")
2d2a2363 4546 (version "1.10.1")
158a9253
CB
4547 (source
4548 (origin
4549 (method url-fetch)
4550 (uri (rubygems-uri "ruby-progressbar" version))
4551 (sha256
2d2a2363 4552 (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf"))))
158a9253
CB
4553 (build-system ruby-build-system)
4554 (arguments
4555 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
4556 #:tests? #f))
4557 (synopsis "Text progress bar library for Ruby")
4558 (description
4559 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
4560The output can be customized with a formatting system.")
4561 (home-page "https://github.com/jfelchner/ruby-progressbar")
4562 (license license:expat)))
4563
96e76083
DT
4564(define-public ruby-pry
4565 (package
4566 (name "ruby-pry")
a0d93c17 4567 (version "0.13.1")
96e76083
DT
4568 (source
4569 (origin
4570 (method url-fetch)
4571 (uri (rubygems-uri "pry" version))
4572 (sha256
4573 (base32
a0d93c17 4574 "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk"))))
96e76083
DT
4575 (build-system ruby-build-system)
4576 (arguments
4577 '(#:tests? #f)) ; no tests
4578 (propagated-inputs
4579 `(("ruby-coderay" ,ruby-coderay)
1960d4fd 4580 ("ruby-method-source" ,ruby-method-source)))
96e76083
DT
4581 (synopsis "Ruby REPL")
4582 (description "Pry is an IRB alternative and runtime developer console for
4583Ruby. It features syntax highlighting, a plugin architecture, runtime
4584invocation, and source and documentation browsing.")
a0d93c17 4585 (home-page "https://cobaltbluemedia.com/pryrepl/")
96e76083 4586 (license license:expat)))
1415792a 4587
def7908a
MB
4588(define-public ruby-single-cov
4589 (package
4590 (name "ruby-single-cov")
4591 (version "1.3.2")
4592 (home-page "https://github.com/grosser/single_cov")
4593 (source (origin
4594 (method git-fetch)
4595 (uri (git-reference (url home-page)
4596 (commit (string-append "v" version))))
4597 (file-name (git-file-name name version))
4598 (sha256
4599 (base32
4600 "05qdzpcai1p23a120gb9bxkfl4y73k9hicx34ch2lsk31lgi9bl7"))))
4601 (build-system ruby-build-system)
4602 (arguments
4603 '(#:test-target "default"
4604 #:phases (modify-phases %standard-phases
4605 (replace 'replace-git-ls-files
4606 (lambda _
4607 (substitute* "single_cov.gemspec"
4608 (("`git ls-files lib/ bin/ MIT-LICENSE`")
4609 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
4610 #t))
4611 (add-before 'check 'remove-version-constraints
4612 (lambda _
4613 (delete-file "Gemfile.lock")
4614 #t))
4615 (add-before 'check 'make-files-writable
4616 (lambda _
4617 ;; Tests need to create local directories and open files
4618 ;; with write permissions.
4619 (for-each make-file-writable
4620 (find-files "specs" #:directories? #t))
4621 #t))
4622 (add-before 'check 'disable-failing-test
4623 (lambda _
4624 ;; XXX: This test copies assets from minitest, but can
4625 ;; not cope with the files being read-only. Just skip
4626 ;; it for now.
4627 (substitute* "specs/single_cov_spec.rb"
4628 (("it \"complains when coverage is bad\"")
4629 "xit \"complains when coverage is bad\""))
4630 #t)))))
4631 (native-inputs
4632 `(("ruby-bump" ,ruby-bump)
4633 ("ruby-minitest" ,ruby-minitest)
4634 ("ruby-rspec" ,ruby-rspec)
4635 ("ruby-simplecov" ,ruby-simplecov)))
4636 (synopsis "Code coverage reporting tool")
4637 (description
4638 "This package provides actionable code coverage reports for Ruby
4639projects. It has very little overhead and can be easily integrated with
4640development tools to catch coverage problems early.")
4641 (license license:expat)))
4642
051deeb7
RW
4643(define-public ruby-guard
4644 (package
4645 (name "ruby-guard")
4646 (version "2.13.0")
4647 (source (origin
3c6128f6 4648 (method git-fetch)
051deeb7
RW
4649 ;; The gem does not include a Rakefile, nor does it contain a
4650 ;; gemspec file, nor does it come with the tests. This is why
4651 ;; we fetch the tarball from Github.
3c6128f6
EF
4652 (uri (git-reference
4653 (url "https://github.com/guard/guard")
4654 (commit (string-append "v" version))))
4655 (file-name (git-file-name name version))
051deeb7
RW
4656 (sha256
4657 (base32
3c6128f6 4658 "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs"))))
051deeb7
RW
4659 (build-system ruby-build-system)
4660 (arguments
4661 `(#:tests? #f ; tests require cucumber
4662 #:phases
4663 (modify-phases %standard-phases
4664 (add-after 'unpack 'remove-git-ls-files
4665 (lambda* (#:key outputs #:allow-other-keys)
4666 (substitute* "guard.gemspec"
4667 (("git ls-files -z") "find . -type f -print0"))
4668 #t))
4669 (replace 'build
4670 (lambda _
9923d5a4 4671 (invoke "gem" "build" "guard.gemspec"))))))
051deeb7
RW
4672 (propagated-inputs
4673 `(("ruby-formatador" ,ruby-formatador)
4674 ("ruby-listen" ,ruby-listen)
4675 ("ruby-lumberjack" ,ruby-lumberjack)
4676 ("ruby-nenv" ,ruby-nenv)
4677 ("ruby-notiffany" ,ruby-notiffany)
4678 ("ruby-pry" ,ruby-pry)
4679 ("ruby-shellany" ,ruby-shellany)
4680 ("ruby-thor" ,ruby-thor)))
4681 (native-inputs
4682 `(("bundler" ,bundler)
4683 ("ruby-rspec" ,ruby-rspec)))
4684 (synopsis "Tool to handle events on file system modifications")
4685 (description
4686 "Guard is a command line tool to easily handle events on file system
4687modifications. Guard automates various tasks by running custom rules whenever
4688file or directories are modified.")
3c6128f6 4689 (home-page "https://guardgem.org/")
051deeb7
RW
4690 (license license:expat)))
4691
c09bc60d
MB
4692(define-public ruby-spinach
4693 (package
4694 (name "ruby-spinach")
4695 (version "0.11.0")
4696 (home-page "http://github.com/codegram/spinach")
4697 (source (origin
4698 (method url-fetch)
4699 (uri (rubygems-uri "spinach" version))
4700 (sha256
4701 (base32
4702 "1mv053mqz9c8ngqa6wp1ymk2fax6j0yqzax6918akrdr7c3fx3c6"))))
4703 (build-system ruby-build-system)
4704 (arguments
4705 ;; FIXME: Disable tests altogether because they depend on 'capybara'
4706 ;; which in turn depends on many other unpackaged gems. Enable once
4707 ;; capybara is available.
4708 '(#:tests? #f))
4709 (propagated-inputs
4710 `(("ruby-colorize" ,ruby-colorize)
4711 ("ruby-gherkin-ruby" ,ruby-gherkin-ruby)
4712 ("ruby-json" ,ruby-json)))
4713 (synopsis "Gherkin-based BDD framework")
4714 (description
4715 "Spinach is a high-level @acronym{BDD, Behavior-driven development}
4716framework that leverages the expressive @code{Gherkin} language to help you
4717define executable specifications of your code.")
4718 (license license:expat)))
4719
bcbb3cc9
CB
4720(define-public ruby-tilt
4721 (package
4722 (name "ruby-tilt")
c3f15f54 4723 (version "2.0.10")
bcbb3cc9
CB
4724 (source
4725 (origin
c3f15f54
MC
4726 (method git-fetch) ;the distributed gem lacks tests
4727 (uri (git-reference
4728 (url "https://github.com/rtomayko/tilt.git")
4729 (commit (string-append "v" version))))
4730 (file-name (git-file-name name version))
bcbb3cc9
CB
4731 (sha256
4732 (base32
c3f15f54 4733 "0adb7fg7925n2rd9a8kkqz3mgylw2skp9hkh9qc1rnph72mqsm6r"))))
bcbb3cc9
CB
4734 (build-system ruby-build-system)
4735 (arguments
4736 '(#:phases
4737 (modify-phases %standard-phases
4738 (add-after 'unpack 'remove-some-dependencies
4739 (lambda _
4740 (substitute* "Gemfile"
4741 ;; TODO ronn is used for generating the manual
4742 (("gem 'ronn'.*") "\n")
4743 ;; ruby-haml has a runtime dependency on ruby-tilt, so don't
4744 ;; pass it in as a native-input
4745 (("gem 'haml'.*") "\n")
4746 ;; TODO Not all of these gems are packaged for Guix yet:
4747 ;; less, coffee-script, livescript, babel-transpiler,
4748 ;; typescript-node
4749 (("if can_execjs") "if false")
4750 ;; Disable the secondary group to reduce the number of
4751 ;; dependencies. None of the normal approaches work, so patch
4752 ;; the Gemfile instead.
4753 (("group :secondary") "[].each"))
4754 #t)))))
4755 (native-inputs
4756 `(("bundler" ,bundler)
4757 ("ruby-yard" ,ruby-yard)
4758 ("ruby-builder" ,ruby-builder)
4759 ("ruby-erubis" ,ruby-erubis)
4760 ("ruby-markaby" ,ruby-markaby)
4761 ("ruby-sassc" ,ruby-sassc)))
4762 (synopsis "Generic interface to multiple Ruby template engines")
4763 (description
4764 "Tilt is a thin interface over a number of different Ruby template
4765engines in an attempt to make their usage as generic as possible.")
4766 (home-page "https://github.com/rtomayko/tilt/")
4767 (license license:expat)))
4768
1415792a
DT
4769(define-public ruby-thread-safe
4770 (package
4771 (name "ruby-thread-safe")
313dd5dd 4772 (version "0.3.6")
1415792a
DT
4773 (source
4774 (origin
4775 (method url-fetch)
4776 (uri (rubygems-uri "thread_safe" version))
4777 (sha256
4778 (base32
313dd5dd 4779 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
1415792a
DT
4780 (build-system ruby-build-system)
4781 (arguments
4782 '(#:tests? #f)) ; needs simplecov, among others
4783 (synopsis "Thread-safe utilities for Ruby")
4784 (description "The thread_safe library provides thread-safe collections and
4785utilities for Ruby.")
4786 (home-page "https://github.com/ruby-concurrency/thread_safe")
4787 (license license:asl2.0)))
08a1b701
DT
4788
4789(define-public ruby-tzinfo
4790 (package
4791 (name "ruby-tzinfo")
4237af85 4792 (version "1.2.4")
08a1b701
DT
4793 (source
4794 (origin
4795 (method url-fetch)
4796 (uri (rubygems-uri "tzinfo" version))
4797 (sha256
4798 (base32
4237af85 4799 "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp"))))
08a1b701 4800 (build-system ruby-build-system)
740fea08
CB
4801 (arguments
4802 '(#:phases
4803 (modify-phases %standard-phases
4804 (add-after 'unpack 'skip-safe-tests
4805 (lambda _
4806 (substitute* "test/test_utils.rb"
4807 (("def safe_test\\(options = \\{\\}\\)")
4808 "def safe_test(options = {})
4809 skip('The Guix build environment has an unsafe load path')"))
4810 #t)))))
08a1b701
DT
4811 (propagated-inputs
4812 `(("ruby-thread-safe" ,ruby-thread-safe)))
4813 (synopsis "Time zone library for Ruby")
4814 (description "TZInfo is a Ruby library that provides daylight savings
4815aware transformations between times in different time zones.")
2f3800e5 4816 (home-page "https://tzinfo.github.io")
1e12924a
BW
4817 (license license:expat)))
4818
4819(define-public ruby-tzinfo-data
4820 (package
4821 (name "ruby-tzinfo-data")
92513191 4822 (version "1.2017.3")
1e12924a
BW
4823 (source
4824 (origin
bb1e7ed0 4825 (method git-fetch)
1e12924a
BW
4826 ;; Download from GitHub because the rubygems version does not contain
4827 ;; Rakefile or tests.
bb1e7ed0
EF
4828 (uri (git-reference
4829 (url "https://github.com/tzinfo/tzinfo-data")
4830 (commit (string-append "v" version))))
4831 (file-name (git-file-name name version))
1e12924a
BW
4832 (sha256
4833 (base32
bb1e7ed0 4834 "0v3phl5l3jrm6waxcszqmj2dkjhqawxfsxb6mss7vkp1hlckqcdp"))
1e12924a
BW
4835 ;; Remove the known test failure.
4836 ;; https://github.com/tzinfo/tzinfo-data/issues/10
4837 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
4838 (patches (search-patches
4839 "ruby-tzinfo-data-ignore-broken-test.patch"))))
4840 (build-system ruby-build-system)
4841 (propagated-inputs
4842 `(("ruby-tzinfo" ,ruby-tzinfo)))
4843 (synopsis "Data from the IANA Time Zone database")
4844 (description
4845 "This library provides @code{TZInfo::Data}, which contains data from the
4846IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
2f3800e5 4847 (home-page "https://tzinfo.github.io")
08a1b701 4848 (license license:expat)))
c99e2247 4849
48e6851f
RW
4850(define-public ruby-rb-inotify
4851 (package
4852 (name "ruby-rb-inotify")
32bbfea8 4853 (version "0.9.10")
48e6851f
RW
4854 (source
4855 (origin
4856 (method url-fetch)
4857 (uri (rubygems-uri "rb-inotify" version))
4858 (sha256
4859 (base32
32bbfea8 4860 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
48e6851f
RW
4861 (build-system ruby-build-system)
4862 (arguments
4863 '(#:tests? #f ; there are no tests
4864 #:phases
4865 (modify-phases %standard-phases
4866 ;; Building the gemspec with rake is not working here since it is
4867 ;; generated with Jeweler. It is also unnecessary because the
4868 ;; existing gemspec does not use any development tools to generate a
4869 ;; list of files.
4870 (replace 'build
4871 (lambda _
9923d5a4 4872 (invoke "gem" "build" "rb-inotify.gemspec"))))))
48e6851f
RW
4873 (propagated-inputs
4874 `(("ruby-ffi" ,ruby-ffi)))
4875 (native-inputs
4876 `(("ruby-yard" ,ruby-yard)))
4877 (synopsis "Ruby wrapper for Linux's inotify")
4878 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
4879kernel subsystem for monitoring changes to files and directories.")
4880 (home-page "https://github.com/nex3/rb-inotify")
4881 (license license:expat)))
4882
a75bdfce
RW
4883(define-public ruby-pry-editline
4884 (package
4885 (name "ruby-pry-editline")
4886 (version "1.1.2")
4887 (source (origin
4888 (method url-fetch)
4889 (uri (rubygems-uri "pry-editline" version))
4890 (sha256
4891 (base32
4892 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
4893 (build-system ruby-build-system)
4894 (arguments `(#:tests? #f)) ; no tests included
4895 (native-inputs
4896 `(("bundler" ,bundler)))
4897 (synopsis "Open the current REPL line in an editor")
4898 (description
4899 "This gem provides a plugin for the Ruby REPL to enable opening the
4900current line in an external editor.")
4901 (home-page "https://github.com/tpope/pry-editline")
4902 (license license:expat)))
4903
d3b20a02
RW
4904(define-public ruby-sdoc
4905 (package
4906 (name "ruby-sdoc")
6700dc33 4907 (version "1.1.0")
d3b20a02
RW
4908 (source (origin
4909 (method url-fetch)
4910 (uri (rubygems-uri "sdoc" version))
4911 (sha256
4912 (base32
6700dc33 4913 "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd"))))
d3b20a02
RW
4914 (build-system ruby-build-system)
4915 (arguments
4916 `(#:phases
4917 (modify-phases %standard-phases
fc29d5e6 4918 (add-before 'check 'set-rubylib-and-patch-gemfile
d3b20a02 4919 (lambda _
fdf3a68d 4920 (setenv "RUBYLIB" "lib")
fc29d5e6
BW
4921 (substitute* "sdoc.gemspec"
4922 (("s.add_runtime_dependency.*") "\n")
4923 (("s.add_dependency.*") "\n"))
4924 (substitute* "Gemfile"
4925 (("gem \"rake\".*")
4926 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
d3b20a02
RW
4927 #t)))))
4928 (propagated-inputs
4929 `(("ruby-json" ,ruby-json)))
4930 (native-inputs
4931 `(("bundler" ,bundler)
fdf3a68d
BW
4932 ("ruby-minitest" ,ruby-minitest)
4933 ("ruby-hoe" ,ruby-hoe)))
d3b20a02
RW
4934 (synopsis "Generate searchable RDoc documentation")
4935 (description
4936 "SDoc is an RDoc documentation generator to build searchable HTML
4937documentation for Ruby code.")
7bf837fd 4938 (home-page "https://github.com/voloko/sdoc")
d3b20a02
RW
4939 (license license:expat)))
4940
70b002aa
RW
4941(define-public ruby-tins
4942 (package
4943 (name "ruby-tins")
fbefd6ff 4944 (version "1.15.0")
70b002aa
RW
4945 (source (origin
4946 (method url-fetch)
4947 (uri (rubygems-uri "tins" version))
4948 (sha256
4949 (base32
fbefd6ff 4950 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
70b002aa
RW
4951 (build-system ruby-build-system)
4952 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
4953 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
4954 ;; the gemspec.
4955 (arguments
4956 `(#:tests? #f ; there are no tests
4957 #:phases
4958 (modify-phases %standard-phases
4959 (replace 'build
4960 (lambda _
4961 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
4962 ;; causes an error.
4963 (substitute* "tins.gemspec"
4964 (("\"lib/spruz\", ") ""))
9923d5a4 4965 (invoke "gem" "build" "tins.gemspec"))))))
70b002aa
RW
4966 (synopsis "Assorted tools for Ruby")
4967 (description "Tins is a Ruby library providing assorted tools.")
4968 (home-page "https://github.com/flori/tins")
4969 (license license:expat)))
4970
bc8277e4
RW
4971(define-public ruby-gem-hadar
4972 (package
4973 (name "ruby-gem-hadar")
3fd577e3 4974 (version "1.9.1")
bc8277e4
RW
4975 (source (origin
4976 (method url-fetch)
4977 (uri (rubygems-uri "gem_hadar" version))
4978 (sha256
4979 (base32
3fd577e3 4980 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
bc8277e4
RW
4981 (build-system ruby-build-system)
4982 ;; This gem needs itself at development time. We disable rebuilding of the
4983 ;; gemspec to avoid this loop.
4984 (arguments
4985 `(#:tests? #f ; there are no tests
4986 #:phases
4987 (modify-phases %standard-phases
4988 (replace 'build
4989 (lambda _
9923d5a4 4990 (invoke "gem" "build" "gem_hadar.gemspec"))))))
bc8277e4
RW
4991 (propagated-inputs
4992 `(("git" ,git)
4993 ("ruby-tins" ,ruby-tins)
3fd577e3 4994 ("ruby-yard" ,ruby-yard)))
bc8277e4
RW
4995 (synopsis "Library for the development of Ruby gems")
4996 (description
4997 "This library contains some useful functionality to support the
4998development of Ruby gems.")
4999 (home-page "https://github.com/flori/gem_hadar")
5000 (license license:expat)))
5001
d8cafe29
RW
5002(define-public ruby-minitest-tu-shim
5003 (package
5004 (name "ruby-minitest-tu-shim")
5005 (version "1.3.3")
5006 (source (origin
5007 (method url-fetch)
5008 (uri (rubygems-uri "minitest_tu_shim" version))
5009 (sha256
5010 (base32
5011 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
5012 (build-system ruby-build-system)
5013 (arguments
5014 `(#:phases
5015 (modify-phases %standard-phases
5016 (add-after 'unpack 'fix-test-include-path
5017 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 5018 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
761e7042
BW
5019 (substitute* "Rakefile"
5020 (("Hoe\\.add_include_dirs .*")
5021 (string-append "Hoe.add_include_dirs \""
3cb3fa67 5022 minitest "/lib/ruby/vendor_ruby"
761e7042
BW
5023 "/gems/minitest-"
5024 ,(package-version ruby-minitest-4)
5025 "/lib" "\""))))
5026 #t))
d8cafe29
RW
5027 (add-before 'check 'fix-test-assumptions
5028 (lambda _
5029 ;; The test output includes the file name, so a couple of tests
5030 ;; fail. Changing the regular expressions slightly fixes this
5031 ;; problem.
5032 (substitute* "test/test_mini_test.rb"
5033 (("output.sub!\\(.*, 'FILE:LINE'\\)")
5034 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
5035 (("gsub\\(/.*, 'FILE:LINE'\\)")
5036 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
5037 #t)))))
5038 (propagated-inputs
5039 `(("ruby-minitest-4" ,ruby-minitest-4)))
5040 (native-inputs
5041 `(("ruby-hoe" ,ruby-hoe)))
5042 (synopsis "Adapter library between minitest and test/unit")
5043 (description
5044 "This library bridges the gap between the small and fast minitest and
5045Ruby's large and slower test/unit.")
5046 (home-page "https://rubygems.org/gems/minitest_tu_shim")
5047 (license license:expat)))
5048
fd83a212
RW
5049(define-public ruby-term-ansicolor
5050 (package
5051 (name "ruby-term-ansicolor")
f3a6311a 5052 (version "1.6.0")
fd83a212
RW
5053 (source (origin
5054 (method url-fetch)
5055 (uri (rubygems-uri "term-ansicolor" version))
5056 (sha256
5057 (base32
f3a6311a 5058 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
fd83a212
RW
5059 (build-system ruby-build-system)
5060 ;; Rebuilding the gemspec seems to require git, even though this is not a
5061 ;; git repository, so we just build the gem from the existing gemspec.
5062 (arguments
5063 `(#:phases
5064 (modify-phases %standard-phases
39ecb977
CB
5065 (add-after 'unpack 'fix-test
5066 (lambda -
5067 (substitute* "tests/hsl_triple_test.rb"
5068 (("0\\\\\\.0%")
5069 "0\\.?0?%"))))
fd83a212
RW
5070 (replace 'build
5071 (lambda _
9923d5a4 5072 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
fd83a212
RW
5073 (propagated-inputs
5074 `(("ruby-tins" ,ruby-tins)))
5075 (native-inputs
5076 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5077 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
5078 (synopsis "Ruby library to control the attributes of terminal output")
5079 (description
5080 "This Ruby library uses ANSI escape sequences to control the attributes
5081of terminal output.")
2f3800e5 5082 (home-page "https://flori.github.io/term-ansicolor/")
fd83a212
RW
5083 ;; There is no mention of the "or later" clause.
5084 (license license:gpl2)))
5085
a714c30f
CB
5086(define-public ruby-terraform
5087 (package
5088 (name "ruby-terraform")
5089 (version "0.22.0")
5090 (source
5091 (origin
5092 (method url-fetch)
5093 (uri (rubygems-uri "ruby-terraform" version))
5094 (sha256
5095 (base32
5096 "13zjkp71cd19j2ds2h9rqwcfr1zdg5nsh63p89l6qcsc9z39z324"))))
5097 (build-system ruby-build-system)
5098 (arguments
5099 '(#:tests? #f)) ; No included tests
5100 (propagated-inputs
5101 `(("ruby-lino" ,ruby-lino)))
5102 (synopsis "Ruby wrapper around the Terraform command line interface")
5103 (description
5104 "This package provides a Ruby wrapper around the Terraform command line
5105interface so that Terraform can be more easily invoked from Ruby code.")
5106 (home-page "https://github.com/infrablocks/ruby_terraform")
5107 (license license:expat)))
5108
6e376ca4
RW
5109(define-public ruby-pstree
5110 (package
5111 (name "ruby-pstree")
5112 (version "0.1.0")
5113 (source (origin
5114 (method url-fetch)
5115 (uri (rubygems-uri "pstree" version))
5116 (sha256
5117 (base32
5118 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
5119 (build-system ruby-build-system)
5120 (native-inputs
5121 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5122 ("bundler" ,bundler)))
5123 (synopsis "Create a process tree data structure")
5124 (description
5125 "This library uses the output of the @code{ps} command to create a
5126process tree data structure for the current host.")
2f3800e5 5127 (home-page "https://github.com/flori/pstree")
6e376ca4
RW
5128 ;; There is no mention of the "or later" clause.
5129 (license license:gpl2)))
5130
53239b5f
RW
5131(define-public ruby-utils
5132 (package
5133 (name "ruby-utils")
cd698b6e 5134 (version "0.9.0")
53239b5f
RW
5135 (source (origin
5136 (method url-fetch)
5137 (uri (rubygems-uri "utils" version))
5138 (sha256
5139 (base32
cd698b6e 5140 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
53239b5f
RW
5141 (build-system ruby-build-system)
5142 (propagated-inputs
5143 `(("ruby-tins" ,ruby-tins)
5144 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
5145 ("ruby-pstree" ,ruby-pstree)
5146 ("ruby-pry-editline" ,ruby-pry-editline)))
5147 (native-inputs
5148 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5149 ("bundler" ,bundler)))
5150 (synopsis "Command line tools for working with Ruby")
5151 (description
5152 "This package provides assorted command line tools that may be useful
5153when working with Ruby code.")
5154 (home-page "https://github.com/flori/utils")
5155 ;; There is no mention of the "or later" clause.
5156 (license license:gpl2)))
5157
433f10b5
CB
5158(define-public ruby-jaro-winkler
5159 (package
5160 (name "ruby-jaro-winkler")
37b23e44 5161 (version "1.5.4")
433f10b5
CB
5162 (source
5163 (origin
5164 (method url-fetch)
5165 (uri (rubygems-uri "jaro_winkler" version))
5166 (sha256
37b23e44 5167 (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh"))))
433f10b5
CB
5168 (build-system ruby-build-system)
5169 (arguments
37b23e44 5170 '(#:tests? #f)) ; no included tests
433f10b5
CB
5171 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
5172 (description
5173 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
5174algorithm. It is written as a C extension and will fallback to a pure Ruby
5175implementation on platforms where this is unsupported.")
5176 (home-page "https://github.com/tonytonyjan/jaro_winkler")
5177 (license license:expat)))
5178
c99e2247
DT
5179(define-public ruby-json
5180 (package
5181 (name "ruby-json")
a281acce 5182 (version "2.1.0")
c99e2247
DT
5183 (source
5184 (origin
5185 (method url-fetch)
5186 (uri (rubygems-uri "json" version))
5187 (sha256
5188 (base32
a281acce 5189 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
c99e2247
DT
5190 (build-system ruby-build-system)
5191 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
5192 (synopsis "JSON library for Ruby")
5193 (description "This Ruby library provides a JSON implementation written as
5194a native C extension.")
5195 (home-page "http://json-jruby.rubyforge.org/")
5196 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 5197
763624f5
RW
5198(define-public ruby-json-pure
5199 (package
5200 (name "ruby-json-pure")
1c65d99f 5201 (version "2.2.0")
763624f5
RW
5202 (source (origin
5203 (method url-fetch)
5204 (uri (rubygems-uri "json_pure" version))
5205 (sha256
5206 (base32
1c65d99f 5207 "0m0j1mfwv0mvw72kzqisb26xjl236ivqypw1741dkis7s63b8439"))))
763624f5
RW
5208 (build-system ruby-build-system)
5209 (arguments
ac01cb07 5210 `(#:phases
763624f5 5211 (modify-phases %standard-phases
ac01cb07 5212 (add-after 'unpack 'fix-rakefile
763624f5 5213 (lambda _
ac01cb07
BW
5214 (substitute* "Rakefile"
5215 ;; Since this is not a git repository, do not call 'git'.
5216 (("`git ls-files`") "`find . -type f |sort`")
5217 ;; Loosen dependency constraint.
5218 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
5219 #t))
5220 (add-after 'replace-git-ls-files 'regenerate-gemspec
5221 (lambda _
5222 ;; Regenerate gemspec so loosened dependency constraints are
5223 ;; propagated.
17cfb7ae
CB
5224 (invoke "rake" "gemspec")))
5225 (add-after 'regenerate-gemspec 'fix-json-java.gemspec
5226 (lambda _
5227 ;; This gemspec doesn't look to be generated by the above
5228 ;; command, so patch it separately.
5229 (substitute* "json-java.gemspec"
5230 (("%q<test-unit>\\.freeze, \\[\"~> 2\\.0\"\\]")
5231 "%q<test-unit>.freeze, [\">= 2.0\"]"))
5232 #t)))))
763624f5 5233 (native-inputs
ac01cb07 5234 `(("bundler" ,bundler)
0c9f73cd
TGR
5235 ("ragel" ,ragel)
5236 ("ruby-simplecov" ,ruby-simplecov)
5237 ("ruby-test-unit" ,ruby-test-unit)))
763624f5
RW
5238 (synopsis "JSON implementation in pure Ruby")
5239 (description
5240 "This package provides a JSON implementation written in pure Ruby.")
1c65d99f 5241 (home-page "https://flori.github.com/json/")
763624f5
RW
5242 (license license:ruby)))
5243
2a8581ac
CB
5244(define-public ruby-jwt
5245 (package
5246 (name "ruby-jwt")
5247 (version "2.1.0")
5248 (source
5249 (origin
5250 (method url-fetch)
5251 (uri (rubygems-uri "jwt" version))
5252 (sha256
5253 (base32
5254 "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky"))))
5255 (build-system ruby-build-system)
5256 (arguments
5257 '(#:test-target "test"
5258 #:phases
5259 (modify-phases %standard-phases
5260 (add-after 'unpack 'remove-unnecessary-dependencies
5261 (lambda _
5262 (substitute* "spec/spec_helper.rb"
5263 (("require 'simplecov.*") "\n")
5264 ;; Use [].each to disable running the SimpleCov configuration
5265 ;; block
5266 (("SimpleCov\\.configure") "[].each")
5267 (("require 'codeclimate-test-reporter'") "")
5268 (("require 'codacy-coverage'") "")
5269 (("Codacy::Reporter\\.start") ""))
5270 #t)))))
5271 (native-inputs
5272 `(("bundler" ,bundler)
5273 ("ruby-rspec" ,ruby-rspec)
5274 ("ruby-rbnacl" ,ruby-rbnacl)))
5275 (synopsis "Ruby implementation of the JSON Web Token standard")
5276 (description
5277 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
5278@acronym{JWT, JSON Web Token} standard.")
5279 (home-page "https://github.com/jwt/ruby-jwt")
5280 (license license:expat)))
5281
16b324cd
RW
5282;; Even though this package only provides bindings for a Mac OSX API it is
5283;; required by "ruby-listen" at runtime.
5284(define-public ruby-rb-fsevent
5285 (package
5286 (name "ruby-rb-fsevent")
b0ef15ed 5287 (version "0.10.3")
16b324cd
RW
5288 (source (origin
5289 (method url-fetch)
5290 (uri (rubygems-uri "rb-fsevent" version))
5291 (sha256
5292 (base32
b0ef15ed 5293 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
16b324cd
RW
5294 (build-system ruby-build-system)
5295 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
5296 ;; "listen", which needs "rb-fsevent" at runtime.
5297 (arguments `(#:tests? #f))
5298 (synopsis "FSEvents API with signals catching")
5299 (description
5300 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
5301 (home-page "https://rubygems.org/gems/rb-fsevent")
5302 (license license:expat)))
5303
b86be2ad
RW
5304(define-public ruby-listen
5305 (package
5306 (name "ruby-listen")
12341d34 5307 (version "3.2.0")
b86be2ad
RW
5308 (source
5309 (origin
35602819
CB
5310 ;; The gem does not include a Rakefile, so fetch from the Git
5311 ;; repository.
5312 (method git-fetch)
5313 (uri (git-reference
5314 (url "https://github.com/guard/listen.git")
5315 (commit (string-append "v" version))))
5316 (file-name (git-file-name name version))
b86be2ad
RW
5317 (sha256
5318 (base32
12341d34 5319 "1hkp1g6hk5clsmbd001gkc12ma6s459x820piajyasv61m87if24"))))
b86be2ad 5320 (build-system ruby-build-system)
35602819
CB
5321 (arguments
5322 `(#:test-target "spec"
5323 #:phases
5324 (modify-phases %standard-phases
5325 (add-after 'unpack 'fix-files-in-gemspec
5326 (lambda _
5327 (substitute* "listen.gemspec"
5328 (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
5329 #t))
5330 (add-before 'check 'remove-unnecessary-dependencies'
5331 (lambda _
5332 (substitute* "Rakefile"
5333 ;; Rubocop is for code linting, and is unnecessary for running
5334 ;; the tests.
5335 ((".*rubocop.*") ""))
5336 #t)))))
5337 (native-inputs
5338 `(("bundler" ,bundler)
5339 ("ruby-rspec" ,ruby-rspec)))
5340 (inputs
5341 `(;; ruby-thor is used for the command line interface, and is referenced
5342 ;; in the wrapper, and therefore just needs to be an input.
5343 ("ruby-thor" ,ruby-thor)))
b86be2ad 5344 (propagated-inputs
35602819
CB
5345 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
5346 ("ruby-rb-inotify" ,ruby-rb-inotify)
5347 ("ruby-dep" ,ruby-dep)))
b86be2ad
RW
5348 (synopsis "Listen to file modifications")
5349 (description "The Listen gem listens to file modifications and notifies
5350you about the changes.")
5351 (home-page "https://github.com/guard/listen")
5352 (license license:expat)))
5353
8d3c5ff6
CB
5354(define-public ruby-loofah
5355 (package
5356 (name "ruby-loofah")
5357 (version "2.2.3")
5358 (source
5359 (origin
5360 (method url-fetch)
5361 (uri (rubygems-uri "loofah" version))
5362 (sha256
5363 (base32
5364 "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg"))))
5365 (build-system ruby-build-system)
5366 (arguments
5367 '(#:phases
5368 (modify-phases %standard-phases
5369 (add-after 'unpack 'remove-unnecessary-dependencies
5370 (lambda _
5371 ;; concourse is a development tool which is unused, so remove it
5372 ;; so it's not required.
5373 (substitute* "Gemfile"
5374 ((".*\"concourse\".*") "\n"))
5375 (substitute* "Rakefile"
5376 (("require 'concourse'") "")
5377 (("Concourse\\.new.*") "\n"))
5378 #t)))))
5379 (native-inputs
5380 `(("ruby-hoe" ,ruby-hoe)
5381 ("ruby-rr" ,ruby-rr)))
5382 (propagated-inputs
5383 `(("ruby-nokogiri" ,ruby-nokogiri)
5384 ("ruby-crass" ,ruby-crass)))
5385 (synopsis "Ruby library for manipulating and transforming HTML/XML")
5386 (description
5387 "Loofah is a general library for manipulating and transforming HTML/XML
5388documents and fragments. It's built on top of Nokogiri and libxml2.")
5389 (home-page "https://github.com/flavorjones/loofah")
5390 (license license:expat)))
5391
5ff89a1b
DT
5392(define-public ruby-activesupport
5393 (package
5394 (name "ruby-activesupport")
bcf1fe5b 5395 (version "5.2.2.1")
5ff89a1b
DT
5396 (source
5397 (origin
5398 (method url-fetch)
5399 (uri (rubygems-uri "activesupport" version))
5400 (sha256
5401 (base32
bcf1fe5b 5402 "161bp4p01v1a1lvszrhd1a02zf9x1p1l1yhw79a3rix1kvzkkdqb"))))
5ff89a1b
DT
5403 (build-system ruby-build-system)
5404 (arguments
2af45e50
BW
5405 `(#:phases
5406 (modify-phases %standard-phases
5407 (replace 'check
5408 (lambda _
9923d5a4
TGR
5409 ;; There are no tests, instead attempt to load the library.
5410 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
5ff89a1b 5411 (propagated-inputs
2af45e50
BW
5412 `(("ruby-concurrent" ,ruby-concurrent)
5413 ("ruby-i18n" ,ruby-i18n)
5ff89a1b 5414 ("ruby-minitest" ,ruby-minitest)
606ee9a1
BW
5415 ("ruby-tzinfo" ,ruby-tzinfo)
5416 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
5ff89a1b
DT
5417 (synopsis "Ruby on Rails utility library")
5418 (description "ActiveSupport is a toolkit of support libraries and Ruby
5419core extensions extracted from the Rails framework. It includes support for
5420multibyte strings, internationalization, time zones, and testing.")
5421 (home-page "http://www.rubyonrails.org")
5422 (license license:expat)))
f847ad7b 5423
3996f0aa
RW
5424(define-public ruby-crass
5425 (package
5426 (name "ruby-crass")
a84a185a
MB
5427 (version "1.0.6")
5428 (home-page "https://github.com/rgrove/crass")
3996f0aa 5429 (source (origin
a84a185a
MB
5430 ;; The gem does not contain tests, so pull from git.
5431 (method git-fetch)
5432 (uri (git-reference
5433 (url home-page)
5434 (commit (string-append "v" version))))
5435 (file-name (git-file-name name version))
3996f0aa
RW
5436 (sha256
5437 (base32
a84a185a 5438 "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40"))))
3996f0aa 5439 (build-system ruby-build-system)
3996f0aa
RW
5440 (synopsis "Pure Ruby CSS parser")
5441 (description
5442 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
3996f0aa
RW
5443 (license license:expat)))
5444
c2c4e5b2 5445(define-public ruby-nokogumbo
2e366b0a
MB
5446 (package
5447 (name "ruby-nokogumbo")
5448 (version "2.0.2")
5449 (source (origin
5450 ;; We use the git reference, because there's no Rakefile in the
5451 ;; published gem and the tarball on Github is outdated.
5452 (method git-fetch)
5453 (uri (git-reference
5454 (url "https://github.com/rubys/nokogumbo.git")
5455 (commit (string-append "v" version))))
5456 (file-name (string-append name "-" version "-checkout"))
5457 (sha256
5458 (base32
5459 "1qg0iyw450lw6d0j1ghzg79a6l60nm1m4qmrzwzybi585861jxcx"))))
5460 (build-system ruby-build-system)
5461 (native-inputs
5462 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
5463 (inputs
5464 `(("gumbo-parser" ,gumbo-parser)))
5465 (propagated-inputs
5466 `(("ruby-nokogiri" ,ruby-nokogiri)))
5467 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
5468 (description
5469 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
c2c4e5b2 5470access the result as a Nokogiri parsed document.")
2e366b0a
MB
5471 (home-page "https://github.com/rubys/nokogumbo/")
5472 (license license:asl2.0)))
c2c4e5b2 5473
d56ff88b
RW
5474(define-public ruby-sanitize
5475 (package
5476 (name "ruby-sanitize")
f362b53c
MB
5477 (version "5.1.0")
5478 (home-page "https://github.com/rgrove/sanitize")
d56ff88b 5479 (source (origin
f362b53c 5480 (method git-fetch)
d56ff88b 5481 ;; The gem does not include the Rakefile, so we download the
f362b53c
MB
5482 ;; source from Github.
5483 (uri (git-reference
5484 (url home-page)
5485 (commit (string-append "v" version))))
5486 (file-name (git-file-name name version))
5487 (patches (search-patches "ruby-sanitize-system-libxml.patch"))
d56ff88b
RW
5488 (sha256
5489 (base32
f362b53c 5490 "0lj0q9yhjp0q0in5majkshnki07mw8m2vxgndx4m5na6232aszl0"))))
d56ff88b
RW
5491 (build-system ruby-build-system)
5492 (propagated-inputs
5493 `(("ruby-crass" ,ruby-crass)
5494 ("ruby-nokogiri" ,ruby-nokogiri)
5495 ("ruby-nokogumbo" ,ruby-nokogumbo)))
5496 (native-inputs
f362b53c 5497 `(("ruby-minitest" ,ruby-minitest)))
d56ff88b
RW
5498 (synopsis "Whitelist-based HTML and CSS sanitizer")
5499 (description
5500 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
5501acceptable elements, attributes, and CSS properties, Sanitize will remove all
5502unacceptable HTML and/or CSS from a string.")
d56ff88b
RW
5503 (license license:expat)))
5504
ed4b6b18
BW
5505(define-public ruby-oj
5506 (package
5507 (name "ruby-oj")
93dfdec5 5508 (version "3.10.1")
ed4b6b18
BW
5509 (source
5510 (origin
b09ef660 5511 (method git-fetch)
ed4b6b18
BW
5512 ;; Version on rubygems.org does not contain Rakefile, so download from
5513 ;; GitHub instead.
b09ef660
EF
5514 (uri (git-reference
5515 (url "https://github.com/ohler55/oj")
5516 (commit (string-append "v" version))))
5517 (file-name (git-file-name name version))
ed4b6b18
BW
5518 (sha256
5519 (base32
93dfdec5 5520 "0i5xjx4sh816zx2c1a4d1q67k7vllg5jnnc4jy6zhbmwi1dvp5vw"))))
ed4b6b18
BW
5521 (build-system ruby-build-system)
5522 (arguments
5523 '(#:test-target "test_all"
5524 #:phases
5525 (modify-phases %standard-phases
5526 (add-before 'check 'disable-bundler
5527 (lambda _
5528 (substitute* "Rakefile"
5529 (("Bundler\\.with_clean_env") "1.times")
5530 (("bundle exec ") "")))))))
5531 (native-inputs
5532 `(("bundler" ,bundler)
5533 ("ruby-rspec" ,ruby-rspec)
5534 ("ruby-rake-compiler" ,ruby-rake-compiler)))
5535 (synopsis "JSON parser for Ruby optimized for speed")
5536 (description
5537 "Oj is a JSON parser and generator for Ruby, where the encoding and
5538decoding of JSON is implemented as a C extension to Ruby.")
b09ef660 5539 (home-page "http://www.ohler.com/oj/")
ed4b6b18
BW
5540 (license (list license:expat ; Ruby code
5541 license:bsd-3)))) ; extension code
5542
f847ad7b
DT
5543(define-public ruby-ox
5544 (package
5545 (name "ruby-ox")
263c0dbf 5546 (version "2.6.0")
f847ad7b
DT
5547 (source
5548 (origin
5549 (method url-fetch)
5550 (uri (rubygems-uri "ox" version))
5551 (sha256
5552 (base32
263c0dbf 5553 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
f847ad7b
DT
5554 (build-system ruby-build-system)
5555 (arguments
5556 '(#:tests? #f)) ; no tests
5557 (synopsis "Optimized XML library for Ruby")
5558 (description
5559 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
5560written as a native C extension. It was designed to be an alternative to
5561Nokogiri and other Ruby XML parsers for generic XML parsing and as an
5562alternative to Marshal for Object serialization. ")
5563 (home-page "http://www.ohler.com/ox")
5564 (license license:expat)))
4a9e0585 5565
0c4e7625
RW
5566(define-public ruby-redcloth
5567 (package
5568 (name "ruby-redcloth")
2a91494e 5569 (version "4.3.2")
0c4e7625
RW
5570 (source (origin
5571 (method url-fetch)
5572 (uri (rubygems-uri "RedCloth" version))
5573 (sha256
5574 (base32
2a91494e 5575 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
0c4e7625
RW
5576 (build-system ruby-build-system)
5577 (arguments
5578 `(#:tests? #f ; no tests
5579 #:phases
5580 (modify-phases %standard-phases
5581 ;; Redcloth has complicated rake tasks to build various versions for
5582 ;; multiple targets using RVM. We don't want this so we just use the
5583 ;; existing gemspec.
5584 (replace 'build
5585 (lambda _
9923d5a4 5586 (invoke "gem" "build" "redcloth.gemspec"))))))
0c4e7625
RW
5587 (native-inputs
5588 `(("bundler" ,bundler)
5589 ("ruby-diff-lcs" ,ruby-diff-lcs)
5590 ("ruby-rspec-2" ,ruby-rspec-2)))
5591 (synopsis "Textile markup language parser for Ruby")
5592 (description
5593 "RedCloth is a Ruby parser for the Textile markup language.")
5594 (home-page "http://redcloth.org")
5595 (license license:expat)))
5596
4a9e0585
DT
5597(define-public ruby-pg
5598 (package
5599 (name "ruby-pg")
ffc4869e 5600 (version "1.1.4")
4a9e0585
DT
5601 (source
5602 (origin
5603 (method url-fetch)
5604 (uri (rubygems-uri "pg" version))
5605 (sha256
5606 (base32
ffc4869e 5607 "0fmnyxcyrvgdbgq7m09whgn9i8rwfybk0w8aii1nc4g5kqw0k2jy"))))
4a9e0585
DT
5608 (build-system ruby-build-system)
5609 (arguments
5610 '(#:test-target "spec"))
5611 (native-inputs
5612 `(("ruby-rake-compiler" ,ruby-rake-compiler)
5613 ("ruby-hoe" ,ruby-hoe)
5614 ("ruby-rspec" ,ruby-rspec)))
5615 (inputs
ffc4869e 5616 `(("postgresql" ,postgresql)))
4a9e0585
DT
5617 (synopsis "Ruby interface to PostgreSQL")
5618 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
4db80f8b 5619with PostgreSQL 9.0 and later.")
4a9e0585
DT
5620 (home-page "https://bitbucket.org/ged/ruby-pg")
5621 (license license:ruby)))
468e5657
DT
5622
5623(define-public ruby-byebug
5624 (package
5625 (name "ruby-byebug")
d5489a61 5626 (version "9.0.6")
468e5657
DT
5627 (source
5628 (origin
5629 (method url-fetch)
5630 (uri (rubygems-uri "byebug" version))
5631 (sha256
5632 (base32
d5489a61 5633 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
468e5657
DT
5634 (build-system ruby-build-system)
5635 (arguments
5636 '(#:tests? #f)) ; no tests
5637 (synopsis "Debugger for Ruby 2")
5638 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
5639TracePoint C API for execution control and the Debug Inspector C API for call
5640stack navigation. The core component provides support that front-ends can
5641build on. It provides breakpoint handling and bindings for stack frames among
5642other things and it comes with a command line interface.")
7bf837fd 5643 (home-page "https://github.com/deivid-rodriguez/byebug")
468e5657 5644 (license license:bsd-2)))
64b6ccc3 5645
7aa00628
MC
5646;;; TODO: Make it the default byebug in core-updates.
5647(define-public ruby-byebug-11
5648 (package
5649 (inherit ruby-byebug)
5650 (name "ruby-byebug")
5651 (version "11.1.3")
5652 (source
5653 (origin
5654 (method git-fetch)
5655 (uri (git-reference
5656 (url "https://github.com/deivid-rodriguez/byebug.git")
5657 (commit (string-append "v" version))))
5658 (file-name (git-file-name name version))
5659 (sha256
5660 (base32
5661 "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij"))
5662 (modules '((guix build utils)))
5663 (snippet
5664 '(begin
5665 ;; Remove wrappers that try to setup a bundle environment.
5666 (with-directory-excursion "bin"
5667 (for-each delete-file '("bundle" "rake" "rubocop"))
5668 ;; ruby-minitest doesn't come with a launcher, so fix the one
5669 ;; provided.
5670 (substitute* "minitest"
5671 (("load File\\.expand_path\\(\"bundle\".*") "")
5672 (("require \"bundler/setup\".*") "")))
5673 #t))))
5674 (arguments
5675 `(#:tests? #t
5676 #:phases
5677 (modify-phases %standard-phases
5678 (add-after 'unpack 'skip-tmp-path-sensitive-test
5679 (lambda _
5680 (substitute* "test/commands/where_test.rb"
5681 (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
5682 "unless true\n"))
5683 #t))
5684 (add-before 'build 'compile
5685 (lambda _
5686 (invoke "rake" "compile")))
5687 (add-before 'check 'set-home
5688 (lambda _
5689 (setenv "HOME" (getcwd))
5690 #t)))))
5691 (native-inputs
5692 `(("bundler" ,bundler)
5693 ("ruby-chandler" ,ruby-chandler)
5694 ("ruby-minitest" ,ruby-minitest)
5695 ("ruby-pry" ,ruby-pry)
5696 ("ruby-rake-compiler" ,ruby-rake-compiler)
5697 ("ruby-rubocop" ,ruby-rubocop)
5698 ("ruby-yard" ,ruby-yard)))))
5699
5799bc2b
RW
5700(define-public ruby-netrc
5701 (package
5702 (name "ruby-netrc")
5703 (version "0.11.0")
5704 (source (origin
5705 (method url-fetch)
5706 (uri (rubygems-uri "netrc" version))
5707 (sha256
5708 (base32
5709 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
5710 (build-system ruby-build-system)
5711 (arguments
5712 `(#:phases
5713 (modify-phases %standard-phases
5714 (replace 'check
5715 ;; There is no Rakefile and minitest can only run one file at once,
5716 ;; so we have to iterate over all test files.
5717 (lambda _
9923d5a4
TGR
5718 (map (lambda (file)
5719 (invoke "ruby" "-Itest" file))
5720 (find-files "./test" "test_.*\\.rb")))))))
5799bc2b
RW
5721 (native-inputs
5722 `(("ruby-minitest" ,ruby-minitest)))
5723 (synopsis "Library to read and update netrc files")
5724 (description
5725 "This library can read and update netrc files, preserving formatting
5726including comments and whitespace.")
5727 (home-page "https://github.com/geemus/netrc")
5728 (license license:expat)))
5729
3a6989ce
RW
5730(define-public ruby-unf-ext
5731 (package
5732 (name "ruby-unf-ext")
14db8f19 5733 (version "0.0.7.6")
3a6989ce
RW
5734 (source (origin
5735 (method url-fetch)
5736 (uri (rubygems-uri "unf_ext" version))
5737 (sha256
5738 (base32
14db8f19 5739 "1ll6w64ibh81qwvjx19h8nj7mngxgffg7aigjx11klvf5k2g4nxf"))))
3a6989ce 5740 (build-system ruby-build-system)
b809cc9a
RW
5741 (arguments
5742 `(#:phases
5743 (modify-phases %standard-phases
5744 (add-after 'build 'build-ext
14db8f19
MB
5745 (lambda _ (invoke "rake" "compile:unf_ext")))
5746 (add-before 'check 'lose-rake-compiler-dock-dependency
5747 (lambda _
5748 ;; rake-compiler-dock is listed in the gemspec, but only
5749 ;; required when cross-compiling.
5750 (substitute* "unf_ext.gemspec"
5751 ((".*rake-compiler-dock.*") ""))
5752 #t)))))
3a6989ce
RW
5753 (native-inputs
5754 `(("bundler" ,bundler)
5755 ("ruby-rake-compiler" ,ruby-rake-compiler)
5756 ("ruby-test-unit" ,ruby-test-unit)))
5757 (synopsis "Unicode normalization form support library")
5758 (description
5759 "This package provides unicode normalization form support for Ruby.")
5760 (home-page "https://github.com/knu/ruby-unf_ext")
5761 (license license:expat)))
5762
2632a067 5763(define-public ruby-tdiff
5071f17b
BW
5764 ;; Use a newer than released snapshot so that rspec-2 is not required.
5765 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
5766 (package
5767 (name "ruby-tdiff")
5768 (version (string-append "0.3.3-1." (string-take commit 8)))
5769 (source (origin
5770 (method git-fetch)
5771 (uri (git-reference
5772 (url "https://github.com/postmodern/tdiff.git")
5773 (commit commit)))
5774 (file-name (string-append name "-" version "-checkout"))
5775 (sha256
5776 (base32
5777 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
5778 (build-system ruby-build-system)
5779 (native-inputs
5780 `(("ruby-rspec" ,ruby-rspec)
5781 ("ruby-yard" ,ruby-yard)
5782 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
5783 (synopsis "Calculate the differences between two tree-like structures")
5784 (description
5785 "This library provides functions to calculate the differences between two
2632a067 5786tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
5071f17b
BW
5787 (home-page "https://github.com/postmodern/tdiff")
5788 (license license:expat))))
2632a067 5789
f60f5002 5790(define-public ruby-nokogiri-diff
5b0c223a
BW
5791 ;; Use a newer than released snapshot so that rspec-2 is not required.
5792 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
5793 (package
5794 (name "ruby-nokogiri-diff")
5795 (version (string-append "0.2.0-1." (string-take commit 8)))
5796 (source (origin
5797 (method git-fetch)
5798 (uri (git-reference
5799 (url "https://github.com/postmodern/nokogiri-diff.git")
5800 (commit commit)))
5801 (file-name (string-append name "-" version "-checkout"))
5802 (sha256
5803 (base32
5804 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
5805 (build-system ruby-build-system)
5806 (propagated-inputs
5807 `(("ruby-tdiff" ,ruby-tdiff)
5808 ("ruby-nokogiri" ,ruby-nokogiri)))
5809 (native-inputs
5810 `(("ruby-rspec" ,ruby-rspec)
5811 ("ruby-yard" ,ruby-yard)
5812 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
5813 (synopsis "Calculate the differences between two XML/HTML documents")
5814 (description
5815 "@code{Nokogiri::Diff} adds the ability to calculate the
f60f5002 5816differences (added or removed nodes) between two XML/HTML documents.")
5b0c223a
BW
5817 (home-page "https://github.com/postmodern/nokogiri-diff")
5818 (license license:expat))))
f60f5002 5819
6dc21310
CB
5820(define-public ruby-racc
5821 (package
5822 (name "ruby-racc")
5823 (version "1.4.14")
5824 (source
5825 (origin
5826 (method url-fetch)
5827 (uri (rubygems-uri "racc" version))
5828 (sha256
5829 (base32
5830 "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
5831 (build-system ruby-build-system)
5832 (native-inputs
5833 `(("ruby-hoe" ,ruby-hoe)
5834 ("ruby-rake-compiler" ,ruby-rake-compiler)))
5835 (synopsis "LALR(1) parser generator for Ruby")
5836 (description
5837 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
5838generates Ruby program.")
5839 (home-page "http://i.loveruby.net/en/projects/racc/")
5840 (license (list
5841 ;; Generally licensed under the LGPL2.1, and some files also
5842 ;; available under the same license as Ruby.
5843 license:lgpl2.1
5844 license:ruby))))
5845
64b6ccc3
DT
5846(define-public ruby-rack
5847 (package
5848 (name "ruby-rack")
288d2480 5849 (version "2.0.6")
64b6ccc3
DT
5850 (source
5851 (origin
83870c32 5852 (method git-fetch)
1db791d5 5853 ;; Download from GitHub so that the patch can be applied.
83870c32
EF
5854 (uri (git-reference
5855 (url "https://github.com/rack/rack")
5856 (commit version)))
5857 (file-name (git-file-name name version))
64b6ccc3
DT
5858 (sha256
5859 (base32
83870c32 5860 "1n7z4g1x6yxip096cdc04wq7yk7ywpinq28g2xjb46r4nlv5h0j6"))
1db791d5
BW
5861 ;; Ignore test which fails inside the build environment but works
5862 ;; outside.
5863 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
64b6ccc3
DT
5864 (build-system ruby-build-system)
5865 (arguments
5866 '(#:phases
5867 (modify-phases %standard-phases
5868 (add-before 'check 'fix-tests
5869 (lambda _
5870 ;; A few of the tests use the length of a file on disk for
5871 ;; Content-Length and Content-Range headers. However, this file
5872 ;; has a shebang in it which an earlier phase patches, growing
5873 ;; the file size from 193 to 239 bytes when the store prefix is
5874 ;; "/gnu/store".
5875 (let ((size-diff (- (string-length (which "ruby"))
5876 (string-length "/usr/bin/env ruby"))))
5877 (substitute* '("test/spec_file.rb")
5878 (("193")
5879 (number->string (+ 193 size-diff)))
5880 (("bytes(.)22-33" all delimiter)
5881 (string-append "bytes"
5882 delimiter
5883 (number->string (+ 22 size-diff))
5884 "-"
5885 (number->string (+ 33 size-diff))))))
83870c32
EF
5886 #t))
5887 (add-before 'reset-gzip-timestamps 'make-files-writable
5888 (lambda* (#:key outputs #:allow-other-keys)
5889 ;; Make sure .gz files are writable so that the
5890 ;; 'reset-gzip-timestamps' phase can do its work.
5891 (let ((out (assoc-ref outputs "out")))
5892 (for-each make-file-writable
5893 (find-files out "\\.gz$"))
5894 #t))))))
64b6ccc3 5895 (native-inputs
1db791d5
BW
5896 `(("ruby-minitest" ,ruby-minitest)
5897 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
5898 ("which" ,which)))
5899 (propagated-inputs
5900 `(("ruby-concurrent" ,ruby-concurrent)))
64b6ccc3
DT
5901 (synopsis "Unified web application interface for Ruby")
5902 (description "Rack provides a minimal, modular and adaptable interface for
5903developing web applications in Ruby. By wrapping HTTP requests and responses,
5904it unifies the API for web servers, web frameworks, and software in between
5905into a single method call.")
2f3800e5 5906 (home-page "https://rack.github.io/")
64b6ccc3 5907 (license license:expat)))
62e4cc5a 5908
20a0f804
BW
5909(define-public ruby-rack-test
5910 (package
5911 (name "ruby-rack-test")
5912 (version "0.8.3")
5913 (source
5914 (origin
5915 (method url-fetch)
5916 (uri (rubygems-uri "rack-test" version))
5917 (sha256
5918 (base32
5919 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
5920 (build-system ruby-build-system)
5921 (arguments
5922 ;; Disable tests because of circular dependencies: requires sinatra,
5923 ;; which requires rack-protection, which requires rack-test. Instead
5924 ;; simply require the library.
5925 `(#:phases
5926 (modify-phases %standard-phases
5927 (replace 'check
5928 (lambda _
5929 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
5930 (propagated-inputs
5931 `(("ruby-rack" ,ruby-rack)))
5932 (synopsis "Testing API for Rack applications")
5933 (description
5934 "Rack::Test is a small, simple testing API for Rack applications. It can
5935be used on its own or as a reusable starting point for Web frameworks and
5936testing libraries to build on.")
5937 (home-page "https://github.com/rack-test/rack-test")
5938 (license license:expat)))
5939
a0a7e690
BW
5940(define-public ruby-rack-protection
5941 (package
5942 (name "ruby-rack-protection")
3355e49c 5943 (version "2.0.5")
a0a7e690
BW
5944 (source
5945 (origin
5946 (method url-fetch)
5947 (uri (rubygems-uri "rack-protection" version))
5948 (sha256
5949 (base32
3355e49c 5950 "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk"))))
a0a7e690
BW
5951 (build-system ruby-build-system)
5952 (arguments
fafeeaa2 5953 '(;; Tests missing from the gem.
a0a7e690
BW
5954 #:tests? #f))
5955 (propagated-inputs
5956 `(("ruby-rack" ,ruby-rack)))
5957 (native-inputs
5958 `(("bundler" ,bundler)
5959 ("ruby-rspec" ,ruby-rspec-2)
5960 ("ruby-rack-test" ,ruby-rack-test)))
5961 (synopsis "Rack middleware that protects against typical web attacks")
5962 (description "Rack middleware that can be used to protect against typical
5963web attacks. It can protect all Rack apps, including Rails. For instance, it
5964protects against cross site request forgery, cross site scripting,
5965clickjacking, directory traversal, session hijacking and IP spoofing.")
5966 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
5967 (license license:expat)))
5968
6edabcb2
CB
5969(define-public ruby-rainbow
5970 (package
5971 (name "ruby-rainbow")
5972 (version "3.0.0")
5973 (source
5974 (origin
5975 (method url-fetch)
5976 (uri (rubygems-uri "rainbow" version))
5977 (sha256
5978 (base32
5979 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
5980 (build-system ruby-build-system)
5981 (arguments
5982 '(#:phases
5983 (modify-phases %standard-phases
5984 ;; Run rspec directly, to avoid requiring Rubocop which is used from
5985 ;; the Rakefile.
5986 (replace 'check
5987 (lambda* (#:key tests? #:allow-other-keys)
5988 (when tests?
5989 (invoke "rspec"))
5990 #t)))))
5991 (native-inputs
5992 `(("bundler" ,bundler)
5993 ("ruby-rspec" ,ruby-rspec)))
5994 (synopsis "Colorize printed text on ANSI terminals")
5995 (description
5996 "@code{rainbow} provides a string presenter object to colorize strings by
5997wrapping them in ANSI escape codes.")
5998 (home-page "https://github.com/sickill/rainbow")
79193b20
CB
5999 (license license:expat)))
6000
6188d643
CB
6001(define-public ruby-rr
6002 (package
6003 (name "ruby-rr")
6004 (version "1.2.1")
6005 (source
6006 (origin
6007 (method url-fetch)
6008 (uri (rubygems-uri "rr" version))
6009 (sha256
6010 (base32
6011 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
6012 (build-system ruby-build-system)
6013 (arguments
6014 '(#:tests? #f)) ; test files not included
6015 (native-inputs
6016 `(("bundler" ,bundler)
6017 ("ruby-rspec" ,ruby-rspec)))
6018 (synopsis "Ruby test double framework")
6019 (description
6020 "RR is a test double framework that features a rich selection of double
6021techniques and a terse syntax.")
6022 (home-page "https://rr.github.io/rr/")
6023 (license license:expat)))
6024
79193b20
CB
6025(define-public ruby-rest-client
6026 (package
6027 (name "ruby-rest-client")
6028 (version "2.0.2")
6029 (source
6030 (origin
6031 (method url-fetch)
6032 (uri (rubygems-uri "rest-client" version))
6033 (sha256
6034 (base32
6035 "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
6036 (build-system ruby-build-system)
6037 (arguments
6038 '(#:phases
6039 (modify-phases %standard-phases
6040 (add-before 'check 'remove-unnecessary-development-dependencies
6041 (lambda _
6042 (substitute* "rest-client.gemspec"
6043 ;; Remove rubocop as it's unused. Rubocop also indirectly
6044 ;; depends on this package through ruby-parser and ruby-ast so
6045 ;; this avoids a dependency loop.
6046 ((".*rubocop.*") "\n")
6047 ;; Remove pry as it's unused, it's a debugging tool
6048 ((".*pry.*") "\n")
6049 ;; Remove an unnecessarily strict rdoc dependency
6050 ((".*rdoc.*") "\n"))
6051 #t))
6052 (add-before 'check 'delete-network-dependent-tests
6053 (lambda _
6054 (delete-file "spec/integration/request_spec.rb")
6055 (delete-file "spec/integration/httpbin_spec.rb")
6056 #t)))))
6057 (propagated-inputs
6058 `(("ruby-http-cookie" ,ruby-http-cookie)
6059 ("ruby-mime-types" ,ruby-mime-types)
6060 ("ruby-netrc" ,ruby-netrc)))
6061 (native-inputs
6062 `(("bundler" ,bundler)
eea094cc
TGR
6063 ("ruby-webmock" ,ruby-webmock-2)
6064 ("ruby-rspec" ,ruby-rspec)))
79193b20
CB
6065 (synopsis "Simple HTTP and REST client for Ruby")
6066 (description
6067 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
6068inspired by the Sinatra microframework style of specifying actions:
6069@code{get}, @code{put}, @code{post}, @code{delete}.")
6070 (home-page "https://github.com/rest-client/rest-client")
6edabcb2
CB
6071 (license license:expat)))
6072
5d8fe6de
CB
6073(define-public ruby-rubocop
6074 (package
6075 (name "ruby-rubocop")
865ba3f4 6076 (version "0.77.0")
5d8fe6de
CB
6077 (source
6078 (origin
6079 (method url-fetch)
6080 (uri (rubygems-uri "rubocop" version))
6081 (sha256
6082 (base32
865ba3f4 6083 "0m88b1bgbhmmbdnz2xv6n0il0j4q5qm9jbc0vf1zsaxmxqp06nx9"))))
5d8fe6de
CB
6084 (build-system ruby-build-system)
6085 (arguments
6086 '(;; No included tests
6087 #:tests? #f))
6088 (propagated-inputs
6089 `(("ruby-parser" ,ruby-parser)
6090 ("ruby-powerpack" ,ruby-powerpack)
6091 ("ruby-rainbow" ,ruby-rainbow)
6092 ("ruby-progressbar" ,ruby-progressbar)
6093 ("ruby-parallel" ,ruby-parallel)
6094 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
6095 ("ruby-unicode-display-width" ,ruby-unicode-display-width)))
6096 (synopsis "Ruby code style checking tool")
6097 (description
6098 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
6099the community-driven Ruby Style Guide.")
6100 (home-page "https://github.com/rubocop-hq/rubocop")
6101 (license license:expat)))
6102
6ef85256
BW
6103(define-public ruby-contest
6104 (package
6105 (name "ruby-contest")
6106 (version "0.1.3")
6107 (source
6108 (origin
6109 (method url-fetch)
6110 (uri (rubygems-uri "contest" version))
6111 (sha256
6112 (base32
6113 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
6114 (build-system ruby-build-system)
6115 (synopsis "Write declarative tests using nested contexts")
6116 (description
6117 "Contest allows writing declarative @code{Test::Unit} tests using nested
6118contexts without performance penalties.")
6119 (home-page "https://github.com/citrusbyte/contest")
6120 (license license:expat)))
6121
c4550f75
BW
6122(define-public ruby-creole
6123 (package
6124 (name "ruby-creole")
6125 (version "0.5.0")
6126 (source
6127 (origin
6128 (method url-fetch)
6129 (uri (rubygems-uri "creole" version))
6130 (sha256
6131 (base32
6132 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
6133 (build-system ruby-build-system)
6134 (native-inputs
6135 `(("ruby-bacon" ,ruby-bacon)))
6136 (synopsis "Creole markup language converter")
6137 (description
6138 "Creole is a lightweight markup language and this library for converting
6139creole to @code{HTML}.")
6140 (home-page "https://github.com/minad/creole")
6141 (license license:ruby)))
6142
6aaa815e
PP
6143(define-public ruby-docile
6144 (package
6145 (name "ruby-docile")
6146 (version "1.1.5")
6147 (source
6148 (origin
6149 (method url-fetch)
6150 (uri (rubygems-uri "docile" version))
6151 (sha256
6152 (base32
6153 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
6154 (build-system ruby-build-system)
6155 (arguments
6156 '(#:tests? #f)) ; needs github-markup, among others
6157 (synopsis "Ruby EDSL helper library")
6158 (description "Docile is a Ruby library that provides an interface for
6159creating embedded domain specific languages (EDSLs) that manipulate existing
6160Ruby classes.")
6161 (home-page "https://ms-ati.github.io/docile/")
6162 (license license:expat)))
6163
fab8fed3
MC
6164(define-public ruby-middleware
6165 (package
6166 (name "ruby-middleware")
6167 (version "0.1.0")
6168 (source
6169 (origin
6170 (method url-fetch)
6171 (uri (rubygems-uri "middleware" version))
6172 (sha256
6173 (base32
6174 "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl"))))
6175 (build-system ruby-build-system)
6176 (arguments '(#:tests? #f)) ;no test suite
6177 (synopsis "Implementation of a middleware abstraction for Ruby")
6178 (description "Middleware is a generalized implementation of a middleware
6179abstraction for Ruby.")
6180 (home-page "https://github.com/mitchellh/middleware")
6181 (license license:expat)))
6182
1d537c71
MC
6183(define-public ruby-benchmark-ips
6184 (package
6185 (name "ruby-benchmark-ips")
6186 (version "2.8.2")
6187 (source
6188 (origin
6189 (method url-fetch)
6190 (uri (rubygems-uri "benchmark-ips" version))
6191 (sha256
6192 (base32
6193 "1n9397j7kh4vvikfann1467qgksc679imlr50hax3lk1q3af8kdw"))))
6194 (build-system ruby-build-system)
6195 (native-inputs
6196 `(("ruby-hoe" ,ruby-hoe)))
6197 (synopsis "Iterations per second enhancement for the Ruby Benchmark module")
6198 (description "Benchmark-ips enhances the Ruby Benchmark module with the
6199iterations per second count. For short snippets of code, it can automatically
6200figure out how many times to run the code to get interesting data.")
6201 (home-page "https://github.com/evanphx/benchmark-ips")
6202 (license license:expat)))
6203
fc5d1c5a
MC
6204(define-public ruby-ffi-rzmq-core
6205 (package
6206 (name "ruby-ffi-rzmq-core")
6207 (version "1.0.7")
6208 (source
6209 (origin
6210 (method url-fetch)
6211 (uri (rubygems-uri "ffi-rzmq-core" version))
6212 (sha256
6213 (base32
6214 "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5"))))
6215 (build-system ruby-build-system)
6216 (arguments
6217 `(#:phases
6218 (modify-phases %standard-phases
6219 (add-after 'unpack 'patch-libzmq-search-path
6220 (lambda* (#:key inputs #:allow-other-keys)
6221 (let ((zeromq (assoc-ref inputs "zeromq")))
6222 (substitute* "lib/ffi-rzmq-core/libzmq.rb"
6223 (("/usr/local/lib")
6224 (string-append zeromq "/lib")))
6225 #t)))
6226 (replace 'check
6227 (lambda _
6228 (invoke "rspec"))))))
6229 (native-inputs
6230 `(("ruby-rspec" ,ruby-rspec)))
6231 (inputs
6232 `(("zeromq" ,zeromq)))
6233 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
6234 (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library")
6235 (description "This library only provides the FFI wrapper for the ZeroMQ
6236networking library. It can be used to implement a Ruby API for the ZeroMQ
6237library.")
6238 (home-page "https://github.com/chuckremes/ffi-rzmq-core")
6239 (license license:expat)))
6240
7a503516
MC
6241(define-public ruby-ffi-rzmq
6242 (package
6243 (name "ruby-ffi-rzmq")
6244 (version "2.0.7")
6245 (source
6246 (origin
6247 (method url-fetch)
6248 (uri (rubygems-uri "ffi-rzmq" version))
6249 (sha256
6250 (base32
6251 "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg"))))
6252 (build-system ruby-build-system)
6253 (arguments '(#:tests? #t
6254 #:phases (modify-phases %standard-phases
6255 (replace 'check
6256 (lambda _
6257 (invoke "rspec"))))))
6258 (native-inputs
6259 `(("ruby-rspec" ,ruby-rspec)))
6260 (propagated-inputs
6261 `(("ruby-ffi-rzmq-core" ,ruby-ffi-rzmq-core)))
6262 (synopsis "High-level Ruby wrapper for the ZeroMQ networking library")
6263 (description "This library provides a high-level API that wraps the ZeroMQ
6264networking library using the Ruby foreign function interface (FFI). It is a
6265pure Ruby wrapper, hence is compatible with any Ruby runtime that has support
6266for FFI.")
6267 (home-page "https://github.com/chuckremes/ffi-rzmq")
6268 (license license:expat)))
6269
03a0f98a
MC
6270(define-public ruby-sawyer
6271 (package
6272 (name "ruby-sawyer")
6273 (version "0.8.2")
6274 (source
6275 (origin
6276 (method url-fetch)
6277 (uri (rubygems-uri "sawyer" version))
6278 (sha256
6279 (base32
6280 "0yrdchs3psh583rjapkv33mljdivggqn99wkydkjdckcjn43j3cz"))))
6281 (build-system ruby-build-system)
6282 (propagated-inputs
6283 `(("ruby-addressable" ,ruby-addressable)
6284 ("ruby-faraday" ,ruby-faraday)))
6285 (synopsis "Experimental hypermedia agent for Ruby")
6286 (description "Sawyer is an experimental hypermedia agent for Ruby built on
6287top of Faraday.")
6288 (home-page "https://github.com/lostisland/sawyer")
6289 (license license:expat)))
6290
aa3c76b1
MC
6291(define-public ruby-octokit
6292 (package
6293 (name "ruby-octokit")
6294 (version "4.18.0")
6295 (source
6296 (origin
6297 (method url-fetch)
6298 (uri (rubygems-uri "octokit" version))
6299 (sha256
6300 (base32
6301 "0zvfr9njmj5svi39fcsi2b0g7pcxb0vamw9dlyas8bg814jlzhi6"))))
6302 (build-system ruby-build-system)
6303 (arguments '(#:tests? #f)) ;no test suite in the gem release
6304 (propagated-inputs
6305 `(("ruby-faraday" ,ruby-faraday)
6306 ("ruby-sawyer" ,ruby-sawyer)))
6307 (synopsis "Ruby toolkit for the GitHub API")
6308 (description "Octokit wraps the GitHub API in a flat API client that
6309follows Ruby conventions and requires little knowledge of REST.")
6310 (home-page "https://github.com/octokit/octokit.rb")
6311 (license license:expat)))
6312
1157d2f8
MC
6313(define-public ruby-chandler
6314 (package
6315 (name "ruby-chandler")
6316 (version "0.9.0")
6317 (source
6318 (origin
6319 (method url-fetch)
6320 (uri (rubygems-uri "chandler" version))
6321 (sha256
6322 (base32
6323 "1n8a4mr2jkcz5vaaps45g2rxa2pzy1wb7cylgw85xmmyyp14lnrr"))))
6324 (build-system ruby-build-system)
6325 (native-inputs
6326 `(("ruby-rubocop" ,ruby-rubocop)))
6327 (propagated-inputs
6328 `(("ruby-netrc" ,ruby-netrc)
6329 ("ruby-octokit" ,ruby-octokit)))
6330 (synopsis "Sync CHANGELOG entries to GitHub's release notes")
6331 (description "Chandler syncs a project's CHANGELOG file entries to
6332GitHub's release notes to remove the need of manually entering release
6333notes.")
6334 (home-page "https://github.com/mattbrictson/chandler")
6335 (license license:expat)))
6336
acb28876
MC
6337(define-public ruby-pry-byebug
6338 (package
6339 (name "ruby-pry-byebug")
6340 (version "3.9.0")
6341 (source
6342 (origin
6343 (method git-fetch)
6344 (uri (git-reference
6345 (url "https://github.com/deivid-rodriguez/pry-byebug.git")
6346 (commit (string-append "v" version))))
6347 (file-name (git-file-name name version))
6348 (sha256
6349 (base32
6350 "1kchrwccai92068p50zyd6mh524ywqnm0jw5g3lks7iwmf0xkmgc"))))
6351 (build-system ruby-build-system)
6352 (arguments
6353 `(#:phases (modify-phases %standard-phases
6354 (add-before 'check 'set-home
6355 (lambda _
6356 (setenv "HOME" (getcwd))
6357 #t)))))
6358 (native-inputs
6359 `(("ruby-chandler" ,ruby-chandler)
6360 ("ruby-rubocop" ,ruby-rubocop)
6361 ("ruby-simplecov" ,ruby-simplecov)))
6362 (propagated-inputs
6363 `(("ruby-byebug" ,ruby-byebug-11)
6364 ("ruby-pry" ,ruby-pry)))
6365 (synopsis "Step-by-step debugging and stack navigation in Pry")
6366 (description "This package adds step-by-step debugging and stack
6367navigation capabilities to @code{pry}, using @code{byebug}.")
6368 (home-page "https://github.com/deivid-rodriguez/pry-byebug")
6369 (license license:expat)))
6370
4d31fe6b
MC
6371(define-public ruby-binding-of-caller
6372 (package
6373 (name "ruby-binding-of-caller")
6374 (version "0.8.0")
6375 (source
6376 (origin
6377 (method url-fetch)
6378 (uri (rubygems-uri "binding_of_caller" version))
6379 (sha256
6380 (base32
6381 "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g"))))
6382 (build-system ruby-build-system)
6383 ;; Attempting to run the test suite fails with a rake deprecation error
6384 ;; (see: https://github.com/banister/binding_of_caller/issues/76).
6385 (arguments '(#:tests? #f))
6386 (propagated-inputs
6387 `(("ruby-debug-inspector" ,ruby-debug-inspector)))
6388 (synopsis "Retrieve the binding of a method's caller")
6389 (description "The @code{binding_of_caller} module provides the
6390@code{Binding#of_caller} method. It allows accessing bindings from upper
6391frames in the call stack and can evaluate code in that context.")
6392 (home-page "https://github.com/banister/binding_of_caller")
6393 (license license:expat)))
6394
f4699abc
MC
6395(define-public ruby-pry-stack-explorer
6396 (package
6397 (name "ruby-pry-stack-explorer")
6398 (version "0.5.1")
6399 (source
6400 (origin
6401 (method url-fetch)
6402 (uri (rubygems-uri "pry-stack_explorer" version))
6403 (sha256
6404 (base32
6405 "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0"))))
6406 (build-system ruby-build-system)
6407 (arguments '(#:tests? #f)) ;no test suite in gem release
6408 (propagated-inputs
6409 `(("ruby-binding-of-caller" ,ruby-binding-of-caller)
6410 ("ruby-pry" ,ruby-pry)))
6411 (synopsis "Call-stack navigation plugin for the Pry REPL")
6412 (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that
6413add support to navigate the call-stack.")
6414 (home-page "https://github.com/pry/pry-stack_explorer")
6415 (license license:expat)))
6416
1f014c97
MC
6417(define-public ruby-varint
6418 (package
6419 (name "ruby-varint")
6420 (version "0.1.1")
6421 (source
6422 (origin
6423 (method url-fetch)
6424 (uri (rubygems-uri "varint" version))
6425 (sha256
6426 (base32
6427 "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac"))))
6428 (build-system ruby-build-system)
6429 (arguments '(#:tests? #f)) ;no test suite
6430 (synopsis "Variable length integers (varint) C extension for Ruby")
6431 (description "This package provides a small C extension to speed up
6432variable length integers (varint) in Ruby Protocol Buffers.")
6433 (home-page "https://github.com/liquidm/varint")
6434 (license license:bsd-3)))
6435
1b214174
MC
6436(define-public ruby-ruby-prof
6437 (package
6438 (name "ruby-ruby-prof")
6439 (version "1.4.1")
6440 (source
6441 (origin
6442 (method url-fetch)
6443 (uri (rubygems-uri "ruby-prof" version))
6444 (sha256
6445 (base32
6446 "12cd91m08ih0imfpy4k87618hd4mhyz291a6bx2hcskza4nf6d27"))))
6447 (build-system ruby-build-system)
6448 (arguments
6449 `(#:phases
6450 (modify-phases %standard-phases
6451 (add-after 'unpack 'patch-rakefile
6452 ;; This fixes the following error: "NameError: uninitialized
6453 ;; constant Bundler::GemHelper" (see:
6454 ;; https://github.com/ruby-prof/ruby-prof/issues/274).
6455 (lambda _
6456 (substitute* "Rakefile"
6457 ((".*require \"bundler/setup\".*" all)
6458 (string-append all " require 'bundler/gem_tasks'\n")))
6459 #t))
6460 (add-before 'check 'compile
6461 (lambda _
6462 (invoke "rake" "compile"))))))
6463 (native-inputs
6464 `(("bundler" ,bundler)
6465 ("ruby-minitest" ,ruby-minitest)
6466 ("ruby-rake-compiler" ,ruby-rake-compiler)
6467 ("ruby-rdoc" ,ruby-rdoc)))
6468 (synopsis "Fast code profiler for Ruby")
6469 (description "RubyProf is a fast code profiler for Ruby. Its features
6470include:
6471@table @asis
6472@item Speed
6473Being a C extension, it is many times faster than the standard Ruby profiler.
6474@item Measurement Modes
6475It can measure program wall time, process time, object allocations and memory
6476usage.
6477@item Reports
6478A variety of text and cross-referenced HTML reports can be generated.
6479@item Threads
6480Profiling multiple threads simultaneously is supported.
6481@end table")
6482 (home-page "https://github.com/ruby-prof/ruby-prof")
6483 (license license:bsd-2)))
6484
dff5392f
MC
6485(define-public ruby-cucumber-messages
6486 (package
6487 (name "ruby-cucumber-messages")
6488 (version "12.2.0")
6489 (source (origin
6490 (method git-fetch)
6491 (uri (git-reference
6492 (url "https://github.com/cucumber/messages-ruby.git")
6493 (commit "12cd07eac87bce7843fd1bb0bf64bc4da09f097c")))
6494 (file-name (git-file-name name version))
6495 (sha256
6496 (base32
6497 "16wwqfpsq7crvxc3q08lphgyh12cl2d83p1c79p312q4jmy9cn5a"))))
6498 (build-system ruby-build-system)
6499 (arguments
6500 `(#:phases (modify-phases %standard-phases
6501 (add-after 'unpack 'patch-protobuf.rb
6502 (lambda _
6503 (substitute* "rake/protobuf.rb"
6504 (("load 'protobuf/tasks/compile.rake'")
6505 "require 'protobuf/tasks'"))
6506 #t))
6507 (add-before 'build 'compile
6508 (lambda _
6509 (substitute* "Makefile"
6510 (("bundle exec ") "")
6511 (("include default.mk.*" all)
6512 (string-append "#" all)))
6513 (invoke "make")))
6514 (replace 'check
6515 (lambda _
6516 (invoke "rspec"))))))
6517 (propagated-inputs
6518 `(("ruby-protobuf" ,ruby-protobuf-cucumber)))
6519 (native-inputs
6520 `(("ruby-rspec" ,ruby-rspec)))
6521 (home-page "https://github.com/cucumber/messages-ruby")
6522 (synopsis "Cucumber Messages for Ruby (Protocol Buffers)")
6523 (description "Cucumber Messages for Ruby is a library which allows
6524serialization and deserialization of the protocol buffer messages used in
6525Cucumber.")
6526 (license license:expat)))
6527
44514637 6528(define-public ruby-gherkin
62e4cc5a 6529 (package
44514637 6530 (name "ruby-gherkin")
cfef316f
MC
6531 (version "14.0.1")
6532 (source (origin
6533 (method git-fetch)
6534 (uri (git-reference
6535 (url "https://github.com/cucumber/gherkin-ruby")
6536 (commit (string-append "v" version))))
6537 (file-name (git-file-name name version))
6538 (sha256
6539 (base32
6540 "1dwa8632nc6kijv8p257jl64rsjmc0fimlaqvxlkdi2h9n1nympb"))))
62e4cc5a
PP
6541 (build-system ruby-build-system)
6542 (native-inputs
cfef316f
MC
6543 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
6544 ("ruby-rspec" ,ruby-rspec)))
62e4cc5a 6545 (arguments
cfef316f 6546 `(#:test-target "spec"))
62e4cc5a 6547 (synopsis "Gherkin parser for Ruby")
44514637 6548 (description "Gherkin is a parser and compiler for the Gherkin language.
aada5f6f
CB
6549It is intended be used by all Cucumber implementations to parse
6550@file{.feature} files.")
cfef316f 6551 (home-page "https://github.com/cucumber/gherkin-ruby")
62e4cc5a 6552 (license license:expat)))
cd89fecb 6553
8f85018d
MB
6554(define-public ruby-gherkin-ruby
6555 (package
6556 (name "ruby-gherkin-ruby")
6557 (version "0.3.2")
6558 (home-page "http://github.com/codegram/gherkin-ruby")
6559 (source (origin
6560 (method url-fetch)
6561 (uri (rubygems-uri "gherkin-ruby" version))
6562 (sha256
6563 (base32
6564 "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1"))))
6565 (build-system ruby-build-system)
6566 (synopsis "Pure Ruby Gherkin parser")
6567 (description
6568 "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than
6569200 lines of code.")
6570 ;; XXX: No license information anywhere but Readme.md.
6571 (license license:expat)))
6572
15b16c2c
CB
6573(define-public ruby-aruba
6574 (package
6575 (name "ruby-aruba")
cf7201c4 6576 (version "0.14.14")
15b16c2c
CB
6577 (source
6578 (origin
6579 (method url-fetch)
6580 (uri (rubygems-uri "aruba" version))
6581 (sha256
6582 (base32
cf7201c4 6583 "0l2mfpdxc03gdrbwc2hv4vdhjhqhfcdp6d02j05j64ncpi9srlqn"))))
15b16c2c
CB
6584 (build-system ruby-build-system)
6585 (arguments
6586 '(#:test-target "spec"
6587 #:phases
6588 (modify-phases %standard-phases
6589 (add-after 'unpack 'patch
6590 (lambda _
6591 (substitute* "spec/aruba/api_spec.rb"
6592 ;; This resolves some errors in the specs
6593 ;;
6594 ;; undefined method `parse' for Time:Class
6595 (("require 'spec_helper'")
6596 "require 'spec_helper'\nrequire 'time'"))
6597 ;; Avoid shebang issues in this spec file
6598 (substitute* "spec/aruba/matchers/command_spec.rb"
6599 (("/usr/bin/env bash")
6600 (which "bash")))
6601 #t))
6602 (add-before 'check 'remove-unnecessary-dependencies
6603 (lambda _
6604 (substitute* "Gemfile"
6605 ((".*byebug.*") "\n")
6606 ((".*pry.*") "\n")
6607 ((".*yaml.*") "\n")
6608 ((".*bcat.*") "\n")
6609 ((".*kramdown.*") "\n")
6610 ((".*rubocop.*") "\n")
6611 ((".*cucumber-pro.*") "\n")
6612 ((".*cucumber.*") "\n")
6613 ((".*license_finder.*") "\n")
6614 ((".*rake.*") "gem 'rake'\n")
15b16c2c 6615 ((".*relish.*") "\n"))
15b16c2c
CB
6616 (substitute* "aruba.gemspec"
6617 (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
6618 "spec.add_runtime_dependency 'cucumber'"))
6619 #t))
6620 (add-before 'check 'set-home
6621 (lambda _ (setenv "HOME" "/tmp") #t)))))
6622 (native-inputs
6623 `(("bundler" ,bundler)
6624 ("ruby-rspec" ,ruby-rspec)
cf7201c4
CB
6625 ("ruby-fuubar" ,ruby-fuubar)
6626 ("ruby-simplecov" ,ruby-simplecov)))
15b16c2c
CB
6627 (propagated-inputs
6628 `(("ruby-childprocess" ,ruby-childprocess)
6629 ("ruby-contracts" ,ruby-contracts)
6630 ("ruby-cucumber" ,ruby-cucumber)
6631 ("ruby-ffi" ,ruby-ffi)
6632 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
6633 ("ruby-thor" ,ruby-thor)
6634 ("ruby-yard" ,ruby-yard)))
6635 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
6636 (description
6637 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
6638command-line applications. It supports applications written in any
6639language.")
6640 (home-page "https://github.com/cucumber/aruba")
6641 (license license:expat)))
6642
6643;; A version of ruby-aruba without tests run so that circular dependencies can
6644;; be avoided.
6645(define ruby-aruba-without-tests
6646 (package
6647 (inherit ruby-aruba)
6648 (arguments '(#:tests? #f))
6649 (propagated-inputs
6650 `(("ruby-cucumber" ,ruby-cucumber-without-tests)
6651 ,@(alist-delete "ruby-cucumber"
6652 (package-propagated-inputs ruby-aruba))))
6653 (native-inputs '())))
6654
fd6577b4
MC
6655(define-public ruby-sys-uname
6656 (package
6657 (name "ruby-sys-uname")
6658 (version "1.2.1")
6659 (source
6660 (origin
6661 (method url-fetch)
6662 (uri (rubygems-uri "sys-uname" version))
6663 (sha256
6664 (base32
6665 "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0"))))
6666 (build-system ruby-build-system)
6667 (arguments
6668 `(#:test-target "spec"))
6669 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
6670 (native-inputs `(("ruby-rspec" ,ruby-rspec)))
6671 (synopsis "Ruby interface for gathering system information")
6672 (description "The sys-uname library provides an interface for gathering
6673information about your current platform. It allows retrieving information
6674such as the OS name, OS version, system name, etc.")
6675 (home-page "https://github.com/djberg96/sys-uname")
6676 (license license:asl2.0)))
6677
ac3ec612
MC
6678(define-public ruby-cucumber-create-meta
6679 (package
6680 (name "ruby-cucumber-create-meta")
6681 (version "1.0.0")
6682 (source
6683 (origin
6684 (method url-fetch)
6685 (uri (rubygems-uri "cucumber-create-meta" version))
6686 (sha256
6687 (base32
6688 "0i0i3arymjrnjk72mg79w1a11607x4d0lrqafm9sz2gq9l52zasw"))))
6689 (build-system ruby-build-system)
6690 (arguments
6691 `(#:phases (modify-phases %standard-phases
6692 (add-after 'extract-gemspec 'relax-version-requirements
6693 (lambda _
6694 (substitute* ".gemspec"
6695 ((" 12\\.2")
6696 " 12.1"))
6697 #t))
6698 (replace 'check
6699 (lambda _
6700 (invoke "rspec"))))))
6701 (native-inputs
6702 `(("ruby-rspec" ,ruby-rspec)))
6703 (propagated-inputs
6704 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
6705 ("ruby-sys-uname" ,ruby-sys-uname)))
6706 (synopsis "Function to create @code{Meta} messages for Cucumber Ruby")
6707 (description "The @code{createMeta} utility function allows generating
6708system-specific @code{Meta} messages for Cucumber Ruby.")
6709 (home-page "https://github.com/cucumber/cucumber/tree/master/create-meta/ruby")
6710 (license license:expat)))
6711
f3574624
MC
6712(define-public ruby-cucumber-html-formatter
6713 (package
6714 (name "ruby-cucumber-html-formatter")
6715 (version "7.0.0")
6716 (source
6717 (origin
6718 (method url-fetch)
6719 (uri (rubygems-uri "cucumber-html-formatter" version))
6720 (sha256
6721 (base32
6722 "0lshj4sw9jw7687wrhknyb9kffblai3l843zgrznyqij3ga0bc62"))))
6723 (build-system ruby-build-system)
6724 (arguments
6725 `(#:phases (modify-phases %standard-phases
6726 (replace 'check
6727 (lambda _
6728 (invoke "rspec"))))))
6729 (native-inputs
6730 `(("ruby-rspec" ,ruby-rspec)))
6731 (propagated-inputs
6732 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)))
6733 (synopsis "HTML formatter for Cucumber")
6734 (description "Cucumber HTML Formatter produces a HTML report for Cucumber
6735runs. It is built on top of cucumber-react and works with any Cucumber
6736implementation with a protocol buffer formatter that outputs Cucumber
6737messages.")
6738 (home-page "https://github.com/cucumber/cucumber/tree/\
6739master/html-formatter/ruby")
6740 (license license:expat)))
6741
15b16c2c
CB
6742(define-public ruby-cucumber
6743 (package
6744 (name "ruby-cucumber")
92ebbaad 6745 (version "4.1.0")
15b16c2c
CB
6746 (source
6747 (origin
6748 (method git-fetch)
6749 (uri (git-reference
6750 (url "https://github.com/cucumber/cucumber-ruby.git")
6751 (commit (string-append "v" version))))
6752 (file-name (git-file-name name version))
6753 (sha256
6754 (base32
92ebbaad 6755 "0g9rqfslbzkkrq2kvl14fgknrhfbji3bjjpjxff5nc9wzd3hd549"))))
15b16c2c
CB
6756 (build-system ruby-build-system)
6757 (arguments
fa8e4dbf 6758 '(#:test-target "default"
15b16c2c
CB
6759 #:phases
6760 (modify-phases %standard-phases
fa8e4dbf
MC
6761 (add-after 'unpack 'disable-rubocop
6762 ;; Rubocop lint check fails with our more recent version.
6763 (lambda _
6764 (substitute* "Rakefile"
6765 (("spec cucumber rubocop")
6766 "spec cucumber"))
6767 #t))
92ebbaad 6768 (add-after 'extract-gemspec 'strip-version-requirements
15b16c2c 6769 (lambda _
fa8e4dbf 6770 (delete-file "Gemfile") ;do not use Bundler
92ebbaad
MC
6771 (substitute* "cucumber.gemspec"
6772 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
6773 (string-append stripped "\n")))
fa8e4dbf
MC
6774 #t))
6775 (add-before 'check 'set-home
6776 (lambda _
6777 (setenv "HOME" (getcwd))
15b16c2c
CB
6778 #t)))))
6779 (propagated-inputs
6780 `(("ruby-builder" ,ruby-builder)
6781 ("ruby-cucumber-core" ,ruby-cucumber-core)
92ebbaad
MC
6782 ("ruby-cucumber-create-meta" ,ruby-cucumber-create-meta)
6783 ("ruby-cucumber-html-formatter" ,ruby-cucumber-html-formatter)
6784 ("ruby-cucumber-messages" ,ruby-cucumber-messages)
15b16c2c 6785 ("ruby-cucumber-wire" ,ruby-cucumber-wire)
15b16c2c
CB
6786 ("ruby-diff-lcs" ,ruby-diff-lcs)
6787 ("ruby-gherkin" ,ruby-gherkin)
6788 ("ruby-multi-json" ,ruby-multi-json)
6789 ("ruby-multi-test" ,ruby-multi-test)))
6790 (native-inputs
92ebbaad 6791 `(;; Use a untested version of aruba, to avoid a circular dependency, as
15b16c2c
CB
6792 ;; ruby-aruba depends on ruby-cucumber.
6793 ("ruby-aruba", ruby-aruba-without-tests)
6794 ("ruby-rspec" ,ruby-rspec)
6795 ("ruby-pry" ,ruby-pry)
92ebbaad
MC
6796 ("ruby-nokogiri" ,ruby-nokogiri)
6797 ("ruby-rubocop" ,ruby-rubocop)))
15b16c2c 6798 (synopsis "Describe automated tests in plain language")
92ebbaad
MC
6799 (description "Cucumber is a tool for running automated tests written in
6800plain language. It's designed to support a Behaviour Driven Development (BDD)
15b16c2c
CB
6801software development workflow.")
6802 (home-page "https://cucumber.io/")
6803 (license license:expat)))
6804
6805(define ruby-cucumber-without-tests
6806 (package (inherit ruby-cucumber)
6807 (arguments
6808 '(#:tests? #f))
6809 (native-inputs
6810 '())))
6811
f048ef52
MC
6812(define-public ruby-coveralls
6813 (package
6814 (name "ruby-coveralls")
6815 (version "0.8.23")
6816 (source
6817 (origin
6818 (method url-fetch)
6819 (uri (rubygems-uri "coveralls" version))
6820 (sha256
6821 (base32
6822 "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc"))))
6823 (build-system ruby-build-system)
6824 ;; The test suite depends on ruby-vcr, which cannot be included in Guix
6825 ;; because of its nonfree, Hippocratic derived license.
6826 (arguments '(#:tests? #f))
6827 (propagated-inputs
6828 `(("ruby-json" ,ruby-json)
6829 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
6830 ("ruby-thor" ,ruby-thor)
6831 ("ruby-tins" ,ruby-tins)))
6832 (synopsis "Ruby implementation of the Coveralls API")
6833 (description "This package provides a Ruby implementation of the Coveralls
6834API.")
6835 (home-page "https://coveralls.io")
6836 (license license:expat)))
f2a1b7fa
MC
6837
6838(define-public ruby-unindent
6839 (package
6840 (name "ruby-unindent")
6841 (version "1.0")
6842 (source
6843 (origin
6844 (method url-fetch)
6845 (uri (rubygems-uri "unindent" version))
6846 (sha256
6847 (base32
6848 "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd"))))
6849 (build-system ruby-build-system)
6850 (synopsis "Ruby method to unindent strings")
6851 (description "This module provides a @code{String#unindent} Ruby method to
6852unindent strings, which can be useful to unindent multiline strings embedded
6853in already-indented code.")
6854 (home-page "https://github.com/mynyml/unindent")
6855 (license license:expat)))
f048ef52 6856
cd89fecb
PP
6857(define-public ruby-cucumber-core
6858 (package
6859 (name "ruby-cucumber-core")
95a5d992 6860 (version "7.1.0")
cd89fecb
PP
6861 (source
6862 (origin
95a5d992
MC
6863 (method git-fetch)
6864 (uri (git-reference
6865 (url "https://github.com/cucumber/cucumber-ruby-core.git")
6866 (commit (string-append "v" version))))
6867 (file-name (git-file-name name version))
cd89fecb
PP
6868 (sha256
6869 (base32
95a5d992 6870 "1p5wb6wbggbw37ariyag4kxpiczznvgm3c8cnz1744dmbj79q1rn"))))
cd89fecb 6871 (build-system ruby-build-system)
95a5d992
MC
6872 (arguments
6873 `(#:test-target "spec"
6874 #:phases
6875 (modify-phases %standard-phases
6876 (add-after 'extract-gemspec 'relax-version-requirements
6877 (lambda _
6878 (substitute* "cucumber-core.gemspec"
6879 (("'cucumber-tag-expressions',.*")
6880 "'cucumber-tag-expressions', '>=2.0.0'\n"))
6881 #t)))))
6882 (native-inputs
6883 `(("ruby-rspec" ,ruby-rspec)
6884 ("ruby-coveralls" ,ruby-coveralls)
6885 ("ruby-rubocop" ,ruby-rubocop)
6886 ("ruby-simplecov" ,ruby-simplecov)
6887 ("ruby-unindent" ,ruby-unindent)))
cd89fecb 6888 (propagated-inputs
95a5d992 6889 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
5cd047e8
CB
6890 ("ruby-gherkin" ,ruby-gherkin)
6891 ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
cd89fecb
PP
6892 (synopsis "Core library for the Cucumber BDD app")
6893 (description "Cucumber is a tool for running automated tests
6894written in plain language. Because they're written in plain language,
6895they can be read by anyone on your team. Because they can be read by
6896anyone, you can use them to help improve communication, collaboration
6897and trust on your team.")
6898 (home-page "https://cucumber.io/")
6899 (license license:expat)))
212d563d 6900
fb1a8954
CB
6901(define-public ruby-cucumber-expressions
6902 (package
6903 (name "ruby-cucumber-expressions")
4ada4a42 6904 (version "10.2.0")
fb1a8954
CB
6905 (source
6906 (origin
4ada4a42
MC
6907 (method git-fetch)
6908 (uri (git-reference
6909 (url "https://github.com/cucumber/cucumber-expressions-ruby.git")
6910 (commit (string-append "v" version))))
6911 (file-name (git-file-name name version))
fb1a8954
CB
6912 (sha256
6913 (base32
4ada4a42 6914 "1aivhcpjrmbvp9bg0y7g6zxh2swfvylvg0sapq5jc4i1y74k8npd"))))
fb1a8954
CB
6915 (build-system ruby-build-system)
6916 (arguments
6917 '(#:test-target "spec"))
6918 (native-inputs
4ada4a42 6919 `(("ruby-rspec" ,ruby-rspec)
fb1a8954
CB
6920 ("ruby-simplecov" ,ruby-simplecov)))
6921 (synopsis "Simpler alternative to Regular Expressions")
6922 (description "Cucumber Expressions offer similar functionality to Regular
6923Expressions, with a syntax that is easier to read and write. Cucumber
6924Expressions are extensible with parameter types.")
6925 (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
6926 (license license:expat)))
6927
ce872770
CB
6928(define-public ruby-cucumber-wire
6929 (package
6930 (name "ruby-cucumber-wire")
6516827e 6931 (version "3.1.0")
ce872770
CB
6932 (source
6933 (origin
6934 (method url-fetch)
6935 (uri (rubygems-uri "cucumber-wire" version))
6936 (sha256
6937 (base32
6516827e 6938 "0z1n13lqv70zb2lcrvs2263lm0gsb3gz8gbv890kxzwp8cvd433k"))))
ce872770
CB
6939 (build-system ruby-build-system)
6940 (arguments
6516827e 6941 '(#:tests? #f ;tests use cucumber, causing a cycle
ce872770
CB
6942 #:phases
6943 (modify-phases %standard-phases
6516827e 6944 (add-after 'extract-gemspec 'relax-version-requirements
ce872770 6945 (lambda _
6516827e
MC
6946 (substitute* ".gemspec"
6947 ((" 10\\.1") " 10.2"))
ce872770 6948 #t)))))
6516827e
MC
6949 (propagated-inputs
6950 `(("ruby-cucumber-core" ,ruby-cucumber-core)
6951 ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
6952 ("ruby-cucumber-messages" ,ruby-cucumber-messages)))
ce872770 6953 (synopsis "Cucumber wire protocol plugin")
6516827e
MC
6954 (description "Cucumber's wire protocol allows step definitions to be
6955implemented and invoked on any platform.")
ce872770
CB
6956 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
6957 (license license:expat)))
6958
0ce8f344
CB
6959(define-public ruby-cucumber-tag-expressions
6960 (package
6961 (name "ruby-cucumber-tag-expressions")
0d2c45ce 6962 (version "3.0.0")
0ce8f344
CB
6963 (source
6964 (origin
0d2c45ce
MC
6965 (method git-fetch)
6966 (uri (git-reference
6967 (url "https://github.com/cucumber/tag-expressions-ruby.git")
6968 (commit (string-append "v" version))))
6969 (file-name (git-file-name name version))
0ce8f344
CB
6970 (sha256
6971 (base32
0d2c45ce 6972 "15dw4w0npd4m6aw7zhqkjxxzngp42kswrkwfygxkxcxnhy5zl1vx"))))
0ce8f344
CB
6973 (build-system ruby-build-system)
6974 (arguments
0d2c45ce 6975 `(#:test-target "spec"))
0ce8f344
CB
6976 (native-inputs
6977 `(("ruby-rspec" ,ruby-rspec)))
6978 (synopsis "Cucumber tag expressions for Ruby")
0d2c45ce
MC
6979 (description "Cucumber tag expression parser for Ruby. A tag expression
6980is an infix boolean expression used by Cucumber.")
0ce8f344
CB
6981 (home-page "https://github.com/cucumber/tag-expressions-ruby")
6982 (license license:expat)))
6983
73a5aff7
CB
6984(define-public ruby-bindex
6985 (package
6986 (name "ruby-bindex")
6987 (version "0.5.0")
6988 (source
6989 (origin
6990 (method url-fetch)
6991 (uri (rubygems-uri "bindex" version))
6992 (sha256
6993 (base32
6994 "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
6995 (build-system ruby-build-system)
6996 (arguments
6997 '(#:test-target "default"))
6998 (native-inputs
6999 `(("bundler" ,bundler)
7000 ("ruby-rake-compiler" ,ruby-rake-compiler)))
7001 (synopsis "Provides access for bindings relating to Ruby exceptions")
7002 (description
7003 "@code{bindex} provides a way to access the bindings that relate to
7004exceptions in Ruby, providing more information about the context in which the
7005exception occurred.")
7006 (home-page "https://github.com/gsamokovarov/bindex")
7007 (license license:expat)))
7008
212d563d
PP
7009(define-public ruby-bio-logger
7010 (package
7011 (name "ruby-bio-logger")
7012 (version "1.0.1")
7013 (source
7014 (origin
7015 (method url-fetch)
7016 (uri (rubygems-uri "bio-logger" version))
7017 (sha256
7018 (base32
7019 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
7020 (build-system ruby-build-system)
7021 (arguments
7022 `(#:tests? #f)) ; rake errors, missing shoulda
7023 (propagated-inputs
7024 `(("ruby-log4r" ,ruby-log4r)))
7025 (synopsis "Log4r wrapper for Ruby")
7026 (description "Bio-logger is a wrapper around Log4r adding extra logging
7027features such as filtering and fine grained logging.")
7028 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
7029 (license license:expat)))
07f61cb2 7030
2db0f9c8
BW
7031(define-public ruby-yajl-ruby
7032 (package
7033 (name "ruby-yajl-ruby")
7034 (version "1.4.1")
7035 (source
7036 (origin
7037 (method url-fetch)
7038 (uri (rubygems-uri "yajl-ruby" version))
7039 (sha256
7040 (base32
7041 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
7042 (build-system ruby-build-system)
7043 (arguments
7044 '(#:test-target "spec"
7045 #:phases
7046 (modify-phases %standard-phases
7047 (add-before 'check 'patch-test-to-update-load-path
7048 (lambda _
7049 (substitute* "spec/parsing/large_number_spec.rb"
7050 (("require \"yajl\"")
7051 "$LOAD_PATH << 'lib'; require 'yajl'"))
7052 #t)))))
7053 (native-inputs
7054 `(("ruby-rake-compiler" ,ruby-rake-compiler)
7055 ("ruby-rspec" ,ruby-rspec)))
7056 (synopsis "Streaming JSON parsing and encoding library for Ruby")
7057 (description
7058 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
7059is compatible with the JSON gem, so yajl-ruby can act as a drop in
7060replacement.
7061
7062A modified copy of yajl is used, and included in the package.")
7063 (home-page "https://github.com/brianmario/yajl-ruby")
7064 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
7065 license:bsd-3)))) ; Included, modified copy of yajl
7066
07f61cb2 7067(define-public ruby-yard
6499893e
BW
7068 (package
7069 (name "ruby-yard")
7eb8ff0b 7070 (version "0.9.25")
6499893e
BW
7071 (source
7072 (origin
f3fd70c0 7073 (method git-fetch)
6499893e 7074 ;; Tests do not pass if we build from the distributed gem.
f3fd70c0 7075 (uri (git-reference
65a61239
MC
7076 (url "https://github.com/lsegal/yard")
7077 (commit (string-append "v" version))))
f3fd70c0 7078 (file-name (git-file-name name version))
6499893e
BW
7079 (sha256
7080 (base32
7eb8ff0b 7081 "1x7y4s557hrnq439lih7nqg1y7ximardw75jx9i92x3yzpviqqwa"))))
6499893e
BW
7082 (build-system ruby-build-system)
7083 (arguments
65a61239
MC
7084 ;; Note: Tests are willfully disabled to alleviate dependency cycle
7085 ;; problems.
7086 `(#:tests? #f))
6499893e 7087 (synopsis "Documentation generation tool for Ruby")
65a61239
MC
7088 (description "YARD is a documentation generation tool for the Ruby
7089programming language. It enables the user to generate consistent, usable
7090documentation that can be exported to a number of formats very easily, and
7091also supports extending for custom Ruby constructs such as custom class level
7092definitions.")
2f3800e5 7093 (home-page "https://yardoc.org")
6499893e 7094 (license license:expat)))
2cbcd23a 7095
df32ab11
MC
7096(define-public ruby-yard-with-tests
7097 (package
7098 (inherit ruby-yard)
7099 (name "ruby-yard-with-tests")
7100 (arguments
7101 (substitute-keyword-arguments (package-arguments ruby-yard)
7102 ((#:tests? _ #t) #t)
7103 ((#:test-target _ "default") "default")
7104 ((#:phases phases '%standard-phases)
7105 `(modify-phases ,phases
7106 (add-before 'check 'prepare-for-tests
7107 (lambda* (#:key tests? #:allow-other-keys)
7108 (when tests?
7109 (substitute* "Rakefile"
7110 ((".*[Ss]amus.*") ""))
7111 ;; Delete the Gemfile to avoid errors relating to it.
7112 (delete-file "Gemfile")
7113 ;; $HOME needs to be set to somewhere writeable for tests to
7114 ;; run.
7115 (setenv "HOME" "/tmp"))
7116 #t))))))
7117 (native-inputs
7118 `(("ruby-rspec" ,ruby-rspec)
7119 ("ruby-rack" ,ruby-rack)
7120 ("ruby-redcloth" ,ruby-redcloth)
7121 ("ruby-asciidoc" ,ruby-asciidoctor)))))
7122
ad686ef3
RW
7123(define-public ruby-clap
7124 (package
7125 (name "ruby-clap")
7126 (version "1.0.0")
7127 (source (origin
7128 (method url-fetch)
7129 (uri (rubygems-uri "clap" version))
7130 (sha256
7131 (base32
7132 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
7133 (build-system ruby-build-system)
7134 ;; Clap needs cutest for running tests, but cutest needs clap.
7135 (arguments `(#:tests? #f))
7136 (synopsis "Command line argument parsing for simple applications")
7137 (description
7138 "Clap provides command line argument parsing features. It covers the
7139simple case of executing code based on the flags or parameters passed.")
7140 (home-page "https://github.com/djanowski/cutest")
0c80451e
RW
7141 (license license:expat)))
7142
7143(define-public ruby-cutest
7144 (package
7145 (name "ruby-cutest")
7146 (version "1.2.2")
7147 (source (origin
7148 (method url-fetch)
7149 (uri (rubygems-uri "cutest" version))
7150 (sha256
7151 (base32
7152 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
7153 (build-system ruby-build-system)
7154 (propagated-inputs
7155 `(("ruby-clap" ,ruby-clap)))
7156 (synopsis "Run tests in separate processes")
7157 (description
7158 "Cutest runs tests in separate processes to avoid shared state.")
7159 (home-page "https://github.com/djanowski/cutest")
ad686ef3
RW
7160 (license license:expat)))
7161
ac09beba
RW
7162(define-public ruby-pygmentize
7163 (package
7164 (name "ruby-pygmentize")
7165 (version "0.0.3")
7166 (source (origin
7167 (method url-fetch)
7168 (uri (rubygems-uri "pygmentize" version))
7169 (sha256
7170 (base32
7171 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
7172 (build-system ruby-build-system)
7173 (arguments
7174 `(#:phases
7175 (modify-phases %standard-phases
7176 (add-after 'unpack 'fix-pygmentize-path
7177 (lambda _
7178 (substitute* "lib/pygmentize.rb"
7179 (("\"/usr/bin/env python.*")
7180 (string-append "\"" (which "pygmentize") "\"\n")))
7181 #t))
7182 (add-after 'build 'do-not-use-vendor-directory
7183 (lambda _
7184 ;; Remove bundled pygments sources
7185 ;; FIXME: ruby-build-system does not support snippets.
7186 (delete-file-recursively "vendor")
7187 (substitute* "pygmentize.gemspec"
7188 (("\"vendor/\\*\\*/\\*\",") ""))
7189 #t)))))
7190 (inputs
7191 `(("pygments" ,python-pygments)))
7192 (native-inputs
7193 `(("ruby-cutest" ,ruby-cutest)
7194 ("ruby-nokogiri" ,ruby-nokogiri)))
7195 (synopsis "Thin Ruby wrapper around pygmentize")
7196 (description
7197 "Pygmentize provides a simple way to call pygmentize from within a Ruby
7198application.")
7199 (home-page "https://github.com/djanowski/pygmentize")
7200 (license license:expat)))
7201
2cbcd23a
DT
7202(define-public ruby-eventmachine
7203 (package
7204 (name "ruby-eventmachine")
c207fa5e 7205 (version "1.2.7")
2cbcd23a
DT
7206 (source
7207 (origin
7208 (method url-fetch)
7209 (uri (rubygems-uri "eventmachine" version))
7210 (sha256
7211 (base32
c207fa5e 7212 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
2cbcd23a
DT
7213 (build-system ruby-build-system)
7214 (arguments
c5d269fb 7215 '(#:tests? #f)) ; test suite tries to connect to google.com
2cbcd23a
DT
7216 (native-inputs
7217 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
7218 (synopsis "Single-threaded network event framework for Ruby")
7219 (description
7220 "EventMachine implements a single-threaded engine for arbitrary network
7221communications. EventMachine wraps all interactions with sockets, allowing
7222programs to concentrate on the implementation of network protocols. It can be
7223used to create both network servers and clients.")
24a26227
TGR
7224 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
7225 (home-page "https://github.com/eventmachine/eventmachine")
2cbcd23a 7226 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
7d3a1a2d 7227
e218b0c8
BW
7228(define-public ruby-ruby-engine
7229 (package
7230 (name "ruby-ruby-engine")
77d098bf 7231 (version "2.0.0")
e218b0c8
BW
7232 (source
7233 (origin
7234 (method url-fetch)
7235 (uri (rubygems-uri "ruby_engine" version))
7236 (sha256
7237 (base32
77d098bf 7238 "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm"))))
e218b0c8
BW
7239 (build-system ruby-build-system)
7240 (arguments
7241 `(#:phases
7242 (modify-phases %standard-phases
77d098bf 7243 (add-after 'extract-gemspec 'clean-up
e218b0c8
BW
7244 (lambda _
7245 (delete-file "Gemfile.lock")
7246 (substitute* "ruby_engine.gemspec"
7247 ;; Remove unnecessary imports that would entail further
7248 ;; dependencies.
7249 ((".*<rdoc.*") "")
7250 ((".*<rubygems-tasks.*") "")
7251 ;; Remove extraneous .gem file
77d098bf
MC
7252 (("\"pkg/ruby_engine-[0-9.]+\\.gem\".freeze, ") "")
7253 (("\"Gemfile.lock\".freeze, ") "")
e218b0c8 7254 ;; Soften rake dependency
77d098bf 7255 (("%q<rake>.freeze, \\[\"~> 10.0\"\\]")
e218b0c8
BW
7256 "%q<rake>.freeze, [\">= 10.0\"]")
7257 ;; Soften the rspec dependency
77d098bf 7258 (("%q<rspec>.freeze, \\[\"~> 2.4\"\\]")
e218b0c8
BW
7259 "%q<rspec>.freeze, [\">= 2.4\"]"))
7260 (substitute* "Rakefile"
7261 (("require 'rubygems/tasks'") "")
7262 (("Gem::Tasks.new") ""))
7263 ;; Remove extraneous .gem file that otherwise gets installed.
77d098bf 7264 (delete-file-recursively "pkg")
e218b0c8
BW
7265 #t)))))
7266 (native-inputs
7267 `(("bundler" ,bundler)
7268 ("ruby-rake" ,ruby-rake)
7269 ("ruby-rspec" ,ruby-rspec)))
7270 (synopsis "Simplifies checking for Ruby implementation")
7271 (description
7272 "@code{ruby_engine} provides an RubyEngine class that can be used to
7273check which implementation of Ruby is in use. It can provide the interpreter
7274name and provides query methods such as @{RubyEngine.mri?}.")
7275 (home-page "https://github.com/janlelis/ruby_engine")
7276 (license license:expat)))
7277
8092e333
BW
7278(define-public ruby-turn
7279 (package
7280 (name "ruby-turn")
7281 (version "0.9.7")
7282 (source
7283 (origin
7284 (method url-fetch)
7285 (uri (rubygems-uri "turn" version))
7286 (sha256
7287 (base32
7288 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
7289 (build-system ruby-build-system)
7290 (arguments
7291 `(#:phases
7292 (modify-phases %standard-phases
7293 ;; Tests fail because turn changes its environment so can no longer
7294 ;; find test/unit. Instead simply test if the executable runs
7295 ;; without issue.
7296 (replace 'check
7297 (lambda _
9923d5a4 7298 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
8092e333
BW
7299 (propagated-inputs
7300 `(("ruby-ansi" ,ruby-ansi)
7301 ("ruby-minitest" ,ruby-minitest-4)))
7302 (synopsis "Alternate set of alternative runners for MiniTest")
7303 (description
7304 "TURN provides a set of alternative runners for MiniTest which are both
7305colorful and informative. TURN displays each test on a separate line with
7306failures being displayed immediately instead of at the end of the tests. Note
7307that TURN is no longer being maintained.")
f433b662 7308 (home-page "https://rubygems.org/gems/turn")
8092e333
BW
7309 (license license:expat)))
7310
8279b1d3
CB
7311(define-public ruby-mimemagic
7312 (package
7313 (name "ruby-mimemagic")
60bc8952 7314 (version "0.3.3")
8279b1d3
CB
7315 (source
7316 (origin
7317 (method url-fetch)
7318 (uri (rubygems-uri "mimemagic" version))
7319 (sha256
60bc8952 7320 (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw"))))
8279b1d3
CB
7321 (build-system ruby-build-system)
7322 (arguments
7323 '(#:phases
7324 (modify-phases %standard-phases
7325 ;; This phase breaks the tests, as it patches some of the test data.
7326 (delete 'patch-source-shebangs))))
7327 (native-inputs
7328 `(("ruby-bacon" ,ruby-bacon)))
7329 (synopsis "Ruby library for MIME detection by extension or content")
7330 (description
7331 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
7332extension or content, using the freedesktop.org.xml shared-mime-info
7333database.")
7334 (home-page "https://github.com/minad/mimemagic")
7335 (license license:expat)))
7336
32d1c06f
BW
7337(define-public ruby-mime-types-data
7338 (package
7339 (name "ruby-mime-types-data")
f49511db 7340 (version "3.2016.0521")
32d1c06f
BW
7341 (source
7342 (origin
7343 (method url-fetch)
7344 (uri (rubygems-uri "mime-types-data" version))
7345 (sha256
7346 (base32
f49511db 7347 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
32d1c06f
BW
7348 (build-system ruby-build-system)
7349 (native-inputs
7350 `(("ruby-hoe" ,ruby-hoe)))
7351 (synopsis "Registry for information about MIME media type definitions")
7352 (description
7353 "@code{mime-types-data} provides a registry for information about
7354Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
7355be used with the Ruby mime-types library or other software to determine
7356defined filename extensions for MIME types, or to use filename extensions to
7357look up the likely MIME type definitions.")
7358 (home-page "https://github.com/mime-types/mime-types-data/")
7359 (license license:expat)))
7360
d39b606c
BW
7361(define-public ruby-mime-types
7362 (package
7363 (name "ruby-mime-types")
803bcc81 7364 (version "3.1")
d39b606c
BW
7365 (source
7366 (origin
7367 (method url-fetch)
7368 (uri (rubygems-uri "mime-types" version))
7369 (sha256
7370 (base32
803bcc81 7371 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
d39b606c
BW
7372 (build-system ruby-build-system)
7373 (propagated-inputs
7374 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
7375 (native-inputs
7376 `(("ruby-hoe" ,ruby-hoe)
7377 ("ruby-fivemat" ,ruby-fivemat)
7378 ("ruby-minitest-focus" ,ruby-minitest-focus)
7379 ("ruby-minitest-rg" ,ruby-minitest-rg)
803bcc81
BW
7380 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
7381 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
d39b606c
BW
7382 (synopsis "Library and registry for MIME content type definitions")
7383 (description "The mime-types library provides a library and registry for
7384information about Multipurpose Internet Mail Extensions (MIME) content type
7385definitions. It can be used to determine defined filename extensions for MIME
7386types, or to use filename extensions to look up the likely MIME type
7387definitions.")
7388 (home-page "https://github.com/mime-types/ruby-mime-types")
7389 (license license:expat)))
7390
eb5e0bd9
BW
7391(define-public ruby-fivemat
7392 (package
7393 (name "ruby-fivemat")
c664ebcc 7394 (version "1.3.7")
eb5e0bd9
BW
7395 (source
7396 (origin
7397 (method url-fetch)
7398 (uri (rubygems-uri "fivemat" version))
7399 (sha256
7400 (base32
c664ebcc 7401 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
eb5e0bd9
BW
7402 (build-system ruby-build-system)
7403 (arguments
7404 `(#:tests? #f)) ; no tests
7405 (synopsis "Each test file given its own line of dots")
7406 (description
7407 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
7408its own line of dots during testing. It aims to provide test output that is
7409neither too verbose nor too minimal.")
7410 (home-page "https://github.com/tpope/fivemat")
7411 (license license:expat)))
7412
4fea500b
BW
7413(define-public ruby-sqlite3
7414 (package
7415 (name "ruby-sqlite3")
e7cdba61 7416 (version "1.4.2")
4fea500b
BW
7417 (source
7418 (origin
7419 (method url-fetch)
7420 (uri (rubygems-uri "sqlite3" version))
7421 (sha256
7422 (base32
e7cdba61 7423 "0lja01cp9xd5m6vmx99zwn4r7s97r1w5cb76gqd8xhbm1wxyzf78"))))
4fea500b
BW
7424 (build-system ruby-build-system)
7425 (arguments
7426 `(#:phases
7427 (modify-phases %standard-phases
7428 (add-before 'check 'add-gemtest-file
7429 ;; This file exists in the repository but is not distributed.
9923d5a4 7430 (lambda _ (invoke "touch" ".gemtest"))))))
4fea500b
BW
7431 (inputs
7432 `(("sqlite" ,sqlite)))
7433 (native-inputs
7434 `(("ruby-hoe" ,ruby-hoe)
7435 ("ruby-rake-compiler" ,ruby-rake-compiler)
7436 ("ruby-mini-portile" ,ruby-mini-portile)))
7437 (synopsis "Interface with SQLite3 databases")
7438 (description
7439 "This module allows Ruby programs to interface with the SQLite3 database
7440engine.")
7441 (home-page
7442 "https://github.com/sparklemotion/sqlite3-ruby")
7443 (license license:bsd-3)))
7444
4dfa39cc
BW
7445(define-public ruby-shoulda-context
7446 (package
7447 (name "ruby-shoulda-context")
e7d1d472 7448 (version "1.2.2")
4dfa39cc
BW
7449 (source
7450 (origin
7451 (method url-fetch)
7452 (uri (rubygems-uri "shoulda-context" version))
7453 (sha256
7454 (base32
e7d1d472 7455 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
4dfa39cc
BW
7456 (build-system ruby-build-system)
7457 (arguments
7458 `(#:phases
7459 (modify-phases %standard-phases
7460 (replace 'check
7461 (lambda _
7462 ;; Do not run tests to avoid circular dependence with rails.
7463 ;; Instead just import the library to test.
9923d5a4 7464 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
4dfa39cc
BW
7465 (synopsis "Test::Unit context framework extracted from Shoulda")
7466 (description
7467 "@code{shoulda-context} is the context framework extracted from Shoulda.
7468Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
7469context, setup, and should blocks combine to produce natural test method
7470names.")
7471 (home-page "https://github.com/thoughtbot/shoulda-context")
7472 (license license:expat)))
7473
e4fea008
BW
7474(define-public ruby-shoulda-matchers
7475 (package
7476 (name "ruby-shoulda-matchers")
d1c1f368 7477 (version "3.1.2")
e4fea008
BW
7478 (source
7479 (origin
7480 (method url-fetch)
7481 (uri (rubygems-uri "shoulda-matchers" version))
7482 (sha256
7483 (base32
d1c1f368 7484 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
e4fea008
BW
7485 (build-system ruby-build-system)
7486 (arguments
7487 `(#:phases
7488 (modify-phases %standard-phases
e4fea008
BW
7489 (replace 'check
7490 (lambda _
7491 ;; Do not run tests to avoid circular dependence with rails. Instead
7492 ;; just import the library to test.
9923d5a4 7493 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
e4fea008
BW
7494 (propagated-inputs
7495 `(("ruby-activesupport" ,ruby-activesupport)))
7496 (synopsis "Collection of testing matchers extracted from Shoulda")
7497 (description
7498 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
7499test common Rails functionality. These tests would otherwise be much longer,
7500more complex, and error-prone.")
7501 (home-page "https://github.com/thoughtbot/shoulda-matchers")
7502 (license license:expat)))
7503
3885c58b
BW
7504(define-public ruby-shoulda-matchers-2
7505 (package
7506 (inherit ruby-shoulda-matchers)
7507 (version "2.8.0")
7508 (source (origin
7509 (method url-fetch)
7510 (uri (rubygems-uri "shoulda-matchers" version))
7511 (sha256
7512 (base32
7513 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
7514
6f390716
BW
7515(define-public ruby-shoulda
7516 (package
7517 (name "ruby-shoulda")
7518 (version "3.5.0")
7519 (source
7520 (origin
7521 (method url-fetch)
7522 (uri (rubygems-uri "shoulda" version))
7523 (sha256
7524 (base32
7525 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
7526 (build-system ruby-build-system)
7527 (arguments
7528 `(#:phases
7529 (modify-phases %standard-phases
7530 (replace 'check
7531 ;; Don't run tests to avoid circular dependence with rails. Instead
7532 ;; just import the library to test.
9923d5a4 7533 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
6f390716
BW
7534 (propagated-inputs
7535 `(("ruby-shoulda-context" ,ruby-shoulda-context)
7536 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
7537 (synopsis "Context framework and matchers for testing")
7538 (description
7539 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
7540@code{shoulda-matchers} providing tools for writing tests.")
7541 (home-page "https://github.com/thoughtbot/shoulda")
7542 (license license:expat)))
7543
3b44bcdf
BW
7544(define-public ruby-unf
7545 (package
7546 (name "ruby-unf")
7547 (version "0.1.4")
7548 (source
7549 (origin
7550 (method url-fetch)
7551 (uri (rubygems-uri "unf" version))
7552 (sha256
7553 (base32
7554 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
7555 (build-system ruby-build-system)
7556 (arguments
7557 `(#:phases
7558 (modify-phases %standard-phases
7559 (add-before 'check 'add-dependency-to-bundler
7560 (lambda _
7561 ;; test-unit is required but not provided by the bundler
7562 ;; environment. This is fixed in the upstream repository but fix
7563 ;; has not been released.
7564 (substitute* "Gemfile"
7565 (("^gemspec") "gem 'test-unit'\ngemspec"))
7566 #t)))))
7567 (propagated-inputs
7568 `(("ruby-unf-ext" ,ruby-unf-ext)))
7569 (native-inputs
7570 `(("ruby-shoulda" ,ruby-shoulda)
7571 ("bundler" ,bundler)
7572 ("ruby-test-unit" ,ruby-test-unit)))
7573 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
7574 (description
7575 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
7576support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
7577@code{java.text.Normalizer} on JRuby.")
7578 (home-page "https://github.com/knu/ruby-unf")
7579 (license license:bsd-2)))
7580
e32c99d2
CB
7581(define-public ruby-warden
7582 (package
7583 (name "ruby-warden")
7584 (version "1.2.8")
7585 (source
7586 (origin
7587 (method url-fetch)
7588 (uri (rubygems-uri "warden" version))
7589 (sha256
7590 (base32
7591 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
7592 (build-system ruby-build-system)
7593 (arguments
7594 '(#:tests? #f)) ; No included tests
7595 (propagated-inputs
7596 `(("ruby-rack" ,ruby-rack)))
7597 (synopsis "Rack middleware providing authentication")
7598 (description
7599 "Warden is a Rack-based middleware that provides a mechanism for
7600authentication in Ruby web applications.")
7601 (home-page "https://github.com/wardencommunity/warden")
7602 (license license:expat)))
7603
e42eecdb
CB
7604(define-public ruby-warden-oauth2
7605 (package
7606 (name "ruby-warden-oauth2")
7607 (version "0.0.1")
7608 (source
7609 (origin
7610 (method url-fetch)
7611 (uri (rubygems-uri "warden-oauth2" version))
7612 (sha256
7613 (base32
7614 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
7615 (build-system ruby-build-system)
7616 (arguments
7617 '(#:test-target "spec"
7618 #:phases
7619 (modify-phases %standard-phases
7620 (add-after 'unpack 'remove-unnecessary-dependencies
7621 (lambda _
7622 (substitute* "Gemfile"
7623 ;; All of these gems relate to development, and are unnecessary
7624 ;; when running the tests
7625 (("gem 'guard-bundler'") "")
7626 (("gem 'guard'") "")
7627 (("gem 'guard-rspec'") "")
7628 (("gem 'rb-fsevent'") "")
7629 (("gem 'pry'") "")
7630 (("gem 'growl'") ""))
7631 #t))
7632 ;; The test suite doesn't work with rspec@2, and this is incompatible
7633 ;; with the current version of Rake, so invoke Rspec directly
7634 (replace 'check
7635 (lambda* (#:key tests? #:allow-other-keys)
7636 (when tests?
7637 (invoke "bundle" "exec" "rspec"))
7638 #t)))))
7639 (propagated-inputs
7640 `(("ruby-warden" ,ruby-warden)))
7641 (native-inputs
7642 `(("bundler" ,bundler)
7643 ("ruby-rspec" ,ruby-rspec-2)
7644 ("ruby-rack-test" ,ruby-rack-test)))
7645 (synopsis "OAuth 2.0 strategies for Warden")
7646 (description
7647 "This library extends Warden to support OAuth 2.0 authorized API
7648requests.")
7649 (home-page "https://github.com/opperator/warden-oauth2")
7650 (license license:expat)))
7651
8c7ae384
CB
7652(define-public ruby-webmock-2
7653 (package
7654 (name "ruby-webmock")
7655 (version "2.3.2")
7656 (source
7657 (origin
7658 (method url-fetch)
7659 (uri (rubygems-uri "webmock" version))
7660 (sha256
7661 (base32
7662 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))
7663 (build-system ruby-build-system)
7664 (native-inputs
7665 `(("bundler" ,bundler)
7666 ("ruby-rspec" ,ruby-rspec)))
7667 (propagated-inputs
7668 `(("ruby-addressable" ,ruby-addressable)
7669 ("ruby-crack" ,ruby-crack)
7670 ("ruby-hashdiff" ,ruby-hashdiff)))
7671 (synopsis "Allows stubbing and setting expectations on HTTP requests")
7672 (description
7673 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
7674requests. This is useful when testing software.")
7675 (home-page "https://github.com/bblimke/webmock")
7676 (license license:expat)))
7677
d8c189ed
CB
7678(define-public ruby-unicode-display-width
7679 (package
7680 (name "ruby-unicode-display-width")
216ccced 7681 (version "1.6.0")
d8c189ed
CB
7682 (source
7683 (origin
7684 (method url-fetch)
7685 (uri (rubygems-uri "unicode-display_width" version))
7686 (sha256
7687 (base32
216ccced 7688 "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w"))))
d8c189ed
CB
7689 (build-system ruby-build-system)
7690 (arguments
7691 '(;; Test data not included.
7692 #:tests? #f))
7693 (synopsis "Determine the monospace display width of Ruby strings")
7694 (description
7695 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
7696display width of strings in Ruby.")
7697 (home-page "https://github.com/janlelis/unicode-display_width")
7698 (license license:expat)))
7699
6120589f
CB
7700;; There is another gem called 'ruby-version' so we use an underscore in this
7701;; name
7702(define-public ruby_version
7703 (package
7704 (name "ruby_version")
1097fdbe 7705 (version "1.0.2")
6120589f
CB
7706 (source
7707 (origin
7708 (method url-fetch)
7709 (uri (rubygems-uri "ruby_version" version))
7710 (sha256
7711 (base32
1097fdbe 7712 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
6120589f
CB
7713 (build-system ruby-build-system)
7714 (arguments
1097fdbe 7715 `(#:phases
6120589f
CB
7716 (modify-phases %standard-phases
7717 (add-before 'check 'fix-dependencies
7718 (lambda _
7719 ;; Remove the Gemfile.lock, as we want to use Guix packages at
7720 ;; whatever versions.
7721 (delete-file "Gemfile.lock")
1097fdbe
MC
7722 ;; Remove the included gem files as they unnecessary.
7723 (delete-file-recursively "pkg/")
7724 ;; Accept any version of rake, rdoc and rspec
6120589f 7725 (substitute* "ruby_version.gemspec"
6120589f 7726 (("%q<rake.*") "%q<rake>)\n")
1097fdbe 7727 (("%q<rdoc.*") "%q<rdoc>)\n")
6120589f 7728 (("%q<rspec.*") "%q<rspec>)\n"))
1097fdbe 7729 ;; Do not use bundler.
6120589f 7730 (substitute* "Rakefile"
1097fdbe 7731 (("Bundler\\.setup.*") "nil\n"))
6120589f
CB
7732 #t)))))
7733 (native-inputs
1097fdbe
MC
7734 `(("ruby-rdoc" ,ruby-rdoc)
7735 ("ruby-rspec" ,ruby-rspec)
7736 ("ruby-rubygems-tasks", ruby-rubygems-tasks)))
6120589f 7737 (synopsis "Ruby library to help check the Ruby version")
1097fdbe 7738 (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify
6120589f
CB
7739checking for the right Ruby version in software.")
7740 (home-page "https://github.com/janlelis/ruby_version")
7741 (license license:expat)))
7742
a229acff
CB
7743(define-public ruby-websocket-driver
7744 (package
7745 (name "ruby-websocket-driver")
9d1cf6d4 7746 (version "0.7.1")
a229acff
CB
7747 (source
7748 (origin
7749 (method url-fetch)
7750 (uri (rubygems-uri "websocket-driver" version))
7751 (sha256
9d1cf6d4 7752 (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2"))))
a229acff
CB
7753 (build-system ruby-build-system)
7754 (arguments
9d1cf6d4 7755 '(#:tests? #f)) ; no included tests
a229acff
CB
7756 (propagated-inputs
7757 `(("ruby-websocket-extensions" ,ruby-websocket-extensions)))
7758 (synopsis "WebSocket protocol handler with pluggable I/O")
7759 (description
7760 "@code{websocket-driver} provides a complete implementation of the
7761WebSocket protocols that can be hooked up to any TCP library")
7762 (home-page "https://github.com/faye/websocket-driver-ruby")
7763 (license license:expat)))
7764
52b015a9
CB
7765(define-public ruby-websocket-extensions
7766 (package
7767 (name "ruby-websocket-extensions")
7768 (version "0.1.3")
7769 (source
7770 (origin
7771 (method url-fetch)
7772 (uri (rubygems-uri "websocket-extensions" version))
7773 (sha256
7774 (base32
7775 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
7776 (build-system ruby-build-system)
7777 (arguments
7778 '(;; No included tests
7779 #:tests? #f))
7780 (synopsis "Generic extension manager for WebSocket connections")
7781 (description
7782 "@code{websocket-extensions} provides a container for registering
7783extension plugins.")
7784 (home-page "https://github.com/faye/websocket-extensions-ruby")
7785 (license license:expat)))
7786
5799aadd
BW
7787(define-public ruby-domain-name
7788 (package
7789 (name "ruby-domain-name")
222999c9 7790 (version "0.5.20180417")
5799aadd
BW
7791 (source
7792 (origin
7793 (method url-fetch)
7794 (uri (rubygems-uri "domain_name" version))
7795 (sha256
7796 (base32
222999c9 7797 "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v"))))
5799aadd
BW
7798 (build-system ruby-build-system)
7799 (arguments
7800 `(#:phases
7801 (modify-phases %standard-phases
7802 (add-before 'check 'fix-versions
7803 (lambda _
7804 ;; Fix NameError that appears to already be fixed upstream.
7805 (substitute* "Rakefile"
7806 (("DomainName::VERSION")
7807 "Bundler::GemHelper.gemspec.version"))
7808 ;; Loosen unnecessarily strict test-unit version specification.
7809 (substitute* "domain_name.gemspec"
71596c3c 7810 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
5799aadd
BW
7811 #t)))))
7812 (propagated-inputs
7813 `(("ruby-unf" ,ruby-unf)))
7814 (native-inputs
7815 `(("ruby-shoulda" ,ruby-shoulda)
7816 ("bundler" ,bundler)
7817 ("ruby-test-unit" ,ruby-test-unit)))
7818 (synopsis "Domain name manipulation library")
7819 (description
7820 "@code{domain_name} is a Domain name manipulation library. It parses a
7821domain name ready for extracting the registered domain and TLD (Top Level
7822Domain). It can also be used for cookie domain validation based on the Public
7823Suffix List.")
7824 (home-page "https://github.com/knu/ruby-domain_name")
7825 (license license:bsd-2)))
7826
d114ceeb
BW
7827(define-public ruby-http-cookie
7828 (package
7829 (name "ruby-http-cookie")
2a2eb07d 7830 (version "1.0.3")
d114ceeb
BW
7831 (source
7832 (origin
7833 (method url-fetch)
7834 (uri (rubygems-uri "http-cookie" version))
7835 (sha256
7836 (base32
2a2eb07d 7837 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
d114ceeb
BW
7838 (build-system ruby-build-system)
7839 (arguments
7840 `(#:phases
7841 (modify-phases %standard-phases
7842 (add-before 'check 'add-dependency-to-bundler
7843 (lambda _
7844 ;; Fix NameError
7845 (substitute* "Rakefile"
7846 (("HTTP::Cookie::VERSION")
7847 "Bundler::GemHelper.gemspec.version"))
7848 #t)))))
7849 (propagated-inputs
7850 `(("ruby-domain-name" ,ruby-domain-name)))
7851 (native-inputs
7852 `(("rubysimplecov" ,ruby-simplecov)
7853 ("bundler" ,bundler)
7854 ("ruby-sqlite3" ,ruby-sqlite3)
7855 ("ruby-test-unit" ,ruby-test-unit)))
7856 (synopsis "Handle HTTP Cookies based on RFC 6265")
7857 (description
7858 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
7859RFC 6265. It has been designed with security, standards compliance and
7860compatibility in mind, to behave just the same as today's major web browsers.
7861It has built-in support for the legacy @code{cookies.txt} and
7862@code{cookies.sqlite} formats of Mozilla Firefox.")
7863 (home-page "https://github.com/sparklemotion/http-cookie")
7864 (license license:expat)))
7865
1c8e6fd3
CB
7866(define-public ruby-httpclient
7867 (package
7868 (name "ruby-httpclient")
7869 (version "2.8.3")
7870 (source
7871 (origin
7872 (method url-fetch)
7873 (uri (rubygems-uri "httpclient" version))
7874 (sha256
7875 (base32
7876 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
7877 (build-system ruby-build-system)
7878 (arguments
7879 '(;; TODO: Some tests currently fail
7880 ;; ------
7881 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
7882 ;; 2 omissions, 0 notifications
7883 ;; 91.866% passed
7884 ;; ------
7885 ;; 6.49 tests/s, 22.41 assertions/s
7886 #:tests? #f
7887 #:phases
7888 (modify-phases %standard-phases
7889 (replace 'check
7890 (lambda* (#:key tests? #:allow-other-keys)
7891 (if tests?
9923d5a4
TGR
7892 (invoke "ruby"
7893 "-Ilib"
7894 "test/runner.rb")
0076f5a9 7895 #t))))))
1c8e6fd3
CB
7896 (native-inputs
7897 `(("ruby-rack" ,ruby-rack)))
7898 (synopsis
7899 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
7900 (description
7901 "The @code{httpclient} ruby library provides functionality related to
7902HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
7903Cookie, multithreading and authentication (digest, NTLM) support.
7904
7905Also provided is a @command{httpclient} command, which can perform HTTP
7906requests either using arguments or with an interactive prompt.")
7907 (home-page "https://github.com/nahi/httpclient")
7908 (license license:ruby)))
7909
7d3a1a2d
BW
7910(define-public ruby-ansi
7911 (package
7912 (name "ruby-ansi")
7913 (version "1.5.0")
7914 (source
7915 (origin
3d30c332 7916 (method git-fetch)
7d3a1a2d 7917 ;; Fetch from GitHub as the gem does not contain testing code.
3d30c332
EF
7918 (uri (git-reference
7919 (url "https://github.com/rubyworks/ansi")
7920 (commit version)))
7921 (file-name (git-file-name name version))
7d3a1a2d
BW
7922 (sha256
7923 (base32
3d30c332 7924 "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5"))))
7d3a1a2d
BW
7925 (build-system ruby-build-system)
7926 (arguments
7927 `(#:phases
7928 (modify-phases %standard-phases
7929 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
7930 ;; cycle ansi, qed, ansi. Instead simply test that the library can
7931 ;; be require'd.
7932 (replace 'check
7933 (lambda _
9923d5a4 7934 (invoke "ruby" "-Ilib" "-r" "ansi")))
0899352f
MB
7935 (add-before 'validate-runpath 'replace-broken-symlink
7936 (lambda* (#:key outputs #:allow-other-keys)
7937 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
7938 (file (string-append
7939 out "/lib/ruby/vendor_ruby/gems/ansi-"
7940 ,version "/lib/ansi.yml")))
0899352f
MB
7941 ;; XXX: This symlink is broken since ruby 2.4.
7942 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
7943 (delete-file file)
7944 (symlink "../.index" file)
7945 #t))))))
7d3a1a2d
BW
7946 (synopsis "ANSI escape code related libraries")
7947 (description
7948 "This package is a collection of ANSI escape code related libraries
7949enabling ANSI colorization and stylization of console output. Included in the
7950library are the @code{Code} module, which defines ANSI codes as constants and
7951methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
7952@code{ProgressBar}, and a @code{String} subclass. The library also includes a
7953@code{Terminal} module which provides information about the current output
7954device.")
3d30c332 7955 (home-page "https://rubyworks.github.io/ansi/")
7d3a1a2d 7956 (license license:bsd-2)))
7c033c46
BW
7957
7958(define-public ruby-systemu
7959 (package
7960 (name "ruby-systemu")
7961 (version "2.6.5")
7962 (source
7963 (origin
7964 (method url-fetch)
7965 (uri (rubygems-uri "systemu" version))
7966 (sha256
7967 (base32
7968 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
7969 (build-system ruby-build-system)
7970 (arguments
7971 `(#:phases
7972 (modify-phases %standard-phases
7973 (add-before 'check 'set-version
7974 (lambda _
7975 (setenv "VERSION" ,version)
7976 #t)))))
7977 (synopsis "Capture of stdout/stderr and handling of child processes")
7978 (description
7979 "Systemu can be used on any platform to return status, stdout, and stderr
7980of any command. Unlike other methods like @code{open3} and @code{popen4}
7981there is no danger of full pipes or threading issues hanging your process or
7982subprocess.")
7983 (home-page "https://github.com/ahoward/systemu")
7984 (license license:ruby)))
3d84a99e
BW
7985
7986(define-public ruby-bio-commandeer
7987 (package
7988 (name "ruby-bio-commandeer")
37b08547 7989 (version "0.4.0")
3d84a99e
BW
7990 (source
7991 (origin
7992 (method url-fetch)
7993 (uri (rubygems-uri "bio-commandeer" version))
7994 (sha256
7995 (base32
37b08547 7996 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
3d84a99e
BW
7997 (build-system ruby-build-system)
7998 (arguments
7999 `(#:phases
8000 (modify-phases %standard-phases
8001 (replace 'check
8002 ;; Run test without calling 'rake' so that jeweler is
8003 ;; not required as an input.
8004 (lambda _
9923d5a4 8005 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
3d84a99e
BW
8006 (propagated-inputs
8007 `(("ruby-bio-logger" ,ruby-bio-logger)
8008 ("ruby-systemu" ,ruby-systemu)))
8009 (native-inputs
8010 `(("bundler" ,bundler)
8011 ("ruby-rspec" ,ruby-rspec)))
8012 (synopsis "Simplified running of shell commands from within Ruby")
8013 (description
8014 "Bio-commandeer provides an opinionated method of running shell commands
8015from within Ruby. The advantage of bio-commandeer over other methods of
8016running external commands is that when something goes wrong, messages printed
8017to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
8018detail to ease debugging.")
7bf837fd 8019 (home-page "https://github.com/wwood/bioruby-commandeer")
3d84a99e 8020 (license license:expat)))
7c8131c7
BW
8021
8022(define-public ruby-rubytest
8023 (package
8024 (name "ruby-rubytest")
8025 (version "0.8.1")
8026 (source
8027 (origin
8028 (method url-fetch)
8029 (uri (rubygems-uri "rubytest" version))
8030 (sha256
8031 (base32
8032 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
8033 (build-system ruby-build-system)
8034 (arguments
8035 ;; Disable regular testing to break the cycle rubytest, qed, brass,
8036 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
8037 ;; simply test that the library can be require'd.
8038 `(#:phases
8039 (modify-phases %standard-phases
8040 (replace 'check
8041 (lambda _
9923d5a4 8042 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
7c8131c7
BW
8043 (propagated-inputs
8044 `(("ruby-ansi" ,ruby-ansi)))
8045 (synopsis "Universal test harness for Ruby")
8046 (description
8047 "Rubytest is a testing meta-framework for Ruby. It can handle any
8048compliant test framework and can run tests from multiple frameworks in a
8049single pass.")
2f3800e5 8050 (home-page "https://rubyworks.github.io/rubytest")
7c8131c7 8051 (license license:bsd-2)))
90fcedf2
BW
8052
8053(define-public ruby-brass
8054 (package
8055 (name "ruby-brass")
8056 (version "1.2.1")
8057 (source
8058 (origin
8059 (method url-fetch)
8060 (uri (rubygems-uri "brass" version))
8061 (sha256
8062 (base32
8063 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
8064 (build-system ruby-build-system)
8065 (arguments
8066 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
8067 ;; Instead simply test that the library can be require'd.
8068 `(#:phases
8069 (modify-phases %standard-phases
8070 (replace 'check
8071 (lambda _
9923d5a4 8072 (invoke "ruby" "-Ilib" "-r" "brass"))))))
90fcedf2
BW
8073 (synopsis "Basic foundational assertions framework")
8074 (description
8075 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
8076foundational assertions framework for other assertion and test frameworks to
8077make use of.")
2f3800e5 8078 (home-page "https://rubyworks.github.io/brass")
90fcedf2 8079 (license license:bsd-2)))
120fc74b
BW
8080
8081(define-public ruby-qed
8082 (package
8083 (name "ruby-qed")
8084 (version "2.9.2")
8085 (source
8086 (origin
8087 (method url-fetch)
8088 (uri (rubygems-uri "qed" version))
8089 (sha256
8090 (base32
8091 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
8092 (build-system ruby-build-system)
8093 (arguments
8094 ;; Disable testing to break the cycle qed, ansi, qed, among others.
8095 ;; Instead simply test that the executable runs using --copyright.
8096 `(#:phases
8097 (modify-phases %standard-phases
8098 (replace 'check
8099 (lambda _
9923d5a4 8100 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
120fc74b
BW
8101 (propagated-inputs
8102 `(("ruby-ansi" ,ruby-ansi)
8103 ("ruby-brass" ,ruby-brass)))
8104 (synopsis "Test framework utilizing literate programming techniques")
8105 (description
8106 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
8107@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
8108Development} (BDD) utilizing Literate Programming techniques. QED sits
8109somewhere between lower-level testing tools like @code{Test::Unit} and
8110requirement specifications systems like Cucumber.")
2f3800e5 8111 (home-page "https://rubyworks.github.io/qed")
120fc74b 8112 (license license:bsd-2)))
9273ee8f 8113
dbbe88d3
CB
8114(define-public ruby-que
8115 (package
8116 (name "ruby-que")
8117 (version "1.0.0.beta3")
8118 (source
8119 (origin
8120 (method url-fetch)
8121 (uri (rubygems-uri "que" version))
8122 (sha256
8123 (base32
8124 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
8125 (build-system ruby-build-system)
8126 (arguments
8127 '(#:tests? #f)) ; No included tests
8128 (synopsis "Job queue using PostgreSQL written in Ruby")
8129 (description
8130 "This package provides a job queue that uses PostgreSQL for storing jobs
8131and locking between worker processes.")
8132 (home-page "https://github.com/chanks/que")
8133 (license license:expat)))
8134
9273ee8f
BW
8135(define-public ruby-ae
8136 (package
8137 (name "ruby-ae")
8138 (version "1.8.2")
8139 (source
8140 (origin
11d1b318 8141 (method git-fetch)
9273ee8f 8142 ;; Fetch from github so tests are included.
11d1b318
EF
8143 (uri (git-reference
8144 (url "https://github.com/rubyworks/ae")
8145 (commit version)))
8146 (file-name (git-file-name name version))
9273ee8f
BW
8147 (sha256
8148 (base32
11d1b318 8149 "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp"))))
9273ee8f
BW
8150 (build-system ruby-build-system)
8151 (arguments
8152 `(#:phases
8153 (modify-phases %standard-phases
8154 (replace 'check
9923d5a4 8155 (lambda _ (invoke "qed")))
de6f6efd
MB
8156 (add-before 'validate-runpath 'replace-broken-symlink
8157 (lambda* (#:key outputs #:allow-other-keys)
8158 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
8159 (file (string-append
8160 out "/lib/ruby/vendor_ruby/gems/ae-"
8161 ,version "/lib/ae.yml")))
de6f6efd
MB
8162 ;; XXX: This symlink is broken since ruby 2.4.
8163 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
8164 (delete-file file)
8165 (symlink "../.index" file)
8166 #t))))))
9273ee8f
BW
8167 (propagated-inputs
8168 `(("ruby-ansi" ,ruby-ansi)))
8169 (native-inputs
8170 `(("ruby-qed" ,ruby-qed)))
8171 (synopsis "Assertions library")
8172 (description
8173 "Assertive Expressive (AE) is an assertions library specifically designed
8174for reuse by other test frameworks.")
11d1b318 8175 (home-page "https://rubyworks.github.io/ae/")
9273ee8f 8176 (license license:bsd-2)))
78bb471f
BW
8177
8178(define-public ruby-lemon
8179 (package
8180 (name "ruby-lemon")
8181 (version "0.9.1")
8182 (source
8183 (origin
8184 (method url-fetch)
8185 (uri (rubygems-uri "lemon" version))
8186 (sha256
8187 (base32
8188 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
8189 (build-system ruby-build-system)
8190 (arguments
8191 `(#:phases
8192 (modify-phases %standard-phases
9923d5a4 8193 (replace 'check (lambda _ (invoke "qed"))))))
78bb471f
BW
8194 (propagated-inputs
8195 `(("ruby-ae" ,ruby-ae)
8196 ("ruby-ansi" ,ruby-ansi)
8197 ("ruby-rubytest" ,ruby-rubytest)))
8198 (native-inputs
8199 `(("ruby-qed" ,ruby-qed)))
8200 (synopsis "Test framework correlating code structure and test unit")
8201 (description
8202 "Lemon is a unit testing framework that enforces highly formal
8203case-to-class and unit-to-method test construction. This enforcement can help
8204focus concern on individual units of behavior.")
2f3800e5 8205 (home-page "https://rubyworks.github.io/lemon")
78bb471f 8206 (license license:bsd-2)))
0832804e
BW
8207
8208(define-public ruby-rubytest-cli
8209 (package
8210 (name "ruby-rubytest-cli")
8211 (version "0.2.0")
8212 (source
8213 (origin
8214 (method url-fetch)
8215 (uri (rubygems-uri "rubytest-cli" version))
8216 (sha256
8217 (base32
8218 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
8219 (build-system ruby-build-system)
8220 (arguments
8221 `(#:tests? #f)) ; no tests
8222 (propagated-inputs
8223 `(("ruby-ansi" ,ruby-ansi)
8224 ("ruby-rubytest" ,ruby-rubytest)))
8225 (synopsis "Command-line interface for rubytest")
8226 (description
8227 "Rubytest CLI is a command-line interface for running tests for
8228Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
2f3800e5 8229 (home-page "https://rubyworks.github.io/rubytest-cli")
0832804e 8230 (license license:bsd-2)))
72ccbfe3
BW
8231
8232(define-public ruby-hashery
8233 (package
8234 (name "ruby-hashery")
cba96208 8235 (version "2.1.2")
72ccbfe3
BW
8236 (source
8237 (origin
8238 (method url-fetch)
8239 (uri (rubygems-uri "hashery" version))
8240 (sha256
8241 (base32
cba96208 8242 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
72ccbfe3
BW
8243 (build-system ruby-build-system)
8244 (arguments
8245 `(#:phases
8246 (modify-phases %standard-phases
8247 (replace 'check
8248 (lambda _
9923d5a4
TGR
8249 (invoke "qed")
8250 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
72ccbfe3
BW
8251 (native-inputs
8252 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
8253 ("ruby-qed" ,ruby-qed)
8254 ("ruby-lemon" ,ruby-lemon)))
8255 (synopsis "Hash-like classes with extra features")
8256 (description
8257 "The Hashery is a tight collection of @code{Hash}-like classes.
8258Included are the auto-sorting @code{Dictionary} class, the efficient
8259@code{LRUHash}, the flexible @code{OpenHash} and the convenient
8260@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
8261defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
8262standard @code{Hash} making it possible to subclass and augment to fit any
8263specific use case.")
2f3800e5 8264 (home-page "https://rubyworks.github.io/hashery")
72ccbfe3 8265 (license license:bsd-2)))
1f1d71e0
BW
8266
8267(define-public ruby-rc4
8268 (package
8269 (name "ruby-rc4")
8270 (version "0.1.5")
8271 (source
8272 (origin
8273 (method url-fetch)
8274 (uri (rubygems-uri "ruby-rc4" version))
8275 (sha256
8276 (base32
8277 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
8278 (build-system ruby-build-system)
8279 (arguments
8280 `(#:phases
8281 (modify-phases %standard-phases
8282 (replace 'check
8283 (lambda _
9923d5a4 8284 (invoke "rspec" "spec/rc4_spec.rb"))))))
1f1d71e0
BW
8285 (native-inputs
8286 `(("ruby-rspec" ,ruby-rspec-2)))
8287 (synopsis "Implementation of the RC4 algorithm")
8288 (description
8289 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
8290 (home-page "https://github.com/caiges/Ruby-RC4")
8291 (license license:expat)))
f3e085a8
BW
8292
8293(define-public ruby-afm
8294 (package
8295 (name "ruby-afm")
8296 (version "0.2.2")
8297 (source
8298 (origin
8299 (method url-fetch)
8300 (uri (rubygems-uri "afm" version))
8301 (sha256
8302 (base32
8303 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
8304 (build-system ruby-build-system)
8305 (native-inputs
8306 `(("bundler" ,bundler)))
8307 (synopsis "Read Adobe Font Metrics (afm) files")
8308 (description
8309 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
8310files and use the data therein.")
7bf837fd 8311 (home-page "https://github.com/halfbyte/afm")
f3e085a8 8312 (license license:expat)))
acb6be42
BW
8313
8314(define-public ruby-ascii85
8315 (package
8316 (name "ruby-ascii85")
5854082a 8317 (version "1.0.3")
acb6be42
BW
8318 (source
8319 (origin
8320 (method url-fetch)
8321 (uri (rubygems-uri "Ascii85" version))
8322 (sha256
8323 (base32
5854082a 8324 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
acb6be42
BW
8325 (build-system ruby-build-system)
8326 (native-inputs
8327 `(("bundler" ,bundler)))
8328 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
8329 (description
8330 "This library provides methods to encode and decode Ascii85
8331binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
8332@dfn{Portable Document Format} (PDF) file formats.")
8333 (home-page "https://github.com/datawraith/ascii85gem")
8334 (license license:expat)))
edf8caae
BW
8335
8336(define-public ruby-ttfunk
8337 (package
8338 (name "ruby-ttfunk")
afb7a3e8 8339 (version "1.5.1")
edf8caae
BW
8340 (source
8341 (origin
4e110825 8342 (method git-fetch)
edf8caae 8343 ;; fetch from github as the gem does not contain testing code
4e110825
EF
8344 (uri (git-reference
8345 (url "https://github.com/prawnpdf/ttfunk")
8346 (commit version)))
8347 (file-name (git-file-name name version))
edf8caae
BW
8348 (sha256
8349 (base32
4e110825 8350 "0dx9891zcli0sjrslmsvrwalv86hbjbqlmbrcasnjr069v05h9v9"))))
edf8caae
BW
8351 (build-system ruby-build-system)
8352 (arguments
8353 `(#:test-target "spec"
8354 #:phases
8355 (modify-phases %standard-phases
afb7a3e8
JL
8356 (add-before 'build 'remove-ssh
8357 (lambda _
8358 ;; remove dependency on an ssh key pair that doesn't exist
8359 (substitute* "ttfunk.gemspec"
8360 (("spec.signing_key.*") ""))
8361 #t))
edf8caae
BW
8362 (add-before 'check 'remove-rubocop
8363 (lambda _
8364 ;; remove rubocop as a dependency as not needed for testing
8365 (substitute* "ttfunk.gemspec"
8366 (("spec.add_development_dependency\\('rubocop'.*") ""))
8367 (substitute* "Rakefile"
8368 (("require 'rubocop/rake_task'") "")
afb7a3e8 8369 (("RuboCop::RakeTask.new") ""))
edf8caae
BW
8370 #t)))))
8371 (native-inputs
8372 `(("ruby-rspec" ,ruby-rspec)
afb7a3e8 8373 ("ruby-yard" ,ruby-yard)
edf8caae
BW
8374 ("bundler" ,bundler)))
8375 (synopsis "Font metrics parser for the Prawn PDF generator")
8376 (description
8377 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
8378part of the Prawn PDF generator.")
8379 (home-page "https://github.com/prawnpdf/ttfunk")
8380 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
8381 ;; for details."
8382 (license (list license:gpl2 license:gpl3 license:ruby))))
cbdd428c 8383
9270298f
BW
8384(define-public ruby-puma
8385 (package
8386 (name "ruby-puma")
63755fcd 8387 (version "3.9.1")
9270298f
BW
8388 (source
8389 (origin
a6cffe6e 8390 (method git-fetch)
9270298f 8391 ;; Fetch from GitHub because distributed gem does not contain tests.
a6cffe6e
EF
8392 (uri (git-reference
8393 (url "https://github.com/puma/puma")
8394 (commit (string-append "v" version))))
8395 (file-name (git-file-name name version))
9270298f
BW
8396 (sha256
8397 (base32
a6cffe6e 8398 "1kj75k81iik3aj73pkc9ixj9rwf95ipkyma65n28m64dgw02qi1f"))))
9270298f
BW
8399 (build-system ruby-build-system)
8400 (arguments
63755fcd
BW
8401 `(#:tests? #f ; Tests require an out-dated version of minitest.
8402 #:phases
9270298f
BW
8403 (modify-phases %standard-phases
8404 (add-before 'build 'fix-gemspec
8405 (lambda _
8406 (substitute* "puma.gemspec"
8407 (("git ls-files") "find * |sort"))
8408 #t)))))
9270298f
BW
8409 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
8410 (description
8411 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
8412for Ruby/Rack applications. Puma is intended for use in both development and
8413production environments. In order to get the best throughput, it is highly
8414recommended that you use a Ruby implementation with real threads like Rubinius
8415or JRuby.")
a6cffe6e 8416 (home-page "https://puma.io/")
9270298f
BW
8417 (license license:expat)))
8418
b0813490
BW
8419(define-public ruby-hoe-git
8420 (package
8421 (name "ruby-hoe-git")
8422 (version "1.6.0")
8423 (source
8424 (origin
8425 (method url-fetch)
8426 (uri (rubygems-uri "hoe-git" version))
8427 (sha256
8428 (base32
8429 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
8430 (build-system ruby-build-system)
8431 (propagated-inputs
8432 `(("ruby-hoe" ,ruby-hoe)
8433 ("git" ,git)))
8434 (synopsis "Hoe plugins for tighter Git integration")
8435 (description
8436 "This package provides a set of Hoe plugins for tighter Git integration.
8437It provides tasks to automate release tagging and pushing and changelog
8438generation.")
7bf837fd 8439 (home-page "https://github.com/jbarnette/hoe-git")
b0813490
BW
8440 (license license:expat)))
8441
cbdd428c
BW
8442(define-public ruby-sequel
8443 (package
8444 (name "ruby-sequel")
65a7f09c 8445 (version "4.49.0")
cbdd428c
BW
8446 (source
8447 (origin
8448 (method url-fetch)
8449 (uri (rubygems-uri "sequel" version))
8450 (sha256
8451 (base32
65a7f09c 8452 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
cbdd428c
BW
8453 (build-system ruby-build-system)
8454 (arguments
8455 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
8456 (synopsis "Database toolkit for Ruby")
8457 (description "Sequel provides thread safety, connection pooling and a
8458concise DSL for constructing SQL queries and table schemas. It includes a
8459comprehensive ORM layer for mapping records to Ruby objects and handling
8460associated records.")
e2b70d90 8461 (home-page "https://sequel.jeremyevans.net")
cbdd428c 8462 (license license:expat)))
3cc78097
BW
8463
8464(define-public ruby-timecop
8465 (package
8466 (name "ruby-timecop")
3d4a5eb5 8467 (version "0.9.1")
3cc78097
BW
8468 (source
8469 (origin
8470 (method url-fetch)
8471 (uri (rubygems-uri "timecop" version))
8472 (sha256
8473 (base32
3d4a5eb5 8474 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
3cc78097
BW
8475 (build-system ruby-build-system)
8476 (arguments
8477 `(#:phases
8478 (modify-phases %standard-phases
8479 (add-before 'check 'set-check-rubylib
8480 (lambda _
8481 ;; Set RUBYLIB so timecop tests finds its own lib.
8482 (setenv "RUBYLIB" "lib")
8483 #t)))))
8484 (native-inputs
8485 `(("bundler" ,bundler)
8486 ("ruby-minitest-rg" ,ruby-minitest-rg)
8487 ("ruby-mocha" ,ruby-mocha)
8488 ("ruby-activesupport" ,ruby-activesupport)))
66e07664 8489 (synopsis "Test mocks for time-dependent functions")
3cc78097
BW
8490 (description
8491 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
8492making it easier to test time-dependent code. It provides a unified method to
8493mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
8494call.")
8495 (home-page "https://github.com/travisjeffery/timecop")
8496 (license license:expat)))
8497
dae620b8
BW
8498(define-public ruby-concurrent
8499 (package
8500 (name "ruby-concurrent")
1007640a 8501 (version "1.1.5")
dae620b8
BW
8502 (source
8503 (origin
8fcba3be 8504 (method git-fetch)
dae620b8
BW
8505 ;; Download from GitHub because the rubygems version does not contain
8506 ;; Rakefile.
8fcba3be
MB
8507 (uri (git-reference
8508 (url "https://github.com/ruby-concurrency/concurrent-ruby")
8509 (commit (string-append "v" version))))
8510 (file-name (git-file-name name version))
dae620b8
BW
8511 (sha256
8512 (base32
1007640a 8513 "193q2k47vk7qdvv9hlhmmdxgy91xl4imapyk1ijdg9vgf46knyzj"))))
dae620b8
BW
8514 (build-system ruby-build-system)
8515 (arguments
1007640a 8516 `(#:test-target "ci"
dae620b8
BW
8517 #:phases
8518 (modify-phases %standard-phases
520e89eb 8519 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
dae620b8
BW
8520 (lambda _
8521 ;; Delete extra gemspec files so 'first-gemspec' chooses the
8522 ;; correct one.
8523 (delete-file "concurrent-ruby-edge.gemspec")
8524 (delete-file "concurrent-ruby-ext.gemspec")
8525 #t))
1007640a 8526 (replace 'replace-git-ls-files
520e89eb 8527 (lambda _
1007640a
MB
8528 ;; XXX: The default substitution made by this phase is not fully
8529 ;; compatible with "git ls-files". The latter produces file names
8530 ;; such as "lib/foo", whereas ruby-build-system uses "find . [...]"
8531 ;; which gives "./lib/foo". That difference in turn breaks the
8532 ;; comparison against a glob pattern in this script.
8533 (substitute* "concurrent-ruby.gemspec"
8534 (("git ls-files") "find * -type f | sort"))
8535 #t))
8536 (add-before 'build 'remove-jar-from-gemspec
520e89eb 8537 (lambda _
1007640a
MB
8538 ;; The gemspec wants to include a JAR file that we do not build
8539 ;; nor need.
8540 (substitute* "concurrent-ruby.gemspec"
8541 (("'lib/concurrent/concurrent_ruby.jar'")
8542 ""))
8543 #t))
8544 (add-before 'build 'remove-rake_compiler_dock-dependency
8545 (lambda _
8546 ;; This library is only used when building for non-MRI targets.
8547 (substitute* "Rakefile"
8548 (("require 'rake_compiler_dock'")
8549 ""))
520e89eb 8550 #t))
9019b37f
BW
8551 (add-before 'check 'remove-timecop-dependency
8552 ;; Remove timecop-dependent tests as having timecop as a depedency
8553 ;; causes circular depedencies.
8554 (lambda _
8555 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
8556 (delete-file "spec/concurrent/scheduled_task_spec.rb")
8557 #t)))))
dae620b8
BW
8558 (native-inputs
8559 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9019b37f 8560 ("ruby-rspec" ,ruby-rspec)))
dae620b8
BW
8561 (synopsis "Concurrency tools for Ruby")
8562 (description
8563 "This library provides modern concurrency tools including agents,
8564futures, promises, thread pools, actors, supervisors, and more. It is
8565inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
8566patterns.")
8567 (home-page "http://www.concurrent-ruby.com")
8568 (license license:expat)))
2de61e34
BW
8569
8570(define-public ruby-pkg-config
8571 (package
8572 (name "ruby-pkg-config")
884a80dd 8573 (version "1.2.5")
2de61e34
BW
8574 (source
8575 (origin
8576 (method url-fetch)
8577 (uri (rubygems-uri "pkg-config" version))
8578 (sha256
8579 (base32
884a80dd 8580 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
2de61e34
BW
8581 (build-system ruby-build-system)
8582 (arguments
8583 ;; Tests require extra files not included in the gem.
8584 `(#:tests? #f))
8585 (synopsis "Detect libraries for compiling Ruby native extensions")
8586 (description
8587 "@code{pkg-config} can be used in your extconf.rb to properly detect need
8588libraries for compiling Ruby native extensions.")
8589 (home-page "https://github.com/ruby-gnome2/pkg-config")
8590 (license license:lgpl2.0+)))
6689c636
MFM
8591
8592(define-public ruby-net-http-digest-auth
8593 (package
8594 (name "ruby-net-http-digest-auth")
ba074a85 8595 (version "1.4.1")
6689c636
MFM
8596 (source
8597 (origin
8598 (method url-fetch)
8599 (uri (rubygems-uri "net-http-digest_auth" version))
8600 (sha256
8601 (base32
ba074a85 8602 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
6689c636
MFM
8603 (build-system ruby-build-system)
8604 (native-inputs
8605 `(("ruby-hoe" ,ruby-hoe)))
8606 (synopsis "RFC 2617 HTTP digest authentication library")
8607 (description
8608 "This library implements HTTP's digest authentication scheme based on
8609RFC 2617. This enables the use of the digest authentication scheme instead
8610of the more insecure basic authentication scheme.")
7bf837fd 8611 (home-page "https://github.com/drbrain/net-http-digest_auth")
6689c636 8612 (license license:expat)))
06116573 8613
8614(define-public ruby-mail
8615 (package
8616 (name "ruby-mail")
04de0cb5 8617 (version "2.6.6")
06116573 8618 (source
8619 (origin
8620 (method url-fetch)
8621 (uri (rubygems-uri "mail" version))
8622 (sha256
8623 (base32
04de0cb5 8624 "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
06116573 8625 (build-system ruby-build-system)
8626 (propagated-inputs
8627 `(("ruby-mime-types" ,ruby-mime-types)))
8628 (arguments
8629 ;; Tests require extra gems not included in the Gemfile.
8630 ;; XXX: Try enabling this for the next version with mini_mime.
8631 `(#:tests? #f))
8632 (synopsis "Mail library for Ruby")
8633 (description
8634 "Mail is an internet library for Ruby that is designed to handle email
8635generation, parsing and sending. The purpose of this library is to provide
8636a single point of access to handle all email functions, including sending
8637and receiving emails. All network type actions are done through proxy
8638methods to @code{Net::SMTP}, @code{Net::POP3} etc.
8639
8640Mail has been designed with a very simple object oriented system that
8641really opens up the email messages you are parsing, if you know what you
8642are doing, you can fiddle with every last bit of your email directly.")
8643 (home-page "https://github.com/mikel/mail")
8644 (license license:expat)))
9b4c8e1b 8645
4d372cb9
CB
8646(define-public ruby-mathn
8647 (package
8648 (name "ruby-mathn")
8649 (version "0.1.0")
8650 (source
8651 (origin
8652 (method url-fetch)
8653 (uri (rubygems-uri "mathn" version))
8654 (sha256
8655 (base32
8656 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
8657 (build-system ruby-build-system)
8658 (native-inputs
8659 `(("bundler" ,bundler)
8660 ("ruby-rake-compiler" ,ruby-rake-compiler)))
8661 (synopsis "Extends math operations for increased precision")
8662 (description
8663 "This gem makes mathematical operations more precise in Ruby and
8664integrates other mathematical standard libraries. Prior to Ruby 2.5,
8665@code{mathn} was part of the Ruby standard library.")
8666 (home-page "https://github.com/ruby/mathn")
8667 (license license:bsd-2)))
8668
9b4c8e1b
BW
8669(define-public ruby-code-statistics
8670 (package
8671 (name "ruby-code-statistics")
8672 (version "0.2.13")
8673 (source
8674 (origin
8675 (method url-fetch)
8676 (uri (rubygems-uri "code_statistics" version))
8677 (sha256
8678 (base32
8679 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
8680 (build-system ruby-build-system)
8681 (arguments
8682 `(#:tests? #f)) ; Not all test code is included in gem.
8683 (synopsis "Port of the rails 'rake stats' method")
8684 (description
8685 "This gem is a port of the rails 'rake stats' method so it can be made
8686more robust and work for non rails projects.")
8687 (home-page "http://github.com/danmayer/code_statistics")
8688 (license license:expat)))
f90c25c1
CL
8689
8690(define-public ruby-rubypants
8691 (package
8692 (name "ruby-rubypants")
8693 (version "0.6.0")
8694 (source (origin
8695 (method url-fetch)
8696 (uri (rubygems-uri "rubypants" version))
8697 (sha256
8698 (base32
8699 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
8700 (build-system ruby-build-system)
8701 (arguments
8702 '(#:tests? #f)) ; need Codecov
8703 (synopsis "Port of the smart-quotes library SmartyPants")
8704 (description
8705 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
8706original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
8707and BBEdit that easily translates plain ASCII punctuation characters into
8708smart typographic punctuation HTML entities.")
8709 (home-page "https://github.com/jmcnevin/rubypants")
8710 (license license:bsd-2)))
beb34835
CL
8711
8712(define-public ruby-org-ruby
8713 (package
8714 (name "ruby-org-ruby")
8715 (version "0.9.12")
8716 (source (origin
8717 (method url-fetch)
8718 (uri (rubygems-uri "org-ruby" version))
8719 (sha256
8720 (base32
8721 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
8722 (build-system ruby-build-system)
8723 (arguments
8724 '(#:tests? #f)) ; no rakefile
8725 (propagated-inputs
8726 `(("ruby-rubypants" ,ruby-rubypants)))
8727 (synopsis "Org-mode parser written in Ruby")
8728 (description
8729 "Org-ruby is an org-mode parser written in Ruby. The most significant
8730thing this library does today is convert org-mode files to HTML or Textile or
8731Markdown.")
8732 (home-page "https://github.com/wallyqs/org-ruby")
8733 (license license:expat)))
670ee20a
BW
8734
8735(define-public ruby-rake
8736 (package
8737 (name "ruby-rake")
c997403a 8738 (version "13.0.1")
670ee20a
BW
8739 (source
8740 (origin
8741 (method url-fetch)
8742 (uri (rubygems-uri "rake" version))
8743 (sha256
8744 (base32
c997403a 8745 "0w6qza25bq1s825faaglkx1k6d59aiyjjk3yw3ip5sb463mhhai9"))))
670ee20a
BW
8746 (build-system ruby-build-system)
8747 (native-inputs
8748 `(("bundler" ,bundler)))
8749 (synopsis "Rake is a Make-like program implemented in Ruby")
8750 (description
8751 "Rake is a Make-like program where tasks and dependencies are specified
8752in standard Ruby syntax.")
8753 (home-page "https://github.com/ruby/rake")
8754 (license license:expat)))
45498f51 8755
51420124 8756(define-public ruby-childprocess
45498f51
DM
8757 (package
8758 (name "ruby-childprocess")
459e4a1a 8759 (version "3.0.0")
45498f51
DM
8760 (source
8761 (origin
8762 (method url-fetch)
8763 (uri (rubygems-uri "childprocess" version))
8764 (sha256
8765 (base32
459e4a1a 8766 "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5"))))
45498f51
DM
8767 (build-system ruby-build-system)
8768 (arguments
8769 `(#:tests? #f))
8770 (native-inputs
8771 `(("bundler" ,bundler)
8772 ("ruby-rspec" ,ruby-rspec)))
8773 (propagated-inputs
8774 `(("ruby-ffi" ,ruby-ffi)))
8775 (synopsis "Control external programs running in the background, in Ruby")
8776 (description "@code{childprocess} provides a gem to control external
8777programs running in the background, in Ruby.")
459e4a1a 8778 (home-page "https://github.com/enkessler/childprocess")
45498f51 8779 (license license:expat)))
1f10e28d 8780
0d16905b
JL
8781(define-public ruby-public-suffix
8782 (package
8783 (name "ruby-public-suffix")
9de12df7 8784 (version "4.0.1")
0d16905b
JL
8785 (source (origin
8786 (method url-fetch)
8787 (uri (rubygems-uri "public_suffix" version))
8788 (sha256
8789 (base32
9de12df7 8790 "0xnfv2j2bqgdpg2yq9i2rxby0w2sc9h5iyjkpaas2xknwrgmhdb0"))))
0d16905b
JL
8791 (build-system ruby-build-system)
8792 (arguments
1f4fc125
CB
8793 '(#:phases
8794 (modify-phases %standard-phases
8795 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
8796 ;; including it as an input can lead to circular dependencies.
8797 (add-after 'unpack 'remove-rubocop-from-Rakefile
8798 (lambda _
8799 (substitute* "Rakefile"
8800 (("require \"rubocop/rake\\_task\"") "")
8801 (("RuboCop::RakeTask\\.new") ""))
8802 #t)))))
8803 (native-inputs
8804 `(("bundler" ,bundler)
8805 ("ruby-yard" ,ruby-yard)
8806 ("ruby-mocha" ,ruby-mocha)
8807 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
0d16905b
JL
8808 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
8809 (synopsis "Domain name parser")
8810 (description "The gem @code{public_suffix} is a domain name parser,
8811written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
8812is one under which Internet users can (or historically could) directly
8813register names. Some examples of public suffixes are @code{.com},
8814@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
8815all known public suffixes.")
8816 (license license:expat)))
6f2c4efb
JL
8817
8818(define-public ruby-addressable
8819 (package
8820 (name "ruby-addressable")
91f7ee87 8821 (version "2.7.0")
6f2c4efb
JL
8822 (source (origin
8823 (method url-fetch)
8824 (uri (rubygems-uri "addressable" version))
8825 (sha256
8826 (base32
91f7ee87 8827 "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy"))))
6f2c4efb 8828 (build-system ruby-build-system)
0a794b30
CB
8829 (arguments
8830 '(#:test-target "spec"
8831 #:phases
8832 (modify-phases %standard-phases
8833 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
8834 (lambda _
8835 (substitute* "Gemfile"
8836 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
8837 ((".*launchy.*") "")
8838 ((".*rake.*") "gem 'rake'\n")
8839 ((".*redcarpet.*") ""))
8840 #t))
8841 (add-before 'check 'delete-network-dependent-test
8842 (lambda _
8843 (delete-file "spec/addressable/net_http_compat_spec.rb")
8844 #t)))))
8845 (native-inputs
8846 `(("ruby-rspec" ,ruby-rspec)
8847 ("bundler" ,bundler)
8848 ("ruby-idn-ruby" ,ruby-idn-ruby)
8849 ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
d7bd7016 8850 ("ruby-rspec-its", ruby-rspec-its-minimal)
0a794b30
CB
8851 ("ruby-yard" ,ruby-yard)
8852 ("ruby-simplecov" ,ruby-simplecov)))
6f2c4efb
JL
8853 (propagated-inputs
8854 `(("ruby-public-suffix" ,ruby-public-suffix)))
6f2c4efb
JL
8855 (home-page "https://github.com/sporkmonger/addressable")
8856 (synopsis "Alternative URI implementation")
8857 (description "Addressable is a replacement for the URI implementation that
8858is part of Ruby's standard library. It more closely conforms to RFC 3986,
8859RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
8860 (license license:asl2.0)))
9c7f15c0 8861
305e9b33
MB
8862(define-public ruby-colorize
8863 (package
8864 (name "ruby-colorize")
8865 (version "0.8.1")
8866 (source (origin
8867 (method url-fetch)
8868 (uri (rubygems-uri "colorize" version))
8869 (sha256
8870 (base32
8871 "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b"))))
8872 (build-system ruby-build-system)
8873 (arguments
8874 '(#:phases (modify-phases %standard-phases
8875 (add-before 'check 'remove-codeclimate-dependency
8876 (lambda _
8877 (substitute* "test/test_colorize.rb"
8878 ;; Do not hook the tests into the online CodeClimate
8879 ;; service which is unnecessary for these tests.
8880 (("require 'codeclimate-test-reporter'")
8881 "")
8882 (("CodeClimate.*") ""))
8883 #t)))))
8884 (synopsis "Add color effects to the @code{String} class")
8885 (description
8886 "This package extends the @code{String} class and adds a
8887@code{ColorizedString} with methods to set text color, background color,
8888and text effects.")
8889 (home-page "http://github.com/fazibear/colorize")
8890 (license license:gpl2+)))
8891
9c7f15c0
JL
8892(define-public ruby-colorator
8893 (package
8894 (name "ruby-colorator")
8895 (version "1.1.0")
8896 (source (origin
8897 (method url-fetch)
8898 (uri (rubygems-uri "colorator" version))
8899 (sha256
8900 (base32
8901 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
8902 (build-system ruby-build-system)
8903 (arguments
8904 ;; No test target
8905 `(#:tests? #f))
8906 (home-page "http://octopress.org/colorator/")
8907 (synopsis "Terminal color library")
8908 (description "Colorator is a Ruby gem that helps you colorize your text
8909for the terminal.")
8910 (license license:expat)))
78b9c291
JL
8911
8912(define-public ruby-command-line-reporter
8913 (package
8914 (name "ruby-command-line-reporter")
b448e408 8915 (version "4.0.1")
78b9c291
JL
8916 (source (origin
8917 (method url-fetch)
8918 (uri (rubygems-uri "command_line_reporter" version))
8919 (sha256
8920 (base32
b448e408 8921 "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll"))))
78b9c291
JL
8922 (build-system ruby-build-system)
8923 (arguments
8924 ;; No Rakefile
8925 `(#:tests? #f
8926 #:phases
8927 (modify-phases %standard-phases
8928 (add-before 'build 'fix-dependencies
8929 (lambda _
8930 (substitute* ".gemspec"
8931 ;; colored is unmaintained
8932 (("colored") "colorator")
8933 ;; colorator version
8934 (("= 1.2") "= 1.1"))
8935 #t)))))
8936 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
8937 (home-page "https://github.com/wbailey/command_line_reporter")
8938 (synopsis "Report production while executing Ruby scripts")
8939 (description "This gem provides a DSL that makes it easy to write reports
8940of various types in ruby. It eliminates the need to litter your source with
8941puts statements, instead providing a more readable, expressive interface to
8942your application.")
8943 (license license:asl2.0)))
f22c0387
JL
8944
8945(define-public ruby-command-line-reporter-3
8946 (package
8947 (inherit ruby-command-line-reporter)
8948 (version "3.3.6")
8949 (source (origin
8950 (method url-fetch)
8951 (uri (rubygems-uri "command_line_reporter" version))
8952 (sha256
8953 (base32
8954 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
6bba8ecf 8955
439d47cd
MC
8956(define-public ruby-kpeg
8957 (package
8958 (name "ruby-kpeg")
8959 (version "1.1.0")
8960 (source
8961 (origin
8962 (method url-fetch)
8963 (uri (rubygems-uri "kpeg" version))
8964 (sha256
8965 (base32
8966 "0x2kpfrcagj931masm5y1kwbnc6nxl60cqdcd3lyd1d2hz7kzlia"))))
8967 (build-system ruby-build-system)
8968 (native-inputs
8969 `(("ruby-hoe" ,ruby-hoe)))
8970 (synopsis "PEG library for Ruby")
8971 (description "KPeg is a simple PEG library for Ruby. It provides an API as
8972well as native grammar to build the grammar. KPeg supports direct left
8973recursion of rules via the
8974@uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization}
8975technique.")
8976 (home-page "https://github.com/evanphx/kpeg")
8977 (license license:expat)))
8978
6bba8ecf
JL
8979(define-public ruby-rdoc
8980 (package
8981 (name "ruby-rdoc")
9304f989 8982 (version "6.2.0")
6bba8ecf 8983 (source
9304f989
MC
8984 (origin
8985 (method git-fetch)
8986 (uri (git-reference
8987 (url "https://github.com/ruby/rdoc.git")
8988 (commit (string-append "v" version))))
8989 (file-name (git-file-name name version))
8990 (sha256
8991 (base32
8992 "0dhk29nidv93b5vnjvlm9gcixgn4i0jcyzrgxdk6pdg019bw4cj6"))))
6bba8ecf 8993 (build-system ruby-build-system)
9304f989
MC
8994 (arguments
8995 `(#:phases
8996 (modify-phases %standard-phases
8997 (add-after 'unpack 'patch-gemspec
8998 ;; TODO: Remove after next release is tagged.
8999 (lambda _
9000 (substitute* "rdoc.gemspec"
9001 (("\"lib/rdoc/generator/template/darkfish/js/\
9002jquery\\.js\", ") ""))
9003 #t))
9004 (add-before 'build 'generate
9005 ;; 'gem build' doesn't honor Rakefile dependencies (see:
9006 ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977).
9007 (lambda _
9008 (invoke "rake" "generate"))))))
6bba8ecf 9009 (native-inputs
9304f989
MC
9010 `(("bundler" ,bundler)
9011 ("ruby-kpeg" ,ruby-kpeg)
9012 ("ruby-racc" ,ruby-racc)
9013 ("ruby-rubocop" ,ruby-rubocop)))
6bba8ecf
JL
9014 (home-page "https://ruby.github.io/rdoc/")
9015 (synopsis "HTML and command-line documentation utility")
9016 (description "RDoc produces HTML and command-line documentation for Ruby
9017projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
9018documentation from the command-line.")
9019 (license license:gpl2+)))
18077ffc
JL
9020
9021(define-public ruby-sass-listen
9022 (package
9023 (name "ruby-sass-listen")
9024 (version "4.0.0")
9025 (source (origin
9026 (method url-fetch)
9027 (uri (rubygems-uri "sass-listen" version))
9028 (sha256
9029 (base32
9030 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
9031 (build-system ruby-build-system)
9032 (arguments
9033 ;; No test target
9034 `(#:tests? #f))
9035 (propagated-inputs
9036 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
9037 ("ruby-rb-inotify" ,ruby-rb-inotify)))
9038 (home-page "https://github.com/sass/listen")
9039 (synopsis "File modification notification library")
9040 (description "The Listen gem listens to file modifications and notifies you
9041about the changes.")
9042 (license license:expat)))
0c8eedc1
JL
9043
9044(define-public ruby-terminfo
9045 (package
9046 (name "ruby-terminfo")
9047 (version "0.1.1")
9048 (source
9049 (origin
9050 (method url-fetch)
9051 (uri (rubygems-uri "ruby-terminfo" version))
9052 (sha256
9053 (base32
9054 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
9055 (build-system ruby-build-system)
9056 (arguments
9057 `(#:test-target "test"
9058 ;; Rakefile requires old packages and would need modification to
9059 ;; work with current software.
9060 #:tests? #f))
9061 (inputs
9062 `(("ncurses" ,ncurses)))
9063 (native-inputs
9064 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
9065 ("ruby-rdoc" ,ruby-rdoc)))
9066 (home-page "http://www.a-k-r.org/ruby-terminfo/")
9067 (synopsis "Terminfo binding for Ruby")
9068 (description "Ruby-terminfo provides terminfo binding for Ruby.")
9069 (license license:bsd-3)))
ddc3a667
JL
9070
9071(define-public ruby-diffy
9072 (package
9073 (name "ruby-diffy")
9074 (version "3.2.1")
9075 (source
9076 (origin
9077 (method url-fetch)
9078 (uri (rubygems-uri "diffy" version))
9079 (sha256
9080 (base32
9081 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
9082 (build-system ruby-build-system)
9083 (arguments
9084 ;; No tests
9085 `(#:tests? #f))
9086 (native-inputs
9087 `(("ruby-rspec" ,ruby-rspec)))
9088 (home-page "https://github.com/samg/diffy")
9089 (synopsis "Convenient diffing in ruby")
9090 (description "Diffy provides a convenient way to generate a diff from two
9091strings or files.")
9092 (license license:expat)))
6456beef
JL
9093
9094(define-public ruby-sass-spec
9095 (package
9096 (name "ruby-sass-spec")
9097 (version "3.5.4")
11df8321
TGR
9098 (source
9099 (origin
9100 (method git-fetch)
9101 (uri (git-reference
9102 (url "https://github.com/sass/sass-spec.git")
9103 (commit (string-append "v" version))))
9104 (file-name (git-file-name name version))
9105 (sha256
9106 (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
6456beef
JL
9107 (build-system ruby-build-system)
9108 (propagated-inputs
9109 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
9110 ("ruby-diffy" ,ruby-diffy)
9111 ("ruby-terminfo" ,ruby-terminfo)))
9112 (arguments
2c7cb711
CB
9113 `(;; This package contains tests for a sass implementation, and the to
9114 ;; avoid any circular dependencies, the tests are not run here
9115 #:tests? #f
9116 #:phases
9117 (modify-phases %standard-phases
9118 (add-after 'unpack 'patch-test
9119 (lambda _
9120 (delete-file "spec/values/colors/alpha_hex-3.5/error")
9121 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
9122 (("string") "color")))))))
6456beef
JL
9123 (home-page "https://github.com/sass/sass-spec")
9124 (synopsis "Test suite for Sass")
9125 (description "Sass Spec is a test suite for Sass. Test cases are all in
9126the @file{spec} directory.")
9127 (license license:expat)))
f00f4492
JL
9128
9129(define-public ruby-sass
9130 (package
9131 (name "ruby-sass")
11ff2adc 9132 (version "3.6.0")
f00f4492
JL
9133 (source (origin
9134 (method url-fetch)
9135 (uri (rubygems-uri "sass" version))
9136 (sha256
9137 (base32
11ff2adc 9138 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
f00f4492
JL
9139 (build-system ruby-build-system)
9140 (propagated-inputs
9141 `(("ruby-sass-listen" ,ruby-sass-listen)))
9142 (native-inputs
11ff2adc
CB
9143 `(("ruby-sass-spec" ,ruby-sass-spec)
9144 ("ruby-mathn" ,ruby-mathn)))
3497086b 9145 (home-page "https://sass-lang.com/")
f00f4492
JL
9146 (synopsis "CSS extension language")
9147 (description "Sass is a CSS extension language. It extends CSS with
9148features that don't exist yet like variables, nesting, mixins and inheritance.")
9149 (license license:expat)))
5e242cb4 9150
9efc888d
CB
9151(define-public ruby-sassc
9152 (package
9153 (name "ruby-sassc")
3e776b44 9154 (version "2.2.1")
9efc888d
CB
9155 (source
9156 (origin
9157 (method url-fetch)
9158 (uri (rubygems-uri "sassc" version))
9159 (sha256
9160 (base32
3e776b44 9161 "09bnid7r5z5hcin5hykvpvv8xig27wbbckxwis60z2aaxq4j9siz"))))
9efc888d
CB
9162 (build-system ruby-build-system)
9163 (arguments
3e776b44
CB
9164 '(#:modules ((guix build ruby-build-system)
9165 (guix build utils)
9166 (ice-9 textual-ports))
9167 #:phases
9efc888d
CB
9168 (modify-phases %standard-phases
9169 ;; TODO: This would be better as a snippet, but the ruby-build-system
9170 ;; doesn't seem to support that
9171 (add-after 'unpack 'remove-libsass
9172 (lambda _
9173 (delete-file-recursively "ext")
3e776b44
CB
9174 (with-atomic-file-replacement "sassc.gemspec"
9175 (lambda (in out)
9176 (let* ((gemspec (get-string-all in))
9177 (index (string-contains gemspec "libsass_dir")))
9178 (display (string-append
9179 (string-take gemspec index)
9180 "\nend\n")
9181 out))))
9efc888d
CB
9182 #t))
9183 (add-after 'unpack 'dont-check-the-libsass-version
9184 (lambda _
9185 (substitute* "test/native_test.rb"
9186 (("assert_equal.*Native\\.version") ""))
9187 #t))
9188 (add-after 'unpack 'remove-git-from-gemspec
9189 (lambda _
9190 (substitute* "sassc.gemspec"
3e776b44 9191 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))
9efc888d
CB
9192 #t))
9193 (add-after 'unpack 'remove-extensions-from-gemspec
9194 (lambda _
9195 (substitute* "sassc.gemspec"
3e776b44 9196 (("\\[\"ext/extconf.rb\"\\]") "[]"))
9efc888d
CB
9197 #t))
9198 (add-after 'unpack 'fix-Rakefile
9199 (lambda _
9200 (substitute* "Rakefile"
3e776b44 9201 (("test: 'compile:libsass'") ":test"))
9efc888d
CB
9202 #t))
9203 (add-after 'unpack 'remove-unnecessary-dependencies
9204 (lambda _
9205 (substitute* "test/test_helper.rb"
9206 (("require \"pry\"") ""))
9207 #t))
9208 (add-before 'build 'patch-native.rb
9209 (lambda* (#:key inputs #:allow-other-keys)
9210 (substitute* "lib/sassc/native.rb"
9211 ((".*gem_root = spec.gem_dir") "")
9212 (("ffi_lib .*\n")
9213 (string-append
9214 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))
9215 #t))
9216 ;; The gemspec still references the libsass files, so just keep the
9217 ;; one in the gem.
9218 (delete 'extract-gemspec))))
9219 (propagated-inputs
9220 `(("ruby-ffi" ,ruby-ffi)
9221 ("ruby-rake" ,ruby-rake)))
9222 (inputs
9223 `(("libsass" ,libsass)))
9224 (native-inputs
9225 `(("bundler" ,bundler)
3e776b44 9226 ("ruby-rake-compiler" ,ruby-rake-compiler)
9efc888d
CB
9227 ("ruby-minitest-around" ,ruby-minitest-around)
9228 ("ruby-test-construct" ,ruby-test-construct)))
9229 (synopsis "Use libsss from Ruby")
9230 (description
9231 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
9232bindings to the libsass library. This enables rendering
9233@acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
9234 (home-page "https://github.com/sass/sassc-ruby")
9235 (license license:expat)))
9236
5e242cb4
JL
9237(define-public ruby-jekyll-sass-converter
9238 (package
9239 (name "ruby-jekyll-sass-converter")
9240 (version "1.5.2")
9241 (source (origin
9242 (method url-fetch)
9243 (uri (rubygems-uri "jekyll-sass-converter" version))
9244 (sha256
9245 (base32
9246 "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk"))))
9247 (build-system ruby-build-system)
9248 (propagated-inputs
9249 `(("ruby-sass" ,ruby-sass)))
9250 (arguments
9251 ;; No rakefile
9252 `(#:tests? #f))
9253 (home-page "https://github.com/jekyll/jekyll-sass-converter")
9254 (synopsis "Sass converter for Jekyll")
9255 (description "This gem provide built-in support for the Sass converter
9256in Jekyll.")
9257 (license license:expat)))
ceac6f6f
JL
9258
9259(define-public ruby-jekyll-watch
9260 (package
9261 (name "ruby-jekyll-watch")
6cbba8a3 9262 (version "2.1.2")
ceac6f6f
JL
9263 (source (origin
9264 (method url-fetch)
9265 (uri (rubygems-uri "jekyll-watch" version))
9266 (sha256
9267 (base32
6cbba8a3 9268 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
ceac6f6f
JL
9269 (build-system ruby-build-system)
9270 (propagated-inputs
6cbba8a3 9271 `(("ruby-listen" ,ruby-listen)))
ceac6f6f
JL
9272 (arguments
9273 ;; No rakefile
9274 `(#:tests? #f))
9275 (home-page "https://github.com/jekyll/jekyll-watch")
9276 (synopsis "Jekyll auto-rebuild support")
9277 (description "This gems add the @code{--watch} switch to the jekyll CLI
9278interface. It allows Jekyll to rebuild your site when a file changes.")
9279 (license license:expat)))
3224a5a8
JL
9280
9281(define-public ruby-parallel
9282 (package
9283 (name "ruby-parallel")
c41fba01
CB
9284 (version "1.13.0")
9285 (source
9286 (origin
9287 (method git-fetch)
9288 (uri (git-reference
9289 (url "https://github.com/grosser/parallel.git")
9290 (commit (string-append "v" version))))
9291 (file-name (git-file-name name version))
9292 (sha256
9293 (base32
9294 "1isqzbqxz2ndad4i5z3lb9ldrhaijfncj8bmffv04sq44sv87ikv"))))
3224a5a8 9295 (build-system ruby-build-system)
c41fba01
CB
9296 (arguments
9297 `(;; TODO 3 test failures
9298 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
9299 ;; open unnecessary pipes
9300 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
9301 ;; SQLite in processes
9302 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
9303 ;; SQLite in threads
9304 #:tests? #f
9305 #:test-target "rspec-rerun:spec"
9306 #:phases
9307 (modify-phases %standard-phases
9308 (add-after 'unpack 'patch-Gemfile
9309 (lambda _
9310 (substitute* "Gemfile"
9311 (("gem 'rspec-legacy_formatters'") "")
9312 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
9313 (add-before 'check 'delete-Gemfile.lock
9314 (lambda _
9315 ;; Bundler isn't being used for fetching dependendencies, so
9316 ;; delete the Gemfile.lock
9317 (delete-file "Gemfile.lock")
9318 #t))
9319 (add-before 'build 'patch-gemspec
9320 (lambda _
9321 (substitute* "parallel.gemspec"
9322 (("git ls-files") "find"))
9323 #t)))))
9324 (native-inputs
9325 `(("ruby-rspec" ,ruby-rspec)
9326 ("ruby-rspec-rerun" ,ruby-rspec-rerun)
9327 ("bundler" ,bundler)
9328 ("ruby-activerecord" ,ruby-activerecord)
9329 ("ruby-progressbar" ,ruby-progressbar)
9330 ("ruby-bump" ,ruby-bump)
9331 ("procps" ,procps)
9332 ("lsof" ,lsof)
9333 ("ruby-mysql2" ,ruby-mysql2)
9334 ("ruby-sqlite3" ,ruby-sqlite3)
9335 ("ruby-i18n" ,ruby-i18n)))
3224a5a8
JL
9336 (home-page "https://github.com/grosser/parallel")
9337 (synopsis "Parallel processing in Ruby")
9338 (description "Parallel allows you to run any code in parallel Processes
9339(to use all CPUs) or Threads(to speedup blocking operations). It is best
9340suited for map-reduce or e.g. parallel downloads/uploads.")
9341 (license license:expat)))
83d9f672
JL
9342
9343(define-public ruby-cane
9344 (package
9345 (name "ruby-cane")
9346 (version "3.0.0")
9347 (source (origin
9348 (method url-fetch)
9349 (uri (rubygems-uri "cane" version))
9350 (sha256
9351 (base32
9352 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
9353 (build-system ruby-build-system)
9354 (arguments `(#:tests? #f)); No rakefile
9355 (home-page "https://github.com/square/cane")
9356 (propagated-inputs
9357 `(("ruby-parallel" ,ruby-parallel)))
9358 (synopsis "Code quality threshold checking")
9359 (description "Cane fails your build if code quality thresholds are not met.")
9360 (license license:asl2.0)))
00d71efc
JL
9361
9362(define-public ruby-morecane
9363 (package
9364 (name "ruby-morecane")
9365 (version "0.2.0")
9366 (source (origin
9367 (method url-fetch)
9368 (uri (rubygems-uri "morecane" version))
9369 (sha256
9370 (base32
9371 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
9372 (build-system ruby-build-system)
9373 (home-page "https://github.com/yob/morecane")
9374 (arguments `(#:tests? #f)); No rakefile
9375 (propagated-inputs
9376 `(("ruby-parallel" ,ruby-parallel)))
9377 (synopsis "Extra checks for cane")
9378 (description "The cane gem provides a great framework for running quality
9379checks over your ruby project as part of continuous integration build. It
9380comes with a few checks out of the box, but also provides an API for loading
9381custom checks. This gem provides a set of additional checks.")
9382 (license license:expat)))
abbe629c
JL
9383
9384(define-public ruby-pdf-reader
9385 (package
9386 (name "ruby-pdf-reader")
9387 (version "2.1.0")
9388 (source (origin
9389 (method url-fetch)
9390 (uri (rubygems-uri "pdf-reader" version))
9391 (sha256
9392 (base32
9393 "1b3ig4wpcgdbqa7yw0ahwbmikkkywn2a22bfmrknl5ls7g066x45"))))
9394 (build-system ruby-build-system)
9395 (arguments `(#:test-target "spec"))
9396 (native-inputs
9397 `(("bundler" ,bundler)
9398 ("ruby-rspec" ,ruby-rspec)
9399 ("ruby-cane" ,ruby-cane)
9400 ("ruby-morecane" ,ruby-morecane)))
9401 (propagated-inputs
9402 `(("ruby-afm" ,ruby-afm)
9403 ("ruby-ascii85" ,ruby-ascii85)
9404 ("ruby-hashery" ,ruby-hashery)
9405 ("ruby-rc4" ,ruby-rc4)
9406 ("ruby-ttfunk" ,ruby-ttfunk)))
9407 (home-page "https://github.com/yob/pdf-reader")
9408 (synopsis "PDF parser in Ruby")
9409 (description "The PDF::Reader library implements a PDF parser conforming as
9410much as possible to the PDF specification from Adobe. It provides programmatic
9411access to the contents of a PDF file with a high degree of flexibility.")
9412 (license license:gpl3+)))
461fb859
JL
9413
9414(define-public ruby-pdf-inspector
9415 (package
9416 (name "ruby-pdf-inspector")
9417 (version "1.3.0")
9418 (source (origin
9419 (method url-fetch)
9420 (uri (rubygems-uri "pdf-inspector" version))
9421 (sha256
9422 (base32
9423 "1g853az4xzgqxr5xiwhb76g4sqmjg4s79mm35mp676zjsrwpa47w"))))
9424 (build-system ruby-build-system)
9425 (propagated-inputs
9426 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
9427 (arguments `(#:tests? #f)); No rakefile
9428 (home-page "https://github.com/prawnpdf/pdf-inspector")
9429 (synopsis "Analysis classes for inspecting PDF output")
9430 (description "This library provides a number of PDF::Reader based tools for
9431use in testing PDF output. Presently, the primary purpose of this tool is to
9432support the tests found in Prawn, a pure Ruby PDF generation library.")
9433 (license license:gpl3+)))
770e3b53
JL
9434
9435(define-public ruby-pdf-core
9436 (package
9437 (name "ruby-pdf-core")
9438 (version "0.8.1")
9439 (source (origin
9440 (method url-fetch)
9441 (uri (rubygems-uri "pdf-core" version))
9442 (sha256
9443 (base32
9444 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
9445 (build-system ruby-build-system)
9446 (arguments
9447 ; No test target
9448 `(#:tests? #f))
9449 (home-page "https://github.com/prawnpdf/pdf-core")
9450 (synopsis "Low level PDF features for Prawn")
9451 (description "This is an experimental gem that extracts low-level PDF
9452functionality from Prawn.")
9453 (license license:gpl3+)))
37fbced7 9454
7ad8dd08
JL
9455(define-public ruby-prawn
9456 (package
9457 (name "ruby-prawn")
9458 (version "2.2.2")
9459 (source (origin
9460 (method url-fetch)
9461 (uri (rubygems-uri "prawn" version))
9462 (sha256
9463 (base32
9464 "1qdjf1v6sfl44g3rqxlg8k4jrzkwaxgvh2l4xws97a8f3xv4na4m"))))
9465 (build-system ruby-build-system)
9466 (arguments
9467 ; No tests
9468 `(#:tests? #f
9469 #:phases
9470 (modify-phases %standard-phases
9471 (add-before 'build 'fix-dependencies
9472 (lambda _
9473 (substitute* "prawn.gemspec"
9474 (("~> 0.7.0") "~> 0.7"))
9475 #t)))))
9476 (propagated-inputs
9477 `(("ruby-pdf-core" ,ruby-pdf-core)
9478 ("ruby-ttfunk" ,ruby-ttfunk)))
9479 (native-inputs
9480 `(("bundler" ,bundler)
9481 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
9482 ("ruby-rspec" ,ruby-rspec)
9483 ("ruby-simplecov" ,ruby-simplecov)
9484 ("ruby-yard" ,ruby-yard)))
9485 (home-page "http://prawnpdf.org/api-docs/2.0/")
9486 (synopsis "PDF generation for Ruby")
9487 (description "Prawn is a pure Ruby PDF generation library.")
9488 (license license:gpl3+)))
197ca8ec
JL
9489
9490(define-public ruby-prawn-table
9491 (package
9492 (name "ruby-prawn-table")
9493 (version "0.2.2")
9494 (source (origin
9495 (method url-fetch)
9496 (uri (rubygems-uri "prawn-table" version))
9497 (sha256
9498 (base32
9499 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
9500 (build-system ruby-build-system)
197ca8ec 9501 (propagated-inputs
0927b039
CB
9502 `(("ruby-prawn" ,ruby-prawn)
9503 ("ruby-pdf-inspector" ,ruby-pdf-inspector)))
9504 (native-inputs
9505 `(("bundler" ,bundler)
9506 ("ruby-yard" ,ruby-yard)
9507 ("ruby-mocha" ,ruby-mocha)
9508 ("ruby-coderay" ,ruby-coderay)
9509 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
9510 ("ruby-simplecov" ,ruby-simplecov)
9511 ("ruby-rspec-2" ,ruby-rspec-2)))
9512 (arguments
9513 '(;; TODO: 1 test fails
9514 ;; Failure/Error: pdf.page_count.should == 1
9515 ;; expected: 1
9516 ;; got: 2 (using ==)
9517 ;; # ./spec/table_spec.rb:1308
9518 ;;
9519 ;; 225 examples, 1 failure
9520 #:tests? #f
9521 #:phases
9522 (modify-phases %standard-phases
9523 (add-before 'check 'patch-gemspec
9524 (lambda _
9525 (substitute* "prawn-table.gemspec"
9526 ;; Loosen the requirement for pdf-inspector
9527 (("~> 1\\.1\\.0") ">= 0")
9528 ;; Loosen the requirement for pdf-reader
9529 (("~> 1\\.2") ">= 0"))))
9530 (replace 'check
9531 (lambda* (#:key tests? #:allow-other-keys)
9532 (when tests?
9533 (invoke "rspec"))
9534 #t)))))
197ca8ec
JL
9535 (home-page "https://github.com/prawnpdf/prawn-table")
9536 (synopsis "Tables support for Prawn")
9537 (description "This gem provides tables support for Prawn.")
9538 (license license:gpl3+)))
03127069
JL
9539
9540(define-public ruby-kramdown
9541 (package
9542 (name "ruby-kramdown")
9543 (version "1.17.0")
9544 (source (origin
9545 (method url-fetch)
9546 (uri (rubygems-uri "kramdown" version))
9547 (sha256
9548 (base32
9549 "1n1c4jmrh5ig8iv1rw81s4mw4xsp4v97hvf8zkigv4hn5h542qjq"))))
9550 (build-system ruby-build-system)
9551 (arguments `(#:tests? #f)); FIXME: some test failures
9552 (native-inputs
9553 `(("ruby-prawn" ,ruby-prawn)
9554 ("ruby-prawn-table" ,ruby-prawn-table)))
9555 (home-page "https://kramdown.gettalong.org/")
9556 (synopsis "Markdown parsing and converting library")
9557 (description "Kramdown is a library for parsing and converting a superset
9558of Markdown. It is completely written in Ruby, supports standard Markdown
9559(with some minor modifications) and various extensions that have been made
9560popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
9561 (license license:expat)))
fa0063bc
JL
9562
9563(define-public ruby-http-parser.rb
9564 (package
9565 (name "ruby-http-parser.rb")
9566 (version "0.6.0")
9567 (source
9568 (origin
9569 (method url-fetch)
9570 (uri (rubygems-uri "http_parser.rb" version))
9571 (sha256
9572 (base32
9573 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
9574 (build-system ruby-build-system)
9575 (arguments
9576 ;; No tests
9577 `(#:tests? #f))
9578 (native-inputs
9579 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9580 ("ruby-rspec" ,ruby-rspec)))
9581 (home-page "https://github.com/tmm1/http_parser.rb")
9582 (synopsis "HTTP parser un Ruby")
9583 (description "This gem is a simple callback-based HTTP request/response
9584parser for writing http servers, clients and proxies.")
9585 (license license:expat)))
5e2f74bd
JL
9586
9587(define-public ruby-em-websocket
9588 (package
9589 (name "ruby-em-websocket")
9590 (version "0.5.1")
9591 (source
9592 (origin
9593 (method url-fetch)
9594 (uri (rubygems-uri "em-websocket" version))
9595 (sha256
9596 (base32
9597 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
9598 (build-system ruby-build-system)
9599 (arguments
9600 ;; No tests
9601 `(#:tests? #f))
9602 (propagated-inputs
9603 `(("ruby-eventmachine" ,ruby-eventmachine)
9604 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
9605 (native-inputs
9606 `(("bundler" ,bundler)
9607 ("ruby-rspec" ,ruby-rspec)))
9608 (home-page "https://github.com/igrigorik/em-websocket")
9609 (synopsis "EventMachine based WebSocket server")
9610 (description "Em-websocket is an EventMachine based WebSocket server
9611implementation.")
9612 (license license:expat)))
4ce0414b
JL
9613
9614(define-public ruby-rouge
9615 (package
9616 (name "ruby-rouge")
55cc5ef8 9617 (version "3.13.0")
4ce0414b
JL
9618 (source (origin
9619 (method url-fetch)
9620 (uri (rubygems-uri "rouge" version))
9621 (sha256
9622 (base32
55cc5ef8 9623 "1y90nx9ph9adnrpcsvs2adca2l3dyz8am2d2kzxkwd3a086ji7aw"))))
4ce0414b
JL
9624 (build-system ruby-build-system)
9625 (arguments `(#:tests? #f)); No rakefile
9626 (home-page "http://rouge.jneen.net/")
9627 (synopsis "Code highlighter")
9628 (description "Rouge is a code highlighter written in Ruby. It supports more
9629than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
9630is compatible with stylesheets designed for pygments.")
9631 (license (list
9632 ;; rouge is licensed under expat
9633 license:expat
9634 ;; pygments is licensed under bsd-2
9635 license:bsd-2))))
2c5028bd
JL
9636
9637(define-public ruby-rouge-2
9638 (package
9639 (inherit ruby-rouge)
9640 (version "2.2.1")
9641 (source (origin
9642 (method url-fetch)
9643 (uri (rubygems-uri "rouge" version))
9644 (sha256
9645 (base32
9646 "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs"))))))
2e072e37
JL
9647
9648(define-public ruby-hashie
9649 (package
9650 (name "ruby-hashie")
9651 (version "3.6.0")
9652 (source (origin
9653 (method url-fetch)
9654 (uri (rubygems-uri "hashie" version))
9655 (sha256
9656 (base32
9657 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
9658 (build-system ruby-build-system)
9659 (native-inputs
9660 `(("bundler" ,bundler)))
9661 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
9662 (home-page "https://github.com/intridea/hashie")
9663 (synopsis "Extensions to Ruby Hashes")
9664 (description "Hashie is a collection of classes and mixins that make Ruby
9665hashes more powerful.")
9666 (license license:expat)))
73bfc125
JL
9667
9668(define-public ruby-heredoc-unindent
9669 (package
9670 (name "ruby-heredoc-unindent")
9671 (version "1.2.0")
9672 (source (origin
9673 (method url-fetch)
9674 (uri (rubygems-uri "heredoc_unindent" version))
9675 (sha256
9676 (base32
9677 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
9678 (build-system ruby-build-system)
9679 (native-inputs
9680 `(("ruby-hoe" ,ruby-hoe)))
9681 (home-page "https://github.com/adrianomitre/heredoc_unindent")
9682 (synopsis "Heredoc indentation cleaner")
9683 (description "This gem removes common margin from indented strings, such
9684as the ones produced by indented heredocs. In other words, it strips out
4f66ae28 9685leading whitespace chars at the beginning of each line, but only as much as
73bfc125
JL
9686the line with the smallest margin.
9687
9688It is acknowledged that many strings defined by heredocs are just code and
9689fact is that most parsers are insensitive to indentation. If, however, the
9690strings are to be used otherwise, be it for printing or testing, the extra
9691indentation will probably be an issue and hence this gem.")
9692 (license license:expat)))
f8ae2ee5
JL
9693
9694(define-public ruby-safe-yaml
9695 (package
9696 (name "ruby-safe-yaml")
7fa83fa8 9697 (version "1.0.5")
28cf8dab
CB
9698 (source
9699 (origin
28cf8dab
CB
9700 (method git-fetch)
9701 (uri (git-reference
9702 (url "https://github.com/dtao/safe_yaml.git")
9703 (commit version)))
9704 (file-name (git-file-name name version))
9705 (sha256
9706 (base32
7fa83fa8 9707 "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg"))))
f8ae2ee5
JL
9708 (build-system ruby-build-system)
9709 (native-inputs
9710 `(("ruby-rspec" ,ruby-rspec)
9711 ("ruby-hashie" ,ruby-hashie)
9712 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
28cf8dab
CB
9713 (arguments
9714 '(#:test-target "spec"
9715 #:phases
9716 (modify-phases %standard-phases
9717 (add-before 'check 'set-TZ
9718 (lambda _
9719 ;; This test is dependent on the timezone
9720 ;; spec/transform/to_date_spec.rb:35
9721 ;; # SafeYAML::Transform::ToDate converts times to the local
9722 ;; timezone
9723 (setenv "TZ" "UTC-11")
9724 #t)))))
f8ae2ee5
JL
9725 (home-page "https://github.com/dtao/safe_yaml")
9726 (synopsis "YAML parser")
9727 (description "The SafeYAML gem provides an alternative implementation of
9728YAML.load suitable for accepting user input in Ruby applications.")
9729 (license license:expat)))
f1ec4d76
JL
9730
9731(define-public ruby-mercenary
9732 (package
9733 (name "ruby-mercenary")
9734 (version "0.3.6")
9735 (source (origin
9736 (method url-fetch)
9737 (uri (rubygems-uri "mercenary" version))
9738 (sha256
9739 (base32
9740 "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"))))
9741 (build-system ruby-build-system)
9742 (arguments `(#:test-target "spec"))
9743 (native-inputs
9744 `(("bundler" ,bundler)))
9745 (home-page "https://github.com/jekyll/mercenary")
9746 (synopsis "Command-line apps library in Ruby")
9747 (description "Mercenary is a lightweight and flexible library for writing
9748command-line apps in Ruby.")
9749 (license license:expat)))
a13d451e
JL
9750
9751(define-public ruby-liquid
9752 (package
9753 (name "ruby-liquid")
9754 (version "4.0.0")
9755 (source (origin
9756 (method url-fetch)
9757 (uri (rubygems-uri "liquid" version))
9758 (sha256
9759 (base32
9760 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
9761 (build-system ruby-build-system)
9762 (arguments `(#:tests? #f)); No rakefile
9763 (home-page "https://shopify.github.io/liquid/")
9764 (synopsis "Template language")
9765 (description "Liquid is a template language written in Ruby. It is used
9766to load dynamic content on storefronts.")
9767 (license license:expat)))
49395112
JL
9768
9769(define-public ruby-forwardable-extended
9770 (package
9771 (name "ruby-forwardable-extended")
9772 (version "2.6.0")
9773 (source (origin
9774 (method url-fetch)
9775 (uri (rubygems-uri "forwardable-extended" version))
9776 (sha256
9777 (base32
9778 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
9779 (build-system ruby-build-system)
9780 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
9781 (home-page "https://github.com/envygeeks/forwardable-extended")
9782 (synopsis "Delegation to hashes and instance variables in Forwardable")
9783 (description "Forwardable Extended provides more @code{Forwardable}
9784methods for your source as @code{Forwardable::Extended}.")
9785 (license license:expat)))
37296113
JL
9786
9787(define-public ruby-pathutil
9788 (package
9789 (name "ruby-pathutil")
feaaa603 9790 (version "0.16.2")
37296113
JL
9791 (source (origin
9792 (method url-fetch)
9793 (uri (rubygems-uri "pathutil" version))
9794 (sha256
9795 (base32
feaaa603 9796 "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"))))
37296113
JL
9797 (build-system ruby-build-system)
9798 (propagated-inputs
9799 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
9800 (native-inputs
9801 `(("bundler" ,bundler)
9802 ("ruby-rspec" ,ruby-rspec)))
9803 ;; Fails with: cannot load such file --
9804 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
9805 (arguments `(#:tests? #f))
9806 (home-page "https://github.com/envygeeks/pathutil")
9807 (synopsis "Extended implementation of Pathname")
9808 (description "Pathutil tries to be a faster pure Ruby implementation of
9809Pathname.")
9810 (license license:expat)))
49e1dde5
JL
9811
9812(define-public jekyll
9813 (package
9814 (name "jekyll")
fcf82fd3 9815 (version "3.8.6")
49e1dde5
JL
9816 (source (origin
9817 (method url-fetch)
9818 (uri (rubygems-uri "jekyll" version))
9819 (sha256
9820 (base32
fcf82fd3 9821 "1ph1jjjl25vmzif7bvxzviq7azjm384pm7ba4k24cah94285bzhz"))))
49e1dde5
JL
9822 (build-system ruby-build-system)
9823 (arguments
fcf82fd3 9824 ;; No rakefile, but a test subdirectory.
49e1dde5
JL
9825 `(#:tests? #f
9826 #:phases
9827 (modify-phases %standard-phases
9828 (add-before 'build 'fix-i18n
9829 (lambda _
9830 (substitute* ".gemspec"
9831 (("~> 0.7") ">= 0.7"))
9832 #t)))))
9833 (propagated-inputs
9834 `(("ruby-addressable" ,ruby-addressable)
9835 ("ruby-colorator" ,ruby-colorator)
9836 ("ruby-em-websocket" ,ruby-em-websocket)
9837 ("ruby-i18n" ,ruby-i18n)
9838 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
9839 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
9840 ("ruby-kramdown" ,ruby-kramdown)
9841 ("ruby-liquid" ,ruby-liquid)
9842 ("ruby-mercenary" ,ruby-mercenary)
9843 ("ruby-pathutil" ,ruby-pathutil)
9844 ("ruby-rouge" ,ruby-rouge-2)
9845 ("ruby-safe-yaml" ,ruby-safe-yaml)))
9846 (home-page "https://jekyllrb.com/")
9847 (synopsis "Static site generator")
9848 (description "Jekyll is a simple, blog aware, static site generator.")
9849 (license license:expat)))
37a0f470
JL
9850
9851(define-public ruby-jekyll-paginate-v2
9852 (package
9853 (name "ruby-jekyll-paginate-v2")
9854 (version "2.0.0")
9855 (source (origin
9856 (method url-fetch)
9857 (uri (rubygems-uri "jekyll-paginate-v2" version))
9858 (sha256
9859 (base32
9860 "154bfpyml6abxww9868hhyfvxasl8qhsc5zy2q30c7dxaj0igdib"))))
9861 (build-system ruby-build-system)
9862 (propagated-inputs
9863 `(("jekyll" ,jekyll)))
9864 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
9865 (synopsis "Pagination Generator for Jekyll 3")
9866 (description "The Pagination Generator forms the core of the pagination
9867logic in Jekyll. It calculates and generates the pagination pages.")
9868 (license license:expat)))
909eae21
CB
9869
9870(define-public ruby-faraday
9871 (package
9872 (name "ruby-faraday")
9873 (version "0.15.4")
9874 (source
9875 (origin
9876 (method url-fetch)
9877 (uri (rubygems-uri "faraday" version))
9878 (sha256
9879 (base32
9880 "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0"))))
9881 (build-system ruby-build-system)
9882 (arguments
9883 '(#:tests? #f))
9884 (propagated-inputs
9885 `(("ruby-multipart-post" ,ruby-multipart-post)))
9886 (synopsis "Ruby HTTP/REST API client library")
9887 (description
9888 "Faraday is a HTTP/REST API client library which provides a common
9889interface over different adapters.")
9890 (home-page "https://github.com/lostisland/faraday")
9891 (license license:expat)))
a058cbfd
CB
9892
9893(define-public ruby-nio4r
9894 (package
9895 (name "ruby-nio4r")
7923b9bf 9896 (version "2.5.2")
a058cbfd
CB
9897 (source
9898 (origin
9899 (method url-fetch)
9900 (uri (rubygems-uri "nio4r" version))
9901 (sha256
9902 (base32
7923b9bf 9903 "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c"))))
a058cbfd
CB
9904 (build-system ruby-build-system)
9905 (arguments
9906 '(#:phases
9907 (modify-phases %standard-phases
9908 (add-after 'unpack 'remove-unnecessary-dependencies
9909 (lambda _
9910 (substitute* "spec/spec_helper.rb"
9911 ;; Coveralls is for uploading test coverage information to an
9912 ;; online service, and thus unnecessary for building the Guix
9913 ;; package
9914 (("require \"coveralls\"") "")
9915 (("Coveralls\\.wear!") "")
9916 ;; Remove rspec/retry as we are not retrying the tests
9917 (("require \"rspec/retry\"") "")
9918 (("config\\.display_try_failure_messages = true") "")
9919 (("config\\.verbose_retry = true") ""))
9920 #t))
9921 (add-before 'check 'compile
9922 (lambda _
9923 (invoke "rake" "compile")
9924 #t))
9925 (replace 'check
9926 (lambda* (#:key tests? #:allow-other-keys)
9927 (when tests?
9928 (invoke "rspec"))
9929 #t)))))
9930 (native-inputs
9931 `(("bundler" ,bundler)
9932 ("ruby-rake-compiler" ,ruby-rake-compiler)
9933 ("ruby-rspec" ,ruby-rspec)
9934 ("ruby-rubocop" ,ruby-rubocop)))
9935 (synopsis "New I/O for Ruby")
9936 (description
9937 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
9938for scalable network clients and servers.")
9939 (home-page "https://github.com/socketry/nio4r")
9940 (license license:expat)))
f9da1ada
CB
9941
9942(define-public ruby-globalid
9943 (package
9944 (name "ruby-globalid")
9945 (version "0.4.2")
9946 (source
9947 (origin
9948 (method url-fetch)
9949 (uri (rubygems-uri "globalid" version))
9950 (sha256
9951 (base32
9952 "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"))))
9953 (build-system ruby-build-system)
9954 (arguments
9955 '(;; No included tests
9956 #:tests? #f))
9957 (propagated-inputs
9958 `(("ruby-activesupport" ,ruby-activesupport)))
9959 (synopsis "Generate URIs idenfitying model instances in Ruby")
9960 (description
9961 "@code{GlobalID} provides a way to generate URIs from a model in Ruby that
9962uniquely identify it.")
9963 (home-page "https://rubyonrails.org/")
9964 (license license:expat)))
15606d98
CB
9965
9966(define-public ruby-sprockets
9967 (package
9968 (name "ruby-sprockets")
9969 (version "3.7.2")
9970 (source
9971 (origin
9972 (method url-fetch)
9973 (uri (rubygems-uri "sprockets" version))
9974 (sha256
9975 (base32
9976 "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"))))
9977 (build-system ruby-build-system)
9978 (arguments
9979 '(;; No included tests
9980 #:tests? #f))
9981 (propagated-inputs
9982 `(("ruby-concurrent" ,ruby-concurrent)
9983 ("ruby-rack" ,ruby-rack)))
9984 (synopsis "Sprockets is a Rack-based asset packaging system")
9985 (description
9986 "Sprockets is a Rack-based asset packaging system that concatenates and
9987serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
9988 (home-page "https://github.com/rails/sprockets")
9989 (license license:expat)))
acb9e3d8
PN
9990
9991(define-public ruby-mustermann
9992 (package
9993 (name "ruby-mustermann")
9994 (version "1.0.3")
9995 (source
9996 (origin
9997 (method url-fetch)
9998 (uri (rubygems-uri "mustermann" version))
9999 (sha256
10000 (base32
10001 "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1"))))
10002 (build-system ruby-build-system)
10003 (arguments
10004 ;; No tests.
10005 '(#:tests? #f))
10006 (synopsis "Library implementing patterns that behave like regular expressions")
10007 (description "Given a string pattern, Mustermann will turn it into an
10008object that behaves like a regular expression and has comparable performance
10009characteristics.")
10010 (home-page "https://github.com/sinatra/mustermann")
10011 (license license:expat)))
3bb094e2 10012
7bddb6aa
BL
10013(define-public ruby-htmlentities
10014 (package
10015 (name "ruby-htmlentities")
10016 (version "4.3.4")
10017 (source
10018 (origin
10019 (method url-fetch)
10020 (uri (rubygems-uri "htmlentities" version))
10021 (sha256
10022 (base32
10023 "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"))))
10024 (build-system ruby-build-system)
10025 (arguments
10026 `(#:phases
10027 (modify-phases %standard-phases
10028 (replace 'check
10029 (lambda _
10030 (map (lambda (file)
10031 (invoke "ruby" "-Itest" file))
10032 (find-files "./test" ".*_test\\.rb")))))))
10033 (synopsis "Encode and decode (X)HTML entities")
10034 (description
10035 "This package provides a module for encoding and decoding (X)HTML
10036entities.")
10037 (home-page "https://github.com/threedaymonk/htmlentities")
10038 (license license:expat)))
10039
3bb094e2
PN
10040(define-public ruby-sinatra
10041 (package
10042 (name "ruby-sinatra")
7af92924 10043 (version "2.0.8.1")
3bb094e2
PN
10044 (source
10045 (origin
10046 (method url-fetch)
10047 (uri (rubygems-uri "sinatra" version))
10048 (sha256
10049 (base32
7af92924 10050 "0riy3hwjab1mr73jcqx3brmbmwspnw3d193j06a5f0fy1w35z15q"))))
3bb094e2 10051 (build-system ruby-build-system)
7af92924
MC
10052 (arguments
10053 `(#:phases
10054 (modify-phases %standard-phases
10055 ;; See: https://github.com/sinatra/sinatra/issues/1578.
10056 (add-after 'extract-gemspec 'fix-slow-doc-generation
10057 (lambda _
10058 (substitute* "sinatra.gemspec"
10059 (("\"README.rdoc\"\\.freeze," all)
10060 (string-append all " \"--exclude=.*\\.md\".freeze,")))
10061 #t)))))
3bb094e2
PN
10062 (propagated-inputs
10063 `(("ruby-mustermann" ,ruby-mustermann)
10064 ("ruby-rack" ,ruby-rack)
10065 ("ruby-rack-protection" ,ruby-rack-protection)
10066 ("ruby-tilt" ,ruby-tilt)))
10067 (synopsis "DSL for quick web applications creation in Ruby")
10068 (description
10069 "Sinatra is a DSL for quickly creating web applications in Ruby with
10070minimal effort.")
10071 (home-page "http://sinatrarb.com/")
10072 (license license:expat)))
6e87695b
PN
10073
10074(define-public ruby-thin
10075 (package
10076 (name "ruby-thin")
10077 (version "1.7.2")
10078 (source
10079 (origin
10080 (method url-fetch)
10081 (uri (rubygems-uri "thin" version))
10082 (sha256
10083 (base32
10084 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
10085 (build-system ruby-build-system)
10086 (arguments
10087 ;; No tests.
10088 '(#:tests? #f))
10089 (propagated-inputs
10090 `(("ruby-daemons" ,ruby-daemons)
10091 ("ruby-eventmachine" ,ruby-eventmachine)
10092 ("ruby-rack" ,ruby-rack)))
10093 (synopsis "Thin and fast web server for Ruby")
10094 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
10095@itemize
10096@item the Mongrel parser,
10097@item Event Machine, a network I/O library with high scalability, performance
10098and stability,
10099@item Rack, a minimal interface between webservers and Ruby frameworks.
10100@end itemize\n")
60783303 10101 (home-page "https://github.com/macournoyer/thin")
6e87695b 10102 (license license:ruby)))
be6016db
PN
10103
10104(define-public ruby-skinny
10105 (package
10106 (name "ruby-skinny")
10107 (version "0.2.4")
10108 (source
10109 (origin
10110 (method url-fetch)
10111 (uri (rubygems-uri "skinny" version))
10112 (sha256
10113 (base32
10114 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
10115 (build-system ruby-build-system)
10116 (arguments
10117 '(#:tests? #f ; No included tests
10118 #:phases
10119 (modify-phases %standard-phases
10120 (add-before 'build 'patch-gemspec
10121 (lambda _
10122 (substitute* ".gemspec"
10123 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
10124 "<eventmachine>, [\">= 1.0.0\"")
10125 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, ["))
10126 #t)))))
10127 (propagated-inputs
10128 `(("ruby-eventmachine" ,ruby-eventmachine)
10129 ("ruby-thin" ,ruby-thin)))
10130 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
10131 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
10132the Thin library.")
10133 (home-page "https://github.com/sj26/skinny")
10134 (license license:expat)))
df747c8d 10135
9c566d1b
MB
10136(define-public ruby-sys-filesystem
10137 (package
10138 (name "ruby-sys-filesystem")
10139 (version "1.3.4")
10140 (source (origin
10141 (method url-fetch)
10142 (uri (rubygems-uri "sys-filesystem" version))
10143 (sha256
10144 (base32
10145 "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01"))))
10146 (build-system ruby-build-system)
10147 (arguments
10148 '(#:phases (modify-phases %standard-phases
10149 (add-before 'check 'set-HOME
10150 (lambda _
10151 ;; Some tests attempt to stat $HOME. Let them.
10152 (setenv "HOME" "/tmp")
10153 #t)))))
10154 (propagated-inputs
10155 `(("ruby-ffi" ,ruby-ffi)))
10156 (native-inputs
10157 `(("ruby-mkmf-lite" ,ruby-mkmf-lite)))
10158 (synopsis "Gather file system information")
10159 (description
10160 "The @code{sys-filesystem} library provides a cross-platform interface
10161for gathering file system information, such as disk space and mount points.")
10162 (home-page "https://github.com/djberg96/sys-filesystem")
10163 (license license:asl2.0)))
10164
df747c8d
PN
10165(define-public mailcatcher
10166 (package
10167 (name "mailcatcher")
10168 (version "0.7.1")
10169 (source
10170 (origin
10171 (method url-fetch)
10172 (uri (rubygems-uri "mailcatcher" version))
10173 (sha256
10174 (base32
10175 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
10176 (build-system ruby-build-system)
10177 (arguments
10178 ;; Tests require web/assets which is not included in the output. We
10179 ;; might be able to fix this by adding the Git repository to the GEM_PATH
10180 ;; of the tests. See ruby-mysql2.
10181 '(#:tests? #f
10182 #:phases
10183 (modify-phases %standard-phases
10184 (add-before 'build 'patch-gemspec
10185 (lambda _
10186 (substitute* ".gemspec"
10187 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
10188 "<eventmachine>, [\">= 1.0.9.1")
10189 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
10190 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
10191 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))
10192 #t))
10193 (add-before 'build 'loosen-dependency-contraint
10194 (lambda _
10195 (substitute* "lib/mail_catcher.rb"
10196 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
10197 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
10198 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
10199 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))
10200 #t)))))
10201 (inputs
10202 `(("ruby-eventmachine" ,ruby-eventmachine)
10203 ("ruby-mail" ,ruby-mail)
10204 ("ruby-rack" ,ruby-rack)
10205 ("ruby-sinatra" ,ruby-sinatra)
10206 ("ruby-skinny" ,ruby-skinny)
10207 ("ruby-sqlite3" ,ruby-sqlite3)
10208 ("ruby-thin" ,ruby-thin)))
10209 (synopsis "SMTP server which catches messages to display them a browser")
10210 (description
10211 "MailCatcher runs a super simple SMTP server which catches any message
10212sent to it to display in a web interface. Run mailcatcher, set your favourite
10213app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
10214then check out http://127.0.0.1:1080 to see the mail.")
10215 (home-page "https://mailcatcher.me")
10216 (license license:expat)))
fc4f7c45
MK
10217
10218(define-public ruby-backport
10219 (package
10220 (name "ruby-backport")
b62863b8 10221 (version "1.1.2")
fc4f7c45
MK
10222 (source
10223 (origin
b62863b8 10224 ;; The gem does not include test code, so fetch from the Git repository.
fc4f7c45
MK
10225 (method git-fetch)
10226 (uri (git-reference
10227 (url "https://github.com/castwide/backport.git")
10228 (commit (string-append "v" version))))
10229 (file-name (git-file-name name version))
10230 (sha256
b62863b8 10231 (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2"))))
fc4f7c45
MK
10232 (build-system ruby-build-system)
10233 (arguments
10234 `(#:test-target "spec"))
10235 (native-inputs
10236 `(("bundler" ,bundler)
10237 ("ruby-rspec" ,ruby-rspec)))
10238 (inputs
10239 `(("ruby-simplecov" ,ruby-simplecov)))
10240 (synopsis "Pure Ruby library for event-driven IO")
10241 (description
10242 "This package provides a pure Ruby library for event-driven IO.")
10243 (home-page "https://github.com/castwide/backport")
10244 (license license:expat)))
369faa59
JL
10245
10246(define-public ruby-json-schema
10247 (package
10248 (name "ruby-json-schema")
10249 (version "2.8.1")
10250 (source
10251 (origin
10252 (method url-fetch)
10253 (uri (rubygems-uri "json-schema" version))
10254 (sha256
10255 (base32
10256 "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5"))))
10257 (build-system ruby-build-system)
10258 (arguments
10259 `(#:tests? #f ; no tests
10260 #:phases
10261 (modify-phases %standard-phases
10262 (replace 'build
10263 (lambda _
10264 (invoke "gem" "build" ".gemspec"))))))
10265 (propagated-inputs
10266 `(("ruby-addressable" ,ruby-addressable)))
10267 (synopsis "Ruby JSON Schema Validator")
10268 (description "This library provides Ruby with an interface for validating
10269JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy
10270support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1
10271is also included.")
10272 (home-page "https://github.com/ruby-json-schema/json-schema")
10273 (license license:expat)))
44881cad
JL
10274
10275(define-public swagger-diff
10276 (package
10277 (name "swagger-diff")
10278 (version "1.1.2")
10279 (source
10280 (origin
10281 (method url-fetch)
10282 (uri (rubygems-uri "swagger-diff" version))
10283 (sha256
10284 (base32
10285 "1hxx50nga1bqn254iqjcdwkc9c72364ks9lyjyw10ajz0l0ly7sn"))))
10286 (build-system ruby-build-system)
10287 (arguments
10288 `(#:test-target "spec"
10289 #:phases
10290 (modify-phases %standard-phases
10291 ;; Don't run or require rubocop, the code linting tool, as this is a
10292 ;; bit unnecessary.
10293 (add-after 'unpack 'dont-run-rubocop
10294 (lambda _
10295 (substitute* "Rakefile"
10296 ((".*rubocop.*") "")
10297 ((".*RuboCop.*") ""))
10298 #t)))))
10299 (propagated-inputs
10300 `(("ruby-json-schema" ,ruby-json-schema)))
10301 (native-inputs
10302 `(("bundler" ,bundler)
10303 ("ruby-rspec-core" ,ruby-rspec-core)
10304 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
10305 (synopsis
10306 "Compare Open API Initiative specification files")
10307 (description
10308 "Swagger::Diff is a utility for comparing two different Open API
10309Initiative (OAI) specifications (formerly known as Swagger specifications).
10310It is intended to determine whether a newer API specification is
10311backwards-compatible with an older API specification.")
10312 (home-page "https://github.com/civisanalytics/swagger-diff")
10313 (license license:bsd-3)))
9e065a8a
BL
10314
10315(define-public ruby-reverse-markdown
10316 (package
10317 (name "ruby-reverse-markdown")
10318 (version "1.1.0")
10319 (source
10320 (origin
10321 (method url-fetch)
10322 (uri (rubygems-uri "reverse_markdown" version))
10323 (sha256
10324 (base32
10325 "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg"))))
10326 (build-system ruby-build-system)
10327 (propagated-inputs
10328 `(("ruby-nokogiri" ,ruby-nokogiri)))
10329 (native-inputs
10330 `(("bundler" ,bundler)
10331 ("ruby-rspec" ,ruby-rspec)
10332 ("ruby-kramdown" ,ruby-kramdown)
10333 ("ruby-simplecov" ,ruby-simplecov)))
10334 (arguments
10335 `(#:phases
10336 (modify-phases %standard-phases
10337 (replace 'check
10338 (lambda* (#:key tests? #:allow-other-keys)
10339 (when tests?
10340 (invoke "rspec"))
10341 #t)))))
10342 (synopsis "Convert HTML into Markdown")
10343 (description
10344 "This Ruby module allows you to map simple HTML back into
10345Markdown---e.g., if you want to import existing HTML data in your
10346application.")
10347 (home-page "https://github.com/xijo/reverse_markdown")
10348 (license license:wtfpl2)))
10349
a9e2de7e
BL
10350(define-public ruby-solargraph
10351 (package
10352 (name "ruby-solargraph")
10353 (version "0.36.0")
10354 (source
10355 (origin
10356 (method url-fetch)
10357 (uri (rubygems-uri "solargraph" version))
10358 (sha256
10359 (base32
10360 "0b93xzkgd1h06da9gdnwivj1mzbil8lc072y2838dy6i7bxgpy9i"))))
10361 (build-system ruby-build-system)
10362 (propagated-inputs
10363 `(("ruby-backport" ,ruby-backport)
10364 ("bundler" ,bundler)
10365 ("ruby-htmlentities" ,ruby-htmlentities)
10366 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
10367 ("ruby-maruku" ,ruby-maruku)
10368 ("ruby-nokogiri" ,ruby-nokogiri)
10369 ("ruby-parser" ,ruby-parser)
10370 ("ruby-reverse-markdown" ,ruby-reverse-markdown)
10371 ("ruby-rubocop" ,ruby-rubocop)
10372 ("ruby-thor" ,ruby-thor)
10373 ("ruby-tilt" ,ruby-tilt)
10374 ("ruby-yard" ,ruby-yard)))
10375 (native-inputs
10376 `(("ruby-rspec" ,ruby-rspec)
10377 ("ruby-pry" ,ruby-pry)
10378 ("ruby-simplecov" ,ruby-simplecov)
10379 ("ruby-webmock" ,ruby-webmock-2)))
10380 ;; FIXME: can't figure out how to run the tests properly:
10381
10382 ;; An error occurred while loading spec_helper.
10383 ;; Failure/Error: return gem_original_require(path)
10384 ;; LoadError:
10385 ;; cannot load such file -- spec_helper
10386 (arguments
10387 '(#:tests? #f
10388 #:phases
10389 (modify-phases %standard-phases
10390 (replace 'check
10391 (lambda* (#:key tests? #:allow-other-keys)
10392 (when tests?
10393 (invoke "rspec"))
10394 #t)))))
10395 (synopsis
10396 "IDE tools for code completion, inline documentation, and static analysis")
10397 (description
10398 "Solargraph provides a comprehensive suite of tools for Ruby
10399programming: intellisense, diagnostics, inline documentation, and type
10400checking.")
10401 (home-page "https://solargraph.org/")
10402 (license license:expat)))
0c558aa9
DNB
10403
10404(define-public ruby-wayback-machine-downloader
10405 (package
10406 (name "ruby-wayback-machine-downloader")
10407 (version "2.2.1")
10408 (source
10409 (origin
10410 (method url-fetch)
10411 (uri (rubygems-uri
10412 "wayback_machine_downloader"
10413 version))
10414 (sha256
10415 (base32
10416 "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2"))))
10417 (build-system ruby-build-system)
10418 (arguments
10419 '(#:tests? #f)) ; no tests
10420 (synopsis "Download archived websites from the Wayback Machine")
10421 (description
10422 "Wayback Machine Downloader is a command line tool for downloading
10423websites from the Internet Archive's Wayback Machine (archive.org).
10424It allows fine grained control over what to download by specifying
10425which snapshots to consider and what files to include.")
10426 (home-page
10427 "https://github.com/hartator/wayback-machine-downloader")
10428 (license license:expat)))
e6483f8c
MB
10429
10430(define-public ruby-wwtd
10431 (package
10432 (name "ruby-wwtd")
10433 (version "1.4.1")
10434 (home-page "http://github.com/grosser/wwtd")
10435 (source (origin
10436 (method git-fetch)
10437 (uri (git-reference
10438 (url home-page)
10439 (commit (string-append "v" version))))
10440 (file-name (git-file-name name version))
10441 (sha256
10442 (base32
10443 "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2"))
10444 (modules '((guix build utils)))
10445 (snippet
10446 '(begin
10447 ;; Remove bundled library.
10448 (delete-file "spec/rake-12.3.0.gem")
10449 #t))))
10450 (build-system ruby-build-system)
10451 (arguments
10452 '(;; XXX: Tests need multiple versions of ruby, wants to run
10453 ;; `bundle install`, etc.
10454 #:tests? #f
10455 #:phases (modify-phases %standard-phases
10456 (replace 'replace-git-ls-files
10457 (lambda _
10458 (substitute* "wwtd.gemspec"
10459 (("git ls-files lib/ bin/`")
10460 "find lib/ bin/ -type f |sort`"))
10461 #t))
10462 (add-before 'check 'remove-version-constraints
10463 (lambda _
10464 (delete-file "Gemfile.lock")
10465 #t))
10466 (replace 'check
10467 (lambda* (#:key tests? #:allow-other-keys)
10468 (if tests?
10469 (invoke "rspec" "spec/")
10470 (format #t "test suite not run~%"))
10471 #t)))))
10472 (native-inputs
10473 `(("ruby-bump" ,ruby-bump)
10474 ("ruby-rspec" ,ruby-rspec)))
10475 (synopsis "Run @file{.travis.yml} files locally")
10476 (description
10477 "WWTD is a @dfn{Travis Simulator} that lets you run test matrices
10478defined in @file{.travis.yml} on your local machine, using @code{rvm},
10479@code{rbenv}, or @code{chruby} to test different versions of Ruby.")
10480 (license license:expat)))