gnu: ruby-parallel-tests: Update to 3.0.0.
[jackhill/guix/guix.git] / gnu / packages / ruby.scm
CommitLineData
6ef8c59a 1;;; GNU Guix --- Functional package management for GNU
37ab3aba 2;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
402b03e6 3;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
f586c877 4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
37ab3aba 5;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
6742c6f6 6;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
cba53c60 7;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
3c986a7d 8;;; Copyright © 2017 Nikita <nikita@n0.is>
3cc8e029 9;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
b872b47b 10;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
a7b7817d 11;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
6a9d2266 12;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
433e3154 13;;; Copyright © 2017, 2018, 2019 Christopher Baines <mail@cbaines.net>
4db80f8b 14;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
8ef06557 15;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
3355e49c 16;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
fc4f7c45 17;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com>
369faa59 18;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
9e065a8a 19;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
9c4cb1ef 20;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca>
0c558aa9 21;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de>
fd248cb8 22;;; Copyright © 2019 Brett Gilio <brettg@posteo.de>
a8cdfd53 23;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
6ef8c59a
PP
24;;;
25;;; This file is part of GNU Guix.
26;;;
27;;; GNU Guix is free software; you can redistribute it and/or modify it
28;;; under the terms of the GNU General Public License as published by
29;;; the Free Software Foundation; either version 3 of the License, or (at
30;;; your option) any later version.
31;;;
32;;; GNU Guix is distributed in the hope that it will be useful, but
33;;; WITHOUT ANY WARRANTY; without even the implied warranty of
34;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
35;;; GNU General Public License for more details.
36;;;
37;;; You should have received a copy of the GNU General Public License
38;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
39
40(define-module (gnu packages ruby)
41 #:use-module ((guix licenses) #:prefix license:)
42 #:use-module (gnu packages)
1db791d5 43 #:use-module (gnu packages base)
933dad91 44 #:use-module (gnu packages bison)
24be6751 45 #:use-module (gnu packages c)
15b16c2c 46 #:use-module (gnu packages check)
6ef8c59a 47 #:use-module (gnu packages compression)
2a9ce5cb 48 #:use-module (gnu packages crypto)
4a9e0585 49 #:use-module (gnu packages databases)
255d1bbe 50 #:use-module (gnu packages dbm)
c41fba01 51 #:use-module (gnu packages rails)
6ef8c59a 52 #:use-module (gnu packages readline)
6ef8c59a 53 #:use-module (gnu packages autotools)
ad79eb55 54 #:use-module (gnu packages java)
6ef8c59a 55 #:use-module (gnu packages libffi)
f3d7bb93 56 #:use-module (gnu packages libidn)
c41fba01
CB
57 #:use-module (gnu packages linux)
58 #:use-module (gnu packages lsof)
34138e42 59 #:use-module (gnu packages maths)
0c8eedc1 60 #:use-module (gnu packages ncurses)
fe5dd5f4 61 #:use-module (gnu packages networking)
3ca43524 62 #:use-module (gnu packages node)
dff5392f 63 #:use-module (gnu packages protobuf)
ac09beba 64 #:use-module (gnu packages python)
44d10b1f 65 #:use-module (gnu packages python-xyz)
763624f5 66 #:use-module (gnu packages ragel)
30f08487 67 #:use-module (gnu packages rsync)
cd0322a3 68 #:use-module (gnu packages sqlite)
cc2b77df 69 #:use-module (gnu packages tls)
66e20863 70 #:use-module (gnu packages version-control)
6ef8c59a
PP
71 #:use-module (guix packages)
72 #:use-module (guix download)
bda0c139 73 #:use-module (guix git-download)
6ef8c59a 74 #:use-module (guix utils)
acf735f2 75 #:use-module (guix build-system gnu)
e920bfca 76 #:use-module (gnu packages xml)
c2c4e5b2 77 #:use-module (gnu packages web)
15b16c2c
CB
78 #:use-module (guix build-system ruby)
79 #:use-module ((srfi srfi-1) #:select (alist-delete)))
6ef8c59a
PP
80
81(define-public ruby
82 (package
83 (name "ruby")
4914c157 84 (version "2.6.5")
6ef8c59a
PP
85 (source
86 (origin
87 (method url-fetch)
6becfdff
MW
88 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
89 (version-major+minor version)
12d39eb5 90 "/ruby-" version ".tar.xz"))
6ef8c59a
PP
91 (sha256
92 (base32
4914c157 93 "0qhsw2mr04f3lqinkh557msr35pb5rdaqy4vdxcj91flgxqxmmnm"))
65e84e31
BW
94 (modules '((guix build utils)))
95 (snippet `(begin
96 ;; Remove bundled libffi
c033c195 97 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
65e84e31 98 #t))))
6ef8c59a
PP
99 (build-system gnu-build-system)
100 (arguments
101 `(#:test-target "test"
fd248cb8 102 #:configure-flags '("--enable-shared") ; dynamic linking
6ef8c59a 103 #:phases
9656b8be 104 (modify-phases %standard-phases
65e84e31 105 (add-before 'configure 'replace-bin-sh-and-remove-libffi
9656b8be
BW
106 (lambda _
107 (substitute* '("Makefile.in"
108 "ext/pty/pty.c"
109 "io.c"
110 "lib/mkmf.rb"
111 "process.c"
112 "test/rubygems/test_gem_ext_configure_builder.rb"
113 "test/rdoc/test_rdoc_parser.rb"
114 "test/ruby/test_rubyoptions.rb"
115 "test/ruby/test_process.rb"
116 "test/ruby/test_system.rb"
117 "tool/rbinstall.rb")
118 (("/bin/sh") (which "sh")))
119 #t)))))
6ef8c59a
PP
120 (inputs
121 `(("readline" ,readline)
6ef8c59a
PP
122 ("openssl" ,openssl)
123 ("libffi" ,libffi)
4914c157
CB
124 ("gdbm" ,gdbm)))
125 (propagated-inputs
126 `(("zlib" ,zlib)))
6ef8c59a
PP
127 (native-search-paths
128 (list (search-path-specification
129 (variable "GEM_PATH")
3cb3fa67 130 (files (list (string-append "lib/ruby/vendor_ruby"))))))
6becfdff 131 (synopsis "Programming language interpreter")
6ef8c59a
PP
132 (description "Ruby is a dynamic object-oriented programming language with
133a focus on simplicity and productivity.")
bf3be6a5 134 (home-page "https://www.ruby-lang.org")
6ef8c59a
PP
135 (license license:ruby)))
136
1cc7d340
RP
137(define-public ruby-2.7
138 (package
139 (inherit ruby)
140 (version "2.7.1")
141 (source
142 (origin
143 (method url-fetch)
144 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
145 (version-major+minor version)
146 "/ruby-" version ".tar.gz"))
147 (sha256
148 (base32
149 "0674x98f542y02r7n2yv2qhmh97blqhi2mvh2dn5f000vlxlh66l"))
150 (modules '((guix build utils)))
151 (snippet `(begin
152 ;; Remove bundled libffi
153 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
154 #t))))
155 (arguments
156 `(#:test-target "test"
157 #:configure-flags '("--enable-shared") ; dynamic linking
158 #:phases
159 (modify-phases %standard-phases
160 (add-before 'configure 'replace-bin-sh-and-remove-libffi
161 (lambda _
162 (substitute* '("configure.ac"
163 "template/Makefile.in"
164 "lib/rubygems/installer.rb"
165 "ext/pty/pty.c"
166 "io.c"
167 "lib/mkmf.rb"
168 "process.c"
169 "test/rubygems/test_gem_ext_configure_builder.rb"
170 "test/rdoc/test_rdoc_parser.rb"
171 "test/ruby/test_rubyoptions.rb"
172 "test/ruby/test_process.rb"
173 "test/ruby/test_system.rb"
174 "tool/rbinstall.rb")
175 (("/bin/sh") (which "sh")))
176 #t)))))
177 (native-inputs
178 `(("autoconf" ,autoconf)))))
179
227fab3e
CB
180(define-public ruby-2.5
181 (package
182 (inherit ruby)
a09ff632 183 (version "2.5.8")
227fab3e
CB
184 (source
185 (origin
186 (method url-fetch)
187 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
188 (version-major+minor version)
189 "/ruby-" version ".tar.xz"))
190 (sha256
191 (base32
a09ff632 192 "0vad5ah1lrdhxsyqr5iqc8c7r7qczpmm76cz8rsf4crimpzv5483"))
227fab3e
CB
193 (modules '((guix build utils)))
194 (snippet `(begin
195 ;; Remove bundled libffi
196 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
197 #t))))))
198
93cae02f
CB
199(define-public ruby-2.4
200 (package
201 (inherit ruby)
dfe211f9 202 (version "2.4.10")
93cae02f
CB
203 (source
204 (origin
205 (method url-fetch)
206 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
207 (version-major+minor version)
208 "/ruby-" version ".tar.xz"))
209 (sha256
210 (base32
dfe211f9 211 "1prhqlgik1zmw9lakl6hkriqslspw48pvhxff17h7ns42p8qwrnm"))
93cae02f
CB
212 (modules '((guix build utils)))
213 (snippet `(begin
214 ;; Remove bundled libffi
215 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
216 #t))))))
217
933dad91
RW
218(define-public mruby
219 (package
220 (name "mruby")
221 (version "2.0.0")
222 (source
223 (origin
224 (method git-fetch)
225 (uri (git-reference
226 (url "https://github.com/mruby/mruby.git")
227 (commit version)))
228 (file-name (git-file-name name version))
229 (sha256
230 (base32
231 "1r6w1asjshff43ymdwa6xmrkggza99mi2kw88k7ic6ag2j81hcj5"))))
232 (build-system gnu-build-system)
233 (arguments
234 `(#:test-target "test"
235 #:phases
236 (modify-phases %standard-phases
237 (delete 'configure)
238 (add-after 'unpack 'enable-verbose-tests
239 (lambda _
240 (substitute* "Makefile"
241 (("ruby ./minirake" m)
242 (string-append m " --verbose")))
243 #t))
244 (add-after 'unpack 'disable-broken-tests
245 (lambda _
246 (substitute* "mrbgems/mruby-io/test/io.rb"
247 (("assert\\('IO.popen.+$" m)
248 (string-append m "skip \"Hangs in the Guix build environment\"\n"))
249 (("assert\\('IO#isatty.+$" m)
250 (string-append m "skip \"Disable for Guix; there is no /dev/tty\"\n"))
251 ;; This one is really weird. The *expected* output is all wrong.
252 (("assert\\('`cmd`.*" m)
253 (string-append m "skip \"Disable for Guix\"\n"))
254 (("echo foo")
255 (string-append (which "echo") " foo")))
256 #t))
257 ;; There is no install target
258 (replace 'install
259 (lambda* (#:key outputs #:allow-other-keys)
260 (let* ((out (assoc-ref outputs "out"))
261 (bin (string-append out "/bin"))
262 (lib (string-append out "/lib")))
263 (mkdir-p bin)
264 (copy-recursively "build/host/bin" bin)
265 (mkdir-p lib)
266 (copy-recursively "build/host/lib" lib))
267 #t)))))
268 (native-inputs
269 `(("ruby" ,ruby)
270 ("bison" ,bison)))
271 (home-page "https://github.com/mruby/mruby")
272 (synopsis "Lightweight Ruby")
273 (description "mruby is the lightweight implementation of the Ruby
274language. Its syntax is Ruby 1.9 compatible. mruby can be linked and
275embedded within your application.")
276 (license license:expat)))
277
34372d39
RW
278(define-public ruby-commander
279 (package
280 (name "ruby-commander")
281 (version "4.4.7")
282 (source
283 (origin
284 (method url-fetch)
285 (uri (rubygems-uri "commander" version))
286 (sha256
287 (base32
288 "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg"))))
289 (build-system ruby-build-system)
290 (arguments
291 `(#:test-target "spec"
292 #:phases
293 (modify-phases %standard-phases
294 ;; Don't run or require rubocop, the code linting tool, as this is a
295 ;; bit unnecessary.
296 (add-after 'unpack 'dont-run-rubocop
297 (lambda _
298 (substitute* "Rakefile"
299 ((".*rubocop.*") "")
300 ((".*RuboCop.*") ""))
301 #t)))))
302 (propagated-inputs
303 `(("ruby-highline" ,ruby-highline)))
304 (native-inputs
305 `(("bundler" ,bundler)
306 ("ruby-rspec-core" ,ruby-rspec-core)
307 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
308 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
309 ("ruby-simplecov" ,ruby-simplecov)))
310 (home-page "https://github.com/commander-rb/commander")
311 (synopsis "Library for building Ruby command-line executables")
312 (description
313 "Commander aims to be a complete solution for Ruby command-line
314executables. Commander bridges the gap between other terminal related
315libraries (OptionParser, HighLine), while providing many new features, and an
316elegant API.")
317 (license license:expat)))
318
823ed097
CB
319(define-public ruby-highline
320 (package
321 (name "ruby-highline")
6742c6f6 322 (version "2.0.1")
823ed097
CB
323 (source
324 (origin
325 (method url-fetch)
326 (uri (rubygems-uri "highline" version))
327 (sha256
328 (base32
6742c6f6 329 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
823ed097
CB
330 (build-system ruby-build-system)
331 (arguments
332 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
333 (native-inputs
334 `(("bundler" ,bundler)
335 ("ruby-code-statistics" ,ruby-code-statistics)))
336 (synopsis
337 "HighLine helps you build command-line interfaces")
338 (description
339 "HighLine provides a high-level IO library that provides validation,
340type conversion, and more for command-line interfaces. HighLine also includes
341a menu system for providing multiple options to the user.")
342 (home-page "https://github.com/JEG2/highline")
343 (license (list license:gpl2 license:ruby))))
344
bda0c139
DT
345(define-public ruby-hoe
346 (package
347 (name "ruby-hoe")
d0d2dd24 348 (version "3.21.0")
bda0c139 349 (source (origin
e83c6d00
DT
350 (method url-fetch)
351 (uri (rubygems-uri "hoe" version))
bda0c139
DT
352 (sha256
353 (base32
d0d2dd24 354 "0qid0n56mgsjvq5ksxajv0gb92akky8imwgvw22ajms5g4fd6nf4"))))
bda0c139 355 (build-system ruby-build-system)
d0d2dd24
CB
356 (arguments
357 '(#:phases
358 (modify-phases %standard-phases
359 ;; One of the tests fails if the SOURCE_DATE_EPOCH environment
360 ;; variable is set, so unset it for the duration of the tests.
361 ;;
362 ;; TestHoe#test_possibly_better
363 ;; [/tmp/guix-build-ruby-hoe-3.20.0.drv-0/gem/test/test_hoe.rb:250]:
364 ;; Expected: 2019-11-12 00:00:00 UTC
365 ;; Actual: 1970-01-01 00:00:00 UTC
366 (add-before 'check 'unset-SOURCE-DATE-EPOCH
367 (lambda _
368 (unsetenv "SOURCE_DATE_EPOCH")
369 #t))
370 (add-after 'check 'set-SOURCE-DATE-EPOCH-again
371 (lambda _
372 (setenv "SOURCE_DATE_EPOCH" "1")
373 #t)))))
bda0c139
DT
374 (synopsis "Ruby project management helper")
375 (description
376 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
377maintain, and release projects and includes a dynamic plug-in system allowing
378for easy extensibility. Hoe ships with plug-ins for all the usual project
379tasks including rdoc generation, testing, packaging, deployment, and
380announcement.")
2f3800e5 381 (home-page "https://www.zenspider.com/projects/hoe.html")
bda0c139
DT
382 (license license:expat)))
383
022170dc
PP
384(define-public ruby-rake-compiler
385 (package
386 (name "ruby-rake-compiler")
7ac6bd00 387 (version "1.1.0")
022170dc
PP
388 (source (origin
389 (method url-fetch)
e83c6d00 390 (uri (rubygems-uri "rake-compiler" version))
022170dc
PP
391 (sha256
392 (base32
7ac6bd00 393 "0l4hg21v0phfrfsc2hilgmwvn2imxr0byqh8dv16bya1s5d3km0q"))))
022170dc
PP
394 (build-system ruby-build-system)
395 (arguments
e83c6d00 396 '(#:tests? #f)) ; needs cucumber
022170dc 397 (synopsis "Building and packaging helper for Ruby native extensions")
e881752c 398 (description "Rake-compiler provides a framework for building and
022170dc
PP
399packaging native C and Java extensions in Ruby.")
400 (home-page "https://github.com/rake-compiler/rake-compiler")
401 (license license:expat)))
402
30f08487
RW
403(define-public ruby-rsync
404 (package
405 (name "ruby-rsync")
406 (version "1.0.9")
407 (source
408 (origin
409 (method url-fetch)
410 (uri (rubygems-uri "rsync" version))
411 (sha256
412 (base32
413 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
414 (build-system ruby-build-system)
415 (arguments
416 '(#:test-target "spec"
417 #:phases
418 (modify-phases %standard-phases
419 (add-after 'unpack 'remove-coveralls-requirement
420 (lambda _
421 (substitute* "spec/spec_helper.rb"
422 (("require 'coveralls'") "")
423 (("Coveralls.wear!") ""))
424 #t)))))
425 (native-inputs
426 `(("bundler" ,bundler)
427 ("rsync" ,rsync)
428 ("ruby-rspec-core" ,ruby-rspec-core)
429 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
430 ("ruby-rspec-mocks" ,ruby-rspec-mocks)))
431 (home-page "https://github.com/jbussdieker/ruby-rsync")
432 (synopsis "Ruby wrapper around rsync")
433 (description
434 "Ruby Rsync is a Ruby library that can synchronize files between remote
435hosts by wrapping the @file{rsync} binary.")
436 (license license:expat)))
437
acf735f2
DT
438(define-public ruby-i18n
439 (package
440 (name "ruby-i18n")
92dddf6b 441 (version "1.7.0")
acf735f2
DT
442 (source (origin
443 (method url-fetch)
e83c6d00 444 (uri (rubygems-uri "i18n" version))
acf735f2
DT
445 (sha256
446 (base32
92dddf6b 447 "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl"))))
acf735f2
DT
448 (build-system ruby-build-system)
449 (arguments
0bfdfd37 450 '(#:tests? #f)) ; no tests
cbb50182 451 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
acf735f2
DT
452 (synopsis "Internationalization library for Ruby")
453 (description "Ruby i18n is an internationalization and localization
454solution for Ruby programs. It features translation and localization,
455interpolation of values to translations, pluralization, customizable
456transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
457translation data, custom key/scope separator, custom exception handlers, and
458an extensible architecture with a swappable backend.")
92dddf6b 459 (home-page "https://github.com/ruby-i18n/i18n")
acf735f2 460 (license license:expat)))
eb0c2dd6 461
62b138ca
CB
462(define-public ruby-iruby
463 (package
464 (name "ruby-iruby")
465 (version "0.3")
466 (source
467 (origin
468 (method url-fetch)
469 (uri (rubygems-uri "iruby" version))
470 (sha256
471 (base32
472 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
473 (build-system ruby-build-system)
474 (arguments
475 ;; TODO: Tests currently fail.
476 ;;
477 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
478 ;;
479 ;; 1) Failure:
480 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
481 ;; In [ expected
482 ;;
483 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
484 '(#:tests? #f
485 #:phases
486 (modify-phases %standard-phases
487 (add-after 'unpack 'patch-ipython
488 (lambda* (#:key inputs #:allow-other-keys)
489 (substitute* "lib/iruby/command.rb"
490 (("version = `")
491 (string-append
492 "version = `"
493 (assoc-ref inputs "python-ipython")
494 "/bin/"))
495 (("Kernel\\.exec\\('")
496 (string-append
497 "Kernel.exec('"
498 (assoc-ref inputs "python-ipython")
499 "/bin/")))
500 #t)))))
501 (inputs
502 `(("python-ipython" ,python-ipython)))
503 (propagated-inputs
504 `(("ruby-bond" ,ruby-bond)
505 ("ruby-data_uri" ,ruby-data_uri)
506 ("ruby-mimemagic" ,ruby-mimemagic)
507 ("ruby-multi-json" ,ruby-multi-json)
508 ("ruby-cztop" ,ruby-cztop)
509 ;; Optional inputs
510 ("ruby-pry" ,ruby-pry)))
511 (synopsis "Ruby kernel for Jupyter/IPython")
512 (description
513 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
514notebook).")
515 (home-page "https://github.com/SciRuby/iruby")
516 (license license:expat)))
517
eb0c2dd6
DT
518;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
519;; dependencies use RSpec for their test suites! To avoid these circular
520;; dependencies, we disable tests for all of the RSpec-related packages.
87688ff3 521(define-public ruby-rspec-support
eb0c2dd6
DT
522 (package
523 (name "ruby-rspec-support")
bee67d18 524 (version "3.8.0")
eb0c2dd6
DT
525 (source (origin
526 (method url-fetch)
e83c6d00 527 (uri (rubygems-uri "rspec-support" version))
eb0c2dd6
DT
528 (sha256
529 (base32
bee67d18 530 "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609"))))
eb0c2dd6
DT
531 (build-system ruby-build-system)
532 (arguments
533 '(#:tests? #f)) ; avoid dependency cycles
534 (synopsis "RSpec support library")
535 (description "Support utilities for RSpec gems.")
536 (home-page "https://github.com/rspec/rspec-support")
537 (license license:expat)))
538
539(define-public ruby-rspec-core
540 (package
541 (name "ruby-rspec-core")
bee67d18 542 (version "3.8.0")
eb0c2dd6
DT
543 (source (origin
544 (method url-fetch)
e83c6d00 545 (uri (rubygems-uri "rspec-core" version))
eb0c2dd6
DT
546 (sha256
547 (base32
bee67d18 548 "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p"))))
eb0c2dd6
DT
549 (build-system ruby-build-system)
550 (arguments
551 '(#:tests? #f)) ; avoid dependency cycles
552 (propagated-inputs
553 `(("ruby-rspec-support" ,ruby-rspec-support)))
554 (synopsis "RSpec core library")
555 (description "Rspec-core provides the RSpec test runner and example
556groups.")
557 (home-page "https://github.com/rspec/rspec-core")
558 (license license:expat)))
e6962009 559
64c318f2
BW
560(define-public ruby-rspec-core-2
561 (package (inherit ruby-rspec-core)
562 (version "2.14.8")
563 (source (origin
564 (method url-fetch)
565 (uri (rubygems-uri "rspec-core" version))
566 (sha256
567 (base32
568 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
569 (propagated-inputs `())))
570
20c05ea9 571(define-public ruby-diff-lcs
e6962009
DT
572 (package
573 (name "ruby-diff-lcs")
e2fcef39 574 (version "1.3")
e6962009
DT
575 (source (origin
576 (method url-fetch)
e83c6d00 577 (uri (rubygems-uri "diff-lcs" version))
e6962009
DT
578 (sha256
579 (base32
e2fcef39 580 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
e6962009
DT
581 (build-system ruby-build-system)
582 (arguments
583 '(#:tests? #f)) ; avoid dependency cycles
584 (synopsis "Compute the difference between two Enumerable sequences")
585 (description "Diff::LCS computes the difference between two Enumerable
586sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
587It includes utilities to create a simple HTML diff output format and a
588standard diff-like tool.")
589 (home-page "https://github.com/halostatue/diff-lcs")
590 (license license:expat)))
591
592(define-public ruby-rspec-expectations
593 (package
594 (name "ruby-rspec-expectations")
bee67d18 595 (version "3.8.2")
e6962009
DT
596 (source (origin
597 (method url-fetch)
e83c6d00 598 (uri (rubygems-uri "rspec-expectations" version))
e6962009
DT
599 (sha256
600 (base32
bee67d18 601 "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm"))))
e6962009
DT
602 (build-system ruby-build-system)
603 (arguments
604 '(#:tests? #f)) ; avoid dependency cycles
605 (propagated-inputs
606 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 607 ("ruby-diff-lcs" ,ruby-diff-lcs)))
e881752c 608 (synopsis "RSpec expectations library")
e6962009
DT
609 (description "Rspec-expectations provides a simple API to express expected
610outcomes of a code example.")
611 (home-page "https://github.com/rspec/rspec-expectations")
612 (license license:expat)))
4f2a0cac 613
fb157f25
BW
614(define-public ruby-rspec-expectations-2
615 (package (inherit ruby-rspec-expectations)
616 (version "2.14.5")
617 (source (origin
618 (method url-fetch)
619 (uri (rubygems-uri "rspec-expectations" version))
620 (sha256
621 (base32
622 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
623 (propagated-inputs
624 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
625
999ffb26
DM
626(define-public ruby-rspec-its
627 (package
628 (name "ruby-rspec-its")
b2244c68 629 (version "1.3.0")
999ffb26
DM
630 (source
631 (origin
3306f02a
CB
632 (method git-fetch)
633 (uri (git-reference
634 (url "https://github.com/rspec/rspec-its.git")
635 (commit (string-append "v" version))))
636 (file-name (git-file-name name version))
999ffb26
DM
637 (sha256
638 (base32
b2244c68 639 "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p"))))
999ffb26
DM
640 (build-system ruby-build-system)
641 (arguments
3306f02a
CB
642 `(#:test-target "spec"
643 #:phases
644 (modify-phases %standard-phases
645 (add-after 'unpack 'dont-install-gems-from-gemfile
646 (lambda _
647 (substitute* "Gemfile"
648 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
649 ""))
650 #t))
7c8eb479 651 (add-before 'build 'loosen-ffi-requirement
b2244c68 652 (lambda _
7c8eb479 653 ;; Accept any version of ruby-ffi.
b2244c68 654 (substitute* "Gemfile"
7c8eb479
MB
655 ((" gem 'ffi', '~> 1\\.9\\.25'")
656 " gem 'ffi'"))
b2244c68 657 #t))
3306f02a
CB
658 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
659 (lambda _
660 (substitute* "rspec-its.gemspec"
661 (("rake.*") "rake'\n")
b2244c68
BH
662 (("spec.add_development_dependency 'cucumber'.*")
663 "spec.add_development_dependency 'cucumber'\n")
3306f02a 664 (("bundler.*") "bundler'\n")
b2244c68 665 (("\"aruba.*") "'aruba'\n"))
3306f02a 666 #t)))))
999ffb26
DM
667 (propagated-inputs
668 `(("ruby-rspec-core" ,ruby-rspec-core)
669 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
3306f02a
CB
670 (native-inputs
671 `(("bundler" ,bundler)
672 ("ruby-cucumber" ,ruby-cucumber)
b2244c68 673 ("ruby-ffi" ,ruby-ffi)
3306f02a
CB
674 ("ruby-aruba" ,ruby-aruba)))
675 (synopsis "RSpec extension that provides the @code{its} method")
676 (description
677 "RSpec::Its provides the its method as a short-hand to specify the expected
678value of an attribute. For example, one can use @code{its(:size)\\{should
679eq(1)\\}}.")
999ffb26
DM
680 (home-page "https://github.com/rspec/rspec-its")
681 (license license:expat)))
682
d7bd7016
MC
683;;; This variant is used to break a cycle with ruby-protobuf.
684(define-public ruby-rspec-its-minimal
685 (hidden-package
686 (package
687 (inherit ruby-rspec-its)
688 (arguments
689 (substitute-keyword-arguments (package-arguments ruby-rspec-its)
690 ((#:tests? _ #f) #f)))
691 (native-inputs '()))))
692
4f2a0cac
DT
693(define-public ruby-rspec-mocks
694 (package
695 (name "ruby-rspec-mocks")
bee67d18 696 (version "3.8.0")
4f2a0cac
DT
697 (source (origin
698 (method url-fetch)
e83c6d00 699 (uri (rubygems-uri "rspec-mocks" version))
4f2a0cac
DT
700 (sha256
701 (base32
bee67d18 702 "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp"))))
4f2a0cac
DT
703 (build-system ruby-build-system)
704 (arguments
705 '(#:tests? #f)) ; avoid dependency cycles
706 (propagated-inputs
707 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 708 ("ruby-diff-lcs" ,ruby-diff-lcs)))
4f2a0cac
DT
709 (synopsis "RSpec stubbing and mocking library")
710 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
711support for stubbing and mocking.")
712 (home-page "https://github.com/rspec/rspec-mocks")
713 (license license:expat)))
d4fde1f2 714
6da9adeb
BW
715(define-public ruby-rspec-mocks-2
716 (package (inherit ruby-rspec-mocks)
717 (version "2.14.6")
718 (source (origin
719 (method url-fetch)
720 (uri (rubygems-uri "rspec-mocks" version))
721 (sha256
722 (base32
723 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
724 (propagated-inputs
725 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
726
198bc648
CB
727(define-public ruby-rspec-rerun
728 (package
729 (name "ruby-rspec-rerun")
730 (version "1.1.0")
731 (source
732 (origin
733 (method url-fetch)
734 (uri (rubygems-uri "rspec-rerun" version))
735 (sha256
736 (base32
737 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
738 (build-system ruby-build-system)
739 (arguments
740 '(;; No included tests
741 #:tests? #f))
742 (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
743 (synopsis "Track failed RSpec tests to re-run them")
744 (description
745 "This package provides an automated way to track, and then re-run failed
746RSpec tests.")
747 (home-page "https://github.com/dblock/rspec-rerun")
748 (license license:expat)))
749
9c4cb1ef
CD
750(define-public ruby-rspec-wait
751 (package
752 (name "ruby-rspec-wait")
753 (version "0.0.9")
754 (source
755 (origin
756 (method url-fetch)
757 (uri (rubygems-uri "rspec-wait" version))
758 (sha256
759 (base32
760 "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
761 (build-system ruby-build-system)
762 (arguments
763 '(#:phases
764 (modify-phases %standard-phases
765 (replace 'check
766 (lambda _
767 (invoke "rake" "spec"))))))
768 (native-inputs
769 `(("bundler" ,bundler)))
770 (propagated-inputs
771 `(("ruby-rspec" ,ruby-rspec)))
772 (home-page "https://github.com/laserlemon/rspec-wait")
773 (synopsis "Wait for conditions in RSpec")
774 (description
775 "RSpec::Wait strives to make it easier to test asynchronous or slow
776interactions.")
777 (license license:expat)))
778
d4fde1f2
DT
779(define-public ruby-rspec
780 (package
781 (name "ruby-rspec")
bee67d18 782 (version "3.8.0")
d4fde1f2
DT
783 (source (origin
784 (method url-fetch)
e83c6d00 785 (uri (rubygems-uri "rspec" version))
d4fde1f2
DT
786 (sha256
787 (base32
bee67d18 788 "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3"))))
d4fde1f2
DT
789 (build-system ruby-build-system)
790 (arguments
791 '(#:tests? #f)) ; avoid dependency cycles
792 (propagated-inputs
793 `(("ruby-rspec-core" ,ruby-rspec-core)
794 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
795 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
796 (synopsis "Behavior-driven development framework for Ruby")
797 (description "RSpec is a behavior-driven development (BDD) framework for
798Ruby. This meta-package includes the RSpec test runner, along with the
799expectations and mocks frameworks.")
35739712 800 (home-page "https://rspec.info/")
d4fde1f2 801 (license license:expat)))
2cbc105b 802
5ac984b3
BW
803(define-public ruby-rspec-2
804 (package (inherit ruby-rspec)
805 (version "2.14.1")
806 (source (origin
807 (method url-fetch)
808 (uri (rubygems-uri "rspec" version))
809 (sha256
810 (base32
811 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
812 (propagated-inputs
813 `(("ruby-rspec-core" ,ruby-rspec-core-2)
814 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
815 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
816
2cbc105b
DT
817;; Bundler is yet another source of circular dependencies, so we must disable
818;; its test suite as well.
819(define-public bundler
820 (package
821 (name "bundler")
cbee8e31 822 (version "2.1.4")
2cbc105b
DT
823 (source (origin
824 (method url-fetch)
e83c6d00 825 (uri (rubygems-uri "bundler" version))
2cbc105b
DT
826 (sha256
827 (base32
cbee8e31 828 "12glbb1357x91fvd004jgkw7ihlkpc9dwr349pd7j83isqhls0ah"))))
2cbc105b
DT
829 (build-system ruby-build-system)
830 (arguments
831 '(#:tests? #f)) ; avoid dependency cycles
832 (synopsis "Ruby gem bundler")
833 (description "Bundler automatically downloads and installs a list of gems
834specified in a \"Gemfile\", as well as their dependencies.")
2f3800e5 835 (home-page "https://bundler.io/")
2cbc105b 836 (license license:expat)))
98b87b82 837
cf36174f
RW
838(define-public ruby-builder
839 (package
840 (name "ruby-builder")
42b48db2 841 (version "3.2.3")
cf36174f
RW
842 (source (origin
843 (method url-fetch)
844 (uri (rubygems-uri "builder" version))
845 (sha256
846 (base32
42b48db2 847 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
cf36174f
RW
848 (build-system ruby-build-system)
849 (arguments
850 `(#:phases
851 (modify-phases %standard-phases
852 (add-after 'unpack 'do-not-use-rvm
853 (lambda _
854 (substitute* "rakelib/tags.rake"
855 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
856 #t)))))
857 (synopsis "Ruby library to create structured data")
858 (description "Builder provides a number of builder objects that make it
859easy to create structured data. Currently the following builder objects are
860supported: XML Markup and XML Events.")
861 (home-page "https://github.com/jimweirich/builder")
862 (license license:expat)))
863
566f71f8
CB
864(define-public ruby-bump
865 (package
866 (name "ruby-bump")
867 (version "0.7.0")
868 (source
869 (origin
870 (method url-fetch)
871 (uri (rubygems-uri "bump" version))
872 (sha256
873 (base32
874 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
875 (build-system ruby-build-system)
876 (arguments
877 '(;; No included tests
878 #:tests? #f))
879 (synopsis "Tool for working with Rubygems")
880 (description
881 "Bump provides commands to manage Rubygem versioning, updating to the
882next patch version for example.")
883 (home-page "https://github.com/gregorym/bump")
884 (license license:expat)))
885
ad79eb55
RW
886(define-public ruby-rjb
887 (package
888 (name "ruby-rjb")
aeb4e61e 889 (version "1.5.5")
ad79eb55
RW
890 (source (origin
891 (method url-fetch)
892 (uri (rubygems-uri "rjb" version))
893 (sha256
894 (base32
aeb4e61e 895 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
ad79eb55
RW
896 (build-system ruby-build-system)
897 (arguments
898 `(#:tests? #f ; no rakefile
899 #:phases
900 (modify-phases %standard-phases
901 (add-before 'build 'set-java-home
902 (lambda* (#:key inputs #:allow-other-keys)
903 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
904 #t)))))
905 (native-inputs
d2540f80 906 `(("jdk" ,icedtea "jdk")))
ad79eb55
RW
907 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
908 (description "RJB is a bridge program that connects Ruby and Java via the
909Java Native Interface.")
2f3800e5 910 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
ad79eb55
RW
911 (license license:lgpl2.1+)))
912
f9ae2c06
PP
913(define-public ruby-log4r
914 (package
915 (name "ruby-log4r")
916 (version "1.1.10")
917 (source
918 (origin
919 (method url-fetch)
920 (uri (rubygems-uri "log4r" version))
921 (sha256
922 (base32
923 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
924 (build-system ruby-build-system)
925 (arguments
926 '(#:tests? #f)) ; no Rakefile in gem
927 (synopsis "Flexible logging library for Ruby")
928 (description "Comprehensive and flexible logging library written
929in Ruby for use in Ruby programs. It features a hierarchical logging
930system of any number of levels, custom level names, logger
931inheritance, multiple output destinations per log event, execution
932tracing, custom formatting, thread safteyness, XML and YAML
933configuration, and more.")
934 (home-page "http://log4r.rubyforge.org/")
935 (license license:bsd-3)))
936
71a03c29
RW
937(define-public ruby-atoulme-antwrap
938 (package
939 (name "ruby-atoulme-antwrap")
940 (version "0.7.5")
941 (source (origin
942 (method url-fetch)
943 (uri (rubygems-uri "atoulme-Antwrap" version))
944 (sha256
945 (base32
946 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
947 (build-system ruby-build-system)
948 ;; Test data required for most of the tests are not included.
949 (arguments `(#:tests? #f))
950 (native-inputs
951 `(("ruby-hoe" ,ruby-hoe)))
952 (inputs
953 `(("ruby-rjb" ,ruby-rjb)))
954 (synopsis "Ruby wrapper for the Ant build tool")
955 (description "Antwrap is a Ruby module that wraps the Apache Ant build
956tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
957script.")
958 (home-page "http://rubyforge.org/projects/antwrap/")
959 (license license:expat)))
960
fe1ddad5
RW
961(define-public ruby-atoulme-saikuro
962 (package
963 (name "ruby-atoulme-saikuro")
964 (version "1.2.1")
965 (source (origin
966 (method url-fetch)
967 (uri (rubygems-uri "atoulme-Saikuro" version))
968 (sha256
969 (base32
970 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
971 (build-system ruby-build-system)
972 ;; FIXME: There are no unit tests. The tests are demonstrations of the
973 ;; "saikuro" tool.
974 (arguments `(#:tests? #f))
975 (synopsis "Cyclomatic complexity analyzer")
976 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
977given Ruby source code Saikuro will generate a report listing the cyclomatic
978complexity of each method found. In addition, Saikuro counts the number of
979lines per method and can generate a listing of the number of tokens on each
980line of code.")
981 (home-page "http://www.github.com/atoulme/Saikuro")
982 ;; File headers contain the BSD-3 license and the README.rdoc says that
983 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
984 ;; of the Expat license.
985 (license license:bsd-3)))
986
34138e42
BW
987(define-public ruby-asciidoctor
988 (package
989 (name "ruby-asciidoctor")
9933a8e7 990 (version "1.5.7.1")
34138e42
BW
991 (source
992 (origin
993 (method url-fetch)
994 (uri (rubygems-uri "asciidoctor" version))
995 (sha256
996 (base32
9933a8e7 997 "0v52bzc72cvg7zfgq27pa4mgyf29dx9m20fghrw1xmvwgd519n1w"))))
34138e42
BW
998 (build-system ruby-build-system)
999 (arguments
1000 `(#:test-target "test:all"
1001 #:phases
1002 (modify-phases %standard-phases
1003 (add-before 'check 'remove-circular-tests
1004 (lambda _
1005 ;; Remove tests that require circular dependencies to load or pass.
1006 (delete-file "test/invoker_test.rb")
1007 (delete-file "test/converter_test.rb")
1008 (delete-file "test/options_test.rb")
1009 #t)))))
1010 (native-inputs
1011 `(("ruby-minitest" ,ruby-minitest)
1012 ("ruby-nokogiri" ,ruby-nokogiri)
1013 ("ruby-asciimath" ,ruby-asciimath)
1014 ("ruby-coderay" ,ruby-coderay)))
1015 (synopsis "Converter from AsciiDoc content to other formats")
1016 (description
1017 "Asciidoctor is a text processor and publishing toolchain for converting
20860819 1018AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other formats.")
bba082a1 1019 (home-page "https://asciidoctor.org")
34138e42
BW
1020 (license license:expat)))
1021
d5840f77
CB
1022(define-public ruby-ast
1023 (package
1024 (name "ruby-ast")
1025 (version "2.4.0")
1026 (source
1027 (origin
1028 (method url-fetch)
1029 (uri (rubygems-uri "ast" version))
1030 (sha256
1031 (base32
1032 "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7"))))
1033 (build-system ruby-build-system)
1034 (arguments
1035 '(#:phases
1036 (modify-phases %standard-phases
1037 (add-after 'unpack 'remove-coveralls-requirement
1038 (lambda _
1039 (substitute* "test/helper.rb"
1040 (("require 'coveralls'") "")
1041 (("Coveralls::SimpleCov::Formatter") ""))
1042 #t))
1043 (add-after 'extract-gemspec 'remove-unnecessary-requirements
1044 (lambda _
1045 (substitute* "ast.gemspec"
1046 ((".*coveralls.*") "\n")
1047 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
1048 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
1049 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n"))
1050 #t)))))
1051 (native-inputs
1052 `(("bundler" ,bundler)
1053 ("ruby-simplecov" ,ruby-simplecov)
1054 ("ruby-json-pure" ,ruby-json-pure)
1055 ("ruby-mime-times" ,ruby-mime-types)
1056 ("ruby-yard" ,ruby-yard)
1057 ("ruby-kramdown" ,ruby-kramdown)
1058 ("ruby-rest-client" ,ruby-rest-client)
1059 ("ruby-bacon" ,ruby-bacon)
1060 ("ruby-bacon-colored-output" ,ruby-bacon-colored-output)
1061 ("ruby-racc" ,ruby-racc)))
1062 (synopsis "Library for working with Abstract Syntax Trees")
1063 (description
1064 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
1065It does this through immutable data structures.")
1066 (home-page "https://whitequark.github.io/ast/")
1067 (license license:expat)))
1068
b88502c9
BW
1069(define-public ruby-sporkmonger-rack-mount
1070 ;; Testing the addressable gem requires a newer commit than that released, so
1071 ;; use an up to date version.
1072 (let ((revision "1")
1073 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
1074 (package
1075 (name "ruby-sporkmonger-rack-mount")
1076 (version (git-version "0.8.3" revision commit))
1077 (source (origin
1078 (method git-fetch)
1079 (uri (git-reference
1080 (url "https://github.com/sporkmonger/rack-mount.git")
1081 (commit commit)))
1082 (file-name (git-file-name name version))
1083 (sha256
1084 (base32
1085 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
1086 (build-system ruby-build-system)
1087 (arguments
1088 ;; Tests currently fail so disable them.
1089 ;; https://github.com/sporkmonger/rack-mount/pull/1
1090 `(#:tests? #f))
1091 (propagated-inputs `(("ruby-rack" ,ruby-rack)))
1092 (synopsis "Stackable dynamic tree based Rack router")
1093 (description
1094 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
1095continue trying routes if the response returns pass. This allows multiple
1096routes to be nested or stacked on top of each other.")
1097 (home-page "https://github.com/sporkmonger/rack-mount")
1098 (license license:expat))))
1099
2f9e0b68
RW
1100(define-public ruby-ci-reporter
1101 (package
1102 (name "ruby-ci-reporter")
1103 (version "2.0.0")
1104 (source (origin
1105 (method url-fetch)
1106 (uri (rubygems-uri "ci_reporter" version))
1107 (sha256
1108 (base32
1109 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
1110 (build-system ruby-build-system)
1111 (arguments
1112 `(#:test-target "rspec"))
1113 (propagated-inputs
1114 `(("ruby-builder" ,ruby-builder)))
1115 (native-inputs
1116 `(("bundler" ,bundler)
1117 ("ruby-rspec" ,ruby-rspec)))
1118 (synopsis "Generate XML reports of runs test")
1119 (description
1120 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
1121you to generate XML reports of your test runs. The resulting files can be
1122read by a continuous integration system that understands Ant's JUnit report
1123format.")
1124 (home-page "https://github.com/nicksieger/ci_reporter")
1125 (license license:expat)))
1126
2ed201c1
CB
1127(define-public ruby-contracts
1128 (package
1129 (name "ruby-contracts")
1130 (version "0.16.0")
1131 (source
1132 (origin
1133 (method url-fetch)
1134 (uri (rubygems-uri "contracts" version))
1135 (sha256
1136 (base32
1137 "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"))))
1138 (build-system ruby-build-system)
1139 (arguments
1140 '(#:test-target "spec"
1141 #:phases
1142 (modify-phases %standard-phases
1143 ;; Don't run or require rubocop, the code linting tool, as this is a
1144 ;; bit unnecessary.
1145 (add-after 'unpack 'dont-run-rubocop
1146 (lambda _
1147 (substitute* "Rakefile"
1148 ((".*rubocop.*") "")
1149 ((".*RuboCop.*") ""))
1150 #t)))))
1151 (native-inputs
1152 `(("ruby-rspec" ,ruby-rspec)))
1153 (synopsis "Method contracts for Ruby")
1154 (description
1155 "This library provides contracts for Ruby. A contract describes the
1156correct inputs and output for a method, and will raise an error if a incorrect
1157value is found.")
1158 (home-page "https://github.com/egonSchiele/contracts.ruby")
1159 (license license:bsd-2)))
1160
6f8bf0eb
CB
1161(define-public ruby-crack
1162 (package
1163 (name "ruby-crack")
1164 (version "0.4.3")
1165 (source
1166 (origin
1167 (method url-fetch)
1168 (uri (rubygems-uri "crack" version))
1169 (sha256
1170 (base32
1171 "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k"))))
1172 (build-system ruby-build-system)
1173 (arguments
1174 `(#:phases
1175 (modify-phases %standard-phases
1176 (replace 'check
1177 (lambda* (#:key tests? #:allow-other-keys)
1178 (when tests?
1179 (for-each (lambda (file)
1180 (display file)(display "\n")
1181 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
1182 (find-files "test" ".*rb$")))
1183 #t)))))
1184 (propagated-inputs
1185 `(("ruby-safe-yaml" ,ruby-safe-yaml)))
1186 (synopsis "Simple JSON and XML parsing for Ruby")
1187 (description
1188 "@code{crack} provides really simple JSON and XML parsing, extracted from
1189code in Merb and Rails.")
1190 (home-page "https://github.com/jnunemaker/crack")
1191 (license license:expat)))
1192
bef3506e
CB
1193(define-public ruby-cliver
1194 (package
1195 (name "ruby-cliver")
1196 (version "0.3.2")
1197 (source
1198 (origin
1199 (method url-fetch)
1200 (uri (rubygems-uri "cliver" version))
1201 (sha256
1202 (base32
1203 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
1204 (build-system ruby-build-system)
1205 (arguments
1206 '(#:phases
1207 (modify-phases %standard-phases
1208 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
1209 ;; would be nice, but the tests look to be incompatible:
1210 ;;
1211 ;; NoMethodError: undefined method `last_comment'
1212 (replace 'check
1213 (lambda* (#:key tests? #:allow-other-keys)
1214 (when tests?
1215 (invoke "rspec"))
1216 #t)))))
1217 (native-inputs
1218 `(("bundler" ,bundler)
1219 ("ruby-rspec" ,ruby-rspec-2)))
1220 (synopsis "Assertions for command-line dependencies in Ruby")
1221 (description
1222 "@code{cliver} provides a way to detect missing command-line
1223dependencies, including versions.")
1224 (home-page "https://github.com/yaauie/cliver")
1225 (license license:expat)))
1226
fe5dd5f4
CB
1227(define-public ruby-czmq-ffi-gen
1228 (package
1229 (name "ruby-czmq-ffi-gen")
1230 (version "0.13.0")
1231 (source
1232 (origin
1233 (method url-fetch)
1234 (uri (rubygems-uri "czmq-ffi-gen" version))
1235 (sha256
1236 (base32
1237 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
1238 (build-system ruby-build-system)
1239 (arguments
1240 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
1241 #:phases
1242 (modify-phases %standard-phases
1243 (add-after 'unpack 'patch-lib_dirs
1244 (lambda* (#:key inputs #:allow-other-keys)
1245 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
1246 (("lib\\_dirs = \\[.*\\]")
1247 (string-append "lib_dirs = ['"
1248 (assoc-ref inputs "czmq") "/lib"
1249 "']")))
1250 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
1251 (("lib\\_dirs = \\[.*\\]")
1252 (string-append "lib_dirs = ['"
1253 (assoc-ref inputs "zeromq") "/lib"
1254 "']"))))))))
1255 (inputs
1256 `(("zeromq" ,zeromq)
1257 ("czmq" ,czmq)))
1258 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
1259 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
1260 (description
1261 "These Ruby bindings are not intended to be directly used, but rather
1262used by higher level bindings like those provided by CZTop.")
1263 (home-page
1264 "https://github.com/paddor/czmq-ffi-gen")
1265 (license license:isc)))
1266
d0afff26
CB
1267(define-public ruby-cztop
1268 (package
1269 (name "ruby-cztop")
1270 (version "0.12.2")
1271 (source
1272 (origin
1273 (method url-fetch)
1274 (uri (rubygems-uri "cztop" version))
1275 (sha256
1276 (base32
1277 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
1278 (build-system ruby-build-system)
1279 (arguments
1280 '(#:test-target "spec"
1281 #:phases
1282 (modify-phases %standard-phases
1283 (add-after 'unpack 'patch-lib_paths
1284 (lambda* (#:key inputs #:allow-other-keys)
1285 (substitute* "lib/cztop/poller/zmq.rb"
1286 (("lib\\_paths = \\[.*\\]")
1287 (string-append "lib_paths = ['"
1288 (assoc-ref inputs "zeromq") "/lib"
1289 "']"))))))))
1290 (native-inputs
1291 `(("bundler" ,bundler)
1292 ("ruby-rspec" ,ruby-rspec)))
1293 (inputs
1294 `(("zeromq" ,zeromq)))
1295 (propagated-inputs
1296 `(("ruby-czmq-ffi-gen" ,ruby-czmq-ffi-gen)))
1297 (synopsis "CZMQ Ruby bindings")
1298 (description
1299 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
1300CZMQ. The focus of of CZTop is on being easy to use and providing first class
1301support for security mechanisms.")
1302 (home-page "https://github.com/paddor/cztop")
1303 (license license:isc)))
1304
b004fb6a
RW
1305(define-public ruby-saikuro-treemap
1306 (package
1307 (name "ruby-saikuro-treemap")
1308 (version "0.2.0")
1309 (source (origin
1310 (method url-fetch)
1311 (uri (rubygems-uri "saikuro_treemap" version))
1312 (sha256
1313 (base32
1314 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
1315 (build-system ruby-build-system)
1316 ;; Some of the tests fail because the generated JSON has keys in a
1317 ;; different order. This is a problem with the test suite rather than any
1318 ;; of the involved libraries.
1319 (arguments `(#:tests? #f))
1320 (propagated-inputs
1321 `(("ruby-json-pure" ,ruby-json-pure)
1322 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
1323 (synopsis "Generate complexity treemap based on saikuro analysis")
1324 (description
1325 "This gem generates a treemap showing the complexity of Ruby code on
1326which it is run. It uses Saikuro under the covers to analyze Ruby code
1327complexity.")
7bf837fd 1328 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
b004fb6a
RW
1329 (license license:expat)))
1330
92b37500
CB
1331(define-public ruby-oauth2
1332 (package
1333 (name "ruby-oauth2")
5dd10be5 1334 (version "1.4.2")
92b37500
CB
1335 (source
1336 (origin
1337 (method url-fetch)
1338 (uri (rubygems-uri "oauth2" version))
1339 (sha256
5dd10be5 1340 (base32 "15i9z4j5pcjkr30lkcd79xzbr4kpmy0bqgwa436fqyqk646fv036"))))
92b37500
CB
1341 (build-system ruby-build-system)
1342 (arguments
5dd10be5 1343 '(#:tests? #f)) ; no included tests
92b37500
CB
1344 (propagated-inputs
1345 `(("ruby-faraday" ,ruby-faraday)
1346 ("ruby-jwt" ,ruby-jwt)
1347 ("ruby-multi-json" ,ruby-multi-json)
1348 ("ruby-multi-xml" ,ruby-multi-xml)
1349 ("ruby-rack" ,ruby-rack)))
1350 (synopsis "Ruby wrapper for the OAuth 2.0")
1351 (description
1352 "This package provides a Ruby wrapper for the OAuth 2.0 protocol built
1353with a similar style to the original OAuth spec.")
1354 (home-page "https://github.com/oauth-xx/oauth2")
1355 (license license:expat)))
1356
29dc4823
CB
1357(define-public ruby-omniauth
1358 (package
1359 (name "ruby-omniauth")
a7b7817d 1360 (version "1.9.1")
29dc4823
CB
1361 (source
1362 (origin
1363 (method url-fetch)
1364 (uri (rubygems-uri "omniauth" version))
1365 (sha256
a7b7817d 1366 (base32 "002vi9gwamkmhf0dsj2im1d47xw2n1jfhnzl18shxf3ampkqfmyz"))))
29dc4823
CB
1367 (build-system ruby-build-system)
1368 (arguments
1369 '(#:tests? #f)) ; No included tests
1370 (propagated-inputs
1371 `(("ruby-hashie" ,ruby-hashie)
1372 ("ruby-rack" ,ruby-rack)))
1373 (synopsis "Generalized Rack framework for multiple-provider authentication")
1374 (description
1375 "This package provides a generalized Rack framework for multiple-provider
1376authentication.")
1377 (home-page "https://github.com/omniauth/omniauth")
1378 (license license:expat)))
1379
d6084cdb
CB
1380(define-public ruby-omniauth-oauth2
1381 (package
1382 (name "ruby-omniauth-oauth2")
1383 (version "1.6.0")
1384 (source
1385 (origin
1386 (method url-fetch)
1387 (uri (rubygems-uri "omniauth-oauth2" version))
1388 (sha256
1389 (base32
1390 "11mi36l9d97r77q99jnafdc1yaa0a9wahhpp7dj7ank8q52g7g79"))))
1391 (build-system ruby-build-system)
1392 (arguments
1393 '(#:phases
1394 (modify-phases %standard-phases
1395 (add-after 'unpack 'remove-unnecessary-dependencies
1396 (lambda _
1397 ;; The coveralls gem submits coverage information to an online
1398 ;; service, and is unnecessary when running the tests
1399 (substitute* "Gemfile"
1400 ((".*coveralls\"") ""))
1401 (substitute* "spec/helper.rb"
1402 (("require \"coveralls\"") "")
1403 (("Coveralls::SimpleCov::Formatter") ""))
1404 #t)))))
1405 (propagated-inputs
1406 `(("ruby-oauth2" ,ruby-oauth2)
1407 ("ruby-omniauth" ,ruby-omniauth)))
1408 (native-inputs
1409 `(("bundler" ,bundler)
1410 ("ruby-rspec" ,ruby-rspec)
1411 ("ruby-simplecov" ,ruby-simplecov)
1412 ("ruby-rack-test" ,ruby-rack-test)
1413 ("ruby-webmock" ,ruby-webmock-2)))
1414 (synopsis "Abstract OAuth2 strategy for OmniAuth")
1415 (description
1416 "This library provides a generic OAuth2 strategy for OmniAuth. It
1417doesn't provide a way to gather user information, so should be used as a
1418building block for authentication strategies.")
1419 (home-page "https://github.com/omniauth/omniauth-oauth2")
1420 (license license:expat)))
1421
433e3154
CB
1422(define-public ruby-open4
1423 (package
1424 (name "ruby-open4")
1425 (version "1.3.4")
1426 (source
1427 (origin
1428 (method url-fetch)
1429 (uri (rubygems-uri "open4" version))
1430 (sha256
1431 (base32
1432 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
1433 (build-system ruby-build-system)
1434 (arguments
1435 '(#:phases
1436 (modify-phases %standard-phases
1437 (add-after 'unpack 'patch
1438 (lambda _
1439 (substitute* "rakefile"
1440 ;; Update the Rakefile so it works
1441 (("-rubygems") "-rrubygems")
1442 (("Config") "RbConfig"))
1443 #t))
1444 (add-before 'check 'set-LIB
1445 (lambda _
1446 ;; This is used in the rakefile when running the tests
1447 (setenv "LIB" "open4")
1448 #t)))))
1449 (synopsis "Open child processes from Ruby and manage them easily")
1450 (description
1451 "@code{Open4} is a Ruby library to run child processes and manage their
1452input and output.")
1453 (home-page "https://github.com/ahoward/open4")
1454 (license license:ruby)))
1455
cef87ed6
CB
1456(define-public ruby-options
1457 (package
1458 (name "ruby-options")
1459 (version "2.3.2")
1460 (source
1461 (origin
1462 (method url-fetch)
1463 (uri (rubygems-uri "options" version))
1464 (sha256
1465 (base32
1466 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
1467 (build-system ruby-build-system)
1468 (arguments
1469 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
1470 #:phases
1471 (modify-phases %standard-phases
1472 (add-before 'check 'set-LIB
1473 (lambda _
1474 ;; This is used in the Rakefile, and setting it avoids an issue
1475 ;; with running the tests.
fe27238c
CB
1476 (setenv "LIB" "options")
1477 #t)))))
cef87ed6
CB
1478 (synopsis "Ruby library to parse options from *args cleanly")
1479 (description
1480 "The @code{options} library helps with parsing keyword options in Ruby
1481functions.")
1482 (home-page "https://github.com/ahoward/options")
1483 (license license:ruby)))
1484
d15dbe83
CB
1485(define-public ruby-erubi
1486 (package
1487 (name "ruby-erubi")
1488 (version "1.8.0")
1489 (source
1490 (origin
1491 (method url-fetch)
1492 (uri (rubygems-uri "erubi" version))
1493 (sha256
1494 (base32
1495 "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1"))))
1496 (build-system ruby-build-system)
1497 (synopsis "ERB template engine for Ruby")
1498 (description
1499 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
1500Erubis")
1501 (home-page "https://github.com/jeremyevans/erubi")
1502 (license license:expat)))
1503
d64ebebd
BW
1504(define-public ruby-erubis
1505 (package
1506 (name "ruby-erubis")
1507 (version "2.7.0")
1508 (source
1509 (origin
1510 (method url-fetch)
1511 (uri (rubygems-uri "erubis" version))
1512 (sha256
1513 (base32
1514 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
1515 (build-system ruby-build-system)
1516 (arguments
1517 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
1518 (synopsis "Implementation of embedded Ruby (eRuby)")
1519 (description
1520 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
1521features such as multi-language support, auto escaping, auto trimming spaces
1522around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
1523support.")
1524 (home-page "http://www.kuwata-lab.com/erubis/")
1525 (license license:expat)))
1526
3ca43524
CB
1527(define-public ruby-execjs
1528 (package
1529 (name "ruby-execjs")
1530 (version "2.7.0")
1531 (source
1532 (origin
1533 ;; fetch from github as the gem does not contain testing code
1534 (method git-fetch)
1535 (uri (git-reference
1536 (url "https://github.com/rails/execjs.git")
1537 (commit (string-append "v" version))))
1538 (file-name (git-file-name name version))
1539 (sha256
1540 (base32
1541 "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
1542 (build-system ruby-build-system)
1543 (native-inputs
1544 `(("bundler" ,bundler)
1545 ;; The test suite tests all the available backends. Currenly, this just
1546 ;; means the node backend.
1547 ;;
1548 ;; PASSED: test:node
1549 ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
1550 ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
1551 ("node" ,node)))
1552 (synopsis "Run JavaScript code from Ruby")
1553 (description
1554 "ExecJS lets you run JavaScript code from Ruby. It automatically picks a
1555runtime to evaluate your JavaScript program, then returns the result to you as
1556a Ruby object.")
1557 (home-page "https://github.com/rails/execjs")
1558 (license license:expat)))
1559
6623a151
MB
1560(define-public ruby-fakefs
1561 (package
1562 (name "ruby-fakefs")
1563 (version "1.2.2")
1564 (home-page "https://github.com/fakefs/fakefs")
1565 (source (origin
1566 ;; The Rubygems release does not contain tests.
1567 (method git-fetch)
1568 (uri (git-reference
1569 (url home-page)
1570 (commit (string-append "v" version))))
1571 (file-name (git-file-name name version))
1572 (sha256
1573 (base32
1574 "008dq9knyip2bfbl0mrk8b8r7bv0k3bf128wcfqsgy1rqal4mgwk"))))
1575 (build-system ruby-build-system)
1576 (arguments
1577 '(#:phases (modify-phases %standard-phases
1578 (replace 'replace-git-ls-files
1579 (lambda _
1580 (substitute* "fakefs.gemspec"
1581 (("`git ls-files lib README.md LICENSE`")
1582 "`find lib README.md LICENSE -type f | sort`"))
1583 #t))
1584 (add-before 'check 'remove-version-constraints
1585 (lambda _
1586 ;; Drop hard version requirements for test dependencies.
1587 (substitute* "fakefs.gemspec"
1588 (("(.*add_development_dependency .*), .*" _ dep)
1589 (string-append dep "\n")))
a011f67b 1590 #t)))))
6623a151
MB
1591 (native-inputs
1592 `(("ruby-bump" ,ruby-bump)
1593 ("ruby-maxitest" ,ruby-maxitest)
1594 ("ruby-rubocop" ,ruby-rubocop)
1595 ("ruby-rspec" ,ruby-rspec)))
1596 (synopsis "Fake file system for Ruby")
1597 (description
1598 "This package provides a fake file system for use in test suites. It
1599avoids the need for manually creating temporary directories, or dealing
1600with platform intricacies in @code{File} and @code{FileUtils}.")
1601 (license license:expat)))
1602
cc53e630
RW
1603(define-public ruby-orderedhash
1604 (package
1605 (name "ruby-orderedhash")
1606 (version "0.0.6")
1607 (source (origin
1608 (method url-fetch)
1609 (uri (rubygems-uri "orderedhash" version))
1610 (sha256
1611 (base32
1612 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
1613 (build-system ruby-build-system)
1614 (arguments
1615 '(#:tests? #f)) ; no test suite
1616 (synopsis "Ruby library providing an order-preserving hash")
1617 (description "Orderedhash is a Ruby library providing a hash
1618implementation that preserves the order of items and features some array-like
1619extensions.")
1620 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
1621 (license license:public-domain)))
1622
28c5d42d
PP
1623(define-public ruby-libxml
1624 (package
1625 (name "ruby-libxml")
acbc5062 1626 (version "3.0.0")
28c5d42d
PP
1627 (source
1628 (origin
1629 (method url-fetch)
1630 (uri (rubygems-uri "libxml-ruby" version))
1631 (sha256
1632 (base32
acbc5062 1633 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
28c5d42d
PP
1634 (build-system ruby-build-system)
1635 (inputs
1636 `(("zlib" ,zlib)
1637 ("libxml2" ,libxml2)))
1638 (arguments
1639 '(#:tests? #f ; test suite hangs for unknown reason
1640 #:gem-flags
1641 (list "--"
1642 (string-append "--with-xml2-include="
1643 (assoc-ref %build-inputs "libxml2")
1644 "/include/libxml2" ))))
1645 (synopsis "Ruby bindings for GNOME Libxml2")
1646 (description "The Libxml-Ruby project provides Ruby language bindings for
1647the GNOME Libxml2 XML toolkit.")
2f3800e5 1648 (home-page "https://xml4r.github.com/libxml-ruby")
28c5d42d
PP
1649 (license license:expat)))
1650
b3222518
CB
1651(define-public ruby-lino
1652 (package
1653 (name "ruby-lino")
1654 (version "1.1.0")
1655 (source
1656 (origin
1657 (method url-fetch)
1658 (uri (rubygems-uri "lino" version))
1659 (sha256
1660 (base32
1661 "11d29g0fk372b9fcpyr0k6hxm2b4j4igpysmi542hgbbgqgp9cd3"))))
1662 (build-system ruby-build-system)
1663 (arguments
1664 '(#:tests? #f)) ; No included tests
1665 (propagated-inputs
1666 `(("ruby-hamster" ,ruby-hamster)
1667 ("ruby-open4" ,ruby-open4)))
1668 (synopsis "Build and execute commands in Ruby")
1669 (description
1670 "@code{Lino} provides an interface to run external commands. It provides
1671an interface to add options as well as managing the standard input, output and
1672error streams.")
1673 (home-page "https://github.com/tobyclemson/lino")
1674 (license license:expat)))
1675
8b9bde07
RW
1676(define-public ruby-xml-simple
1677 (package
1678 (name "ruby-xml-simple")
1679 (version "1.1.5")
1680 (source (origin
1681 (method url-fetch)
1682 (uri (rubygems-uri "xml-simple" version))
1683 (sha256
1684 (base32
1685 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
1686 (build-system ruby-build-system)
1687 (arguments
1688 '(#:tests? #f)) ; no test suite
1689 (synopsis "Simple Ruby library for XML processing")
1690 (description "This library provides a simple API for XML processing in
1691Ruby.")
1692 (home-page "https://github.com/maik/xml-simple")
1693 (license license:ruby)))
1694
2cb3ab48
RW
1695(define-public ruby-thor
1696 (package
1697 (name "ruby-thor")
bb719d6a 1698 (version "1.0.1")
2cb3ab48 1699 (source (origin
bb719d6a
MB
1700 ;; Pull from git because the gem has no tests.
1701 (method git-fetch)
1702 (uri (git-reference
1703 (url "https://github.com/erikhuda/thor")
1704 (commit (string-append "v" version))))
1705 (file-name (git-file-name name version))
2cb3ab48
RW
1706 (sha256
1707 (base32
bb719d6a 1708 "1anrx5vynk57hn5c8ig5pgkmcsbj9q5mvckd5rviw1jid7n89k57"))))
2cb3ab48
RW
1709 (build-system ruby-build-system)
1710 (arguments
bb719d6a
MB
1711 '(#:phases (modify-phases %standard-phases
1712 (add-after 'unpack 'fix-readline-tests
1713 (lambda _
1714 ;; Ensure Readline is initialized before running the
1715 ;; test to avoid a type clash with the mock ::Readline.
1716 ;; See <https://github.com/erikhuda/thor/pull/717>.
1717 (substitute* "spec/line_editor/readline_spec.rb"
1718 (("unless defined\\? ::Readline" all)
1719 (string-append "Thor::LineEditor::Readline.available?\n"
1720 all)))
1721 #t))
1722 (add-after 'unpack 'remove-coveralls-dependency
1723 (lambda _
1724 ;; Do not hook the test suite into the online
1725 ;; coveralls service.
1726 (substitute* "Gemfile"
1727 ((".*coveralls.*") ""))
1728 (substitute* "spec/helper.rb"
1729 (("require \"coveralls\"") "")
1730 (("Coveralls::SimpleCov::Formatter") "")
1731 ;; Also drop the WebMock dependency which is only
1732 ;; present to allow a coveralls.io connection, and
1733 ;; would otherwise introduce a circular dependency.
1734 (("require \"webmock/rspec\"") "")
1735 (("WebMock\\.disable_net_connect.*") ""))
1736 #t))
1737 (add-after 'unpack 'disable-network-tests
1738 (lambda _
1739 ;; These tests attempt to look up example.com.
1740 (substitute* "spec/actions/file_manipulation_spec.rb"
1741 (("it \"accepts (https?) remote sources" _ proto)
1742 (string-append "xit \"accepts " proto " remote sources")))
1743 #t))
1744 (add-after 'unpack 'disable-quality-tests
1745 (lambda _
1746 ;; These tests attempt to check the git repository for
1747 ;; tabs vs spaces, double vs single quotes, etc, and
1748 ;; depend on the git checkout.
1749 (delete-file "spec/quality_spec.rb")
1750 #t))
1751 (add-before 'check 'make-files-writable
1752 (lambda _
1753 ;; The tests needs rw access to the test suite.
1754 (for-each make-file-writable (find-files "spec"))
1755 #t))
1756 (replace 'check
1757 (lambda _
1758 (invoke "rspec" "spec"))))))
2cb3ab48 1759 (native-inputs
bb719d6a
MB
1760 `(("ruby-rspec" ,ruby-rspec)
1761 ("ruby-simplecov" ,ruby-simplecov)))
2cb3ab48
RW
1762 (synopsis "Ruby toolkit for building command-line interfaces")
1763 (description "Thor is a toolkit for building powerful command-line
1764interfaces.")
1765 (home-page "http://whatisthor.com/")
1766 (license license:expat)))
1767
ec79018e
RW
1768(define-public ruby-lumberjack
1769 (package
1770 (name "ruby-lumberjack")
41700efa 1771 (version "1.0.13")
ec79018e
RW
1772 (source (origin
1773 (method url-fetch)
1774 (uri (rubygems-uri "lumberjack" version))
1775 (sha256
1776 (base32
41700efa 1777 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
ec79018e
RW
1778 (build-system ruby-build-system)
1779 (native-inputs
8be62d3f
BW
1780 `(("ruby-rspec" ,ruby-rspec)
1781 ("ruby-timecop" ,ruby-timecop)))
ec79018e
RW
1782 (synopsis "Logging utility library for Ruby")
1783 (description "Lumberjack is a simple logging utility that can be a drop in
1784replacement for Logger or ActiveSupport::BufferedLogger. It provides support
1785for automatically rolling log files even with multiple processes writing the
1786same log file.")
7bf837fd 1787 (home-page "https://github.com/bdurand/lumberjack")
ec79018e
RW
1788 (license license:expat)))
1789
2a9ce5cb
CB
1790(define-public ruby-rbnacl
1791 (package
1792 (name "ruby-rbnacl")
1793 (version "6.0.1")
1794 (source
1795 (origin
1796 (method url-fetch)
1797 (uri (rubygems-uri "rbnacl" version))
1798 (sha256
1799 (base32
1800 "0ajxy5kj2jw09wdsla3jmha8w07vj5l14288xr9djpl327g3lzhn"))))
1801 (build-system ruby-build-system)
1802 (arguments
1803 `(#:phases
1804 (modify-phases %standard-phases
1805 (add-after 'unpack 'remove-unnecessary-dependencies
1806 (lambda _
1807 ;; Coveralls relates to a network service, and Rubocop to code
1808 ;; linting and both are unnecessary to run the tests
1809 (substitute* "Gemfile"
1810 ((".*rubocop.*") "\n")
1811 ((".*guard-rspec.*") "\n")
1812 ((".*coveralls.*") "\n"))
1813 (substitute* "spec/spec_helper.rb"
1814 (("require \"coveralls\"") "")
1815 (("Coveralls.wear!") ""))
1816 #t))
1817 (add-after 'unpack 'use-libsodium-from-store
1818 (lambda* (#:key inputs #:allow-other-keys)
1819 (substitute* '("lib/rbnacl/init.rb"
1820 "lib/rbnacl/sodium.rb")
1821 (("ffi_lib \\[.+\\]")
1822 (string-append "ffi_lib [\""
1823 (assoc-ref inputs "libsodium") "/lib/libsodium.so"
1824 "\"]")))
1825 #t))
1826 ;; Run Rspec directly to avoid the Rubocop dependency in the Rakefile
1827 (replace 'check
1828 (lambda* (#:key tests? #:allow-other-keys)
1829 (when tests?
1830 (invoke "rspec"))
1831 #t)))))
1832 (propagated-inputs
1833 `(("ruby-ffi" ,ruby-ffi)))
1834 (inputs
1835 `(("libsodium" ,libsodium)))
1836 (native-inputs
1837 `(("bundler" ,bundler)
1838 ("ruby-rspec" ,ruby-rspec)))
1839 (synopsis "Ruby FFI binding to libsodium")
1840 (description
1841 "This package provides Ruby FFI bindings to the Networking and
1842Cryptography (NaCl) library, also known as libsodium. This provides a
1843high-level toolkit for building cryptographic systems and protocols.")
1844 (home-page "https://github.com/crypto-rb/rbnacl")
1845 (license license:expat)))
1846
70b4cf38
RW
1847(define-public ruby-nenv
1848 (package
1849 (name "ruby-nenv")
12313cd0 1850 (version "0.3.0")
70b4cf38
RW
1851 (source (origin
1852 (method url-fetch)
1853 (uri (rubygems-uri "nenv" version))
1854 (sha256
1855 (base32
12313cd0 1856 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
70b4cf38
RW
1857 (build-system ruby-build-system)
1858 (arguments
1859 `(#:tests? #f)) ; no tests included
1860 (native-inputs
1861 `(("ruby-rspec" ,ruby-rspec)
1862 ("bundler" ,bundler)))
1863 (synopsis "Ruby interface for modifying the environment")
1864 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
1865and inspect the environment.")
1866 (home-page "https://github.com/e2/nenv")
1867 (license license:expat)))
1868
af59d4b4
MB
1869(define-public ruby-ptools
1870 (package
1871 (name "ruby-ptools")
1872 (version "1.3.5")
1873 (source (origin
1874 (method url-fetch)
1875 (uri (rubygems-uri "ptools" version))
1876 (sha256
1877 (base32
1878 "1jb1h1nsk9zwykpniw8filbsk26kjsdlpk5wz6w0zyamcd41h87j"))))
1879 (build-system ruby-build-system)
1880 (arguments
1881 '(#:phases (modify-phases %standard-phases
1882 (add-after 'unpack 'patch-/bin/ls
1883 (lambda _
1884 (substitute* "test/test_binary.rb"
1885 (("/bin/ls")
1886 (which "ls")))
1887 #t))
1888 (add-before 'install 'create-gem
1889 (lambda _
1890 ;; Do not attempt to sign the gem.
1891 (substitute* "Rakefile"
1892 (("spec\\.signing_key = .*")
1893 ""))
1894 (invoke "rake" "gem:create"))))))
1895 (synopsis "Extra methods for Ruby's @code{File} class")
1896 (description
1897 "The @dfn{ptools} (power tools) library extends Ruby's core @code{File}
1898class with many additional methods modelled after common POSIX tools, such as
1899@code{File.which} for finding executables, @code{File.tail} to print the last
1900lines of a file, @code{File.wc} to count words, and so on.")
1901 (home-page "https://github.com/djberg96/ptools")
1902 (license license:artistic2.0)))
1903
8d9e9f28
RW
1904(define-public ruby-permutation
1905 (package
1906 (name "ruby-permutation")
1907 (version "0.1.8")
1908 (source (origin
1909 (method url-fetch)
1910 (uri (rubygems-uri "permutation" version))
1911 (sha256
1912 (base32
1913 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
1914 (build-system ruby-build-system)
1915 (arguments
1916 `(#:phases
1917 (modify-phases %standard-phases
1918 (add-after 'unpack 'fix-rakefile
1919 (lambda _
1920 (substitute* "Rakefile"
1921 (("require 'rake/gempackagetask'")
1922 "require 'rubygems/package_task'")
1923 (("include Config") ""))
1924 #t))
1925 (replace 'check
1926 (lambda _
9923d5a4 1927 (invoke "ruby" "-Ilib" "test/test.rb"))))))
8d9e9f28
RW
1928 (synopsis "Library to perform operations with sequence permutations")
1929 (description "This package provides a Ruby library to perform different
1930operations with permutations of sequences, such as strings and arrays.")
2f3800e5 1931 (home-page "https://flori.github.io/permutation")
8d9e9f28
RW
1932 (license license:gpl2))) ; GPL 2 only
1933
c5d14d42
RW
1934(define-public ruby-shellany
1935 (package
1936 (name "ruby-shellany")
1937 (version "0.0.1")
1938 (source (origin
1939 (method url-fetch)
1940 (uri (rubygems-uri "shellany" version))
1941 (sha256
1942 (base32
1943 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
1944 (build-system ruby-build-system)
1945 (arguments
1946 `(#:test-target "default"
1947 #:phases
1948 (modify-phases %standard-phases
1949 (add-after 'unpack 'fix-version-test
1950 (lambda _
1951 (substitute* "spec/shellany_spec.rb"
1952 (("^RSpec") "require \"shellany\"\nRSpec"))
1953 #t)))))
1954 (native-inputs
1955 `(("ruby-rspec" ,ruby-rspec)
1956 ("ruby-nenv" ,ruby-nenv)
1957 ("bundler" ,bundler)))
1958 (synopsis "Capture command output")
1959 (description "Shellany is a Ruby library providing functions to capture
1960the output produced by running shell commands.")
1961 (home-page "https://rubygems.org/gems/shellany")
1962 (license license:expat)))
1963
d152162f
RW
1964(define-public ruby-notiffany
1965 (package
1966 (name "ruby-notiffany")
8c1e4a4f 1967 (version "0.1.3")
d152162f
RW
1968 (source (origin
1969 (method url-fetch)
1970 (uri (rubygems-uri "notiffany" version))
1971 (sha256
1972 (base32
8c1e4a4f 1973 "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk"))))
d152162f
RW
1974 (build-system ruby-build-system)
1975 ;; Tests are not included in the gem.
1976 (arguments `(#:tests? #f))
1977 (propagated-inputs
1978 `(("ruby-shellany" ,ruby-shellany)
1979 ("ruby-nenv" ,ruby-nenv)))
1980 (native-inputs
1981 `(("bundler" ,bundler)))
01eb17de
VC
1982 (synopsis "Wrapper library for notification libraries")
1983 (description "Notiffany is a Ruby wrapper library for notification
d152162f
RW
1984libraries such as Libnotify.")
1985 (home-page "https://github.com/guard/notiffany")
1986 (license license:expat)))
1987
96bf7521
MB
1988(define-public ruby-forking-test-runner
1989 (package
1990 (name "ruby-forking-test-runner")
1991 (version "1.6.0")
1992 (home-page "https://github.com/grosser/forking_test_runner")
1993 (source (origin
1994 (method git-fetch)
1995 (uri (git-reference (url home-page)
1996 (commit (string-append "v" version))))
1997 (file-name (git-file-name name version))
1998 (sha256
1999 (base32
2000 "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m"))))
2001 (build-system ruby-build-system)
2002 (arguments
2003 '(#:test-target "spec"
2004 ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has
2005 ;; 1.4.1, which in turn breaks the tests that use ActiveRecord.
2006 #:tests? #f
2007 #:phases (modify-phases %standard-phases
2008 (replace 'replace-git-ls-files
2009 (lambda _
2010 (substitute* "forking_test_runner.gemspec"
2011 (("`git ls-files lib/ bin/ MIT-LICENSE`")
2012 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
2013 #t))
2014 (add-before 'check 'remove-version-constraints
2015 (lambda _
2016 ;; Ignore hard coded version constraints for the tests.
2017 (delete-file "Gemfile.lock")
2018 #t))
2019 (add-before 'check 'set-HOME
2020 (lambda _
2021 ;; Many tests invoke Bundler, and fails when Bundler
2022 ;; warns that /homeless-shelter does not exist.
2023 (setenv "HOME" "/tmp")
2024 #t)))))
2025 (native-inputs
2026 `(("ruby-activerecord" ,ruby-activerecord)
2027 ("ruby-bump" ,ruby-bump)
2028 ("ruby-rspec" ,ruby-rspec)
2029 ("ruby-sqlite3" ,ruby-sqlite3)
2030 ("ruby-wwtd" ,ruby-wwtd)))
2031 (propagated-inputs
2032 `(("ruby-parallel-tests" ,ruby-parallel-tests)))
2033 (synopsis "Run every test in a fork")
2034 (description
2035 "This package is a wrapper around @code{parallel_tests} that runs every
2036test in a fork to avoid pollution and get clean output per test.")
2037 (license license:expat)))
2038
8528365b
RW
2039(define-public ruby-formatador
2040 (package
2041 (name "ruby-formatador")
2042 (version "0.2.5")
2043 (source (origin
2044 (method url-fetch)
2045 (uri (rubygems-uri "formatador" version))
2046 (sha256
2047 (base32
2048 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
2049 (build-system ruby-build-system)
2050 ;; Circular dependency: Tests require ruby-shindo, which requires
2051 ;; ruby-formatador at runtime.
2052 (arguments `(#:tests? #f))
2053 (synopsis "Ruby library to format text on stdout")
2054 (description "Formatador is a Ruby library to format text printed to the
2055standard output stream.")
7bf837fd 2056 (home-page "https://github.com/geemus/formatador")
8528365b
RW
2057 (license license:expat)))
2058
5437c741
CB
2059(define-public ruby-fuubar
2060 (package
2061 (name "ruby-fuubar")
2062 (version "2.3.2")
2063 (source
2064 (origin
2065 ;; Fetch from the git repository, as the gem package doesn't include
2066 ;; the tests.
2067 (method git-fetch)
2068 (uri (git-reference
2069 (url "https://github.com/thekompanee/fuubar.git")
2070 (commit (string-append "releases/v" version))))
2071 (file-name (git-file-name name version))
2072 (sha256
2073 (base32
2074 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
2075 (build-system ruby-build-system)
2076 (arguments
2077 '(;; TODO: Some tests fail, unsure why.
2078 ;; 21 examples, 7 failures
2079 #:tests? #f
2080 #:phases
2081 (modify-phases %standard-phases
2082 (add-before 'build 'delete-certificate
2083 (lambda _
2084 ;; Remove 's.cert_chain' as we do not build with a private key
2085 (substitute* "fuubar.gemspec"
2086 ((".*cert_chain.*") "")
2087 ((".*signing_key.*") ""))
2088 #t))
2089 (replace 'check
2090 (lambda* (#:key tests? #:allow-other-keys)
2091 (when tests?
2092 (invoke "rspec"))
2093 #t)))))
2094 (native-inputs
2095 `(("bundler" ,bundler)))
2096 (propagated-inputs
2097 `(("ruby-rspec-core" ,ruby-rspec-core)
2098 ("ruby-progressbar" ,ruby-progressbar)))
2099 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
2100 (description
2101 "Fuubar is an RSpec formatter that uses a progress bar instead of a
2102string of letters and dots as feedback. It also stops on the first test
2103failure.")
2104 (home-page "https://github.com/thekompanee/fuubar")
2105 (license license:expat)))
2106
8ea991e3
CB
2107(define-public ruby-haml
2108 (package
2109 (name "ruby-haml")
2110 (version "5.0.4")
2111 (source
2112 (origin
2113 (method url-fetch)
2114 (uri (rubygems-uri "haml" version))
2115 (sha256
2116 (base32
2117 "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"))))
2118 (build-system ruby-build-system)
2119 (arguments
2120 '(#:tests? #f)) ; No included tests
2121 (propagated-inputs
2122 `(("ruby-tilt" ,ruby-tilt)
2123 ("ruby-temple" ,ruby-temple)))
2124 (synopsis "Haml is a Ruby library to generate HTML documents")
2125 (description
2126 "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of
2127HTML or XML that is designed to express the structure of documents using
2128indentation rather than closing tags. It was originally envisioned as a
2129plugin for Ruby on Rails, but it can function as a stand-alone templating
2130engine.")
2131 (home-page "http://haml.info/")
2132 (license license:expat)))
2133
353b7eb8
CB
2134(define-public ruby-hamster
2135 (package
2136 (name "ruby-hamster")
2137 (version "3.0.0")
2138 (source
2139 (origin
2140 (method url-fetch)
2141 (uri (rubygems-uri "hamster" version))
2142 (sha256
2143 (base32
2144 "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
2145 (build-system ruby-build-system)
2146 (arguments
2147 '(#:phases
2148 (modify-phases %standard-phases
2149 (add-after 'unpack 'remove-unnecessary-dependencies
2150 (lambda _
2151 ;; pry is a debugging tool, and is unnecessary when running the
2152 ;; tests
2153 (substitute* "spec/lib/hamster/vector/insert_spec.rb"
2154 (("require 'pry'") ""))
2155 (substitute* "spec/spec_helper.rb"
2156 (("require \"pry\"") "")
2157 ;; CodeClimate is an online service, and is unnecessary for
2158 ;; running the tests
2159 (("require \"codeclimate-test-reporter\"") "")
2160 (("CodeClimate.*\n") ""))
2161 #t))
2162 ;; No Rakefile is included, so run rspec directly.
2163 (replace 'check
2164 (lambda* (#:key tests? #:allow-other-keys)
2165 (when tests?
2166 (invoke "rspec"))
2167 #t)))))
2168 (propagated-inputs
2169 `(("ruby-concurrent" ,ruby-concurrent)))
2170 (native-inputs
2171 `(("ruby-rspec" ,ruby-rspec)))
2172 (synopsis "Efficient, immutable, thread-safe collection classes for Ruby")
2173 (description
2174 "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector},
2175@code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an
2176immutable queue or stack).")
2177 (home-page "https://github.com/hamstergem/hamster")
2178 (license license:expat)))
2179
21781436
CB
2180(define-public ruby-hashdiff
2181 (package
2182 (name "ruby-hashdiff")
2183 (version "0.3.8")
2184 (source
2185 (origin
2186 (method url-fetch)
2187 (uri (rubygems-uri "hashdiff" version))
2188 (sha256
2189 (base32
2190 "19ykg5pax8798nh1yv71adkx0zzs7gn2rxjj86v7nsw0jba5lask"))))
2191 (build-system ruby-build-system)
2192 (arguments
2193 '(#:phases
2194 (modify-phases %standard-phases
2195 ;; Run tests directly via rspec to avoid Rake issue:
2196 ;; NoMethodError: undefined method `last_comment'
2197 (replace 'check
2198 (lambda* (#:key tests? #:allow-other-keys)
2199 (when tests?
2200 (invoke "rspec"))
2201 #t)))))
2202 (native-inputs
2203 `(("bundler" ,bundler)
2204 ("ruby-rspec" ,ruby-rspec-2)))
2205 (synopsis "HashDiff computes the smallest difference between two hashes")
2206 (description
2207 "HashDiff is a Ruby library to compute the smallest difference between
2208two hashes.")
2209 (home-page "https://github.com/liufengyun/hashdiff")
2210 (license license:expat)))
2211
3cc8e029
MB
2212(define-public ruby-hydra
2213 ;; No releases yet.
2214 (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
2215 (revision "0"))
2216 (package
2217 (name "ruby-hydra")
2218 (version (git-version "0.0" revision commit))
2219 (home-page "https://github.com/hyphenation/hydra")
2220 (source (origin
2221 (method git-fetch)
2222 (uri (git-reference (url home-page) (commit commit)))
2223 (file-name (git-file-name name version))
2224 (sha256
2225 (base32
2226 "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
2227 (build-system ruby-build-system)
2228 (arguments
2229 '(#:phases (modify-phases %standard-phases
2230 (add-after 'unpack 'make-files-writable
2231 (lambda _
2232 (for-each make-file-writable (find-files "."))
2233 #t))
2234 (replace 'check
2235 (lambda _
2236 (invoke "rspec"))))))
2237 (native-inputs
2238 `(("ruby-rspec" ,ruby-rspec)))
2239 (propagated-inputs
2240 `(("ruby-byebug" ,ruby-byebug)))
2241 (synopsis "Ruby hyphenation patterns")
2242 (description
2243 "ruby-hydra is a Ruby library for working with hyphenation patterns.")
2244 (license license:expat))))
2245
7ac4610f
RW
2246(define-public ruby-shindo
2247 (package
2248 (name "ruby-shindo")
2249 (version "0.3.8")
2250 (source (origin
2251 (method url-fetch)
2252 (uri (rubygems-uri "shindo" version))
2253 (sha256
2254 (base32
2255 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
2256 (build-system ruby-build-system)
2257 (arguments
2258 `(#:test-target "shindo_tests"
2259 #:phases
2260 (modify-phases %standard-phases
2261 (add-after 'unpack 'fix-tests
0b060e34
CB
2262 (lambda _
2263 (substitute* "tests/tests_helper.rb"
2264 (("-rubygems") ""))
2265 (substitute* "Rakefile"
2266 (("system \"shindo") "system \"./bin/shindo")
2267 ;; This test doesn't work, so we disable it.
2268 (("fail \"The build_error test should fail") "#")
2269 ((" -rubygems") ""))
2270 #t)))))
7ac4610f
RW
2271 (propagated-inputs
2272 `(("ruby-formatador" ,ruby-formatador)))
2273 (synopsis "Simple depth first Ruby testing")
2274 (description "Shindo is a simple depth first testing library for Ruby.")
2275 (home-page "https://github.com/geemus/shindo")
2276 (license license:expat)))
2277
f13636f2
RW
2278(define-public ruby-rubygems-tasks
2279 (package
2280 (name "ruby-rubygems-tasks")
f0f5f2d3 2281 (version "0.2.5")
f13636f2
RW
2282 (source (origin
2283 (method url-fetch)
2284 (uri (rubygems-uri "rubygems-tasks" version))
2285 (sha256
2286 (base32
f0f5f2d3 2287 "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx"))))
f13636f2
RW
2288 (build-system ruby-build-system)
2289 ;; Tests need Internet access.
2290 (arguments `(#:tests? #f))
2291 (native-inputs
2292 `(("ruby-rspec" ,ruby-rspec)
2293 ("ruby-yard" ,ruby-yard)))
2294 (synopsis "Rake tasks for managing and releasing Ruby Gems")
2295 (description "Rubygems-task provides Rake tasks for managing and releasing
2296Ruby Gems.")
2297 (home-page "https://github.com/postmodern/rubygems-tasks")
2298 (license license:expat)))
2299
cb6bc5df
CB
2300(define-public ruby-rubyzip
2301 (package
2302 (name "ruby-rubyzip")
2303 (version "1.2.1")
2304 (source
2305 (origin
2306 (method url-fetch)
2307 (uri (rubygems-uri "rubyzip" version))
2308 (sha256
2309 (base32
2310 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
2311 (build-system ruby-build-system)
2312 (arguments
2313 '(#:phases
2314 (modify-phases %standard-phases
2315 (add-before 'check 'patch-tests
2316 (lambda* (#:key inputs #:allow-other-keys)
2317 (substitute* "test/gentestfiles.rb"
2318 (("/usr/bin/zip")
2319 (string-append
2320 (assoc-ref inputs "zip") "/bin/zip")))
2321 (substitute* "test/input_stream_test.rb"
2322 (("/usr/bin/env ruby") (which "ruby")))
2323 #t)))))
2324 (native-inputs
2325 `(("bundler" ,bundler)
2326 ("ruby-simplecov" ,ruby-simplecov)
2327 ("zip" ,zip)
2328 ("unzip" ,unzip)))
2329 (synopsis "Ruby module is for reading and writing zip files")
2330 (description
2331 "The rubyzip module provides ways to read from and create zip files.")
2332 (home-page "http://github.com/rubyzip/rubyzip")
2333 (license license:bsd-2)))
2334
58b59742
RW
2335(define-public ruby-simplecov-html
2336 (package
2337 (name "ruby-simplecov-html")
53fd476f 2338 (version "0.10.2")
58b59742
RW
2339 (source (origin
2340 (method url-fetch)
2341 (uri (rubygems-uri "simplecov-html" version))
2342 (sha256
2343 (base32
53fd476f 2344 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
58b59742 2345 (build-system ruby-build-system)
8b749cf3 2346 (arguments `(#:tests? #f)) ; there are no tests
58b59742
RW
2347 (native-inputs
2348 `(("bundler" ,bundler)))
2349 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
2350 (description "This package provides the default HTML formatter for
2351the SimpleCov code coverage tool for Ruby version 1.9 and above.")
2352 (home-page "https://github.com/colszowka/simplecov-html")
2353 (license license:expat)))
2354
a84fa2ad
RW
2355(define-public ruby-simplecov
2356 (package
2357 (name "ruby-simplecov")
d432682b 2358 (version "0.17.1")
a84fa2ad
RW
2359 (source (origin
2360 (method url-fetch)
2361 (uri (rubygems-uri "simplecov" version))
2362 (sha256
2363 (base32
d432682b 2364 "1135k46nik05sdab30yxb8264lqiz01c8v000g16cl9pjc4mxrdw"))))
a84fa2ad
RW
2365 (build-system ruby-build-system)
2366 ;; Simplecov depends on rubocop for code style checking at build time.
2367 ;; Rubocop needs simplecov at build time.
2368 (arguments `(#:tests? #f))
2369 (propagated-inputs
2370 `(("ruby-json" ,ruby-json)
2371 ("ruby-docile" ,ruby-docile)
2372 ("ruby-simplecov-html" ,ruby-simplecov-html)))
2373 (native-inputs
2374 `(("bundler" ,bundler)))
2375 (synopsis "Code coverage framework for Ruby")
2376 (description "SimpleCov is a code coverage framework for Ruby with a
2377powerful configuration library and automatic merging of coverage across test
2378suites.")
7bf837fd 2379 (home-page "https://github.com/colszowka/simplecov")
a84fa2ad
RW
2380 (license license:expat)))
2381
98b87b82
DT
2382(define-public ruby-useragent
2383 (package
2384 (name "ruby-useragent")
959d908d 2385 (version "0.16.10")
98b87b82
DT
2386 (source (origin
2387 (method url-fetch)
e83c6d00 2388 (uri (rubygems-uri "useragent" version))
98b87b82
DT
2389 (sha256
2390 (base32
959d908d 2391 "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p"))))
98b87b82
DT
2392 (build-system ruby-build-system)
2393 (arguments
e83c6d00 2394 '(#:tests? #f)) ; no test suite
98b87b82
DT
2395 (synopsis "HTTP user agent parser for Ruby")
2396 (description "UserAgent is a Ruby library that parses and compares HTTP
2397User Agents.")
2398 (home-page "https://github.com/gshutler/useragent")
2399 (license license:expat)))
96086cc5 2400
f7e9b2f3
CB
2401(define-public ruby-backports
2402 (package
2403 (name "ruby-backports")
2404 (version "3.11.4")
2405 (source
2406 (origin
2407 (method url-fetch)
2408 (uri (rubygems-uri "backports" version))
2409 (sha256
2410 (base32
2411 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
2412 (build-system ruby-build-system)
2413 (arguments
2414 '(;; TODO: This should be default, but there is one test failure
2415 #:test-target "all_spec"))
2416 (native-inputs
2417 `(("ruby-mspec" ,ruby-mspec)
2418 ("ruby-activesupport" ,ruby-activesupport)))
2419 (synopsis "Backports of the features in newer Ruby versions")
2420 (description
2421 "Backports enables more compatibility across Ruby versions by providing
2422backports of some features.")
2423 (home-page "https://github.com/marcandre/backports")
2424 (license license:expat)))
2425
96086cc5
DT
2426(define-public ruby-bacon
2427 (package
2428 (name "ruby-bacon")
e83c6d00 2429 (version "1.2.0")
96086cc5
DT
2430 (source (origin
2431 (method url-fetch)
e83c6d00 2432 (uri (rubygems-uri "bacon" version))
96086cc5
DT
2433 (sha256
2434 (base32
e83c6d00 2435 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
96086cc5 2436 (build-system ruby-build-system)
96086cc5
DT
2437 (synopsis "Small RSpec clone")
2438 (description "Bacon is a small RSpec clone providing all essential
2439features.")
2440 (home-page "https://github.com/chneukirchen/bacon")
2441 (license license:expat)))
de59d316 2442
a8d2bf3c
CB
2443(define-public ruby-bacon-bits
2444 (package
2445 (name "ruby-bacon-bits")
2446 (version "0.1.0")
2447 (source
2448 (origin
2449 (method url-fetch)
2450 (uri (rubygems-uri "bacon-bits" version))
2451 (sha256
2452 (base32
2453 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
2454 (build-system ruby-build-system)
2455 (arguments
2456 ;; No tests
2457 '(#:tests? #f))
2458 (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
2459 (synopsis "Extensions to Bacon, for disabling tests, before and after
2460blocks and more")
2461 (description
2462 "This extends the bacon testing framework with useful extensions to
2463disable tests, have before and after blocks that run once and more.")
2464 (home-page "https://github.com/cldwalker/bacon-bits")
2465 (license license:expat)))
2466
65f65889
CB
2467(define-public ruby-bacon-colored-output
2468 (package
2469 (name "ruby-bacon-colored-output")
2470 (version "1.1.1")
2471 (source
2472 (origin
2473 (method url-fetch)
2474 (uri (rubygems-uri "bacon-colored_output" version))
2475 (sha256
2476 (base32
2477 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
2478 (build-system ruby-build-system)
2479 (arguments
2480 '(;; No included tests
2481 #:tests? #f))
2482 (propagated-inputs
2483 `(("ruby-bacon" ,ruby-bacon)))
2484 (synopsis "Colored output for Bacon test framework")
2485 (description
2486 "This package adds color through ANSI escape codes to Bacon test
2487output.")
2488 (home-page "https://github.com/whitequark/bacon-colored_output")
2489 (license license:expat)))
2490
e259bdf0
DT
2491(define-public ruby-connection-pool
2492 (package
2493 (name "ruby-connection-pool")
58021db4 2494 (version "2.2.2")
e259bdf0
DT
2495 (source (origin
2496 (method url-fetch)
e83c6d00 2497 (uri (rubygems-uri "connection_pool" version))
e259bdf0
DT
2498 (sha256
2499 (base32
58021db4 2500 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
e259bdf0
DT
2501 (build-system ruby-build-system)
2502 (native-inputs
2503 `(("bundler" ,bundler)))
2504 (synopsis "Generic connection pool for Ruby")
2505 (description "Connection_pool provides a generic connection pooling
2506interface for Ruby programs.")
2507 (home-page "https://github.com/mperham/connection_pool")
2508 (license license:expat)))
4c0aeb44 2509
4a98314d
MB
2510(define-public ruby-fast-gettext
2511 (package
2512 (name "ruby-fast-gettext")
c3beb7ce 2513 (version "2.0.3")
4a98314d
MB
2514 (home-page "https://github.com/grosser/fast_gettext")
2515 (source (origin
2516 (method git-fetch)
2517 (uri (git-reference (url home-page)
2518 (commit (string-append "v" version))))
2519 (file-name (git-file-name name version))
2520 (sha256
2521 (base32
c3beb7ce 2522 "1dg14apq5sfjshhcq0idphhs7aq9ikzswhqmn689p1h76mxqr1v6"))))
4a98314d
MB
2523 (build-system ruby-build-system)
2524 (arguments
2525 '(#:test-target "spec"
2526 #:phases (modify-phases %standard-phases
2527 (add-before 'check 'remove-version-constraints
2528 (lambda _
2529 (delete-file "Gemfile.lock")
2530 #t))
2531 (add-before 'check 'remove-activerecord-test
2532 (lambda _
2533 ;; FIXME: This test fails because ActiveRecord depends on
2534 ;; a different version of ruby-sqlite than the currently
2535 ;; available one.
2536 (delete-file
2537 "spec/fast_gettext/translation_repository/db_spec.rb")
2538 #t))
2539 (add-before 'check 'disable-i18n-test
2540 (lambda _
2541 ;; XXX: This test checks i18n intricasies with Rails 3 and
2542 ;; automatically disables itself for Rails 4.0, but does
2543 ;; not know about newer versions as it has not been updated
2544 ;; since 2014. Disable for later versions of Rails too.
2545 (substitute* "spec/fast_gettext/vendor/string_spec.rb"
2546 (((string-append "ActiveRecord::VERSION::MAJOR == 4 and "
2547 "ActiveRecord::VERSION::MINOR == 0"))
2548 "ActiveRecord::VERSION::MAJOR >= 4"))
2549 #t)))))
2550 (native-inputs
2551 `(;; For tests.
2552 ("ruby-activerecord" ,ruby-activerecord)
2553 ("ruby-activesupport" ,ruby-activesupport)
2554 ("ruby-bump" ,ruby-bump)
2555 ("ruby-forking-test-runner" ,ruby-forking-test-runner)
2556 ("ruby-i18n" ,ruby-i18n)
2557 ("ruby-rubocop" ,ruby-rubocop)
2558 ("ruby-rspec" ,ruby-rspec)
2559 ("ruby-single-cov" ,ruby-single-cov)
2560 ("ruby-sqlite3" ,ruby-sqlite3)
2561 ("ruby-wwtd" ,ruby-wwtd)))
2562 (synopsis "Fast implementation of @code{GetText}")
2563 (description
2564 "This package provides an alternative implementation of the Ruby
2565@code{GetText} library that is approximately 12x faster yet thread safe.")
2566 ;; Some parts are covered by the Ruby license, see file headers.
2567 (license (list license:expat license:ruby))))
2568
4c0aeb44
DT
2569(define-public ruby-net-http-persistent
2570 (package
2571 (name "ruby-net-http-persistent")
185ea446 2572 (version "3.0.0")
4c0aeb44
DT
2573 (source (origin
2574 (method url-fetch)
e83c6d00 2575 (uri (rubygems-uri "net-http-persistent" version))
4c0aeb44
DT
2576 (sha256
2577 (base32
185ea446 2578 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
4c0aeb44 2579 (build-system ruby-build-system)
4c0aeb44
DT
2580 (native-inputs
2581 `(("ruby-connection-pool" ,ruby-connection-pool)
2582 ("ruby-hoe" ,ruby-hoe)))
2583 (synopsis "Persistent HTTP connection manager")
2584 (description "Net::HTTP::Persistent manages persistent HTTP connections
2585using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
2586 (home-page "https://github.com/drbrain/net-http-persistent")
2587 (license license:expat)))
afbbdf77 2588
f88bacaf
RW
2589(define-public ruby-power-assert
2590 (package
2591 (name "ruby-power-assert")
6754323b 2592 (version "1.1.5")
f88bacaf
RW
2593 (source (origin
2594 (method url-fetch)
2595 (uri (rubygems-uri "power_assert" version))
2596 (sha256
2597 (base32
6754323b 2598 "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s"))))
f88bacaf 2599 (build-system ruby-build-system)
6754323b
CB
2600 (arguments
2601 '(#:tests? #f)) ; No included tests
f88bacaf
RW
2602 (native-inputs
2603 `(("bundler" ,bundler)))
2604 (synopsis "Assert library with descriptive assertion messages")
2605 (description "Power-assert is an assertion library providing descriptive
2606assertion messages for tests.")
2607 (home-page "https://github.com/k-tsj/power_assert")
2608 (license (list license:bsd-2 license:ruby))))
2609
e42e3bfa
CB
2610(define-public ruby-powerpack
2611 (package
2612 (name "ruby-powerpack")
2613 (version "0.1.2")
2614 (source
2615 (origin
2616 (method url-fetch)
2617 (uri (rubygems-uri "powerpack" version))
2618 (sha256
2619 (base32
2620 "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
2621 (build-system ruby-build-system)
2622 (arguments
2623 '(#:test-target "spec"))
2624 (native-inputs
2625 `(("bundler" ,bundler)
2626 ("ruby-rspec" ,ruby-rspec)
2627 ("ruby-yard" ,ruby-yard)))
2628 (synopsis "Useful extensions to core Ruby classes")
2629 (description
2630 "This package provides a few useful extensions to core Ruby classes,
2631including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
2632@code{String}.")
2633 (home-page "https://github.com/bbatsov/powerpack")
2634 (license license:expat)))
2635
347eb21e
RW
2636(define-public ruby-locale
2637 (package
2638 (name "ruby-locale")
2639 (version "2.1.2")
2640 (source (origin
2641 (method url-fetch)
2642 (uri (rubygems-uri "locale" version))
2643 (sha256
2644 (base32
2645 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
2646 (build-system ruby-build-system)
2647 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
2648 ;; which needs ruby-gettext, which needs ruby-locale. To break the
2649 ;; dependency cycle we disable tests.
2650 (arguments `(#:tests? #f))
2651 (native-inputs
2652 `(("bundler" ,bundler)
2653 ("ruby-yard" ,ruby-yard)))
2654 (synopsis "Ruby library providing basic localization APIs")
2655 (description
2656 "Ruby-Locale is the pure ruby library which provides basic APIs for
2657localization.")
2658 (home-page "https://github.com/ruby-gettext/locale")
2659 (license (list license:lgpl3+ license:ruby))))
2660
09e2b0af
CB
2661(define-public ruby-temple
2662 (package
2663 (name "ruby-temple")
2664 (version "0.8.1")
2665 (source
2666 (origin
2667 (method url-fetch)
2668 (uri (rubygems-uri "temple" version))
2669 (sha256
2670 (base32
2671 "158d7ygbwcifqnvrph219p7m78yjdjazhykv5darbkms7bxm5y09"))))
2672 (build-system ruby-build-system)
2673 (native-inputs
2674 `(("ruby-tilt" ,ruby-tilt)
2675 ("ruby-bacon" ,ruby-bacon)
2676 ("ruby-erubis" ,ruby-erubis)))
2677 (synopsis "Template compilation framework in Ruby")
2678 (description
2679 "Temple is an abstraction and framework for compiling templates to pure
2680Ruby.")
2681 (home-page "https://github.com/judofyr/temple")
2682 (license license:expat)))
2683
e2333ea3
RW
2684(define-public ruby-text
2685 (package
2686 (name "ruby-text")
2687 (version "1.3.1")
2688 (source (origin
2689 (method url-fetch)
2690 (uri (rubygems-uri "text" version))
2691 (sha256
2692 (base32
2693 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
2694 (build-system ruby-build-system)
2695 (synopsis "Collection of text algorithms for Ruby")
2696 (description
2697 "This package provides a collection of text algorithms: Levenshtein,
2698Soundex, Metaphone, Double Metaphone, Porter Stemming.")
7bf837fd 2699 (home-page "https://github.com/threedaymonk/text")
e2333ea3
RW
2700 (license license:expat)))
2701
c1f52261
RW
2702(define-public ruby-gettext
2703 (package
2704 (name "ruby-gettext")
2705 (version "3.1.7")
2706 (source (origin
2707 (method url-fetch)
2708 (uri (rubygems-uri "gettext" version))
2709 (sha256
2710 (base32
2711 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
2712 (build-system ruby-build-system)
2713 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
2714 ;; which needs ruby-gettext. To break the dependency cycle we disable
2715 ;; tests.
2716 (arguments `(#:tests? #f))
2717 (propagated-inputs
2718 `(("ruby-locale" ,ruby-locale)
2719 ("ruby-text" ,ruby-text)))
2720 (native-inputs
2721 `(("bundler" ,bundler)
2722 ("ruby-yard" ,ruby-yard)))
2723 (synopsis "GNU gettext-like program for Ruby")
2724 (description
2725 "Gettext is a GNU gettext-like program for Ruby. The catalog
2726file (po-file) used is the same as that used by GNU gettext, allowing you to
2727use GNU gettext tools for maintenance.")
2f3800e5 2728 (home-page "https://ruby-gettext.github.com/")
c1f52261
RW
2729 (license (list license:lgpl3+ license:ruby))))
2730
cc5aeb8c
RW
2731(define-public ruby-packnga
2732 (package
2733 (name "ruby-packnga")
1d60c436 2734 (version "1.0.4")
cc5aeb8c
RW
2735 (source (origin
2736 (method url-fetch)
2737 (uri (rubygems-uri "packnga" version))
2738 (sha256
2739 (base32
1d60c436 2740 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
cc5aeb8c
RW
2741 (build-system ruby-build-system)
2742 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
2743 ;; To break the dependency cycle we disable tests.
2744 (arguments `(#:tests? #f))
2745 (propagated-inputs
2746 `(("ruby-gettext" ,ruby-gettext)
2747 ("ruby-yard" ,ruby-yard)))
2748 (native-inputs
2749 `(("bundler" ,bundler)))
2750 (synopsis "Utility library to package internationalized libraries")
2751 (description
2752 "Packnga is a library to translate to many languages using YARD.")
2753 (home-page "http://ranguba.org/packnga/")
2754 (license license:lgpl2.0+)))
2755
93dc8684
CB
2756(define-public ruby-test-construct
2757 (package
2758 (name "ruby-test-construct")
2759 (version "2.0.1")
2760 (source
2761 (origin
2762 (method url-fetch)
2763 (uri (rubygems-uri "test_construct" version))
2764 (sha256
2765 (base32
2766 "1a2ym3l068d0pxzzr95kvqx87zpdsarxslz9ygd4qfm9frrz0kgj"))))
2767 (build-system ruby-build-system)
2768 (native-inputs
2769 `(("bundler" ,bundler)
2770 ("ruby-mocha" ,ruby-mocha)
2771 ("ruby-rspec" ,ruby-rspec)))
2772 (synopsis "Creates temporary files and directories for testing")
2773 (description
2774 "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
2775temporary files and directories during tests.")
2776 (home-page "https://github.com/bhb/test_construct")
2777 (license license:expat)))
2778
3383f5bd
RW
2779(define-public ruby-test-unit
2780 (package
2781 (name "ruby-test-unit")
d74d96e4 2782 (version "3.2.5")
3383f5bd
RW
2783 (source (origin
2784 (method url-fetch)
2785 (uri (rubygems-uri "test-unit" version))
2786 (sha256
2787 (base32
d74d96e4 2788 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
3383f5bd
RW
2789 (build-system ruby-build-system)
2790 (propagated-inputs
2791 `(("ruby-power-assert" ,ruby-power-assert)))
2792 (native-inputs
2793 `(("bundler" ,bundler)
2794 ("ruby-packnga" ,ruby-packnga)
2795 ("ruby-yard" ,ruby-yard)))
2796 (synopsis "Unit testing framework for Ruby")
2797 (description "@code{Test::Unit} is unit testing framework for Ruby, based
2798on xUnit principles. These were originally designed by Kent Beck, creator of
2799extreme programming software development methodology, for Smalltalk's SUnit.
2800It allows writing tests, checking results and automated testing in Ruby.")
2f3800e5 2801 (home-page "https://test-unit.github.io/")
3383f5bd
RW
2802 (license (list license:psfl license:ruby))))
2803
76b732fb
CB
2804(define-public ruby-markaby
2805 (package
2806 (name "ruby-markaby")
2807 (version "0.9.0")
2808 (source
2809 (origin
2810 (method url-fetch)
2811 (uri (rubygems-uri "markaby" version))
2812 (sha256
2813 (base32
2814 "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
2815 (build-system ruby-build-system)
2816 (arguments
2817 '(#:phases
2818 (modify-phases %standard-phases
2819 ;; Run rspec manually without using the Rakefile, as the versions of
2820 ;; Rake and RSpec 2 are incompatible:
2821 ;;
2822 ;; NoMethodError: undefined method `last_comment'
2823 (replace 'check
2824 (lambda* (#:key tests? #:allow-other-keys)
2825 (when tests?
2826 (invoke "rspec"))
2827 #t)))))
2828 (propagated-inputs
2829 `(("ruby-builder" ,ruby-builder)))
2830 (native-inputs
2831 `(("bundler" ,bundler)
2832 ("ruby-rspec" ,ruby-rspec-2)))
2833 (synopsis "Write HTML pages in pure Ruby")
2834 (description
2835 "Markaby allows writing HTML packages in pure Ruby. This is similar to
e54af322 2836the functionality provided by @acronym{ERB, Embedded Ruby}, but without the
76b732fb 2837mixture of HTML and additional ERB syntax.")
41181b76 2838 (home-page "https://markaby.github.io/")
76b732fb
CB
2839 (license license:expat)))
2840
b9511aa9
CB
2841(define-public ruby-maruku
2842 (package
2843 (name "ruby-maruku")
2844 (version "0.7.3")
2845 (source
2846 (origin
2847 (method url-fetch)
2848 (uri (rubygems-uri "maruku" version))
2849 (sha256
2850 (base32
2851 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
2852 (build-system ruby-build-system)
2853 (arguments
2854 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
2855 #:tests? #f
2856 #:phases
2857 (modify-phases %standard-phases
2858 (replace 'check
2859 (lambda* (#:key tests? #:allow-other-keys)
2860 (when tests?
2861 (invoke "rspec"))
2862 #t)))))
2863 (native-inputs
2864 `(("ruby-rspec" ,ruby-rspec)
2865 ("ruby-simplecov" ,ruby-simplecov)
2866 ("ruby-nokogiri-diff" ,ruby-nokogiri-diff)))
2867 (synopsis "Markdown interpreter in Ruby")
2868 (description
2869 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
2870HTML, and PDF through LaTeX.")
2871 (home-page "https://github.com/bhollis/maruku")
2872 (license license:expat)))
2873
25d6d49b
RW
2874(define-public ruby-metaclass
2875 (package
2876 (name "ruby-metaclass")
2877 (version "0.0.4")
2878 (source (origin
2879 (method url-fetch)
2880 (uri (rubygems-uri "metaclass" version))
2881 (sha256
2882 (base32
2883 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
2884 (build-system ruby-build-system)
2885 (arguments
2886 `(#:phases
2887 (modify-phases %standard-phases
2888 (add-after 'unpack 'add-test-unit-to-search-path
761e7042 2889 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2890 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
2891 (substitute* "Rakefile"
2892 (("t\\.libs << \"test\"" line)
2893 (string-append line "; t.libs << \""
3cb3fa67 2894 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
2895 "/gems/test-unit-"
2896 ,(package-version ruby-test-unit)
2897 "/lib\""))))
2898 #t)))))
25d6d49b
RW
2899 (native-inputs
2900 `(("bundler" ,bundler)
2901 ("ruby-test-unit" ,ruby-test-unit)))
2902 (synopsis "Ruby library adding metaclass method to all objects")
2903 (description
2904 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
2905objects.")
7bf837fd 2906 (home-page "https://github.com/floehopper/metaclass")
25d6d49b
RW
2907 (license license:expat)))
2908
fae1c866
MB
2909(define-public ruby-mkmf-lite
2910 (package
2911 (name "ruby-mkmf-lite")
2912 (version "0.3.2")
2913 (source (origin
2914 (method url-fetch)
2915 (uri (rubygems-uri "mkmf-lite" version))
2916 (sha256
2917 (base32
2918 "0br9k6zijj1zc25n8p7f2j1mwl58nfgdknf3q13h9k156jvrir06"))))
2919 (build-system ruby-build-system)
2920 (propagated-inputs
2921 `(("ruby-ptools" ,ruby-ptools)))
2922 (synopsis "Lightweight alternative to @code{mkmf}")
2923 (description
2924 "@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed
2925for use as a library. It does not create packages, builds, or log files of
2926any kind. Instead, it provides mixin methods that you can use in FFI or tests
2927to check for the presence of header files, constants, and so on.")
2928 (home-page "https://github.com/djberg96/mkmf-lite")
2929 (license license:asl2.0)))
2930
1d1d20b0
CB
2931(define-public ruby-mspec
2932 (package
2933 (name "ruby-mspec")
2934 (version "1.9.1")
2935 (source
2936 (origin
2937 (method url-fetch)
2938 (uri (rubygems-uri "mspec" version))
2939 (sha256
2940 (base32
2941 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
2942 (build-system ruby-build-system)
2943 (arguments
2944 '(;; TODO: 3 test failures
2945 ;; ./spec/mocks/mock_spec.rb:82
2946 ;; ./spec/utils/name_map_spec.rb:151
2947 ;; ./spec/utils/name_map_spec.rb:155
2948 #:tests? #f
2949 #:phases
2950 (modify-phases %standard-phases
2951 (add-after 'extract-gemspec 'change-dependency-constraints
2952 (lambda _
2953 (substitute* "mspec.gemspec"
2954 (("rake.*") "rake>)\n")
2955 (("rspec.*") "rspec>)\n"))
2956 #t))
2957 (replace 'check
2958 (lambda* (#:key tests? #:allow-other-keys)
2959 (when tests?
2960 (invoke "rspec" "spec"))
2961 #t)))))
2962 (native-inputs
2963 `(("bundler" ,bundler)
2964 ("ruby-rake" ,ruby-rake)
2965 ("ruby-rspec" ,ruby-rspec)))
2966 (synopsis "MSpec is a specialized framework for RubySpec")
2967 (description
2968 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
2969for basic features. MSpec contains additional features that assist in writing
2970specs for Ruby implementations in ruby/spec.")
2971 (home-page "http://rubyspec.org")
2972 (license license:expat)))
2973
b8aecc31
CB
2974(define-public ruby-mysql2
2975 (package
2976 (name "ruby-mysql2")
2977 (version "0.5.2")
2978 (source
2979 (origin
2980 (method git-fetch)
2981 (uri (git-reference
2982 (url "https://github.com/brianmario/mysql2.git")
2983 (commit version)))
2984 (file-name (git-file-name name version))
2985 (sha256
2986 (base32
2987 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
2988 (build-system ruby-build-system)
2989 (arguments
2990 '(;; TODO: Tests require a running MySQL/MariaDB service
2991 #:tests? #f
2992 #:phases
2993 (modify-phases %standard-phases
2994 (replace 'replace-git-ls-files
2995 (lambda _
2996 (substitute* "mysql2.gemspec"
2997 (("git ls-files .*`") "find . -type f |sort`"))
2998 #t))
2999 (add-before 'install 'set-MAKEFLAGS
3000 (lambda* (#:key outputs #:allow-other-keys)
3001 (setenv "MAKEFLAGS"
3002 (string-append
3003 "V=1 "
3004 "prefix=" (assoc-ref outputs "out")))
3005 #t))
3006 ;; Move the 'check phase to after 'install, as then you can test
3007 ;; using the installed mysql2 gem in the store.
3008 (delete 'check)
3009 (add-after 'install 'check
3010 (lambda* (#:key outputs tests? #:allow-other-keys)
3011 (setenv "GEM_PATH"
3012 (string-append
3013 (getenv "GEM_PATH")
3014 ":"
3015 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
3016 (when tests?
3017 (invoke "rspec"))
3018 #t)))))
3019 (inputs
2b8491fb
JL
3020 `(("mariadb" ,mariadb "lib")
3021 ("mariadb-dev" ,mariadb "dev")
b8aecc31
CB
3022 ("zlib" ,zlib)))
3023 (native-inputs
3024 `(("ruby-rspec" ,ruby-rspec)
3025 ("ruby-rake-compiler" ,ruby-rake-compiler)))
3026 (synopsis "MySQL library for Ruby, binding to libmysql")
3027 (description
3028 "This package provides a simple, fast MySQL library for Ruby, binding to
3029libmysql.")
3030 (home-page "https://github.com/brianmario/mysql2")
3031 (license license:expat)))
3032
21f7b7bd
RW
3033(define-public ruby-blankslate
3034 (package
3035 (name "ruby-blankslate")
3036 (version "3.1.3")
3037 (source (origin
3038 (method url-fetch)
3039 (uri (rubygems-uri "blankslate" version))
3040 (sha256
3041 (base32
3042 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
3043 (build-system ruby-build-system)
3044 (arguments
3045 `(#:phases
3046 (modify-phases %standard-phases
3047 (replace 'check
9923d5a4 3048 (lambda _ (invoke "rspec" "spec/"))))))
21f7b7bd
RW
3049 (native-inputs
3050 `(("bundler" ,bundler)
3051 ("ruby-rspec" ,ruby-rspec)))
3052 (synopsis "Abstract base class with no predefined methods")
3053 (description
3054 "BlankSlate provides an abstract base class with no predefined
3055methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
3056as a base class when writing classes that depend upon
3057@code{method_missing} (e.g. dynamic proxies).")
7bf837fd 3058 (home-page "https://github.com/masover/blankslate")
21f7b7bd
RW
3059 (license license:expat)))
3060
afdb437c
CB
3061(define-public ruby-bond
3062 (package
3063 (name "ruby-bond")
3064 (version "0.5.1")
3065 (source
3066 (origin
3067 (method url-fetch)
3068 (uri (rubygems-uri "bond" version))
3069 (sha256
3070 (base32
3071 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
3072 (build-system ruby-build-system)
3073 (native-inputs
3074 `(("ruby-bacon" ,ruby-bacon)
3075 ("ruby-bacon-bits" ,ruby-bacon-bits)
3076 ("ruby-mocha-on-bacon" ,ruby-mocha-on-bacon)))
3077 (synopsis "Bond can provide custom autocompletion for arguments, methods
3078and more")
3079 (description
3080 "Bond can autocomplete argument(s) to methods, uniquely completing per
3081module, per method and per argument. Bond provides a configuration system and
3082a DSL for creating custom completions and completion rules. Bond can also
3083load completions that ship with gems. Bond is able to offer more than irb's
3084completion since it uses the full line of input when completing as opposed to
3085irb's last-word approach.")
3086 (home-page "http://tagaholic.me/bond/")
3087 (license license:expat)))
3088
f3d7bb93
CB
3089(define-public ruby-idn-ruby
3090 (package
3091 (name "ruby-idn-ruby")
3092 (version "0.1.0")
3093 (source
3094 (origin
3095 (method url-fetch)
3096 (uri (rubygems-uri "idn-ruby" version))
3097 (sha256
3098 (base32
3099 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
3100 (build-system ruby-build-system)
3101 (arguments
3102 '(#:phases
3103 (modify-phases %standard-phases
3104 (delete 'check)
3105 (add-after 'install 'check
3106 (lambda* (#:key tests? outputs #:allow-other-keys)
3107 (when tests?
3108 (let* ((gem-file (cadr (find-files "." "\\.gem")))
3109 (name-and-version (basename gem-file ".gem")))
3110 (apply invoke
3111 "ruby" "--verbose"
3112 (string-append "-I"
3113 (assoc-ref outputs "out")
3114 "/lib/ruby/vendor_ruby/gems/"
3115 name-and-version
3116 "/lib")
3117 (find-files "./test" ".*\\.rb"))))
3118 #t)))))
3119 (inputs
3120 `(("libidn" ,libidn)))
3121 (synopsis "Ruby Bindings for the GNU LibIDN library")
3122 (description
3123 "Ruby Bindings for the GNU LibIDN library, an implementation of the
3124Stringprep, Punycode and IDNA specifications. These are used to encode and
3125decode internationalized domain + names according to the IDNA2003
3126specifications.
3127
3128Included are the most important parts of the Stringprep, Punycode and IDNA
3129APIs like performing Stringprep processings, encoding to and decoding from
3130Punycode strings and converting entire domain names to and from the ACE
3131encoded form.")
3132 (home-page "https://github.com/deepfryed/idn-ruby")
3133 (license license:asl2.0)))
3134
4016ba3f
RW
3135(define-public ruby-instantiator
3136 (package
3137 (name "ruby-instantiator")
688c9076 3138 (version "0.0.7")
4016ba3f
RW
3139 (source (origin
3140 (method url-fetch)
3141 (uri (rubygems-uri "instantiator" version))
3142 (sha256
3143 (base32
688c9076 3144 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
4016ba3f
RW
3145 (build-system ruby-build-system)
3146 (arguments
3147 `(#:phases
3148 (modify-phases %standard-phases
3149 (add-after 'unpack 'add-test-unit-to-search-path
761e7042 3150 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 3151 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
3152 (substitute* "Rakefile"
3153 (("t\\.libs << \"test\"" line)
3154 (string-append line "; t.libs << \""
3cb3fa67 3155 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
3156 "/gems/test-unit-"
3157 ,(package-version ruby-test-unit)
3158 "/lib\""))))
3159 #t)))))
4016ba3f
RW
3160 (propagated-inputs
3161 `(("ruby-blankslate" ,ruby-blankslate)))
3162 (native-inputs
3163 `(("bundler" ,bundler)
3164 ("ruby-test-unit" ,ruby-test-unit)))
3165 (synopsis "Instantiate an arbitrary Ruby class")
3166 (description
3167 "Instantiator lets you instantiate an arbitrary Ruby class without
3168knowing anything about the constructor.")
3169 (home-page "https://github.com/floehopper/instantiator")
3170 (license license:expat)))
3171
97aee8d3
RW
3172(define-public ruby-introspection
3173 (package
3174 (name "ruby-introspection")
98ff58a5 3175 (version "0.0.4")
97aee8d3
RW
3176 (source (origin
3177 (method url-fetch)
3178 (uri (rubygems-uri "introspection" version))
3179 (sha256
3180 (base32
98ff58a5 3181 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
97aee8d3
RW
3182 (build-system ruby-build-system)
3183 (arguments
3184 `(#:phases
3185 (modify-phases %standard-phases
3186 (add-after 'unpack 'add-test-unit-to-search-path
3187 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 3188 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
3189 (substitute* "Rakefile"
3190 (("t\\.libs << \"test\"" line)
3191 (string-append line "; t.libs << \""
3cb3fa67 3192 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
3193 "/gems/test-unit-"
3194 ,(package-version ruby-test-unit)
3195 "/lib\""))))
97aee8d3
RW
3196 #t)))))
3197 (propagated-inputs
3198 `(("ruby-instantiator" ,ruby-instantiator)
3199 ("ruby-metaclass" ,ruby-metaclass)))
3200 (native-inputs
3201 `(("bundler" ,bundler)
3202 ("ruby-blankslate" ,ruby-blankslate)
3203 ("ruby-test-unit" ,ruby-test-unit)))
3204 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
3205 (description
3206 "Introspection provides tools to inspect the hierarchy of method
3207definitions on a Ruby object.")
3208 (home-page "https://github.com/floehopper/introspection")
3209 (license license:expat)))
3210
d93062fd
RW
3211(define-public ruby-redcarpet
3212 (package
3213 (name "ruby-redcarpet")
ba4084bb 3214 (version "3.5.0")
d93062fd
RW
3215 (source (origin
3216 (method url-fetch)
3217 (uri (rubygems-uri "redcarpet" version))
3218 (sha256
3219 (base32
ba4084bb 3220 "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k"))))
d93062fd
RW
3221 (build-system ruby-build-system)
3222 (arguments
3223 `(#:phases
3224 (modify-phases %standard-phases
3225 ;; The gem archive does not include the conformance tests.
3226 (add-after 'unpack 'disable-conformance-tests
3227 (lambda _
3228 (substitute* "Rakefile"
3229 (("task :test => %w\\[test:unit test:conformance\\]")
3230 "task :test => %w[test:unit]"))
3231 #t)))))
3232 (native-inputs
3233 `(("bundler" ,bundler)
3234 ("ruby-test-unit" ,ruby-test-unit)
3235 ("ruby-rake-compiler" ,ruby-rake-compiler)))
3236 (synopsis "Extensible Markdown to (X)HTML converter")
3237 (description
3238 "Redcarpet is an extensible Ruby library for Markdown processing and
3239conversion to (X)HTML.")
7bf837fd 3240 (home-page "https://github.com/vmg/redcarpet")
d93062fd
RW
3241 (license license:expat)))
3242
09924294
CB
3243(define-public ruby-rerun
3244 (package
3245 (name "ruby-rerun")
3246 (version "0.13.0")
3247 (source
3248 (origin
3249 (method url-fetch)
3250 (uri (rubygems-uri "rerun" version))
3251 (sha256
3252 (base32
3253 "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
3254 (build-system ruby-build-system)
3255 (arguments
3256 '(#:tests? #f)) ; No included tests
3257 (propagated-inputs
3258 `(("ruby-listen" ,ruby-listen)))
3259 (synopsis "Run a process, and restart when some monitored files change")
3260 (description
52beae7b 3261 "Rerun is a tool to launch programs, then monitor the file system, and
09924294
CB
3262restart the program when any of the monitored files change. It's written in
3263Ruby, but can be used for all programs.")
3264 (home-page "https://github.com/alexch/rerun/")
3265 (license license:expat)))
3266
8d85543b
MB
3267(define-public ruby-maxitest
3268 (package
3269 (name "ruby-maxitest")
3270 (version "3.6.0")
3271 (home-page "https://github.com/grosser/maxitest")
3272 (source (origin
3273 ;; Pull from git because the gem does not contain tests.
3274 (method git-fetch)
3275 (uri (git-reference
3276 (url home-page)
3277 (commit (string-append "v" version))))
3278 (file-name (git-file-name name version))
3279 (sha256
3280 (base32
3281 "07b3j0bv3dx5j42jlvpvl07aaxplyi6wq688y3jl8y528ww2hjz8"))))
3282 (build-system ruby-build-system)
3283 (arguments
3284 '(#:test-target "default"
3285 #:phases (modify-phases %standard-phases
3286 (replace 'replace-git-ls-files
3287 (lambda _
3288 (substitute* "maxitest.gemspec"
3289 (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
3290 "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))
3291 #t))
3292 (add-before 'check 'remove-version-constraints
3293 (lambda _
3294 ;; Don't use specific versions of dependencies, instead
3295 ;; take whatever is available in Guix.
3296 (delete-file "Gemfile.lock")
3297 #t))
3298 (add-before 'check 'add-mtest-on-PATH
3299 (lambda _
3300 ;; Tests use 'mtest' which is not automatically added on
3301 ;; PATH.
3302 (setenv "PATH" (string-append (getcwd) "/bin:"
3303 (getenv "PATH")))
3304 #t)))))
3305 (native-inputs
3306 `(("ps" ,procps)
3307 ("ruby-bump" ,ruby-bump)
3308 ("ruby-byebug" ,ruby-byebug)
3309 ("ruby-rspec" ,ruby-rspec)
3310 ("ruby-wwtd" ,ruby-wwtd)))
3311 (propagated-inputs
3312 `(("ruby-minitest" ,ruby-minitest)))
3313 (synopsis "Minitest with extra features")
3314 (description
3315 "Maxitest is a wrapper around Minitest with extra functionality such
3316as timeouts, an @command{mtest} executable that can run tests by line
3317number, support for interrupted tests, better backtraces, and more.")
3318 (license license:expat)))
3319
4f2a52ae
RW
3320(define-public ruby-mocha
3321 (package
3322 (name "ruby-mocha")
2fc3cc24 3323 (version "1.11.2")
4f2a52ae
RW
3324 (source (origin
3325 (method url-fetch)
3326 (uri (rubygems-uri "mocha" version))
3327 (sha256
3328 (base32
2fc3cc24 3329 "0hxmkm8qxd04vwj8mqnpyrf2dwy7g1k9zipdfhl4y71cw7ijm9n4"))))
4f2a52ae
RW
3330 (build-system ruby-build-system)
3331 (arguments
3332 `(#:phases
3333 (modify-phases %standard-phases
2fc3cc24
MB
3334 (add-before 'check 'remove-rubocop-dependency
3335 (lambda _
3336 ;; Disable dependency on Rubocop, which is just a linter,
3337 ;; and would introduce a circular dependency.
3338 (substitute* "mocha.gemspec"
3339 ((".*rubocop.*")
3340 "true\n"))
3341 #t)))))
4f2a52ae 3342 (native-inputs
2fc3cc24 3343 `(("ruby-introspection" ,ruby-introspection)))
4f2a52ae
RW
3344 (synopsis "Mocking and stubbing library for Ruby")
3345 (description
3346 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
3347allows mocking and stubbing of methods on real (non-mock) classes.")
3348 (home-page "http://gofreerange.com/mocha/docs")
e3febab5
MB
3349 ;; Mocha can be used with either license at the users choice.
3350 (license (list license:expat license:ruby))))
4f2a52ae 3351
cf646acf
CB
3352(define-public ruby-mocha-on-bacon
3353 (package
3354 (name "ruby-mocha-on-bacon")
3355 (version "0.2.3")
3356 (source
3357 (origin
3358 (method url-fetch)
3359 (uri (rubygems-uri "mocha-on-bacon" version))
3360 (sha256
3361 (base32
3362 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
3363 (build-system ruby-build-system)
3364 (arguments
3365 ;; rubygems.org release missing tests
3366 '(#:tests? #f))
3367 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
3368 (synopsis "Mocha adapter for Bacon")
3369 (description
3370 "This package provides a Mocha adapter for Bacon, allowing you to use the
3371Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
3372 (home-page
3373 "https://github.com/alloy/mocha-on-bacon")
3374 (license license:expat)))
3375
2c84ba7e
RW
3376(define-public ruby-net-ssh
3377 (package
3378 (name "ruby-net-ssh")
5803f872 3379 (version "4.2.0")
2c84ba7e
RW
3380 (source (origin
3381 (method url-fetch)
3382 (uri (rubygems-uri "net-ssh" version))
3383 (sha256
3384 (base32
5803f872 3385 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
2c84ba7e
RW
3386 (build-system ruby-build-system)
3387 (native-inputs
a7938625
MB
3388 `(("bundler" ,bundler)
3389 ("ruby-mocha" ,ruby-mocha)
2c84ba7e
RW
3390 ("ruby-test-unit" ,ruby-test-unit)))
3391 (synopsis "Ruby implementation of the SSH2 client protocol")
3392 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
3393client protocol. It allows you to write programs that invoke and interact
3394with processes on remote servers, via SSH2.")
3395 (home-page "https://github.com/net-ssh/net-ssh")
3396 (license license:expat)))
3397
d38755cb
DM
3398(define-public ruby-net-scp
3399 (package
3400 (name "ruby-net-scp")
3401 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
3402 (version "1.2.2.rc2")
3403 (source
3404 (origin
e405f996
TGR
3405 (method git-fetch)
3406 (uri (git-reference
3407 (url "https://github.com/net-ssh/net-scp.git")
3408 (commit (string-append "v" version))))
3409 (file-name (git-file-name name version))
d38755cb 3410 (sha256
e405f996 3411 (base32 "1nyn17sy71fn7zs3y6wbgcn35318c10flqgc0582409095x4h0sx"))))
d38755cb
DM
3412 (build-system ruby-build-system)
3413 (native-inputs
3414 `(("bundler" ,bundler)
3415 ("ruby-test-unit" ,ruby-test-unit)
3416 ("ruby-mocha" ,ruby-mocha)))
3417 (propagated-inputs
3418 `(("ruby-net-ssh" ,ruby-net-ssh)))
3419 (synopsis "Pure-Ruby SCP client library")
3420 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
3421client protocol.")
3422 (home-page "https://github.com/net-ssh/net-scp")
3423 (license license:expat)))
3424
2206e948
DT
3425(define-public ruby-minitest
3426 (package
3427 (name "ruby-minitest")
88a105c1 3428 (version "5.11.3")
2206e948 3429 (source (origin
e83c6d00
DT
3430 (method url-fetch)
3431 (uri (rubygems-uri "minitest" version))
2206e948
DT
3432 (sha256
3433 (base32
88a105c1 3434 "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"))))
2206e948 3435 (build-system ruby-build-system)
2206e948
DT
3436 (native-inputs
3437 `(("ruby-hoe" ,ruby-hoe)))
3438 (synopsis "Small test suite library for Ruby")
3439 (description "Minitest provides a complete suite of Ruby testing
3440facilities supporting TDD, BDD, mocking, and benchmarking.")
3441 (home-page "https://github.com/seattlerb/minitest")
3442 (license license:expat)))
3443
1db6e09f
RW
3444;; This is the last release of Minitest 4, which is used by some packages.
3445(define-public ruby-minitest-4
3446 (package (inherit ruby-minitest)
3447 (version "4.7.5")
3448 (source (origin
3449 (method url-fetch)
3450 (uri (rubygems-uri "minitest" version))
3451 (sha256
3452 (base32
3453 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
3454 (arguments
3455 `(#:phases
3456 (modify-phases %standard-phases
3457 (add-after 'unpack 'remove-unsupported-method
3458 (lambda _
3459 (substitute* "Rakefile"
3460 (("self\\.rubyforge_name = .*") ""))
9a7017eb
BW
3461 #t))
3462 (add-after 'build 'exclude-failing-tests
3463 (lambda _
3464 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
3465 ;; Fixnum.
3466 (delete-file "test/minitest/test_minitest_spec.rb")
3467 #t)))))))
1db6e09f 3468
450a3f7f
CB
3469(define-public ruby-minitest-around
3470 (package
3471 (name "ruby-minitest-around")
3472 (version "0.5.0")
3473 (source
3474 (origin
3475 (method url-fetch)
3476 (uri (rubygems-uri "minitest-around" version))
3477 (sha256
3478 (base32
3479 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
3480 (build-system ruby-build-system)
3481 (arguments
3482 '(#:phases
3483 (modify-phases %standard-phases
3484 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
3485 (lambda _
3486 (substitute* "minitest-around.gemspec"
3487 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n"))
3488 #t)))))
3489 (propagated-inputs
3490 `(("ruby-minitest" ,ruby-minitest)))
3491 (native-inputs
3492 `(("bundler" ,bundler)
3493 ("ruby-cucumber" ,ruby-cucumber)
3494 ("ruby-bump" ,ruby-bump)
3495 ("ruby-test-construct" ,ruby-test-construct)))
3496 (synopsis "Run code around tests in Minitest")
3497 (description
3498 "This library provides a way to run code around tests in Minitest,
3499written using either the unit test or spec style.")
3500 (home-page "https://github.com/splattael/minitest-around")
3501 (license license:expat)))
3502
35130835
DT
3503(define-public ruby-minitest-sprint
3504 (package
3505 (name "ruby-minitest-sprint")
3506 (version "1.1.0")
3507 (source (origin
e83c6d00
DT
3508 (method url-fetch)
3509 (uri (rubygems-uri "minitest-sprint" version))
35130835
DT
3510 (sha256
3511 (base32
e83c6d00 3512 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
35130835 3513 (build-system ruby-build-system)
35130835
DT
3514 (native-inputs
3515 `(("ruby-hoe" ,ruby-hoe)
3516 ("ruby-minitest" ,ruby-minitest)))
3517 (synopsis "Fast test suite runner for minitest")
3518 (description "Minitest-sprint is a test runner for minitest that makes it
3519easier to re-run individual failing tests.")
3520 (home-page "https://github.com/seattlerb/minitest-sprint")
3521 (license license:expat)))
3522
0808e361
DT
3523(define-public ruby-minitest-bacon
3524 (package
3525 (name "ruby-minitest-bacon")
6f9652b0 3526 (version "1.0.3")
0808e361 3527 (source (origin
e83c6d00
DT
3528 (method url-fetch)
3529 (uri (rubygems-uri "minitest-bacon" version))
0808e361
DT
3530 (sha256
3531 (base32
6f9652b0 3532 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
0808e361 3533 (build-system ruby-build-system)
0808e361
DT
3534 (native-inputs
3535 `(("ruby-hoe" ,ruby-hoe)))
3536 (inputs
3537 `(("ruby-minitest" ,ruby-minitest)))
3538 (synopsis "Bacon compatibility library for minitest")
3539 (description "Minitest-bacon extends minitest with bacon-like
3540functionality, making it easier to migrate test suites from bacon to minitest.")
3541 (home-page "https://github.com/seattlerb/minitest-bacon")
3542 (license license:expat)))
3543
39dc0eb5
BW
3544(define-public ruby-minitest-focus
3545 (package
3546 (name "ruby-minitest-focus")
3547 (version "1.1.2")
3548 (source
3549 (origin
3550 (method url-fetch)
3551 (uri (rubygems-uri "minitest-focus" version))
3552 (sha256
3553 (base32
3554 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
3555 (build-system ruby-build-system)
3556 (propagated-inputs
3557 `(("ruby-minitest" ,ruby-minitest)))
3558 (native-inputs
3559 `(("ruby-hoe" ,ruby-hoe)))
3560 (synopsis "Allows a few specific tests to be focused on")
3561 (description
3562 "@code{minitest-focus} gives the ability focus on a few tests with ease
3563without having to use command-line arguments. It introduces a @code{focus}
3564class method for use in testing classes, specifying that the next defined test
3565is to be run.")
3566 (home-page "https://github.com/seattlerb/minitest-focus")
3567 (license license:expat)))
3568
99fc5cd5
BW
3569(define-public ruby-minitest-pretty-diff
3570 ;; Use git reference because gem is out of date and does not contain testing
3571 ;; script. There are no releases on GitHub.
3572 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
3573 (package
3574 (name "ruby-minitest-pretty-diff")
3575 (version (string-append "0.1-1." (string-take commit 8)))
3576 (source (origin
3577 (method git-fetch)
3578 (uri (git-reference
3579 (url "https://github.com/adammck/minitest-pretty_diff.git")
3580 (commit commit)))
3581 (file-name (string-append name "-" version "-checkout"))
3582 (sha256
3583 (base32
3584 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
3585 (build-system ruby-build-system)
3586 (arguments
3587 `(#:phases
3588 (modify-phases %standard-phases
3589 (replace 'check
3590 (lambda _
9923d5a4 3591 (invoke "script/test"))))))
99fc5cd5
BW
3592 (native-inputs
3593 `(("bundler" ,bundler)
3594 ("ruby-turn" ,ruby-turn)))
3595 (synopsis "Pretty-print hashes and arrays in MiniTest")
3596 (description
3597 "@code{minitest-pretty_diff} monkey-patches
3598@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
3599diffing them. This makes it easier to spot differences between nested
3600structures when tests fail.")
3601 (home-page "https://github.com/adammck/minitest-pretty_diff")
3602 (license license:expat))))
3603
685d0d2f
BW
3604(define-public ruby-minitest-moar
3605 (package
3606 (name "ruby-minitest-moar")
3607 (version "0.0.4")
3608 (source
3609 (origin
3610 (method url-fetch)
3611 (uri (rubygems-uri "minitest-moar" version))
3612 (sha256
3613 (base32
3614 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
3615 (build-system ruby-build-system)
3616 (arguments
3617 `(#:phases
3618 (modify-phases %standard-phases
3619 (add-before 'check 'clean-dependencies
3620 (lambda _
3621 ;; Remove all gems defined in the Gemfile because these are not
3622 ;; truly needed.
3623 (substitute* "Gemfile"
3624 (("gem .*") ""))
3625 ;; Remove byebug as not needed to run tests.
3626 (substitute* "test/test_helper.rb"
3627 (("require 'byebug'") ""))
3628 #t)))))
3629 (native-inputs
3630 `(("bundler" ,bundler)
3631 ("ruby-minitest" ,ruby-minitest)))
3632 (synopsis "Extra features and changes to MiniTest")
3633 (description "@code{MiniTest Moar} add some additional features and
3634changes some default behaviours in MiniTest. For instance, Moar replaces the
3635MiniTest @code{Object#stub} with a global @code{stub} method.")
3636 (home-page "https://github.com/dockyard/minitest-moar")
3637 (license license:expat)))
3638
e07ef1d6
BW
3639(define-public ruby-minitest-bonus-assertions
3640 (package
3641 (name "ruby-minitest-bonus-assertions")
c9e261b7 3642 (version "3.0")
e07ef1d6
BW
3643 (source
3644 (origin
3645 (method url-fetch)
3646 (uri (rubygems-uri "minitest-bonus-assertions" version))
3647 (sha256
3648 (base32
c9e261b7 3649 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
e07ef1d6
BW
3650 (build-system ruby-build-system)
3651 (arguments
3652 `(#:phases
3653 (modify-phases %standard-phases
3654 (add-before 'check 'clean-dependencies
3655 (lambda _
3656 ;; Remove unneeded require statement that would entail another
3657 ;; dependency.
3658 (substitute* "test/minitest_config.rb"
3659 (("require 'minitest/bisect'") ""))
3660 #t)))))
3661 (native-inputs
3662 `(("ruby-hoe" ,ruby-hoe)
3663 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
3664 ("ruby-minitest-focus" ,ruby-minitest-focus)
3665 ("ruby-minitest-moar" ,ruby-minitest-moar)))
3666 (synopsis "Bonus assertions for @code{Minitest}")
3667 (description
3668 "Minitest bonus assertions provides extra MiniTest assertions. For
3669instance, it provides @code{assert_true}, @code{assert_false} and
3670@code{assert_set_equal}.")
3671 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
3672 (license license:expat)))
3673
e2c9a9cc
CB
3674(define-public ruby-minitest-reporters
3675 (package
3676 (name "ruby-minitest-reporters")
3677 (version "1.3.6")
3678 (source
3679 (origin
3680 (method url-fetch)
3681 (uri (rubygems-uri "minitest-reporters" version))
3682 (sha256
3683 (base32
3684 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
3685 (build-system ruby-build-system)
3686 (arguments
3687 '(#:phases
3688 (modify-phases %standard-phases
3689 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
3690 ;; including it as an input can lead to circular dependencies.
3691 (add-after 'unpack 'remove-rubocop-from-Rakefile
3692 (lambda _
3693 (substitute* "Rakefile"
3694 (("require 'rubocop/rake\\_task'") "")
3695 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
3696 #t))
3697 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
3698 (lambda _
3699 (substitute* "minitest-reporters.gemspec"
3700 ((".*%q<rubocop>.*") "\n"))
3701 #t)))))
3702 (propagated-inputs
3703 `(("ruby-ansi" ,ruby-ansi)
3704 ("ruby-builder" ,ruby-builder)
3705 ("ruby-minitest" ,ruby-minitest)
3706 ("ruby-progressbar" ,ruby-progressbar)))
3707 (native-inputs
3708 `(("bundler" ,bundler)
3709 ("ruby-maruku" ,ruby-maruku)))
3710 (synopsis "Enhanced reporting for Minitest tests")
3711 (description
3712 "@code{minitest/reporters} provides a custom Minitest runner to improve
3713how the test state is reported. A number of different reporters are
3714available, including a spec reporter, progress bar reporter, a HTML
3715reporter.")
3716 (home-page "https://github.com/kern/minitest-reporters")
3717 (license license:expat)))
3718
e582fa93
BW
3719(define-public ruby-minitest-rg
3720 (package
3721 (name "ruby-minitest-rg")
3722 (version "5.2.0")
3723 (source
3724 (origin
3725 (method url-fetch)
3726 (uri (rubygems-uri "minitest-rg" version))
3727 (sha256
3728 (base32
3729 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
3730 (build-system ruby-build-system)
3731 (arguments
3732 ;; Some tests fail even outside Guix, so disable tests.
3733 ;; https://github.com/blowmage/minitest-rg/issues/12
3734 ;; https://github.com/blowmage/minitest-rg/pull/13
3735 `(#:tests? #f))
3736 (propagated-inputs
3737 `(("ruby-minitest" ,ruby-minitest)))
3738 (synopsis "Coloured output for Minitest")
3739 (description
3740 "@code{minitest-rg} changes the colour of the output from Minitest.")
8e486e80 3741 (home-page "https://blowmage.com/minitest-rg/")
e582fa93
BW
3742 (license license:expat)))
3743
2a96dbe6
BW
3744(define-public ruby-minitest-hooks
3745 (package
3746 (name "ruby-minitest-hooks")
eaaf8b12 3747 (version "1.4.2")
2a96dbe6
BW
3748 (source
3749 (origin
3750 (method url-fetch)
3751 (uri (rubygems-uri "minitest-hooks" version))
3752 (sha256
3753 (base32
eaaf8b12 3754 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
2a96dbe6
BW
3755 (build-system ruby-build-system)
3756 (arguments
3757 '(#:test-target "spec"))
3758 (native-inputs
3759 `(("ruby-sequel" ,ruby-sequel)
3760 ("ruby-sqlite3" ,ruby-sqlite3)))
3761 (synopsis "Hooks for the minitest framework")
3762 (description
3763 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
3764@code{around_all} hooks for Minitest. This allows, for instance, running each
3765suite of specs inside a database transaction, running each spec inside its own
3766savepoint inside that transaction. This can significantly speed up testing
3767for specs that share expensive database setup code.")
7bf837fd 3768 (home-page "https://github.com/jeremyevans/minitest-hooks")
2a96dbe6
BW
3769 (license license:expat)))
3770
afbbdf77
DT
3771(define-public ruby-daemons
3772 (package
3773 (name "ruby-daemons")
f03153db 3774 (version "1.2.5")
afbbdf77
DT
3775 (source (origin
3776 (method url-fetch)
e83c6d00 3777 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
3778 (sha256
3779 (base32
f03153db 3780 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
afbbdf77
DT
3781 (build-system ruby-build-system)
3782 (arguments
3783 `(#:tests? #f)) ; no test suite
3784 (synopsis "Daemonize Ruby programs")
3785 (description "Daemons provides a way to wrap existing Ruby scripts to be
3786run as a daemon and to be controlled by simple start/stop/restart commands.")
3787 (home-page "https://github.com/thuehlinger/daemons")
3788 (license license:expat)))
b03eb6ac
CB
3789
3790(define-public ruby-data_uri
3791 (package
3792 (name "ruby-data_uri")
3793 (version "0.1.0")
3794 (source
3795 (origin
3796 (method url-fetch)
3797 (uri (rubygems-uri "data_uri" version))
3798 (sha256
3799 (base32
3800 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
3801 (build-system ruby-build-system)
3802 (synopsis "URI class for parsing data URIs")
3803 (description
3804 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
3805embedded inside a URI. The URI::Data class provides support for parsing these
3806URIs using the normal URI.parse method.")
3807 (home-page "https://github.com/dball/data_uri")
3808 (license license:expat)))
66e20863 3809
72c785f9
MB
3810(define-public ruby-deep-merge
3811 (package
3812 (name "ruby-deep-merge")
3813 (version "1.2.1")
3814 (home-page "https://github.com/danielsdeleo/deep_merge")
3815 ;; The Rubygem source does not contain the gemspec required for tests.
3816 (source (origin
3817 (method git-fetch)
3818 (uri (git-reference (url home-page) (commit version)))
3819 (file-name (git-file-name name version))
3820 (sha256
3821 (base32
3822 "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931"))))
3823 (build-system ruby-build-system)
3824 (native-inputs
3825 `(("ruby-minitest" ,ruby-minitest)))
3826 (synopsis "Recursively merge hashes")
3827 (description
3828 "Deep Merge is a set of utility functions for @code{Hash}. It permits
3829you to merge elements inside a hash together recursively.")
3830 (license license:expat)))
3831
66e20863
DT
3832(define-public ruby-git
3833 (package
3834 (name "ruby-git")
ceaff59e 3835 (version "1.3.0")
66e20863
DT
3836 (source (origin
3837 (method url-fetch)
e83c6d00 3838 (uri (rubygems-uri "git" version))
66e20863
DT
3839 (sha256
3840 (base32
ceaff59e 3841 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
66e20863
DT
3842 (build-system ruby-build-system)
3843 (arguments
e83c6d00
DT
3844 `(#:tests? #f ; no tests
3845 #:phases (modify-phases %standard-phases
3846 (add-after 'install 'patch-git-binary
3847 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
3848 ;; Make the default git binary an absolute path to the
3849 ;; store.
e83c6d00
DT
3850 (let ((git (string-append (assoc-ref inputs "git")
3851 "/bin/git"))
3cb3fa67
CB
3852 (config (string-append
3853 (assoc-ref outputs "out")
3854 "/lib/ruby/vendor_ruby/gems/git-"
3855 ,version "/lib/git/config.rb")))
e83c6d00 3856 (substitute* (list config)
66e20863
DT
3857 (("'git'")
3858 (string-append "'" git "'")))
e83c6d00 3859 #t))))))
66e20863
DT
3860 (inputs
3861 `(("git" ,git)))
3862 (synopsis "Ruby wrappers for Git")
3863 (description "Ruby/Git is a Ruby library that can be used to create, read
3864and manipulate Git repositories by wrapping system calls to the git binary.")
3865 (home-page "https://github.com/schacon/ruby-git")
3866 (license license:expat)))
71d3e2c2 3867
95598153
MB
3868(define-public ruby-hocon
3869 (package
3870 (name "ruby-hocon")
fd13ec5f 3871 (version "1.3.1")
95598153
MB
3872 (home-page "https://github.com/puppetlabs/ruby-hocon")
3873 (source (origin
3874 (method git-fetch)
3875 (uri (git-reference (url home-page) (commit version)))
3876 (file-name (git-file-name name version))
3877 (sha256
3878 (base32
fd13ec5f 3879 "172hh2zr0n9nnszv0qvlgwszgkrq84yahrg053m68asy79zpmbqr"))))
95598153
MB
3880 (build-system ruby-build-system)
3881 (arguments
3882 '(#:phases (modify-phases %standard-phases
3883 (replace 'check
3884 (lambda* (#:key tests? #:allow-other-keys)
3885 (if tests?
3886 (invoke "rspec")
3887 (format #t "test suite not run~%"))
3888 #t)))))
3889 (native-inputs
3890 `(("bundler" ,bundler)
3891 ("ruby-rspec" ,ruby-rspec)))
3892 (synopsis "HOCON config library")
3893 (description
3894 "This package provides Ruby support for the @acronym{HOCON,
3895Human-Optimized Config Object Notation} configuration file format. It
3896supports parsing and modifying HOCON and JSON files, and rendering parsed
3897objects back to a @code{String}.")
3898 (license license:asl2.0)))
3899
71d3e2c2
DT
3900(define-public ruby-slop
3901 (package
3902 (name "ruby-slop")
d14e5eaa 3903 (version "4.5.0")
71d3e2c2
DT
3904 (source (origin
3905 (method url-fetch)
e83c6d00 3906 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
3907 (sha256
3908 (base32
d14e5eaa 3909 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
71d3e2c2
DT
3910 (build-system ruby-build-system)
3911 (native-inputs
3912 `(("ruby-minitest" ,ruby-minitest)))
3913 (synopsis "Ruby command line option parser")
3914 (description "Slop provides a Ruby domain specific language for gathering
3915options and parsing command line flags.")
3916 (home-page "https://github.com/leejarvis/slop")
3917 (license license:expat)))
e778a549 3918
5337f8b9
DT
3919(define-public ruby-slop-3
3920 (package (inherit ruby-slop)
3921 (version "3.6.0")
3922 (source (origin
3923 (method url-fetch)
3924 (uri (rubygems-uri "slop" version))
3925 (sha256
3926 (base32
3927 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
3928
ca914b5b
CB
3929(define-public ruby-multi-xml
3930 (package
3931 (name "ruby-multi-xml")
3932 (version "0.6.0")
3933 (source
3934 (origin
3935 (method url-fetch)
3936 (uri (rubygems-uri "multi_xml" version))
3937 (sha256
3938 (base32
3939 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
3940 (build-system ruby-build-system)
3941 (arguments
3942 '(#:tests? #f)) ; No included tests
3943 (synopsis "Swappable XML backends for Ruby")
3944 (description
3945 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
3946Nokogiri, Ox, or REXML.")
3947 (home-page "https://github.com/sferik/multi_xml")
3948 (license license:expat)))
3949
e778a549
DT
3950(define-public ruby-multipart-post
3951 (package
3952 (name "ruby-multipart-post")
3953 (version "2.0.0")
3954 (source (origin
3955 (method url-fetch)
e83c6d00 3956 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
3957 (sha256
3958 (base32
e83c6d00 3959 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
3960 (build-system ruby-build-system)
3961 (native-inputs
3962 `(("bundler" ,bundler)))
3963 (synopsis "Multipart POST library for Ruby")
3964 (description "Multipart-Post Adds multipart POST capability to Ruby's
3965net/http library.")
3966 (home-page "https://github.com/nicksieger/multipart-post")
3967 (license license:expat)))
f8da3af0 3968
9a97e7ce
CB
3969(define-public ruby-multi-json
3970 (package
3971 (name "ruby-multi-json")
1b6f5475 3972 (version "1.13.1")
9a97e7ce
CB
3973 (source
3974 (origin
b872b47b 3975 (method git-fetch)
1b6f5475
BW
3976 ;; Tests are not distributed at rubygems.org so download from GitHub
3977 ;; instead.
b872b47b
EF
3978 (uri (git-reference
3979 (url "https://github.com/intridea/multi_json")
3980 (commit (string-append "v" version))))
3981 (file-name (git-file-name name version))
9a97e7ce
CB
3982 (sha256
3983 (base32
b872b47b 3984 "18wpb6p01rrkl4v33byh70vxj2a5jxkfxzv3pz8z6pssy4ymwkm4"))))
9a97e7ce
CB
3985 (build-system ruby-build-system)
3986 (arguments
1b6f5475
BW
3987 `(#:phases
3988 (modify-phases %standard-phases
3989 (add-after 'unpack 'remove-signing-key-reference
3990 (lambda _
3991 (substitute* "multi_json.gemspec"
3992 ((".*spec.signing_key.*") ""))
3993 #t)))))
3994 (native-inputs
3995 `(("bundler" ,bundler)
3996 ("ruby-rspec" ,ruby-rspec)
3997 ("ruby-yard" ,ruby-yard)
3998 ("ruby-json-pure" ,ruby-json-pure)
3999 ("ruby-oj" ,ruby-oj)
4000 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
9a97e7ce
CB
4001 (synopsis "Common interface to multiple JSON libraries for Ruby")
4002 (description
4003 "This package provides a common interface to multiple JSON libraries,
4004including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
4005NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
1b6f5475 4006 (home-page "https://github.com/intridea/multi_json")
9a97e7ce
CB
4007 (license license:expat)))
4008
5edef88b
BW
4009(define-public ruby-multi-test
4010 (package
4011 (name "ruby-multi-test")
4012 (version "0.1.2")
4013 (source
4014 (origin
4015 (method url-fetch)
4016 (uri (rubygems-uri "multi_test" version))
4017 (sha256
4018 (base32
4019 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
4020 (build-system ruby-build-system)
4021 (arguments
4022 '(;; Tests require different sets of specific gem versions to be available,
4023 ;; and there is no gemfile that specifies the newest versions of
4024 ;; dependencies to be tested.
4025 #:tests? #f))
4026 (synopsis
4027 "Interface to testing libraries loaded into a running Ruby process")
4028 (description
4029 "@code{multi_test} provides a uniform interface onto whatever testing
4030libraries that have been loaded into a running Ruby process to help control
4031rogue test/unit/autorun requires.")
4032 (home-page "https://github.com/cucumber/multi_test")
9a97e7ce
CB
4033 (license license:expat)))
4034
f8da3af0
DT
4035(define-public ruby-arel
4036 (package
4037 (name "ruby-arel")
aecd533d 4038 (version "9.0.0")
f8da3af0
DT
4039 (source (origin
4040 (method url-fetch)
4041 (uri (rubygems-uri "arel" version))
4042 (sha256
4043 (base32
aecd533d 4044 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
f8da3af0
DT
4045 (build-system ruby-build-system)
4046 (arguments '(#:tests? #f)) ; no tests
4047 (home-page "https://github.com/rails/arel")
4048 (synopsis "SQL AST manager for Ruby")
6f23e2fb
TGR
4049 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
4050Ruby. It simplifies the generation of complex SQL queries and adapts to
4051various relational database implementations.")
f8da3af0 4052 (license license:expat)))
616eaead 4053
554bf4f6
CB
4054(define-public ruby-marcel
4055 (package
4056 (name "ruby-marcel")
4057 (version "0.3.3")
4058 (source
4059 (origin
4060 (method url-fetch)
4061 (uri (rubygems-uri "marcel" version))
4062 (sha256
4063 (base32
4064 "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
4065 (build-system ruby-build-system)
4066 (arguments
4067 '(;; No included tests
4068 #:tests? #f))
4069 (propagated-inputs
4070 `(("ruby-mimemagic" ,ruby-mimemagic)))
4071 (synopsis "MIME type detection using magic numbers, filenames and extensions")
4072 (description
4073 "@code{marcel} provides @acronym{MIME, Multipurpose Internet Mail
4074Extensions} type detection using magic numbers, filenames, and extensions")
4075 (home-page "https://github.com/basecamp/marcel")
4076 (license license:expat)))
4077
616eaead 4078(define-public ruby-minitar
bfaf8efd
BW
4079 ;; We package from the GitHub source to fix the security issue reported at
4080 ;; https://github.com/halostatue/minitar/issues/16.
4081 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
4082 (package
4083 (name "ruby-minitar")
4084 (version (string-append "0.5.4-1." (string-take commit 8)))
4085 (source
4086 (origin
4087 (method git-fetch)
4088 (uri (git-reference
4089 (url "https://github.com/halostatue/minitar.git")
4090 (commit commit)))
4091 (file-name (string-append name "-" version "-checkout"))
4092 (sha256
4093 (base32
4094 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
4095 (build-system ruby-build-system)
4096 (arguments
4097 '(#:tests? #f)) ; missing a gemspec
4098 (synopsis "Ruby library and utility for handling tar archives")
4099 (description
4100 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
616eaead 4101that provides the ability to deal with POSIX tar archive files.")
bfaf8efd
BW
4102 (home-page "http://www.github.com/atoulme/minitar")
4103 (license (list license:gpl2+ license:ruby)))))
bea1c0e2
DT
4104
4105(define-public ruby-mini-portile
4106 (package
4107 (name "ruby-mini-portile")
4108 (version "0.6.2")
4109 (source
4110 (origin
4111 (method url-fetch)
4112 (uri (rubygems-uri "mini_portile" version))
4113 (sha256
4114 (base32
4115 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
4116 (build-system ruby-build-system)
4117 (arguments
4118 '(#:tests? #f)) ; tests require network access
4119 (synopsis "Ports system for Ruby developers")
4120 (description "Mini-portile is a port/recipe system for Ruby developers.
4121It provides a standard way to compile against specific versions of libraries
4122to reproduce user environments.")
7bf837fd 4123 (home-page "https://github.com/flavorjones/mini_portile")
bea1c0e2 4124 (license license:expat)))
e920bfca 4125
d000fc92
BW
4126(define-public ruby-mini-portile-2
4127 (package (inherit ruby-mini-portile)
a88ac044 4128 (version "2.4.0")
d000fc92
BW
4129 (source (origin
4130 (method url-fetch)
4131 (uri (rubygems-uri "mini_portile2" version))
4132 (sha256
4133 (base32
a88ac044 4134 "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"))))))
d000fc92 4135
e920bfca
DT
4136(define-public ruby-nokogiri
4137 (package
4138 (name "ruby-nokogiri")
62cc7344 4139 (version "1.10.9")
e920bfca
DT
4140 (source (origin
4141 (method url-fetch)
4142 (uri (rubygems-uri "nokogiri" version))
4143 (sha256
4144 (base32
62cc7344 4145 "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm"))))
e920bfca
DT
4146 (build-system ruby-build-system)
4147 (arguments
4148 ;; Tests fail because Nokogiri can only test with an installed extension,
4149 ;; and also because many test framework dependencies are missing.
7b01f250 4150 `(#:tests? #f
e920bfca
DT
4151 #:gem-flags (list "--" "--use-system-libraries"
4152 (string-append "--with-xml2-include="
4153 (assoc-ref %build-inputs "libxml2")
5e7f1b0b
BW
4154 "/include/libxml2" ))
4155 #:phases
4156 (modify-phases %standard-phases
7b01f250
BW
4157 (add-before 'build 'patch-extconf
4158 ;; 'pkg-config' is not included in the GEM_PATH during
4159 ;; installation, so we add it directly to the load path.
4160 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 4161 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
7b01f250
BW
4162 (substitute* "ext/nokogiri/extconf.rb"
4163 (("gem 'pkg-config'.*")
4164 (string-append "$:.unshift '"
3cb3fa67 4165 pkg-config "/lib/ruby/vendor_ruby"
7b01f250
BW
4166 "/gems/pkg-config-"
4167 ,(package-version ruby-pkg-config)
4168 "/lib'\n"))))
5e7f1b0b 4169 #t)))))
e920bfca 4170 (native-inputs
7b01f250 4171 `(("ruby-hoe" ,ruby-hoe)))
e920bfca
DT
4172 (inputs
4173 `(("zlib" ,zlib)
4174 ("libxml2" ,libxml2)
4175 ("libxslt" ,libxslt)))
4176 (propagated-inputs
7b01f250
BW
4177 `(("ruby-mini-portile" ,ruby-mini-portile-2)
4178 ("ruby-pkg-config" ,ruby-pkg-config)))
e920bfca
DT
4179 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
4180 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
4181both CSS3 selector and XPath 1.0 support.")
4182 (home-page "http://www.nokogiri.org/")
4183 (license license:expat)))
30b0b725
DT
4184
4185(define-public ruby-method-source
4186 (package
4187 (name "ruby-method-source")
ec08f469 4188 (version "1.0.0")
30b0b725
DT
4189 (source
4190 (origin
4191 (method url-fetch)
4192 (uri (rubygems-uri "method_source" version))
4193 (sha256
4194 (base32
ec08f469 4195 "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"))))
30b0b725 4196 (build-system ruby-build-system)
c8355037
BW
4197 (arguments
4198 `(#:test-target "spec"))
30b0b725 4199 (native-inputs
c8355037 4200 `(("ruby-rspec" ,ruby-rspec)
30b0b725
DT
4201 ("git" ,git)))
4202 (synopsis "Retrieve the source code for Ruby methods")
4203 (description "Method_source retrieves the source code for Ruby methods.
4204Additionally, it can extract source code from Proc and Lambda objects or just
4205extract comments.")
4206 (home-page "https://github.com/banister/method_source")
4207 (license license:expat)))
2e3fdea4
DT
4208
4209(define-public ruby-coderay
4210 (package
4211 (name "ruby-coderay")
5cf0997a 4212 (version "1.1.2")
2e3fdea4
DT
4213 (source
4214 (origin
4215 (method url-fetch)
4216 (uri (rubygems-uri "coderay" version))
4217 (sha256
4218 (base32
5cf0997a 4219 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
2e3fdea4
DT
4220 (build-system ruby-build-system)
4221 (arguments
4222 '(#:tests? #f)) ; missing test files
4223 (synopsis "Ruby syntax highlighting library")
4224 (description "Coderay is a Ruby library that provides syntax highlighting
4225for select languages.")
4226 (home-page "http://coderay.rubychan.de")
4227 (license license:expat)))
96e76083 4228
f9083965
MC
4229(define-public ruby-cuke-modeler
4230 (package
4231 (name "ruby-cuke-modeler")
4232 (version "3.1.0")
4233 (source
4234 (origin
4235 (method url-fetch)
4236 (uri (rubygems-uri "cuke_modeler" version))
4237 (sha256
4238 (base32
4239 "19smj3g3wvz0203l549sadpcxgh0ir350a6k78gq0bmlv9cchmjb"))))
4240 (build-system ruby-build-system)
4241 (arguments `(#:tests? #f)) ;no test suite in gem
4242 (propagated-inputs
4243 `(("ruby-gherkin" ,ruby-gherkin)))
4244 (synopsis "Gherkin test suite analysis tool")
4245 (description "CukeModeler facilitates modeling a test suite that is
4246written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by
4247providing an abstraction layer on top of the Abstract Syntax Tree (AST) that
4248the @code{cucumber-gherkin} generates when parsing features, as well as
4249providing models for feature files and directories in order to be able to have
4250a fully traversable model tree of a test suite's structure. These models can
4251then be analyzed or manipulated more easily than the underlying AST layer.")
4252 (home-page "https://github.com/enkessler/cuke_modeler")
4253 (license license:expat)))
4254
2156cc9c
MB
4255(define-public ruby-parallel-tests
4256 (package
4257 (name "ruby-parallel-tests")
8a01e2fa 4258 (version "3.0.0")
2156cc9c
MB
4259 (home-page "https://github.com/grosser/parallel_tests")
4260 (source (origin
4261 (method git-fetch)
4262 (uri (git-reference
4263 (url home-page)
4264 (commit (string-append "v" version))))
4265 (file-name (string-append name version))
4266 (sha256
4267 (base32
8a01e2fa 4268 "08a6ndqn2dqacmc7yg48k0dh2rfrynvhkd5hiay16dl9m1r9q8pz"))))
2156cc9c
MB
4269 (build-system ruby-build-system)
4270 (arguments
4271 '(#:test-target "default"
4272 #:phases (modify-phases %standard-phases
4273 (add-after 'patch-source-shebangs 'patch-shell-invokations
4274 (lambda _
4275 (substitute* '("lib/parallel_tests/tasks.rb"
4276 "spec/parallel_tests/tasks_spec.rb")
4277 (("/bin/sh") (which "sh"))
4278 (("/bin/bash") (which "bash")))
4279 #t))
4280 (add-before 'check 'remove-version-constraints
4281 (lambda _
4282 ;; Remove hard coded version constraints, instead just
4283 ;; use whatever versions are available in Guix.
4284 (delete-file "Gemfile.lock")
4285 (substitute* "Gemfile"
4286 (("'minitest',.*")
4287 "'minitest'\n")
4288 (("'cucumber',.*")
4289 "'cucumber'\n"))
4290 #t))
4291 (add-before 'check 'disable-rails-test
4292 (lambda _
4293 ;; XXX: This test attempts to download and run the test
4294 ;; suites of multiple Rails versions(!) directly.
4295 (delete-file "spec/rails_spec.rb")
4296 #t))
4297 (add-before 'check 'set-HOME
4298 (lambda _
4299 ;; Some tests check the output of Bundler, and fail when
4300 ;; Bundler warns that /homeless-shelter does not exist.
4301 (setenv "HOME" "/tmp")
4302 #t)))))
4303 (native-inputs
4304 `(("ruby-bump" ,ruby-bump)
4305 ("ruby-cucumber" ,ruby-cucumber)
8a01e2fa 4306 ("ruby-cuke-modeler" ,ruby-cuke-modeler)
2156cc9c
MB
4307 ("ruby-minitest" ,ruby-minitest)
4308 ("ruby-rake" ,ruby-rake)
4309 ("ruby-rspec" ,ruby-rspec)
4310 ("ruby-spinach" ,ruby-spinach)))
4311 (propagated-inputs
4312 `(("ruby-parallel" ,ruby-parallel)))
4313 (synopsis "Run tests in parallel")
4314 (description
4315 "This package can speed up @code{Test::Unit}, @code{RSpec},
4316@code{Cucumber}, and @code{Spinach} tests by running them concurrently
4317across multiple CPU cores.")
4318 (license license:expat)))
4319
54993457
CB
4320(define-public ruby-parser
4321 (package
4322 (name "ruby-parser")
4323 (version "2.6.0.0")
4324 (source
4325 (origin
4326 (method url-fetch)
4327 (uri (rubygems-uri "parser" version))
4328 (sha256
4329 (base32
4330 "1hhz2k5417vr2k1llwqgjdnmyrhlpqicy0y2arr6r1gp04fg9wlm"))))
4331 (build-system ruby-build-system)
4332 (native-inputs
4333 `(("bundler" ,bundler)
4334 ("ruby-cliver" ,ruby-cliver)
4335 ("ruby-simplecov" ,ruby-simplecov)
4336 ("ruby-racc" ,ruby-racc)))
4337 (inputs
4338 `(("ragel" ,ragel)))
4339 (propagated-inputs
4340 `(("ruby-ast" ,ruby-ast)))
4341 (synopsis "Ruby parser written in pure Ruby")
4342 (description
4343 "This package provides a Ruby parser written in pure Ruby.")
4344 (home-page "https://github.com/whitequark/parser")
4345 (license license:expat)))
4346
a8cdfd53
MC
4347(define-public ruby-sexp-processor
4348 (package
4349 (name "ruby-sexp-processor")
4350 (version "4.15.0")
4351 (source
4352 (origin
4353 (method url-fetch)
4354 (uri (rubygems-uri "sexp_processor" version))
4355 (sha256
4356 (base32
4357 "0d1vks77xnd0m3s94a58f9bkdwlaml5qdkmprx279m2s0pc2gv55"))))
4358 (build-system ruby-build-system)
4359 (native-inputs
4360 ;; TODO: Add ruby-minitest-proveit once available.
4361 `(("hoe" ,ruby-hoe)))
4362 (synopsis "ParseTree fork which includes generic S-exp processing tools")
4363 (description "The sexp_processor package is derived from ParseTree, but
4364contrary to ParseTree, it includes all the generic S-exp processing tools.
4365Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and
4366@code{Environment}")
4367 (home-page "https://github.com/seattlerb/sexp_processor")
4368 (license license:expat)))
4369
24be6751
MC
4370(define-public ruby-ruby-parser
4371 (package
4372 (name "ruby-ruby-parser")
4373 (version "3.14.2")
4374 (source
4375 (origin
4376 (method url-fetch)
4377 (uri (rubygems-uri "ruby_parser" version))
4378 (sha256
4379 (base32
4380 "09qcdyjjw3p7g6cjm5m9swkms1xnv35ndiy7yw24cas16qrhha6c"))))
4381 (build-system ruby-build-system)
4382 (native-inputs
4383 `(("hoe" ,ruby-hoe)
4384 ("racc" ,ruby-racc)
4385 ("unifdef" ,unifdef)))
4386 (propagated-inputs
4387 `(("ruby-sexp-processor" ,ruby-sexp-processor)))
4388 (home-page "https://github.com/seattlerb/ruby_parser/")
4389 (synopsis "Ruby parser written in pure Ruby")
4390 (description "The ruby_parser (RP) package provides a Ruby parser written
4391in pure Ruby. It outputs S-expressions which can be manipulated and converted
4392back to Ruby via the @code{ruby2ruby} library.")
4393 (license license:expat)))
4394
16f423cb
CB
4395(define-public ruby-prawn-manual-builder
4396 (package
4397 (name "ruby-prawn-manual-builder")
1d4f0019 4398 (version "0.3.1")
16f423cb
CB
4399 (source
4400 (origin
4401 (method url-fetch)
4402 (uri (rubygems-uri "prawn-manual_builder" version))
4403 (sha256
1d4f0019 4404 (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs"))))
16f423cb
CB
4405 (build-system ruby-build-system)
4406 (arguments
1d4f0019 4407 '(#:tests? #f ; no included tests
16f423cb
CB
4408 #:phases
4409 (modify-phases %standard-phases
4410 (add-after 'extract-gemspec 'patch-gemspec
4411 (lambda _
4412 (substitute* ".gemspec"
4413 ;; Loosen the requirement for pdf-inspector
4414 (("~> 1\\.0\\.7") ">= 0")))))))
4415 (propagated-inputs
4416 `(("ruby-coderay" ,ruby-coderay)))
4417 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
4418 (description
4419 "This package provides a tool for writing manuals for Prawn and Prawn
4420accessories")
4421 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
4422 (license (list
4423 ;; GPLv2 or GPLv3 or custom license described in LICENSE file
4424 license:gpl2
4425 license:gpl3))))
4426
268643b9
CB
4427(define-public ruby-progress_bar
4428 (package
4429 (name "ruby-progress_bar")
4430 (version "1.1.0")
4431 (source
4432 (origin
4433 (method url-fetch)
4434 (uri (rubygems-uri "progress_bar" version))
4435 (sha256
4436 (base32
4437 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
4438 (build-system ruby-build-system)
4439 (arguments
4440 '(#:test-target "spec"))
4441 (propagated-inputs
4442 `(("ruby-highline" ,ruby-highline)
4443 ("ruby-options" ,ruby-options)))
4444 (native-inputs
4445 `(("bundler" ,bundler)
4446 ("ruby-rspec" ,ruby-rspec)
4447 ("ruby-timecop" ,ruby-timecop)))
4448 (synopsis
4449 "Ruby library for displaying progress bars")
4450 (description
4451 "ProgressBar is a simple library for displaying progress bars. The
4452maximum value is configurable, and additional information can be displayed
4453like the percentage completion, estimated time remaining, elapsed time and
4454rate.")
4455 (home-page "https://github.com/paul/progress_bar")
4456 (license license:wtfpl2)))
4457
95f85d44
CB
4458(define-public ruby-dep
4459 (package
4460 (name "ruby-dep")
4461 (version "1.5.0")
4462 (source
4463 (origin
4464 (method url-fetch)
4465 (uri (rubygems-uri "ruby_dep" version))
4466 (sha256
4467 (base32
4468 "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
4469 (build-system ruby-build-system)
4470 (arguments
4471 '(#:tests? #f)) ; No included tests
4472 (synopsis "Creates a version constraint of supported Rubies")
4473 (description
4474 "This package helps create a version constraint of supported Rubies,
4475suitable for a gemspec file.")
4476 (home-page "https://github.com/e2/ruby_dep")
4477 (license license:expat)))
4478
158a9253
CB
4479(define-public ruby-progressbar
4480 (package
4481 (name "ruby-progressbar")
2d2a2363 4482 (version "1.10.1")
158a9253
CB
4483 (source
4484 (origin
4485 (method url-fetch)
4486 (uri (rubygems-uri "ruby-progressbar" version))
4487 (sha256
2d2a2363 4488 (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf"))))
158a9253
CB
4489 (build-system ruby-build-system)
4490 (arguments
4491 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
4492 #:tests? #f))
4493 (synopsis "Text progress bar library for Ruby")
4494 (description
4495 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
4496The output can be customized with a formatting system.")
4497 (home-page "https://github.com/jfelchner/ruby-progressbar")
4498 (license license:expat)))
4499
96e76083
DT
4500(define-public ruby-pry
4501 (package
4502 (name "ruby-pry")
a0d93c17 4503 (version "0.13.1")
96e76083
DT
4504 (source
4505 (origin
4506 (method url-fetch)
4507 (uri (rubygems-uri "pry" version))
4508 (sha256
4509 (base32
a0d93c17 4510 "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk"))))
96e76083
DT
4511 (build-system ruby-build-system)
4512 (arguments
4513 '(#:tests? #f)) ; no tests
4514 (propagated-inputs
4515 `(("ruby-coderay" ,ruby-coderay)
1960d4fd 4516 ("ruby-method-source" ,ruby-method-source)))
96e76083
DT
4517 (synopsis "Ruby REPL")
4518 (description "Pry is an IRB alternative and runtime developer console for
4519Ruby. It features syntax highlighting, a plugin architecture, runtime
4520invocation, and source and documentation browsing.")
a0d93c17 4521 (home-page "https://cobaltbluemedia.com/pryrepl/")
96e76083 4522 (license license:expat)))
1415792a 4523
def7908a
MB
4524(define-public ruby-single-cov
4525 (package
4526 (name "ruby-single-cov")
4527 (version "1.3.2")
4528 (home-page "https://github.com/grosser/single_cov")
4529 (source (origin
4530 (method git-fetch)
4531 (uri (git-reference (url home-page)
4532 (commit (string-append "v" version))))
4533 (file-name (git-file-name name version))
4534 (sha256
4535 (base32
4536 "05qdzpcai1p23a120gb9bxkfl4y73k9hicx34ch2lsk31lgi9bl7"))))
4537 (build-system ruby-build-system)
4538 (arguments
4539 '(#:test-target "default"
4540 #:phases (modify-phases %standard-phases
4541 (replace 'replace-git-ls-files
4542 (lambda _
4543 (substitute* "single_cov.gemspec"
4544 (("`git ls-files lib/ bin/ MIT-LICENSE`")
4545 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
4546 #t))
4547 (add-before 'check 'remove-version-constraints
4548 (lambda _
4549 (delete-file "Gemfile.lock")
4550 #t))
4551 (add-before 'check 'make-files-writable
4552 (lambda _
4553 ;; Tests need to create local directories and open files
4554 ;; with write permissions.
4555 (for-each make-file-writable
4556 (find-files "specs" #:directories? #t))
4557 #t))
4558 (add-before 'check 'disable-failing-test
4559 (lambda _
4560 ;; XXX: This test copies assets from minitest, but can
4561 ;; not cope with the files being read-only. Just skip
4562 ;; it for now.
4563 (substitute* "specs/single_cov_spec.rb"
4564 (("it \"complains when coverage is bad\"")
4565 "xit \"complains when coverage is bad\""))
4566 #t)))))
4567 (native-inputs
4568 `(("ruby-bump" ,ruby-bump)
4569 ("ruby-minitest" ,ruby-minitest)
4570 ("ruby-rspec" ,ruby-rspec)
4571 ("ruby-simplecov" ,ruby-simplecov)))
4572 (synopsis "Code coverage reporting tool")
4573 (description
4574 "This package provides actionable code coverage reports for Ruby
4575projects. It has very little overhead and can be easily integrated with
4576development tools to catch coverage problems early.")
4577 (license license:expat)))
4578
051deeb7
RW
4579(define-public ruby-guard
4580 (package
4581 (name "ruby-guard")
4582 (version "2.13.0")
4583 (source (origin
3c6128f6 4584 (method git-fetch)
051deeb7
RW
4585 ;; The gem does not include a Rakefile, nor does it contain a
4586 ;; gemspec file, nor does it come with the tests. This is why
4587 ;; we fetch the tarball from Github.
3c6128f6
EF
4588 (uri (git-reference
4589 (url "https://github.com/guard/guard")
4590 (commit (string-append "v" version))))
4591 (file-name (git-file-name name version))
051deeb7
RW
4592 (sha256
4593 (base32
3c6128f6 4594 "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs"))))
051deeb7
RW
4595 (build-system ruby-build-system)
4596 (arguments
4597 `(#:tests? #f ; tests require cucumber
4598 #:phases
4599 (modify-phases %standard-phases
4600 (add-after 'unpack 'remove-git-ls-files
4601 (lambda* (#:key outputs #:allow-other-keys)
4602 (substitute* "guard.gemspec"
4603 (("git ls-files -z") "find . -type f -print0"))
4604 #t))
4605 (replace 'build
4606 (lambda _
9923d5a4 4607 (invoke "gem" "build" "guard.gemspec"))))))
051deeb7
RW
4608 (propagated-inputs
4609 `(("ruby-formatador" ,ruby-formatador)
4610 ("ruby-listen" ,ruby-listen)
4611 ("ruby-lumberjack" ,ruby-lumberjack)
4612 ("ruby-nenv" ,ruby-nenv)
4613 ("ruby-notiffany" ,ruby-notiffany)
4614 ("ruby-pry" ,ruby-pry)
4615 ("ruby-shellany" ,ruby-shellany)
4616 ("ruby-thor" ,ruby-thor)))
4617 (native-inputs
4618 `(("bundler" ,bundler)
4619 ("ruby-rspec" ,ruby-rspec)))
4620 (synopsis "Tool to handle events on file system modifications")
4621 (description
4622 "Guard is a command line tool to easily handle events on file system
4623modifications. Guard automates various tasks by running custom rules whenever
4624file or directories are modified.")
3c6128f6 4625 (home-page "https://guardgem.org/")
051deeb7
RW
4626 (license license:expat)))
4627
c09bc60d
MB
4628(define-public ruby-spinach
4629 (package
4630 (name "ruby-spinach")
4631 (version "0.11.0")
4632 (home-page "http://github.com/codegram/spinach")
4633 (source (origin
4634 (method url-fetch)
4635 (uri (rubygems-uri "spinach" version))
4636 (sha256
4637 (base32
4638 "1mv053mqz9c8ngqa6wp1ymk2fax6j0yqzax6918akrdr7c3fx3c6"))))
4639 (build-system ruby-build-system)
4640 (arguments
4641 ;; FIXME: Disable tests altogether because they depend on 'capybara'
4642 ;; which in turn depends on many other unpackaged gems. Enable once
4643 ;; capybara is available.
4644 '(#:tests? #f))
4645 (propagated-inputs
4646 `(("ruby-colorize" ,ruby-colorize)
4647 ("ruby-gherkin-ruby" ,ruby-gherkin-ruby)
4648 ("ruby-json" ,ruby-json)))
4649 (synopsis "Gherkin-based BDD framework")
4650 (description
4651 "Spinach is a high-level @acronym{BDD, Behavior-driven development}
4652framework that leverages the expressive @code{Gherkin} language to help you
4653define executable specifications of your code.")
4654 (license license:expat)))
4655
bcbb3cc9
CB
4656(define-public ruby-tilt
4657 (package
4658 (name "ruby-tilt")
4659 (version "2.0.9")
4660 (source
4661 (origin
4662 (method url-fetch)
4663 (uri (rubygems-uri "tilt" version))
4664 (sha256
4665 (base32
4666 "0ca4k0clwf0rkvy7726x4nxpjxkpv67w043i39saxgldxd97zmwz"))))
4667 (build-system ruby-build-system)
4668 (arguments
4669 '(#:phases
4670 (modify-phases %standard-phases
4671 (add-after 'unpack 'remove-some-dependencies
4672 (lambda _
4673 (substitute* "Gemfile"
4674 ;; TODO ronn is used for generating the manual
4675 (("gem 'ronn'.*") "\n")
4676 ;; ruby-haml has a runtime dependency on ruby-tilt, so don't
4677 ;; pass it in as a native-input
4678 (("gem 'haml'.*") "\n")
4679 ;; TODO Not all of these gems are packaged for Guix yet:
4680 ;; less, coffee-script, livescript, babel-transpiler,
4681 ;; typescript-node
4682 (("if can_execjs") "if false")
4683 ;; Disable the secondary group to reduce the number of
4684 ;; dependencies. None of the normal approaches work, so patch
4685 ;; the Gemfile instead.
4686 (("group :secondary") "[].each"))
4687 #t)))))
4688 (native-inputs
4689 `(("bundler" ,bundler)
4690 ("ruby-yard" ,ruby-yard)
4691 ("ruby-builder" ,ruby-builder)
4692 ("ruby-erubis" ,ruby-erubis)
4693 ("ruby-markaby" ,ruby-markaby)
4694 ("ruby-sassc" ,ruby-sassc)))
4695 (synopsis "Generic interface to multiple Ruby template engines")
4696 (description
4697 "Tilt is a thin interface over a number of different Ruby template
4698engines in an attempt to make their usage as generic as possible.")
4699 (home-page "https://github.com/rtomayko/tilt/")
4700 (license license:expat)))
4701
1415792a
DT
4702(define-public ruby-thread-safe
4703 (package
4704 (name "ruby-thread-safe")
313dd5dd 4705 (version "0.3.6")
1415792a
DT
4706 (source
4707 (origin
4708 (method url-fetch)
4709 (uri (rubygems-uri "thread_safe" version))
4710 (sha256
4711 (base32
313dd5dd 4712 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
1415792a
DT
4713 (build-system ruby-build-system)
4714 (arguments
4715 '(#:tests? #f)) ; needs simplecov, among others
4716 (synopsis "Thread-safe utilities for Ruby")
4717 (description "The thread_safe library provides thread-safe collections and
4718utilities for Ruby.")
4719 (home-page "https://github.com/ruby-concurrency/thread_safe")
4720 (license license:asl2.0)))
08a1b701
DT
4721
4722(define-public ruby-tzinfo
4723 (package
4724 (name "ruby-tzinfo")
4237af85 4725 (version "1.2.4")
08a1b701
DT
4726 (source
4727 (origin
4728 (method url-fetch)
4729 (uri (rubygems-uri "tzinfo" version))
4730 (sha256
4731 (base32
4237af85 4732 "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp"))))
08a1b701 4733 (build-system ruby-build-system)
740fea08
CB
4734 (arguments
4735 '(#:phases
4736 (modify-phases %standard-phases
4737 (add-after 'unpack 'skip-safe-tests
4738 (lambda _
4739 (substitute* "test/test_utils.rb"
4740 (("def safe_test\\(options = \\{\\}\\)")
4741 "def safe_test(options = {})
4742 skip('The Guix build environment has an unsafe load path')"))
4743 #t)))))
08a1b701
DT
4744 (propagated-inputs
4745 `(("ruby-thread-safe" ,ruby-thread-safe)))
4746 (synopsis "Time zone library for Ruby")
4747 (description "TZInfo is a Ruby library that provides daylight savings
4748aware transformations between times in different time zones.")
2f3800e5 4749 (home-page "https://tzinfo.github.io")
1e12924a
BW
4750 (license license:expat)))
4751
4752(define-public ruby-tzinfo-data
4753 (package
4754 (name "ruby-tzinfo-data")
92513191 4755 (version "1.2017.3")
1e12924a
BW
4756 (source
4757 (origin
bb1e7ed0 4758 (method git-fetch)
1e12924a
BW
4759 ;; Download from GitHub because the rubygems version does not contain
4760 ;; Rakefile or tests.
bb1e7ed0
EF
4761 (uri (git-reference
4762 (url "https://github.com/tzinfo/tzinfo-data")
4763 (commit (string-append "v" version))))
4764 (file-name (git-file-name name version))
1e12924a
BW
4765 (sha256
4766 (base32
bb1e7ed0 4767 "0v3phl5l3jrm6waxcszqmj2dkjhqawxfsxb6mss7vkp1hlckqcdp"))
1e12924a
BW
4768 ;; Remove the known test failure.
4769 ;; https://github.com/tzinfo/tzinfo-data/issues/10
4770 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
4771 (patches (search-patches
4772 "ruby-tzinfo-data-ignore-broken-test.patch"))))
4773 (build-system ruby-build-system)
4774 (propagated-inputs
4775 `(("ruby-tzinfo" ,ruby-tzinfo)))
4776 (synopsis "Data from the IANA Time Zone database")
4777 (description
4778 "This library provides @code{TZInfo::Data}, which contains data from the
4779IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
2f3800e5 4780 (home-page "https://tzinfo.github.io")
08a1b701 4781 (license license:expat)))
c99e2247 4782
48e6851f
RW
4783(define-public ruby-rb-inotify
4784 (package
4785 (name "ruby-rb-inotify")
32bbfea8 4786 (version "0.9.10")
48e6851f
RW
4787 (source
4788 (origin
4789 (method url-fetch)
4790 (uri (rubygems-uri "rb-inotify" version))
4791 (sha256
4792 (base32
32bbfea8 4793 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
48e6851f
RW
4794 (build-system ruby-build-system)
4795 (arguments
4796 '(#:tests? #f ; there are no tests
4797 #:phases
4798 (modify-phases %standard-phases
4799 ;; Building the gemspec with rake is not working here since it is
4800 ;; generated with Jeweler. It is also unnecessary because the
4801 ;; existing gemspec does not use any development tools to generate a
4802 ;; list of files.
4803 (replace 'build
4804 (lambda _
9923d5a4 4805 (invoke "gem" "build" "rb-inotify.gemspec"))))))
48e6851f
RW
4806 (propagated-inputs
4807 `(("ruby-ffi" ,ruby-ffi)))
4808 (native-inputs
4809 `(("ruby-yard" ,ruby-yard)))
4810 (synopsis "Ruby wrapper for Linux's inotify")
4811 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
4812kernel subsystem for monitoring changes to files and directories.")
4813 (home-page "https://github.com/nex3/rb-inotify")
4814 (license license:expat)))
4815
a75bdfce
RW
4816(define-public ruby-pry-editline
4817 (package
4818 (name "ruby-pry-editline")
4819 (version "1.1.2")
4820 (source (origin
4821 (method url-fetch)
4822 (uri (rubygems-uri "pry-editline" version))
4823 (sha256
4824 (base32
4825 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
4826 (build-system ruby-build-system)
4827 (arguments `(#:tests? #f)) ; no tests included
4828 (native-inputs
4829 `(("bundler" ,bundler)))
4830 (synopsis "Open the current REPL line in an editor")
4831 (description
4832 "This gem provides a plugin for the Ruby REPL to enable opening the
4833current line in an external editor.")
4834 (home-page "https://github.com/tpope/pry-editline")
4835 (license license:expat)))
4836
d3b20a02
RW
4837(define-public ruby-sdoc
4838 (package
4839 (name "ruby-sdoc")
fdf3a68d 4840 (version "0.4.2")
d3b20a02
RW
4841 (source (origin
4842 (method url-fetch)
4843 (uri (rubygems-uri "sdoc" version))
4844 (sha256
4845 (base32
fdf3a68d 4846 "0qhvy10vnmrqcgh8494m13kd5ag9c3sczzhfasv8j0294ylk679n"))))
d3b20a02
RW
4847 (build-system ruby-build-system)
4848 (arguments
4849 `(#:phases
4850 (modify-phases %standard-phases
fc29d5e6 4851 (add-before 'check 'set-rubylib-and-patch-gemfile
d3b20a02 4852 (lambda _
fdf3a68d 4853 (setenv "RUBYLIB" "lib")
fc29d5e6
BW
4854 (substitute* "sdoc.gemspec"
4855 (("s.add_runtime_dependency.*") "\n")
4856 (("s.add_dependency.*") "\n"))
4857 (substitute* "Gemfile"
4858 (("gem \"rake\".*")
4859 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
d3b20a02
RW
4860 #t)))))
4861 (propagated-inputs
4862 `(("ruby-json" ,ruby-json)))
4863 (native-inputs
4864 `(("bundler" ,bundler)
fdf3a68d
BW
4865 ("ruby-minitest" ,ruby-minitest)
4866 ("ruby-hoe" ,ruby-hoe)))
d3b20a02
RW
4867 (synopsis "Generate searchable RDoc documentation")
4868 (description
4869 "SDoc is an RDoc documentation generator to build searchable HTML
4870documentation for Ruby code.")
7bf837fd 4871 (home-page "https://github.com/voloko/sdoc")
d3b20a02
RW
4872 (license license:expat)))
4873
70b002aa
RW
4874(define-public ruby-tins
4875 (package
4876 (name "ruby-tins")
fbefd6ff 4877 (version "1.15.0")
70b002aa
RW
4878 (source (origin
4879 (method url-fetch)
4880 (uri (rubygems-uri "tins" version))
4881 (sha256
4882 (base32
fbefd6ff 4883 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
70b002aa
RW
4884 (build-system ruby-build-system)
4885 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
4886 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
4887 ;; the gemspec.
4888 (arguments
4889 `(#:tests? #f ; there are no tests
4890 #:phases
4891 (modify-phases %standard-phases
4892 (replace 'build
4893 (lambda _
4894 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
4895 ;; causes an error.
4896 (substitute* "tins.gemspec"
4897 (("\"lib/spruz\", ") ""))
9923d5a4 4898 (invoke "gem" "build" "tins.gemspec"))))))
70b002aa
RW
4899 (synopsis "Assorted tools for Ruby")
4900 (description "Tins is a Ruby library providing assorted tools.")
4901 (home-page "https://github.com/flori/tins")
4902 (license license:expat)))
4903
bc8277e4
RW
4904(define-public ruby-gem-hadar
4905 (package
4906 (name "ruby-gem-hadar")
3fd577e3 4907 (version "1.9.1")
bc8277e4
RW
4908 (source (origin
4909 (method url-fetch)
4910 (uri (rubygems-uri "gem_hadar" version))
4911 (sha256
4912 (base32
3fd577e3 4913 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
bc8277e4
RW
4914 (build-system ruby-build-system)
4915 ;; This gem needs itself at development time. We disable rebuilding of the
4916 ;; gemspec to avoid this loop.
4917 (arguments
4918 `(#:tests? #f ; there are no tests
4919 #:phases
4920 (modify-phases %standard-phases
4921 (replace 'build
4922 (lambda _
9923d5a4 4923 (invoke "gem" "build" "gem_hadar.gemspec"))))))
bc8277e4
RW
4924 (propagated-inputs
4925 `(("git" ,git)
4926 ("ruby-tins" ,ruby-tins)
3fd577e3 4927 ("ruby-yard" ,ruby-yard)))
bc8277e4
RW
4928 (synopsis "Library for the development of Ruby gems")
4929 (description
4930 "This library contains some useful functionality to support the
4931development of Ruby gems.")
4932 (home-page "https://github.com/flori/gem_hadar")
4933 (license license:expat)))
4934
d8cafe29
RW
4935(define-public ruby-minitest-tu-shim
4936 (package
4937 (name "ruby-minitest-tu-shim")
4938 (version "1.3.3")
4939 (source (origin
4940 (method url-fetch)
4941 (uri (rubygems-uri "minitest_tu_shim" version))
4942 (sha256
4943 (base32
4944 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
4945 (build-system ruby-build-system)
4946 (arguments
4947 `(#:phases
4948 (modify-phases %standard-phases
4949 (add-after 'unpack 'fix-test-include-path
4950 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 4951 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
761e7042
BW
4952 (substitute* "Rakefile"
4953 (("Hoe\\.add_include_dirs .*")
4954 (string-append "Hoe.add_include_dirs \""
3cb3fa67 4955 minitest "/lib/ruby/vendor_ruby"
761e7042
BW
4956 "/gems/minitest-"
4957 ,(package-version ruby-minitest-4)
4958 "/lib" "\""))))
4959 #t))
d8cafe29
RW
4960 (add-before 'check 'fix-test-assumptions
4961 (lambda _
4962 ;; The test output includes the file name, so a couple of tests
4963 ;; fail. Changing the regular expressions slightly fixes this
4964 ;; problem.
4965 (substitute* "test/test_mini_test.rb"
4966 (("output.sub!\\(.*, 'FILE:LINE'\\)")
4967 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
4968 (("gsub\\(/.*, 'FILE:LINE'\\)")
4969 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
4970 #t)))))
4971 (propagated-inputs
4972 `(("ruby-minitest-4" ,ruby-minitest-4)))
4973 (native-inputs
4974 `(("ruby-hoe" ,ruby-hoe)))
4975 (synopsis "Adapter library between minitest and test/unit")
4976 (description
4977 "This library bridges the gap between the small and fast minitest and
4978Ruby's large and slower test/unit.")
4979 (home-page "https://rubygems.org/gems/minitest_tu_shim")
4980 (license license:expat)))
4981
fd83a212
RW
4982(define-public ruby-term-ansicolor
4983 (package
4984 (name "ruby-term-ansicolor")
f3a6311a 4985 (version "1.6.0")
fd83a212
RW
4986 (source (origin
4987 (method url-fetch)
4988 (uri (rubygems-uri "term-ansicolor" version))
4989 (sha256
4990 (base32
f3a6311a 4991 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
fd83a212
RW
4992 (build-system ruby-build-system)
4993 ;; Rebuilding the gemspec seems to require git, even though this is not a
4994 ;; git repository, so we just build the gem from the existing gemspec.
4995 (arguments
4996 `(#:phases
4997 (modify-phases %standard-phases
39ecb977
CB
4998 (add-after 'unpack 'fix-test
4999 (lambda -
5000 (substitute* "tests/hsl_triple_test.rb"
5001 (("0\\\\\\.0%")
5002 "0\\.?0?%"))))
fd83a212
RW
5003 (replace 'build
5004 (lambda _
9923d5a4 5005 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
fd83a212
RW
5006 (propagated-inputs
5007 `(("ruby-tins" ,ruby-tins)))
5008 (native-inputs
5009 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5010 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
5011 (synopsis "Ruby library to control the attributes of terminal output")
5012 (description
5013 "This Ruby library uses ANSI escape sequences to control the attributes
5014of terminal output.")
2f3800e5 5015 (home-page "https://flori.github.io/term-ansicolor/")
fd83a212
RW
5016 ;; There is no mention of the "or later" clause.
5017 (license license:gpl2)))
5018
a714c30f
CB
5019(define-public ruby-terraform
5020 (package
5021 (name "ruby-terraform")
5022 (version "0.22.0")
5023 (source
5024 (origin
5025 (method url-fetch)
5026 (uri (rubygems-uri "ruby-terraform" version))
5027 (sha256
5028 (base32
5029 "13zjkp71cd19j2ds2h9rqwcfr1zdg5nsh63p89l6qcsc9z39z324"))))
5030 (build-system ruby-build-system)
5031 (arguments
5032 '(#:tests? #f)) ; No included tests
5033 (propagated-inputs
5034 `(("ruby-lino" ,ruby-lino)))
5035 (synopsis "Ruby wrapper around the Terraform command line interface")
5036 (description
5037 "This package provides a Ruby wrapper around the Terraform command line
5038interface so that Terraform can be more easily invoked from Ruby code.")
5039 (home-page "https://github.com/infrablocks/ruby_terraform")
5040 (license license:expat)))
5041
6e376ca4
RW
5042(define-public ruby-pstree
5043 (package
5044 (name "ruby-pstree")
5045 (version "0.1.0")
5046 (source (origin
5047 (method url-fetch)
5048 (uri (rubygems-uri "pstree" version))
5049 (sha256
5050 (base32
5051 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
5052 (build-system ruby-build-system)
5053 (native-inputs
5054 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5055 ("bundler" ,bundler)))
5056 (synopsis "Create a process tree data structure")
5057 (description
5058 "This library uses the output of the @code{ps} command to create a
5059process tree data structure for the current host.")
2f3800e5 5060 (home-page "https://github.com/flori/pstree")
6e376ca4
RW
5061 ;; There is no mention of the "or later" clause.
5062 (license license:gpl2)))
5063
53239b5f
RW
5064(define-public ruby-utils
5065 (package
5066 (name "ruby-utils")
cd698b6e 5067 (version "0.9.0")
53239b5f
RW
5068 (source (origin
5069 (method url-fetch)
5070 (uri (rubygems-uri "utils" version))
5071 (sha256
5072 (base32
cd698b6e 5073 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
53239b5f
RW
5074 (build-system ruby-build-system)
5075 (propagated-inputs
5076 `(("ruby-tins" ,ruby-tins)
5077 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
5078 ("ruby-pstree" ,ruby-pstree)
5079 ("ruby-pry-editline" ,ruby-pry-editline)))
5080 (native-inputs
5081 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5082 ("bundler" ,bundler)))
5083 (synopsis "Command line tools for working with Ruby")
5084 (description
5085 "This package provides assorted command line tools that may be useful
5086when working with Ruby code.")
5087 (home-page "https://github.com/flori/utils")
5088 ;; There is no mention of the "or later" clause.
5089 (license license:gpl2)))
5090
433f10b5
CB
5091(define-public ruby-jaro-winkler
5092 (package
5093 (name "ruby-jaro-winkler")
37b23e44 5094 (version "1.5.4")
433f10b5
CB
5095 (source
5096 (origin
5097 (method url-fetch)
5098 (uri (rubygems-uri "jaro_winkler" version))
5099 (sha256
37b23e44 5100 (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh"))))
433f10b5
CB
5101 (build-system ruby-build-system)
5102 (arguments
37b23e44 5103 '(#:tests? #f)) ; no included tests
433f10b5
CB
5104 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
5105 (description
5106 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
5107algorithm. It is written as a C extension and will fallback to a pure Ruby
5108implementation on platforms where this is unsupported.")
5109 (home-page "https://github.com/tonytonyjan/jaro_winkler")
5110 (license license:expat)))
5111
c99e2247
DT
5112(define-public ruby-json
5113 (package
5114 (name "ruby-json")
a281acce 5115 (version "2.1.0")
c99e2247
DT
5116 (source
5117 (origin
5118 (method url-fetch)
5119 (uri (rubygems-uri "json" version))
5120 (sha256
5121 (base32
a281acce 5122 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
c99e2247
DT
5123 (build-system ruby-build-system)
5124 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
5125 (synopsis "JSON library for Ruby")
5126 (description "This Ruby library provides a JSON implementation written as
5127a native C extension.")
5128 (home-page "http://json-jruby.rubyforge.org/")
5129 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 5130
763624f5
RW
5131(define-public ruby-json-pure
5132 (package
5133 (name "ruby-json-pure")
1c65d99f 5134 (version "2.2.0")
763624f5
RW
5135 (source (origin
5136 (method url-fetch)
5137 (uri (rubygems-uri "json_pure" version))
5138 (sha256
5139 (base32
1c65d99f 5140 "0m0j1mfwv0mvw72kzqisb26xjl236ivqypw1741dkis7s63b8439"))))
763624f5
RW
5141 (build-system ruby-build-system)
5142 (arguments
ac01cb07 5143 `(#:phases
763624f5 5144 (modify-phases %standard-phases
ac01cb07 5145 (add-after 'unpack 'fix-rakefile
763624f5 5146 (lambda _
ac01cb07
BW
5147 (substitute* "Rakefile"
5148 ;; Since this is not a git repository, do not call 'git'.
5149 (("`git ls-files`") "`find . -type f |sort`")
5150 ;; Loosen dependency constraint.
5151 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
5152 #t))
5153 (add-after 'replace-git-ls-files 'regenerate-gemspec
5154 (lambda _
5155 ;; Regenerate gemspec so loosened dependency constraints are
5156 ;; propagated.
17cfb7ae
CB
5157 (invoke "rake" "gemspec")))
5158 (add-after 'regenerate-gemspec 'fix-json-java.gemspec
5159 (lambda _
5160 ;; This gemspec doesn't look to be generated by the above
5161 ;; command, so patch it separately.
5162 (substitute* "json-java.gemspec"
5163 (("%q<test-unit>\\.freeze, \\[\"~> 2\\.0\"\\]")
5164 "%q<test-unit>.freeze, [\">= 2.0\"]"))
5165 #t)))))
763624f5 5166 (native-inputs
ac01cb07 5167 `(("bundler" ,bundler)
0c9f73cd
TGR
5168 ("ragel" ,ragel)
5169 ("ruby-simplecov" ,ruby-simplecov)
5170 ("ruby-test-unit" ,ruby-test-unit)))
763624f5
RW
5171 (synopsis "JSON implementation in pure Ruby")
5172 (description
5173 "This package provides a JSON implementation written in pure Ruby.")
1c65d99f 5174 (home-page "https://flori.github.com/json/")
763624f5
RW
5175 (license license:ruby)))
5176
2a8581ac
CB
5177(define-public ruby-jwt
5178 (package
5179 (name "ruby-jwt")
5180 (version "2.1.0")
5181 (source
5182 (origin
5183 (method url-fetch)
5184 (uri (rubygems-uri "jwt" version))
5185 (sha256
5186 (base32
5187 "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky"))))
5188 (build-system ruby-build-system)
5189 (arguments
5190 '(#:test-target "test"
5191 #:phases
5192 (modify-phases %standard-phases
5193 (add-after 'unpack 'remove-unnecessary-dependencies
5194 (lambda _
5195 (substitute* "spec/spec_helper.rb"
5196 (("require 'simplecov.*") "\n")
5197 ;; Use [].each to disable running the SimpleCov configuration
5198 ;; block
5199 (("SimpleCov\\.configure") "[].each")
5200 (("require 'codeclimate-test-reporter'") "")
5201 (("require 'codacy-coverage'") "")
5202 (("Codacy::Reporter\\.start") ""))
5203 #t)))))
5204 (native-inputs
5205 `(("bundler" ,bundler)
5206 ("ruby-rspec" ,ruby-rspec)
5207 ("ruby-rbnacl" ,ruby-rbnacl)))
5208 (synopsis "Ruby implementation of the JSON Web Token standard")
5209 (description
5210 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
5211@acronym{JWT, JSON Web Token} standard.")
5212 (home-page "https://github.com/jwt/ruby-jwt")
5213 (license license:expat)))
5214
16b324cd
RW
5215;; Even though this package only provides bindings for a Mac OSX API it is
5216;; required by "ruby-listen" at runtime.
5217(define-public ruby-rb-fsevent
5218 (package
5219 (name "ruby-rb-fsevent")
b0ef15ed 5220 (version "0.10.3")
16b324cd
RW
5221 (source (origin
5222 (method url-fetch)
5223 (uri (rubygems-uri "rb-fsevent" version))
5224 (sha256
5225 (base32
b0ef15ed 5226 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
16b324cd
RW
5227 (build-system ruby-build-system)
5228 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
5229 ;; "listen", which needs "rb-fsevent" at runtime.
5230 (arguments `(#:tests? #f))
5231 (synopsis "FSEvents API with signals catching")
5232 (description
5233 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
5234 (home-page "https://rubygems.org/gems/rb-fsevent")
5235 (license license:expat)))
5236
b86be2ad
RW
5237(define-public ruby-listen
5238 (package
5239 (name "ruby-listen")
12341d34 5240 (version "3.2.0")
b86be2ad
RW
5241 (source
5242 (origin
35602819
CB
5243 ;; The gem does not include a Rakefile, so fetch from the Git
5244 ;; repository.
5245 (method git-fetch)
5246 (uri (git-reference
5247 (url "https://github.com/guard/listen.git")
5248 (commit (string-append "v" version))))
5249 (file-name (git-file-name name version))
b86be2ad
RW
5250 (sha256
5251 (base32
12341d34 5252 "1hkp1g6hk5clsmbd001gkc12ma6s459x820piajyasv61m87if24"))))
b86be2ad 5253 (build-system ruby-build-system)
35602819
CB
5254 (arguments
5255 `(#:test-target "spec"
5256 #:phases
5257 (modify-phases %standard-phases
5258 (add-after 'unpack 'fix-files-in-gemspec
5259 (lambda _
5260 (substitute* "listen.gemspec"
5261 (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
5262 #t))
5263 (add-before 'check 'remove-unnecessary-dependencies'
5264 (lambda _
5265 (substitute* "Rakefile"
5266 ;; Rubocop is for code linting, and is unnecessary for running
5267 ;; the tests.
5268 ((".*rubocop.*") ""))
5269 #t)))))
5270 (native-inputs
5271 `(("bundler" ,bundler)
5272 ("ruby-rspec" ,ruby-rspec)))
5273 (inputs
5274 `(;; ruby-thor is used for the command line interface, and is referenced
5275 ;; in the wrapper, and therefore just needs to be an input.
5276 ("ruby-thor" ,ruby-thor)))
b86be2ad 5277 (propagated-inputs
35602819
CB
5278 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
5279 ("ruby-rb-inotify" ,ruby-rb-inotify)
5280 ("ruby-dep" ,ruby-dep)))
b86be2ad
RW
5281 (synopsis "Listen to file modifications")
5282 (description "The Listen gem listens to file modifications and notifies
5283you about the changes.")
5284 (home-page "https://github.com/guard/listen")
5285 (license license:expat)))
5286
8d3c5ff6
CB
5287(define-public ruby-loofah
5288 (package
5289 (name "ruby-loofah")
5290 (version "2.2.3")
5291 (source
5292 (origin
5293 (method url-fetch)
5294 (uri (rubygems-uri "loofah" version))
5295 (sha256
5296 (base32
5297 "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg"))))
5298 (build-system ruby-build-system)
5299 (arguments
5300 '(#:phases
5301 (modify-phases %standard-phases
5302 (add-after 'unpack 'remove-unnecessary-dependencies
5303 (lambda _
5304 ;; concourse is a development tool which is unused, so remove it
5305 ;; so it's not required.
5306 (substitute* "Gemfile"
5307 ((".*\"concourse\".*") "\n"))
5308 (substitute* "Rakefile"
5309 (("require 'concourse'") "")
5310 (("Concourse\\.new.*") "\n"))
5311 #t)))))
5312 (native-inputs
5313 `(("ruby-hoe" ,ruby-hoe)
5314 ("ruby-rr" ,ruby-rr)))
5315 (propagated-inputs
5316 `(("ruby-nokogiri" ,ruby-nokogiri)
5317 ("ruby-crass" ,ruby-crass)))
5318 (synopsis "Ruby library for manipulating and transforming HTML/XML")
5319 (description
5320 "Loofah is a general library for manipulating and transforming HTML/XML
5321documents and fragments. It's built on top of Nokogiri and libxml2.")
5322 (home-page "https://github.com/flavorjones/loofah")
5323 (license license:expat)))
5324
5ff89a1b
DT
5325(define-public ruby-activesupport
5326 (package
5327 (name "ruby-activesupport")
bcf1fe5b 5328 (version "5.2.2.1")
5ff89a1b
DT
5329 (source
5330 (origin
5331 (method url-fetch)
5332 (uri (rubygems-uri "activesupport" version))
5333 (sha256
5334 (base32
bcf1fe5b 5335 "161bp4p01v1a1lvszrhd1a02zf9x1p1l1yhw79a3rix1kvzkkdqb"))))
5ff89a1b
DT
5336 (build-system ruby-build-system)
5337 (arguments
2af45e50
BW
5338 `(#:phases
5339 (modify-phases %standard-phases
5340 (replace 'check
5341 (lambda _
9923d5a4
TGR
5342 ;; There are no tests, instead attempt to load the library.
5343 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
5ff89a1b 5344 (propagated-inputs
2af45e50
BW
5345 `(("ruby-concurrent" ,ruby-concurrent)
5346 ("ruby-i18n" ,ruby-i18n)
5ff89a1b 5347 ("ruby-minitest" ,ruby-minitest)
606ee9a1
BW
5348 ("ruby-tzinfo" ,ruby-tzinfo)
5349 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
5ff89a1b
DT
5350 (synopsis "Ruby on Rails utility library")
5351 (description "ActiveSupport is a toolkit of support libraries and Ruby
5352core extensions extracted from the Rails framework. It includes support for
5353multibyte strings, internationalization, time zones, and testing.")
5354 (home-page "http://www.rubyonrails.org")
5355 (license license:expat)))
f847ad7b 5356
3996f0aa
RW
5357(define-public ruby-crass
5358 (package
5359 (name "ruby-crass")
a84a185a
MB
5360 (version "1.0.6")
5361 (home-page "https://github.com/rgrove/crass")
3996f0aa 5362 (source (origin
a84a185a
MB
5363 ;; The gem does not contain tests, so pull from git.
5364 (method git-fetch)
5365 (uri (git-reference
5366 (url home-page)
5367 (commit (string-append "v" version))))
5368 (file-name (git-file-name name version))
3996f0aa
RW
5369 (sha256
5370 (base32
a84a185a 5371 "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40"))))
3996f0aa 5372 (build-system ruby-build-system)
3996f0aa
RW
5373 (synopsis "Pure Ruby CSS parser")
5374 (description
5375 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
3996f0aa
RW
5376 (license license:expat)))
5377
c2c4e5b2 5378(define-public ruby-nokogumbo
2e366b0a
MB
5379 (package
5380 (name "ruby-nokogumbo")
5381 (version "2.0.2")
5382 (source (origin
5383 ;; We use the git reference, because there's no Rakefile in the
5384 ;; published gem and the tarball on Github is outdated.
5385 (method git-fetch)
5386 (uri (git-reference
5387 (url "https://github.com/rubys/nokogumbo.git")
5388 (commit (string-append "v" version))))
5389 (file-name (string-append name "-" version "-checkout"))
5390 (sha256
5391 (base32
5392 "1qg0iyw450lw6d0j1ghzg79a6l60nm1m4qmrzwzybi585861jxcx"))))
5393 (build-system ruby-build-system)
5394 (native-inputs
5395 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
5396 (inputs
5397 `(("gumbo-parser" ,gumbo-parser)))
5398 (propagated-inputs
5399 `(("ruby-nokogiri" ,ruby-nokogiri)))
5400 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
5401 (description
5402 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
c2c4e5b2 5403access the result as a Nokogiri parsed document.")
2e366b0a
MB
5404 (home-page "https://github.com/rubys/nokogumbo/")
5405 (license license:asl2.0)))
c2c4e5b2 5406
d56ff88b
RW
5407(define-public ruby-sanitize
5408 (package
5409 (name "ruby-sanitize")
f362b53c
MB
5410 (version "5.1.0")
5411 (home-page "https://github.com/rgrove/sanitize")
d56ff88b 5412 (source (origin
f362b53c 5413 (method git-fetch)
d56ff88b 5414 ;; The gem does not include the Rakefile, so we download the
f362b53c
MB
5415 ;; source from Github.
5416 (uri (git-reference
5417 (url home-page)
5418 (commit (string-append "v" version))))
5419 (file-name (git-file-name name version))
5420 (patches (search-patches "ruby-sanitize-system-libxml.patch"))
d56ff88b
RW
5421 (sha256
5422 (base32
f362b53c 5423 "0lj0q9yhjp0q0in5majkshnki07mw8m2vxgndx4m5na6232aszl0"))))
d56ff88b
RW
5424 (build-system ruby-build-system)
5425 (propagated-inputs
5426 `(("ruby-crass" ,ruby-crass)
5427 ("ruby-nokogiri" ,ruby-nokogiri)
5428 ("ruby-nokogumbo" ,ruby-nokogumbo)))
5429 (native-inputs
f362b53c 5430 `(("ruby-minitest" ,ruby-minitest)))
d56ff88b
RW
5431 (synopsis "Whitelist-based HTML and CSS sanitizer")
5432 (description
5433 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
5434acceptable elements, attributes, and CSS properties, Sanitize will remove all
5435unacceptable HTML and/or CSS from a string.")
d56ff88b
RW
5436 (license license:expat)))
5437
ed4b6b18
BW
5438(define-public ruby-oj
5439 (package
5440 (name "ruby-oj")
93dfdec5 5441 (version "3.10.1")
ed4b6b18
BW
5442 (source
5443 (origin
b09ef660 5444 (method git-fetch)
ed4b6b18
BW
5445 ;; Version on rubygems.org does not contain Rakefile, so download from
5446 ;; GitHub instead.
b09ef660
EF
5447 (uri (git-reference
5448 (url "https://github.com/ohler55/oj")
5449 (commit (string-append "v" version))))
5450 (file-name (git-file-name name version))
ed4b6b18
BW
5451 (sha256
5452 (base32
93dfdec5 5453 "0i5xjx4sh816zx2c1a4d1q67k7vllg5jnnc4jy6zhbmwi1dvp5vw"))))
ed4b6b18
BW
5454 (build-system ruby-build-system)
5455 (arguments
5456 '(#:test-target "test_all"
5457 #:phases
5458 (modify-phases %standard-phases
5459 (add-before 'check 'disable-bundler
5460 (lambda _
5461 (substitute* "Rakefile"
5462 (("Bundler\\.with_clean_env") "1.times")
5463 (("bundle exec ") "")))))))
5464 (native-inputs
5465 `(("bundler" ,bundler)
5466 ("ruby-rspec" ,ruby-rspec)
5467 ("ruby-rake-compiler" ,ruby-rake-compiler)))
5468 (synopsis "JSON parser for Ruby optimized for speed")
5469 (description
5470 "Oj is a JSON parser and generator for Ruby, where the encoding and
5471decoding of JSON is implemented as a C extension to Ruby.")
b09ef660 5472 (home-page "http://www.ohler.com/oj/")
ed4b6b18
BW
5473 (license (list license:expat ; Ruby code
5474 license:bsd-3)))) ; extension code
5475
f847ad7b
DT
5476(define-public ruby-ox
5477 (package
5478 (name "ruby-ox")
263c0dbf 5479 (version "2.6.0")
f847ad7b
DT
5480 (source
5481 (origin
5482 (method url-fetch)
5483 (uri (rubygems-uri "ox" version))
5484 (sha256
5485 (base32
263c0dbf 5486 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
f847ad7b
DT
5487 (build-system ruby-build-system)
5488 (arguments
5489 '(#:tests? #f)) ; no tests
5490 (synopsis "Optimized XML library for Ruby")
5491 (description
5492 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
5493written as a native C extension. It was designed to be an alternative to
5494Nokogiri and other Ruby XML parsers for generic XML parsing and as an
5495alternative to Marshal for Object serialization. ")
5496 (home-page "http://www.ohler.com/ox")
5497 (license license:expat)))
4a9e0585 5498
0c4e7625
RW
5499(define-public ruby-redcloth
5500 (package
5501 (name "ruby-redcloth")
2a91494e 5502 (version "4.3.2")
0c4e7625
RW
5503 (source (origin
5504 (method url-fetch)
5505 (uri (rubygems-uri "RedCloth" version))
5506 (sha256
5507 (base32
2a91494e 5508 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
0c4e7625
RW
5509 (build-system ruby-build-system)
5510 (arguments
5511 `(#:tests? #f ; no tests
5512 #:phases
5513 (modify-phases %standard-phases
5514 ;; Redcloth has complicated rake tasks to build various versions for
5515 ;; multiple targets using RVM. We don't want this so we just use the
5516 ;; existing gemspec.
5517 (replace 'build
5518 (lambda _
9923d5a4 5519 (invoke "gem" "build" "redcloth.gemspec"))))))
0c4e7625
RW
5520 (native-inputs
5521 `(("bundler" ,bundler)
5522 ("ruby-diff-lcs" ,ruby-diff-lcs)
5523 ("ruby-rspec-2" ,ruby-rspec-2)))
5524 (synopsis "Textile markup language parser for Ruby")
5525 (description
5526 "RedCloth is a Ruby parser for the Textile markup language.")
5527 (home-page "http://redcloth.org")
5528 (license license:expat)))
5529
4a9e0585
DT
5530(define-public ruby-pg
5531 (package
5532 (name "ruby-pg")
ffc4869e 5533 (version "1.1.4")
4a9e0585
DT
5534 (source
5535 (origin
5536 (method url-fetch)
5537 (uri (rubygems-uri "pg" version))
5538 (sha256
5539 (base32
ffc4869e 5540 "0fmnyxcyrvgdbgq7m09whgn9i8rwfybk0w8aii1nc4g5kqw0k2jy"))))
4a9e0585
DT
5541 (build-system ruby-build-system)
5542 (arguments
5543 '(#:test-target "spec"))
5544 (native-inputs
5545 `(("ruby-rake-compiler" ,ruby-rake-compiler)
5546 ("ruby-hoe" ,ruby-hoe)
5547 ("ruby-rspec" ,ruby-rspec)))
5548 (inputs
ffc4869e 5549 `(("postgresql" ,postgresql)))
4a9e0585
DT
5550 (synopsis "Ruby interface to PostgreSQL")
5551 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
4db80f8b 5552with PostgreSQL 9.0 and later.")
4a9e0585
DT
5553 (home-page "https://bitbucket.org/ged/ruby-pg")
5554 (license license:ruby)))
468e5657
DT
5555
5556(define-public ruby-byebug
5557 (package
5558 (name "ruby-byebug")
d5489a61 5559 (version "9.0.6")
468e5657
DT
5560 (source
5561 (origin
5562 (method url-fetch)
5563 (uri (rubygems-uri "byebug" version))
5564 (sha256
5565 (base32
d5489a61 5566 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
468e5657
DT
5567 (build-system ruby-build-system)
5568 (arguments
5569 '(#:tests? #f)) ; no tests
5570 (synopsis "Debugger for Ruby 2")
5571 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
5572TracePoint C API for execution control and the Debug Inspector C API for call
5573stack navigation. The core component provides support that front-ends can
5574build on. It provides breakpoint handling and bindings for stack frames among
5575other things and it comes with a command line interface.")
7bf837fd 5576 (home-page "https://github.com/deivid-rodriguez/byebug")
468e5657 5577 (license license:bsd-2)))
64b6ccc3 5578
7aa00628
MC
5579;;; TODO: Make it the default byebug in core-updates.
5580(define-public ruby-byebug-11
5581 (package
5582 (inherit ruby-byebug)
5583 (name "ruby-byebug")
5584 (version "11.1.3")
5585 (source
5586 (origin
5587 (method git-fetch)
5588 (uri (git-reference
5589 (url "https://github.com/deivid-rodriguez/byebug.git")
5590 (commit (string-append "v" version))))
5591 (file-name (git-file-name name version))
5592 (sha256
5593 (base32
5594 "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij"))
5595 (modules '((guix build utils)))
5596 (snippet
5597 '(begin
5598 ;; Remove wrappers that try to setup a bundle environment.
5599 (with-directory-excursion "bin"
5600 (for-each delete-file '("bundle" "rake" "rubocop"))
5601 ;; ruby-minitest doesn't come with a launcher, so fix the one
5602 ;; provided.
5603 (substitute* "minitest"
5604 (("load File\\.expand_path\\(\"bundle\".*") "")
5605 (("require \"bundler/setup\".*") "")))
5606 #t))))
5607 (arguments
5608 `(#:tests? #t
5609 #:phases
5610 (modify-phases %standard-phases
5611 (add-after 'unpack 'skip-tmp-path-sensitive-test
5612 (lambda _
5613 (substitute* "test/commands/where_test.rb"
5614 (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
5615 "unless true\n"))
5616 #t))
5617 (add-before 'build 'compile
5618 (lambda _
5619 (invoke "rake" "compile")))
5620 (add-before 'check 'set-home
5621 (lambda _
5622 (setenv "HOME" (getcwd))
5623 #t)))))
5624 (native-inputs
5625 `(("bundler" ,bundler)
5626 ("ruby-chandler" ,ruby-chandler)
5627 ("ruby-minitest" ,ruby-minitest)
5628 ("ruby-pry" ,ruby-pry)
5629 ("ruby-rake-compiler" ,ruby-rake-compiler)
5630 ("ruby-rubocop" ,ruby-rubocop)
5631 ("ruby-yard" ,ruby-yard)))))
5632
5799bc2b
RW
5633(define-public ruby-netrc
5634 (package
5635 (name "ruby-netrc")
5636 (version "0.11.0")
5637 (source (origin
5638 (method url-fetch)
5639 (uri (rubygems-uri "netrc" version))
5640 (sha256
5641 (base32
5642 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
5643 (build-system ruby-build-system)
5644 (arguments
5645 `(#:phases
5646 (modify-phases %standard-phases
5647 (replace 'check
5648 ;; There is no Rakefile and minitest can only run one file at once,
5649 ;; so we have to iterate over all test files.
5650 (lambda _
9923d5a4
TGR
5651 (map (lambda (file)
5652 (invoke "ruby" "-Itest" file))
5653 (find-files "./test" "test_.*\\.rb")))))))
5799bc2b
RW
5654 (native-inputs
5655 `(("ruby-minitest" ,ruby-minitest)))
5656 (synopsis "Library to read and update netrc files")
5657 (description
5658 "This library can read and update netrc files, preserving formatting
5659including comments and whitespace.")
5660 (home-page "https://github.com/geemus/netrc")
5661 (license license:expat)))
5662
3a6989ce
RW
5663(define-public ruby-unf-ext
5664 (package
5665 (name "ruby-unf-ext")
14db8f19 5666 (version "0.0.7.6")
3a6989ce
RW
5667 (source (origin
5668 (method url-fetch)
5669 (uri (rubygems-uri "unf_ext" version))
5670 (sha256
5671 (base32
14db8f19 5672 "1ll6w64ibh81qwvjx19h8nj7mngxgffg7aigjx11klvf5k2g4nxf"))))
3a6989ce 5673 (build-system ruby-build-system)
b809cc9a
RW
5674 (arguments
5675 `(#:phases
5676 (modify-phases %standard-phases
5677 (add-after 'build 'build-ext
14db8f19
MB
5678 (lambda _ (invoke "rake" "compile:unf_ext")))
5679 (add-before 'check 'lose-rake-compiler-dock-dependency
5680 (lambda _
5681 ;; rake-compiler-dock is listed in the gemspec, but only
5682 ;; required when cross-compiling.
5683 (substitute* "unf_ext.gemspec"
5684 ((".*rake-compiler-dock.*") ""))
5685 #t)))))
3a6989ce
RW
5686 (native-inputs
5687 `(("bundler" ,bundler)
5688 ("ruby-rake-compiler" ,ruby-rake-compiler)
5689 ("ruby-test-unit" ,ruby-test-unit)))
5690 (synopsis "Unicode normalization form support library")
5691 (description
5692 "This package provides unicode normalization form support for Ruby.")
5693 (home-page "https://github.com/knu/ruby-unf_ext")
5694 (license license:expat)))
5695
2632a067 5696(define-public ruby-tdiff
5071f17b
BW
5697 ;; Use a newer than released snapshot so that rspec-2 is not required.
5698 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
5699 (package
5700 (name "ruby-tdiff")
5701 (version (string-append "0.3.3-1." (string-take commit 8)))
5702 (source (origin
5703 (method git-fetch)
5704 (uri (git-reference
5705 (url "https://github.com/postmodern/tdiff.git")
5706 (commit commit)))
5707 (file-name (string-append name "-" version "-checkout"))
5708 (sha256
5709 (base32
5710 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
5711 (build-system ruby-build-system)
5712 (native-inputs
5713 `(("ruby-rspec" ,ruby-rspec)
5714 ("ruby-yard" ,ruby-yard)
5715 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
5716 (synopsis "Calculate the differences between two tree-like structures")
5717 (description
5718 "This library provides functions to calculate the differences between two
2632a067 5719tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
5071f17b
BW
5720 (home-page "https://github.com/postmodern/tdiff")
5721 (license license:expat))))
2632a067 5722
f60f5002 5723(define-public ruby-nokogiri-diff
5b0c223a
BW
5724 ;; Use a newer than released snapshot so that rspec-2 is not required.
5725 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
5726 (package
5727 (name "ruby-nokogiri-diff")
5728 (version (string-append "0.2.0-1." (string-take commit 8)))
5729 (source (origin
5730 (method git-fetch)
5731 (uri (git-reference
5732 (url "https://github.com/postmodern/nokogiri-diff.git")
5733 (commit commit)))
5734 (file-name (string-append name "-" version "-checkout"))
5735 (sha256
5736 (base32
5737 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
5738 (build-system ruby-build-system)
5739 (propagated-inputs
5740 `(("ruby-tdiff" ,ruby-tdiff)
5741 ("ruby-nokogiri" ,ruby-nokogiri)))
5742 (native-inputs
5743 `(("ruby-rspec" ,ruby-rspec)
5744 ("ruby-yard" ,ruby-yard)
5745 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
5746 (synopsis "Calculate the differences between two XML/HTML documents")
5747 (description
5748 "@code{Nokogiri::Diff} adds the ability to calculate the
f60f5002 5749differences (added or removed nodes) between two XML/HTML documents.")
5b0c223a
BW
5750 (home-page "https://github.com/postmodern/nokogiri-diff")
5751 (license license:expat))))
f60f5002 5752
6dc21310
CB
5753(define-public ruby-racc
5754 (package
5755 (name "ruby-racc")
5756 (version "1.4.14")
5757 (source
5758 (origin
5759 (method url-fetch)
5760 (uri (rubygems-uri "racc" version))
5761 (sha256
5762 (base32
5763 "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
5764 (build-system ruby-build-system)
5765 (native-inputs
5766 `(("ruby-hoe" ,ruby-hoe)
5767 ("ruby-rake-compiler" ,ruby-rake-compiler)))
5768 (synopsis "LALR(1) parser generator for Ruby")
5769 (description
5770 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
5771generates Ruby program.")
5772 (home-page "http://i.loveruby.net/en/projects/racc/")
5773 (license (list
5774 ;; Generally licensed under the LGPL2.1, and some files also
5775 ;; available under the same license as Ruby.
5776 license:lgpl2.1
5777 license:ruby))))
5778
64b6ccc3
DT
5779(define-public ruby-rack
5780 (package
5781 (name "ruby-rack")
288d2480 5782 (version "2.0.6")
64b6ccc3
DT
5783 (source
5784 (origin
83870c32 5785 (method git-fetch)
1db791d5 5786 ;; Download from GitHub so that the patch can be applied.
83870c32
EF
5787 (uri (git-reference
5788 (url "https://github.com/rack/rack")
5789 (commit version)))
5790 (file-name (git-file-name name version))
64b6ccc3
DT
5791 (sha256
5792 (base32
83870c32 5793 "1n7z4g1x6yxip096cdc04wq7yk7ywpinq28g2xjb46r4nlv5h0j6"))
1db791d5
BW
5794 ;; Ignore test which fails inside the build environment but works
5795 ;; outside.
5796 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
64b6ccc3
DT
5797 (build-system ruby-build-system)
5798 (arguments
5799 '(#:phases
5800 (modify-phases %standard-phases
5801 (add-before 'check 'fix-tests
5802 (lambda _
5803 ;; A few of the tests use the length of a file on disk for
5804 ;; Content-Length and Content-Range headers. However, this file
5805 ;; has a shebang in it which an earlier phase patches, growing
5806 ;; the file size from 193 to 239 bytes when the store prefix is
5807 ;; "/gnu/store".
5808 (let ((size-diff (- (string-length (which "ruby"))
5809 (string-length "/usr/bin/env ruby"))))
5810 (substitute* '("test/spec_file.rb")
5811 (("193")
5812 (number->string (+ 193 size-diff)))
5813 (("bytes(.)22-33" all delimiter)
5814 (string-append "bytes"
5815 delimiter
5816 (number->string (+ 22 size-diff))
5817 "-"
5818 (number->string (+ 33 size-diff))))))
83870c32
EF
5819 #t))
5820 (add-before 'reset-gzip-timestamps 'make-files-writable
5821 (lambda* (#:key outputs #:allow-other-keys)
5822 ;; Make sure .gz files are writable so that the
5823 ;; 'reset-gzip-timestamps' phase can do its work.
5824 (let ((out (assoc-ref outputs "out")))
5825 (for-each make-file-writable
5826 (find-files out "\\.gz$"))
5827 #t))))))
64b6ccc3 5828 (native-inputs
1db791d5
BW
5829 `(("ruby-minitest" ,ruby-minitest)
5830 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
5831 ("which" ,which)))
5832 (propagated-inputs
5833 `(("ruby-concurrent" ,ruby-concurrent)))
64b6ccc3
DT
5834 (synopsis "Unified web application interface for Ruby")
5835 (description "Rack provides a minimal, modular and adaptable interface for
5836developing web applications in Ruby. By wrapping HTTP requests and responses,
5837it unifies the API for web servers, web frameworks, and software in between
5838into a single method call.")
2f3800e5 5839 (home-page "https://rack.github.io/")
64b6ccc3 5840 (license license:expat)))
62e4cc5a 5841
20a0f804
BW
5842(define-public ruby-rack-test
5843 (package
5844 (name "ruby-rack-test")
5845 (version "0.8.3")
5846 (source
5847 (origin
5848 (method url-fetch)
5849 (uri (rubygems-uri "rack-test" version))
5850 (sha256
5851 (base32
5852 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
5853 (build-system ruby-build-system)
5854 (arguments
5855 ;; Disable tests because of circular dependencies: requires sinatra,
5856 ;; which requires rack-protection, which requires rack-test. Instead
5857 ;; simply require the library.
5858 `(#:phases
5859 (modify-phases %standard-phases
5860 (replace 'check
5861 (lambda _
5862 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
5863 (propagated-inputs
5864 `(("ruby-rack" ,ruby-rack)))
5865 (synopsis "Testing API for Rack applications")
5866 (description
5867 "Rack::Test is a small, simple testing API for Rack applications. It can
5868be used on its own or as a reusable starting point for Web frameworks and
5869testing libraries to build on.")
5870 (home-page "https://github.com/rack-test/rack-test")
5871 (license license:expat)))
5872
a0a7e690
BW
5873(define-public ruby-rack-protection
5874 (package
5875 (name "ruby-rack-protection")
3355e49c 5876 (version "2.0.5")
a0a7e690
BW
5877 (source
5878 (origin
5879 (method url-fetch)
5880 (uri (rubygems-uri "rack-protection" version))
5881 (sha256
5882 (base32
3355e49c 5883 "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk"))))
a0a7e690
BW
5884 (build-system ruby-build-system)
5885 (arguments
fafeeaa2 5886 '(;; Tests missing from the gem.
a0a7e690
BW
5887 #:tests? #f))
5888 (propagated-inputs
5889 `(("ruby-rack" ,ruby-rack)))
5890 (native-inputs
5891 `(("bundler" ,bundler)
5892 ("ruby-rspec" ,ruby-rspec-2)
5893 ("ruby-rack-test" ,ruby-rack-test)))
5894 (synopsis "Rack middleware that protects against typical web attacks")
5895 (description "Rack middleware that can be used to protect against typical
5896web attacks. It can protect all Rack apps, including Rails. For instance, it
5897protects against cross site request forgery, cross site scripting,
5898clickjacking, directory traversal, session hijacking and IP spoofing.")
5899 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
5900 (license license:expat)))
5901
6edabcb2
CB
5902(define-public ruby-rainbow
5903 (package
5904 (name "ruby-rainbow")
5905 (version "3.0.0")
5906 (source
5907 (origin
5908 (method url-fetch)
5909 (uri (rubygems-uri "rainbow" version))
5910 (sha256
5911 (base32
5912 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
5913 (build-system ruby-build-system)
5914 (arguments
5915 '(#:phases
5916 (modify-phases %standard-phases
5917 ;; Run rspec directly, to avoid requiring Rubocop which is used from
5918 ;; the Rakefile.
5919 (replace 'check
5920 (lambda* (#:key tests? #:allow-other-keys)
5921 (when tests?
5922 (invoke "rspec"))
5923 #t)))))
5924 (native-inputs
5925 `(("bundler" ,bundler)
5926 ("ruby-rspec" ,ruby-rspec)))
5927 (synopsis "Colorize printed text on ANSI terminals")
5928 (description
5929 "@code{rainbow} provides a string presenter object to colorize strings by
5930wrapping them in ANSI escape codes.")
5931 (home-page "https://github.com/sickill/rainbow")
79193b20
CB
5932 (license license:expat)))
5933
6188d643
CB
5934(define-public ruby-rr
5935 (package
5936 (name "ruby-rr")
5937 (version "1.2.1")
5938 (source
5939 (origin
5940 (method url-fetch)
5941 (uri (rubygems-uri "rr" version))
5942 (sha256
5943 (base32
5944 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
5945 (build-system ruby-build-system)
5946 (arguments
5947 '(#:tests? #f)) ; test files not included
5948 (native-inputs
5949 `(("bundler" ,bundler)
5950 ("ruby-rspec" ,ruby-rspec)))
5951 (synopsis "Ruby test double framework")
5952 (description
5953 "RR is a test double framework that features a rich selection of double
5954techniques and a terse syntax.")
5955 (home-page "https://rr.github.io/rr/")
5956 (license license:expat)))
5957
79193b20
CB
5958(define-public ruby-rest-client
5959 (package
5960 (name "ruby-rest-client")
5961 (version "2.0.2")
5962 (source
5963 (origin
5964 (method url-fetch)
5965 (uri (rubygems-uri "rest-client" version))
5966 (sha256
5967 (base32
5968 "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
5969 (build-system ruby-build-system)
5970 (arguments
5971 '(#:phases
5972 (modify-phases %standard-phases
5973 (add-before 'check 'remove-unnecessary-development-dependencies
5974 (lambda _
5975 (substitute* "rest-client.gemspec"
5976 ;; Remove rubocop as it's unused. Rubocop also indirectly
5977 ;; depends on this package through ruby-parser and ruby-ast so
5978 ;; this avoids a dependency loop.
5979 ((".*rubocop.*") "\n")
5980 ;; Remove pry as it's unused, it's a debugging tool
5981 ((".*pry.*") "\n")
5982 ;; Remove an unnecessarily strict rdoc dependency
5983 ((".*rdoc.*") "\n"))
5984 #t))
5985 (add-before 'check 'delete-network-dependent-tests
5986 (lambda _
5987 (delete-file "spec/integration/request_spec.rb")
5988 (delete-file "spec/integration/httpbin_spec.rb")
5989 #t)))))
5990 (propagated-inputs
5991 `(("ruby-http-cookie" ,ruby-http-cookie)
5992 ("ruby-mime-types" ,ruby-mime-types)
5993 ("ruby-netrc" ,ruby-netrc)))
5994 (native-inputs
5995 `(("bundler" ,bundler)
eea094cc
TGR
5996 ("ruby-webmock" ,ruby-webmock-2)
5997 ("ruby-rspec" ,ruby-rspec)))
79193b20
CB
5998 (synopsis "Simple HTTP and REST client for Ruby")
5999 (description
6000 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
6001inspired by the Sinatra microframework style of specifying actions:
6002@code{get}, @code{put}, @code{post}, @code{delete}.")
6003 (home-page "https://github.com/rest-client/rest-client")
6edabcb2
CB
6004 (license license:expat)))
6005
5d8fe6de
CB
6006(define-public ruby-rubocop
6007 (package
6008 (name "ruby-rubocop")
865ba3f4 6009 (version "0.77.0")
5d8fe6de
CB
6010 (source
6011 (origin
6012 (method url-fetch)
6013 (uri (rubygems-uri "rubocop" version))
6014 (sha256
6015 (base32
865ba3f4 6016 "0m88b1bgbhmmbdnz2xv6n0il0j4q5qm9jbc0vf1zsaxmxqp06nx9"))))
5d8fe6de
CB
6017 (build-system ruby-build-system)
6018 (arguments
6019 '(;; No included tests
6020 #:tests? #f))
6021 (propagated-inputs
6022 `(("ruby-parser" ,ruby-parser)
6023 ("ruby-powerpack" ,ruby-powerpack)
6024 ("ruby-rainbow" ,ruby-rainbow)
6025 ("ruby-progressbar" ,ruby-progressbar)
6026 ("ruby-parallel" ,ruby-parallel)
6027 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
6028 ("ruby-unicode-display-width" ,ruby-unicode-display-width)))
6029 (synopsis "Ruby code style checking tool")
6030 (description
6031 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
6032the community-driven Ruby Style Guide.")
6033 (home-page "https://github.com/rubocop-hq/rubocop")
6034 (license license:expat)))
6035
6ef85256
BW
6036(define-public ruby-contest
6037 (package
6038 (name "ruby-contest")
6039 (version "0.1.3")
6040 (source
6041 (origin
6042 (method url-fetch)
6043 (uri (rubygems-uri "contest" version))
6044 (sha256
6045 (base32
6046 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
6047 (build-system ruby-build-system)
6048 (synopsis "Write declarative tests using nested contexts")
6049 (description
6050 "Contest allows writing declarative @code{Test::Unit} tests using nested
6051contexts without performance penalties.")
6052 (home-page "https://github.com/citrusbyte/contest")
6053 (license license:expat)))
6054
c4550f75
BW
6055(define-public ruby-creole
6056 (package
6057 (name "ruby-creole")
6058 (version "0.5.0")
6059 (source
6060 (origin
6061 (method url-fetch)
6062 (uri (rubygems-uri "creole" version))
6063 (sha256
6064 (base32
6065 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
6066 (build-system ruby-build-system)
6067 (native-inputs
6068 `(("ruby-bacon" ,ruby-bacon)))
6069 (synopsis "Creole markup language converter")
6070 (description
6071 "Creole is a lightweight markup language and this library for converting
6072creole to @code{HTML}.")
6073 (home-page "https://github.com/minad/creole")
6074 (license license:ruby)))
6075
6aaa815e
PP
6076(define-public ruby-docile
6077 (package
6078 (name "ruby-docile")
6079 (version "1.1.5")
6080 (source
6081 (origin
6082 (method url-fetch)
6083 (uri (rubygems-uri "docile" version))
6084 (sha256
6085 (base32
6086 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
6087 (build-system ruby-build-system)
6088 (arguments
6089 '(#:tests? #f)) ; needs github-markup, among others
6090 (synopsis "Ruby EDSL helper library")
6091 (description "Docile is a Ruby library that provides an interface for
6092creating embedded domain specific languages (EDSLs) that manipulate existing
6093Ruby classes.")
6094 (home-page "https://ms-ati.github.io/docile/")
6095 (license license:expat)))
6096
fab8fed3
MC
6097(define-public ruby-middleware
6098 (package
6099 (name "ruby-middleware")
6100 (version "0.1.0")
6101 (source
6102 (origin
6103 (method url-fetch)
6104 (uri (rubygems-uri "middleware" version))
6105 (sha256
6106 (base32
6107 "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl"))))
6108 (build-system ruby-build-system)
6109 (arguments '(#:tests? #f)) ;no test suite
6110 (synopsis "Implementation of a middleware abstraction for Ruby")
6111 (description "Middleware is a generalized implementation of a middleware
6112abstraction for Ruby.")
6113 (home-page "https://github.com/mitchellh/middleware")
6114 (license license:expat)))
6115
1d537c71
MC
6116(define-public ruby-benchmark-ips
6117 (package
6118 (name "ruby-benchmark-ips")
6119 (version "2.8.2")
6120 (source
6121 (origin
6122 (method url-fetch)
6123 (uri (rubygems-uri "benchmark-ips" version))
6124 (sha256
6125 (base32
6126 "1n9397j7kh4vvikfann1467qgksc679imlr50hax3lk1q3af8kdw"))))
6127 (build-system ruby-build-system)
6128 (native-inputs
6129 `(("ruby-hoe" ,ruby-hoe)))
6130 (synopsis "Iterations per second enhancement for the Ruby Benchmark module")
6131 (description "Benchmark-ips enhances the Ruby Benchmark module with the
6132iterations per second count. For short snippets of code, it can automatically
6133figure out how many times to run the code to get interesting data.")
6134 (home-page "https://github.com/evanphx/benchmark-ips")
6135 (license license:expat)))
6136
fc5d1c5a
MC
6137(define-public ruby-ffi-rzmq-core
6138 (package
6139 (name "ruby-ffi-rzmq-core")
6140 (version "1.0.7")
6141 (source
6142 (origin
6143 (method url-fetch)
6144 (uri (rubygems-uri "ffi-rzmq-core" version))
6145 (sha256
6146 (base32
6147 "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5"))))
6148 (build-system ruby-build-system)
6149 (arguments
6150 `(#:phases
6151 (modify-phases %standard-phases
6152 (add-after 'unpack 'patch-libzmq-search-path
6153 (lambda* (#:key inputs #:allow-other-keys)
6154 (let ((zeromq (assoc-ref inputs "zeromq")))
6155 (substitute* "lib/ffi-rzmq-core/libzmq.rb"
6156 (("/usr/local/lib")
6157 (string-append zeromq "/lib")))
6158 #t)))
6159 (replace 'check
6160 (lambda _
6161 (invoke "rspec"))))))
6162 (native-inputs
6163 `(("ruby-rspec" ,ruby-rspec)))
6164 (inputs
6165 `(("zeromq" ,zeromq)))
6166 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
6167 (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library")
6168 (description "This library only provides the FFI wrapper for the ZeroMQ
6169networking library. It can be used to implement a Ruby API for the ZeroMQ
6170library.")
6171 (home-page "https://github.com/chuckremes/ffi-rzmq-core")
6172 (license license:expat)))
6173
7a503516
MC
6174(define-public ruby-ffi-rzmq
6175 (package
6176 (name "ruby-ffi-rzmq")
6177 (version "2.0.7")
6178 (source
6179 (origin
6180 (method url-fetch)
6181 (uri (rubygems-uri "ffi-rzmq" version))
6182 (sha256
6183 (base32
6184 "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg"))))
6185 (build-system ruby-build-system)
6186 (arguments '(#:tests? #t
6187 #:phases (modify-phases %standard-phases
6188 (replace 'check
6189 (lambda _
6190 (invoke "rspec"))))))
6191 (native-inputs
6192 `(("ruby-rspec" ,ruby-rspec)))
6193 (propagated-inputs
6194 `(("ruby-ffi-rzmq-core" ,ruby-ffi-rzmq-core)))
6195 (synopsis "High-level Ruby wrapper for the ZeroMQ networking library")
6196 (description "This library provides a high-level API that wraps the ZeroMQ
6197networking library using the Ruby foreign function interface (FFI). It is a
6198pure Ruby wrapper, hence is compatible with any Ruby runtime that has support
6199for FFI.")
6200 (home-page "https://github.com/chuckremes/ffi-rzmq")
6201 (license license:expat)))
6202
03a0f98a
MC
6203(define-public ruby-sawyer
6204 (package
6205 (name "ruby-sawyer")
6206 (version "0.8.2")
6207 (source
6208 (origin
6209 (method url-fetch)
6210 (uri (rubygems-uri "sawyer" version))
6211 (sha256
6212 (base32
6213 "0yrdchs3psh583rjapkv33mljdivggqn99wkydkjdckcjn43j3cz"))))
6214 (build-system ruby-build-system)
6215 (propagated-inputs
6216 `(("ruby-addressable" ,ruby-addressable)
6217 ("ruby-faraday" ,ruby-faraday)))
6218 (synopsis "Experimental hypermedia agent for Ruby")
6219 (description "Sawyer is an experimental hypermedia agent for Ruby built on
6220top of Faraday.")
6221 (home-page "https://github.com/lostisland/sawyer")
6222 (license license:expat)))
6223
aa3c76b1
MC
6224(define-public ruby-octokit
6225 (package
6226 (name "ruby-octokit")
6227 (version "4.18.0")
6228 (source
6229 (origin
6230 (method url-fetch)
6231 (uri (rubygems-uri "octokit" version))
6232 (sha256
6233 (base32
6234 "0zvfr9njmj5svi39fcsi2b0g7pcxb0vamw9dlyas8bg814jlzhi6"))))
6235 (build-system ruby-build-system)
6236 (arguments '(#:tests? #f)) ;no test suite in the gem release
6237 (propagated-inputs
6238 `(("ruby-faraday" ,ruby-faraday)
6239 ("ruby-sawyer" ,ruby-sawyer)))
6240 (synopsis "Ruby toolkit for the GitHub API")
6241 (description "Octokit wraps the GitHub API in a flat API client that
6242follows Ruby conventions and requires little knowledge of REST.")
6243 (home-page "https://github.com/octokit/octokit.rb")
6244 (license license:expat)))
6245
1157d2f8
MC
6246(define-public ruby-chandler
6247 (package
6248 (name "ruby-chandler")
6249 (version "0.9.0")
6250 (source
6251 (origin
6252 (method url-fetch)
6253 (uri (rubygems-uri "chandler" version))
6254 (sha256
6255 (base32
6256 "1n8a4mr2jkcz5vaaps45g2rxa2pzy1wb7cylgw85xmmyyp14lnrr"))))
6257 (build-system ruby-build-system)
6258 (native-inputs
6259 `(("ruby-rubocop" ,ruby-rubocop)))
6260 (propagated-inputs
6261 `(("ruby-netrc" ,ruby-netrc)
6262 ("ruby-octokit" ,ruby-octokit)))
6263 (synopsis "Sync CHANGELOG entries to GitHub's release notes")
6264 (description "Chandler syncs a project's CHANGELOG file entries to
6265GitHub's release notes to remove the need of manually entering release
6266notes.")
6267 (home-page "https://github.com/mattbrictson/chandler")
6268 (license license:expat)))
6269
acb28876
MC
6270(define-public ruby-pry-byebug
6271 (package
6272 (name "ruby-pry-byebug")
6273 (version "3.9.0")
6274 (source
6275 (origin
6276 (method git-fetch)
6277 (uri (git-reference
6278 (url "https://github.com/deivid-rodriguez/pry-byebug.git")
6279 (commit (string-append "v" version))))
6280 (file-name (git-file-name name version))
6281 (sha256
6282 (base32
6283 "1kchrwccai92068p50zyd6mh524ywqnm0jw5g3lks7iwmf0xkmgc"))))
6284 (build-system ruby-build-system)
6285 (arguments
6286 `(#:phases (modify-phases %standard-phases
6287 (add-before 'check 'set-home
6288 (lambda _
6289 (setenv "HOME" (getcwd))
6290 #t)))))
6291 (native-inputs
6292 `(("ruby-chandler" ,ruby-chandler)
6293 ("ruby-rubocop" ,ruby-rubocop)
6294 ("ruby-simplecov" ,ruby-simplecov)))
6295 (propagated-inputs
6296 `(("ruby-byebug" ,ruby-byebug-11)
6297 ("ruby-pry" ,ruby-pry)))
6298 (synopsis "Step-by-step debugging and stack navigation in Pry")
6299 (description "This package adds step-by-step debugging and stack
6300navigation capabilities to @code{pry}, using @code{byebug}.")
6301 (home-page "https://github.com/deivid-rodriguez/pry-byebug")
6302 (license license:expat)))
6303
4d31fe6b
MC
6304(define-public ruby-binding-of-caller
6305 (package
6306 (name "ruby-binding-of-caller")
6307 (version "0.8.0")
6308 (source
6309 (origin
6310 (method url-fetch)
6311 (uri (rubygems-uri "binding_of_caller" version))
6312 (sha256
6313 (base32
6314 "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g"))))
6315 (build-system ruby-build-system)
6316 ;; Attempting to run the test suite fails with a rake deprecation error
6317 ;; (see: https://github.com/banister/binding_of_caller/issues/76).
6318 (arguments '(#:tests? #f))
6319 (propagated-inputs
6320 `(("ruby-debug-inspector" ,ruby-debug-inspector)))
6321 (synopsis "Retrieve the binding of a method's caller")
6322 (description "The @code{binding_of_caller} module provides the
6323@code{Binding#of_caller} method. It allows accessing bindings from upper
6324frames in the call stack and can evaluate code in that context.")
6325 (home-page "https://github.com/banister/binding_of_caller")
6326 (license license:expat)))
6327
f4699abc
MC
6328(define-public ruby-pry-stack-explorer
6329 (package
6330 (name "ruby-pry-stack-explorer")
6331 (version "0.5.1")
6332 (source
6333 (origin
6334 (method url-fetch)
6335 (uri (rubygems-uri "pry-stack_explorer" version))
6336 (sha256
6337 (base32
6338 "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0"))))
6339 (build-system ruby-build-system)
6340 (arguments '(#:tests? #f)) ;no test suite in gem release
6341 (propagated-inputs
6342 `(("ruby-binding-of-caller" ,ruby-binding-of-caller)
6343 ("ruby-pry" ,ruby-pry)))
6344 (synopsis "Call-stack navigation plugin for the Pry REPL")
6345 (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that
6346add support to navigate the call-stack.")
6347 (home-page "https://github.com/pry/pry-stack_explorer")
6348 (license license:expat)))
6349
1f014c97
MC
6350(define-public ruby-varint
6351 (package
6352 (name "ruby-varint")
6353 (version "0.1.1")
6354 (source
6355 (origin
6356 (method url-fetch)
6357 (uri (rubygems-uri "varint" version))
6358 (sha256
6359 (base32
6360 "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac"))))
6361 (build-system ruby-build-system)
6362 (arguments '(#:tests? #f)) ;no test suite
6363 (synopsis "Variable length integers (varint) C extension for Ruby")
6364 (description "This package provides a small C extension to speed up
6365variable length integers (varint) in Ruby Protocol Buffers.")
6366 (home-page "https://github.com/liquidm/varint")
6367 (license license:bsd-3)))
6368
1b214174
MC
6369(define-public ruby-ruby-prof
6370 (package
6371 (name "ruby-ruby-prof")
6372 (version "1.4.1")
6373 (source
6374 (origin
6375 (method url-fetch)
6376 (uri (rubygems-uri "ruby-prof" version))
6377 (sha256
6378 (base32
6379 "12cd91m08ih0imfpy4k87618hd4mhyz291a6bx2hcskza4nf6d27"))))
6380 (build-system ruby-build-system)
6381 (arguments
6382 `(#:phases
6383 (modify-phases %standard-phases
6384 (add-after 'unpack 'patch-rakefile
6385 ;; This fixes the following error: "NameError: uninitialized
6386 ;; constant Bundler::GemHelper" (see:
6387 ;; https://github.com/ruby-prof/ruby-prof/issues/274).
6388 (lambda _
6389 (substitute* "Rakefile"
6390 ((".*require \"bundler/setup\".*" all)
6391 (string-append all " require 'bundler/gem_tasks'\n")))
6392 #t))
6393 (add-before 'check 'compile
6394 (lambda _
6395 (invoke "rake" "compile"))))))
6396 (native-inputs
6397 `(("bundler" ,bundler)
6398 ("ruby-minitest" ,ruby-minitest)
6399 ("ruby-rake-compiler" ,ruby-rake-compiler)
6400 ("ruby-rdoc" ,ruby-rdoc)))
6401 (synopsis "Fast code profiler for Ruby")
6402 (description "RubyProf is a fast code profiler for Ruby. Its features
6403include:
6404@table @asis
6405@item Speed
6406Being a C extension, it is many times faster than the standard Ruby profiler.
6407@item Measurement Modes
6408It can measure program wall time, process time, object allocations and memory
6409usage.
6410@item Reports
6411A variety of text and cross-referenced HTML reports can be generated.
6412@item Threads
6413Profiling multiple threads simultaneously is supported.
6414@end table")
6415 (home-page "https://github.com/ruby-prof/ruby-prof")
6416 (license license:bsd-2)))
6417
dff5392f
MC
6418(define-public ruby-cucumber-messages
6419 (package
6420 (name "ruby-cucumber-messages")
6421 (version "12.2.0")
6422 (source (origin
6423 (method git-fetch)
6424 (uri (git-reference
6425 (url "https://github.com/cucumber/messages-ruby.git")
6426 (commit "12cd07eac87bce7843fd1bb0bf64bc4da09f097c")))
6427 (file-name (git-file-name name version))
6428 (sha256
6429 (base32
6430 "16wwqfpsq7crvxc3q08lphgyh12cl2d83p1c79p312q4jmy9cn5a"))))
6431 (build-system ruby-build-system)
6432 (arguments
6433 `(#:phases (modify-phases %standard-phases
6434 (add-after 'unpack 'patch-protobuf.rb
6435 (lambda _
6436 (substitute* "rake/protobuf.rb"
6437 (("load 'protobuf/tasks/compile.rake'")
6438 "require 'protobuf/tasks'"))
6439 #t))
6440 (add-before 'build 'compile
6441 (lambda _
6442 (substitute* "Makefile"
6443 (("bundle exec ") "")
6444 (("include default.mk.*" all)
6445 (string-append "#" all)))
6446 (invoke "make")))
6447 (replace 'check
6448 (lambda _
6449 (invoke "rspec"))))))
6450 (propagated-inputs
6451 `(("ruby-protobuf" ,ruby-protobuf-cucumber)))
6452 (native-inputs
6453 `(("ruby-rspec" ,ruby-rspec)))
6454 (home-page "https://github.com/cucumber/messages-ruby")
6455 (synopsis "Cucumber Messages for Ruby (Protocol Buffers)")
6456 (description "Cucumber Messages for Ruby is a library which allows
6457serialization and deserialization of the protocol buffer messages used in
6458Cucumber.")
6459 (license license:expat)))
6460
44514637 6461(define-public ruby-gherkin
62e4cc5a 6462 (package
44514637 6463 (name "ruby-gherkin")
cfef316f
MC
6464 (version "14.0.1")
6465 (source (origin
6466 (method git-fetch)
6467 (uri (git-reference
6468 (url "https://github.com/cucumber/gherkin-ruby")
6469 (commit (string-append "v" version))))
6470 (file-name (git-file-name name version))
6471 (sha256
6472 (base32
6473 "1dwa8632nc6kijv8p257jl64rsjmc0fimlaqvxlkdi2h9n1nympb"))))
62e4cc5a
PP
6474 (build-system ruby-build-system)
6475 (native-inputs
cfef316f
MC
6476 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
6477 ("ruby-rspec" ,ruby-rspec)))
62e4cc5a 6478 (arguments
cfef316f 6479 `(#:test-target "spec"))
62e4cc5a 6480 (synopsis "Gherkin parser for Ruby")
44514637 6481 (description "Gherkin is a parser and compiler for the Gherkin language.
aada5f6f
CB
6482It is intended be used by all Cucumber implementations to parse
6483@file{.feature} files.")
cfef316f 6484 (home-page "https://github.com/cucumber/gherkin-ruby")
62e4cc5a 6485 (license license:expat)))
cd89fecb 6486
8f85018d
MB
6487(define-public ruby-gherkin-ruby
6488 (package
6489 (name "ruby-gherkin-ruby")
6490 (version "0.3.2")
6491 (home-page "http://github.com/codegram/gherkin-ruby")
6492 (source (origin
6493 (method url-fetch)
6494 (uri (rubygems-uri "gherkin-ruby" version))
6495 (sha256
6496 (base32
6497 "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1"))))
6498 (build-system ruby-build-system)
6499 (synopsis "Pure Ruby Gherkin parser")
6500 (description
6501 "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than
6502200 lines of code.")
6503 ;; XXX: No license information anywhere but Readme.md.
6504 (license license:expat)))
6505
15b16c2c
CB
6506(define-public ruby-aruba
6507 (package
6508 (name "ruby-aruba")
cf7201c4 6509 (version "0.14.14")
15b16c2c
CB
6510 (source
6511 (origin
6512 (method url-fetch)
6513 (uri (rubygems-uri "aruba" version))
6514 (sha256
6515 (base32
cf7201c4 6516 "0l2mfpdxc03gdrbwc2hv4vdhjhqhfcdp6d02j05j64ncpi9srlqn"))))
15b16c2c
CB
6517 (build-system ruby-build-system)
6518 (arguments
6519 '(#:test-target "spec"
6520 #:phases
6521 (modify-phases %standard-phases
6522 (add-after 'unpack 'patch
6523 (lambda _
6524 (substitute* "spec/aruba/api_spec.rb"
6525 ;; This resolves some errors in the specs
6526 ;;
6527 ;; undefined method `parse' for Time:Class
6528 (("require 'spec_helper'")
6529 "require 'spec_helper'\nrequire 'time'"))
6530 ;; Avoid shebang issues in this spec file
6531 (substitute* "spec/aruba/matchers/command_spec.rb"
6532 (("/usr/bin/env bash")
6533 (which "bash")))
6534 #t))
6535 (add-before 'check 'remove-unnecessary-dependencies
6536 (lambda _
6537 (substitute* "Gemfile"
6538 ((".*byebug.*") "\n")
6539 ((".*pry.*") "\n")
6540 ((".*yaml.*") "\n")
6541 ((".*bcat.*") "\n")
6542 ((".*kramdown.*") "\n")
6543 ((".*rubocop.*") "\n")
6544 ((".*cucumber-pro.*") "\n")
6545 ((".*cucumber.*") "\n")
6546 ((".*license_finder.*") "\n")
6547 ((".*rake.*") "gem 'rake'\n")
15b16c2c 6548 ((".*relish.*") "\n"))
15b16c2c
CB
6549 (substitute* "aruba.gemspec"
6550 (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
6551 "spec.add_runtime_dependency 'cucumber'"))
6552 #t))
6553 (add-before 'check 'set-home
6554 (lambda _ (setenv "HOME" "/tmp") #t)))))
6555 (native-inputs
6556 `(("bundler" ,bundler)
6557 ("ruby-rspec" ,ruby-rspec)
cf7201c4
CB
6558 ("ruby-fuubar" ,ruby-fuubar)
6559 ("ruby-simplecov" ,ruby-simplecov)))
15b16c2c
CB
6560 (propagated-inputs
6561 `(("ruby-childprocess" ,ruby-childprocess)
6562 ("ruby-contracts" ,ruby-contracts)
6563 ("ruby-cucumber" ,ruby-cucumber)
6564 ("ruby-ffi" ,ruby-ffi)
6565 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
6566 ("ruby-thor" ,ruby-thor)
6567 ("ruby-yard" ,ruby-yard)))
6568 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
6569 (description
6570 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
6571command-line applications. It supports applications written in any
6572language.")
6573 (home-page "https://github.com/cucumber/aruba")
6574 (license license:expat)))
6575
6576;; A version of ruby-aruba without tests run so that circular dependencies can
6577;; be avoided.
6578(define ruby-aruba-without-tests
6579 (package
6580 (inherit ruby-aruba)
6581 (arguments '(#:tests? #f))
6582 (propagated-inputs
6583 `(("ruby-cucumber" ,ruby-cucumber-without-tests)
6584 ,@(alist-delete "ruby-cucumber"
6585 (package-propagated-inputs ruby-aruba))))
6586 (native-inputs '())))
6587
fd6577b4
MC
6588(define-public ruby-sys-uname
6589 (package
6590 (name "ruby-sys-uname")
6591 (version "1.2.1")
6592 (source
6593 (origin
6594 (method url-fetch)
6595 (uri (rubygems-uri "sys-uname" version))
6596 (sha256
6597 (base32
6598 "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0"))))
6599 (build-system ruby-build-system)
6600 (arguments
6601 `(#:test-target "spec"))
6602 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
6603 (native-inputs `(("ruby-rspec" ,ruby-rspec)))
6604 (synopsis "Ruby interface for gathering system information")
6605 (description "The sys-uname library provides an interface for gathering
6606information about your current platform. It allows retrieving information
6607such as the OS name, OS version, system name, etc.")
6608 (home-page "https://github.com/djberg96/sys-uname")
6609 (license license:asl2.0)))
6610
ac3ec612
MC
6611(define-public ruby-cucumber-create-meta
6612 (package
6613 (name "ruby-cucumber-create-meta")
6614 (version "1.0.0")
6615 (source
6616 (origin
6617 (method url-fetch)
6618 (uri (rubygems-uri "cucumber-create-meta" version))
6619 (sha256
6620 (base32
6621 "0i0i3arymjrnjk72mg79w1a11607x4d0lrqafm9sz2gq9l52zasw"))))
6622 (build-system ruby-build-system)
6623 (arguments
6624 `(#:phases (modify-phases %standard-phases
6625 (add-after 'extract-gemspec 'relax-version-requirements
6626 (lambda _
6627 (substitute* ".gemspec"
6628 ((" 12\\.2")
6629 " 12.1"))
6630 #t))
6631 (replace 'check
6632 (lambda _
6633 (invoke "rspec"))))))
6634 (native-inputs
6635 `(("ruby-rspec" ,ruby-rspec)))
6636 (propagated-inputs
6637 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
6638 ("ruby-sys-uname" ,ruby-sys-uname)))
6639 (synopsis "Function to create @code{Meta} messages for Cucumber Ruby")
6640 (description "The @code{createMeta} utility function allows generating
6641system-specific @code{Meta} messages for Cucumber Ruby.")
6642 (home-page "https://github.com/cucumber/cucumber/tree/master/create-meta/ruby")
6643 (license license:expat)))
6644
f3574624
MC
6645(define-public ruby-cucumber-html-formatter
6646 (package
6647 (name "ruby-cucumber-html-formatter")
6648 (version "7.0.0")
6649 (source
6650 (origin
6651 (method url-fetch)
6652 (uri (rubygems-uri "cucumber-html-formatter" version))
6653 (sha256
6654 (base32
6655 "0lshj4sw9jw7687wrhknyb9kffblai3l843zgrznyqij3ga0bc62"))))
6656 (build-system ruby-build-system)
6657 (arguments
6658 `(#:phases (modify-phases %standard-phases
6659 (replace 'check
6660 (lambda _
6661 (invoke "rspec"))))))
6662 (native-inputs
6663 `(("ruby-rspec" ,ruby-rspec)))
6664 (propagated-inputs
6665 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)))
6666 (synopsis "HTML formatter for Cucumber")
6667 (description "Cucumber HTML Formatter produces a HTML report for Cucumber
6668runs. It is built on top of cucumber-react and works with any Cucumber
6669implementation with a protocol buffer formatter that outputs Cucumber
6670messages.")
6671 (home-page "https://github.com/cucumber/cucumber/tree/\
6672master/html-formatter/ruby")
6673 (license license:expat)))
6674
15b16c2c
CB
6675(define-public ruby-cucumber
6676 (package
6677 (name "ruby-cucumber")
92ebbaad 6678 (version "4.1.0")
15b16c2c
CB
6679 (source
6680 (origin
6681 (method git-fetch)
6682 (uri (git-reference
6683 (url "https://github.com/cucumber/cucumber-ruby.git")
6684 (commit (string-append "v" version))))
6685 (file-name (git-file-name name version))
6686 (sha256
6687 (base32
92ebbaad 6688 "0g9rqfslbzkkrq2kvl14fgknrhfbji3bjjpjxff5nc9wzd3hd549"))))
15b16c2c
CB
6689 (build-system ruby-build-system)
6690 (arguments
6691 '(#:test-target "spec"
6692 #:phases
6693 (modify-phases %standard-phases
92ebbaad 6694 (add-after 'extract-gemspec 'strip-version-requirements
15b16c2c 6695 (lambda _
92ebbaad
MC
6696 (substitute* "cucumber.gemspec"
6697 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
6698 (string-append stripped "\n")))
15b16c2c
CB
6699 #t)))))
6700 (propagated-inputs
6701 `(("ruby-builder" ,ruby-builder)
6702 ("ruby-cucumber-core" ,ruby-cucumber-core)
92ebbaad
MC
6703 ("ruby-cucumber-create-meta" ,ruby-cucumber-create-meta)
6704 ("ruby-cucumber-html-formatter" ,ruby-cucumber-html-formatter)
6705 ("ruby-cucumber-messages" ,ruby-cucumber-messages)
15b16c2c 6706 ("ruby-cucumber-wire" ,ruby-cucumber-wire)
15b16c2c
CB
6707 ("ruby-diff-lcs" ,ruby-diff-lcs)
6708 ("ruby-gherkin" ,ruby-gherkin)
6709 ("ruby-multi-json" ,ruby-multi-json)
6710 ("ruby-multi-test" ,ruby-multi-test)))
6711 (native-inputs
92ebbaad 6712 `(;; Use a untested version of aruba, to avoid a circular dependency, as
15b16c2c
CB
6713 ;; ruby-aruba depends on ruby-cucumber.
6714 ("ruby-aruba", ruby-aruba-without-tests)
6715 ("ruby-rspec" ,ruby-rspec)
6716 ("ruby-pry" ,ruby-pry)
92ebbaad
MC
6717 ("ruby-nokogiri" ,ruby-nokogiri)
6718 ("ruby-rubocop" ,ruby-rubocop)))
15b16c2c 6719 (synopsis "Describe automated tests in plain language")
92ebbaad
MC
6720 (description "Cucumber is a tool for running automated tests written in
6721plain language. It's designed to support a Behaviour Driven Development (BDD)
15b16c2c
CB
6722software development workflow.")
6723 (home-page "https://cucumber.io/")
6724 (license license:expat)))
6725
6726(define ruby-cucumber-without-tests
6727 (package (inherit ruby-cucumber)
6728 (arguments
6729 '(#:tests? #f))
6730 (native-inputs
6731 '())))
6732
f048ef52
MC
6733(define-public ruby-coveralls
6734 (package
6735 (name "ruby-coveralls")
6736 (version "0.8.23")
6737 (source
6738 (origin
6739 (method url-fetch)
6740 (uri (rubygems-uri "coveralls" version))
6741 (sha256
6742 (base32
6743 "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc"))))
6744 (build-system ruby-build-system)
6745 ;; The test suite depends on ruby-vcr, which cannot be included in Guix
6746 ;; because of its nonfree, Hippocratic derived license.
6747 (arguments '(#:tests? #f))
6748 (propagated-inputs
6749 `(("ruby-json" ,ruby-json)
6750 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
6751 ("ruby-thor" ,ruby-thor)
6752 ("ruby-tins" ,ruby-tins)))
6753 (synopsis "Ruby implementation of the Coveralls API")
6754 (description "This package provides a Ruby implementation of the Coveralls
6755API.")
6756 (home-page "https://coveralls.io")
6757 (license license:expat)))
f2a1b7fa
MC
6758
6759(define-public ruby-unindent
6760 (package
6761 (name "ruby-unindent")
6762 (version "1.0")
6763 (source
6764 (origin
6765 (method url-fetch)
6766 (uri (rubygems-uri "unindent" version))
6767 (sha256
6768 (base32
6769 "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd"))))
6770 (build-system ruby-build-system)
6771 (synopsis "Ruby method to unindent strings")
6772 (description "This module provides a @code{String#unindent} Ruby method to
6773unindent strings, which can be useful to unindent multiline strings embedded
6774in already-indented code.")
6775 (home-page "https://github.com/mynyml/unindent")
6776 (license license:expat)))
f048ef52 6777
cd89fecb
PP
6778(define-public ruby-cucumber-core
6779 (package
6780 (name "ruby-cucumber-core")
95a5d992 6781 (version "7.1.0")
cd89fecb
PP
6782 (source
6783 (origin
95a5d992
MC
6784 (method git-fetch)
6785 (uri (git-reference
6786 (url "https://github.com/cucumber/cucumber-ruby-core.git")
6787 (commit (string-append "v" version))))
6788 (file-name (git-file-name name version))
cd89fecb
PP
6789 (sha256
6790 (base32
95a5d992 6791 "1p5wb6wbggbw37ariyag4kxpiczznvgm3c8cnz1744dmbj79q1rn"))))
cd89fecb 6792 (build-system ruby-build-system)
95a5d992
MC
6793 (arguments
6794 `(#:test-target "spec"
6795 #:phases
6796 (modify-phases %standard-phases
6797 (add-after 'extract-gemspec 'relax-version-requirements
6798 (lambda _
6799 (substitute* "cucumber-core.gemspec"
6800 (("'cucumber-tag-expressions',.*")
6801 "'cucumber-tag-expressions', '>=2.0.0'\n"))
6802 #t)))))
6803 (native-inputs
6804 `(("ruby-rspec" ,ruby-rspec)
6805 ("ruby-coveralls" ,ruby-coveralls)
6806 ("ruby-rubocop" ,ruby-rubocop)
6807 ("ruby-simplecov" ,ruby-simplecov)
6808 ("ruby-unindent" ,ruby-unindent)))
cd89fecb 6809 (propagated-inputs
95a5d992 6810 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
5cd047e8
CB
6811 ("ruby-gherkin" ,ruby-gherkin)
6812 ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
cd89fecb
PP
6813 (synopsis "Core library for the Cucumber BDD app")
6814 (description "Cucumber is a tool for running automated tests
6815written in plain language. Because they're written in plain language,
6816they can be read by anyone on your team. Because they can be read by
6817anyone, you can use them to help improve communication, collaboration
6818and trust on your team.")
6819 (home-page "https://cucumber.io/")
6820 (license license:expat)))
212d563d 6821
fb1a8954
CB
6822(define-public ruby-cucumber-expressions
6823 (package
6824 (name "ruby-cucumber-expressions")
4ada4a42 6825 (version "10.2.0")
fb1a8954
CB
6826 (source
6827 (origin
4ada4a42
MC
6828 (method git-fetch)
6829 (uri (git-reference
6830 (url "https://github.com/cucumber/cucumber-expressions-ruby.git")
6831 (commit (string-append "v" version))))
6832 (file-name (git-file-name name version))
fb1a8954
CB
6833 (sha256
6834 (base32
4ada4a42 6835 "1aivhcpjrmbvp9bg0y7g6zxh2swfvylvg0sapq5jc4i1y74k8npd"))))
fb1a8954
CB
6836 (build-system ruby-build-system)
6837 (arguments
6838 '(#:test-target "spec"))
6839 (native-inputs
4ada4a42 6840 `(("ruby-rspec" ,ruby-rspec)
fb1a8954
CB
6841 ("ruby-simplecov" ,ruby-simplecov)))
6842 (synopsis "Simpler alternative to Regular Expressions")
6843 (description "Cucumber Expressions offer similar functionality to Regular
6844Expressions, with a syntax that is easier to read and write. Cucumber
6845Expressions are extensible with parameter types.")
6846 (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
6847 (license license:expat)))
6848
ce872770
CB
6849(define-public ruby-cucumber-wire
6850 (package
6851 (name "ruby-cucumber-wire")
6516827e 6852 (version "3.1.0")
ce872770
CB
6853 (source
6854 (origin
6855 (method url-fetch)
6856 (uri (rubygems-uri "cucumber-wire" version))
6857 (sha256
6858 (base32
6516827e 6859 "0z1n13lqv70zb2lcrvs2263lm0gsb3gz8gbv890kxzwp8cvd433k"))))
ce872770
CB
6860 (build-system ruby-build-system)
6861 (arguments
6516827e 6862 '(#:tests? #f ;tests use cucumber, causing a cycle
ce872770
CB
6863 #:phases
6864 (modify-phases %standard-phases
6516827e 6865 (add-after 'extract-gemspec 'relax-version-requirements
ce872770 6866 (lambda _
6516827e
MC
6867 (substitute* ".gemspec"
6868 ((" 10\\.1") " 10.2"))
ce872770 6869 #t)))))
6516827e
MC
6870 (propagated-inputs
6871 `(("ruby-cucumber-core" ,ruby-cucumber-core)
6872 ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
6873 ("ruby-cucumber-messages" ,ruby-cucumber-messages)))
ce872770 6874 (synopsis "Cucumber wire protocol plugin")
6516827e
MC
6875 (description "Cucumber's wire protocol allows step definitions to be
6876implemented and invoked on any platform.")
ce872770
CB
6877 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
6878 (license license:expat)))
6879
0ce8f344
CB
6880(define-public ruby-cucumber-tag-expressions
6881 (package
6882 (name "ruby-cucumber-tag-expressions")
0d2c45ce 6883 (version "3.0.0")
0ce8f344
CB
6884 (source
6885 (origin
0d2c45ce
MC
6886 (method git-fetch)
6887 (uri (git-reference
6888 (url "https://github.com/cucumber/tag-expressions-ruby.git")
6889 (commit (string-append "v" version))))
6890 (file-name (git-file-name name version))
0ce8f344
CB
6891 (sha256
6892 (base32
0d2c45ce 6893 "15dw4w0npd4m6aw7zhqkjxxzngp42kswrkwfygxkxcxnhy5zl1vx"))))
0ce8f344
CB
6894 (build-system ruby-build-system)
6895 (arguments
0d2c45ce 6896 `(#:test-target "spec"))
0ce8f344
CB
6897 (native-inputs
6898 `(("ruby-rspec" ,ruby-rspec)))
6899 (synopsis "Cucumber tag expressions for Ruby")
0d2c45ce
MC
6900 (description "Cucumber tag expression parser for Ruby. A tag expression
6901is an infix boolean expression used by Cucumber.")
0ce8f344
CB
6902 (home-page "https://github.com/cucumber/tag-expressions-ruby")
6903 (license license:expat)))
6904
73a5aff7
CB
6905(define-public ruby-bindex
6906 (package
6907 (name "ruby-bindex")
6908 (version "0.5.0")
6909 (source
6910 (origin
6911 (method url-fetch)
6912 (uri (rubygems-uri "bindex" version))
6913 (sha256
6914 (base32
6915 "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
6916 (build-system ruby-build-system)
6917 (arguments
6918 '(#:test-target "default"))
6919 (native-inputs
6920 `(("bundler" ,bundler)
6921 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6922 (synopsis "Provides access for bindings relating to Ruby exceptions")
6923 (description
6924 "@code{bindex} provides a way to access the bindings that relate to
6925exceptions in Ruby, providing more information about the context in which the
6926exception occurred.")
6927 (home-page "https://github.com/gsamokovarov/bindex")
6928 (license license:expat)))
6929
212d563d
PP
6930(define-public ruby-bio-logger
6931 (package
6932 (name "ruby-bio-logger")
6933 (version "1.0.1")
6934 (source
6935 (origin
6936 (method url-fetch)
6937 (uri (rubygems-uri "bio-logger" version))
6938 (sha256
6939 (base32
6940 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
6941 (build-system ruby-build-system)
6942 (arguments
6943 `(#:tests? #f)) ; rake errors, missing shoulda
6944 (propagated-inputs
6945 `(("ruby-log4r" ,ruby-log4r)))
6946 (synopsis "Log4r wrapper for Ruby")
6947 (description "Bio-logger is a wrapper around Log4r adding extra logging
6948features such as filtering and fine grained logging.")
6949 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
6950 (license license:expat)))
07f61cb2 6951
2db0f9c8
BW
6952(define-public ruby-yajl-ruby
6953 (package
6954 (name "ruby-yajl-ruby")
6955 (version "1.4.1")
6956 (source
6957 (origin
6958 (method url-fetch)
6959 (uri (rubygems-uri "yajl-ruby" version))
6960 (sha256
6961 (base32
6962 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
6963 (build-system ruby-build-system)
6964 (arguments
6965 '(#:test-target "spec"
6966 #:phases
6967 (modify-phases %standard-phases
6968 (add-before 'check 'patch-test-to-update-load-path
6969 (lambda _
6970 (substitute* "spec/parsing/large_number_spec.rb"
6971 (("require \"yajl\"")
6972 "$LOAD_PATH << 'lib'; require 'yajl'"))
6973 #t)))))
6974 (native-inputs
6975 `(("ruby-rake-compiler" ,ruby-rake-compiler)
6976 ("ruby-rspec" ,ruby-rspec)))
6977 (synopsis "Streaming JSON parsing and encoding library for Ruby")
6978 (description
6979 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
6980is compatible with the JSON gem, so yajl-ruby can act as a drop in
6981replacement.
6982
6983A modified copy of yajl is used, and included in the package.")
6984 (home-page "https://github.com/brianmario/yajl-ruby")
6985 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
6986 license:bsd-3)))) ; Included, modified copy of yajl
6987
07f61cb2 6988(define-public ruby-yard
6499893e
BW
6989 (package
6990 (name "ruby-yard")
f321380f 6991 (version "0.9.20")
6499893e
BW
6992 (source
6993 (origin
f3fd70c0 6994 (method git-fetch)
6499893e 6995 ;; Tests do not pass if we build from the distributed gem.
f3fd70c0
EF
6996 (uri (git-reference
6997 (url "https://github.com/lsegal/yard")
6998 (commit (string-append "v" version))))
6999 (file-name (git-file-name name version))
6499893e
BW
7000 (sha256
7001 (base32
f321380f 7002 "1v48zz8hzazrg79jksj9siys21d2axvzijvkxw2j42zh86syi1wi"))))
6499893e
BW
7003 (build-system ruby-build-system)
7004 (arguments
7005 `(#:phases
7006 (modify-phases %standard-phases
7007 (replace 'check
7008 (lambda _
f321380f
CB
7009 ;; Delete the Gemfile to avoid errors relating to it
7010 (delete-file "Gemfile")
6499893e
BW
7011 ;; $HOME needs to be set to somewhere writeable for tests to run
7012 (setenv "HOME" "/tmp")
7013 ;; Run tests without using 'rake' to avoid dependencies.
9923d5a4 7014 (invoke "rspec"))))))
6499893e
BW
7015 (native-inputs
7016 `(("ruby-rspec" ,ruby-rspec)
f321380f
CB
7017 ("ruby-rack" ,ruby-rack)
7018 ("ruby-redcloth" ,ruby-redcloth)
7019 ("ruby-asciidoc" ,ruby-asciidoctor)))
6499893e
BW
7020 (synopsis "Documentation generation tool for Ruby")
7021 (description
7022 "YARD is a documentation generation tool for the Ruby programming
07f61cb2
BW
7023language. It enables the user to generate consistent, usable documentation
7024that can be exported to a number of formats very easily, and also supports
7025extending for custom Ruby constructs such as custom class level definitions.")
2f3800e5 7026 (home-page "https://yardoc.org")
6499893e 7027 (license license:expat)))
2cbcd23a 7028
ad686ef3
RW
7029(define-public ruby-clap
7030 (package
7031 (name "ruby-clap")
7032 (version "1.0.0")
7033 (source (origin
7034 (method url-fetch)
7035 (uri (rubygems-uri "clap" version))
7036 (sha256
7037 (base32
7038 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
7039 (build-system ruby-build-system)
7040 ;; Clap needs cutest for running tests, but cutest needs clap.
7041 (arguments `(#:tests? #f))
7042 (synopsis "Command line argument parsing for simple applications")
7043 (description
7044 "Clap provides command line argument parsing features. It covers the
7045simple case of executing code based on the flags or parameters passed.")
7046 (home-page "https://github.com/djanowski/cutest")
0c80451e
RW
7047 (license license:expat)))
7048
7049(define-public ruby-cutest
7050 (package
7051 (name "ruby-cutest")
7052 (version "1.2.2")
7053 (source (origin
7054 (method url-fetch)
7055 (uri (rubygems-uri "cutest" version))
7056 (sha256
7057 (base32
7058 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
7059 (build-system ruby-build-system)
7060 (propagated-inputs
7061 `(("ruby-clap" ,ruby-clap)))
7062 (synopsis "Run tests in separate processes")
7063 (description
7064 "Cutest runs tests in separate processes to avoid shared state.")
7065 (home-page "https://github.com/djanowski/cutest")
ad686ef3
RW
7066 (license license:expat)))
7067
ac09beba
RW
7068(define-public ruby-pygmentize
7069 (package
7070 (name "ruby-pygmentize")
7071 (version "0.0.3")
7072 (source (origin
7073 (method url-fetch)
7074 (uri (rubygems-uri "pygmentize" version))
7075 (sha256
7076 (base32
7077 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
7078 (build-system ruby-build-system)
7079 (arguments
7080 `(#:phases
7081 (modify-phases %standard-phases
7082 (add-after 'unpack 'fix-pygmentize-path
7083 (lambda _
7084 (substitute* "lib/pygmentize.rb"
7085 (("\"/usr/bin/env python.*")
7086 (string-append "\"" (which "pygmentize") "\"\n")))
7087 #t))
7088 (add-after 'build 'do-not-use-vendor-directory
7089 (lambda _
7090 ;; Remove bundled pygments sources
7091 ;; FIXME: ruby-build-system does not support snippets.
7092 (delete-file-recursively "vendor")
7093 (substitute* "pygmentize.gemspec"
7094 (("\"vendor/\\*\\*/\\*\",") ""))
7095 #t)))))
7096 (inputs
7097 `(("pygments" ,python-pygments)))
7098 (native-inputs
7099 `(("ruby-cutest" ,ruby-cutest)
7100 ("ruby-nokogiri" ,ruby-nokogiri)))
7101 (synopsis "Thin Ruby wrapper around pygmentize")
7102 (description
7103 "Pygmentize provides a simple way to call pygmentize from within a Ruby
7104application.")
7105 (home-page "https://github.com/djanowski/pygmentize")
7106 (license license:expat)))
7107
2cbcd23a
DT
7108(define-public ruby-eventmachine
7109 (package
7110 (name "ruby-eventmachine")
c207fa5e 7111 (version "1.2.7")
2cbcd23a
DT
7112 (source
7113 (origin
7114 (method url-fetch)
7115 (uri (rubygems-uri "eventmachine" version))
7116 (sha256
7117 (base32
c207fa5e 7118 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
2cbcd23a
DT
7119 (build-system ruby-build-system)
7120 (arguments
c5d269fb 7121 '(#:tests? #f)) ; test suite tries to connect to google.com
2cbcd23a
DT
7122 (native-inputs
7123 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
7124 (synopsis "Single-threaded network event framework for Ruby")
7125 (description
7126 "EventMachine implements a single-threaded engine for arbitrary network
7127communications. EventMachine wraps all interactions with sockets, allowing
7128programs to concentrate on the implementation of network protocols. It can be
7129used to create both network servers and clients.")
24a26227
TGR
7130 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
7131 (home-page "https://github.com/eventmachine/eventmachine")
2cbcd23a 7132 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
7d3a1a2d 7133
e218b0c8
BW
7134(define-public ruby-ruby-engine
7135 (package
7136 (name "ruby-ruby-engine")
77d098bf 7137 (version "2.0.0")
e218b0c8
BW
7138 (source
7139 (origin
7140 (method url-fetch)
7141 (uri (rubygems-uri "ruby_engine" version))
7142 (sha256
7143 (base32
77d098bf 7144 "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm"))))
e218b0c8
BW
7145 (build-system ruby-build-system)
7146 (arguments
7147 `(#:phases
7148 (modify-phases %standard-phases
77d098bf 7149 (add-after 'extract-gemspec 'clean-up
e218b0c8
BW
7150 (lambda _
7151 (delete-file "Gemfile.lock")
7152 (substitute* "ruby_engine.gemspec"
7153 ;; Remove unnecessary imports that would entail further
7154 ;; dependencies.
7155 ((".*<rdoc.*") "")
7156 ((".*<rubygems-tasks.*") "")
7157 ;; Remove extraneous .gem file
77d098bf
MC
7158 (("\"pkg/ruby_engine-[0-9.]+\\.gem\".freeze, ") "")
7159 (("\"Gemfile.lock\".freeze, ") "")
e218b0c8 7160 ;; Soften rake dependency
77d098bf 7161 (("%q<rake>.freeze, \\[\"~> 10.0\"\\]")
e218b0c8
BW
7162 "%q<rake>.freeze, [\">= 10.0\"]")
7163 ;; Soften the rspec dependency
77d098bf 7164 (("%q<rspec>.freeze, \\[\"~> 2.4\"\\]")
e218b0c8
BW
7165 "%q<rspec>.freeze, [\">= 2.4\"]"))
7166 (substitute* "Rakefile"
7167 (("require 'rubygems/tasks'") "")
7168 (("Gem::Tasks.new") ""))
7169 ;; Remove extraneous .gem file that otherwise gets installed.
77d098bf 7170 (delete-file-recursively "pkg")
e218b0c8
BW
7171 #t)))))
7172 (native-inputs
7173 `(("bundler" ,bundler)
7174 ("ruby-rake" ,ruby-rake)
7175 ("ruby-rspec" ,ruby-rspec)))
7176 (synopsis "Simplifies checking for Ruby implementation")
7177 (description
7178 "@code{ruby_engine} provides an RubyEngine class that can be used to
7179check which implementation of Ruby is in use. It can provide the interpreter
7180name and provides query methods such as @{RubyEngine.mri?}.")
7181 (home-page "https://github.com/janlelis/ruby_engine")
7182 (license license:expat)))
7183
8092e333
BW
7184(define-public ruby-turn
7185 (package
7186 (name "ruby-turn")
7187 (version "0.9.7")
7188 (source
7189 (origin
7190 (method url-fetch)
7191 (uri (rubygems-uri "turn" version))
7192 (sha256
7193 (base32
7194 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
7195 (build-system ruby-build-system)
7196 (arguments
7197 `(#:phases
7198 (modify-phases %standard-phases
7199 ;; Tests fail because turn changes its environment so can no longer
7200 ;; find test/unit. Instead simply test if the executable runs
7201 ;; without issue.
7202 (replace 'check
7203 (lambda _
9923d5a4 7204 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
8092e333
BW
7205 (propagated-inputs
7206 `(("ruby-ansi" ,ruby-ansi)
7207 ("ruby-minitest" ,ruby-minitest-4)))
7208 (synopsis "Alternate set of alternative runners for MiniTest")
7209 (description
7210 "TURN provides a set of alternative runners for MiniTest which are both
7211colorful and informative. TURN displays each test on a separate line with
7212failures being displayed immediately instead of at the end of the tests. Note
7213that TURN is no longer being maintained.")
f433b662 7214 (home-page "https://rubygems.org/gems/turn")
8092e333
BW
7215 (license license:expat)))
7216
8279b1d3
CB
7217(define-public ruby-mimemagic
7218 (package
7219 (name "ruby-mimemagic")
60bc8952 7220 (version "0.3.3")
8279b1d3
CB
7221 (source
7222 (origin
7223 (method url-fetch)
7224 (uri (rubygems-uri "mimemagic" version))
7225 (sha256
60bc8952 7226 (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw"))))
8279b1d3
CB
7227 (build-system ruby-build-system)
7228 (arguments
7229 '(#:phases
7230 (modify-phases %standard-phases
7231 ;; This phase breaks the tests, as it patches some of the test data.
7232 (delete 'patch-source-shebangs))))
7233 (native-inputs
7234 `(("ruby-bacon" ,ruby-bacon)))
7235 (synopsis "Ruby library for MIME detection by extension or content")
7236 (description
7237 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
7238extension or content, using the freedesktop.org.xml shared-mime-info
7239database.")
7240 (home-page "https://github.com/minad/mimemagic")
7241 (license license:expat)))
7242
32d1c06f
BW
7243(define-public ruby-mime-types-data
7244 (package
7245 (name "ruby-mime-types-data")
f49511db 7246 (version "3.2016.0521")
32d1c06f
BW
7247 (source
7248 (origin
7249 (method url-fetch)
7250 (uri (rubygems-uri "mime-types-data" version))
7251 (sha256
7252 (base32
f49511db 7253 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
32d1c06f
BW
7254 (build-system ruby-build-system)
7255 (native-inputs
7256 `(("ruby-hoe" ,ruby-hoe)))
7257 (synopsis "Registry for information about MIME media type definitions")
7258 (description
7259 "@code{mime-types-data} provides a registry for information about
7260Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
7261be used with the Ruby mime-types library or other software to determine
7262defined filename extensions for MIME types, or to use filename extensions to
7263look up the likely MIME type definitions.")
7264 (home-page "https://github.com/mime-types/mime-types-data/")
7265 (license license:expat)))
7266
d39b606c
BW
7267(define-public ruby-mime-types
7268 (package
7269 (name "ruby-mime-types")
803bcc81 7270 (version "3.1")
d39b606c
BW
7271 (source
7272 (origin
7273 (method url-fetch)
7274 (uri (rubygems-uri "mime-types" version))
7275 (sha256
7276 (base32
803bcc81 7277 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
d39b606c
BW
7278 (build-system ruby-build-system)
7279 (propagated-inputs
7280 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
7281 (native-inputs
7282 `(("ruby-hoe" ,ruby-hoe)
7283 ("ruby-fivemat" ,ruby-fivemat)
7284 ("ruby-minitest-focus" ,ruby-minitest-focus)
7285 ("ruby-minitest-rg" ,ruby-minitest-rg)
803bcc81
BW
7286 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
7287 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
d39b606c
BW
7288 (synopsis "Library and registry for MIME content type definitions")
7289 (description "The mime-types library provides a library and registry for
7290information about Multipurpose Internet Mail Extensions (MIME) content type
7291definitions. It can be used to determine defined filename extensions for MIME
7292types, or to use filename extensions to look up the likely MIME type
7293definitions.")
7294 (home-page "https://github.com/mime-types/ruby-mime-types")
7295 (license license:expat)))
7296
eb5e0bd9
BW
7297(define-public ruby-fivemat
7298 (package
7299 (name "ruby-fivemat")
c664ebcc 7300 (version "1.3.7")
eb5e0bd9
BW
7301 (source
7302 (origin
7303 (method url-fetch)
7304 (uri (rubygems-uri "fivemat" version))
7305 (sha256
7306 (base32
c664ebcc 7307 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
eb5e0bd9
BW
7308 (build-system ruby-build-system)
7309 (arguments
7310 `(#:tests? #f)) ; no tests
7311 (synopsis "Each test file given its own line of dots")
7312 (description
7313 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
7314its own line of dots during testing. It aims to provide test output that is
7315neither too verbose nor too minimal.")
7316 (home-page "https://github.com/tpope/fivemat")
7317 (license license:expat)))
7318
4fea500b
BW
7319(define-public ruby-sqlite3
7320 (package
7321 (name "ruby-sqlite3")
e7cdba61 7322 (version "1.4.2")
4fea500b
BW
7323 (source
7324 (origin
7325 (method url-fetch)
7326 (uri (rubygems-uri "sqlite3" version))
7327 (sha256
7328 (base32
e7cdba61 7329 "0lja01cp9xd5m6vmx99zwn4r7s97r1w5cb76gqd8xhbm1wxyzf78"))))
4fea500b
BW
7330 (build-system ruby-build-system)
7331 (arguments
7332 `(#:phases
7333 (modify-phases %standard-phases
7334 (add-before 'check 'add-gemtest-file
7335 ;; This file exists in the repository but is not distributed.
9923d5a4 7336 (lambda _ (invoke "touch" ".gemtest"))))))
4fea500b
BW
7337 (inputs
7338 `(("sqlite" ,sqlite)))
7339 (native-inputs
7340 `(("ruby-hoe" ,ruby-hoe)
7341 ("ruby-rake-compiler" ,ruby-rake-compiler)
7342 ("ruby-mini-portile" ,ruby-mini-portile)))
7343 (synopsis "Interface with SQLite3 databases")
7344 (description
7345 "This module allows Ruby programs to interface with the SQLite3 database
7346engine.")
7347 (home-page
7348 "https://github.com/sparklemotion/sqlite3-ruby")
7349 (license license:bsd-3)))
7350
4dfa39cc
BW
7351(define-public ruby-shoulda-context
7352 (package
7353 (name "ruby-shoulda-context")
e7d1d472 7354 (version "1.2.2")
4dfa39cc
BW
7355 (source
7356 (origin
7357 (method url-fetch)
7358 (uri (rubygems-uri "shoulda-context" version))
7359 (sha256
7360 (base32
e7d1d472 7361 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
4dfa39cc
BW
7362 (build-system ruby-build-system)
7363 (arguments
7364 `(#:phases
7365 (modify-phases %standard-phases
7366 (replace 'check
7367 (lambda _
7368 ;; Do not run tests to avoid circular dependence with rails.
7369 ;; Instead just import the library to test.
9923d5a4 7370 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
4dfa39cc
BW
7371 (synopsis "Test::Unit context framework extracted from Shoulda")
7372 (description
7373 "@code{shoulda-context} is the context framework extracted from Shoulda.
7374Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
7375context, setup, and should blocks combine to produce natural test method
7376names.")
7377 (home-page "https://github.com/thoughtbot/shoulda-context")
7378 (license license:expat)))
7379
e4fea008
BW
7380(define-public ruby-shoulda-matchers
7381 (package
7382 (name "ruby-shoulda-matchers")
d1c1f368 7383 (version "3.1.2")
e4fea008
BW
7384 (source
7385 (origin
7386 (method url-fetch)
7387 (uri (rubygems-uri "shoulda-matchers" version))
7388 (sha256
7389 (base32
d1c1f368 7390 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
e4fea008
BW
7391 (build-system ruby-build-system)
7392 (arguments
7393 `(#:phases
7394 (modify-phases %standard-phases
e4fea008
BW
7395 (replace 'check
7396 (lambda _
7397 ;; Do not run tests to avoid circular dependence with rails. Instead
7398 ;; just import the library to test.
9923d5a4 7399 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
e4fea008
BW
7400 (propagated-inputs
7401 `(("ruby-activesupport" ,ruby-activesupport)))
7402 (synopsis "Collection of testing matchers extracted from Shoulda")
7403 (description
7404 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
7405test common Rails functionality. These tests would otherwise be much longer,
7406more complex, and error-prone.")
7407 (home-page "https://github.com/thoughtbot/shoulda-matchers")
7408 (license license:expat)))
7409
3885c58b
BW
7410(define-public ruby-shoulda-matchers-2
7411 (package
7412 (inherit ruby-shoulda-matchers)
7413 (version "2.8.0")
7414 (source (origin
7415 (method url-fetch)
7416 (uri (rubygems-uri "shoulda-matchers" version))
7417 (sha256
7418 (base32
7419 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
7420
6f390716
BW
7421(define-public ruby-shoulda
7422 (package
7423 (name "ruby-shoulda")
7424 (version "3.5.0")
7425 (source
7426 (origin
7427 (method url-fetch)
7428 (uri (rubygems-uri "shoulda" version))
7429 (sha256
7430 (base32
7431 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
7432 (build-system ruby-build-system)
7433 (arguments
7434 `(#:phases
7435 (modify-phases %standard-phases
7436 (replace 'check
7437 ;; Don't run tests to avoid circular dependence with rails. Instead
7438 ;; just import the library to test.
9923d5a4 7439 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
6f390716
BW
7440 (propagated-inputs
7441 `(("ruby-shoulda-context" ,ruby-shoulda-context)
7442 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
7443 (synopsis "Context framework and matchers for testing")
7444 (description
7445 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
7446@code{shoulda-matchers} providing tools for writing tests.")
7447 (home-page "https://github.com/thoughtbot/shoulda")
7448 (license license:expat)))
7449
3b44bcdf
BW
7450(define-public ruby-unf
7451 (package
7452 (name "ruby-unf")
7453 (version "0.1.4")
7454 (source
7455 (origin
7456 (method url-fetch)
7457 (uri (rubygems-uri "unf" version))
7458 (sha256
7459 (base32
7460 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
7461 (build-system ruby-build-system)
7462 (arguments
7463 `(#:phases
7464 (modify-phases %standard-phases
7465 (add-before 'check 'add-dependency-to-bundler
7466 (lambda _
7467 ;; test-unit is required but not provided by the bundler
7468 ;; environment. This is fixed in the upstream repository but fix
7469 ;; has not been released.
7470 (substitute* "Gemfile"
7471 (("^gemspec") "gem 'test-unit'\ngemspec"))
7472 #t)))))
7473 (propagated-inputs
7474 `(("ruby-unf-ext" ,ruby-unf-ext)))
7475 (native-inputs
7476 `(("ruby-shoulda" ,ruby-shoulda)
7477 ("bundler" ,bundler)
7478 ("ruby-test-unit" ,ruby-test-unit)))
7479 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
7480 (description
7481 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
7482support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
7483@code{java.text.Normalizer} on JRuby.")
7484 (home-page "https://github.com/knu/ruby-unf")
7485 (license license:bsd-2)))
7486
e32c99d2
CB
7487(define-public ruby-warden
7488 (package
7489 (name "ruby-warden")
7490 (version "1.2.8")
7491 (source
7492 (origin
7493 (method url-fetch)
7494 (uri (rubygems-uri "warden" version))
7495 (sha256
7496 (base32
7497 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
7498 (build-system ruby-build-system)
7499 (arguments
7500 '(#:tests? #f)) ; No included tests
7501 (propagated-inputs
7502 `(("ruby-rack" ,ruby-rack)))
7503 (synopsis "Rack middleware providing authentication")
7504 (description
7505 "Warden is a Rack-based middleware that provides a mechanism for
7506authentication in Ruby web applications.")
7507 (home-page "https://github.com/wardencommunity/warden")
7508 (license license:expat)))
7509
e42eecdb
CB
7510(define-public ruby-warden-oauth2
7511 (package
7512 (name "ruby-warden-oauth2")
7513 (version "0.0.1")
7514 (source
7515 (origin
7516 (method url-fetch)
7517 (uri (rubygems-uri "warden-oauth2" version))
7518 (sha256
7519 (base32
7520 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
7521 (build-system ruby-build-system)
7522 (arguments
7523 '(#:test-target "spec"
7524 #:phases
7525 (modify-phases %standard-phases
7526 (add-after 'unpack 'remove-unnecessary-dependencies
7527 (lambda _
7528 (substitute* "Gemfile"
7529 ;; All of these gems relate to development, and are unnecessary
7530 ;; when running the tests
7531 (("gem 'guard-bundler'") "")
7532 (("gem 'guard'") "")
7533 (("gem 'guard-rspec'") "")
7534 (("gem 'rb-fsevent'") "")
7535 (("gem 'pry'") "")
7536 (("gem 'growl'") ""))
7537 #t))
7538 ;; The test suite doesn't work with rspec@2, and this is incompatible
7539 ;; with the current version of Rake, so invoke Rspec directly
7540 (replace 'check
7541 (lambda* (#:key tests? #:allow-other-keys)
7542 (when tests?
7543 (invoke "bundle" "exec" "rspec"))
7544 #t)))))
7545 (propagated-inputs
7546 `(("ruby-warden" ,ruby-warden)))
7547 (native-inputs
7548 `(("bundler" ,bundler)
7549 ("ruby-rspec" ,ruby-rspec-2)
7550 ("ruby-rack-test" ,ruby-rack-test)))
7551 (synopsis "OAuth 2.0 strategies for Warden")
7552 (description
7553 "This library extends Warden to support OAuth 2.0 authorized API
7554requests.")
7555 (home-page "https://github.com/opperator/warden-oauth2")
7556 (license license:expat)))
7557
8c7ae384
CB
7558(define-public ruby-webmock-2
7559 (package
7560 (name "ruby-webmock")
7561 (version "2.3.2")
7562 (source
7563 (origin
7564 (method url-fetch)
7565 (uri (rubygems-uri "webmock" version))
7566 (sha256
7567 (base32
7568 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))
7569 (build-system ruby-build-system)
7570 (native-inputs
7571 `(("bundler" ,bundler)
7572 ("ruby-rspec" ,ruby-rspec)))
7573 (propagated-inputs
7574 `(("ruby-addressable" ,ruby-addressable)
7575 ("ruby-crack" ,ruby-crack)
7576 ("ruby-hashdiff" ,ruby-hashdiff)))
7577 (synopsis "Allows stubbing and setting expectations on HTTP requests")
7578 (description
7579 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
7580requests. This is useful when testing software.")
7581 (home-page "https://github.com/bblimke/webmock")
7582 (license license:expat)))
7583
d8c189ed
CB
7584(define-public ruby-unicode-display-width
7585 (package
7586 (name "ruby-unicode-display-width")
216ccced 7587 (version "1.6.0")
d8c189ed
CB
7588 (source
7589 (origin
7590 (method url-fetch)
7591 (uri (rubygems-uri "unicode-display_width" version))
7592 (sha256
7593 (base32
216ccced 7594 "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w"))))
d8c189ed
CB
7595 (build-system ruby-build-system)
7596 (arguments
7597 '(;; Test data not included.
7598 #:tests? #f))
7599 (synopsis "Determine the monospace display width of Ruby strings")
7600 (description
7601 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
7602display width of strings in Ruby.")
7603 (home-page "https://github.com/janlelis/unicode-display_width")
7604 (license license:expat)))
7605
6120589f
CB
7606;; There is another gem called 'ruby-version' so we use an underscore in this
7607;; name
7608(define-public ruby_version
7609 (package
7610 (name "ruby_version")
1097fdbe 7611 (version "1.0.2")
6120589f
CB
7612 (source
7613 (origin
7614 (method url-fetch)
7615 (uri (rubygems-uri "ruby_version" version))
7616 (sha256
7617 (base32
1097fdbe 7618 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
6120589f
CB
7619 (build-system ruby-build-system)
7620 (arguments
1097fdbe 7621 `(#:phases
6120589f
CB
7622 (modify-phases %standard-phases
7623 (add-before 'check 'fix-dependencies
7624 (lambda _
7625 ;; Remove the Gemfile.lock, as we want to use Guix packages at
7626 ;; whatever versions.
7627 (delete-file "Gemfile.lock")
1097fdbe
MC
7628 ;; Remove the included gem files as they unnecessary.
7629 (delete-file-recursively "pkg/")
7630 ;; Accept any version of rake, rdoc and rspec
6120589f 7631 (substitute* "ruby_version.gemspec"
6120589f 7632 (("%q<rake.*") "%q<rake>)\n")
1097fdbe 7633 (("%q<rdoc.*") "%q<rdoc>)\n")
6120589f 7634 (("%q<rspec.*") "%q<rspec>)\n"))
1097fdbe 7635 ;; Do not use bundler.
6120589f 7636 (substitute* "Rakefile"
1097fdbe 7637 (("Bundler\\.setup.*") "nil\n"))
6120589f
CB
7638 #t)))))
7639 (native-inputs
1097fdbe
MC
7640 `(("ruby-rdoc" ,ruby-rdoc)
7641 ("ruby-rspec" ,ruby-rspec)
7642 ("ruby-rubygems-tasks", ruby-rubygems-tasks)))
6120589f 7643 (synopsis "Ruby library to help check the Ruby version")
1097fdbe 7644 (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify
6120589f
CB
7645checking for the right Ruby version in software.")
7646 (home-page "https://github.com/janlelis/ruby_version")
7647 (license license:expat)))
7648
a229acff
CB
7649(define-public ruby-websocket-driver
7650 (package
7651 (name "ruby-websocket-driver")
9d1cf6d4 7652 (version "0.7.1")
a229acff
CB
7653 (source
7654 (origin
7655 (method url-fetch)
7656 (uri (rubygems-uri "websocket-driver" version))
7657 (sha256
9d1cf6d4 7658 (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2"))))
a229acff
CB
7659 (build-system ruby-build-system)
7660 (arguments
9d1cf6d4 7661 '(#:tests? #f)) ; no included tests
a229acff
CB
7662 (propagated-inputs
7663 `(("ruby-websocket-extensions" ,ruby-websocket-extensions)))
7664 (synopsis "WebSocket protocol handler with pluggable I/O")
7665 (description
7666 "@code{websocket-driver} provides a complete implementation of the
7667WebSocket protocols that can be hooked up to any TCP library")
7668 (home-page "https://github.com/faye/websocket-driver-ruby")
7669 (license license:expat)))
7670
52b015a9
CB
7671(define-public ruby-websocket-extensions
7672 (package
7673 (name "ruby-websocket-extensions")
7674 (version "0.1.3")
7675 (source
7676 (origin
7677 (method url-fetch)
7678 (uri (rubygems-uri "websocket-extensions" version))
7679 (sha256
7680 (base32
7681 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
7682 (build-system ruby-build-system)
7683 (arguments
7684 '(;; No included tests
7685 #:tests? #f))
7686 (synopsis "Generic extension manager for WebSocket connections")
7687 (description
7688 "@code{websocket-extensions} provides a container for registering
7689extension plugins.")
7690 (home-page "https://github.com/faye/websocket-extensions-ruby")
7691 (license license:expat)))
7692
5799aadd
BW
7693(define-public ruby-domain-name
7694 (package
7695 (name "ruby-domain-name")
222999c9 7696 (version "0.5.20180417")
5799aadd
BW
7697 (source
7698 (origin
7699 (method url-fetch)
7700 (uri (rubygems-uri "domain_name" version))
7701 (sha256
7702 (base32
222999c9 7703 "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v"))))
5799aadd
BW
7704 (build-system ruby-build-system)
7705 (arguments
7706 `(#:phases
7707 (modify-phases %standard-phases
7708 (add-before 'check 'fix-versions
7709 (lambda _
7710 ;; Fix NameError that appears to already be fixed upstream.
7711 (substitute* "Rakefile"
7712 (("DomainName::VERSION")
7713 "Bundler::GemHelper.gemspec.version"))
7714 ;; Loosen unnecessarily strict test-unit version specification.
7715 (substitute* "domain_name.gemspec"
71596c3c 7716 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
5799aadd
BW
7717 #t)))))
7718 (propagated-inputs
7719 `(("ruby-unf" ,ruby-unf)))
7720 (native-inputs
7721 `(("ruby-shoulda" ,ruby-shoulda)
7722 ("bundler" ,bundler)
7723 ("ruby-test-unit" ,ruby-test-unit)))
7724 (synopsis "Domain name manipulation library")
7725 (description
7726 "@code{domain_name} is a Domain name manipulation library. It parses a
7727domain name ready for extracting the registered domain and TLD (Top Level
7728Domain). It can also be used for cookie domain validation based on the Public
7729Suffix List.")
7730 (home-page "https://github.com/knu/ruby-domain_name")
7731 (license license:bsd-2)))
7732
d114ceeb
BW
7733(define-public ruby-http-cookie
7734 (package
7735 (name "ruby-http-cookie")
2a2eb07d 7736 (version "1.0.3")
d114ceeb
BW
7737 (source
7738 (origin
7739 (method url-fetch)
7740 (uri (rubygems-uri "http-cookie" version))
7741 (sha256
7742 (base32
2a2eb07d 7743 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
d114ceeb
BW
7744 (build-system ruby-build-system)
7745 (arguments
7746 `(#:phases
7747 (modify-phases %standard-phases
7748 (add-before 'check 'add-dependency-to-bundler
7749 (lambda _
7750 ;; Fix NameError
7751 (substitute* "Rakefile"
7752 (("HTTP::Cookie::VERSION")
7753 "Bundler::GemHelper.gemspec.version"))
7754 #t)))))
7755 (propagated-inputs
7756 `(("ruby-domain-name" ,ruby-domain-name)))
7757 (native-inputs
7758 `(("rubysimplecov" ,ruby-simplecov)
7759 ("bundler" ,bundler)
7760 ("ruby-sqlite3" ,ruby-sqlite3)
7761 ("ruby-test-unit" ,ruby-test-unit)))
7762 (synopsis "Handle HTTP Cookies based on RFC 6265")
7763 (description
7764 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
7765RFC 6265. It has been designed with security, standards compliance and
7766compatibility in mind, to behave just the same as today's major web browsers.
7767It has built-in support for the legacy @code{cookies.txt} and
7768@code{cookies.sqlite} formats of Mozilla Firefox.")
7769 (home-page "https://github.com/sparklemotion/http-cookie")
7770 (license license:expat)))
7771
1c8e6fd3
CB
7772(define-public ruby-httpclient
7773 (package
7774 (name "ruby-httpclient")
7775 (version "2.8.3")
7776 (source
7777 (origin
7778 (method url-fetch)
7779 (uri (rubygems-uri "httpclient" version))
7780 (sha256
7781 (base32
7782 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
7783 (build-system ruby-build-system)
7784 (arguments
7785 '(;; TODO: Some tests currently fail
7786 ;; ------
7787 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
7788 ;; 2 omissions, 0 notifications
7789 ;; 91.866% passed
7790 ;; ------
7791 ;; 6.49 tests/s, 22.41 assertions/s
7792 #:tests? #f
7793 #:phases
7794 (modify-phases %standard-phases
7795 (replace 'check
7796 (lambda* (#:key tests? #:allow-other-keys)
7797 (if tests?
9923d5a4
TGR
7798 (invoke "ruby"
7799 "-Ilib"
7800 "test/runner.rb")
0076f5a9 7801 #t))))))
1c8e6fd3
CB
7802 (native-inputs
7803 `(("ruby-rack" ,ruby-rack)))
7804 (synopsis
7805 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
7806 (description
7807 "The @code{httpclient} ruby library provides functionality related to
7808HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
7809Cookie, multithreading and authentication (digest, NTLM) support.
7810
7811Also provided is a @command{httpclient} command, which can perform HTTP
7812requests either using arguments or with an interactive prompt.")
7813 (home-page "https://github.com/nahi/httpclient")
7814 (license license:ruby)))
7815
7d3a1a2d
BW
7816(define-public ruby-ansi
7817 (package
7818 (name "ruby-ansi")
7819 (version "1.5.0")
7820 (source
7821 (origin
3d30c332 7822 (method git-fetch)
7d3a1a2d 7823 ;; Fetch from GitHub as the gem does not contain testing code.
3d30c332
EF
7824 (uri (git-reference
7825 (url "https://github.com/rubyworks/ansi")
7826 (commit version)))
7827 (file-name (git-file-name name version))
7d3a1a2d
BW
7828 (sha256
7829 (base32
3d30c332 7830 "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5"))))
7d3a1a2d
BW
7831 (build-system ruby-build-system)
7832 (arguments
7833 `(#:phases
7834 (modify-phases %standard-phases
7835 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
7836 ;; cycle ansi, qed, ansi. Instead simply test that the library can
7837 ;; be require'd.
7838 (replace 'check
7839 (lambda _
9923d5a4 7840 (invoke "ruby" "-Ilib" "-r" "ansi")))
0899352f
MB
7841 (add-before 'validate-runpath 'replace-broken-symlink
7842 (lambda* (#:key outputs #:allow-other-keys)
7843 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
7844 (file (string-append
7845 out "/lib/ruby/vendor_ruby/gems/ansi-"
7846 ,version "/lib/ansi.yml")))
0899352f
MB
7847 ;; XXX: This symlink is broken since ruby 2.4.
7848 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
7849 (delete-file file)
7850 (symlink "../.index" file)
7851 #t))))))
7d3a1a2d
BW
7852 (synopsis "ANSI escape code related libraries")
7853 (description
7854 "This package is a collection of ANSI escape code related libraries
7855enabling ANSI colorization and stylization of console output. Included in the
7856library are the @code{Code} module, which defines ANSI codes as constants and
7857methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
7858@code{ProgressBar}, and a @code{String} subclass. The library also includes a
7859@code{Terminal} module which provides information about the current output
7860device.")
3d30c332 7861 (home-page "https://rubyworks.github.io/ansi/")
7d3a1a2d 7862 (license license:bsd-2)))
7c033c46
BW
7863
7864(define-public ruby-systemu
7865 (package
7866 (name "ruby-systemu")
7867 (version "2.6.5")
7868 (source
7869 (origin
7870 (method url-fetch)
7871 (uri (rubygems-uri "systemu" version))
7872 (sha256
7873 (base32
7874 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
7875 (build-system ruby-build-system)
7876 (arguments
7877 `(#:phases
7878 (modify-phases %standard-phases
7879 (add-before 'check 'set-version
7880 (lambda _
7881 (setenv "VERSION" ,version)
7882 #t)))))
7883 (synopsis "Capture of stdout/stderr and handling of child processes")
7884 (description
7885 "Systemu can be used on any platform to return status, stdout, and stderr
7886of any command. Unlike other methods like @code{open3} and @code{popen4}
7887there is no danger of full pipes or threading issues hanging your process or
7888subprocess.")
7889 (home-page "https://github.com/ahoward/systemu")
7890 (license license:ruby)))
3d84a99e
BW
7891
7892(define-public ruby-bio-commandeer
7893 (package
7894 (name "ruby-bio-commandeer")
37b08547 7895 (version "0.4.0")
3d84a99e
BW
7896 (source
7897 (origin
7898 (method url-fetch)
7899 (uri (rubygems-uri "bio-commandeer" version))
7900 (sha256
7901 (base32
37b08547 7902 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
3d84a99e
BW
7903 (build-system ruby-build-system)
7904 (arguments
7905 `(#:phases
7906 (modify-phases %standard-phases
7907 (replace 'check
7908 ;; Run test without calling 'rake' so that jeweler is
7909 ;; not required as an input.
7910 (lambda _
9923d5a4 7911 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
3d84a99e
BW
7912 (propagated-inputs
7913 `(("ruby-bio-logger" ,ruby-bio-logger)
7914 ("ruby-systemu" ,ruby-systemu)))
7915 (native-inputs
7916 `(("bundler" ,bundler)
7917 ("ruby-rspec" ,ruby-rspec)))
7918 (synopsis "Simplified running of shell commands from within Ruby")
7919 (description
7920 "Bio-commandeer provides an opinionated method of running shell commands
7921from within Ruby. The advantage of bio-commandeer over other methods of
7922running external commands is that when something goes wrong, messages printed
7923to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
7924detail to ease debugging.")
7bf837fd 7925 (home-page "https://github.com/wwood/bioruby-commandeer")
3d84a99e 7926 (license license:expat)))
7c8131c7
BW
7927
7928(define-public ruby-rubytest
7929 (package
7930 (name "ruby-rubytest")
7931 (version "0.8.1")
7932 (source
7933 (origin
7934 (method url-fetch)
7935 (uri (rubygems-uri "rubytest" version))
7936 (sha256
7937 (base32
7938 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
7939 (build-system ruby-build-system)
7940 (arguments
7941 ;; Disable regular testing to break the cycle rubytest, qed, brass,
7942 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
7943 ;; simply test that the library can be require'd.
7944 `(#:phases
7945 (modify-phases %standard-phases
7946 (replace 'check
7947 (lambda _
9923d5a4 7948 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
7c8131c7
BW
7949 (propagated-inputs
7950 `(("ruby-ansi" ,ruby-ansi)))
7951 (synopsis "Universal test harness for Ruby")
7952 (description
7953 "Rubytest is a testing meta-framework for Ruby. It can handle any
7954compliant test framework and can run tests from multiple frameworks in a
7955single pass.")
2f3800e5 7956 (home-page "https://rubyworks.github.io/rubytest")
7c8131c7 7957 (license license:bsd-2)))
90fcedf2
BW
7958
7959(define-public ruby-brass
7960 (package
7961 (name "ruby-brass")
7962 (version "1.2.1")
7963 (source
7964 (origin
7965 (method url-fetch)
7966 (uri (rubygems-uri "brass" version))
7967 (sha256
7968 (base32
7969 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
7970 (build-system ruby-build-system)
7971 (arguments
7972 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
7973 ;; Instead simply test that the library can be require'd.
7974 `(#:phases
7975 (modify-phases %standard-phases
7976 (replace 'check
7977 (lambda _
9923d5a4 7978 (invoke "ruby" "-Ilib" "-r" "brass"))))))
90fcedf2
BW
7979 (synopsis "Basic foundational assertions framework")
7980 (description
7981 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
7982foundational assertions framework for other assertion and test frameworks to
7983make use of.")
2f3800e5 7984 (home-page "https://rubyworks.github.io/brass")
90fcedf2 7985 (license license:bsd-2)))
120fc74b
BW
7986
7987(define-public ruby-qed
7988 (package
7989 (name "ruby-qed")
7990 (version "2.9.2")
7991 (source
7992 (origin
7993 (method url-fetch)
7994 (uri (rubygems-uri "qed" version))
7995 (sha256
7996 (base32
7997 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
7998 (build-system ruby-build-system)
7999 (arguments
8000 ;; Disable testing to break the cycle qed, ansi, qed, among others.
8001 ;; Instead simply test that the executable runs using --copyright.
8002 `(#:phases
8003 (modify-phases %standard-phases
8004 (replace 'check
8005 (lambda _
9923d5a4 8006 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
120fc74b
BW
8007 (propagated-inputs
8008 `(("ruby-ansi" ,ruby-ansi)
8009 ("ruby-brass" ,ruby-brass)))
8010 (synopsis "Test framework utilizing literate programming techniques")
8011 (description
8012 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
8013@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
8014Development} (BDD) utilizing Literate Programming techniques. QED sits
8015somewhere between lower-level testing tools like @code{Test::Unit} and
8016requirement specifications systems like Cucumber.")
2f3800e5 8017 (home-page "https://rubyworks.github.io/qed")
120fc74b 8018 (license license:bsd-2)))
9273ee8f 8019
dbbe88d3
CB
8020(define-public ruby-que
8021 (package
8022 (name "ruby-que")
8023 (version "1.0.0.beta3")
8024 (source
8025 (origin
8026 (method url-fetch)
8027 (uri (rubygems-uri "que" version))
8028 (sha256
8029 (base32
8030 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
8031 (build-system ruby-build-system)
8032 (arguments
8033 '(#:tests? #f)) ; No included tests
8034 (synopsis "Job queue using PostgreSQL written in Ruby")
8035 (description
8036 "This package provides a job queue that uses PostgreSQL for storing jobs
8037and locking between worker processes.")
8038 (home-page "https://github.com/chanks/que")
8039 (license license:expat)))
8040
9273ee8f
BW
8041(define-public ruby-ae
8042 (package
8043 (name "ruby-ae")
8044 (version "1.8.2")
8045 (source
8046 (origin
11d1b318 8047 (method git-fetch)
9273ee8f 8048 ;; Fetch from github so tests are included.
11d1b318
EF
8049 (uri (git-reference
8050 (url "https://github.com/rubyworks/ae")
8051 (commit version)))
8052 (file-name (git-file-name name version))
9273ee8f
BW
8053 (sha256
8054 (base32
11d1b318 8055 "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp"))))
9273ee8f
BW
8056 (build-system ruby-build-system)
8057 (arguments
8058 `(#:phases
8059 (modify-phases %standard-phases
8060 (replace 'check
9923d5a4 8061 (lambda _ (invoke "qed")))
de6f6efd
MB
8062 (add-before 'validate-runpath 'replace-broken-symlink
8063 (lambda* (#:key outputs #:allow-other-keys)
8064 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
8065 (file (string-append
8066 out "/lib/ruby/vendor_ruby/gems/ae-"
8067 ,version "/lib/ae.yml")))
de6f6efd
MB
8068 ;; XXX: This symlink is broken since ruby 2.4.
8069 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
8070 (delete-file file)
8071 (symlink "../.index" file)
8072 #t))))))
9273ee8f
BW
8073 (propagated-inputs
8074 `(("ruby-ansi" ,ruby-ansi)))
8075 (native-inputs
8076 `(("ruby-qed" ,ruby-qed)))
8077 (synopsis "Assertions library")
8078 (description
8079 "Assertive Expressive (AE) is an assertions library specifically designed
8080for reuse by other test frameworks.")
11d1b318 8081 (home-page "https://rubyworks.github.io/ae/")
9273ee8f 8082 (license license:bsd-2)))
78bb471f
BW
8083
8084(define-public ruby-lemon
8085 (package
8086 (name "ruby-lemon")
8087 (version "0.9.1")
8088 (source
8089 (origin
8090 (method url-fetch)
8091 (uri (rubygems-uri "lemon" version))
8092 (sha256
8093 (base32
8094 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
8095 (build-system ruby-build-system)
8096 (arguments
8097 `(#:phases
8098 (modify-phases %standard-phases
9923d5a4 8099 (replace 'check (lambda _ (invoke "qed"))))))
78bb471f
BW
8100 (propagated-inputs
8101 `(("ruby-ae" ,ruby-ae)
8102 ("ruby-ansi" ,ruby-ansi)
8103 ("ruby-rubytest" ,ruby-rubytest)))
8104 (native-inputs
8105 `(("ruby-qed" ,ruby-qed)))
8106 (synopsis "Test framework correlating code structure and test unit")
8107 (description
8108 "Lemon is a unit testing framework that enforces highly formal
8109case-to-class and unit-to-method test construction. This enforcement can help
8110focus concern on individual units of behavior.")
2f3800e5 8111 (home-page "https://rubyworks.github.io/lemon")
78bb471f 8112 (license license:bsd-2)))
0832804e
BW
8113
8114(define-public ruby-rubytest-cli
8115 (package
8116 (name "ruby-rubytest-cli")
8117 (version "0.2.0")
8118 (source
8119 (origin
8120 (method url-fetch)
8121 (uri (rubygems-uri "rubytest-cli" version))
8122 (sha256
8123 (base32
8124 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
8125 (build-system ruby-build-system)
8126 (arguments
8127 `(#:tests? #f)) ; no tests
8128 (propagated-inputs
8129 `(("ruby-ansi" ,ruby-ansi)
8130 ("ruby-rubytest" ,ruby-rubytest)))
8131 (synopsis "Command-line interface for rubytest")
8132 (description
8133 "Rubytest CLI is a command-line interface for running tests for
8134Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
2f3800e5 8135 (home-page "https://rubyworks.github.io/rubytest-cli")
0832804e 8136 (license license:bsd-2)))
72ccbfe3
BW
8137
8138(define-public ruby-hashery
8139 (package
8140 (name "ruby-hashery")
cba96208 8141 (version "2.1.2")
72ccbfe3
BW
8142 (source
8143 (origin
8144 (method url-fetch)
8145 (uri (rubygems-uri "hashery" version))
8146 (sha256
8147 (base32
cba96208 8148 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
72ccbfe3
BW
8149 (build-system ruby-build-system)
8150 (arguments
8151 `(#:phases
8152 (modify-phases %standard-phases
8153 (replace 'check
8154 (lambda _
9923d5a4
TGR
8155 (invoke "qed")
8156 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
72ccbfe3
BW
8157 (native-inputs
8158 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
8159 ("ruby-qed" ,ruby-qed)
8160 ("ruby-lemon" ,ruby-lemon)))
8161 (synopsis "Hash-like classes with extra features")
8162 (description
8163 "The Hashery is a tight collection of @code{Hash}-like classes.
8164Included are the auto-sorting @code{Dictionary} class, the efficient
8165@code{LRUHash}, the flexible @code{OpenHash} and the convenient
8166@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
8167defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
8168standard @code{Hash} making it possible to subclass and augment to fit any
8169specific use case.")
2f3800e5 8170 (home-page "https://rubyworks.github.io/hashery")
72ccbfe3 8171 (license license:bsd-2)))
1f1d71e0
BW
8172
8173(define-public ruby-rc4
8174 (package
8175 (name "ruby-rc4")
8176 (version "0.1.5")
8177 (source
8178 (origin
8179 (method url-fetch)
8180 (uri (rubygems-uri "ruby-rc4" version))
8181 (sha256
8182 (base32
8183 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
8184 (build-system ruby-build-system)
8185 (arguments
8186 `(#:phases
8187 (modify-phases %standard-phases
8188 (replace 'check
8189 (lambda _
9923d5a4 8190 (invoke "rspec" "spec/rc4_spec.rb"))))))
1f1d71e0
BW
8191 (native-inputs
8192 `(("ruby-rspec" ,ruby-rspec-2)))
8193 (synopsis "Implementation of the RC4 algorithm")
8194 (description
8195 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
8196 (home-page "https://github.com/caiges/Ruby-RC4")
8197 (license license:expat)))
f3e085a8
BW
8198
8199(define-public ruby-afm
8200 (package
8201 (name "ruby-afm")
8202 (version "0.2.2")
8203 (source
8204 (origin
8205 (method url-fetch)
8206 (uri (rubygems-uri "afm" version))
8207 (sha256
8208 (base32
8209 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
8210 (build-system ruby-build-system)
8211 (native-inputs
8212 `(("bundler" ,bundler)))
8213 (synopsis "Read Adobe Font Metrics (afm) files")
8214 (description
8215 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
8216files and use the data therein.")
7bf837fd 8217 (home-page "https://github.com/halfbyte/afm")
f3e085a8 8218 (license license:expat)))
acb6be42
BW
8219
8220(define-public ruby-ascii85
8221 (package
8222 (name "ruby-ascii85")
5854082a 8223 (version "1.0.3")
acb6be42
BW
8224 (source
8225 (origin
8226 (method url-fetch)
8227 (uri (rubygems-uri "Ascii85" version))
8228 (sha256
8229 (base32
5854082a 8230 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
acb6be42
BW
8231 (build-system ruby-build-system)
8232 (native-inputs
8233 `(("bundler" ,bundler)))
8234 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
8235 (description
8236 "This library provides methods to encode and decode Ascii85
8237binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
8238@dfn{Portable Document Format} (PDF) file formats.")
8239 (home-page "https://github.com/datawraith/ascii85gem")
8240 (license license:expat)))
edf8caae
BW
8241
8242(define-public ruby-ttfunk
8243 (package
8244 (name "ruby-ttfunk")
afb7a3e8 8245 (version "1.5.1")
edf8caae
BW
8246 (source
8247 (origin
4e110825 8248 (method git-fetch)
edf8caae 8249 ;; fetch from github as the gem does not contain testing code
4e110825
EF
8250 (uri (git-reference
8251 (url "https://github.com/prawnpdf/ttfunk")
8252 (commit version)))
8253 (file-name (git-file-name name version))
edf8caae
BW
8254 (sha256
8255 (base32
4e110825 8256 "0dx9891zcli0sjrslmsvrwalv86hbjbqlmbrcasnjr069v05h9v9"))))
edf8caae
BW
8257 (build-system ruby-build-system)
8258 (arguments
8259 `(#:test-target "spec"
8260 #:phases
8261 (modify-phases %standard-phases
afb7a3e8
JL
8262 (add-before 'build 'remove-ssh
8263 (lambda _
8264 ;; remove dependency on an ssh key pair that doesn't exist
8265 (substitute* "ttfunk.gemspec"
8266 (("spec.signing_key.*") ""))
8267 #t))
edf8caae
BW
8268 (add-before 'check 'remove-rubocop
8269 (lambda _
8270 ;; remove rubocop as a dependency as not needed for testing
8271 (substitute* "ttfunk.gemspec"
8272 (("spec.add_development_dependency\\('rubocop'.*") ""))
8273 (substitute* "Rakefile"
8274 (("require 'rubocop/rake_task'") "")
afb7a3e8 8275 (("RuboCop::RakeTask.new") ""))
edf8caae
BW
8276 #t)))))
8277 (native-inputs
8278 `(("ruby-rspec" ,ruby-rspec)
afb7a3e8 8279 ("ruby-yard" ,ruby-yard)
edf8caae
BW
8280 ("bundler" ,bundler)))
8281 (synopsis "Font metrics parser for the Prawn PDF generator")
8282 (description
8283 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
8284part of the Prawn PDF generator.")
8285 (home-page "https://github.com/prawnpdf/ttfunk")
8286 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
8287 ;; for details."
8288 (license (list license:gpl2 license:gpl3 license:ruby))))
cbdd428c 8289
9270298f
BW
8290(define-public ruby-puma
8291 (package
8292 (name "ruby-puma")
63755fcd 8293 (version "3.9.1")
9270298f
BW
8294 (source
8295 (origin
a6cffe6e 8296 (method git-fetch)
9270298f 8297 ;; Fetch from GitHub because distributed gem does not contain tests.
a6cffe6e
EF
8298 (uri (git-reference
8299 (url "https://github.com/puma/puma")
8300 (commit (string-append "v" version))))
8301 (file-name (git-file-name name version))
9270298f
BW
8302 (sha256
8303 (base32
a6cffe6e 8304 "1kj75k81iik3aj73pkc9ixj9rwf95ipkyma65n28m64dgw02qi1f"))))
9270298f
BW
8305 (build-system ruby-build-system)
8306 (arguments
63755fcd
BW
8307 `(#:tests? #f ; Tests require an out-dated version of minitest.
8308 #:phases
9270298f
BW
8309 (modify-phases %standard-phases
8310 (add-before 'build 'fix-gemspec
8311 (lambda _
8312 (substitute* "puma.gemspec"
8313 (("git ls-files") "find * |sort"))
8314 #t)))))
9270298f
BW
8315 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
8316 (description
8317 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
8318for Ruby/Rack applications. Puma is intended for use in both development and
8319production environments. In order to get the best throughput, it is highly
8320recommended that you use a Ruby implementation with real threads like Rubinius
8321or JRuby.")
a6cffe6e 8322 (home-page "https://puma.io/")
9270298f
BW
8323 (license license:expat)))
8324
b0813490
BW
8325(define-public ruby-hoe-git
8326 (package
8327 (name "ruby-hoe-git")
8328 (version "1.6.0")
8329 (source
8330 (origin
8331 (method url-fetch)
8332 (uri (rubygems-uri "hoe-git" version))
8333 (sha256
8334 (base32
8335 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
8336 (build-system ruby-build-system)
8337 (propagated-inputs
8338 `(("ruby-hoe" ,ruby-hoe)
8339 ("git" ,git)))
8340 (synopsis "Hoe plugins for tighter Git integration")
8341 (description
8342 "This package provides a set of Hoe plugins for tighter Git integration.
8343It provides tasks to automate release tagging and pushing and changelog
8344generation.")
7bf837fd 8345 (home-page "https://github.com/jbarnette/hoe-git")
b0813490
BW
8346 (license license:expat)))
8347
cbdd428c
BW
8348(define-public ruby-sequel
8349 (package
8350 (name "ruby-sequel")
65a7f09c 8351 (version "4.49.0")
cbdd428c
BW
8352 (source
8353 (origin
8354 (method url-fetch)
8355 (uri (rubygems-uri "sequel" version))
8356 (sha256
8357 (base32
65a7f09c 8358 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
cbdd428c
BW
8359 (build-system ruby-build-system)
8360 (arguments
8361 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
8362 (synopsis "Database toolkit for Ruby")
8363 (description "Sequel provides thread safety, connection pooling and a
8364concise DSL for constructing SQL queries and table schemas. It includes a
8365comprehensive ORM layer for mapping records to Ruby objects and handling
8366associated records.")
e2b70d90 8367 (home-page "https://sequel.jeremyevans.net")
cbdd428c 8368 (license license:expat)))
3cc78097
BW
8369
8370(define-public ruby-timecop
8371 (package
8372 (name "ruby-timecop")
3d4a5eb5 8373 (version "0.9.1")
3cc78097
BW
8374 (source
8375 (origin
8376 (method url-fetch)
8377 (uri (rubygems-uri "timecop" version))
8378 (sha256
8379 (base32
3d4a5eb5 8380 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
3cc78097
BW
8381 (build-system ruby-build-system)
8382 (arguments
8383 `(#:phases
8384 (modify-phases %standard-phases
8385 (add-before 'check 'set-check-rubylib
8386 (lambda _
8387 ;; Set RUBYLIB so timecop tests finds its own lib.
8388 (setenv "RUBYLIB" "lib")
8389 #t)))))
8390 (native-inputs
8391 `(("bundler" ,bundler)
8392 ("ruby-minitest-rg" ,ruby-minitest-rg)
8393 ("ruby-mocha" ,ruby-mocha)
8394 ("ruby-activesupport" ,ruby-activesupport)))
66e07664 8395 (synopsis "Test mocks for time-dependent functions")
3cc78097
BW
8396 (description
8397 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
8398making it easier to test time-dependent code. It provides a unified method to
8399mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
8400call.")
8401 (home-page "https://github.com/travisjeffery/timecop")
8402 (license license:expat)))
8403
dae620b8
BW
8404(define-public ruby-concurrent
8405 (package
8406 (name "ruby-concurrent")
1007640a 8407 (version "1.1.5")
dae620b8
BW
8408 (source
8409 (origin
8fcba3be 8410 (method git-fetch)
dae620b8
BW
8411 ;; Download from GitHub because the rubygems version does not contain
8412 ;; Rakefile.
8fcba3be
MB
8413 (uri (git-reference
8414 (url "https://github.com/ruby-concurrency/concurrent-ruby")
8415 (commit (string-append "v" version))))
8416 (file-name (git-file-name name version))
dae620b8
BW
8417 (sha256
8418 (base32
1007640a 8419 "193q2k47vk7qdvv9hlhmmdxgy91xl4imapyk1ijdg9vgf46knyzj"))))
dae620b8
BW
8420 (build-system ruby-build-system)
8421 (arguments
1007640a 8422 `(#:test-target "ci"
dae620b8
BW
8423 #:phases
8424 (modify-phases %standard-phases
520e89eb 8425 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
dae620b8
BW
8426 (lambda _
8427 ;; Delete extra gemspec files so 'first-gemspec' chooses the
8428 ;; correct one.
8429 (delete-file "concurrent-ruby-edge.gemspec")
8430 (delete-file "concurrent-ruby-ext.gemspec")
8431 #t))
1007640a 8432 (replace 'replace-git-ls-files
520e89eb 8433 (lambda _
1007640a
MB
8434 ;; XXX: The default substitution made by this phase is not fully
8435 ;; compatible with "git ls-files". The latter produces file names
8436 ;; such as "lib/foo", whereas ruby-build-system uses "find . [...]"
8437 ;; which gives "./lib/foo". That difference in turn breaks the
8438 ;; comparison against a glob pattern in this script.
8439 (substitute* "concurrent-ruby.gemspec"
8440 (("git ls-files") "find * -type f | sort"))
8441 #t))
8442 (add-before 'build 'remove-jar-from-gemspec
520e89eb 8443 (lambda _
1007640a
MB
8444 ;; The gemspec wants to include a JAR file that we do not build
8445 ;; nor need.
8446 (substitute* "concurrent-ruby.gemspec"
8447 (("'lib/concurrent/concurrent_ruby.jar'")
8448 ""))
8449 #t))
8450 (add-before 'build 'remove-rake_compiler_dock-dependency
8451 (lambda _
8452 ;; This library is only used when building for non-MRI targets.
8453 (substitute* "Rakefile"
8454 (("require 'rake_compiler_dock'")
8455 ""))
520e89eb 8456 #t))
9019b37f
BW
8457 (add-before 'check 'remove-timecop-dependency
8458 ;; Remove timecop-dependent tests as having timecop as a depedency
8459 ;; causes circular depedencies.
8460 (lambda _
8461 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
8462 (delete-file "spec/concurrent/scheduled_task_spec.rb")
8463 #t)))))
dae620b8
BW
8464 (native-inputs
8465 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9019b37f 8466 ("ruby-rspec" ,ruby-rspec)))
dae620b8
BW
8467 (synopsis "Concurrency tools for Ruby")
8468 (description
8469 "This library provides modern concurrency tools including agents,
8470futures, promises, thread pools, actors, supervisors, and more. It is
8471inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
8472patterns.")
8473 (home-page "http://www.concurrent-ruby.com")
8474 (license license:expat)))
2de61e34
BW
8475
8476(define-public ruby-pkg-config
8477 (package
8478 (name "ruby-pkg-config")
884a80dd 8479 (version "1.2.5")
2de61e34
BW
8480 (source
8481 (origin
8482 (method url-fetch)
8483 (uri (rubygems-uri "pkg-config" version))
8484 (sha256
8485 (base32
884a80dd 8486 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
2de61e34
BW
8487 (build-system ruby-build-system)
8488 (arguments
8489 ;; Tests require extra files not included in the gem.
8490 `(#:tests? #f))
8491 (synopsis "Detect libraries for compiling Ruby native extensions")
8492 (description
8493 "@code{pkg-config} can be used in your extconf.rb to properly detect need
8494libraries for compiling Ruby native extensions.")
8495 (home-page "https://github.com/ruby-gnome2/pkg-config")
8496 (license license:lgpl2.0+)))
6689c636
MFM
8497
8498(define-public ruby-net-http-digest-auth
8499 (package
8500 (name "ruby-net-http-digest-auth")
ba074a85 8501 (version "1.4.1")
6689c636
MFM
8502 (source
8503 (origin
8504 (method url-fetch)
8505 (uri (rubygems-uri "net-http-digest_auth" version))
8506 (sha256
8507 (base32
ba074a85 8508 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
6689c636
MFM
8509 (build-system ruby-build-system)
8510 (native-inputs
8511 `(("ruby-hoe" ,ruby-hoe)))
8512 (synopsis "RFC 2617 HTTP digest authentication library")
8513 (description
8514 "This library implements HTTP's digest authentication scheme based on
8515RFC 2617. This enables the use of the digest authentication scheme instead
8516of the more insecure basic authentication scheme.")
7bf837fd 8517 (home-page "https://github.com/drbrain/net-http-digest_auth")
6689c636 8518 (license license:expat)))
06116573 8519
8520(define-public ruby-mail
8521 (package
8522 (name "ruby-mail")
04de0cb5 8523 (version "2.6.6")
06116573 8524 (source
8525 (origin
8526 (method url-fetch)
8527 (uri (rubygems-uri "mail" version))
8528 (sha256
8529 (base32
04de0cb5 8530 "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
06116573 8531 (build-system ruby-build-system)
8532 (propagated-inputs
8533 `(("ruby-mime-types" ,ruby-mime-types)))
8534 (arguments
8535 ;; Tests require extra gems not included in the Gemfile.
8536 ;; XXX: Try enabling this for the next version with mini_mime.
8537 `(#:tests? #f))
8538 (synopsis "Mail library for Ruby")
8539 (description
8540 "Mail is an internet library for Ruby that is designed to handle email
8541generation, parsing and sending. The purpose of this library is to provide
8542a single point of access to handle all email functions, including sending
8543and receiving emails. All network type actions are done through proxy
8544methods to @code{Net::SMTP}, @code{Net::POP3} etc.
8545
8546Mail has been designed with a very simple object oriented system that
8547really opens up the email messages you are parsing, if you know what you
8548are doing, you can fiddle with every last bit of your email directly.")
8549 (home-page "https://github.com/mikel/mail")
8550 (license license:expat)))
9b4c8e1b 8551
4d372cb9
CB
8552(define-public ruby-mathn
8553 (package
8554 (name "ruby-mathn")
8555 (version "0.1.0")
8556 (source
8557 (origin
8558 (method url-fetch)
8559 (uri (rubygems-uri "mathn" version))
8560 (sha256
8561 (base32
8562 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
8563 (build-system ruby-build-system)
8564 (native-inputs
8565 `(("bundler" ,bundler)
8566 ("ruby-rake-compiler" ,ruby-rake-compiler)))
8567 (synopsis "Extends math operations for increased precision")
8568 (description
8569 "This gem makes mathematical operations more precise in Ruby and
8570integrates other mathematical standard libraries. Prior to Ruby 2.5,
8571@code{mathn} was part of the Ruby standard library.")
8572 (home-page "https://github.com/ruby/mathn")
8573 (license license:bsd-2)))
8574
9b4c8e1b
BW
8575(define-public ruby-code-statistics
8576 (package
8577 (name "ruby-code-statistics")
8578 (version "0.2.13")
8579 (source
8580 (origin
8581 (method url-fetch)
8582 (uri (rubygems-uri "code_statistics" version))
8583 (sha256
8584 (base32
8585 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
8586 (build-system ruby-build-system)
8587 (arguments
8588 `(#:tests? #f)) ; Not all test code is included in gem.
8589 (synopsis "Port of the rails 'rake stats' method")
8590 (description
8591 "This gem is a port of the rails 'rake stats' method so it can be made
8592more robust and work for non rails projects.")
8593 (home-page "http://github.com/danmayer/code_statistics")
8594 (license license:expat)))
f90c25c1
CL
8595
8596(define-public ruby-rubypants
8597 (package
8598 (name "ruby-rubypants")
8599 (version "0.6.0")
8600 (source (origin
8601 (method url-fetch)
8602 (uri (rubygems-uri "rubypants" version))
8603 (sha256
8604 (base32
8605 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
8606 (build-system ruby-build-system)
8607 (arguments
8608 '(#:tests? #f)) ; need Codecov
8609 (synopsis "Port of the smart-quotes library SmartyPants")
8610 (description
8611 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
8612original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
8613and BBEdit that easily translates plain ASCII punctuation characters into
8614smart typographic punctuation HTML entities.")
8615 (home-page "https://github.com/jmcnevin/rubypants")
8616 (license license:bsd-2)))
beb34835
CL
8617
8618(define-public ruby-org-ruby
8619 (package
8620 (name "ruby-org-ruby")
8621 (version "0.9.12")
8622 (source (origin
8623 (method url-fetch)
8624 (uri (rubygems-uri "org-ruby" version))
8625 (sha256
8626 (base32
8627 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
8628 (build-system ruby-build-system)
8629 (arguments
8630 '(#:tests? #f)) ; no rakefile
8631 (propagated-inputs
8632 `(("ruby-rubypants" ,ruby-rubypants)))
8633 (synopsis "Org-mode parser written in Ruby")
8634 (description
8635 "Org-ruby is an org-mode parser written in Ruby. The most significant
8636thing this library does today is convert org-mode files to HTML or Textile or
8637Markdown.")
8638 (home-page "https://github.com/wallyqs/org-ruby")
8639 (license license:expat)))
670ee20a
BW
8640
8641(define-public ruby-rake
8642 (package
8643 (name "ruby-rake")
c997403a 8644 (version "13.0.1")
670ee20a
BW
8645 (source
8646 (origin
8647 (method url-fetch)
8648 (uri (rubygems-uri "rake" version))
8649 (sha256
8650 (base32
c997403a 8651 "0w6qza25bq1s825faaglkx1k6d59aiyjjk3yw3ip5sb463mhhai9"))))
670ee20a
BW
8652 (build-system ruby-build-system)
8653 (native-inputs
8654 `(("bundler" ,bundler)))
8655 (synopsis "Rake is a Make-like program implemented in Ruby")
8656 (description
8657 "Rake is a Make-like program where tasks and dependencies are specified
8658in standard Ruby syntax.")
8659 (home-page "https://github.com/ruby/rake")
8660 (license license:expat)))
45498f51 8661
51420124 8662(define-public ruby-childprocess
45498f51
DM
8663 (package
8664 (name "ruby-childprocess")
459e4a1a 8665 (version "3.0.0")
45498f51
DM
8666 (source
8667 (origin
8668 (method url-fetch)
8669 (uri (rubygems-uri "childprocess" version))
8670 (sha256
8671 (base32
459e4a1a 8672 "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5"))))
45498f51
DM
8673 (build-system ruby-build-system)
8674 (arguments
8675 `(#:tests? #f))
8676 (native-inputs
8677 `(("bundler" ,bundler)
8678 ("ruby-rspec" ,ruby-rspec)))
8679 (propagated-inputs
8680 `(("ruby-ffi" ,ruby-ffi)))
8681 (synopsis "Control external programs running in the background, in Ruby")
8682 (description "@code{childprocess} provides a gem to control external
8683programs running in the background, in Ruby.")
459e4a1a 8684 (home-page "https://github.com/enkessler/childprocess")
45498f51 8685 (license license:expat)))
1f10e28d 8686
0d16905b
JL
8687(define-public ruby-public-suffix
8688 (package
8689 (name "ruby-public-suffix")
9de12df7 8690 (version "4.0.1")
0d16905b
JL
8691 (source (origin
8692 (method url-fetch)
8693 (uri (rubygems-uri "public_suffix" version))
8694 (sha256
8695 (base32
9de12df7 8696 "0xnfv2j2bqgdpg2yq9i2rxby0w2sc9h5iyjkpaas2xknwrgmhdb0"))))
0d16905b
JL
8697 (build-system ruby-build-system)
8698 (arguments
1f4fc125
CB
8699 '(#:phases
8700 (modify-phases %standard-phases
8701 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
8702 ;; including it as an input can lead to circular dependencies.
8703 (add-after 'unpack 'remove-rubocop-from-Rakefile
8704 (lambda _
8705 (substitute* "Rakefile"
8706 (("require \"rubocop/rake\\_task\"") "")
8707 (("RuboCop::RakeTask\\.new") ""))
8708 #t)))))
8709 (native-inputs
8710 `(("bundler" ,bundler)
8711 ("ruby-yard" ,ruby-yard)
8712 ("ruby-mocha" ,ruby-mocha)
8713 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
0d16905b
JL
8714 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
8715 (synopsis "Domain name parser")
8716 (description "The gem @code{public_suffix} is a domain name parser,
8717written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
8718is one under which Internet users can (or historically could) directly
8719register names. Some examples of public suffixes are @code{.com},
8720@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
8721all known public suffixes.")
8722 (license license:expat)))
6f2c4efb
JL
8723
8724(define-public ruby-addressable
8725 (package
8726 (name "ruby-addressable")
91f7ee87 8727 (version "2.7.0")
6f2c4efb
JL
8728 (source (origin
8729 (method url-fetch)
8730 (uri (rubygems-uri "addressable" version))
8731 (sha256
8732 (base32
91f7ee87 8733 "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy"))))
6f2c4efb 8734 (build-system ruby-build-system)
0a794b30
CB
8735 (arguments
8736 '(#:test-target "spec"
8737 #:phases
8738 (modify-phases %standard-phases
8739 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
8740 (lambda _
8741 (substitute* "Gemfile"
8742 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
8743 ((".*launchy.*") "")
8744 ((".*rake.*") "gem 'rake'\n")
8745 ((".*redcarpet.*") ""))
8746 #t))
8747 (add-before 'check 'delete-network-dependent-test
8748 (lambda _
8749 (delete-file "spec/addressable/net_http_compat_spec.rb")
8750 #t)))))
8751 (native-inputs
8752 `(("ruby-rspec" ,ruby-rspec)
8753 ("bundler" ,bundler)
8754 ("ruby-idn-ruby" ,ruby-idn-ruby)
8755 ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
d7bd7016 8756 ("ruby-rspec-its", ruby-rspec-its-minimal)
0a794b30
CB
8757 ("ruby-yard" ,ruby-yard)
8758 ("ruby-simplecov" ,ruby-simplecov)))
6f2c4efb
JL
8759 (propagated-inputs
8760 `(("ruby-public-suffix" ,ruby-public-suffix)))
6f2c4efb
JL
8761 (home-page "https://github.com/sporkmonger/addressable")
8762 (synopsis "Alternative URI implementation")
8763 (description "Addressable is a replacement for the URI implementation that
8764is part of Ruby's standard library. It more closely conforms to RFC 3986,
8765RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
8766 (license license:asl2.0)))
9c7f15c0 8767
305e9b33
MB
8768(define-public ruby-colorize
8769 (package
8770 (name "ruby-colorize")
8771 (version "0.8.1")
8772 (source (origin
8773 (method url-fetch)
8774 (uri (rubygems-uri "colorize" version))
8775 (sha256
8776 (base32
8777 "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b"))))
8778 (build-system ruby-build-system)
8779 (arguments
8780 '(#:phases (modify-phases %standard-phases
8781 (add-before 'check 'remove-codeclimate-dependency
8782 (lambda _
8783 (substitute* "test/test_colorize.rb"
8784 ;; Do not hook the tests into the online CodeClimate
8785 ;; service which is unnecessary for these tests.
8786 (("require 'codeclimate-test-reporter'")
8787 "")
8788 (("CodeClimate.*") ""))
8789 #t)))))
8790 (synopsis "Add color effects to the @code{String} class")
8791 (description
8792 "This package extends the @code{String} class and adds a
8793@code{ColorizedString} with methods to set text color, background color,
8794and text effects.")
8795 (home-page "http://github.com/fazibear/colorize")
8796 (license license:gpl2+)))
8797
9c7f15c0
JL
8798(define-public ruby-colorator
8799 (package
8800 (name "ruby-colorator")
8801 (version "1.1.0")
8802 (source (origin
8803 (method url-fetch)
8804 (uri (rubygems-uri "colorator" version))
8805 (sha256
8806 (base32
8807 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
8808 (build-system ruby-build-system)
8809 (arguments
8810 ;; No test target
8811 `(#:tests? #f))
8812 (home-page "http://octopress.org/colorator/")
8813 (synopsis "Terminal color library")
8814 (description "Colorator is a Ruby gem that helps you colorize your text
8815for the terminal.")
8816 (license license:expat)))
78b9c291
JL
8817
8818(define-public ruby-command-line-reporter
8819 (package
8820 (name "ruby-command-line-reporter")
b448e408 8821 (version "4.0.1")
78b9c291
JL
8822 (source (origin
8823 (method url-fetch)
8824 (uri (rubygems-uri "command_line_reporter" version))
8825 (sha256
8826 (base32
b448e408 8827 "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll"))))
78b9c291
JL
8828 (build-system ruby-build-system)
8829 (arguments
8830 ;; No Rakefile
8831 `(#:tests? #f
8832 #:phases
8833 (modify-phases %standard-phases
8834 (add-before 'build 'fix-dependencies
8835 (lambda _
8836 (substitute* ".gemspec"
8837 ;; colored is unmaintained
8838 (("colored") "colorator")
8839 ;; colorator version
8840 (("= 1.2") "= 1.1"))
8841 #t)))))
8842 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
8843 (home-page "https://github.com/wbailey/command_line_reporter")
8844 (synopsis "Report production while executing Ruby scripts")
8845 (description "This gem provides a DSL that makes it easy to write reports
8846of various types in ruby. It eliminates the need to litter your source with
8847puts statements, instead providing a more readable, expressive interface to
8848your application.")
8849 (license license:asl2.0)))
f22c0387
JL
8850
8851(define-public ruby-command-line-reporter-3
8852 (package
8853 (inherit ruby-command-line-reporter)
8854 (version "3.3.6")
8855 (source (origin
8856 (method url-fetch)
8857 (uri (rubygems-uri "command_line_reporter" version))
8858 (sha256
8859 (base32
8860 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
6bba8ecf 8861
439d47cd
MC
8862(define-public ruby-kpeg
8863 (package
8864 (name "ruby-kpeg")
8865 (version "1.1.0")
8866 (source
8867 (origin
8868 (method url-fetch)
8869 (uri (rubygems-uri "kpeg" version))
8870 (sha256
8871 (base32
8872 "0x2kpfrcagj931masm5y1kwbnc6nxl60cqdcd3lyd1d2hz7kzlia"))))
8873 (build-system ruby-build-system)
8874 (native-inputs
8875 `(("ruby-hoe" ,ruby-hoe)))
8876 (synopsis "PEG library for Ruby")
8877 (description "KPeg is a simple PEG library for Ruby. It provides an API as
8878well as native grammar to build the grammar. KPeg supports direct left
8879recursion of rules via the
8880@uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization}
8881technique.")
8882 (home-page "https://github.com/evanphx/kpeg")
8883 (license license:expat)))
8884
6bba8ecf
JL
8885(define-public ruby-rdoc
8886 (package
8887 (name "ruby-rdoc")
9304f989 8888 (version "6.2.0")
6bba8ecf 8889 (source
9304f989
MC
8890 (origin
8891 (method git-fetch)
8892 (uri (git-reference
8893 (url "https://github.com/ruby/rdoc.git")
8894 (commit (string-append "v" version))))
8895 (file-name (git-file-name name version))
8896 (sha256
8897 (base32
8898 "0dhk29nidv93b5vnjvlm9gcixgn4i0jcyzrgxdk6pdg019bw4cj6"))))
6bba8ecf 8899 (build-system ruby-build-system)
9304f989
MC
8900 (arguments
8901 `(#:phases
8902 (modify-phases %standard-phases
8903 (add-after 'unpack 'patch-gemspec
8904 ;; TODO: Remove after next release is tagged.
8905 (lambda _
8906 (substitute* "rdoc.gemspec"
8907 (("\"lib/rdoc/generator/template/darkfish/js/\
8908jquery\\.js\", ") ""))
8909 #t))
8910 (add-before 'build 'generate
8911 ;; 'gem build' doesn't honor Rakefile dependencies (see:
8912 ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977).
8913 (lambda _
8914 (invoke "rake" "generate"))))))
6bba8ecf 8915 (native-inputs
9304f989
MC
8916 `(("bundler" ,bundler)
8917 ("ruby-kpeg" ,ruby-kpeg)
8918 ("ruby-racc" ,ruby-racc)
8919 ("ruby-rubocop" ,ruby-rubocop)))
6bba8ecf
JL
8920 (home-page "https://ruby.github.io/rdoc/")
8921 (synopsis "HTML and command-line documentation utility")
8922 (description "RDoc produces HTML and command-line documentation for Ruby
8923projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
8924documentation from the command-line.")
8925 (license license:gpl2+)))
18077ffc
JL
8926
8927(define-public ruby-sass-listen
8928 (package
8929 (name "ruby-sass-listen")
8930 (version "4.0.0")
8931 (source (origin
8932 (method url-fetch)
8933 (uri (rubygems-uri "sass-listen" version))
8934 (sha256
8935 (base32
8936 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
8937 (build-system ruby-build-system)
8938 (arguments
8939 ;; No test target
8940 `(#:tests? #f))
8941 (propagated-inputs
8942 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
8943 ("ruby-rb-inotify" ,ruby-rb-inotify)))
8944 (home-page "https://github.com/sass/listen")
8945 (synopsis "File modification notification library")
8946 (description "The Listen gem listens to file modifications and notifies you
8947about the changes.")
8948 (license license:expat)))
0c8eedc1
JL
8949
8950(define-public ruby-terminfo
8951 (package
8952 (name "ruby-terminfo")
8953 (version "0.1.1")
8954 (source
8955 (origin
8956 (method url-fetch)
8957 (uri (rubygems-uri "ruby-terminfo" version))
8958 (sha256
8959 (base32
8960 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
8961 (build-system ruby-build-system)
8962 (arguments
8963 `(#:test-target "test"
8964 ;; Rakefile requires old packages and would need modification to
8965 ;; work with current software.
8966 #:tests? #f))
8967 (inputs
8968 `(("ncurses" ,ncurses)))
8969 (native-inputs
8970 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
8971 ("ruby-rdoc" ,ruby-rdoc)))
8972 (home-page "http://www.a-k-r.org/ruby-terminfo/")
8973 (synopsis "Terminfo binding for Ruby")
8974 (description "Ruby-terminfo provides terminfo binding for Ruby.")
8975 (license license:bsd-3)))
ddc3a667
JL
8976
8977(define-public ruby-diffy
8978 (package
8979 (name "ruby-diffy")
8980 (version "3.2.1")
8981 (source
8982 (origin
8983 (method url-fetch)
8984 (uri (rubygems-uri "diffy" version))
8985 (sha256
8986 (base32
8987 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
8988 (build-system ruby-build-system)
8989 (arguments
8990 ;; No tests
8991 `(#:tests? #f))
8992 (native-inputs
8993 `(("ruby-rspec" ,ruby-rspec)))
8994 (home-page "https://github.com/samg/diffy")
8995 (synopsis "Convenient diffing in ruby")
8996 (description "Diffy provides a convenient way to generate a diff from two
8997strings or files.")
8998 (license license:expat)))
6456beef
JL
8999
9000(define-public ruby-sass-spec
9001 (package
9002 (name "ruby-sass-spec")
9003 (version "3.5.4")
11df8321
TGR
9004 (source
9005 (origin
9006 (method git-fetch)
9007 (uri (git-reference
9008 (url "https://github.com/sass/sass-spec.git")
9009 (commit (string-append "v" version))))
9010 (file-name (git-file-name name version))
9011 (sha256
9012 (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
6456beef
JL
9013 (build-system ruby-build-system)
9014 (propagated-inputs
9015 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
9016 ("ruby-diffy" ,ruby-diffy)
9017 ("ruby-terminfo" ,ruby-terminfo)))
9018 (arguments
2c7cb711
CB
9019 `(;; This package contains tests for a sass implementation, and the to
9020 ;; avoid any circular dependencies, the tests are not run here
9021 #:tests? #f
9022 #:phases
9023 (modify-phases %standard-phases
9024 (add-after 'unpack 'patch-test
9025 (lambda _
9026 (delete-file "spec/values/colors/alpha_hex-3.5/error")
9027 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
9028 (("string") "color")))))))
6456beef
JL
9029 (home-page "https://github.com/sass/sass-spec")
9030 (synopsis "Test suite for Sass")
9031 (description "Sass Spec is a test suite for Sass. Test cases are all in
9032the @file{spec} directory.")
9033 (license license:expat)))
f00f4492
JL
9034
9035(define-public ruby-sass
9036 (package
9037 (name "ruby-sass")
11ff2adc 9038 (version "3.6.0")
f00f4492
JL
9039 (source (origin
9040 (method url-fetch)
9041 (uri (rubygems-uri "sass" version))
9042 (sha256
9043 (base32
11ff2adc 9044 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
f00f4492
JL
9045 (build-system ruby-build-system)
9046 (propagated-inputs
9047 `(("ruby-sass-listen" ,ruby-sass-listen)))
9048 (native-inputs
11ff2adc
CB
9049 `(("ruby-sass-spec" ,ruby-sass-spec)
9050 ("ruby-mathn" ,ruby-mathn)))
3497086b 9051 (home-page "https://sass-lang.com/")
f00f4492
JL
9052 (synopsis "CSS extension language")
9053 (description "Sass is a CSS extension language. It extends CSS with
9054features that don't exist yet like variables, nesting, mixins and inheritance.")
9055 (license license:expat)))
5e242cb4 9056
9efc888d
CB
9057(define-public ruby-sassc
9058 (package
9059 (name "ruby-sassc")
3e776b44 9060 (version "2.2.1")
9efc888d
CB
9061 (source
9062 (origin
9063 (method url-fetch)
9064 (uri (rubygems-uri "sassc" version))
9065 (sha256
9066 (base32
3e776b44 9067 "09bnid7r5z5hcin5hykvpvv8xig27wbbckxwis60z2aaxq4j9siz"))))
9efc888d
CB
9068 (build-system ruby-build-system)
9069 (arguments
3e776b44
CB
9070 '(#:modules ((guix build ruby-build-system)
9071 (guix build utils)
9072 (ice-9 textual-ports))
9073 #:phases
9efc888d
CB
9074 (modify-phases %standard-phases
9075 ;; TODO: This would be better as a snippet, but the ruby-build-system
9076 ;; doesn't seem to support that
9077 (add-after 'unpack 'remove-libsass
9078 (lambda _
9079 (delete-file-recursively "ext")
3e776b44
CB
9080 (with-atomic-file-replacement "sassc.gemspec"
9081 (lambda (in out)
9082 (let* ((gemspec (get-string-all in))
9083 (index (string-contains gemspec "libsass_dir")))
9084 (display (string-append
9085 (string-take gemspec index)
9086 "\nend\n")
9087 out))))
9efc888d
CB
9088 #t))
9089 (add-after 'unpack 'dont-check-the-libsass-version
9090 (lambda _
9091 (substitute* "test/native_test.rb"
9092 (("assert_equal.*Native\\.version") ""))
9093 #t))
9094 (add-after 'unpack 'remove-git-from-gemspec
9095 (lambda _
9096 (substitute* "sassc.gemspec"
3e776b44 9097 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))
9efc888d
CB
9098 #t))
9099 (add-after 'unpack 'remove-extensions-from-gemspec
9100 (lambda _
9101 (substitute* "sassc.gemspec"
3e776b44 9102 (("\\[\"ext/extconf.rb\"\\]") "[]"))
9efc888d
CB
9103 #t))
9104 (add-after 'unpack 'fix-Rakefile
9105 (lambda _
9106 (substitute* "Rakefile"
3e776b44 9107 (("test: 'compile:libsass'") ":test"))
9efc888d
CB
9108 #t))
9109 (add-after 'unpack 'remove-unnecessary-dependencies
9110 (lambda _
9111 (substitute* "test/test_helper.rb"
9112 (("require \"pry\"") ""))
9113 #t))
9114 (add-before 'build 'patch-native.rb
9115 (lambda* (#:key inputs #:allow-other-keys)
9116 (substitute* "lib/sassc/native.rb"
9117 ((".*gem_root = spec.gem_dir") "")
9118 (("ffi_lib .*\n")
9119 (string-append
9120 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))
9121 #t))
9122 ;; The gemspec still references the libsass files, so just keep the
9123 ;; one in the gem.
9124 (delete 'extract-gemspec))))
9125 (propagated-inputs
9126 `(("ruby-ffi" ,ruby-ffi)
9127 ("ruby-rake" ,ruby-rake)))
9128 (inputs
9129 `(("libsass" ,libsass)))
9130 (native-inputs
9131 `(("bundler" ,bundler)
3e776b44 9132 ("ruby-rake-compiler" ,ruby-rake-compiler)
9efc888d
CB
9133 ("ruby-minitest-around" ,ruby-minitest-around)
9134 ("ruby-test-construct" ,ruby-test-construct)))
9135 (synopsis "Use libsss from Ruby")
9136 (description
9137 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
9138bindings to the libsass library. This enables rendering
9139@acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
9140 (home-page "https://github.com/sass/sassc-ruby")
9141 (license license:expat)))
9142
5e242cb4
JL
9143(define-public ruby-jekyll-sass-converter
9144 (package
9145 (name "ruby-jekyll-sass-converter")
9146 (version "1.5.2")
9147 (source (origin
9148 (method url-fetch)
9149 (uri (rubygems-uri "jekyll-sass-converter" version))
9150 (sha256
9151 (base32
9152 "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk"))))
9153 (build-system ruby-build-system)
9154 (propagated-inputs
9155 `(("ruby-sass" ,ruby-sass)))
9156 (arguments
9157 ;; No rakefile
9158 `(#:tests? #f))
9159 (home-page "https://github.com/jekyll/jekyll-sass-converter")
9160 (synopsis "Sass converter for Jekyll")
9161 (description "This gem provide built-in support for the Sass converter
9162in Jekyll.")
9163 (license license:expat)))
ceac6f6f
JL
9164
9165(define-public ruby-jekyll-watch
9166 (package
9167 (name "ruby-jekyll-watch")
6cbba8a3 9168 (version "2.1.2")
ceac6f6f
JL
9169 (source (origin
9170 (method url-fetch)
9171 (uri (rubygems-uri "jekyll-watch" version))
9172 (sha256
9173 (base32
6cbba8a3 9174 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
ceac6f6f
JL
9175 (build-system ruby-build-system)
9176 (propagated-inputs
6cbba8a3 9177 `(("ruby-listen" ,ruby-listen)))
ceac6f6f
JL
9178 (arguments
9179 ;; No rakefile
9180 `(#:tests? #f))
9181 (home-page "https://github.com/jekyll/jekyll-watch")
9182 (synopsis "Jekyll auto-rebuild support")
9183 (description "This gems add the @code{--watch} switch to the jekyll CLI
9184interface. It allows Jekyll to rebuild your site when a file changes.")
9185 (license license:expat)))
3224a5a8
JL
9186
9187(define-public ruby-parallel
9188 (package
9189 (name "ruby-parallel")
c41fba01
CB
9190 (version "1.13.0")
9191 (source
9192 (origin
9193 (method git-fetch)
9194 (uri (git-reference
9195 (url "https://github.com/grosser/parallel.git")
9196 (commit (string-append "v" version))))
9197 (file-name (git-file-name name version))
9198 (sha256
9199 (base32
9200 "1isqzbqxz2ndad4i5z3lb9ldrhaijfncj8bmffv04sq44sv87ikv"))))
3224a5a8 9201 (build-system ruby-build-system)
c41fba01
CB
9202 (arguments
9203 `(;; TODO 3 test failures
9204 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
9205 ;; open unnecessary pipes
9206 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
9207 ;; SQLite in processes
9208 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
9209 ;; SQLite in threads
9210 #:tests? #f
9211 #:test-target "rspec-rerun:spec"
9212 #:phases
9213 (modify-phases %standard-phases
9214 (add-after 'unpack 'patch-Gemfile
9215 (lambda _
9216 (substitute* "Gemfile"
9217 (("gem 'rspec-legacy_formatters'") "")
9218 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
9219 (add-before 'check 'delete-Gemfile.lock
9220 (lambda _
9221 ;; Bundler isn't being used for fetching dependendencies, so
9222 ;; delete the Gemfile.lock
9223 (delete-file "Gemfile.lock")
9224 #t))
9225 (add-before 'build 'patch-gemspec
9226 (lambda _
9227 (substitute* "parallel.gemspec"
9228 (("git ls-files") "find"))
9229 #t)))))
9230 (native-inputs
9231 `(("ruby-rspec" ,ruby-rspec)
9232 ("ruby-rspec-rerun" ,ruby-rspec-rerun)
9233 ("bundler" ,bundler)
9234 ("ruby-activerecord" ,ruby-activerecord)
9235 ("ruby-progressbar" ,ruby-progressbar)
9236 ("ruby-bump" ,ruby-bump)
9237 ("procps" ,procps)
9238 ("lsof" ,lsof)
9239 ("ruby-mysql2" ,ruby-mysql2)
9240 ("ruby-sqlite3" ,ruby-sqlite3)
9241 ("ruby-i18n" ,ruby-i18n)))
3224a5a8
JL
9242 (home-page "https://github.com/grosser/parallel")
9243 (synopsis "Parallel processing in Ruby")
9244 (description "Parallel allows you to run any code in parallel Processes
9245(to use all CPUs) or Threads(to speedup blocking operations). It is best
9246suited for map-reduce or e.g. parallel downloads/uploads.")
9247 (license license:expat)))
83d9f672
JL
9248
9249(define-public ruby-cane
9250 (package
9251 (name "ruby-cane")
9252 (version "3.0.0")
9253 (source (origin
9254 (method url-fetch)
9255 (uri (rubygems-uri "cane" version))
9256 (sha256
9257 (base32
9258 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
9259 (build-system ruby-build-system)
9260 (arguments `(#:tests? #f)); No rakefile
9261 (home-page "https://github.com/square/cane")
9262 (propagated-inputs
9263 `(("ruby-parallel" ,ruby-parallel)))
9264 (synopsis "Code quality threshold checking")
9265 (description "Cane fails your build if code quality thresholds are not met.")
9266 (license license:asl2.0)))
00d71efc
JL
9267
9268(define-public ruby-morecane
9269 (package
9270 (name "ruby-morecane")
9271 (version "0.2.0")
9272 (source (origin
9273 (method url-fetch)
9274 (uri (rubygems-uri "morecane" version))
9275 (sha256
9276 (base32
9277 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
9278 (build-system ruby-build-system)
9279 (home-page "https://github.com/yob/morecane")
9280 (arguments `(#:tests? #f)); No rakefile
9281 (propagated-inputs
9282 `(("ruby-parallel" ,ruby-parallel)))
9283 (synopsis "Extra checks for cane")
9284 (description "The cane gem provides a great framework for running quality
9285checks over your ruby project as part of continuous integration build. It
9286comes with a few checks out of the box, but also provides an API for loading
9287custom checks. This gem provides a set of additional checks.")
9288 (license license:expat)))
abbe629c
JL
9289
9290(define-public ruby-pdf-reader
9291 (package
9292 (name "ruby-pdf-reader")
9293 (version "2.1.0")
9294 (source (origin
9295 (method url-fetch)
9296 (uri (rubygems-uri "pdf-reader" version))
9297 (sha256
9298 (base32
9299 "1b3ig4wpcgdbqa7yw0ahwbmikkkywn2a22bfmrknl5ls7g066x45"))))
9300 (build-system ruby-build-system)
9301 (arguments `(#:test-target "spec"))
9302 (native-inputs
9303 `(("bundler" ,bundler)
9304 ("ruby-rspec" ,ruby-rspec)
9305 ("ruby-cane" ,ruby-cane)
9306 ("ruby-morecane" ,ruby-morecane)))
9307 (propagated-inputs
9308 `(("ruby-afm" ,ruby-afm)
9309 ("ruby-ascii85" ,ruby-ascii85)
9310 ("ruby-hashery" ,ruby-hashery)
9311 ("ruby-rc4" ,ruby-rc4)
9312 ("ruby-ttfunk" ,ruby-ttfunk)))
9313 (home-page "https://github.com/yob/pdf-reader")
9314 (synopsis "PDF parser in Ruby")
9315 (description "The PDF::Reader library implements a PDF parser conforming as
9316much as possible to the PDF specification from Adobe. It provides programmatic
9317access to the contents of a PDF file with a high degree of flexibility.")
9318 (license license:gpl3+)))
461fb859
JL
9319
9320(define-public ruby-pdf-inspector
9321 (package
9322 (name "ruby-pdf-inspector")
9323 (version "1.3.0")
9324 (source (origin
9325 (method url-fetch)
9326 (uri (rubygems-uri "pdf-inspector" version))
9327 (sha256
9328 (base32
9329 "1g853az4xzgqxr5xiwhb76g4sqmjg4s79mm35mp676zjsrwpa47w"))))
9330 (build-system ruby-build-system)
9331 (propagated-inputs
9332 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
9333 (arguments `(#:tests? #f)); No rakefile
9334 (home-page "https://github.com/prawnpdf/pdf-inspector")
9335 (synopsis "Analysis classes for inspecting PDF output")
9336 (description "This library provides a number of PDF::Reader based tools for
9337use in testing PDF output. Presently, the primary purpose of this tool is to
9338support the tests found in Prawn, a pure Ruby PDF generation library.")
9339 (license license:gpl3+)))
770e3b53
JL
9340
9341(define-public ruby-pdf-core
9342 (package
9343 (name "ruby-pdf-core")
9344 (version "0.8.1")
9345 (source (origin
9346 (method url-fetch)
9347 (uri (rubygems-uri "pdf-core" version))
9348 (sha256
9349 (base32
9350 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
9351 (build-system ruby-build-system)
9352 (arguments
9353 ; No test target
9354 `(#:tests? #f))
9355 (home-page "https://github.com/prawnpdf/pdf-core")
9356 (synopsis "Low level PDF features for Prawn")
9357 (description "This is an experimental gem that extracts low-level PDF
9358functionality from Prawn.")
9359 (license license:gpl3+)))
37fbced7 9360
7ad8dd08
JL
9361(define-public ruby-prawn
9362 (package
9363 (name "ruby-prawn")
9364 (version "2.2.2")
9365 (source (origin
9366 (method url-fetch)
9367 (uri (rubygems-uri "prawn" version))
9368 (sha256
9369 (base32
9370 "1qdjf1v6sfl44g3rqxlg8k4jrzkwaxgvh2l4xws97a8f3xv4na4m"))))
9371 (build-system ruby-build-system)
9372 (arguments
9373 ; No tests
9374 `(#:tests? #f
9375 #:phases
9376 (modify-phases %standard-phases
9377 (add-before 'build 'fix-dependencies
9378 (lambda _
9379 (substitute* "prawn.gemspec"
9380 (("~> 0.7.0") "~> 0.7"))
9381 #t)))))
9382 (propagated-inputs
9383 `(("ruby-pdf-core" ,ruby-pdf-core)
9384 ("ruby-ttfunk" ,ruby-ttfunk)))
9385 (native-inputs
9386 `(("bundler" ,bundler)
9387 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
9388 ("ruby-rspec" ,ruby-rspec)
9389 ("ruby-simplecov" ,ruby-simplecov)
9390 ("ruby-yard" ,ruby-yard)))
9391 (home-page "http://prawnpdf.org/api-docs/2.0/")
9392 (synopsis "PDF generation for Ruby")
9393 (description "Prawn is a pure Ruby PDF generation library.")
9394 (license license:gpl3+)))
197ca8ec
JL
9395
9396(define-public ruby-prawn-table
9397 (package
9398 (name "ruby-prawn-table")
9399 (version "0.2.2")
9400 (source (origin
9401 (method url-fetch)
9402 (uri (rubygems-uri "prawn-table" version))
9403 (sha256
9404 (base32
9405 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
9406 (build-system ruby-build-system)
197ca8ec 9407 (propagated-inputs
0927b039
CB
9408 `(("ruby-prawn" ,ruby-prawn)
9409 ("ruby-pdf-inspector" ,ruby-pdf-inspector)))
9410 (native-inputs
9411 `(("bundler" ,bundler)
9412 ("ruby-yard" ,ruby-yard)
9413 ("ruby-mocha" ,ruby-mocha)
9414 ("ruby-coderay" ,ruby-coderay)
9415 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
9416 ("ruby-simplecov" ,ruby-simplecov)
9417 ("ruby-rspec-2" ,ruby-rspec-2)))
9418 (arguments
9419 '(;; TODO: 1 test fails
9420 ;; Failure/Error: pdf.page_count.should == 1
9421 ;; expected: 1
9422 ;; got: 2 (using ==)
9423 ;; # ./spec/table_spec.rb:1308
9424 ;;
9425 ;; 225 examples, 1 failure
9426 #:tests? #f
9427 #:phases
9428 (modify-phases %standard-phases
9429 (add-before 'check 'patch-gemspec
9430 (lambda _
9431 (substitute* "prawn-table.gemspec"
9432 ;; Loosen the requirement for pdf-inspector
9433 (("~> 1\\.1\\.0") ">= 0")
9434 ;; Loosen the requirement for pdf-reader
9435 (("~> 1\\.2") ">= 0"))))
9436 (replace 'check
9437 (lambda* (#:key tests? #:allow-other-keys)
9438 (when tests?
9439 (invoke "rspec"))
9440 #t)))))
197ca8ec
JL
9441 (home-page "https://github.com/prawnpdf/prawn-table")
9442 (synopsis "Tables support for Prawn")
9443 (description "This gem provides tables support for Prawn.")
9444 (license license:gpl3+)))
03127069
JL
9445
9446(define-public ruby-kramdown
9447 (package
9448 (name "ruby-kramdown")
9449 (version "1.17.0")
9450 (source (origin
9451 (method url-fetch)
9452 (uri (rubygems-uri "kramdown" version))
9453 (sha256
9454 (base32
9455 "1n1c4jmrh5ig8iv1rw81s4mw4xsp4v97hvf8zkigv4hn5h542qjq"))))
9456 (build-system ruby-build-system)
9457 (arguments `(#:tests? #f)); FIXME: some test failures
9458 (native-inputs
9459 `(("ruby-prawn" ,ruby-prawn)
9460 ("ruby-prawn-table" ,ruby-prawn-table)))
9461 (home-page "https://kramdown.gettalong.org/")
9462 (synopsis "Markdown parsing and converting library")
9463 (description "Kramdown is a library for parsing and converting a superset
9464of Markdown. It is completely written in Ruby, supports standard Markdown
9465(with some minor modifications) and various extensions that have been made
9466popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
9467 (license license:expat)))
fa0063bc
JL
9468
9469(define-public ruby-http-parser.rb
9470 (package
9471 (name "ruby-http-parser.rb")
9472 (version "0.6.0")
9473 (source
9474 (origin
9475 (method url-fetch)
9476 (uri (rubygems-uri "http_parser.rb" version))
9477 (sha256
9478 (base32
9479 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
9480 (build-system ruby-build-system)
9481 (arguments
9482 ;; No tests
9483 `(#:tests? #f))
9484 (native-inputs
9485 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9486 ("ruby-rspec" ,ruby-rspec)))
9487 (home-page "https://github.com/tmm1/http_parser.rb")
9488 (synopsis "HTTP parser un Ruby")
9489 (description "This gem is a simple callback-based HTTP request/response
9490parser for writing http servers, clients and proxies.")
9491 (license license:expat)))
5e2f74bd
JL
9492
9493(define-public ruby-em-websocket
9494 (package
9495 (name "ruby-em-websocket")
9496 (version "0.5.1")
9497 (source
9498 (origin
9499 (method url-fetch)
9500 (uri (rubygems-uri "em-websocket" version))
9501 (sha256
9502 (base32
9503 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
9504 (build-system ruby-build-system)
9505 (arguments
9506 ;; No tests
9507 `(#:tests? #f))
9508 (propagated-inputs
9509 `(("ruby-eventmachine" ,ruby-eventmachine)
9510 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
9511 (native-inputs
9512 `(("bundler" ,bundler)
9513 ("ruby-rspec" ,ruby-rspec)))
9514 (home-page "https://github.com/igrigorik/em-websocket")
9515 (synopsis "EventMachine based WebSocket server")
9516 (description "Em-websocket is an EventMachine based WebSocket server
9517implementation.")
9518 (license license:expat)))
4ce0414b
JL
9519
9520(define-public ruby-rouge
9521 (package
9522 (name "ruby-rouge")
55cc5ef8 9523 (version "3.13.0")
4ce0414b
JL
9524 (source (origin
9525 (method url-fetch)
9526 (uri (rubygems-uri "rouge" version))
9527 (sha256
9528 (base32
55cc5ef8 9529 "1y90nx9ph9adnrpcsvs2adca2l3dyz8am2d2kzxkwd3a086ji7aw"))))
4ce0414b
JL
9530 (build-system ruby-build-system)
9531 (arguments `(#:tests? #f)); No rakefile
9532 (home-page "http://rouge.jneen.net/")
9533 (synopsis "Code highlighter")
9534 (description "Rouge is a code highlighter written in Ruby. It supports more
9535than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
9536is compatible with stylesheets designed for pygments.")
9537 (license (list
9538 ;; rouge is licensed under expat
9539 license:expat
9540 ;; pygments is licensed under bsd-2
9541 license:bsd-2))))
2c5028bd
JL
9542
9543(define-public ruby-rouge-2
9544 (package
9545 (inherit ruby-rouge)
9546 (version "2.2.1")
9547 (source (origin
9548 (method url-fetch)
9549 (uri (rubygems-uri "rouge" version))
9550 (sha256
9551 (base32
9552 "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs"))))))
2e072e37
JL
9553
9554(define-public ruby-hashie
9555 (package
9556 (name "ruby-hashie")
9557 (version "3.6.0")
9558 (source (origin
9559 (method url-fetch)
9560 (uri (rubygems-uri "hashie" version))
9561 (sha256
9562 (base32
9563 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
9564 (build-system ruby-build-system)
9565 (native-inputs
9566 `(("bundler" ,bundler)))
9567 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
9568 (home-page "https://github.com/intridea/hashie")
9569 (synopsis "Extensions to Ruby Hashes")
9570 (description "Hashie is a collection of classes and mixins that make Ruby
9571hashes more powerful.")
9572 (license license:expat)))
73bfc125
JL
9573
9574(define-public ruby-heredoc-unindent
9575 (package
9576 (name "ruby-heredoc-unindent")
9577 (version "1.2.0")
9578 (source (origin
9579 (method url-fetch)
9580 (uri (rubygems-uri "heredoc_unindent" version))
9581 (sha256
9582 (base32
9583 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
9584 (build-system ruby-build-system)
9585 (native-inputs
9586 `(("ruby-hoe" ,ruby-hoe)))
9587 (home-page "https://github.com/adrianomitre/heredoc_unindent")
9588 (synopsis "Heredoc indentation cleaner")
9589 (description "This gem removes common margin from indented strings, such
9590as the ones produced by indented heredocs. In other words, it strips out
4f66ae28 9591leading whitespace chars at the beginning of each line, but only as much as
73bfc125
JL
9592the line with the smallest margin.
9593
9594It is acknowledged that many strings defined by heredocs are just code and
9595fact is that most parsers are insensitive to indentation. If, however, the
9596strings are to be used otherwise, be it for printing or testing, the extra
9597indentation will probably be an issue and hence this gem.")
9598 (license license:expat)))
f8ae2ee5
JL
9599
9600(define-public ruby-safe-yaml
9601 (package
9602 (name "ruby-safe-yaml")
7fa83fa8 9603 (version "1.0.5")
28cf8dab
CB
9604 (source
9605 (origin
28cf8dab
CB
9606 (method git-fetch)
9607 (uri (git-reference
9608 (url "https://github.com/dtao/safe_yaml.git")
9609 (commit version)))
9610 (file-name (git-file-name name version))
9611 (sha256
9612 (base32
7fa83fa8 9613 "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg"))))
f8ae2ee5
JL
9614 (build-system ruby-build-system)
9615 (native-inputs
9616 `(("ruby-rspec" ,ruby-rspec)
9617 ("ruby-hashie" ,ruby-hashie)
9618 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
28cf8dab
CB
9619 (arguments
9620 '(#:test-target "spec"
9621 #:phases
9622 (modify-phases %standard-phases
9623 (add-before 'check 'set-TZ
9624 (lambda _
9625 ;; This test is dependent on the timezone
9626 ;; spec/transform/to_date_spec.rb:35
9627 ;; # SafeYAML::Transform::ToDate converts times to the local
9628 ;; timezone
9629 (setenv "TZ" "UTC-11")
9630 #t)))))
f8ae2ee5
JL
9631 (home-page "https://github.com/dtao/safe_yaml")
9632 (synopsis "YAML parser")
9633 (description "The SafeYAML gem provides an alternative implementation of
9634YAML.load suitable for accepting user input in Ruby applications.")
9635 (license license:expat)))
f1ec4d76
JL
9636
9637(define-public ruby-mercenary
9638 (package
9639 (name "ruby-mercenary")
9640 (version "0.3.6")
9641 (source (origin
9642 (method url-fetch)
9643 (uri (rubygems-uri "mercenary" version))
9644 (sha256
9645 (base32
9646 "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"))))
9647 (build-system ruby-build-system)
9648 (arguments `(#:test-target "spec"))
9649 (native-inputs
9650 `(("bundler" ,bundler)))
9651 (home-page "https://github.com/jekyll/mercenary")
9652 (synopsis "Command-line apps library in Ruby")
9653 (description "Mercenary is a lightweight and flexible library for writing
9654command-line apps in Ruby.")
9655 (license license:expat)))
a13d451e
JL
9656
9657(define-public ruby-liquid
9658 (package
9659 (name "ruby-liquid")
9660 (version "4.0.0")
9661 (source (origin
9662 (method url-fetch)
9663 (uri (rubygems-uri "liquid" version))
9664 (sha256
9665 (base32
9666 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
9667 (build-system ruby-build-system)
9668 (arguments `(#:tests? #f)); No rakefile
9669 (home-page "https://shopify.github.io/liquid/")
9670 (synopsis "Template language")
9671 (description "Liquid is a template language written in Ruby. It is used
9672to load dynamic content on storefronts.")
9673 (license license:expat)))
49395112
JL
9674
9675(define-public ruby-forwardable-extended
9676 (package
9677 (name "ruby-forwardable-extended")
9678 (version "2.6.0")
9679 (source (origin
9680 (method url-fetch)
9681 (uri (rubygems-uri "forwardable-extended" version))
9682 (sha256
9683 (base32
9684 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
9685 (build-system ruby-build-system)
9686 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
9687 (home-page "https://github.com/envygeeks/forwardable-extended")
9688 (synopsis "Delegation to hashes and instance variables in Forwardable")
9689 (description "Forwardable Extended provides more @code{Forwardable}
9690methods for your source as @code{Forwardable::Extended}.")
9691 (license license:expat)))
37296113
JL
9692
9693(define-public ruby-pathutil
9694 (package
9695 (name "ruby-pathutil")
feaaa603 9696 (version "0.16.2")
37296113
JL
9697 (source (origin
9698 (method url-fetch)
9699 (uri (rubygems-uri "pathutil" version))
9700 (sha256
9701 (base32
feaaa603 9702 "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"))))
37296113
JL
9703 (build-system ruby-build-system)
9704 (propagated-inputs
9705 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
9706 (native-inputs
9707 `(("bundler" ,bundler)
9708 ("ruby-rspec" ,ruby-rspec)))
9709 ;; Fails with: cannot load such file --
9710 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
9711 (arguments `(#:tests? #f))
9712 (home-page "https://github.com/envygeeks/pathutil")
9713 (synopsis "Extended implementation of Pathname")
9714 (description "Pathutil tries to be a faster pure Ruby implementation of
9715Pathname.")
9716 (license license:expat)))
49e1dde5
JL
9717
9718(define-public jekyll
9719 (package
9720 (name "jekyll")
fcf82fd3 9721 (version "3.8.6")
49e1dde5
JL
9722 (source (origin
9723 (method url-fetch)
9724 (uri (rubygems-uri "jekyll" version))
9725 (sha256
9726 (base32
fcf82fd3 9727 "1ph1jjjl25vmzif7bvxzviq7azjm384pm7ba4k24cah94285bzhz"))))
49e1dde5
JL
9728 (build-system ruby-build-system)
9729 (arguments
fcf82fd3 9730 ;; No rakefile, but a test subdirectory.
49e1dde5
JL
9731 `(#:tests? #f
9732 #:phases
9733 (modify-phases %standard-phases
9734 (add-before 'build 'fix-i18n
9735 (lambda _
9736 (substitute* ".gemspec"
9737 (("~> 0.7") ">= 0.7"))
9738 #t)))))
9739 (propagated-inputs
9740 `(("ruby-addressable" ,ruby-addressable)
9741 ("ruby-colorator" ,ruby-colorator)
9742 ("ruby-em-websocket" ,ruby-em-websocket)
9743 ("ruby-i18n" ,ruby-i18n)
9744 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
9745 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
9746 ("ruby-kramdown" ,ruby-kramdown)
9747 ("ruby-liquid" ,ruby-liquid)
9748 ("ruby-mercenary" ,ruby-mercenary)
9749 ("ruby-pathutil" ,ruby-pathutil)
9750 ("ruby-rouge" ,ruby-rouge-2)
9751 ("ruby-safe-yaml" ,ruby-safe-yaml)))
9752 (home-page "https://jekyllrb.com/")
9753 (synopsis "Static site generator")
9754 (description "Jekyll is a simple, blog aware, static site generator.")
9755 (license license:expat)))
37a0f470
JL
9756
9757(define-public ruby-jekyll-paginate-v2
9758 (package
9759 (name "ruby-jekyll-paginate-v2")
9760 (version "2.0.0")
9761 (source (origin
9762 (method url-fetch)
9763 (uri (rubygems-uri "jekyll-paginate-v2" version))
9764 (sha256
9765 (base32
9766 "154bfpyml6abxww9868hhyfvxasl8qhsc5zy2q30c7dxaj0igdib"))))
9767 (build-system ruby-build-system)
9768 (propagated-inputs
9769 `(("jekyll" ,jekyll)))
9770 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
9771 (synopsis "Pagination Generator for Jekyll 3")
9772 (description "The Pagination Generator forms the core of the pagination
9773logic in Jekyll. It calculates and generates the pagination pages.")
9774 (license license:expat)))
909eae21
CB
9775
9776(define-public ruby-faraday
9777 (package
9778 (name "ruby-faraday")
9779 (version "0.15.4")
9780 (source
9781 (origin
9782 (method url-fetch)
9783 (uri (rubygems-uri "faraday" version))
9784 (sha256
9785 (base32
9786 "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0"))))
9787 (build-system ruby-build-system)
9788 (arguments
9789 '(#:tests? #f))
9790 (propagated-inputs
9791 `(("ruby-multipart-post" ,ruby-multipart-post)))
9792 (synopsis "Ruby HTTP/REST API client library")
9793 (description
9794 "Faraday is a HTTP/REST API client library which provides a common
9795interface over different adapters.")
9796 (home-page "https://github.com/lostisland/faraday")
9797 (license license:expat)))
a058cbfd
CB
9798
9799(define-public ruby-nio4r
9800 (package
9801 (name "ruby-nio4r")
7923b9bf 9802 (version "2.5.2")
a058cbfd
CB
9803 (source
9804 (origin
9805 (method url-fetch)
9806 (uri (rubygems-uri "nio4r" version))
9807 (sha256
9808 (base32
7923b9bf 9809 "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c"))))
a058cbfd
CB
9810 (build-system ruby-build-system)
9811 (arguments
9812 '(#:phases
9813 (modify-phases %standard-phases
9814 (add-after 'unpack 'remove-unnecessary-dependencies
9815 (lambda _
9816 (substitute* "spec/spec_helper.rb"
9817 ;; Coveralls is for uploading test coverage information to an
9818 ;; online service, and thus unnecessary for building the Guix
9819 ;; package
9820 (("require \"coveralls\"") "")
9821 (("Coveralls\\.wear!") "")
9822 ;; Remove rspec/retry as we are not retrying the tests
9823 (("require \"rspec/retry\"") "")
9824 (("config\\.display_try_failure_messages = true") "")
9825 (("config\\.verbose_retry = true") ""))
9826 #t))
9827 (add-before 'check 'compile
9828 (lambda _
9829 (invoke "rake" "compile")
9830 #t))
9831 (replace 'check
9832 (lambda* (#:key tests? #:allow-other-keys)
9833 (when tests?
9834 (invoke "rspec"))
9835 #t)))))
9836 (native-inputs
9837 `(("bundler" ,bundler)
9838 ("ruby-rake-compiler" ,ruby-rake-compiler)
9839 ("ruby-rspec" ,ruby-rspec)
9840 ("ruby-rubocop" ,ruby-rubocop)))
9841 (synopsis "New I/O for Ruby")
9842 (description
9843 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
9844for scalable network clients and servers.")
9845 (home-page "https://github.com/socketry/nio4r")
9846 (license license:expat)))
f9da1ada
CB
9847
9848(define-public ruby-globalid
9849 (package
9850 (name "ruby-globalid")
9851 (version "0.4.2")
9852 (source
9853 (origin
9854 (method url-fetch)
9855 (uri (rubygems-uri "globalid" version))
9856 (sha256
9857 (base32
9858 "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"))))
9859 (build-system ruby-build-system)
9860 (arguments
9861 '(;; No included tests
9862 #:tests? #f))
9863 (propagated-inputs
9864 `(("ruby-activesupport" ,ruby-activesupport)))
9865 (synopsis "Generate URIs idenfitying model instances in Ruby")
9866 (description
9867 "@code{GlobalID} provides a way to generate URIs from a model in Ruby that
9868uniquely identify it.")
9869 (home-page "https://rubyonrails.org/")
9870 (license license:expat)))
15606d98
CB
9871
9872(define-public ruby-sprockets
9873 (package
9874 (name "ruby-sprockets")
9875 (version "3.7.2")
9876 (source
9877 (origin
9878 (method url-fetch)
9879 (uri (rubygems-uri "sprockets" version))
9880 (sha256
9881 (base32
9882 "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"))))
9883 (build-system ruby-build-system)
9884 (arguments
9885 '(;; No included tests
9886 #:tests? #f))
9887 (propagated-inputs
9888 `(("ruby-concurrent" ,ruby-concurrent)
9889 ("ruby-rack" ,ruby-rack)))
9890 (synopsis "Sprockets is a Rack-based asset packaging system")
9891 (description
9892 "Sprockets is a Rack-based asset packaging system that concatenates and
9893serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
9894 (home-page "https://github.com/rails/sprockets")
9895 (license license:expat)))
acb9e3d8
PN
9896
9897(define-public ruby-mustermann
9898 (package
9899 (name "ruby-mustermann")
9900 (version "1.0.3")
9901 (source
9902 (origin
9903 (method url-fetch)
9904 (uri (rubygems-uri "mustermann" version))
9905 (sha256
9906 (base32
9907 "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1"))))
9908 (build-system ruby-build-system)
9909 (arguments
9910 ;; No tests.
9911 '(#:tests? #f))
9912 (synopsis "Library implementing patterns that behave like regular expressions")
9913 (description "Given a string pattern, Mustermann will turn it into an
9914object that behaves like a regular expression and has comparable performance
9915characteristics.")
9916 (home-page "https://github.com/sinatra/mustermann")
9917 (license license:expat)))
3bb094e2 9918
7bddb6aa
BL
9919(define-public ruby-htmlentities
9920 (package
9921 (name "ruby-htmlentities")
9922 (version "4.3.4")
9923 (source
9924 (origin
9925 (method url-fetch)
9926 (uri (rubygems-uri "htmlentities" version))
9927 (sha256
9928 (base32
9929 "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"))))
9930 (build-system ruby-build-system)
9931 (arguments
9932 `(#:phases
9933 (modify-phases %standard-phases
9934 (replace 'check
9935 (lambda _
9936 (map (lambda (file)
9937 (invoke "ruby" "-Itest" file))
9938 (find-files "./test" ".*_test\\.rb")))))))
9939 (synopsis "Encode and decode (X)HTML entities")
9940 (description
9941 "This package provides a module for encoding and decoding (X)HTML
9942entities.")
9943 (home-page "https://github.com/threedaymonk/htmlentities")
9944 (license license:expat)))
9945
3bb094e2
PN
9946(define-public ruby-sinatra
9947 (package
9948 (name "ruby-sinatra")
9949 (version "2.0.5")
9950 (source
9951 (origin
9952 (method url-fetch)
9953 (uri (rubygems-uri "sinatra" version))
9954 (sha256
9955 (base32
9956 "1gasgn5f15myv08k10i16p326pchxjsy37pgqfw0xm66kcc5d7ry"))))
9957 (build-system ruby-build-system)
9958 (propagated-inputs
9959 `(("ruby-mustermann" ,ruby-mustermann)
9960 ("ruby-rack" ,ruby-rack)
9961 ("ruby-rack-protection" ,ruby-rack-protection)
9962 ("ruby-tilt" ,ruby-tilt)))
9963 (synopsis "DSL for quick web applications creation in Ruby")
9964 (description
9965 "Sinatra is a DSL for quickly creating web applications in Ruby with
9966minimal effort.")
9967 (home-page "http://sinatrarb.com/")
9968 (license license:expat)))
6e87695b
PN
9969
9970(define-public ruby-thin
9971 (package
9972 (name "ruby-thin")
9973 (version "1.7.2")
9974 (source
9975 (origin
9976 (method url-fetch)
9977 (uri (rubygems-uri "thin" version))
9978 (sha256
9979 (base32
9980 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
9981 (build-system ruby-build-system)
9982 (arguments
9983 ;; No tests.
9984 '(#:tests? #f))
9985 (propagated-inputs
9986 `(("ruby-daemons" ,ruby-daemons)
9987 ("ruby-eventmachine" ,ruby-eventmachine)
9988 ("ruby-rack" ,ruby-rack)))
9989 (synopsis "Thin and fast web server for Ruby")
9990 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
9991@itemize
9992@item the Mongrel parser,
9993@item Event Machine, a network I/O library with high scalability, performance
9994and stability,
9995@item Rack, a minimal interface between webservers and Ruby frameworks.
9996@end itemize\n")
60783303 9997 (home-page "https://github.com/macournoyer/thin")
6e87695b 9998 (license license:ruby)))
be6016db
PN
9999
10000(define-public ruby-skinny
10001 (package
10002 (name "ruby-skinny")
10003 (version "0.2.4")
10004 (source
10005 (origin
10006 (method url-fetch)
10007 (uri (rubygems-uri "skinny" version))
10008 (sha256
10009 (base32
10010 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
10011 (build-system ruby-build-system)
10012 (arguments
10013 '(#:tests? #f ; No included tests
10014 #:phases
10015 (modify-phases %standard-phases
10016 (add-before 'build 'patch-gemspec
10017 (lambda _
10018 (substitute* ".gemspec"
10019 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
10020 "<eventmachine>, [\">= 1.0.0\"")
10021 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, ["))
10022 #t)))))
10023 (propagated-inputs
10024 `(("ruby-eventmachine" ,ruby-eventmachine)
10025 ("ruby-thin" ,ruby-thin)))
10026 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
10027 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
10028the Thin library.")
10029 (home-page "https://github.com/sj26/skinny")
10030 (license license:expat)))
df747c8d 10031
9c566d1b
MB
10032(define-public ruby-sys-filesystem
10033 (package
10034 (name "ruby-sys-filesystem")
10035 (version "1.3.4")
10036 (source (origin
10037 (method url-fetch)
10038 (uri (rubygems-uri "sys-filesystem" version))
10039 (sha256
10040 (base32
10041 "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01"))))
10042 (build-system ruby-build-system)
10043 (arguments
10044 '(#:phases (modify-phases %standard-phases
10045 (add-before 'check 'set-HOME
10046 (lambda _
10047 ;; Some tests attempt to stat $HOME. Let them.
10048 (setenv "HOME" "/tmp")
10049 #t)))))
10050 (propagated-inputs
10051 `(("ruby-ffi" ,ruby-ffi)))
10052 (native-inputs
10053 `(("ruby-mkmf-lite" ,ruby-mkmf-lite)))
10054 (synopsis "Gather file system information")
10055 (description
10056 "The @code{sys-filesystem} library provides a cross-platform interface
10057for gathering file system information, such as disk space and mount points.")
10058 (home-page "https://github.com/djberg96/sys-filesystem")
10059 (license license:asl2.0)))
10060
df747c8d
PN
10061(define-public mailcatcher
10062 (package
10063 (name "mailcatcher")
10064 (version "0.7.1")
10065 (source
10066 (origin
10067 (method url-fetch)
10068 (uri (rubygems-uri "mailcatcher" version))
10069 (sha256
10070 (base32
10071 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
10072 (build-system ruby-build-system)
10073 (arguments
10074 ;; Tests require web/assets which is not included in the output. We
10075 ;; might be able to fix this by adding the Git repository to the GEM_PATH
10076 ;; of the tests. See ruby-mysql2.
10077 '(#:tests? #f
10078 #:phases
10079 (modify-phases %standard-phases
10080 (add-before 'build 'patch-gemspec
10081 (lambda _
10082 (substitute* ".gemspec"
10083 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
10084 "<eventmachine>, [\">= 1.0.9.1")
10085 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
10086 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
10087 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))
10088 #t))
10089 (add-before 'build 'loosen-dependency-contraint
10090 (lambda _
10091 (substitute* "lib/mail_catcher.rb"
10092 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
10093 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
10094 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
10095 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))
10096 #t)))))
10097 (inputs
10098 `(("ruby-eventmachine" ,ruby-eventmachine)
10099 ("ruby-mail" ,ruby-mail)
10100 ("ruby-rack" ,ruby-rack)
10101 ("ruby-sinatra" ,ruby-sinatra)
10102 ("ruby-skinny" ,ruby-skinny)
10103 ("ruby-sqlite3" ,ruby-sqlite3)
10104 ("ruby-thin" ,ruby-thin)))
10105 (synopsis "SMTP server which catches messages to display them a browser")
10106 (description
10107 "MailCatcher runs a super simple SMTP server which catches any message
10108sent to it to display in a web interface. Run mailcatcher, set your favourite
10109app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
10110then check out http://127.0.0.1:1080 to see the mail.")
10111 (home-page "https://mailcatcher.me")
10112 (license license:expat)))
fc4f7c45
MK
10113
10114(define-public ruby-backport
10115 (package
10116 (name "ruby-backport")
b62863b8 10117 (version "1.1.2")
fc4f7c45
MK
10118 (source
10119 (origin
b62863b8 10120 ;; The gem does not include test code, so fetch from the Git repository.
fc4f7c45
MK
10121 (method git-fetch)
10122 (uri (git-reference
10123 (url "https://github.com/castwide/backport.git")
10124 (commit (string-append "v" version))))
10125 (file-name (git-file-name name version))
10126 (sha256
b62863b8 10127 (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2"))))
fc4f7c45
MK
10128 (build-system ruby-build-system)
10129 (arguments
10130 `(#:test-target "spec"))
10131 (native-inputs
10132 `(("bundler" ,bundler)
10133 ("ruby-rspec" ,ruby-rspec)))
10134 (inputs
10135 `(("ruby-simplecov" ,ruby-simplecov)))
10136 (synopsis "Pure Ruby library for event-driven IO")
10137 (description
10138 "This package provides a pure Ruby library for event-driven IO.")
10139 (home-page "https://github.com/castwide/backport")
10140 (license license:expat)))
369faa59
JL
10141
10142(define-public ruby-json-schema
10143 (package
10144 (name "ruby-json-schema")
10145 (version "2.8.1")
10146 (source
10147 (origin
10148 (method url-fetch)
10149 (uri (rubygems-uri "json-schema" version))
10150 (sha256
10151 (base32
10152 "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5"))))
10153 (build-system ruby-build-system)
10154 (arguments
10155 `(#:tests? #f ; no tests
10156 #:phases
10157 (modify-phases %standard-phases
10158 (replace 'build
10159 (lambda _
10160 (invoke "gem" "build" ".gemspec"))))))
10161 (propagated-inputs
10162 `(("ruby-addressable" ,ruby-addressable)))
10163 (synopsis "Ruby JSON Schema Validator")
10164 (description "This library provides Ruby with an interface for validating
10165JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy
10166support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1
10167is also included.")
10168 (home-page "https://github.com/ruby-json-schema/json-schema")
10169 (license license:expat)))
44881cad
JL
10170
10171(define-public swagger-diff
10172 (package
10173 (name "swagger-diff")
10174 (version "1.1.2")
10175 (source
10176 (origin
10177 (method url-fetch)
10178 (uri (rubygems-uri "swagger-diff" version))
10179 (sha256
10180 (base32
10181 "1hxx50nga1bqn254iqjcdwkc9c72364ks9lyjyw10ajz0l0ly7sn"))))
10182 (build-system ruby-build-system)
10183 (arguments
10184 `(#:test-target "spec"
10185 #:phases
10186 (modify-phases %standard-phases
10187 ;; Don't run or require rubocop, the code linting tool, as this is a
10188 ;; bit unnecessary.
10189 (add-after 'unpack 'dont-run-rubocop
10190 (lambda _
10191 (substitute* "Rakefile"
10192 ((".*rubocop.*") "")
10193 ((".*RuboCop.*") ""))
10194 #t)))))
10195 (propagated-inputs
10196 `(("ruby-json-schema" ,ruby-json-schema)))
10197 (native-inputs
10198 `(("bundler" ,bundler)
10199 ("ruby-rspec-core" ,ruby-rspec-core)
10200 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
10201 (synopsis
10202 "Compare Open API Initiative specification files")
10203 (description
10204 "Swagger::Diff is a utility for comparing two different Open API
10205Initiative (OAI) specifications (formerly known as Swagger specifications).
10206It is intended to determine whether a newer API specification is
10207backwards-compatible with an older API specification.")
10208 (home-page "https://github.com/civisanalytics/swagger-diff")
10209 (license license:bsd-3)))
9e065a8a
BL
10210
10211(define-public ruby-reverse-markdown
10212 (package
10213 (name "ruby-reverse-markdown")
10214 (version "1.1.0")
10215 (source
10216 (origin
10217 (method url-fetch)
10218 (uri (rubygems-uri "reverse_markdown" version))
10219 (sha256
10220 (base32
10221 "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg"))))
10222 (build-system ruby-build-system)
10223 (propagated-inputs
10224 `(("ruby-nokogiri" ,ruby-nokogiri)))
10225 (native-inputs
10226 `(("bundler" ,bundler)
10227 ("ruby-rspec" ,ruby-rspec)
10228 ("ruby-kramdown" ,ruby-kramdown)
10229 ("ruby-simplecov" ,ruby-simplecov)))
10230 (arguments
10231 `(#:phases
10232 (modify-phases %standard-phases
10233 (replace 'check
10234 (lambda* (#:key tests? #:allow-other-keys)
10235 (when tests?
10236 (invoke "rspec"))
10237 #t)))))
10238 (synopsis "Convert HTML into Markdown")
10239 (description
10240 "This Ruby module allows you to map simple HTML back into
10241Markdown---e.g., if you want to import existing HTML data in your
10242application.")
10243 (home-page "https://github.com/xijo/reverse_markdown")
10244 (license license:wtfpl2)))
10245
a9e2de7e
BL
10246(define-public ruby-solargraph
10247 (package
10248 (name "ruby-solargraph")
10249 (version "0.36.0")
10250 (source
10251 (origin
10252 (method url-fetch)
10253 (uri (rubygems-uri "solargraph" version))
10254 (sha256
10255 (base32
10256 "0b93xzkgd1h06da9gdnwivj1mzbil8lc072y2838dy6i7bxgpy9i"))))
10257 (build-system ruby-build-system)
10258 (propagated-inputs
10259 `(("ruby-backport" ,ruby-backport)
10260 ("bundler" ,bundler)
10261 ("ruby-htmlentities" ,ruby-htmlentities)
10262 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
10263 ("ruby-maruku" ,ruby-maruku)
10264 ("ruby-nokogiri" ,ruby-nokogiri)
10265 ("ruby-parser" ,ruby-parser)
10266 ("ruby-reverse-markdown" ,ruby-reverse-markdown)
10267 ("ruby-rubocop" ,ruby-rubocop)
10268 ("ruby-thor" ,ruby-thor)
10269 ("ruby-tilt" ,ruby-tilt)
10270 ("ruby-yard" ,ruby-yard)))
10271 (native-inputs
10272 `(("ruby-rspec" ,ruby-rspec)
10273 ("ruby-pry" ,ruby-pry)
10274 ("ruby-simplecov" ,ruby-simplecov)
10275 ("ruby-webmock" ,ruby-webmock-2)))
10276 ;; FIXME: can't figure out how to run the tests properly:
10277
10278 ;; An error occurred while loading spec_helper.
10279 ;; Failure/Error: return gem_original_require(path)
10280 ;; LoadError:
10281 ;; cannot load such file -- spec_helper
10282 (arguments
10283 '(#:tests? #f
10284 #:phases
10285 (modify-phases %standard-phases
10286 (replace 'check
10287 (lambda* (#:key tests? #:allow-other-keys)
10288 (when tests?
10289 (invoke "rspec"))
10290 #t)))))
10291 (synopsis
10292 "IDE tools for code completion, inline documentation, and static analysis")
10293 (description
10294 "Solargraph provides a comprehensive suite of tools for Ruby
10295programming: intellisense, diagnostics, inline documentation, and type
10296checking.")
10297 (home-page "https://solargraph.org/")
10298 (license license:expat)))
0c558aa9
DNB
10299
10300(define-public ruby-wayback-machine-downloader
10301 (package
10302 (name "ruby-wayback-machine-downloader")
10303 (version "2.2.1")
10304 (source
10305 (origin
10306 (method url-fetch)
10307 (uri (rubygems-uri
10308 "wayback_machine_downloader"
10309 version))
10310 (sha256
10311 (base32
10312 "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2"))))
10313 (build-system ruby-build-system)
10314 (arguments
10315 '(#:tests? #f)) ; no tests
10316 (synopsis "Download archived websites from the Wayback Machine")
10317 (description
10318 "Wayback Machine Downloader is a command line tool for downloading
10319websites from the Internet Archive's Wayback Machine (archive.org).
10320It allows fine grained control over what to download by specifying
10321which snapshots to consider and what files to include.")
10322 (home-page
10323 "https://github.com/hartator/wayback-machine-downloader")
10324 (license license:expat)))
e6483f8c
MB
10325
10326(define-public ruby-wwtd
10327 (package
10328 (name "ruby-wwtd")
10329 (version "1.4.1")
10330 (home-page "http://github.com/grosser/wwtd")
10331 (source (origin
10332 (method git-fetch)
10333 (uri (git-reference
10334 (url home-page)
10335 (commit (string-append "v" version))))
10336 (file-name (git-file-name name version))
10337 (sha256
10338 (base32
10339 "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2"))
10340 (modules '((guix build utils)))
10341 (snippet
10342 '(begin
10343 ;; Remove bundled library.
10344 (delete-file "spec/rake-12.3.0.gem")
10345 #t))))
10346 (build-system ruby-build-system)
10347 (arguments
10348 '(;; XXX: Tests need multiple versions of ruby, wants to run
10349 ;; `bundle install`, etc.
10350 #:tests? #f
10351 #:phases (modify-phases %standard-phases
10352 (replace 'replace-git-ls-files
10353 (lambda _
10354 (substitute* "wwtd.gemspec"
10355 (("git ls-files lib/ bin/`")
10356 "find lib/ bin/ -type f |sort`"))
10357 #t))
10358 (add-before 'check 'remove-version-constraints
10359 (lambda _
10360 (delete-file "Gemfile.lock")
10361 #t))
10362 (replace 'check
10363 (lambda* (#:key tests? #:allow-other-keys)
10364 (if tests?
10365 (invoke "rspec" "spec/")
10366 (format #t "test suite not run~%"))
10367 #t)))))
10368 (native-inputs
10369 `(("ruby-bump" ,ruby-bump)
10370 ("ruby-rspec" ,ruby-rspec)))
10371 (synopsis "Run @file{.travis.yml} files locally")
10372 (description
10373 "WWTD is a @dfn{Travis Simulator} that lets you run test matrices
10374defined in @file{.travis.yml} on your local machine, using @code{rvm},
10375@code{rbenv}, or @code{chruby} to test different versions of Ruby.")
10376 (license license:expat)))