gnu: Add ronn-ng
[jackhill/guix/guix.git] / gnu / packages / ruby.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
3 ;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
4 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
5 ;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
6 ;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
7 ;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
8 ;;; Copyright © 2017 Nikita <nikita@n0.is>
9 ;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
10 ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
11 ;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
12 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
13 ;;; Copyright © 2017, 2018, 2019 Christopher Baines <mail@cbaines.net>
14 ;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
15 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
16 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
17 ;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com>
18 ;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
19 ;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
20 ;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca>
21 ;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de>
22 ;;; Copyright © 2019 Brett Gilio <brettg@posteo.de>
23 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
24 ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
25 ;;;
26 ;;; This file is part of GNU Guix.
27 ;;;
28 ;;; GNU Guix is free software; you can redistribute it and/or modify it
29 ;;; under the terms of the GNU General Public License as published by
30 ;;; the Free Software Foundation; either version 3 of the License, or (at
31 ;;; your option) any later version.
32 ;;;
33 ;;; GNU Guix is distributed in the hope that it will be useful, but
34 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
35 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
36 ;;; GNU General Public License for more details.
37 ;;;
38 ;;; You should have received a copy of the GNU General Public License
39 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
40
41 (define-module (gnu packages ruby)
42 #:use-module ((guix licenses) #:prefix license:)
43 #:use-module (gnu packages)
44 #:use-module (gnu packages base)
45 #:use-module (gnu packages bison)
46 #:use-module (gnu packages c)
47 #:use-module (gnu packages check)
48 #:use-module (gnu packages compression)
49 #:use-module (gnu packages crypto)
50 #:use-module (gnu packages databases)
51 #:use-module (gnu packages dbm)
52 #:use-module (gnu packages rails)
53 #:use-module (gnu packages readline)
54 #:use-module (gnu packages autotools)
55 #:use-module (gnu packages haskell-xyz)
56 #:use-module (gnu packages java)
57 #:use-module (gnu packages libffi)
58 #:use-module (gnu packages libidn)
59 #:use-module (gnu packages linux)
60 #:use-module (gnu packages lsof)
61 #:use-module (gnu packages maths)
62 #:use-module (gnu packages ncurses)
63 #:use-module (gnu packages networking)
64 #:use-module (gnu packages node)
65 #:use-module (gnu packages protobuf)
66 #:use-module (gnu packages python)
67 #:use-module (gnu packages python-xyz)
68 #:use-module (gnu packages ragel)
69 #:use-module (gnu packages rsync)
70 #:use-module (gnu packages sqlite)
71 #:use-module (gnu packages tls)
72 #:use-module (gnu packages version-control)
73 #:use-module (guix packages)
74 #:use-module (guix download)
75 #:use-module (guix git-download)
76 #:use-module (guix utils)
77 #:use-module (guix build-system gnu)
78 #:use-module (gnu packages xml)
79 #:use-module (gnu packages web)
80 #:use-module (guix build-system ruby)
81 #:use-module ((srfi srfi-1) #:select (alist-delete)))
82
83 (define %prawn-project-licenses
84 ;; This set of licenses applies to most (all?) components of the Prawn
85 ;; project (it is triple licensed).
86 (list license:ruby
87 license:gpl2+
88 license:gpl3+))
89
90 (define-public ruby
91 (package
92 (name "ruby")
93 (version "2.6.5")
94 (source
95 (origin
96 (method url-fetch)
97 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
98 (version-major+minor version)
99 "/ruby-" version ".tar.xz"))
100 (sha256
101 (base32
102 "0qhsw2mr04f3lqinkh557msr35pb5rdaqy4vdxcj91flgxqxmmnm"))
103 (modules '((guix build utils)))
104 (snippet `(begin
105 ;; Remove bundled libffi
106 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
107 #t))))
108 (build-system gnu-build-system)
109 (arguments
110 `(#:test-target "test"
111 #:configure-flags '("--enable-shared") ; dynamic linking
112 #:phases
113 (modify-phases %standard-phases
114 (add-before 'configure 'replace-bin-sh-and-remove-libffi
115 (lambda _
116 (substitute* '("Makefile.in"
117 "ext/pty/pty.c"
118 "io.c"
119 "lib/mkmf.rb"
120 "process.c"
121 "test/rubygems/test_gem_ext_configure_builder.rb"
122 "test/rdoc/test_rdoc_parser.rb"
123 "test/ruby/test_rubyoptions.rb"
124 "test/ruby/test_process.rb"
125 "test/ruby/test_system.rb"
126 "tool/rbinstall.rb")
127 (("/bin/sh") (which "sh")))
128 #t)))))
129 (inputs
130 `(("readline" ,readline)
131 ("openssl" ,openssl)
132 ("libffi" ,libffi)
133 ("gdbm" ,gdbm)))
134 (propagated-inputs
135 `(("zlib" ,zlib)))
136 (native-search-paths
137 (list (search-path-specification
138 (variable "GEM_PATH")
139 (files (list (string-append "lib/ruby/vendor_ruby"))))))
140 (synopsis "Programming language interpreter")
141 (description "Ruby is a dynamic object-oriented programming language with
142 a focus on simplicity and productivity.")
143 (home-page "https://www.ruby-lang.org")
144 (license license:ruby)))
145
146 (define-public ruby-2.7
147 (package
148 (inherit ruby)
149 (version "2.7.1")
150 (source
151 (origin
152 (method url-fetch)
153 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
154 (version-major+minor version)
155 "/ruby-" version ".tar.gz"))
156 (sha256
157 (base32
158 "0674x98f542y02r7n2yv2qhmh97blqhi2mvh2dn5f000vlxlh66l"))
159 (modules '((guix build utils)))
160 (snippet `(begin
161 ;; Remove bundled libffi
162 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
163 #t))))
164 (arguments
165 `(#:test-target "test"
166 #:configure-flags '("--enable-shared") ; dynamic linking
167 #:phases
168 (modify-phases %standard-phases
169 (add-before 'configure 'replace-bin-sh-and-remove-libffi
170 (lambda _
171 (substitute* '("configure.ac"
172 "template/Makefile.in"
173 "lib/rubygems/installer.rb"
174 "ext/pty/pty.c"
175 "io.c"
176 "lib/mkmf.rb"
177 "process.c"
178 "test/rubygems/test_gem_ext_configure_builder.rb"
179 "test/rdoc/test_rdoc_parser.rb"
180 "test/ruby/test_rubyoptions.rb"
181 "test/ruby/test_process.rb"
182 "test/ruby/test_system.rb"
183 "tool/rbinstall.rb")
184 (("/bin/sh") (which "sh")))
185 #t)))))
186 (native-inputs
187 `(("autoconf" ,autoconf)))))
188
189 (define-public ruby-2.5
190 (package
191 (inherit ruby)
192 (version "2.5.8")
193 (source
194 (origin
195 (method url-fetch)
196 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
197 (version-major+minor version)
198 "/ruby-" version ".tar.xz"))
199 (sha256
200 (base32
201 "0vad5ah1lrdhxsyqr5iqc8c7r7qczpmm76cz8rsf4crimpzv5483"))
202 (modules '((guix build utils)))
203 (snippet `(begin
204 ;; Remove bundled libffi
205 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
206 #t))))))
207
208 (define-public ruby-2.4
209 (package
210 (inherit ruby)
211 (version "2.4.10")
212 (source
213 (origin
214 (method url-fetch)
215 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
216 (version-major+minor version)
217 "/ruby-" version ".tar.xz"))
218 (sha256
219 (base32
220 "1prhqlgik1zmw9lakl6hkriqslspw48pvhxff17h7ns42p8qwrnm"))
221 (modules '((guix build utils)))
222 (snippet `(begin
223 ;; Remove bundled libffi
224 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
225 #t))))))
226
227 (define-public mruby
228 (package
229 (name "mruby")
230 (version "2.0.0")
231 (source
232 (origin
233 (method git-fetch)
234 (uri (git-reference
235 (url "https://github.com/mruby/mruby")
236 (commit version)))
237 (file-name (git-file-name name version))
238 (sha256
239 (base32
240 "1r6w1asjshff43ymdwa6xmrkggza99mi2kw88k7ic6ag2j81hcj5"))))
241 (build-system gnu-build-system)
242 (arguments
243 `(#:test-target "test"
244 #:phases
245 (modify-phases %standard-phases
246 (delete 'configure)
247 (add-after 'unpack 'enable-verbose-tests
248 (lambda _
249 (substitute* "Makefile"
250 (("ruby ./minirake" m)
251 (string-append m " --verbose")))
252 #t))
253 (add-after 'unpack 'disable-broken-tests
254 (lambda _
255 (substitute* "mrbgems/mruby-io/test/io.rb"
256 (("assert\\('IO.popen.+$" m)
257 (string-append m "skip \"Hangs in the Guix build environment\"\n"))
258 (("assert\\('IO#isatty.+$" m)
259 (string-append m "skip \"Disable for Guix; there is no /dev/tty\"\n"))
260 ;; This one is really weird. The *expected* output is all wrong.
261 (("assert\\('`cmd`.*" m)
262 (string-append m "skip \"Disable for Guix\"\n"))
263 (("echo foo")
264 (string-append (which "echo") " foo")))
265 #t))
266 ;; There is no install target
267 (replace 'install
268 (lambda* (#:key outputs #:allow-other-keys)
269 (let* ((out (assoc-ref outputs "out"))
270 (bin (string-append out "/bin"))
271 (lib (string-append out "/lib")))
272 (mkdir-p bin)
273 (copy-recursively "build/host/bin" bin)
274 (mkdir-p lib)
275 (copy-recursively "build/host/lib" lib))
276 #t)))))
277 (native-inputs
278 `(("ruby" ,ruby)
279 ("bison" ,bison)))
280 (home-page "https://github.com/mruby/mruby")
281 (synopsis "Lightweight Ruby")
282 (description "mruby is the lightweight implementation of the Ruby
283 language. Its syntax is Ruby 1.9 compatible. mruby can be linked and
284 embedded within your application.")
285 (license license:expat)))
286
287 (define-public ruby-commander
288 (package
289 (name "ruby-commander")
290 (version "4.4.7")
291 (source
292 (origin
293 (method url-fetch)
294 (uri (rubygems-uri "commander" version))
295 (sha256
296 (base32
297 "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg"))))
298 (build-system ruby-build-system)
299 (arguments
300 `(#:test-target "spec"
301 #:phases
302 (modify-phases %standard-phases
303 ;; Don't run or require rubocop, the code linting tool, as this is a
304 ;; bit unnecessary.
305 (add-after 'unpack 'dont-run-rubocop
306 (lambda _
307 (substitute* "Rakefile"
308 ((".*rubocop.*") "")
309 ((".*RuboCop.*") ""))
310 #t)))))
311 (propagated-inputs
312 `(("ruby-highline" ,ruby-highline)))
313 (native-inputs
314 `(("bundler" ,bundler)
315 ("ruby-rspec-core" ,ruby-rspec-core)
316 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
317 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
318 ("ruby-simplecov" ,ruby-simplecov)))
319 (home-page "https://github.com/commander-rb/commander")
320 (synopsis "Library for building Ruby command-line executables")
321 (description
322 "Commander aims to be a complete solution for Ruby command-line
323 executables. Commander bridges the gap between other terminal related
324 libraries (OptionParser, HighLine), while providing many new features, and an
325 elegant API.")
326 (license license:expat)))
327
328 (define-public ruby-highline
329 (package
330 (name "ruby-highline")
331 (version "2.0.1")
332 (source
333 (origin
334 (method url-fetch)
335 (uri (rubygems-uri "highline" version))
336 (sha256
337 (base32
338 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
339 (build-system ruby-build-system)
340 (arguments
341 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
342 (native-inputs
343 `(("bundler" ,bundler)
344 ("ruby-code-statistics" ,ruby-code-statistics)))
345 (synopsis
346 "HighLine helps you build command-line interfaces")
347 (description
348 "HighLine provides a high-level IO library that provides validation,
349 type conversion, and more for command-line interfaces. HighLine also includes
350 a menu system for providing multiple options to the user.")
351 (home-page "https://github.com/JEG2/highline")
352 (license (list license:gpl2 license:ruby))))
353
354 (define-public ruby-hoe
355 (package
356 (name "ruby-hoe")
357 (version "3.21.0")
358 (source (origin
359 (method url-fetch)
360 (uri (rubygems-uri "hoe" version))
361 (sha256
362 (base32
363 "0qid0n56mgsjvq5ksxajv0gb92akky8imwgvw22ajms5g4fd6nf4"))))
364 (build-system ruby-build-system)
365 (arguments
366 '(#:phases
367 (modify-phases %standard-phases
368 ;; One of the tests fails if the SOURCE_DATE_EPOCH environment
369 ;; variable is set, so unset it for the duration of the tests.
370 ;;
371 ;; TestHoe#test_possibly_better
372 ;; [/tmp/guix-build-ruby-hoe-3.20.0.drv-0/gem/test/test_hoe.rb:250]:
373 ;; Expected: 2019-11-12 00:00:00 UTC
374 ;; Actual: 1970-01-01 00:00:00 UTC
375 (add-before 'check 'unset-SOURCE-DATE-EPOCH
376 (lambda _
377 (unsetenv "SOURCE_DATE_EPOCH")
378 #t))
379 (add-after 'check 'set-SOURCE-DATE-EPOCH-again
380 (lambda _
381 (setenv "SOURCE_DATE_EPOCH" "1")
382 #t)))))
383 (synopsis "Ruby project management helper")
384 (description
385 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
386 maintain, and release projects and includes a dynamic plug-in system allowing
387 for easy extensibility. Hoe ships with plug-ins for all the usual project
388 tasks including rdoc generation, testing, packaging, deployment, and
389 announcement.")
390 (home-page "https://www.zenspider.com/projects/hoe.html")
391 (license license:expat)))
392
393 (define-public ruby-rake-compiler
394 (package
395 (name "ruby-rake-compiler")
396 (version "1.1.0")
397 (source (origin
398 (method url-fetch)
399 (uri (rubygems-uri "rake-compiler" version))
400 (sha256
401 (base32
402 "0l4hg21v0phfrfsc2hilgmwvn2imxr0byqh8dv16bya1s5d3km0q"))))
403 (build-system ruby-build-system)
404 (arguments
405 '(#:tests? #f)) ; needs cucumber
406 (synopsis "Building and packaging helper for Ruby native extensions")
407 (description "Rake-compiler provides a framework for building and
408 packaging native C and Java extensions in Ruby.")
409 (home-page "https://github.com/rake-compiler/rake-compiler")
410 (license license:expat)))
411
412 (define-public ruby-rsync
413 (package
414 (name "ruby-rsync")
415 (version "1.0.9")
416 (source
417 (origin
418 (method url-fetch)
419 (uri (rubygems-uri "rsync" version))
420 (sha256
421 (base32
422 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
423 (build-system ruby-build-system)
424 (arguments
425 '(#:test-target "spec"
426 #:phases
427 (modify-phases %standard-phases
428 (add-after 'unpack 'remove-coveralls-requirement
429 (lambda _
430 (substitute* "spec/spec_helper.rb"
431 (("require 'coveralls'") "")
432 (("Coveralls.wear!") ""))
433 #t)))))
434 (native-inputs
435 `(("bundler" ,bundler)
436 ("rsync" ,rsync)
437 ("ruby-rspec-core" ,ruby-rspec-core)
438 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
439 ("ruby-rspec-mocks" ,ruby-rspec-mocks)))
440 (home-page "https://github.com/jbussdieker/ruby-rsync")
441 (synopsis "Ruby wrapper around rsync")
442 (description
443 "Ruby Rsync is a Ruby library that can synchronize files between remote
444 hosts by wrapping the @file{rsync} binary.")
445 (license license:expat)))
446
447 (define-public ruby-i18n
448 (package
449 (name "ruby-i18n")
450 (version "1.7.0")
451 (source (origin
452 (method url-fetch)
453 (uri (rubygems-uri "i18n" version))
454 (sha256
455 (base32
456 "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl"))))
457 (build-system ruby-build-system)
458 (arguments
459 '(#:tests? #f)) ; no tests
460 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
461 (synopsis "Internationalization library for Ruby")
462 (description "Ruby i18n is an internationalization and localization
463 solution for Ruby programs. It features translation and localization,
464 interpolation of values to translations, pluralization, customizable
465 transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
466 translation data, custom key/scope separator, custom exception handlers, and
467 an extensible architecture with a swappable backend.")
468 (home-page "https://github.com/ruby-i18n/i18n")
469 (license license:expat)))
470
471 (define-public ruby-iruby
472 (package
473 (name "ruby-iruby")
474 (version "0.3")
475 (source
476 (origin
477 (method url-fetch)
478 (uri (rubygems-uri "iruby" version))
479 (sha256
480 (base32
481 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
482 (build-system ruby-build-system)
483 (arguments
484 ;; TODO: Tests currently fail.
485 ;;
486 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
487 ;;
488 ;; 1) Failure:
489 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
490 ;; In [ expected
491 ;;
492 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
493 '(#:tests? #f
494 #:phases
495 (modify-phases %standard-phases
496 (add-after 'unpack 'patch-ipython
497 (lambda* (#:key inputs #:allow-other-keys)
498 (substitute* "lib/iruby/command.rb"
499 (("version = `")
500 (string-append
501 "version = `"
502 (assoc-ref inputs "python-ipython")
503 "/bin/"))
504 (("Kernel\\.exec\\('")
505 (string-append
506 "Kernel.exec('"
507 (assoc-ref inputs "python-ipython")
508 "/bin/")))
509 #t)))))
510 (inputs
511 `(("python-ipython" ,python-ipython)))
512 (propagated-inputs
513 `(("ruby-bond" ,ruby-bond)
514 ("ruby-data_uri" ,ruby-data_uri)
515 ("ruby-mimemagic" ,ruby-mimemagic)
516 ("ruby-multi-json" ,ruby-multi-json)
517 ("ruby-cztop" ,ruby-cztop)
518 ;; Optional inputs
519 ("ruby-pry" ,ruby-pry)))
520 (synopsis "Ruby kernel for Jupyter/IPython")
521 (description
522 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
523 notebook).")
524 (home-page "https://github.com/SciRuby/iruby")
525 (license license:expat)))
526
527 ;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
528 ;; dependencies use RSpec for their test suites! To avoid these circular
529 ;; dependencies, we disable tests for all of the RSpec-related packages.
530 (define-public ruby-rspec-support
531 (package
532 (name "ruby-rspec-support")
533 (version "3.8.0")
534 (source (origin
535 (method url-fetch)
536 (uri (rubygems-uri "rspec-support" version))
537 (sha256
538 (base32
539 "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609"))))
540 (build-system ruby-build-system)
541 (arguments
542 '(#:tests? #f)) ; avoid dependency cycles
543 (synopsis "RSpec support library")
544 (description "Support utilities for RSpec gems.")
545 (home-page "https://github.com/rspec/rspec-support")
546 (license license:expat)))
547
548 (define-public ruby-rspec-core
549 (package
550 (name "ruby-rspec-core")
551 (version "3.8.0")
552 (source (origin
553 (method url-fetch)
554 (uri (rubygems-uri "rspec-core" version))
555 (sha256
556 (base32
557 "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p"))))
558 (build-system ruby-build-system)
559 (arguments
560 '(#:tests? #f)) ; avoid dependency cycles
561 (propagated-inputs
562 `(("ruby-rspec-support" ,ruby-rspec-support)))
563 (synopsis "RSpec core library")
564 (description "Rspec-core provides the RSpec test runner and example
565 groups.")
566 (home-page "https://github.com/rspec/rspec-core")
567 (license license:expat)))
568
569 (define-public ruby-rspec-core-2
570 (package (inherit ruby-rspec-core)
571 (version "2.14.8")
572 (source (origin
573 (method url-fetch)
574 (uri (rubygems-uri "rspec-core" version))
575 (sha256
576 (base32
577 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
578 (propagated-inputs `())))
579
580 (define-public ruby-diff-lcs
581 (package
582 (name "ruby-diff-lcs")
583 (version "1.3")
584 (source (origin
585 (method url-fetch)
586 (uri (rubygems-uri "diff-lcs" version))
587 (sha256
588 (base32
589 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
590 (build-system ruby-build-system)
591 (arguments
592 '(#:tests? #f)) ; avoid dependency cycles
593 (synopsis "Compute the difference between two Enumerable sequences")
594 (description "Diff::LCS computes the difference between two Enumerable
595 sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
596 It includes utilities to create a simple HTML diff output format and a
597 standard diff-like tool.")
598 (home-page "https://github.com/halostatue/diff-lcs")
599 (license license:expat)))
600
601 (define-public ruby-rspec-expectations
602 (package
603 (name "ruby-rspec-expectations")
604 (version "3.8.2")
605 (source (origin
606 (method url-fetch)
607 (uri (rubygems-uri "rspec-expectations" version))
608 (sha256
609 (base32
610 "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm"))))
611 (build-system ruby-build-system)
612 (arguments
613 '(#:tests? #f)) ; avoid dependency cycles
614 (propagated-inputs
615 `(("ruby-rspec-support" ,ruby-rspec-support)
616 ("ruby-diff-lcs" ,ruby-diff-lcs)))
617 (synopsis "RSpec expectations library")
618 (description "Rspec-expectations provides a simple API to express expected
619 outcomes of a code example.")
620 (home-page "https://github.com/rspec/rspec-expectations")
621 (license license:expat)))
622
623 (define-public ruby-rspec-expectations-2
624 (package (inherit ruby-rspec-expectations)
625 (version "2.14.5")
626 (source (origin
627 (method url-fetch)
628 (uri (rubygems-uri "rspec-expectations" version))
629 (sha256
630 (base32
631 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
632 (propagated-inputs
633 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
634
635 (define-public ruby-sorcerer
636 (package
637 (name "ruby-sorcerer")
638 (version "2.0.1")
639 (source
640 (origin
641 (method url-fetch)
642 (uri (rubygems-uri "sorcerer" version))
643 (sha256
644 (base32
645 "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h"))))
646 (build-system ruby-build-system)
647 (synopsis "Ripper-style abstract syntax tree to Ruby source generator")
648 (description "Sorcerer generates Ruby code from a Ripper-like abstract
649 syntax tree (i.e. S-Expressions). Sorcerer is targeted mainly at small
650 snippets of Ruby code, expressable in a single line. Longer examples may be
651 re-sourced, but they will be rendered in a single line format.")
652 (home-page "https://github.com/rspec-given/sorcerer")
653 (license license:expat)))
654
655 (define-public ruby-given-core
656 (package
657 (name "ruby-given-core")
658 (version "3.8.0")
659 (source
660 (origin
661 (method url-fetch)
662 (uri (rubygems-uri "given_core" version))
663 (sha256
664 (base32
665 "1lzyqllbbv6as3qgwz2007mvy7wy247bgkch9adnmh1zfa73bkrg"))))
666 (build-system ruby-build-system)
667 (arguments '(#:tests? #f)) ;no test suite for the core package
668 (propagated-inputs
669 `(("ruby-sorcerer" ,ruby-sorcerer)))
670 (synopsis "Core abstractions used by rspec-given and minitest-given")
671 (description "Given_core is the basic functionality behind rspec-given and
672 minitest-given, extensions that allow the use of Given/When/Then terminology
673 when defining specifications.")
674 (home-page "https://github.com/rspec-given/rspec-given")
675 (license license:expat)))
676
677 (define-public ruby-rspec-given
678 (package
679 (name "ruby-rspec-given")
680 (version "3.8.0")
681 (source
682 (origin
683 (method url-fetch)
684 (uri (rubygems-uri "rspec-given" version))
685 (sha256
686 (base32
687 "1783bazja10kbha8hk15khvybsq88siyax02cpkk688604h54nji"))))
688 (build-system ruby-build-system)
689 (arguments
690 `(#:test-target "rs"
691 #:phases
692 (modify-phases %standard-phases
693 (add-after 'unpack 'fix-rakefile
694 (lambda _
695 (substitute* '("Rakefile" "rakelib/gemspec.rake")
696 (("require '\\./lib/given/.*") "")
697 (("Given::VERSION") (format #f "~s" ,version))
698 ;; Fix the error: "cannot load such file -- example_helper"
699 (("sh \"rspec")
700 "sh \"rspec -Ilib:examples"))
701 #t))
702 (add-after 'extract-gemspec 'delete-failing-tests
703 ;; See: https://github.com/jimweirich/rspec-given/issues/57.
704 (lambda _
705 (substitute* ".gemspec"
706 (("\"spec/lib/given/natural_assertion_spec.rb\".freeze, ")
707 "")
708 (("\"examples/integration/failing_messages_spec.rb\".freeze, ")
709 ""))
710 (delete-file "spec/lib/given/natural_assertion_spec.rb")
711 (delete-file "examples/integration/failing_messages_spec.rb")
712 #t)))))
713 (native-inputs
714 `(("ruby-rspec" ,ruby-rspec)
715 ("ruby-minitest" ,ruby-minitest)))
716 (propagated-inputs
717 `(("ruby-given-core" ,ruby-given-core)
718 ("ruby-rspec" ,ruby-rspec)))
719 (synopsis "Given/When/Then for RSpec and Minitest")
720 (description "Given is an RSpec extension that allows the use of
721 Given/When/Then terminology when defining specifications, in a way similar to
722 the Cucumber Gherkin language.")
723 (home-page "https://github.com/rspec-given/rspec-given")
724 (license license:expat)))
725
726 (define-public ruby-rspec-its
727 (package
728 (name "ruby-rspec-its")
729 (version "1.3.0")
730 (source
731 (origin
732 (method git-fetch)
733 (uri (git-reference
734 (url "https://github.com/rspec/rspec-its")
735 (commit (string-append "v" version))))
736 (file-name (git-file-name name version))
737 (sha256
738 (base32
739 "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p"))))
740 (build-system ruby-build-system)
741 (arguments
742 `(#:test-target "spec"
743 #:phases
744 (modify-phases %standard-phases
745 (add-after 'unpack 'dont-install-gems-from-gemfile
746 (lambda _
747 (substitute* "Gemfile"
748 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
749 ""))
750 #t))
751 (add-before 'build 'loosen-ffi-requirement
752 (lambda _
753 ;; Accept any version of ruby-ffi.
754 (substitute* "Gemfile"
755 ((" gem 'ffi', '~> 1\\.9\\.25'")
756 " gem 'ffi'"))
757 #t))
758 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
759 (lambda _
760 (substitute* "rspec-its.gemspec"
761 (("rake.*") "rake'\n")
762 (("spec.add_development_dependency 'cucumber'.*")
763 "spec.add_development_dependency 'cucumber'\n")
764 (("bundler.*") "bundler'\n")
765 (("\"aruba.*") "'aruba'\n"))
766 #t)))))
767 (propagated-inputs
768 `(("ruby-rspec-core" ,ruby-rspec-core)
769 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
770 (native-inputs
771 `(("bundler" ,bundler)
772 ("ruby-cucumber" ,ruby-cucumber)
773 ("ruby-ffi" ,ruby-ffi)
774 ("ruby-aruba" ,ruby-aruba)))
775 (synopsis "RSpec extension that provides the @code{its} method")
776 (description
777 "RSpec::Its provides the its method as a short-hand to specify the expected
778 value of an attribute. For example, one can use @code{its(:size)\\{should
779 eq(1)\\}}.")
780 (home-page "https://github.com/rspec/rspec-its")
781 (license license:expat)))
782
783 ;;; This variant is used to break a cycle with ruby-protobuf.
784 (define-public ruby-rspec-its-minimal
785 (hidden-package
786 (package
787 (inherit ruby-rspec-its)
788 (arguments
789 (substitute-keyword-arguments (package-arguments ruby-rspec-its)
790 ((#:tests? _ #f) #f)))
791 (native-inputs '()))))
792
793 (define-public ruby-rspec-mocks
794 (package
795 (name "ruby-rspec-mocks")
796 (version "3.8.0")
797 (source (origin
798 (method url-fetch)
799 (uri (rubygems-uri "rspec-mocks" version))
800 (sha256
801 (base32
802 "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp"))))
803 (build-system ruby-build-system)
804 (arguments
805 '(#:tests? #f)) ; avoid dependency cycles
806 (propagated-inputs
807 `(("ruby-rspec-support" ,ruby-rspec-support)
808 ("ruby-diff-lcs" ,ruby-diff-lcs)))
809 (synopsis "RSpec stubbing and mocking library")
810 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
811 support for stubbing and mocking.")
812 (home-page "https://github.com/rspec/rspec-mocks")
813 (license license:expat)))
814
815 (define-public ruby-rspec-mocks-2
816 (package (inherit ruby-rspec-mocks)
817 (version "2.14.6")
818 (source (origin
819 (method url-fetch)
820 (uri (rubygems-uri "rspec-mocks" version))
821 (sha256
822 (base32
823 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
824 (propagated-inputs
825 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
826
827 (define-public ruby-rspec-rerun
828 (package
829 (name "ruby-rspec-rerun")
830 (version "1.1.0")
831 (source
832 (origin
833 (method url-fetch)
834 (uri (rubygems-uri "rspec-rerun" version))
835 (sha256
836 (base32
837 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
838 (build-system ruby-build-system)
839 (arguments
840 '(;; No included tests
841 #:tests? #f))
842 (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
843 (synopsis "Track failed RSpec tests to re-run them")
844 (description
845 "This package provides an automated way to track, and then re-run failed
846 RSpec tests.")
847 (home-page "https://github.com/dblock/rspec-rerun")
848 (license license:expat)))
849
850 (define-public ruby-rspec-wait
851 (package
852 (name "ruby-rspec-wait")
853 (version "0.0.9")
854 (source
855 (origin
856 (method url-fetch)
857 (uri (rubygems-uri "rspec-wait" version))
858 (sha256
859 (base32
860 "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
861 (build-system ruby-build-system)
862 (arguments
863 '(#:phases
864 (modify-phases %standard-phases
865 (replace 'check
866 (lambda _
867 (invoke "rake" "spec"))))))
868 (native-inputs
869 `(("bundler" ,bundler)))
870 (propagated-inputs
871 `(("ruby-rspec" ,ruby-rspec)))
872 (home-page "https://github.com/laserlemon/rspec-wait")
873 (synopsis "Wait for conditions in RSpec")
874 (description
875 "RSpec::Wait strives to make it easier to test asynchronous or slow
876 interactions.")
877 (license license:expat)))
878
879 (define-public ruby-rspec
880 (package
881 (name "ruby-rspec")
882 (version "3.8.0")
883 (source (origin
884 (method url-fetch)
885 (uri (rubygems-uri "rspec" version))
886 (sha256
887 (base32
888 "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3"))))
889 (build-system ruby-build-system)
890 (arguments
891 '(#:tests? #f)) ; avoid dependency cycles
892 (propagated-inputs
893 `(("ruby-rspec-core" ,ruby-rspec-core)
894 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
895 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
896 (synopsis "Behavior-driven development framework for Ruby")
897 (description "RSpec is a behavior-driven development (BDD) framework for
898 Ruby. This meta-package includes the RSpec test runner, along with the
899 expectations and mocks frameworks.")
900 (home-page "https://rspec.info/")
901 (license license:expat)))
902
903 (define-public ruby-rspec-2
904 (package (inherit ruby-rspec)
905 (version "2.14.1")
906 (source (origin
907 (method url-fetch)
908 (uri (rubygems-uri "rspec" version))
909 (sha256
910 (base32
911 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
912 (propagated-inputs
913 `(("ruby-rspec-core" ,ruby-rspec-core-2)
914 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
915 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
916
917 ;; Bundler is yet another source of circular dependencies, so we must disable
918 ;; its test suite as well.
919 (define-public bundler
920 (package
921 (name "bundler")
922 (version "2.1.4")
923 (source (origin
924 (method url-fetch)
925 (uri (rubygems-uri "bundler" version))
926 (sha256
927 (base32
928 "12glbb1357x91fvd004jgkw7ihlkpc9dwr349pd7j83isqhls0ah"))))
929 (build-system ruby-build-system)
930 (arguments
931 '(#:tests? #f)) ; avoid dependency cycles
932 (synopsis "Ruby gem bundler")
933 (description "Bundler automatically downloads and installs a list of gems
934 specified in a \"Gemfile\", as well as their dependencies.")
935 (home-page "https://bundler.io/")
936 (license license:expat)))
937
938 (define-public ruby-builder
939 (package
940 (name "ruby-builder")
941 (version "3.2.3")
942 (source (origin
943 (method url-fetch)
944 (uri (rubygems-uri "builder" version))
945 (sha256
946 (base32
947 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
948 (build-system ruby-build-system)
949 (arguments
950 `(#:phases
951 (modify-phases %standard-phases
952 (add-after 'unpack 'do-not-use-rvm
953 (lambda _
954 (substitute* "rakelib/tags.rake"
955 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
956 #t)))))
957 (synopsis "Ruby library to create structured data")
958 (description "Builder provides a number of builder objects that make it
959 easy to create structured data. Currently the following builder objects are
960 supported: XML Markup and XML Events.")
961 (home-page "https://github.com/jimweirich/builder")
962 (license license:expat)))
963
964 (define-public ruby-bump
965 (package
966 (name "ruby-bump")
967 (version "0.7.0")
968 (source
969 (origin
970 (method url-fetch)
971 (uri (rubygems-uri "bump" version))
972 (sha256
973 (base32
974 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
975 (build-system ruby-build-system)
976 (arguments
977 '(;; No included tests
978 #:tests? #f))
979 (synopsis "Tool for working with Rubygems")
980 (description
981 "Bump provides commands to manage Rubygem versioning, updating to the
982 next patch version for example.")
983 (home-page "https://github.com/gregorym/bump")
984 (license license:expat)))
985
986 (define-public ruby-rjb
987 (package
988 (name "ruby-rjb")
989 (version "1.5.5")
990 (source (origin
991 (method url-fetch)
992 (uri (rubygems-uri "rjb" version))
993 (sha256
994 (base32
995 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
996 (build-system ruby-build-system)
997 (arguments
998 `(#:tests? #f ; no rakefile
999 #:phases
1000 (modify-phases %standard-phases
1001 (add-before 'build 'set-java-home
1002 (lambda* (#:key inputs #:allow-other-keys)
1003 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
1004 #t)))))
1005 (native-inputs
1006 `(("jdk" ,icedtea "jdk")))
1007 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
1008 (description "RJB is a bridge program that connects Ruby and Java via the
1009 Java Native Interface.")
1010 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
1011 (license license:lgpl2.1+)))
1012
1013 (define-public ruby-log4r
1014 (package
1015 (name "ruby-log4r")
1016 (version "1.1.10")
1017 (source
1018 (origin
1019 (method url-fetch)
1020 (uri (rubygems-uri "log4r" version))
1021 (sha256
1022 (base32
1023 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
1024 (build-system ruby-build-system)
1025 (arguments
1026 '(#:tests? #f)) ; no Rakefile in gem
1027 (synopsis "Flexible logging library for Ruby")
1028 (description "Comprehensive and flexible logging library written
1029 in Ruby for use in Ruby programs. It features a hierarchical logging
1030 system of any number of levels, custom level names, logger
1031 inheritance, multiple output destinations per log event, execution
1032 tracing, custom formatting, thread safteyness, XML and YAML
1033 configuration, and more.")
1034 (home-page "http://log4r.rubyforge.org/")
1035 (license license:bsd-3)))
1036
1037 (define-public ruby-atoulme-antwrap
1038 (package
1039 (name "ruby-atoulme-antwrap")
1040 (version "0.7.5")
1041 (source (origin
1042 (method url-fetch)
1043 (uri (rubygems-uri "atoulme-Antwrap" version))
1044 (sha256
1045 (base32
1046 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
1047 (build-system ruby-build-system)
1048 ;; Test data required for most of the tests are not included.
1049 (arguments `(#:tests? #f))
1050 (native-inputs
1051 `(("ruby-hoe" ,ruby-hoe)))
1052 (inputs
1053 `(("ruby-rjb" ,ruby-rjb)))
1054 (synopsis "Ruby wrapper for the Ant build tool")
1055 (description "Antwrap is a Ruby module that wraps the Apache Ant build
1056 tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
1057 script.")
1058 (home-page "http://rubyforge.org/projects/antwrap/")
1059 (license license:expat)))
1060
1061 (define-public ruby-atoulme-saikuro
1062 (package
1063 (name "ruby-atoulme-saikuro")
1064 (version "1.2.1")
1065 (source (origin
1066 (method url-fetch)
1067 (uri (rubygems-uri "atoulme-Saikuro" version))
1068 (sha256
1069 (base32
1070 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
1071 (build-system ruby-build-system)
1072 ;; FIXME: There are no unit tests. The tests are demonstrations of the
1073 ;; "saikuro" tool.
1074 (arguments `(#:tests? #f))
1075 (synopsis "Cyclomatic complexity analyzer")
1076 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
1077 given Ruby source code Saikuro will generate a report listing the cyclomatic
1078 complexity of each method found. In addition, Saikuro counts the number of
1079 lines per method and can generate a listing of the number of tokens on each
1080 line of code.")
1081 (home-page "http://www.github.com/atoulme/Saikuro")
1082 ;; File headers contain the BSD-3 license and the README.rdoc says that
1083 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
1084 ;; of the Expat license.
1085 (license license:bsd-3)))
1086
1087 (define-public ruby-pandoc-ruby
1088 (package
1089 (name "ruby-pandoc-ruby")
1090 (version "2.1.4")
1091 (source
1092 (origin
1093 (method git-fetch) ;the gem lacks many test files
1094 (uri (git-reference
1095 (url "https://github.com/xwmx/pandoc-ruby")
1096 (commit version)))
1097 (file-name (git-file-name name version))
1098 (sha256
1099 (base32
1100 "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935"))))
1101 (build-system ruby-build-system)
1102 (arguments
1103 `(#:phases
1104 (modify-phases %standard-phases
1105 (add-after 'unpack 'disable-failing-tests
1106 ;; TODO: Remove this phase after ghc-pandoc gets upgraded to 2.9.2+
1107 ;; (see: https://github.com/xwmx/pandoc-ruby/issues/39).
1108 (lambda _
1109 (substitute* "test/test_conversions.rb"
1110 (("next if from == to.*" all)
1111 (string-append
1112 all
1113 " next if ['plain', 'beamer'].include? to\n")))
1114 #t))
1115 (add-after 'unpack 'patch-pandoc-path
1116 (lambda* (#:key inputs #:allow-other-keys)
1117 (let ((pandoc (string-append (assoc-ref inputs "ghc-pandoc")
1118 "/bin/pandoc")))
1119 (substitute* "lib/pandoc-ruby.rb"
1120 (("@@pandoc_path = 'pandoc'")
1121 (format #f "@@pandoc_path = '~a'" pandoc)))
1122 (substitute* "test/test_pandoc_ruby.rb"
1123 (("('|\")pandoc" _ quote)
1124 (string-append quote pandoc))
1125 (("\\^pandoc")
1126 ".*pandoc"))
1127 #t)))
1128 (add-after 'extract-gemspec 'remove-Gemfile.lock
1129 (lambda _
1130 (delete-file "Gemfile.lock")
1131 (substitute* "pandoc-ruby.gemspec"
1132 (("Gemfile\\.lock") ""))
1133 #t)))))
1134 (native-inputs
1135 `(("ruby-mocha" ,ruby-mocha)))
1136 (inputs
1137 `(("ghc-pandoc" ,ghc-pandoc)))
1138 (synopsis "Ruby wrapper for Pandoc")
1139 (description "PandocRuby is a wrapper for Pandoc, a Haskell library with
1140 command line tools for converting one markup format to another. Pandoc can
1141 convert documents from a variety of formats including markdown,
1142 reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a
1143 variety of other formats, including markdown, reStructuredText, HTML, LaTeX,
1144 ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki
1145 markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and
1146 more.")
1147 (home-page "https://github.com/xwmx/pandoc-ruby")
1148 (license license:expat)))
1149
1150 (define-public ruby-slim
1151 (package
1152 (name "ruby-slim")
1153 (version "4.1.0")
1154 (source
1155 (origin
1156 (method url-fetch)
1157 (uri (rubygems-uri "slim" version))
1158 (sha256
1159 (base32
1160 "0gjx30g84c82qzg32bd7giscvb4206v7mvg56kc839w9wjagn36n"))))
1161 (build-system ruby-build-system)
1162 (arguments
1163 `(#:phases
1164 (modify-phases %standard-phases
1165 ;; See: https://github.com/slim-template/slim/issues/857 and
1166 ;; https://github.com/slim-template/slim/issues/858.
1167 (add-after 'unpack 'skip-broken-tests
1168 (lambda _
1169 (substitute* "test/core/test_embedded_engines.rb"
1170 (("def test_render_with_markdown")
1171 "def skipped_test_render_with_markdown"))
1172 (substitute* "test/translator/test_translator.rb"
1173 (("raise (\"Missing test for.*)" _ tail)
1174 (string-append "print " tail)))
1175 #t))
1176 ;; See: https://salsa.debian.org/ruby-team/ruby-slim/-/commit/
1177 ;; 824862bd99d1675bc699d8fc71ba965a785c1f44.
1178 (add-after 'unpack 'prevent-bundler-interference
1179 (lambda _
1180 (substitute* "Rakefile"
1181 (("require 'bundler/setup'") "nil")
1182 (("Bundler::GemHelper\\.install_tasks") "nil"))
1183 #t)))))
1184 (native-inputs
1185 `(("ruby-rack-test" ,ruby-rack-test)
1186 ("ruby-sinatra" ,ruby-sinatra)))
1187 (propagated-inputs
1188 `(("ruby-temple" ,ruby-temple)
1189 ("ruby-tilt" ,ruby-tilt)))
1190 (synopsis "Minimalist template language for Ruby")
1191 (description "Slim is a template language for Ruby that aims to reduce the
1192 syntax to the minimum while remaining clear.")
1193 (home-page "http://slim-lang.com/")
1194 (license license:expat)))
1195
1196 (define-public ruby-asciidoctor
1197 (package
1198 (name "ruby-asciidoctor")
1199 (version "2.0.10")
1200 (source
1201 (origin
1202 (method git-fetch) ;the gem release lacks a Rakefile
1203 (uri (git-reference
1204 (url "https://github.com/asciidoctor/asciidoctor")
1205 (commit (string-append "v" version))))
1206 (file-name (git-file-name name version))
1207 (sha256
1208 (base32
1209 "0jaxpnsdnx3qyjw5p2lsx1swny12q1i2vxw2kgdp4vlsyjv95z95"))))
1210 (build-system ruby-build-system)
1211 (arguments
1212 `(#:test-target "test:all"
1213 #:phases
1214 (modify-phases %standard-phases
1215 (replace 'replace-git-ls-files
1216 (lambda _
1217 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1218 ;; git ls-files output is merged in ruby-build-system.
1219 (substitute* "asciidoctor.gemspec"
1220 (("`git ls-files -z`")
1221 "`find . -type f -print0 |sort -z|cut -zc3-`"))
1222 #t))
1223 (add-after 'extract-gemspec 'strip-version-requirements
1224 (lambda _
1225 (delete-file "Gemfile")
1226 (substitute* "asciidoctor.gemspec"
1227 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1228 (string-append stripped "\n")))
1229 #t)))))
1230 (native-inputs
1231 `(("ruby-erubis" ,ruby-erubis)
1232 ("ruby-minitest" ,ruby-minitest)
1233 ("ruby-nokogiri" ,ruby-nokogiri)
1234 ("ruby-asciimath" ,ruby-asciimath)
1235 ("ruby-coderay" ,ruby-coderay)
1236 ("ruby-cucumber" ,ruby-cucumber)
1237 ("ruby-haml" ,ruby-haml)
1238 ("ruby-rouge" ,ruby-rouge)
1239 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
1240 ("ruby-simplecov" ,ruby-simplecov)
1241 ("ruby-slim" ,ruby-slim)
1242 ("ruby-tilt" ,ruby-tilt)))
1243 (synopsis "Converter from AsciiDoc content to other formats")
1244 (description "Asciidoctor is a text processor and publishing toolchain for
1245 converting AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other
1246 formats.")
1247 (home-page "https://asciidoctor.org")
1248 (license license:expat)))
1249
1250 (define-public ruby-prawn-icon
1251 (package
1252 (name "ruby-prawn-icon")
1253 (version "2.5.0")
1254 (source
1255 (origin
1256 (method url-fetch)
1257 (uri (rubygems-uri "prawn-icon" version))
1258 (sha256
1259 (base32
1260 "1ivkdf8rdf92hhy97vbmc2a4w97vcvqd58jcj4z9hz3hfsb1526w"))))
1261 (build-system ruby-build-system)
1262 (arguments
1263 `(#:test-target "spec"
1264 #:phases (modify-phases %standard-phases
1265 (add-after 'unpack 'remove-unnecessary-dependencies
1266 (lambda _
1267 (substitute* '("Rakefile" "spec/spec_helper.rb")
1268 ((".*[Bb]undler.*") "")
1269 (("^require 'rubocop.*") "")
1270 (("^RuboCop.*") ""))
1271 #t)))))
1272 (native-inputs
1273 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
1274 ("ruby-pdf-reader" ,ruby-pdf-reader)
1275 ("ruby-rspec" ,ruby-rspec)
1276 ("ruby-simplecov" ,ruby-simplecov)))
1277 (propagated-inputs
1278 `(("ruby-prawn" ,ruby-prawn)))
1279 (synopsis "Icon fonts for use with the Prawn PDF toolkit")
1280 (description "@code{Prawn::Icon} provides various icon fonts including
1281 FontAwesome, PaymentFont and Foundation Icons for use with the Prawn PDF
1282 toolkit.")
1283 (home-page "https://github.com/jessedoyle/prawn-icon/")
1284 (license %prawn-project-licenses)))
1285
1286 (define-public ruby-css-parser
1287 (package
1288 (name "ruby-css-parser")
1289 (version "1.7.1")
1290 (source
1291 (origin
1292 (method url-fetch)
1293 (uri (rubygems-uri "css_parser" version))
1294 (sha256
1295 (base32
1296 "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw"))))
1297 (build-system ruby-build-system)
1298 (arguments `(#:tests? #f)) ;gem doesn't ship with test suite
1299 (propagated-inputs
1300 `(("ruby-addressable" ,ruby-addressable)))
1301 (synopsis "Ruby Cascading Style Sheets (CSS) parser")
1302 (description "This package allows loading, parsing and cascading Cascading
1303 Style Sheets (CSS) rule sets in Ruby.")
1304 (home-page "https://github.com/premailer/css_parser")
1305 (license license:expat)))
1306
1307 (define-public ruby-prawn-svg
1308 (package
1309 (name "ruby-prawn-svg")
1310 (version "0.30.0")
1311 (source
1312 (origin
1313 (method url-fetch)
1314 (uri (rubygems-uri "prawn-svg" version))
1315 (sha256
1316 (base32
1317 "0df3l49cy3xpwi0b73hmi2ykbjg9kjwrvhk0k3z7qhh5ghmmrn77"))))
1318 (build-system ruby-build-system)
1319 (arguments
1320 `(#:phases (modify-phases %standard-phases
1321 (add-after 'unpack 'do-not-use-bundler
1322 (lambda _
1323 (substitute* "spec/spec_helper.rb"
1324 ((".*[Bb]undler.*") ""))
1325 #t))
1326 (replace 'check
1327 (lambda* (#:key tests? #:allow-other-keys)
1328 (when tests?
1329 (invoke "rspec" "-Ilib" "-rprawn-svg"))
1330 #t)))))
1331 (native-inputs
1332 `(("ruby-rspec" ,ruby-rspec)))
1333 (propagated-inputs
1334 `(("ruby-css-parser" ,ruby-css-parser)
1335 ("ruby-prawn" ,ruby-prawn)))
1336 (synopsis "SVG renderer for the Prawn PDF library")
1337 (description "This library allows rendering Scalable Vector Graphics (SVG)
1338 graphics directly into a Portable Document Format (PDF) document using the
1339 Prawn module.")
1340 (home-page "https://github.com/mogest/prawn-svg")
1341 (license license:expat)))
1342
1343 (define-public ruby-prawn-templates
1344 (package
1345 (name "ruby-prawn-templates")
1346 (version "0.1.2")
1347 (source
1348 (origin
1349 (method git-fetch)
1350 (uri (git-reference
1351 (url "https://github.com/prawnpdf/prawn-templates.git")
1352 (commit version)))
1353 (file-name (git-file-name name version))
1354 (sha256
1355 (base32
1356 "0wll54wxxwixpwazfn4ffbqvqbfrl01cfsv8y11vnlzy7isx5xvl"))))
1357 (build-system ruby-build-system)
1358 (arguments
1359 `(#:phases (modify-phases %standard-phases
1360 (add-after 'unpack 'do-not-use-bundler
1361 (lambda _
1362 (substitute* "spec/spec_helper.rb"
1363 ((".*[Bb]undler.*") ""))
1364 #t))
1365 (replace 'check
1366 (lambda* (#:key tests? #:allow-other-keys)
1367 (when tests?
1368 (invoke "rspec"))
1369 #t)))))
1370 (native-inputs
1371 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
1372 ("ruby-rspec" ,ruby-rspec)))
1373 (propagated-inputs
1374 `(("ruby-pdf-reader" ,ruby-pdf-reader)
1375 ("ruby-prawn" ,ruby-prawn)))
1376 (synopsis "Prawn extension to include or combine PDF documents")
1377 (description "This @strong{unmaintained} package provides a Prawn
1378 extension that allows including other Portable Document Format (PDF) documents
1379 as background or combining several PDF documents into one. This functionality
1380 used to be part of Prawn itself, but was extracted from Prawn 0.15.0 because
1381 of its many longstanding issues.")
1382 (home-page "https://github.com/prawnpdf/prawn-templates")
1383 (license %prawn-project-licenses)))
1384
1385 (define-public ruby-polyglot
1386 (package
1387 (name "ruby-polyglot")
1388 (version "0.3.5")
1389 (source
1390 (origin
1391 (method url-fetch)
1392 (uri (rubygems-uri "polyglot" version))
1393 (sha256
1394 (base32
1395 "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr"))))
1396 (build-system ruby-build-system)
1397 (arguments `(#:tests? #f)) ;no test suite
1398 (synopsis "Augment @code{require} to load non-Ruby file types")
1399 (description "The Polyglot library allows a Ruby module to register a
1400 loader for the file type associated with a filename extension, and it augments
1401 @code{require} to find and load matching files.")
1402 (home-page "https://github.com/cjheath/polyglot")
1403 (license license:expat)))
1404
1405 (define-public ruby-treetop
1406 (package
1407 (name "ruby-treetop")
1408 (version "1.6.10")
1409 (source
1410 (origin
1411 (method git-fetch) ;no test suite in distributed gem
1412 (uri (git-reference
1413 (url "https://github.com/cjheath/treetop.git")
1414 (commit (string-append "v" version))))
1415 (file-name (git-file-name name version))
1416 (sha256
1417 (base32
1418 "1dmk94z6ivhrz5hsq68vl5vgydhkz89n394rha1ymddw3rymbfcv"))))
1419 (build-system ruby-build-system)
1420 (arguments
1421 `(#:test-target "spec"
1422 #:phases
1423 (modify-phases %standard-phases
1424 (replace 'replace-git-ls-files
1425 (lambda _
1426 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1427 ;; git ls-files output is merged in ruby-build-system.
1428 (substitute* "treetop.gemspec"
1429 (("`git ls-files -z`")
1430 "`find . -type f -print0 |sort -z|cut -zc3-`"))
1431 #t)))))
1432 (native-inputs
1433 `(("ruby-activesupport" ,ruby-activesupport)
1434 ("ruby-rr" ,ruby-rr)
1435 ("ruby-rspec" ,ruby-rspec)))
1436 (propagated-inputs
1437 `(("ruby-polyglot" ,ruby-polyglot)))
1438 (synopsis "Ruby-based parsing DSL based on parsing expression grammars")
1439 (description "This package provides a Ruby-based Parsing Expression
1440 Grammar (PEG) parser generator Domain Specific Language (DSL).")
1441 (home-page "https://github.com/cjheath/treetop")
1442 (license license:expat)))
1443
1444 (define-public ruby-rubocop-performance
1445 (package
1446 (name "ruby-rubocop-performance")
1447 (version "1.7.1")
1448 (source
1449 (origin
1450 (method url-fetch)
1451 (uri (rubygems-uri "rubocop-performance" version))
1452 (sha256
1453 (base32
1454 "04r8d4x62ygv17spvz9yyfxbmbf8qxwhijs0xycfvzr0q4pyg9sw"))))
1455 (build-system ruby-build-system)
1456 (arguments
1457 `(#:tests? #f)) ;no test suite in the distributed gem
1458 (propagated-inputs
1459 `(("ruby-rubocop" ,ruby-rubocop)))
1460 (synopsis "Performance optimizations checkers for Ruby code")
1461 (description "This package provides a collection of RuboCop cops to check
1462 for performance optimizations in Ruby code.")
1463 (home-page "https://docs.rubocop.org/rubocop-performance/")
1464 (license license:expat)))
1465
1466 (define-public ruby-gimme
1467 (let ((revision "1")
1468 (commit "4e71f0236f1271871916dd403261d26533db34c0"))
1469 (package
1470 (name "ruby-gimme")
1471 (version (git-version "0.5.0" revision commit))
1472 (source
1473 (origin
1474 (method git-fetch)
1475 (uri (git-reference
1476 (url "https://github.com/searls/gimme.git")
1477 (commit commit)))
1478 (file-name (git-file-name name version))
1479 (sha256
1480 (base32
1481 "0hrd32ygvf3i7h47ak8f623cz8ns9q7g60nnnvvlnywbggjaz3h6"))))
1482 (build-system ruby-build-system)
1483 (native-inputs
1484 `(("ruby-coveralls" ,ruby-coveralls)
1485 ("ruby-cucumber" ,ruby-cucumber)
1486 ("ruby-pry" ,ruby-pry)
1487 ("ruby-simplecov" ,ruby-simplecov)
1488 ("ruby-rspec-given" ,ruby-rspec-given)))
1489 (arguments
1490 `(;; The cucumber task fails with error: "index 3 out of matches
1491 ;; (IndexError)", apparently due to our newer Cucumber version.
1492 ;; TODO: Try the "default" task with a future release.
1493 #:test-target "spec"
1494 #:phases
1495 (modify-phases %standard-phases
1496 (add-after 'extract-gemspec 'prepare-for-tests
1497 (lambda _
1498 ;; Delete failing tests (possibly due to our newer rspec
1499 ;; version).
1500 (delete-file "spec/gimme/gives_class_methods_spec.rb")
1501 (delete-file "spec/gimme/rspec_adapter_spec.rb")
1502 (delete-file "spec/gimme/verifies_class_methods_spec.rb")
1503 ;; Fix duplicate version requirements and de-register files.
1504 (delete-file "Gemfile")
1505 (delete-file "Gemfile.lock")
1506 (substitute* "gimme.gemspec"
1507 ((".*\"Gemfile\".*") "")
1508 ((".*\"Gemfile\\.lock\",.*") "")
1509 ((".*(rspec|cucumber).*\">= 0\".*") "")
1510 (("\"spec/gimme/gives_class_methods_spec.rb\",") "")
1511 (("\"spec/gimme/rspec_adapter_spec.rb\",") "")
1512 (("\"spec/gimme/verifies_class_methods_spec.rb\",") "")
1513 ;; All of these gems relate to development, and are
1514 ;; unnecessary when running the tests.
1515 ((".*(add|gem).*guard-.*") "")
1516 ((".*(add|gem).*jeweler.*") "")
1517 ((".*(add|gem).*pry.*") "")
1518 ((".*(add|gem).*growl.*") "")
1519 ((".*(add|gem).*rb-fsevent.*") ""))
1520 #t)))))
1521 (synopsis "Lightweight test double library for Ruby")
1522 (description "Gimme is a very lightweight test double library for Ruby,
1523 based on Mockito (a mocking framework for Java). It is an opinionated (but
1524 not noisy) means to facilitate test-driving by enabling the authors to specify
1525 only what they care about.")
1526 (home-page "https://github.com/searls/gimme")
1527 (license license:expat))))
1528
1529 (define-public ruby-standard
1530 (package
1531 (name "ruby-standard")
1532 (version "0.4.7")
1533 (source
1534 (origin
1535 (method git-fetch) ;no test suite in distributed gem
1536 (uri (git-reference
1537 (url "https://github.com/testdouble/standard.git")
1538 (commit (string-append "v" version))))
1539 (file-name (git-file-name name version))
1540 (sha256
1541 (base32
1542 "0ylx0lm2pbbgr5h7fban592w96bl3wxmvfcpcdfrhkxnpg5kiwgv"))))
1543 (build-system ruby-build-system)
1544 (arguments
1545 ;; TODO: the tests are currently broken due to using a newer Rubocop.
1546 `(#:tests? #f
1547 #:phases
1548 (modify-phases %standard-phases
1549 (add-after 'unpack 'relax-version-requiremens
1550 (lambda _
1551 (delete-file "Gemfile")
1552 (delete-file "Gemfile.lock")
1553 #t))
1554 (replace 'replace-git-ls-files
1555 (lambda _
1556 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1557 ;; git ls-files output is merged in ruby-build-system.
1558 (substitute* "standard.gemspec"
1559 (("`git ls-files -z`")
1560 "`find . -type f -not -regex '.*\\.gem$' -print0 \
1561 |sort -z|cut -zc3-`"))
1562 #t)))))
1563 (native-inputs
1564 `(("ruby-gimme" ,ruby-gimme)
1565 ("ruby-pry" ,ruby-pry)
1566 ("ruby-simplecov" ,ruby-simplecov)))
1567 (propagated-inputs
1568 `(("ruby-rubocop" ,ruby-rubocop)
1569 ("ruby-rubocop-performance" ,ruby-rubocop-performance)))
1570 (synopsis "Ruby Style Guide, with linter & automatic code fixer")
1571 (description "Standard is a port of StandardJS. Like StandardJS, it aims
1572 to save time in the following ways:
1573 @itemize
1574 @item No configuration.
1575 @item Automatically format code.
1576 @item Catch style issues and programmer errors early.
1577 @end itemize")
1578 (home-page "https://github.com/testdouble/standard")
1579 (license license:expat)))
1580
1581 (define-public ruby-chunky-png
1582 (package
1583 (name "ruby-chunky-png")
1584 (version "1.3.12")
1585 (source
1586 (origin
1587 (method git-fetch)
1588 (uri (git-reference
1589 (url "https://github.com/wvanbergen/chunky_png.git")
1590 (commit (string-append "v" version))))
1591 (file-name (git-file-name name version))
1592 (sha256
1593 (base32
1594 "0hn8ap7iib47qkqdp0awmxgma11z0lmk1ca3lp7c97ykhv7ij1zs"))))
1595 (build-system ruby-build-system)
1596 (arguments
1597 `(#:test-target "spec"
1598 #:phases
1599 (modify-phases %standard-phases
1600 (add-after 'unpack 'disable-bundler
1601 (lambda _
1602 (substitute* (find-files "." "\\.rb$")
1603 (("require.*bundler/setup.*") ""))
1604 #t))
1605 (replace 'replace-git-ls-files
1606 (lambda _
1607 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1608 ;; git ls-files output is merged in ruby-build-system.
1609 (substitute* "chunky_png.gemspec"
1610 (("`git ls-files`")
1611 "`find . -type f -not -regex '.*\\.gem$' |sort |cut -c3-`"))
1612 #t)))))
1613 (native-inputs
1614 `(("bundler" ,bundler)
1615 ("ruby-rspec" ,ruby-rspec)
1616 ("ruby-standard" ,ruby-standard)
1617 ("ruby-yard" ,ruby-yard)))
1618 (synopsis "Ruby library to handle PNG images")
1619 (description "ChunkyPNG is a pure Ruby library that can read and write
1620 Portable Network Graphics (PNG) images without depending on an external image
1621 library. It tries to be memory efficient and reasonably fast. It has
1622 features such as:
1623 @itemize
1624 @item
1625 Decoding support for any image that the PNG standard allows. This includes all
1626 standard color modes, all bit depths, all transparency, and interlacing and
1627 filtering options.
1628 @item
1629 Encoding support for images of all color modes (true color, grayscale, and
1630 indexed) and transparency for all these color modes. The best color mode is
1631 chosen automatically, based on the amount of used colors.
1632 @item Read/write access to the image's pixels.
1633 @item Read/write access to all image metadata that is stored in chunks.
1634 @item
1635 Memory efficiency: @code{fixnum} are used, i.e. 4 or 8 bytes of memory per
1636 pixel, depending on the hardware).
1637 @item
1638 Performance: ChunkyPNG is reasonably fast for Ruby standards, by only using
1639 integer math and a highly optimized saving routine.
1640 @item Interoperability with RMagick.
1641 @end itemize")
1642 (home-page "https://github.com/wvanbergen/chunky_png/wiki")
1643 (license license:expat)))
1644
1645 (define-public ruby-text-hyphen
1646 (package
1647 (name "ruby-text-hyphen")
1648 (version "1.4.1")
1649 (source
1650 (origin
1651 (method url-fetch)
1652 (uri (rubygems-uri "text-hyphen" version))
1653 (sha256
1654 (base32
1655 "1gj4awvs9ryf960m0iawg43jyjmfwcqgfwrbcfp890a57b9ag7q1"))))
1656 (build-system ruby-build-system)
1657 (native-inputs
1658 `(("ruby-hoe" ,ruby-hoe)))
1659 (synopsis "Ruby library to hyphenate words in various languages")
1660 (description "Text::Hyphen is a Ruby library to hyphenate words in various
1661 languages using Ruby-fied versions of TeX hyphenation patterns. It will
1662 properly hyphenate various words according to the rules of the language the
1663 word is written in. The algorithm is based on that of the TeX typesetting
1664 system by Donald E. Knuth.")
1665 (home-page "https://github.com/halostatue/text-hyphen")
1666 ;; The whole is licensed under the Expat license, but parts use various
1667 ;; versions of the LaTeX Project Public License.
1668 (license license:expat)))
1669
1670 (define-public ruby-open-uri-cached
1671 (package
1672 (name "ruby-open-uri-cached")
1673 (version "0.0.5")
1674 (source
1675 (origin
1676 (method url-fetch)
1677 (uri (rubygems-uri "open-uri-cached" version))
1678 (sha256
1679 (base32
1680 "13xy2vhrgz9mdxhklw5fszhamsdxh8ysf3l40g92hqm4hm288wap"))))
1681 (build-system ruby-build-system)
1682 (arguments
1683 `(#:tests? #f)) ;no test suite
1684 (synopsis "OpenURI with transparent disk caching")
1685 (description "OpenURI with transparent disk caching, which is
1686 useful to avoid making excessive queries, for example when scraping
1687 web pages.")
1688 (home-page "https://github.com/tigris/open-uri-cached")
1689 (license license:expat)))
1690
1691 (define-public ruby-asciidoctor-pdf
1692 ;; Use the latest commit, as the last tag doesn't build with the
1693 ;; latest Ruby dependencies in Guix.
1694 (let ((revision "1")
1695 (commit "d257440df895d1595a3825ef58b32e4b290ba1c3"))
1696 (package
1697 (name "ruby-asciidoctor-pdf")
1698 (version (git-version "1.5.3" revision commit))
1699 (source
1700 (origin
1701 (method git-fetch) ;no test suite in the distributed gem
1702 (uri (git-reference
1703 (url "https://github.com/asciidoctor/asciidoctor-pdf.git")
1704 (commit commit)))
1705 (file-name (git-file-name name version))
1706 (sha256
1707 (base32
1708 "1563d11ghzsrsg4inwfwj6b9hb5sk5b429f49fwq5qg3sq76kgjj"))))
1709 (build-system ruby-build-system)
1710 (arguments
1711 `(#:test-target "spec"
1712 #:phases
1713 (modify-phases %standard-phases
1714 (add-after 'unpack 'remove-failing-tests
1715 ;; Two tests module fail for unknown reasons, *only* when
1716 ;; ran in the build container (see:
1717 ;; https://github.com/asciidoctor/asciidoctor-pdf/issues/1725#issuecomment-658777965).
1718 (lambda _
1719 (delete-file "spec/audio_spec.rb")
1720 (delete-file "spec/video_spec.rb")
1721 #t))
1722 (add-after 'extract-gemspec 'strip-version-requirements
1723 (lambda _
1724 (substitute* "asciidoctor-pdf.gemspec"
1725 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1726 (string-append stripped "\n")))
1727 #t))
1728 (replace 'replace-git-ls-files
1729 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1730 ;; git ls-files output is merged in ruby-build-system.
1731 (lambda _
1732 (substitute* "asciidoctor-pdf.gemspec"
1733 (("`git ls-files -z`")
1734 "`find . -type f -not -regex '.*\\.gem$' -print0 \
1735 |sort -z|cut -zc3-`"))
1736 #t))
1737 ;; The tests rely on the Gem being installed, so move the check phase
1738 ;; after the install phase.
1739 (delete 'check)
1740 (add-after 'install 'check
1741 (lambda* (#:key outputs tests? #:allow-other-keys)
1742 (let ((new-gem (string-append (assoc-ref outputs "out")
1743 "/lib/ruby/vendor_ruby")))
1744 (setenv "GEM_PATH"
1745 (string-append (getenv "GEM_PATH") ":" new-gem))
1746 (when tests?
1747 (invoke "rspec" "-t" "~visual" "-t" "~cli" "-t" "~network"))
1748 #t))))))
1749 (native-inputs
1750 `(("ruby-chunky-png" ,ruby-chunky-png)
1751 ("ruby-coderay" ,ruby-coderay)
1752 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
1753 ("ruby-rouge" ,ruby-rouge)
1754 ("ruby-rspec" ,ruby-rspec)))
1755 (propagated-inputs
1756 `(("ruby-asciidoctor" ,ruby-asciidoctor)
1757 ("ruby-concurrent-ruby" ,ruby-concurrent)
1758 ("ruby-open-uri-cached" ,ruby-open-uri-cached)
1759 ("ruby-prawn" ,ruby-prawn)
1760 ("ruby-prawn-icon" ,ruby-prawn-icon)
1761 ("ruby-prawn-svg" ,ruby-prawn-svg)
1762 ("ruby-prawn-table" ,ruby-prawn-table)
1763 ("ruby-prawn-templates" ,ruby-prawn-templates)
1764 ("ruby-safe-yaml" ,ruby-safe-yaml)
1765 ("ruby-text-hyphen" ,ruby-text-hyphen)
1766 ("ruby-thread-safe" ,ruby-thread-safe)
1767 ("ruby-treetop" ,ruby-treetop)
1768 ("ruby-ttfunk" ,ruby-ttfunk)))
1769 (synopsis"AsciiDoc to Portable Document Format (PDF)} converter")
1770 (description "Asciidoctor PDF is an extension for Asciidoctor that
1771 converts AsciiDoc documents to Portable Document Format (PDF) using the Prawn
1772 PDF library. It has features such as:
1773 @itemize
1774 @item Direct AsciiDoc to PDF conversion
1775 @item Configuration-driven theme (style and layout)
1776 @item Scalable Vector Graphics (SVG) support
1777 @item PDF document outline (i.e., bookmarks)
1778 @item Table of contents page(s)
1779 @item Document metadata (title, authors, subject, keywords, etc.)
1780 @item Internal cross reference links
1781 @item Syntax highlighting with Rouge, Pygments, or CodeRay
1782 @item Page numbering
1783 @item Customizable running content (header and footer)
1784 @item
1785 “Keep together” blocks (i.e., page breaks avoided in certain block content)
1786 @item Orphaned section titles avoided
1787 @item Autofit verbatim blocks (as permitted by base_font_size_min setting)
1788 @item Table border settings honored
1789 @item Font-based icons
1790 @item Custom TrueType (TTF) fonts
1791 @item Double-sided printing mode (margins alternate on recto and verso pages)
1792 @end itemize")
1793 (home-page "https://asciidoctor.org/docs/asciidoctor-pdf")
1794 (license license:expat))))
1795
1796 (define-public ruby-ast
1797 (package
1798 (name "ruby-ast")
1799 (version "2.4.1")
1800 (source
1801 (origin
1802 (method git-fetch) ;no test included in gem from v2.4.1
1803 (uri (git-reference
1804 (url "https://github.com/whitequark/ast")
1805 (commit (string-append "v" version))))
1806 (file-name (git-file-name name version))
1807 (sha256
1808 (base32
1809 "0k8vya256chimy473g818gim06m5rjgh6mz5sc5g8xz3csh3rysi"))))
1810 (build-system ruby-build-system)
1811 (arguments
1812 '(#:phases
1813 (modify-phases %standard-phases
1814 (add-after 'unpack 'remove-coveralls-requirement
1815 (lambda _
1816 (substitute* "test/helper.rb"
1817 (("require 'coveralls'") "")
1818 (("Coveralls::SimpleCov::Formatter") ""))
1819 #t))
1820 (add-after 'extract-gemspec 'remove-unnecessary-requirements
1821 (lambda _
1822 (substitute* "ast.gemspec"
1823 ((".*coveralls.*") "\n")
1824 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
1825 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
1826 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n"))
1827 #t)))))
1828 (native-inputs
1829 `(("bundler" ,bundler)
1830 ("ruby-simplecov" ,ruby-simplecov)
1831 ("ruby-json-pure" ,ruby-json-pure)
1832 ("ruby-mime-times" ,ruby-mime-types)
1833 ("ruby-yard" ,ruby-yard)
1834 ("ruby-kramdown" ,ruby-kramdown)
1835 ("ruby-rest-client" ,ruby-rest-client)
1836 ("ruby-bacon" ,ruby-bacon)
1837 ("ruby-bacon-colored-output" ,ruby-bacon-colored-output)
1838 ("ruby-racc" ,ruby-racc)))
1839 (synopsis "Library for working with Abstract Syntax Trees")
1840 (description
1841 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
1842 It does this through immutable data structures.")
1843 (home-page "https://whitequark.github.io/ast/")
1844 (license license:expat)))
1845
1846 (define-public ruby-sporkmonger-rack-mount
1847 ;; Testing the addressable gem requires a newer commit than that released, so
1848 ;; use an up to date version.
1849 (let ((revision "1")
1850 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
1851 (package
1852 (name "ruby-sporkmonger-rack-mount")
1853 (version (git-version "0.8.3" revision commit))
1854 (source (origin
1855 (method git-fetch)
1856 (uri (git-reference
1857 (url "https://github.com/sporkmonger/rack-mount")
1858 (commit commit)))
1859 (file-name (git-file-name name version))
1860 (sha256
1861 (base32
1862 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
1863 (build-system ruby-build-system)
1864 (arguments
1865 ;; Tests currently fail so disable them.
1866 ;; https://github.com/sporkmonger/rack-mount/pull/1
1867 `(#:tests? #f))
1868 (propagated-inputs `(("ruby-rack" ,ruby-rack)))
1869 (synopsis "Stackable dynamic tree based Rack router")
1870 (description
1871 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
1872 continue trying routes if the response returns pass. This allows multiple
1873 routes to be nested or stacked on top of each other.")
1874 (home-page "https://github.com/sporkmonger/rack-mount")
1875 (license license:expat))))
1876
1877 (define-public ruby-ci-reporter
1878 (package
1879 (name "ruby-ci-reporter")
1880 (version "2.0.0")
1881 (source (origin
1882 (method url-fetch)
1883 (uri (rubygems-uri "ci_reporter" version))
1884 (sha256
1885 (base32
1886 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
1887 (build-system ruby-build-system)
1888 (arguments
1889 `(#:test-target "rspec"))
1890 (propagated-inputs
1891 `(("ruby-builder" ,ruby-builder)))
1892 (native-inputs
1893 `(("bundler" ,bundler)
1894 ("ruby-rspec" ,ruby-rspec)))
1895 (synopsis "Generate XML reports of runs test")
1896 (description
1897 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
1898 you to generate XML reports of your test runs. The resulting files can be
1899 read by a continuous integration system that understands Ant's JUnit report
1900 format.")
1901 (home-page "https://github.com/nicksieger/ci_reporter")
1902 (license license:expat)))
1903
1904 (define-public ruby-contracts
1905 (package
1906 (name "ruby-contracts")
1907 (version "0.16.0")
1908 (source
1909 (origin
1910 (method url-fetch)
1911 (uri (rubygems-uri "contracts" version))
1912 (sha256
1913 (base32
1914 "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"))))
1915 (build-system ruby-build-system)
1916 (arguments
1917 '(#:test-target "spec"
1918 #:phases
1919 (modify-phases %standard-phases
1920 ;; Don't run or require rubocop, the code linting tool, as this is a
1921 ;; bit unnecessary.
1922 (add-after 'unpack 'dont-run-rubocop
1923 (lambda _
1924 (substitute* "Rakefile"
1925 ((".*rubocop.*") "")
1926 ((".*RuboCop.*") ""))
1927 #t)))))
1928 (native-inputs
1929 `(("ruby-rspec" ,ruby-rspec)))
1930 (synopsis "Method contracts for Ruby")
1931 (description
1932 "This library provides contracts for Ruby. A contract describes the
1933 correct inputs and output for a method, and will raise an error if a incorrect
1934 value is found.")
1935 (home-page "https://github.com/egonSchiele/contracts.ruby")
1936 (license license:bsd-2)))
1937
1938 (define-public ruby-crack
1939 (package
1940 (name "ruby-crack")
1941 (version "0.4.3")
1942 (source
1943 (origin
1944 (method url-fetch)
1945 (uri (rubygems-uri "crack" version))
1946 (sha256
1947 (base32
1948 "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k"))))
1949 (build-system ruby-build-system)
1950 (arguments
1951 `(#:phases
1952 (modify-phases %standard-phases
1953 (replace 'check
1954 (lambda* (#:key tests? #:allow-other-keys)
1955 (when tests?
1956 (for-each (lambda (file)
1957 (display file)(display "\n")
1958 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
1959 (find-files "test" ".*rb$")))
1960 #t)))))
1961 (propagated-inputs
1962 `(("ruby-safe-yaml" ,ruby-safe-yaml)))
1963 (synopsis "Simple JSON and XML parsing for Ruby")
1964 (description
1965 "@code{crack} provides really simple JSON and XML parsing, extracted from
1966 code in Merb and Rails.")
1967 (home-page "https://github.com/jnunemaker/crack")
1968 (license license:expat)))
1969
1970 (define-public ruby-cliver
1971 (package
1972 (name "ruby-cliver")
1973 (version "0.3.2")
1974 (source
1975 (origin
1976 (method url-fetch)
1977 (uri (rubygems-uri "cliver" version))
1978 (sha256
1979 (base32
1980 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
1981 (build-system ruby-build-system)
1982 (arguments
1983 '(#:phases
1984 (modify-phases %standard-phases
1985 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
1986 ;; would be nice, but the tests look to be incompatible:
1987 ;;
1988 ;; NoMethodError: undefined method `last_comment'
1989 (replace 'check
1990 (lambda* (#:key tests? #:allow-other-keys)
1991 (when tests?
1992 (invoke "rspec"))
1993 #t)))))
1994 (native-inputs
1995 `(("bundler" ,bundler)
1996 ("ruby-rspec" ,ruby-rspec-2)))
1997 (synopsis "Assertions for command-line dependencies in Ruby")
1998 (description
1999 "@code{cliver} provides a way to detect missing command-line
2000 dependencies, including versions.")
2001 (home-page "https://github.com/yaauie/cliver")
2002 (license license:expat)))
2003
2004 (define-public ruby-czmq-ffi-gen
2005 (package
2006 (name "ruby-czmq-ffi-gen")
2007 (version "0.13.0")
2008 (source
2009 (origin
2010 (method url-fetch)
2011 (uri (rubygems-uri "czmq-ffi-gen" version))
2012 (sha256
2013 (base32
2014 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
2015 (build-system ruby-build-system)
2016 (arguments
2017 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
2018 #:phases
2019 (modify-phases %standard-phases
2020 (add-after 'unpack 'patch-lib_dirs
2021 (lambda* (#:key inputs #:allow-other-keys)
2022 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
2023 (("lib\\_dirs = \\[.*\\]")
2024 (string-append "lib_dirs = ['"
2025 (assoc-ref inputs "czmq") "/lib"
2026 "']")))
2027 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
2028 (("lib\\_dirs = \\[.*\\]")
2029 (string-append "lib_dirs = ['"
2030 (assoc-ref inputs "zeromq") "/lib"
2031 "']"))))))))
2032 (inputs
2033 `(("zeromq" ,zeromq)
2034 ("czmq" ,czmq)))
2035 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
2036 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
2037 (description
2038 "These Ruby bindings are not intended to be directly used, but rather
2039 used by higher level bindings like those provided by CZTop.")
2040 (home-page
2041 "https://github.com/paddor/czmq-ffi-gen")
2042 (license license:isc)))
2043
2044 (define-public ruby-cztop
2045 (package
2046 (name "ruby-cztop")
2047 (version "0.12.2")
2048 (source
2049 (origin
2050 (method url-fetch)
2051 (uri (rubygems-uri "cztop" version))
2052 (sha256
2053 (base32
2054 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
2055 (build-system ruby-build-system)
2056 (arguments
2057 '(#:test-target "spec"
2058 #:phases
2059 (modify-phases %standard-phases
2060 (add-after 'unpack 'patch-lib_paths
2061 (lambda* (#:key inputs #:allow-other-keys)
2062 (substitute* "lib/cztop/poller/zmq.rb"
2063 (("lib\\_paths = \\[.*\\]")
2064 (string-append "lib_paths = ['"
2065 (assoc-ref inputs "zeromq") "/lib"
2066 "']"))))))))
2067 (native-inputs
2068 `(("bundler" ,bundler)
2069 ("ruby-rspec" ,ruby-rspec)))
2070 (inputs
2071 `(("zeromq" ,zeromq)))
2072 (propagated-inputs
2073 `(("ruby-czmq-ffi-gen" ,ruby-czmq-ffi-gen)))
2074 (synopsis "CZMQ Ruby bindings")
2075 (description
2076 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
2077 CZMQ. The focus of of CZTop is on being easy to use and providing first class
2078 support for security mechanisms.")
2079 (home-page "https://github.com/paddor/cztop")
2080 (license license:isc)))
2081
2082 (define-public ruby-saikuro-treemap
2083 (package
2084 (name "ruby-saikuro-treemap")
2085 (version "0.2.0")
2086 (source (origin
2087 (method url-fetch)
2088 (uri (rubygems-uri "saikuro_treemap" version))
2089 (sha256
2090 (base32
2091 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
2092 (build-system ruby-build-system)
2093 ;; Some of the tests fail because the generated JSON has keys in a
2094 ;; different order. This is a problem with the test suite rather than any
2095 ;; of the involved libraries.
2096 (arguments `(#:tests? #f))
2097 (propagated-inputs
2098 `(("ruby-json-pure" ,ruby-json-pure)
2099 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
2100 (synopsis "Generate complexity treemap based on saikuro analysis")
2101 (description
2102 "This gem generates a treemap showing the complexity of Ruby code on
2103 which it is run. It uses Saikuro under the covers to analyze Ruby code
2104 complexity.")
2105 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
2106 (license license:expat)))
2107
2108 (define-public ruby-oauth2
2109 (package
2110 (name "ruby-oauth2")
2111 (version "1.4.2")
2112 (source
2113 (origin
2114 (method url-fetch)
2115 (uri (rubygems-uri "oauth2" version))
2116 (sha256
2117 (base32 "15i9z4j5pcjkr30lkcd79xzbr4kpmy0bqgwa436fqyqk646fv036"))))
2118 (build-system ruby-build-system)
2119 (arguments
2120 '(#:tests? #f)) ; no included tests
2121 (propagated-inputs
2122 `(("ruby-faraday" ,ruby-faraday)
2123 ("ruby-jwt" ,ruby-jwt)
2124 ("ruby-multi-json" ,ruby-multi-json)
2125 ("ruby-multi-xml" ,ruby-multi-xml)
2126 ("ruby-rack" ,ruby-rack)))
2127 (synopsis "Ruby wrapper for the OAuth 2.0")
2128 (description
2129 "This package provides a Ruby wrapper for the OAuth 2.0 protocol built
2130 with a similar style to the original OAuth spec.")
2131 (home-page "https://github.com/oauth-xx/oauth2")
2132 (license license:expat)))
2133
2134 (define-public ruby-omniauth
2135 (package
2136 (name "ruby-omniauth")
2137 (version "1.9.1")
2138 (source
2139 (origin
2140 (method url-fetch)
2141 (uri (rubygems-uri "omniauth" version))
2142 (sha256
2143 (base32 "002vi9gwamkmhf0dsj2im1d47xw2n1jfhnzl18shxf3ampkqfmyz"))))
2144 (build-system ruby-build-system)
2145 (arguments
2146 '(#:tests? #f)) ; No included tests
2147 (propagated-inputs
2148 `(("ruby-hashie" ,ruby-hashie)
2149 ("ruby-rack" ,ruby-rack)))
2150 (synopsis "Generalized Rack framework for multiple-provider authentication")
2151 (description
2152 "This package provides a generalized Rack framework for multiple-provider
2153 authentication.")
2154 (home-page "https://github.com/omniauth/omniauth")
2155 (license license:expat)))
2156
2157 (define-public ruby-omniauth-oauth2
2158 (package
2159 (name "ruby-omniauth-oauth2")
2160 (version "1.6.0")
2161 (source
2162 (origin
2163 (method url-fetch)
2164 (uri (rubygems-uri "omniauth-oauth2" version))
2165 (sha256
2166 (base32
2167 "11mi36l9d97r77q99jnafdc1yaa0a9wahhpp7dj7ank8q52g7g79"))))
2168 (build-system ruby-build-system)
2169 (arguments
2170 '(#:phases
2171 (modify-phases %standard-phases
2172 (add-after 'unpack 'remove-unnecessary-dependencies
2173 (lambda _
2174 ;; The coveralls gem submits coverage information to an online
2175 ;; service, and is unnecessary when running the tests
2176 (substitute* "Gemfile"
2177 ((".*coveralls\"") ""))
2178 (substitute* "spec/helper.rb"
2179 (("require \"coveralls\"") "")
2180 (("Coveralls::SimpleCov::Formatter") ""))
2181 #t)))))
2182 (propagated-inputs
2183 `(("ruby-oauth2" ,ruby-oauth2)
2184 ("ruby-omniauth" ,ruby-omniauth)))
2185 (native-inputs
2186 `(("bundler" ,bundler)
2187 ("ruby-rspec" ,ruby-rspec)
2188 ("ruby-simplecov" ,ruby-simplecov)
2189 ("ruby-rack-test" ,ruby-rack-test)
2190 ("ruby-webmock" ,ruby-webmock-2)))
2191 (synopsis "Abstract OAuth2 strategy for OmniAuth")
2192 (description
2193 "This library provides a generic OAuth2 strategy for OmniAuth. It
2194 doesn't provide a way to gather user information, so should be used as a
2195 building block for authentication strategies.")
2196 (home-page "https://github.com/omniauth/omniauth-oauth2")
2197 (license license:expat)))
2198
2199 (define-public ruby-open4
2200 (package
2201 (name "ruby-open4")
2202 (version "1.3.4")
2203 (source
2204 (origin
2205 (method url-fetch)
2206 (uri (rubygems-uri "open4" version))
2207 (sha256
2208 (base32
2209 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
2210 (build-system ruby-build-system)
2211 (arguments
2212 '(#:phases
2213 (modify-phases %standard-phases
2214 (add-after 'unpack 'patch
2215 (lambda _
2216 (substitute* "rakefile"
2217 ;; Update the Rakefile so it works
2218 (("-rubygems") "-rrubygems")
2219 (("Config") "RbConfig"))
2220 #t))
2221 (add-before 'check 'set-LIB
2222 (lambda _
2223 ;; This is used in the rakefile when running the tests
2224 (setenv "LIB" "open4")
2225 #t)))))
2226 (synopsis "Open child processes from Ruby and manage them easily")
2227 (description
2228 "@code{Open4} is a Ruby library to run child processes and manage their
2229 input and output.")
2230 (home-page "https://github.com/ahoward/open4")
2231 (license license:ruby)))
2232
2233 (define-public ruby-options
2234 (package
2235 (name "ruby-options")
2236 (version "2.3.2")
2237 (source
2238 (origin
2239 (method url-fetch)
2240 (uri (rubygems-uri "options" version))
2241 (sha256
2242 (base32
2243 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
2244 (build-system ruby-build-system)
2245 (arguments
2246 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
2247 #:phases
2248 (modify-phases %standard-phases
2249 (add-before 'check 'set-LIB
2250 (lambda _
2251 ;; This is used in the Rakefile, and setting it avoids an issue
2252 ;; with running the tests.
2253 (setenv "LIB" "options")
2254 #t)))))
2255 (synopsis "Ruby library to parse options from *args cleanly")
2256 (description
2257 "The @code{options} library helps with parsing keyword options in Ruby
2258 functions.")
2259 (home-page "https://github.com/ahoward/options")
2260 (license license:ruby)))
2261
2262 (define-public ruby-erubi
2263 (package
2264 (name "ruby-erubi")
2265 (version "1.8.0")
2266 (source
2267 (origin
2268 (method url-fetch)
2269 (uri (rubygems-uri "erubi" version))
2270 (sha256
2271 (base32
2272 "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1"))))
2273 (build-system ruby-build-system)
2274 (synopsis "ERB template engine for Ruby")
2275 (description
2276 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
2277 Erubis")
2278 (home-page "https://github.com/jeremyevans/erubi")
2279 (license license:expat)))
2280
2281 (define-public ruby-erubis
2282 (package
2283 (name "ruby-erubis")
2284 (version "2.7.0")
2285 (source
2286 (origin
2287 (method url-fetch)
2288 (uri (rubygems-uri "erubis" version))
2289 (sha256
2290 (base32
2291 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
2292 (build-system ruby-build-system)
2293 (arguments
2294 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
2295 (synopsis "Implementation of embedded Ruby (eRuby)")
2296 (description
2297 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
2298 features such as multi-language support, auto escaping, auto trimming spaces
2299 around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
2300 support.")
2301 (home-page "http://www.kuwata-lab.com/erubis/")
2302 (license license:expat)))
2303
2304 (define-public ruby-execjs
2305 (package
2306 (name "ruby-execjs")
2307 (version "2.7.0")
2308 (source
2309 (origin
2310 ;; fetch from github as the gem does not contain testing code
2311 (method git-fetch)
2312 (uri (git-reference
2313 (url "https://github.com/rails/execjs")
2314 (commit (string-append "v" version))))
2315 (file-name (git-file-name name version))
2316 (sha256
2317 (base32
2318 "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
2319 (build-system ruby-build-system)
2320 (native-inputs
2321 `(("bundler" ,bundler)
2322 ;; The test suite tests all the available backends. Currenly, this just
2323 ;; means the node backend.
2324 ;;
2325 ;; PASSED: test:node
2326 ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
2327 ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
2328 ("node" ,node)))
2329 (synopsis "Run JavaScript code from Ruby")
2330 (description
2331 "ExecJS lets you run JavaScript code from Ruby. It automatically picks a
2332 runtime to evaluate your JavaScript program, then returns the result to you as
2333 a Ruby object.")
2334 (home-page "https://github.com/rails/execjs")
2335 (license license:expat)))
2336
2337 (define-public ruby-fakefs
2338 (package
2339 (name "ruby-fakefs")
2340 (version "1.2.2")
2341 (home-page "https://github.com/fakefs/fakefs")
2342 (source (origin
2343 ;; The Rubygems release does not contain tests.
2344 (method git-fetch)
2345 (uri (git-reference
2346 (url home-page)
2347 (commit (string-append "v" version))))
2348 (file-name (git-file-name name version))
2349 (sha256
2350 (base32
2351 "008dq9knyip2bfbl0mrk8b8r7bv0k3bf128wcfqsgy1rqal4mgwk"))))
2352 (build-system ruby-build-system)
2353 (arguments
2354 '(#:phases (modify-phases %standard-phases
2355 (replace 'replace-git-ls-files
2356 (lambda _
2357 (substitute* "fakefs.gemspec"
2358 (("`git ls-files lib README.md LICENSE`")
2359 "`find lib README.md LICENSE -type f | sort`"))
2360 #t))
2361 (add-before 'check 'remove-version-constraints
2362 (lambda _
2363 ;; Drop hard version requirements for test dependencies.
2364 (substitute* "fakefs.gemspec"
2365 (("(.*add_development_dependency .*), .*" _ dep)
2366 (string-append dep "\n")))
2367 #t)))))
2368 (native-inputs
2369 `(("ruby-bump" ,ruby-bump)
2370 ("ruby-maxitest" ,ruby-maxitest)
2371 ("ruby-rubocop" ,ruby-rubocop)
2372 ("ruby-rspec" ,ruby-rspec)))
2373 (synopsis "Fake file system for Ruby")
2374 (description
2375 "This package provides a fake file system for use in test suites. It
2376 avoids the need for manually creating temporary directories, or dealing
2377 with platform intricacies in @code{File} and @code{FileUtils}.")
2378 (license license:expat)))
2379
2380 (define-public ruby-orderedhash
2381 (package
2382 (name "ruby-orderedhash")
2383 (version "0.0.6")
2384 (source (origin
2385 (method url-fetch)
2386 (uri (rubygems-uri "orderedhash" version))
2387 (sha256
2388 (base32
2389 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
2390 (build-system ruby-build-system)
2391 (arguments
2392 '(#:tests? #f)) ; no test suite
2393 (synopsis "Ruby library providing an order-preserving hash")
2394 (description "Orderedhash is a Ruby library providing a hash
2395 implementation that preserves the order of items and features some array-like
2396 extensions.")
2397 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
2398 (license license:public-domain)))
2399
2400 (define-public ruby-libxml
2401 (package
2402 (name "ruby-libxml")
2403 (version "3.0.0")
2404 (source
2405 (origin
2406 (method url-fetch)
2407 (uri (rubygems-uri "libxml-ruby" version))
2408 (sha256
2409 (base32
2410 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
2411 (build-system ruby-build-system)
2412 (inputs
2413 `(("zlib" ,zlib)
2414 ("libxml2" ,libxml2)))
2415 (arguments
2416 '(#:tests? #f ; test suite hangs for unknown reason
2417 #:gem-flags
2418 (list "--"
2419 (string-append "--with-xml2-include="
2420 (assoc-ref %build-inputs "libxml2")
2421 "/include/libxml2" ))))
2422 (synopsis "Ruby bindings for GNOME Libxml2")
2423 (description "The Libxml-Ruby project provides Ruby language bindings for
2424 the GNOME Libxml2 XML toolkit.")
2425 (home-page "https://xml4r.github.com/libxml-ruby")
2426 (license license:expat)))
2427
2428 (define-public ruby-lino
2429 (package
2430 (name "ruby-lino")
2431 (version "1.1.0")
2432 (source
2433 (origin
2434 (method url-fetch)
2435 (uri (rubygems-uri "lino" version))
2436 (sha256
2437 (base32
2438 "11d29g0fk372b9fcpyr0k6hxm2b4j4igpysmi542hgbbgqgp9cd3"))))
2439 (build-system ruby-build-system)
2440 (arguments
2441 '(#:tests? #f)) ; No included tests
2442 (propagated-inputs
2443 `(("ruby-hamster" ,ruby-hamster)
2444 ("ruby-open4" ,ruby-open4)))
2445 (synopsis "Build and execute commands in Ruby")
2446 (description
2447 "@code{Lino} provides an interface to run external commands. It provides
2448 an interface to add options as well as managing the standard input, output and
2449 error streams.")
2450 (home-page "https://github.com/tobyclemson/lino")
2451 (license license:expat)))
2452
2453 (define-public ruby-xml-simple
2454 (package
2455 (name "ruby-xml-simple")
2456 (version "1.1.5")
2457 (source (origin
2458 (method url-fetch)
2459 (uri (rubygems-uri "xml-simple" version))
2460 (sha256
2461 (base32
2462 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
2463 (build-system ruby-build-system)
2464 (arguments
2465 '(#:tests? #f)) ; no test suite
2466 (synopsis "Simple Ruby library for XML processing")
2467 (description "This library provides a simple API for XML processing in
2468 Ruby.")
2469 (home-page "https://github.com/maik/xml-simple")
2470 (license license:ruby)))
2471
2472 (define-public ruby-thor
2473 (package
2474 (name "ruby-thor")
2475 (version "1.0.1")
2476 (source (origin
2477 ;; Pull from git because the gem has no tests.
2478 (method git-fetch)
2479 (uri (git-reference
2480 (url "https://github.com/erikhuda/thor")
2481 (commit (string-append "v" version))))
2482 (file-name (git-file-name name version))
2483 (sha256
2484 (base32
2485 "1anrx5vynk57hn5c8ig5pgkmcsbj9q5mvckd5rviw1jid7n89k57"))))
2486 (build-system ruby-build-system)
2487 (arguments
2488 '(#:phases (modify-phases %standard-phases
2489 (add-after 'unpack 'fix-readline-tests
2490 (lambda _
2491 ;; Ensure Readline is initialized before running the
2492 ;; test to avoid a type clash with the mock ::Readline.
2493 ;; See <https://github.com/erikhuda/thor/pull/717>.
2494 (substitute* "spec/line_editor/readline_spec.rb"
2495 (("unless defined\\? ::Readline" all)
2496 (string-append "Thor::LineEditor::Readline.available?\n"
2497 all)))
2498 #t))
2499 (add-after 'unpack 'remove-coveralls-dependency
2500 (lambda _
2501 ;; Do not hook the test suite into the online
2502 ;; coveralls service.
2503 (substitute* "Gemfile"
2504 ((".*coveralls.*") ""))
2505 (substitute* "spec/helper.rb"
2506 (("require \"coveralls\"") "")
2507 (("Coveralls::SimpleCov::Formatter") "")
2508 ;; Also drop the WebMock dependency which is only
2509 ;; present to allow a coveralls.io connection, and
2510 ;; would otherwise introduce a circular dependency.
2511 (("require \"webmock/rspec\"") "")
2512 (("WebMock\\.disable_net_connect.*") ""))
2513 #t))
2514 (add-after 'unpack 'disable-network-tests
2515 (lambda _
2516 ;; These tests attempt to look up example.com.
2517 (substitute* "spec/actions/file_manipulation_spec.rb"
2518 (("it \"accepts (https?) remote sources" _ proto)
2519 (string-append "xit \"accepts " proto " remote sources")))
2520 #t))
2521 (add-after 'unpack 'disable-quality-tests
2522 (lambda _
2523 ;; These tests attempt to check the git repository for
2524 ;; tabs vs spaces, double vs single quotes, etc, and
2525 ;; depend on the git checkout.
2526 (delete-file "spec/quality_spec.rb")
2527 #t))
2528 (add-before 'check 'make-files-writable
2529 (lambda _
2530 ;; The tests needs rw access to the test suite.
2531 (for-each make-file-writable (find-files "spec"))
2532 #t))
2533 (replace 'check
2534 (lambda _
2535 (invoke "rspec" "spec"))))))
2536 (native-inputs
2537 `(("ruby-rspec" ,ruby-rspec)
2538 ("ruby-simplecov" ,ruby-simplecov)))
2539 (synopsis "Ruby toolkit for building command-line interfaces")
2540 (description "Thor is a toolkit for building powerful command-line
2541 interfaces.")
2542 (home-page "http://whatisthor.com/")
2543 (license license:expat)))
2544
2545 (define-public ruby-lumberjack
2546 (package
2547 (name "ruby-lumberjack")
2548 (version "1.0.13")
2549 (source (origin
2550 (method url-fetch)
2551 (uri (rubygems-uri "lumberjack" version))
2552 (sha256
2553 (base32
2554 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
2555 (build-system ruby-build-system)
2556 (native-inputs
2557 `(("ruby-rspec" ,ruby-rspec)
2558 ("ruby-timecop" ,ruby-timecop)))
2559 (synopsis "Logging utility library for Ruby")
2560 (description "Lumberjack is a simple logging utility that can be a drop in
2561 replacement for Logger or ActiveSupport::BufferedLogger. It provides support
2562 for automatically rolling log files even with multiple processes writing the
2563 same log file.")
2564 (home-page "https://github.com/bdurand/lumberjack")
2565 (license license:expat)))
2566
2567 (define-public ruby-rbnacl
2568 (package
2569 (name "ruby-rbnacl")
2570 (version "6.0.1")
2571 (source
2572 (origin
2573 (method url-fetch)
2574 (uri (rubygems-uri "rbnacl" version))
2575 (sha256
2576 (base32
2577 "0ajxy5kj2jw09wdsla3jmha8w07vj5l14288xr9djpl327g3lzhn"))))
2578 (build-system ruby-build-system)
2579 (arguments
2580 `(#:phases
2581 (modify-phases %standard-phases
2582 (add-after 'unpack 'remove-unnecessary-dependencies
2583 (lambda _
2584 ;; Coveralls relates to a network service, and Rubocop to code
2585 ;; linting and both are unnecessary to run the tests
2586 (substitute* "Gemfile"
2587 ((".*rubocop.*") "\n")
2588 ((".*guard-rspec.*") "\n")
2589 ((".*coveralls.*") "\n"))
2590 (substitute* "spec/spec_helper.rb"
2591 (("require \"coveralls\"") "")
2592 (("Coveralls.wear!") ""))
2593 #t))
2594 (add-after 'unpack 'use-libsodium-from-store
2595 (lambda* (#:key inputs #:allow-other-keys)
2596 (substitute* '("lib/rbnacl/init.rb"
2597 "lib/rbnacl/sodium.rb")
2598 (("ffi_lib \\[.+\\]")
2599 (string-append "ffi_lib [\""
2600 (assoc-ref inputs "libsodium") "/lib/libsodium.so"
2601 "\"]")))
2602 #t))
2603 ;; Run Rspec directly to avoid the Rubocop dependency in the Rakefile
2604 (replace 'check
2605 (lambda* (#:key tests? #:allow-other-keys)
2606 (when tests?
2607 (invoke "rspec"))
2608 #t)))))
2609 (propagated-inputs
2610 `(("ruby-ffi" ,ruby-ffi)))
2611 (inputs
2612 `(("libsodium" ,libsodium)))
2613 (native-inputs
2614 `(("bundler" ,bundler)
2615 ("ruby-rspec" ,ruby-rspec)))
2616 (synopsis "Ruby FFI binding to libsodium")
2617 (description
2618 "This package provides Ruby FFI bindings to the Networking and
2619 Cryptography (NaCl) library, also known as libsodium. This provides a
2620 high-level toolkit for building cryptographic systems and protocols.")
2621 (home-page "https://github.com/crypto-rb/rbnacl")
2622 (license license:expat)))
2623
2624 (define-public ruby-nenv
2625 (package
2626 (name "ruby-nenv")
2627 (version "0.3.0")
2628 (source (origin
2629 (method url-fetch)
2630 (uri (rubygems-uri "nenv" version))
2631 (sha256
2632 (base32
2633 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
2634 (build-system ruby-build-system)
2635 (arguments
2636 `(#:tests? #f)) ; no tests included
2637 (native-inputs
2638 `(("ruby-rspec" ,ruby-rspec)
2639 ("bundler" ,bundler)))
2640 (synopsis "Ruby interface for modifying the environment")
2641 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
2642 and inspect the environment.")
2643 (home-page "https://github.com/e2/nenv")
2644 (license license:expat)))
2645
2646 (define-public ruby-ptools
2647 (package
2648 (name "ruby-ptools")
2649 (version "1.3.5")
2650 (source (origin
2651 (method url-fetch)
2652 (uri (rubygems-uri "ptools" version))
2653 (sha256
2654 (base32
2655 "1jb1h1nsk9zwykpniw8filbsk26kjsdlpk5wz6w0zyamcd41h87j"))))
2656 (build-system ruby-build-system)
2657 (arguments
2658 '(#:phases (modify-phases %standard-phases
2659 (add-after 'unpack 'patch-/bin/ls
2660 (lambda _
2661 (substitute* "test/test_binary.rb"
2662 (("/bin/ls")
2663 (which "ls")))
2664 #t))
2665 (add-before 'install 'create-gem
2666 (lambda _
2667 ;; Do not attempt to sign the gem.
2668 (substitute* "Rakefile"
2669 (("spec\\.signing_key = .*")
2670 ""))
2671 (invoke "rake" "gem:create"))))))
2672 (synopsis "Extra methods for Ruby's @code{File} class")
2673 (description
2674 "The @dfn{ptools} (power tools) library extends Ruby's core @code{File}
2675 class with many additional methods modelled after common POSIX tools, such as
2676 @code{File.which} for finding executables, @code{File.tail} to print the last
2677 lines of a file, @code{File.wc} to count words, and so on.")
2678 (home-page "https://github.com/djberg96/ptools")
2679 (license license:artistic2.0)))
2680
2681 (define-public ruby-permutation
2682 (package
2683 (name "ruby-permutation")
2684 (version "0.1.8")
2685 (source (origin
2686 (method url-fetch)
2687 (uri (rubygems-uri "permutation" version))
2688 (sha256
2689 (base32
2690 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
2691 (build-system ruby-build-system)
2692 (arguments
2693 `(#:phases
2694 (modify-phases %standard-phases
2695 (add-after 'unpack 'fix-rakefile
2696 (lambda _
2697 (substitute* "Rakefile"
2698 (("require 'rake/gempackagetask'")
2699 "require 'rubygems/package_task'")
2700 (("include Config") ""))
2701 #t))
2702 (replace 'check
2703 (lambda _
2704 (invoke "ruby" "-Ilib" "test/test.rb"))))))
2705 (synopsis "Library to perform operations with sequence permutations")
2706 (description "This package provides a Ruby library to perform different
2707 operations with permutations of sequences, such as strings and arrays.")
2708 (home-page "https://flori.github.io/permutation")
2709 (license license:gpl2))) ; GPL 2 only
2710
2711 (define-public ruby-shellany
2712 (package
2713 (name "ruby-shellany")
2714 (version "0.0.1")
2715 (source (origin
2716 (method url-fetch)
2717 (uri (rubygems-uri "shellany" version))
2718 (sha256
2719 (base32
2720 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
2721 (build-system ruby-build-system)
2722 (arguments
2723 `(#:test-target "default"
2724 #:phases
2725 (modify-phases %standard-phases
2726 (add-after 'unpack 'fix-version-test
2727 (lambda _
2728 (substitute* "spec/shellany_spec.rb"
2729 (("^RSpec") "require \"shellany\"\nRSpec"))
2730 #t)))))
2731 (native-inputs
2732 `(("ruby-rspec" ,ruby-rspec)
2733 ("ruby-nenv" ,ruby-nenv)
2734 ("bundler" ,bundler)))
2735 (synopsis "Capture command output")
2736 (description "Shellany is a Ruby library providing functions to capture
2737 the output produced by running shell commands.")
2738 (home-page "https://rubygems.org/gems/shellany")
2739 (license license:expat)))
2740
2741 (define-public ruby-notiffany
2742 (package
2743 (name "ruby-notiffany")
2744 (version "0.1.3")
2745 (source (origin
2746 (method url-fetch)
2747 (uri (rubygems-uri "notiffany" version))
2748 (sha256
2749 (base32
2750 "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk"))))
2751 (build-system ruby-build-system)
2752 ;; Tests are not included in the gem.
2753 (arguments `(#:tests? #f))
2754 (propagated-inputs
2755 `(("ruby-shellany" ,ruby-shellany)
2756 ("ruby-nenv" ,ruby-nenv)))
2757 (native-inputs
2758 `(("bundler" ,bundler)))
2759 (synopsis "Wrapper library for notification libraries")
2760 (description "Notiffany is a Ruby wrapper library for notification
2761 libraries such as Libnotify.")
2762 (home-page "https://github.com/guard/notiffany")
2763 (license license:expat)))
2764
2765 (define-public ruby-forking-test-runner
2766 (package
2767 (name "ruby-forking-test-runner")
2768 (version "1.6.0")
2769 (home-page "https://github.com/grosser/forking_test_runner")
2770 (source (origin
2771 (method git-fetch)
2772 (uri (git-reference (url home-page)
2773 (commit (string-append "v" version))))
2774 (file-name (git-file-name name version))
2775 (sha256
2776 (base32
2777 "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m"))))
2778 (build-system ruby-build-system)
2779 (arguments
2780 '(#:test-target "spec"
2781 ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has
2782 ;; 1.4.1, which in turn breaks the tests that use ActiveRecord.
2783 #:tests? #f
2784 #:phases (modify-phases %standard-phases
2785 (replace 'replace-git-ls-files
2786 (lambda _
2787 (substitute* "forking_test_runner.gemspec"
2788 (("`git ls-files lib/ bin/ MIT-LICENSE`")
2789 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
2790 #t))
2791 (add-before 'check 'remove-version-constraints
2792 (lambda _
2793 ;; Ignore hard coded version constraints for the tests.
2794 (delete-file "Gemfile.lock")
2795 #t))
2796 (add-before 'check 'set-HOME
2797 (lambda _
2798 ;; Many tests invoke Bundler, and fails when Bundler
2799 ;; warns that /homeless-shelter does not exist.
2800 (setenv "HOME" "/tmp")
2801 #t)))))
2802 (native-inputs
2803 `(("ruby-activerecord" ,ruby-activerecord)
2804 ("ruby-bump" ,ruby-bump)
2805 ("ruby-rspec" ,ruby-rspec)
2806 ("ruby-sqlite3" ,ruby-sqlite3)
2807 ("ruby-wwtd" ,ruby-wwtd)))
2808 (propagated-inputs
2809 `(("ruby-parallel-tests" ,ruby-parallel-tests)))
2810 (synopsis "Run every test in a fork")
2811 (description
2812 "This package is a wrapper around @code{parallel_tests} that runs every
2813 test in a fork to avoid pollution and get clean output per test.")
2814 (license license:expat)))
2815
2816 (define-public ruby-formatador
2817 (package
2818 (name "ruby-formatador")
2819 (version "0.2.5")
2820 (source (origin
2821 (method url-fetch)
2822 (uri (rubygems-uri "formatador" version))
2823 (sha256
2824 (base32
2825 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
2826 (build-system ruby-build-system)
2827 ;; Circular dependency: Tests require ruby-shindo, which requires
2828 ;; ruby-formatador at runtime.
2829 (arguments `(#:tests? #f))
2830 (synopsis "Ruby library to format text on stdout")
2831 (description "Formatador is a Ruby library to format text printed to the
2832 standard output stream.")
2833 (home-page "https://github.com/geemus/formatador")
2834 (license license:expat)))
2835
2836 (define-public ruby-fuubar
2837 (package
2838 (name "ruby-fuubar")
2839 (version "2.3.2")
2840 (source
2841 (origin
2842 ;; Fetch from the git repository, as the gem package doesn't include
2843 ;; the tests.
2844 (method git-fetch)
2845 (uri (git-reference
2846 (url "https://github.com/thekompanee/fuubar")
2847 (commit (string-append "releases/v" version))))
2848 (file-name (git-file-name name version))
2849 (sha256
2850 (base32
2851 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
2852 (build-system ruby-build-system)
2853 (arguments
2854 '(;; TODO: Some tests fail, unsure why.
2855 ;; 21 examples, 7 failures
2856 #:tests? #f
2857 #:phases
2858 (modify-phases %standard-phases
2859 (add-before 'build 'delete-certificate
2860 (lambda _
2861 ;; Remove 's.cert_chain' as we do not build with a private key
2862 (substitute* "fuubar.gemspec"
2863 ((".*cert_chain.*") "")
2864 ((".*signing_key.*") ""))
2865 #t))
2866 (replace 'check
2867 (lambda* (#:key tests? #:allow-other-keys)
2868 (when tests?
2869 (invoke "rspec"))
2870 #t)))))
2871 (native-inputs
2872 `(("bundler" ,bundler)))
2873 (propagated-inputs
2874 `(("ruby-rspec-core" ,ruby-rspec-core)
2875 ("ruby-progressbar" ,ruby-progressbar)))
2876 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
2877 (description
2878 "Fuubar is an RSpec formatter that uses a progress bar instead of a
2879 string of letters and dots as feedback. It also stops on the first test
2880 failure.")
2881 (home-page "https://github.com/thekompanee/fuubar")
2882 (license license:expat)))
2883
2884 (define-public ruby-haml
2885 (package
2886 (name "ruby-haml")
2887 (version "5.0.4")
2888 (source
2889 (origin
2890 (method url-fetch)
2891 (uri (rubygems-uri "haml" version))
2892 (sha256
2893 (base32
2894 "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"))))
2895 (build-system ruby-build-system)
2896 (arguments
2897 '(#:tests? #f)) ; No included tests
2898 (propagated-inputs
2899 `(("ruby-tilt" ,ruby-tilt)
2900 ("ruby-temple" ,ruby-temple)))
2901 (synopsis "Haml is a Ruby library to generate HTML documents")
2902 (description
2903 "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of
2904 HTML or XML that is designed to express the structure of documents using
2905 indentation rather than closing tags. It was originally envisioned as a
2906 plugin for Ruby on Rails, but it can function as a stand-alone templating
2907 engine.")
2908 (home-page "http://haml.info/")
2909 (license license:expat)))
2910
2911 (define-public ruby-hamster
2912 (package
2913 (name "ruby-hamster")
2914 (version "3.0.0")
2915 (source
2916 (origin
2917 (method url-fetch)
2918 (uri (rubygems-uri "hamster" version))
2919 (sha256
2920 (base32
2921 "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
2922 (build-system ruby-build-system)
2923 (arguments
2924 '(#:phases
2925 (modify-phases %standard-phases
2926 (add-after 'unpack 'remove-unnecessary-dependencies
2927 (lambda _
2928 ;; pry is a debugging tool, and is unnecessary when running the
2929 ;; tests
2930 (substitute* "spec/lib/hamster/vector/insert_spec.rb"
2931 (("require 'pry'") ""))
2932 (substitute* "spec/spec_helper.rb"
2933 (("require \"pry\"") "")
2934 ;; CodeClimate is an online service, and is unnecessary for
2935 ;; running the tests
2936 (("require \"codeclimate-test-reporter\"") "")
2937 (("CodeClimate.*\n") ""))
2938 #t))
2939 ;; No Rakefile is included, so run rspec directly.
2940 (replace 'check
2941 (lambda* (#:key tests? #:allow-other-keys)
2942 (when tests?
2943 (invoke "rspec"))
2944 #t)))))
2945 (propagated-inputs
2946 `(("ruby-concurrent" ,ruby-concurrent)))
2947 (native-inputs
2948 `(("ruby-rspec" ,ruby-rspec)))
2949 (synopsis "Efficient, immutable, thread-safe collection classes for Ruby")
2950 (description
2951 "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector},
2952 @code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an
2953 immutable queue or stack).")
2954 (home-page "https://github.com/hamstergem/hamster")
2955 (license license:expat)))
2956
2957 (define-public ruby-hashdiff
2958 (package
2959 (name "ruby-hashdiff")
2960 (version "0.3.8")
2961 (source
2962 (origin
2963 (method url-fetch)
2964 (uri (rubygems-uri "hashdiff" version))
2965 (sha256
2966 (base32
2967 "19ykg5pax8798nh1yv71adkx0zzs7gn2rxjj86v7nsw0jba5lask"))))
2968 (build-system ruby-build-system)
2969 (arguments
2970 '(#:phases
2971 (modify-phases %standard-phases
2972 ;; Run tests directly via rspec to avoid Rake issue:
2973 ;; NoMethodError: undefined method `last_comment'
2974 (replace 'check
2975 (lambda* (#:key tests? #:allow-other-keys)
2976 (when tests?
2977 (invoke "rspec"))
2978 #t)))))
2979 (native-inputs
2980 `(("bundler" ,bundler)
2981 ("ruby-rspec" ,ruby-rspec-2)))
2982 (synopsis "HashDiff computes the smallest difference between two hashes")
2983 (description
2984 "HashDiff is a Ruby library to compute the smallest difference between
2985 two hashes.")
2986 (home-page "https://github.com/liufengyun/hashdiff")
2987 (license license:expat)))
2988
2989 (define-public ruby-hydra
2990 ;; No releases yet.
2991 (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
2992 (revision "0"))
2993 (package
2994 (name "ruby-hydra")
2995 (version (git-version "0.0" revision commit))
2996 (home-page "https://github.com/hyphenation/hydra")
2997 (source (origin
2998 (method git-fetch)
2999 (uri (git-reference (url home-page) (commit commit)))
3000 (file-name (git-file-name name version))
3001 (sha256
3002 (base32
3003 "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
3004 (build-system ruby-build-system)
3005 (arguments
3006 '(#:phases (modify-phases %standard-phases
3007 (add-after 'unpack 'make-files-writable
3008 (lambda _
3009 (for-each make-file-writable (find-files "."))
3010 #t))
3011 (replace 'check
3012 (lambda _
3013 (invoke "rspec"))))))
3014 (native-inputs
3015 `(("ruby-rspec" ,ruby-rspec)))
3016 (propagated-inputs
3017 `(("ruby-byebug" ,ruby-byebug)))
3018 (synopsis "Ruby hyphenation patterns")
3019 (description
3020 "ruby-hydra is a Ruby library for working with hyphenation patterns.")
3021 (license license:expat))))
3022
3023 (define-public ruby-shindo
3024 (package
3025 (name "ruby-shindo")
3026 (version "0.3.8")
3027 (source (origin
3028 (method url-fetch)
3029 (uri (rubygems-uri "shindo" version))
3030 (sha256
3031 (base32
3032 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
3033 (build-system ruby-build-system)
3034 (arguments
3035 `(#:test-target "shindo_tests"
3036 #:phases
3037 (modify-phases %standard-phases
3038 (add-after 'unpack 'fix-tests
3039 (lambda _
3040 (substitute* "tests/tests_helper.rb"
3041 (("-rubygems") ""))
3042 (substitute* "Rakefile"
3043 (("system \"shindo") "system \"./bin/shindo")
3044 ;; This test doesn't work, so we disable it.
3045 (("fail \"The build_error test should fail") "#")
3046 ((" -rubygems") ""))
3047 #t)))))
3048 (propagated-inputs
3049 `(("ruby-formatador" ,ruby-formatador)))
3050 (synopsis "Simple depth first Ruby testing")
3051 (description "Shindo is a simple depth first testing library for Ruby.")
3052 (home-page "https://github.com/geemus/shindo")
3053 (license license:expat)))
3054
3055 (define-public ruby-rubygems-tasks
3056 (package
3057 (name "ruby-rubygems-tasks")
3058 (version "0.2.5")
3059 (source (origin
3060 (method url-fetch)
3061 (uri (rubygems-uri "rubygems-tasks" version))
3062 (sha256
3063 (base32
3064 "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx"))))
3065 (build-system ruby-build-system)
3066 ;; Tests need Internet access.
3067 (arguments `(#:tests? #f))
3068 (native-inputs
3069 `(("ruby-rspec" ,ruby-rspec)
3070 ("ruby-yard" ,ruby-yard)))
3071 (synopsis "Rake tasks for managing and releasing Ruby Gems")
3072 (description "Rubygems-task provides Rake tasks for managing and releasing
3073 Ruby Gems.")
3074 (home-page "https://github.com/postmodern/rubygems-tasks")
3075 (license license:expat)))
3076
3077 (define-public ruby-rubyzip
3078 (package
3079 (name "ruby-rubyzip")
3080 (version "1.2.1")
3081 (source
3082 (origin
3083 (method url-fetch)
3084 (uri (rubygems-uri "rubyzip" version))
3085 (sha256
3086 (base32
3087 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
3088 (build-system ruby-build-system)
3089 (arguments
3090 '(#:phases
3091 (modify-phases %standard-phases
3092 (add-before 'check 'patch-tests
3093 (lambda* (#:key inputs #:allow-other-keys)
3094 (substitute* "test/gentestfiles.rb"
3095 (("/usr/bin/zip")
3096 (string-append
3097 (assoc-ref inputs "zip") "/bin/zip")))
3098 (substitute* "test/input_stream_test.rb"
3099 (("/usr/bin/env ruby") (which "ruby")))
3100 #t)))))
3101 (native-inputs
3102 `(("bundler" ,bundler)
3103 ("ruby-simplecov" ,ruby-simplecov)
3104 ("zip" ,zip)
3105 ("unzip" ,unzip)))
3106 (synopsis "Ruby module is for reading and writing zip files")
3107 (description
3108 "The rubyzip module provides ways to read from and create zip files.")
3109 (home-page "https://github.com/rubyzip/rubyzip")
3110 (license license:bsd-2)))
3111
3112 (define-public ruby-simplecov-html
3113 (package
3114 (name "ruby-simplecov-html")
3115 (version "0.10.2")
3116 (source (origin
3117 (method url-fetch)
3118 (uri (rubygems-uri "simplecov-html" version))
3119 (sha256
3120 (base32
3121 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
3122 (build-system ruby-build-system)
3123 (arguments `(#:tests? #f)) ; there are no tests
3124 (native-inputs
3125 `(("bundler" ,bundler)))
3126 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
3127 (description "This package provides the default HTML formatter for
3128 the SimpleCov code coverage tool for Ruby version 1.9 and above.")
3129 (home-page "https://github.com/colszowka/simplecov-html")
3130 (license license:expat)))
3131
3132 (define-public ruby-simplecov
3133 (package
3134 (name "ruby-simplecov")
3135 (version "0.17.1")
3136 (source (origin
3137 (method url-fetch)
3138 (uri (rubygems-uri "simplecov" version))
3139 (sha256
3140 (base32
3141 "1135k46nik05sdab30yxb8264lqiz01c8v000g16cl9pjc4mxrdw"))))
3142 (build-system ruby-build-system)
3143 ;; Simplecov depends on rubocop for code style checking at build time.
3144 ;; Rubocop needs simplecov at build time.
3145 (arguments `(#:tests? #f))
3146 (propagated-inputs
3147 `(("ruby-json" ,ruby-json)
3148 ("ruby-docile" ,ruby-docile)
3149 ("ruby-simplecov-html" ,ruby-simplecov-html)))
3150 (native-inputs
3151 `(("bundler" ,bundler)))
3152 (synopsis "Code coverage framework for Ruby")
3153 (description "SimpleCov is a code coverage framework for Ruby with a
3154 powerful configuration library and automatic merging of coverage across test
3155 suites.")
3156 (home-page "https://github.com/colszowka/simplecov")
3157 (license license:expat)))
3158
3159 (define-public ruby-useragent
3160 (package
3161 (name "ruby-useragent")
3162 (version "0.16.10")
3163 (source (origin
3164 (method url-fetch)
3165 (uri (rubygems-uri "useragent" version))
3166 (sha256
3167 (base32
3168 "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p"))))
3169 (build-system ruby-build-system)
3170 (arguments
3171 '(#:tests? #f)) ; no test suite
3172 (synopsis "HTTP user agent parser for Ruby")
3173 (description "UserAgent is a Ruby library that parses and compares HTTP
3174 User Agents.")
3175 (home-page "https://github.com/gshutler/useragent")
3176 (license license:expat)))
3177
3178 (define-public ruby-backports
3179 (package
3180 (name "ruby-backports")
3181 (version "3.11.4")
3182 (source
3183 (origin
3184 (method url-fetch)
3185 (uri (rubygems-uri "backports" version))
3186 (sha256
3187 (base32
3188 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
3189 (build-system ruby-build-system)
3190 (arguments
3191 '(;; TODO: This should be default, but there is one test failure
3192 #:test-target "all_spec"))
3193 (native-inputs
3194 `(("ruby-mspec" ,ruby-mspec)
3195 ("ruby-activesupport" ,ruby-activesupport)))
3196 (synopsis "Backports of the features in newer Ruby versions")
3197 (description
3198 "Backports enables more compatibility across Ruby versions by providing
3199 backports of some features.")
3200 (home-page "https://github.com/marcandre/backports")
3201 (license license:expat)))
3202
3203 (define-public ruby-bacon
3204 (package
3205 (name "ruby-bacon")
3206 (version "1.2.0")
3207 (source (origin
3208 (method url-fetch)
3209 (uri (rubygems-uri "bacon" version))
3210 (sha256
3211 (base32
3212 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
3213 (build-system ruby-build-system)
3214 (synopsis "Small RSpec clone")
3215 (description "Bacon is a small RSpec clone providing all essential
3216 features.")
3217 (home-page "https://github.com/chneukirchen/bacon")
3218 (license license:expat)))
3219
3220 (define-public ruby-bacon-bits
3221 (package
3222 (name "ruby-bacon-bits")
3223 (version "0.1.0")
3224 (source
3225 (origin
3226 (method url-fetch)
3227 (uri (rubygems-uri "bacon-bits" version))
3228 (sha256
3229 (base32
3230 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
3231 (build-system ruby-build-system)
3232 (arguments
3233 ;; No tests
3234 '(#:tests? #f))
3235 (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
3236 (synopsis "Extensions to Bacon, for disabling tests, before and after
3237 blocks and more")
3238 (description
3239 "This extends the bacon testing framework with useful extensions to
3240 disable tests, have before and after blocks that run once and more.")
3241 (home-page "https://github.com/cldwalker/bacon-bits")
3242 (license license:expat)))
3243
3244 (define-public ruby-bacon-colored-output
3245 (package
3246 (name "ruby-bacon-colored-output")
3247 (version "1.1.1")
3248 (source
3249 (origin
3250 (method url-fetch)
3251 (uri (rubygems-uri "bacon-colored_output" version))
3252 (sha256
3253 (base32
3254 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
3255 (build-system ruby-build-system)
3256 (arguments
3257 '(;; No included tests
3258 #:tests? #f))
3259 (propagated-inputs
3260 `(("ruby-bacon" ,ruby-bacon)))
3261 (synopsis "Colored output for Bacon test framework")
3262 (description
3263 "This package adds color through ANSI escape codes to Bacon test
3264 output.")
3265 (home-page "https://github.com/whitequark/bacon-colored_output")
3266 (license license:expat)))
3267
3268 (define-public ruby-connection-pool
3269 (package
3270 (name "ruby-connection-pool")
3271 (version "2.2.2")
3272 (source (origin
3273 (method url-fetch)
3274 (uri (rubygems-uri "connection_pool" version))
3275 (sha256
3276 (base32
3277 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
3278 (build-system ruby-build-system)
3279 (native-inputs
3280 `(("bundler" ,bundler)))
3281 (synopsis "Generic connection pool for Ruby")
3282 (description "Connection_pool provides a generic connection pooling
3283 interface for Ruby programs.")
3284 (home-page "https://github.com/mperham/connection_pool")
3285 (license license:expat)))
3286
3287 (define-public ruby-fast-gettext
3288 (package
3289 (name "ruby-fast-gettext")
3290 (version "2.0.3")
3291 (home-page "https://github.com/grosser/fast_gettext")
3292 (source (origin
3293 (method git-fetch)
3294 (uri (git-reference (url home-page)
3295 (commit (string-append "v" version))))
3296 (file-name (git-file-name name version))
3297 (sha256
3298 (base32
3299 "1dg14apq5sfjshhcq0idphhs7aq9ikzswhqmn689p1h76mxqr1v6"))))
3300 (build-system ruby-build-system)
3301 (arguments
3302 '(#:test-target "spec"
3303 #:phases (modify-phases %standard-phases
3304 (add-before 'check 'remove-version-constraints
3305 (lambda _
3306 (delete-file "Gemfile.lock")
3307 #t))
3308 (add-before 'check 'remove-activerecord-test
3309 (lambda _
3310 ;; FIXME: This test fails because ActiveRecord depends on
3311 ;; a different version of ruby-sqlite than the currently
3312 ;; available one.
3313 (delete-file
3314 "spec/fast_gettext/translation_repository/db_spec.rb")
3315 #t))
3316 (add-before 'check 'disable-i18n-test
3317 (lambda _
3318 ;; XXX: This test checks i18n intricasies with Rails 3 and
3319 ;; automatically disables itself for Rails 4.0, but does
3320 ;; not know about newer versions as it has not been updated
3321 ;; since 2014. Disable for later versions of Rails too.
3322 (substitute* "spec/fast_gettext/vendor/string_spec.rb"
3323 (((string-append "ActiveRecord::VERSION::MAJOR == 4 and "
3324 "ActiveRecord::VERSION::MINOR == 0"))
3325 "ActiveRecord::VERSION::MAJOR >= 4"))
3326 #t)))))
3327 (native-inputs
3328 `(;; For tests.
3329 ("ruby-activerecord" ,ruby-activerecord)
3330 ("ruby-activesupport" ,ruby-activesupport)
3331 ("ruby-bump" ,ruby-bump)
3332 ("ruby-forking-test-runner" ,ruby-forking-test-runner)
3333 ("ruby-i18n" ,ruby-i18n)
3334 ("ruby-rubocop" ,ruby-rubocop)
3335 ("ruby-rspec" ,ruby-rspec)
3336 ("ruby-single-cov" ,ruby-single-cov)
3337 ("ruby-sqlite3" ,ruby-sqlite3)
3338 ("ruby-wwtd" ,ruby-wwtd)))
3339 (synopsis "Fast implementation of @code{GetText}")
3340 (description
3341 "This package provides an alternative implementation of the Ruby
3342 @code{GetText} library that is approximately 12x faster yet thread safe.")
3343 ;; Some parts are covered by the Ruby license, see file headers.
3344 (license (list license:expat license:ruby))))
3345
3346 (define-public ruby-net-http-persistent
3347 (package
3348 (name "ruby-net-http-persistent")
3349 (version "3.0.0")
3350 (source (origin
3351 (method url-fetch)
3352 (uri (rubygems-uri "net-http-persistent" version))
3353 (sha256
3354 (base32
3355 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
3356 (build-system ruby-build-system)
3357 (native-inputs
3358 `(("ruby-connection-pool" ,ruby-connection-pool)
3359 ("ruby-hoe" ,ruby-hoe)))
3360 (synopsis "Persistent HTTP connection manager")
3361 (description "Net::HTTP::Persistent manages persistent HTTP connections
3362 using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
3363 (home-page "https://github.com/drbrain/net-http-persistent")
3364 (license license:expat)))
3365
3366 (define-public ruby-power-assert
3367 (package
3368 (name "ruby-power-assert")
3369 (version "1.1.5")
3370 (source (origin
3371 (method url-fetch)
3372 (uri (rubygems-uri "power_assert" version))
3373 (sha256
3374 (base32
3375 "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s"))))
3376 (build-system ruby-build-system)
3377 (arguments
3378 '(#:tests? #f)) ; No included tests
3379 (native-inputs
3380 `(("bundler" ,bundler)))
3381 (synopsis "Assert library with descriptive assertion messages")
3382 (description "Power-assert is an assertion library providing descriptive
3383 assertion messages for tests.")
3384 (home-page "https://github.com/k-tsj/power_assert")
3385 (license (list license:bsd-2 license:ruby))))
3386
3387 (define-public ruby-powerpack
3388 (package
3389 (name "ruby-powerpack")
3390 (version "0.1.2")
3391 (source
3392 (origin
3393 (method url-fetch)
3394 (uri (rubygems-uri "powerpack" version))
3395 (sha256
3396 (base32
3397 "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
3398 (build-system ruby-build-system)
3399 (arguments
3400 '(#:test-target "spec"))
3401 (native-inputs
3402 `(("bundler" ,bundler)
3403 ("ruby-rspec" ,ruby-rspec)
3404 ("ruby-yard" ,ruby-yard)))
3405 (synopsis "Useful extensions to core Ruby classes")
3406 (description
3407 "This package provides a few useful extensions to core Ruby classes,
3408 including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
3409 @code{String}.")
3410 (home-page "https://github.com/bbatsov/powerpack")
3411 (license license:expat)))
3412
3413 (define-public ruby-locale
3414 (package
3415 (name "ruby-locale")
3416 (version "2.1.2")
3417 (source (origin
3418 (method url-fetch)
3419 (uri (rubygems-uri "locale" version))
3420 (sha256
3421 (base32
3422 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
3423 (build-system ruby-build-system)
3424 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
3425 ;; which needs ruby-gettext, which needs ruby-locale. To break the
3426 ;; dependency cycle we disable tests.
3427 (arguments `(#:tests? #f))
3428 (native-inputs
3429 `(("bundler" ,bundler)
3430 ("ruby-yard" ,ruby-yard)))
3431 (synopsis "Ruby library providing basic localization APIs")
3432 (description
3433 "Ruby-Locale is the pure ruby library which provides basic APIs for
3434 localization.")
3435 (home-page "https://github.com/ruby-gettext/locale")
3436 (license (list license:lgpl3+ license:ruby))))
3437
3438 (define-public ruby-temple
3439 (package
3440 (name "ruby-temple")
3441 (version "0.8.2")
3442 (source
3443 (origin
3444 (method url-fetch)
3445 (uri (rubygems-uri "temple" version))
3446 (sha256
3447 (base32
3448 "060zzj7c2kicdfk6cpnn40n9yjnhfrr13d0rsbdhdij68chp2861"))))
3449 (build-system ruby-build-system)
3450 (native-inputs
3451 `(("ruby-tilt" ,ruby-tilt)
3452 ("ruby-bacon" ,ruby-bacon)
3453 ("ruby-erubis" ,ruby-erubis)))
3454 (synopsis "Template compilation framework in Ruby")
3455 (description
3456 "Temple is an abstraction and framework for compiling templates to pure
3457 Ruby.")
3458 (home-page "https://github.com/judofyr/temple")
3459 (license license:expat)))
3460
3461 (define-public ruby-text
3462 (package
3463 (name "ruby-text")
3464 (version "1.3.1")
3465 (source (origin
3466 (method url-fetch)
3467 (uri (rubygems-uri "text" version))
3468 (sha256
3469 (base32
3470 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
3471 (build-system ruby-build-system)
3472 (synopsis "Collection of text algorithms for Ruby")
3473 (description
3474 "This package provides a collection of text algorithms: Levenshtein,
3475 Soundex, Metaphone, Double Metaphone, Porter Stemming.")
3476 (home-page "https://github.com/threedaymonk/text")
3477 (license license:expat)))
3478
3479 (define-public ruby-gettext
3480 (package
3481 (name "ruby-gettext")
3482 (version "3.1.7")
3483 (source (origin
3484 (method url-fetch)
3485 (uri (rubygems-uri "gettext" version))
3486 (sha256
3487 (base32
3488 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
3489 (build-system ruby-build-system)
3490 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
3491 ;; which needs ruby-gettext. To break the dependency cycle we disable
3492 ;; tests.
3493 (arguments `(#:tests? #f))
3494 (propagated-inputs
3495 `(("ruby-locale" ,ruby-locale)
3496 ("ruby-text" ,ruby-text)))
3497 (native-inputs
3498 `(("bundler" ,bundler)
3499 ("ruby-yard" ,ruby-yard)))
3500 (synopsis "GNU gettext-like program for Ruby")
3501 (description
3502 "Gettext is a GNU gettext-like program for Ruby. The catalog
3503 file (po-file) used is the same as that used by GNU gettext, allowing you to
3504 use GNU gettext tools for maintenance.")
3505 (home-page "https://ruby-gettext.github.com/")
3506 (license (list license:lgpl3+ license:ruby))))
3507
3508 (define-public ruby-packnga
3509 (package
3510 (name "ruby-packnga")
3511 (version "1.0.4")
3512 (source (origin
3513 (method url-fetch)
3514 (uri (rubygems-uri "packnga" version))
3515 (sha256
3516 (base32
3517 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
3518 (build-system ruby-build-system)
3519 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
3520 ;; To break the dependency cycle we disable tests.
3521 (arguments `(#:tests? #f))
3522 (propagated-inputs
3523 `(("ruby-gettext" ,ruby-gettext)
3524 ("ruby-yard" ,ruby-yard)))
3525 (native-inputs
3526 `(("bundler" ,bundler)))
3527 (synopsis "Utility library to package internationalized libraries")
3528 (description
3529 "Packnga is a library to translate to many languages using YARD.")
3530 (home-page "http://ranguba.org/packnga/")
3531 (license license:lgpl2.0+)))
3532
3533 (define-public ruby-test-construct
3534 (package
3535 (name "ruby-test-construct")
3536 (version "2.0.1")
3537 (source
3538 (origin
3539 (method url-fetch)
3540 (uri (rubygems-uri "test_construct" version))
3541 (sha256
3542 (base32
3543 "1a2ym3l068d0pxzzr95kvqx87zpdsarxslz9ygd4qfm9frrz0kgj"))))
3544 (build-system ruby-build-system)
3545 (native-inputs
3546 `(("bundler" ,bundler)
3547 ("ruby-mocha" ,ruby-mocha)
3548 ("ruby-rspec" ,ruby-rspec)))
3549 (synopsis "Creates temporary files and directories for testing")
3550 (description
3551 "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
3552 temporary files and directories during tests.")
3553 (home-page "https://github.com/bhb/test_construct")
3554 (license license:expat)))
3555
3556 (define-public ruby-test-unit
3557 (package
3558 (name "ruby-test-unit")
3559 (version "3.2.5")
3560 (source (origin
3561 (method url-fetch)
3562 (uri (rubygems-uri "test-unit" version))
3563 (sha256
3564 (base32
3565 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
3566 (build-system ruby-build-system)
3567 (propagated-inputs
3568 `(("ruby-power-assert" ,ruby-power-assert)))
3569 (native-inputs
3570 `(("bundler" ,bundler)
3571 ("ruby-packnga" ,ruby-packnga)
3572 ("ruby-yard" ,ruby-yard)))
3573 (synopsis "Unit testing framework for Ruby")
3574 (description "@code{Test::Unit} is unit testing framework for Ruby, based
3575 on xUnit principles. These were originally designed by Kent Beck, creator of
3576 extreme programming software development methodology, for Smalltalk's SUnit.
3577 It allows writing tests, checking results and automated testing in Ruby.")
3578 (home-page "https://test-unit.github.io/")
3579 (license (list license:psfl license:ruby))))
3580
3581 (define-public ruby-markaby
3582 (package
3583 (name "ruby-markaby")
3584 (version "0.9.0")
3585 (source
3586 (origin
3587 (method url-fetch)
3588 (uri (rubygems-uri "markaby" version))
3589 (sha256
3590 (base32
3591 "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
3592 (build-system ruby-build-system)
3593 (arguments
3594 '(#:phases
3595 (modify-phases %standard-phases
3596 ;; Run rspec manually without using the Rakefile, as the versions of
3597 ;; Rake and RSpec 2 are incompatible:
3598 ;;
3599 ;; NoMethodError: undefined method `last_comment'
3600 (replace 'check
3601 (lambda* (#:key tests? #:allow-other-keys)
3602 (when tests?
3603 (invoke "rspec"))
3604 #t)))))
3605 (propagated-inputs
3606 `(("ruby-builder" ,ruby-builder)))
3607 (native-inputs
3608 `(("bundler" ,bundler)
3609 ("ruby-rspec" ,ruby-rspec-2)))
3610 (synopsis "Write HTML pages in pure Ruby")
3611 (description
3612 "Markaby allows writing HTML packages in pure Ruby. This is similar to
3613 the functionality provided by @acronym{ERB, Embedded Ruby}, but without the
3614 mixture of HTML and additional ERB syntax.")
3615 (home-page "https://markaby.github.io/")
3616 (license license:expat)))
3617
3618 (define-public ruby-maruku
3619 (package
3620 (name "ruby-maruku")
3621 (version "0.7.3")
3622 (source
3623 (origin
3624 (method url-fetch)
3625 (uri (rubygems-uri "maruku" version))
3626 (sha256
3627 (base32
3628 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
3629 (build-system ruby-build-system)
3630 (arguments
3631 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
3632 #:tests? #f
3633 #:phases
3634 (modify-phases %standard-phases
3635 (replace 'check
3636 (lambda* (#:key tests? #:allow-other-keys)
3637 (when tests?
3638 (invoke "rspec"))
3639 #t)))))
3640 (native-inputs
3641 `(("ruby-rspec" ,ruby-rspec)
3642 ("ruby-simplecov" ,ruby-simplecov)
3643 ("ruby-nokogiri-diff" ,ruby-nokogiri-diff)))
3644 (synopsis "Markdown interpreter in Ruby")
3645 (description
3646 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
3647 HTML, and PDF through LaTeX.")
3648 (home-page "https://github.com/bhollis/maruku")
3649 (license license:expat)))
3650
3651 (define-public ruby-metaclass
3652 (package
3653 (name "ruby-metaclass")
3654 (version "0.0.4")
3655 (source (origin
3656 (method url-fetch)
3657 (uri (rubygems-uri "metaclass" version))
3658 (sha256
3659 (base32
3660 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
3661 (build-system ruby-build-system)
3662 (arguments
3663 `(#:phases
3664 (modify-phases %standard-phases
3665 (add-after 'unpack 'add-test-unit-to-search-path
3666 (lambda* (#:key inputs #:allow-other-keys)
3667 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
3668 (substitute* "Rakefile"
3669 (("t\\.libs << \"test\"" line)
3670 (string-append line "; t.libs << \""
3671 test-unit "/lib/ruby/vendor_ruby"
3672 "/gems/test-unit-"
3673 ,(package-version ruby-test-unit)
3674 "/lib\""))))
3675 #t)))))
3676 (native-inputs
3677 `(("bundler" ,bundler)
3678 ("ruby-test-unit" ,ruby-test-unit)))
3679 (synopsis "Ruby library adding metaclass method to all objects")
3680 (description
3681 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
3682 objects.")
3683 (home-page "https://github.com/floehopper/metaclass")
3684 (license license:expat)))
3685
3686 (define-public ruby-mkmf-lite
3687 (package
3688 (name "ruby-mkmf-lite")
3689 (version "0.3.2")
3690 (source (origin
3691 (method url-fetch)
3692 (uri (rubygems-uri "mkmf-lite" version))
3693 (sha256
3694 (base32
3695 "0br9k6zijj1zc25n8p7f2j1mwl58nfgdknf3q13h9k156jvrir06"))))
3696 (build-system ruby-build-system)
3697 (propagated-inputs
3698 `(("ruby-ptools" ,ruby-ptools)))
3699 (synopsis "Lightweight alternative to @code{mkmf}")
3700 (description
3701 "@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed
3702 for use as a library. It does not create packages, builds, or log files of
3703 any kind. Instead, it provides mixin methods that you can use in FFI or tests
3704 to check for the presence of header files, constants, and so on.")
3705 (home-page "https://github.com/djberg96/mkmf-lite")
3706 (license license:asl2.0)))
3707
3708 (define-public ruby-mspec
3709 (package
3710 (name "ruby-mspec")
3711 (version "1.9.1")
3712 (source
3713 (origin
3714 (method url-fetch)
3715 (uri (rubygems-uri "mspec" version))
3716 (sha256
3717 (base32
3718 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
3719 (build-system ruby-build-system)
3720 (arguments
3721 '(;; TODO: 3 test failures
3722 ;; ./spec/mocks/mock_spec.rb:82
3723 ;; ./spec/utils/name_map_spec.rb:151
3724 ;; ./spec/utils/name_map_spec.rb:155
3725 #:tests? #f
3726 #:phases
3727 (modify-phases %standard-phases
3728 (add-after 'extract-gemspec 'change-dependency-constraints
3729 (lambda _
3730 (substitute* "mspec.gemspec"
3731 (("rake.*") "rake>)\n")
3732 (("rspec.*") "rspec>)\n"))
3733 #t))
3734 (replace 'check
3735 (lambda* (#:key tests? #:allow-other-keys)
3736 (when tests?
3737 (invoke "rspec" "spec"))
3738 #t)))))
3739 (native-inputs
3740 `(("bundler" ,bundler)
3741 ("ruby-rake" ,ruby-rake)
3742 ("ruby-rspec" ,ruby-rspec)))
3743 (synopsis "MSpec is a specialized framework for RubySpec")
3744 (description
3745 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
3746 for basic features. MSpec contains additional features that assist in writing
3747 specs for Ruby implementations in ruby/spec.")
3748 (home-page "http://rubyspec.org")
3749 (license license:expat)))
3750
3751 (define-public ruby-mysql2
3752 (package
3753 (name "ruby-mysql2")
3754 (version "0.5.2")
3755 (source
3756 (origin
3757 (method git-fetch)
3758 (uri (git-reference
3759 (url "https://github.com/brianmario/mysql2")
3760 (commit version)))
3761 (file-name (git-file-name name version))
3762 (sha256
3763 (base32
3764 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
3765 (build-system ruby-build-system)
3766 (arguments
3767 '(;; TODO: Tests require a running MySQL/MariaDB service
3768 #:tests? #f
3769 #:phases
3770 (modify-phases %standard-phases
3771 (replace 'replace-git-ls-files
3772 (lambda _
3773 (substitute* "mysql2.gemspec"
3774 (("git ls-files .*`") "find . -type f |sort`"))
3775 #t))
3776 (add-before 'install 'set-MAKEFLAGS
3777 (lambda* (#:key outputs #:allow-other-keys)
3778 (setenv "MAKEFLAGS"
3779 (string-append
3780 "V=1 "
3781 "prefix=" (assoc-ref outputs "out")))
3782 #t))
3783 ;; Move the 'check phase to after 'install, as then you can test
3784 ;; using the installed mysql2 gem in the store.
3785 (delete 'check)
3786 (add-after 'install 'check
3787 (lambda* (#:key outputs tests? #:allow-other-keys)
3788 (setenv "GEM_PATH"
3789 (string-append
3790 (getenv "GEM_PATH")
3791 ":"
3792 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
3793 (when tests?
3794 (invoke "rspec"))
3795 #t)))))
3796 (inputs
3797 `(("mariadb" ,mariadb "lib")
3798 ("mariadb-dev" ,mariadb "dev")
3799 ("zlib" ,zlib)))
3800 (native-inputs
3801 `(("ruby-rspec" ,ruby-rspec)
3802 ("ruby-rake-compiler" ,ruby-rake-compiler)))
3803 (synopsis "MySQL library for Ruby, binding to libmysql")
3804 (description
3805 "This package provides a simple, fast MySQL library for Ruby, binding to
3806 libmysql.")
3807 (home-page "https://github.com/brianmario/mysql2")
3808 (license license:expat)))
3809
3810 (define-public ruby-blankslate
3811 (package
3812 (name "ruby-blankslate")
3813 (version "3.1.3")
3814 (source (origin
3815 (method url-fetch)
3816 (uri (rubygems-uri "blankslate" version))
3817 (sha256
3818 (base32
3819 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
3820 (build-system ruby-build-system)
3821 (arguments
3822 `(#:phases
3823 (modify-phases %standard-phases
3824 (replace 'check
3825 (lambda _ (invoke "rspec" "spec/"))))))
3826 (native-inputs
3827 `(("bundler" ,bundler)
3828 ("ruby-rspec" ,ruby-rspec)))
3829 (synopsis "Abstract base class with no predefined methods")
3830 (description
3831 "BlankSlate provides an abstract base class with no predefined
3832 methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
3833 as a base class when writing classes that depend upon
3834 @code{method_missing} (e.g. dynamic proxies).")
3835 (home-page "https://github.com/masover/blankslate")
3836 (license license:expat)))
3837
3838 (define-public ruby-bond
3839 (package
3840 (name "ruby-bond")
3841 (version "0.5.1")
3842 (source
3843 (origin
3844 (method url-fetch)
3845 (uri (rubygems-uri "bond" version))
3846 (sha256
3847 (base32
3848 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
3849 (build-system ruby-build-system)
3850 (native-inputs
3851 `(("ruby-bacon" ,ruby-bacon)
3852 ("ruby-bacon-bits" ,ruby-bacon-bits)
3853 ("ruby-mocha-on-bacon" ,ruby-mocha-on-bacon)))
3854 (synopsis "Bond can provide custom autocompletion for arguments, methods
3855 and more")
3856 (description
3857 "Bond can autocomplete argument(s) to methods, uniquely completing per
3858 module, per method and per argument. Bond provides a configuration system and
3859 a DSL for creating custom completions and completion rules. Bond can also
3860 load completions that ship with gems. Bond is able to offer more than irb's
3861 completion since it uses the full line of input when completing as opposed to
3862 irb's last-word approach.")
3863 (home-page "http://tagaholic.me/bond/")
3864 (license license:expat)))
3865
3866 (define-public ruby-idn-ruby
3867 (package
3868 (name "ruby-idn-ruby")
3869 (version "0.1.0")
3870 (source
3871 (origin
3872 (method url-fetch)
3873 (uri (rubygems-uri "idn-ruby" version))
3874 (sha256
3875 (base32
3876 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
3877 (build-system ruby-build-system)
3878 (arguments
3879 '(#:phases
3880 (modify-phases %standard-phases
3881 (delete 'check)
3882 (add-after 'install 'check
3883 (lambda* (#:key tests? outputs #:allow-other-keys)
3884 (when tests?
3885 (let* ((gem-file (cadr (find-files "." "\\.gem")))
3886 (name-and-version (basename gem-file ".gem")))
3887 (apply invoke
3888 "ruby" "--verbose"
3889 (string-append "-I"
3890 (assoc-ref outputs "out")
3891 "/lib/ruby/vendor_ruby/gems/"
3892 name-and-version
3893 "/lib")
3894 (find-files "./test" ".*\\.rb"))))
3895 #t)))))
3896 (inputs
3897 `(("libidn" ,libidn)))
3898 (synopsis "Ruby Bindings for the GNU LibIDN library")
3899 (description
3900 "Ruby Bindings for the GNU LibIDN library, an implementation of the
3901 Stringprep, Punycode and IDNA specifications. These are used to encode and
3902 decode internationalized domain + names according to the IDNA2003
3903 specifications.
3904
3905 Included are the most important parts of the Stringprep, Punycode and IDNA
3906 APIs like performing Stringprep processings, encoding to and decoding from
3907 Punycode strings and converting entire domain names to and from the ACE
3908 encoded form.")
3909 (home-page "https://github.com/deepfryed/idn-ruby")
3910 (license license:asl2.0)))
3911
3912 (define-public ruby-instantiator
3913 (package
3914 (name "ruby-instantiator")
3915 (version "0.0.7")
3916 (source (origin
3917 (method url-fetch)
3918 (uri (rubygems-uri "instantiator" version))
3919 (sha256
3920 (base32
3921 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
3922 (build-system ruby-build-system)
3923 (arguments
3924 `(#:phases
3925 (modify-phases %standard-phases
3926 (add-after 'unpack 'add-test-unit-to-search-path
3927 (lambda* (#:key inputs #:allow-other-keys)
3928 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
3929 (substitute* "Rakefile"
3930 (("t\\.libs << \"test\"" line)
3931 (string-append line "; t.libs << \""
3932 test-unit "/lib/ruby/vendor_ruby"
3933 "/gems/test-unit-"
3934 ,(package-version ruby-test-unit)
3935 "/lib\""))))
3936 #t)))))
3937 (propagated-inputs
3938 `(("ruby-blankslate" ,ruby-blankslate)))
3939 (native-inputs
3940 `(("bundler" ,bundler)
3941 ("ruby-test-unit" ,ruby-test-unit)))
3942 (synopsis "Instantiate an arbitrary Ruby class")
3943 (description
3944 "Instantiator lets you instantiate an arbitrary Ruby class without
3945 knowing anything about the constructor.")
3946 (home-page "https://github.com/floehopper/instantiator")
3947 (license license:expat)))
3948
3949 (define-public ruby-introspection
3950 (package
3951 (name "ruby-introspection")
3952 (version "0.0.4")
3953 (source (origin
3954 (method url-fetch)
3955 (uri (rubygems-uri "introspection" version))
3956 (sha256
3957 (base32
3958 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
3959 (build-system ruby-build-system)
3960 (arguments
3961 `(#:phases
3962 (modify-phases %standard-phases
3963 (add-after 'unpack 'add-test-unit-to-search-path
3964 (lambda* (#:key inputs #:allow-other-keys)
3965 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
3966 (substitute* "Rakefile"
3967 (("t\\.libs << \"test\"" line)
3968 (string-append line "; t.libs << \""
3969 test-unit "/lib/ruby/vendor_ruby"
3970 "/gems/test-unit-"
3971 ,(package-version ruby-test-unit)
3972 "/lib\""))))
3973 #t)))))
3974 (propagated-inputs
3975 `(("ruby-instantiator" ,ruby-instantiator)
3976 ("ruby-metaclass" ,ruby-metaclass)))
3977 (native-inputs
3978 `(("bundler" ,bundler)
3979 ("ruby-blankslate" ,ruby-blankslate)
3980 ("ruby-test-unit" ,ruby-test-unit)))
3981 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
3982 (description
3983 "Introspection provides tools to inspect the hierarchy of method
3984 definitions on a Ruby object.")
3985 (home-page "https://github.com/floehopper/introspection")
3986 (license license:expat)))
3987
3988 (define-public ruby-redcarpet
3989 (package
3990 (name "ruby-redcarpet")
3991 (version "3.5.0")
3992 (source (origin
3993 (method url-fetch)
3994 (uri (rubygems-uri "redcarpet" version))
3995 (sha256
3996 (base32
3997 "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k"))))
3998 (build-system ruby-build-system)
3999 (arguments
4000 `(#:phases
4001 (modify-phases %standard-phases
4002 ;; The gem archive does not include the conformance tests.
4003 (add-after 'unpack 'disable-conformance-tests
4004 (lambda _
4005 (substitute* "Rakefile"
4006 (("task :test => %w\\[test:unit test:conformance\\]")
4007 "task :test => %w[test:unit]"))
4008 #t)))))
4009 (native-inputs
4010 `(("bundler" ,bundler)
4011 ("ruby-test-unit" ,ruby-test-unit)
4012 ("ruby-rake-compiler" ,ruby-rake-compiler)))
4013 (synopsis "Extensible Markdown to (X)HTML converter")
4014 (description
4015 "Redcarpet is an extensible Ruby library for Markdown processing and
4016 conversion to (X)HTML.")
4017 (home-page "https://github.com/vmg/redcarpet")
4018 (license license:expat)))
4019
4020 (define-public ruby-rerun
4021 (package
4022 (name "ruby-rerun")
4023 (version "0.13.0")
4024 (source
4025 (origin
4026 (method url-fetch)
4027 (uri (rubygems-uri "rerun" version))
4028 (sha256
4029 (base32
4030 "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
4031 (build-system ruby-build-system)
4032 (arguments
4033 '(#:tests? #f)) ; No included tests
4034 (propagated-inputs
4035 `(("ruby-listen" ,ruby-listen)))
4036 (synopsis "Run a process, and restart when some monitored files change")
4037 (description
4038 "Rerun is a tool to launch programs, then monitor the file system, and
4039 restart the program when any of the monitored files change. It's written in
4040 Ruby, but can be used for all programs.")
4041 (home-page "https://github.com/alexch/rerun/")
4042 (license license:expat)))
4043
4044 (define-public ruby-maxitest
4045 (package
4046 (name "ruby-maxitest")
4047 (version "3.6.0")
4048 (home-page "https://github.com/grosser/maxitest")
4049 (source (origin
4050 ;; Pull from git because the gem does not contain tests.
4051 (method git-fetch)
4052 (uri (git-reference
4053 (url home-page)
4054 (commit (string-append "v" version))))
4055 (file-name (git-file-name name version))
4056 (sha256
4057 (base32
4058 "07b3j0bv3dx5j42jlvpvl07aaxplyi6wq688y3jl8y528ww2hjz8"))))
4059 (build-system ruby-build-system)
4060 (arguments
4061 '(#:test-target "default"
4062 #:phases (modify-phases %standard-phases
4063 (replace 'replace-git-ls-files
4064 (lambda _
4065 (substitute* "maxitest.gemspec"
4066 (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
4067 "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))
4068 #t))
4069 (add-before 'check 'remove-version-constraints
4070 (lambda _
4071 ;; Don't use specific versions of dependencies, instead
4072 ;; take whatever is available in Guix.
4073 (delete-file "Gemfile.lock")
4074 #t))
4075 (add-before 'check 'add-mtest-on-PATH
4076 (lambda _
4077 ;; Tests use 'mtest' which is not automatically added on
4078 ;; PATH.
4079 (setenv "PATH" (string-append (getcwd) "/bin:"
4080 (getenv "PATH")))
4081 #t)))))
4082 (native-inputs
4083 `(("ps" ,procps)
4084 ("ruby-bump" ,ruby-bump)
4085 ("ruby-byebug" ,ruby-byebug)
4086 ("ruby-rspec" ,ruby-rspec)
4087 ("ruby-wwtd" ,ruby-wwtd)))
4088 (propagated-inputs
4089 `(("ruby-minitest" ,ruby-minitest)))
4090 (synopsis "Minitest with extra features")
4091 (description
4092 "Maxitest is a wrapper around Minitest with extra functionality such
4093 as timeouts, an @command{mtest} executable that can run tests by line
4094 number, support for interrupted tests, better backtraces, and more.")
4095 (license license:expat)))
4096
4097 (define-public ruby-mocha
4098 (package
4099 (name "ruby-mocha")
4100 (version "1.11.2")
4101 (source (origin
4102 (method url-fetch)
4103 (uri (rubygems-uri "mocha" version))
4104 (sha256
4105 (base32
4106 "0hxmkm8qxd04vwj8mqnpyrf2dwy7g1k9zipdfhl4y71cw7ijm9n4"))))
4107 (build-system ruby-build-system)
4108 (arguments
4109 `(#:phases
4110 (modify-phases %standard-phases
4111 (add-before 'check 'remove-rubocop-dependency
4112 (lambda _
4113 ;; Disable dependency on Rubocop, which is just a linter,
4114 ;; and would introduce a circular dependency.
4115 (substitute* "mocha.gemspec"
4116 ((".*rubocop.*")
4117 "true\n"))
4118 #t)))))
4119 (native-inputs
4120 `(("ruby-introspection" ,ruby-introspection)))
4121 (synopsis "Mocking and stubbing library for Ruby")
4122 (description
4123 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
4124 allows mocking and stubbing of methods on real (non-mock) classes.")
4125 (home-page "http://gofreerange.com/mocha/docs")
4126 ;; Mocha can be used with either license at the users choice.
4127 (license (list license:expat license:ruby))))
4128
4129 (define-public ruby-mocha-on-bacon
4130 (package
4131 (name "ruby-mocha-on-bacon")
4132 (version "0.2.3")
4133 (source
4134 (origin
4135 (method url-fetch)
4136 (uri (rubygems-uri "mocha-on-bacon" version))
4137 (sha256
4138 (base32
4139 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
4140 (build-system ruby-build-system)
4141 (arguments
4142 ;; rubygems.org release missing tests
4143 '(#:tests? #f))
4144 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
4145 (synopsis "Mocha adapter for Bacon")
4146 (description
4147 "This package provides a Mocha adapter for Bacon, allowing you to use the
4148 Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
4149 (home-page
4150 "https://github.com/alloy/mocha-on-bacon")
4151 (license license:expat)))
4152
4153 (define-public ruby-net-ssh
4154 (package
4155 (name "ruby-net-ssh")
4156 (version "4.2.0")
4157 (source (origin
4158 (method url-fetch)
4159 (uri (rubygems-uri "net-ssh" version))
4160 (sha256
4161 (base32
4162 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
4163 (build-system ruby-build-system)
4164 (native-inputs
4165 `(("bundler" ,bundler)
4166 ("ruby-mocha" ,ruby-mocha)
4167 ("ruby-test-unit" ,ruby-test-unit)))
4168 (synopsis "Ruby implementation of the SSH2 client protocol")
4169 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
4170 client protocol. It allows you to write programs that invoke and interact
4171 with processes on remote servers, via SSH2.")
4172 (home-page "https://github.com/net-ssh/net-ssh")
4173 (license license:expat)))
4174
4175 (define-public ruby-net-scp
4176 (package
4177 (name "ruby-net-scp")
4178 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
4179 (version "1.2.2.rc2")
4180 (source
4181 (origin
4182 (method git-fetch)
4183 (uri (git-reference
4184 (url "https://github.com/net-ssh/net-scp")
4185 (commit (string-append "v" version))))
4186 (file-name (git-file-name name version))
4187 (sha256
4188 (base32 "1nyn17sy71fn7zs3y6wbgcn35318c10flqgc0582409095x4h0sx"))))
4189 (build-system ruby-build-system)
4190 (native-inputs
4191 `(("bundler" ,bundler)
4192 ("ruby-test-unit" ,ruby-test-unit)
4193 ("ruby-mocha" ,ruby-mocha)))
4194 (propagated-inputs
4195 `(("ruby-net-ssh" ,ruby-net-ssh)))
4196 (synopsis "Pure-Ruby SCP client library")
4197 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
4198 client protocol.")
4199 (home-page "https://github.com/net-ssh/net-scp")
4200 (license license:expat)))
4201
4202 (define-public ruby-minitest
4203 (package
4204 (name "ruby-minitest")
4205 (version "5.11.3")
4206 (source (origin
4207 (method url-fetch)
4208 (uri (rubygems-uri "minitest" version))
4209 (sha256
4210 (base32
4211 "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"))))
4212 (build-system ruby-build-system)
4213 (native-inputs
4214 `(("ruby-hoe" ,ruby-hoe)))
4215 (synopsis "Small test suite library for Ruby")
4216 (description "Minitest provides a complete suite of Ruby testing
4217 facilities supporting TDD, BDD, mocking, and benchmarking.")
4218 (home-page "https://github.com/seattlerb/minitest")
4219 (license license:expat)))
4220
4221 ;; This is the last release of Minitest 4, which is used by some packages.
4222 (define-public ruby-minitest-4
4223 (package (inherit ruby-minitest)
4224 (version "4.7.5")
4225 (source (origin
4226 (method url-fetch)
4227 (uri (rubygems-uri "minitest" version))
4228 (sha256
4229 (base32
4230 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
4231 (arguments
4232 `(#:phases
4233 (modify-phases %standard-phases
4234 (add-after 'unpack 'remove-unsupported-method
4235 (lambda _
4236 (substitute* "Rakefile"
4237 (("self\\.rubyforge_name = .*") ""))
4238 #t))
4239 (add-after 'build 'exclude-failing-tests
4240 (lambda _
4241 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
4242 ;; Fixnum.
4243 (delete-file "test/minitest/test_minitest_spec.rb")
4244 #t)))))))
4245
4246 (define-public ruby-minitest-around
4247 (package
4248 (name "ruby-minitest-around")
4249 (version "0.5.0")
4250 (source
4251 (origin
4252 (method url-fetch)
4253 (uri (rubygems-uri "minitest-around" version))
4254 (sha256
4255 (base32
4256 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
4257 (build-system ruby-build-system)
4258 (arguments
4259 '(#:phases
4260 (modify-phases %standard-phases
4261 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
4262 (lambda _
4263 (substitute* "minitest-around.gemspec"
4264 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n"))
4265 #t)))))
4266 (propagated-inputs
4267 `(("ruby-minitest" ,ruby-minitest)))
4268 (native-inputs
4269 `(("bundler" ,bundler)
4270 ("ruby-cucumber" ,ruby-cucumber)
4271 ("ruby-bump" ,ruby-bump)
4272 ("ruby-test-construct" ,ruby-test-construct)))
4273 (synopsis "Run code around tests in Minitest")
4274 (description
4275 "This library provides a way to run code around tests in Minitest,
4276 written using either the unit test or spec style.")
4277 (home-page "https://github.com/splattael/minitest-around")
4278 (license license:expat)))
4279
4280 (define-public ruby-minitest-sprint
4281 (package
4282 (name "ruby-minitest-sprint")
4283 (version "1.1.0")
4284 (source (origin
4285 (method url-fetch)
4286 (uri (rubygems-uri "minitest-sprint" version))
4287 (sha256
4288 (base32
4289 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
4290 (build-system ruby-build-system)
4291 (native-inputs
4292 `(("ruby-hoe" ,ruby-hoe)
4293 ("ruby-minitest" ,ruby-minitest)))
4294 (synopsis "Fast test suite runner for minitest")
4295 (description "Minitest-sprint is a test runner for minitest that makes it
4296 easier to re-run individual failing tests.")
4297 (home-page "https://github.com/seattlerb/minitest-sprint")
4298 (license license:expat)))
4299
4300 (define-public ruby-minitest-bacon
4301 (package
4302 (name "ruby-minitest-bacon")
4303 (version "1.0.3")
4304 (source (origin
4305 (method url-fetch)
4306 (uri (rubygems-uri "minitest-bacon" version))
4307 (sha256
4308 (base32
4309 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
4310 (build-system ruby-build-system)
4311 (native-inputs
4312 `(("ruby-hoe" ,ruby-hoe)))
4313 (inputs
4314 `(("ruby-minitest" ,ruby-minitest)))
4315 (synopsis "Bacon compatibility library for minitest")
4316 (description "Minitest-bacon extends minitest with bacon-like
4317 functionality, making it easier to migrate test suites from bacon to minitest.")
4318 (home-page "https://github.com/seattlerb/minitest-bacon")
4319 (license license:expat)))
4320
4321 (define-public ruby-minitest-focus
4322 (package
4323 (name "ruby-minitest-focus")
4324 (version "1.1.2")
4325 (source
4326 (origin
4327 (method url-fetch)
4328 (uri (rubygems-uri "minitest-focus" version))
4329 (sha256
4330 (base32
4331 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
4332 (build-system ruby-build-system)
4333 (propagated-inputs
4334 `(("ruby-minitest" ,ruby-minitest)))
4335 (native-inputs
4336 `(("ruby-hoe" ,ruby-hoe)))
4337 (synopsis "Allows a few specific tests to be focused on")
4338 (description
4339 "@code{minitest-focus} gives the ability focus on a few tests with ease
4340 without having to use command-line arguments. It introduces a @code{focus}
4341 class method for use in testing classes, specifying that the next defined test
4342 is to be run.")
4343 (home-page "https://github.com/seattlerb/minitest-focus")
4344 (license license:expat)))
4345
4346 (define-public ruby-minitest-pretty-diff
4347 ;; Use git reference because gem is out of date and does not contain testing
4348 ;; script. There are no releases on GitHub.
4349 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
4350 (package
4351 (name "ruby-minitest-pretty-diff")
4352 (version (string-append "0.1-1." (string-take commit 8)))
4353 (source (origin
4354 (method git-fetch)
4355 (uri (git-reference
4356 (url "https://github.com/adammck/minitest-pretty_diff")
4357 (commit commit)))
4358 (file-name (string-append name "-" version "-checkout"))
4359 (sha256
4360 (base32
4361 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
4362 (build-system ruby-build-system)
4363 (arguments
4364 `(#:phases
4365 (modify-phases %standard-phases
4366 (replace 'check
4367 (lambda _
4368 (invoke "script/test"))))))
4369 (native-inputs
4370 `(("bundler" ,bundler)
4371 ("ruby-turn" ,ruby-turn)))
4372 (synopsis "Pretty-print hashes and arrays in MiniTest")
4373 (description
4374 "@code{minitest-pretty_diff} monkey-patches
4375 @code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
4376 diffing them. This makes it easier to spot differences between nested
4377 structures when tests fail.")
4378 (home-page "https://github.com/adammck/minitest-pretty_diff")
4379 (license license:expat))))
4380
4381 (define-public ruby-minitest-moar
4382 (package
4383 (name "ruby-minitest-moar")
4384 (version "0.0.4")
4385 (source
4386 (origin
4387 (method url-fetch)
4388 (uri (rubygems-uri "minitest-moar" version))
4389 (sha256
4390 (base32
4391 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
4392 (build-system ruby-build-system)
4393 (arguments
4394 `(#:phases
4395 (modify-phases %standard-phases
4396 (add-before 'check 'clean-dependencies
4397 (lambda _
4398 ;; Remove all gems defined in the Gemfile because these are not
4399 ;; truly needed.
4400 (substitute* "Gemfile"
4401 (("gem .*") ""))
4402 ;; Remove byebug as not needed to run tests.
4403 (substitute* "test/test_helper.rb"
4404 (("require 'byebug'") ""))
4405 #t)))))
4406 (native-inputs
4407 `(("bundler" ,bundler)
4408 ("ruby-minitest" ,ruby-minitest)))
4409 (synopsis "Extra features and changes to MiniTest")
4410 (description "@code{MiniTest Moar} add some additional features and
4411 changes some default behaviours in MiniTest. For instance, Moar replaces the
4412 MiniTest @code{Object#stub} with a global @code{stub} method.")
4413 (home-page "https://github.com/dockyard/minitest-moar")
4414 (license license:expat)))
4415
4416 (define-public ruby-minitest-bonus-assertions
4417 (package
4418 (name "ruby-minitest-bonus-assertions")
4419 (version "3.0")
4420 (source
4421 (origin
4422 (method url-fetch)
4423 (uri (rubygems-uri "minitest-bonus-assertions" version))
4424 (sha256
4425 (base32
4426 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
4427 (build-system ruby-build-system)
4428 (arguments
4429 `(#:phases
4430 (modify-phases %standard-phases
4431 (add-before 'check 'clean-dependencies
4432 (lambda _
4433 ;; Remove unneeded require statement that would entail another
4434 ;; dependency.
4435 (substitute* "test/minitest_config.rb"
4436 (("require 'minitest/bisect'") ""))
4437 #t)))))
4438 (native-inputs
4439 `(("ruby-hoe" ,ruby-hoe)
4440 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
4441 ("ruby-minitest-focus" ,ruby-minitest-focus)
4442 ("ruby-minitest-moar" ,ruby-minitest-moar)))
4443 (synopsis "Bonus assertions for @code{Minitest}")
4444 (description
4445 "Minitest bonus assertions provides extra MiniTest assertions. For
4446 instance, it provides @code{assert_true}, @code{assert_false} and
4447 @code{assert_set_equal}.")
4448 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
4449 (license license:expat)))
4450
4451 (define-public ruby-minitest-reporters
4452 (package
4453 (name "ruby-minitest-reporters")
4454 (version "1.3.6")
4455 (source
4456 (origin
4457 (method url-fetch)
4458 (uri (rubygems-uri "minitest-reporters" version))
4459 (sha256
4460 (base32
4461 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
4462 (build-system ruby-build-system)
4463 (arguments
4464 '(#:phases
4465 (modify-phases %standard-phases
4466 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
4467 ;; including it as an input can lead to circular dependencies.
4468 (add-after 'unpack 'remove-rubocop-from-Rakefile
4469 (lambda _
4470 (substitute* "Rakefile"
4471 (("require 'rubocop/rake\\_task'") "")
4472 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
4473 #t))
4474 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
4475 (lambda _
4476 (substitute* "minitest-reporters.gemspec"
4477 ((".*%q<rubocop>.*") "\n"))
4478 #t)))))
4479 (propagated-inputs
4480 `(("ruby-ansi" ,ruby-ansi)
4481 ("ruby-builder" ,ruby-builder)
4482 ("ruby-minitest" ,ruby-minitest)
4483 ("ruby-progressbar" ,ruby-progressbar)))
4484 (native-inputs
4485 `(("bundler" ,bundler)
4486 ("ruby-maruku" ,ruby-maruku)))
4487 (synopsis "Enhanced reporting for Minitest tests")
4488 (description
4489 "@code{minitest/reporters} provides a custom Minitest runner to improve
4490 how the test state is reported. A number of different reporters are
4491 available, including a spec reporter, progress bar reporter, a HTML
4492 reporter.")
4493 (home-page "https://github.com/kern/minitest-reporters")
4494 (license license:expat)))
4495
4496 (define-public ruby-minitest-rg
4497 (package
4498 (name "ruby-minitest-rg")
4499 (version "5.2.0")
4500 (source
4501 (origin
4502 (method url-fetch)
4503 (uri (rubygems-uri "minitest-rg" version))
4504 (sha256
4505 (base32
4506 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
4507 (build-system ruby-build-system)
4508 (arguments
4509 ;; Some tests fail even outside Guix, so disable tests.
4510 ;; https://github.com/blowmage/minitest-rg/issues/12
4511 ;; https://github.com/blowmage/minitest-rg/pull/13
4512 `(#:tests? #f))
4513 (propagated-inputs
4514 `(("ruby-minitest" ,ruby-minitest)))
4515 (synopsis "Coloured output for Minitest")
4516 (description
4517 "@code{minitest-rg} changes the colour of the output from Minitest.")
4518 (home-page "https://blowmage.com/minitest-rg/")
4519 (license license:expat)))
4520
4521 (define-public ruby-minitest-hooks
4522 (package
4523 (name "ruby-minitest-hooks")
4524 (version "1.4.2")
4525 (source
4526 (origin
4527 (method url-fetch)
4528 (uri (rubygems-uri "minitest-hooks" version))
4529 (sha256
4530 (base32
4531 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
4532 (build-system ruby-build-system)
4533 (arguments
4534 '(#:test-target "spec"))
4535 (native-inputs
4536 `(("ruby-sequel" ,ruby-sequel)
4537 ("ruby-sqlite3" ,ruby-sqlite3)))
4538 (synopsis "Hooks for the minitest framework")
4539 (description
4540 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
4541 @code{around_all} hooks for Minitest. This allows, for instance, running each
4542 suite of specs inside a database transaction, running each spec inside its own
4543 savepoint inside that transaction. This can significantly speed up testing
4544 for specs that share expensive database setup code.")
4545 (home-page "https://github.com/jeremyevans/minitest-hooks")
4546 (license license:expat)))
4547
4548 (define-public ruby-daemons
4549 (package
4550 (name "ruby-daemons")
4551 (version "1.2.5")
4552 (source (origin
4553 (method url-fetch)
4554 (uri (rubygems-uri "daemons" version))
4555 (sha256
4556 (base32
4557 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
4558 (build-system ruby-build-system)
4559 (arguments
4560 `(#:tests? #f)) ; no test suite
4561 (synopsis "Daemonize Ruby programs")
4562 (description "Daemons provides a way to wrap existing Ruby scripts to be
4563 run as a daemon and to be controlled by simple start/stop/restart commands.")
4564 (home-page "https://github.com/thuehlinger/daemons")
4565 (license license:expat)))
4566
4567 (define-public ruby-data_uri
4568 (package
4569 (name "ruby-data_uri")
4570 (version "0.1.0")
4571 (source
4572 (origin
4573 (method url-fetch)
4574 (uri (rubygems-uri "data_uri" version))
4575 (sha256
4576 (base32
4577 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
4578 (build-system ruby-build-system)
4579 (synopsis "URI class for parsing data URIs")
4580 (description
4581 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
4582 embedded inside a URI. The URI::Data class provides support for parsing these
4583 URIs using the normal URI.parse method.")
4584 (home-page "https://github.com/dball/data_uri")
4585 (license license:expat)))
4586
4587 (define-public ruby-deep-merge
4588 (package
4589 (name "ruby-deep-merge")
4590 (version "1.2.1")
4591 (home-page "https://github.com/danielsdeleo/deep_merge")
4592 ;; The Rubygem source does not contain the gemspec required for tests.
4593 (source (origin
4594 (method git-fetch)
4595 (uri (git-reference (url home-page) (commit version)))
4596 (file-name (git-file-name name version))
4597 (sha256
4598 (base32
4599 "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931"))))
4600 (build-system ruby-build-system)
4601 (native-inputs
4602 `(("ruby-minitest" ,ruby-minitest)))
4603 (synopsis "Recursively merge hashes")
4604 (description
4605 "Deep Merge is a set of utility functions for @code{Hash}. It permits
4606 you to merge elements inside a hash together recursively.")
4607 (license license:expat)))
4608
4609 (define-public ruby-git
4610 (package
4611 (name "ruby-git")
4612 (version "1.3.0")
4613 (source (origin
4614 (method url-fetch)
4615 (uri (rubygems-uri "git" version))
4616 (sha256
4617 (base32
4618 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
4619 (build-system ruby-build-system)
4620 (arguments
4621 `(#:tests? #f ; no tests
4622 #:phases (modify-phases %standard-phases
4623 (add-after 'install 'patch-git-binary
4624 (lambda* (#:key inputs outputs #:allow-other-keys)
4625 ;; Make the default git binary an absolute path to the
4626 ;; store.
4627 (let ((git (string-append (assoc-ref inputs "git")
4628 "/bin/git"))
4629 (config (string-append
4630 (assoc-ref outputs "out")
4631 "/lib/ruby/vendor_ruby/gems/git-"
4632 ,version "/lib/git/config.rb")))
4633 (substitute* (list config)
4634 (("'git'")
4635 (string-append "'" git "'")))
4636 #t))))))
4637 (inputs
4638 `(("git" ,git)))
4639 (synopsis "Ruby wrappers for Git")
4640 (description "Ruby/Git is a Ruby library that can be used to create, read
4641 and manipulate Git repositories by wrapping system calls to the git binary.")
4642 (home-page "https://github.com/schacon/ruby-git")
4643 (license license:expat)))
4644
4645 (define-public ruby-hocon
4646 (package
4647 (name "ruby-hocon")
4648 (version "1.3.1")
4649 (home-page "https://github.com/puppetlabs/ruby-hocon")
4650 (source (origin
4651 (method git-fetch)
4652 (uri (git-reference (url home-page) (commit version)))
4653 (file-name (git-file-name name version))
4654 (sha256
4655 (base32
4656 "172hh2zr0n9nnszv0qvlgwszgkrq84yahrg053m68asy79zpmbqr"))))
4657 (build-system ruby-build-system)
4658 (arguments
4659 '(#:phases (modify-phases %standard-phases
4660 (replace 'check
4661 (lambda* (#:key tests? #:allow-other-keys)
4662 (if tests?
4663 (invoke "rspec")
4664 (format #t "test suite not run~%"))
4665 #t)))))
4666 (native-inputs
4667 `(("bundler" ,bundler)
4668 ("ruby-rspec" ,ruby-rspec)))
4669 (synopsis "HOCON config library")
4670 (description
4671 "This package provides Ruby support for the @acronym{HOCON,
4672 Human-Optimized Config Object Notation} configuration file format. It
4673 supports parsing and modifying HOCON and JSON files, and rendering parsed
4674 objects back to a @code{String}.")
4675 (license license:asl2.0)))
4676
4677 (define-public ruby-slop
4678 (package
4679 (name "ruby-slop")
4680 (version "4.5.0")
4681 (source (origin
4682 (method url-fetch)
4683 (uri (rubygems-uri "slop" version))
4684 (sha256
4685 (base32
4686 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
4687 (build-system ruby-build-system)
4688 (native-inputs
4689 `(("ruby-minitest" ,ruby-minitest)))
4690 (synopsis "Ruby command line option parser")
4691 (description "Slop provides a Ruby domain specific language for gathering
4692 options and parsing command line flags.")
4693 (home-page "https://github.com/leejarvis/slop")
4694 (license license:expat)))
4695
4696 (define-public ruby-slop-3
4697 (package (inherit ruby-slop)
4698 (version "3.6.0")
4699 (source (origin
4700 (method url-fetch)
4701 (uri (rubygems-uri "slop" version))
4702 (sha256
4703 (base32
4704 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
4705
4706 (define-public ruby-multi-xml
4707 (package
4708 (name "ruby-multi-xml")
4709 (version "0.6.0")
4710 (source
4711 (origin
4712 (method url-fetch)
4713 (uri (rubygems-uri "multi_xml" version))
4714 (sha256
4715 (base32
4716 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
4717 (build-system ruby-build-system)
4718 (arguments
4719 '(#:tests? #f)) ; No included tests
4720 (synopsis "Swappable XML backends for Ruby")
4721 (description
4722 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
4723 Nokogiri, Ox, or REXML.")
4724 (home-page "https://github.com/sferik/multi_xml")
4725 (license license:expat)))
4726
4727 (define-public ruby-multipart-post
4728 (package
4729 (name "ruby-multipart-post")
4730 (version "2.0.0")
4731 (source (origin
4732 (method url-fetch)
4733 (uri (rubygems-uri "multipart-post" version))
4734 (sha256
4735 (base32
4736 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
4737 (build-system ruby-build-system)
4738 (native-inputs
4739 `(("bundler" ,bundler)))
4740 (synopsis "Multipart POST library for Ruby")
4741 (description "Multipart-Post Adds multipart POST capability to Ruby's
4742 net/http library.")
4743 (home-page "https://github.com/nicksieger/multipart-post")
4744 (license license:expat)))
4745
4746 (define-public ruby-multi-json
4747 (package
4748 (name "ruby-multi-json")
4749 (version "1.13.1")
4750 (source
4751 (origin
4752 (method git-fetch)
4753 ;; Tests are not distributed at rubygems.org so download from GitHub
4754 ;; instead.
4755 (uri (git-reference
4756 (url "https://github.com/intridea/multi_json")
4757 (commit (string-append "v" version))))
4758 (file-name (git-file-name name version))
4759 (sha256
4760 (base32
4761 "18wpb6p01rrkl4v33byh70vxj2a5jxkfxzv3pz8z6pssy4ymwkm4"))))
4762 (build-system ruby-build-system)
4763 (arguments
4764 `(#:phases
4765 (modify-phases %standard-phases
4766 (add-after 'unpack 'remove-signing-key-reference
4767 (lambda _
4768 (substitute* "multi_json.gemspec"
4769 ((".*spec.signing_key.*") ""))
4770 #t)))))
4771 (native-inputs
4772 `(("bundler" ,bundler)
4773 ("ruby-rspec" ,ruby-rspec)
4774 ("ruby-yard" ,ruby-yard)
4775 ("ruby-json-pure" ,ruby-json-pure)
4776 ("ruby-oj" ,ruby-oj)
4777 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
4778 (synopsis "Common interface to multiple JSON libraries for Ruby")
4779 (description
4780 "This package provides a common interface to multiple JSON libraries,
4781 including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
4782 NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
4783 (home-page "https://github.com/intridea/multi_json")
4784 (license license:expat)))
4785
4786 (define-public ruby-multi-test
4787 (package
4788 (name "ruby-multi-test")
4789 (version "0.1.2")
4790 (source
4791 (origin
4792 (method url-fetch)
4793 (uri (rubygems-uri "multi_test" version))
4794 (sha256
4795 (base32
4796 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
4797 (build-system ruby-build-system)
4798 (arguments
4799 '(;; Tests require different sets of specific gem versions to be available,
4800 ;; and there is no gemfile that specifies the newest versions of
4801 ;; dependencies to be tested.
4802 #:tests? #f))
4803 (synopsis
4804 "Interface to testing libraries loaded into a running Ruby process")
4805 (description
4806 "@code{multi_test} provides a uniform interface onto whatever testing
4807 libraries that have been loaded into a running Ruby process to help control
4808 rogue test/unit/autorun requires.")
4809 (home-page "https://github.com/cucumber/multi_test")
4810 (license license:expat)))
4811
4812 (define-public ruby-arel
4813 (package
4814 (name "ruby-arel")
4815 (version "9.0.0")
4816 (source (origin
4817 (method url-fetch)
4818 (uri (rubygems-uri "arel" version))
4819 (sha256
4820 (base32
4821 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
4822 (build-system ruby-build-system)
4823 (arguments '(#:tests? #f)) ; no tests
4824 (home-page "https://github.com/rails/arel")
4825 (synopsis "SQL AST manager for Ruby")
4826 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
4827 Ruby. It simplifies the generation of complex SQL queries and adapts to
4828 various relational database implementations.")
4829 (license license:expat)))
4830
4831 (define-public ruby-marcel
4832 (package
4833 (name "ruby-marcel")
4834 (version "0.3.3")
4835 (source
4836 (origin
4837 (method url-fetch)
4838 (uri (rubygems-uri "marcel" version))
4839 (sha256
4840 (base32
4841 "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
4842 (build-system ruby-build-system)
4843 (arguments
4844 '(;; No included tests
4845 #:tests? #f))
4846 (propagated-inputs
4847 `(("ruby-mimemagic" ,ruby-mimemagic)))
4848 (synopsis "MIME type detection using magic numbers, filenames and extensions")
4849 (description
4850 "@code{marcel} provides @acronym{MIME, Multipurpose Internet Mail
4851 Extensions} type detection using magic numbers, filenames, and extensions")
4852 (home-page "https://github.com/basecamp/marcel")
4853 (license license:expat)))
4854
4855 (define-public ruby-minitar
4856 ;; We package from the GitHub source to fix the security issue reported at
4857 ;; https://github.com/halostatue/minitar/issues/16.
4858 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
4859 (package
4860 (name "ruby-minitar")
4861 (version (string-append "0.5.4-1." (string-take commit 8)))
4862 (source
4863 (origin
4864 (method git-fetch)
4865 (uri (git-reference
4866 (url "https://github.com/halostatue/minitar")
4867 (commit commit)))
4868 (file-name (string-append name "-" version "-checkout"))
4869 (sha256
4870 (base32
4871 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
4872 (build-system ruby-build-system)
4873 (arguments
4874 '(#:tests? #f)) ; missing a gemspec
4875 (synopsis "Ruby library and utility for handling tar archives")
4876 (description
4877 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
4878 that provides the ability to deal with POSIX tar archive files.")
4879 (home-page "http://www.github.com/atoulme/minitar")
4880 (license (list license:gpl2+ license:ruby)))))
4881
4882 (define-public ruby-mini-portile
4883 (package
4884 (name "ruby-mini-portile")
4885 (version "0.6.2")
4886 (source
4887 (origin
4888 (method url-fetch)
4889 (uri (rubygems-uri "mini_portile" version))
4890 (sha256
4891 (base32
4892 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
4893 (build-system ruby-build-system)
4894 (arguments
4895 '(#:tests? #f)) ; tests require network access
4896 (synopsis "Ports system for Ruby developers")
4897 (description "Mini-portile is a port/recipe system for Ruby developers.
4898 It provides a standard way to compile against specific versions of libraries
4899 to reproduce user environments.")
4900 (home-page "https://github.com/flavorjones/mini_portile")
4901 (license license:expat)))
4902
4903 (define-public ruby-mini-portile-2
4904 (package (inherit ruby-mini-portile)
4905 (version "2.4.0")
4906 (source (origin
4907 (method url-fetch)
4908 (uri (rubygems-uri "mini_portile2" version))
4909 (sha256
4910 (base32
4911 "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"))))))
4912
4913 (define-public ruby-nokogiri
4914 (package
4915 (name "ruby-nokogiri")
4916 (version "1.10.9")
4917 (source (origin
4918 (method url-fetch)
4919 (uri (rubygems-uri "nokogiri" version))
4920 (sha256
4921 (base32
4922 "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm"))))
4923 (build-system ruby-build-system)
4924 (arguments
4925 ;; Tests fail because Nokogiri can only test with an installed extension,
4926 ;; and also because many test framework dependencies are missing.
4927 `(#:tests? #f
4928 #:gem-flags (list "--" "--use-system-libraries"
4929 (string-append "--with-xml2-include="
4930 (assoc-ref %build-inputs "libxml2")
4931 "/include/libxml2" ))
4932 #:phases
4933 (modify-phases %standard-phases
4934 (add-before 'build 'patch-extconf
4935 ;; 'pkg-config' is not included in the GEM_PATH during
4936 ;; installation, so we add it directly to the load path.
4937 (lambda* (#:key inputs #:allow-other-keys)
4938 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
4939 (substitute* "ext/nokogiri/extconf.rb"
4940 (("gem 'pkg-config'.*")
4941 (string-append "$:.unshift '"
4942 pkg-config "/lib/ruby/vendor_ruby"
4943 "/gems/pkg-config-"
4944 ,(package-version ruby-pkg-config)
4945 "/lib'\n"))))
4946 #t)))))
4947 (native-inputs
4948 `(("ruby-hoe" ,ruby-hoe)))
4949 (inputs
4950 `(("zlib" ,zlib)
4951 ("libxml2" ,libxml2)
4952 ("libxslt" ,libxslt)))
4953 (propagated-inputs
4954 `(("ruby-mini-portile" ,ruby-mini-portile-2)
4955 ("ruby-pkg-config" ,ruby-pkg-config)))
4956 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
4957 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
4958 both CSS3 selector and XPath 1.0 support.")
4959 (home-page "http://www.nokogiri.org/")
4960 (license license:expat)))
4961
4962 (define-public ruby-method-source
4963 (package
4964 (name "ruby-method-source")
4965 (version "1.0.0")
4966 (source
4967 (origin
4968 (method url-fetch)
4969 (uri (rubygems-uri "method_source" version))
4970 (sha256
4971 (base32
4972 "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"))))
4973 (build-system ruby-build-system)
4974 (arguments
4975 `(#:test-target "spec"))
4976 (native-inputs
4977 `(("ruby-rspec" ,ruby-rspec)
4978 ("git" ,git)))
4979 (synopsis "Retrieve the source code for Ruby methods")
4980 (description "Method_source retrieves the source code for Ruby methods.
4981 Additionally, it can extract source code from Proc and Lambda objects or just
4982 extract comments.")
4983 (home-page "https://github.com/banister/method_source")
4984 (license license:expat)))
4985
4986 (define-public ruby-coderay
4987 (package
4988 (name "ruby-coderay")
4989 (version "1.1.2")
4990 (source
4991 (origin
4992 (method url-fetch)
4993 (uri (rubygems-uri "coderay" version))
4994 (sha256
4995 (base32
4996 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
4997 (build-system ruby-build-system)
4998 (arguments
4999 '(#:tests? #f)) ; missing test files
5000 (synopsis "Ruby syntax highlighting library")
5001 (description "Coderay is a Ruby library that provides syntax highlighting
5002 for select languages.")
5003 (home-page "http://coderay.rubychan.de")
5004 (license license:expat)))
5005
5006 (define-public ruby-cuke-modeler
5007 (package
5008 (name "ruby-cuke-modeler")
5009 (version "3.1.0")
5010 (source
5011 (origin
5012 (method url-fetch)
5013 (uri (rubygems-uri "cuke_modeler" version))
5014 (sha256
5015 (base32
5016 "19smj3g3wvz0203l549sadpcxgh0ir350a6k78gq0bmlv9cchmjb"))))
5017 (build-system ruby-build-system)
5018 (arguments `(#:tests? #f)) ;no test suite in gem
5019 (propagated-inputs
5020 `(("ruby-gherkin" ,ruby-gherkin)))
5021 (synopsis "Gherkin test suite analysis tool")
5022 (description "CukeModeler facilitates modeling a test suite that is
5023 written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by
5024 providing an abstraction layer on top of the Abstract Syntax Tree (AST) that
5025 the @code{cucumber-gherkin} generates when parsing features, as well as
5026 providing models for feature files and directories in order to be able to have
5027 a fully traversable model tree of a test suite's structure. These models can
5028 then be analyzed or manipulated more easily than the underlying AST layer.")
5029 (home-page "https://github.com/enkessler/cuke_modeler")
5030 (license license:expat)))
5031
5032 (define-public ruby-parallel-tests
5033 (package
5034 (name "ruby-parallel-tests")
5035 (version "3.0.0")
5036 (home-page "https://github.com/grosser/parallel_tests")
5037 (source (origin
5038 (method git-fetch)
5039 (uri (git-reference
5040 (url home-page)
5041 (commit (string-append "v" version))))
5042 (file-name (string-append name version))
5043 (sha256
5044 (base32
5045 "08a6ndqn2dqacmc7yg48k0dh2rfrynvhkd5hiay16dl9m1r9q8pz"))))
5046 (build-system ruby-build-system)
5047 (arguments
5048 '(#:test-target "default"
5049 #:phases (modify-phases %standard-phases
5050 (add-after 'patch-source-shebangs 'patch-shell-invokations
5051 (lambda _
5052 (substitute* '("lib/parallel_tests/tasks.rb"
5053 "spec/parallel_tests/tasks_spec.rb")
5054 (("/bin/sh") (which "sh"))
5055 (("/bin/bash") (which "bash")))
5056 #t))
5057 (add-before 'check 'remove-version-constraints
5058 (lambda _
5059 ;; Remove hard coded version constraints, instead just
5060 ;; use whatever versions are available in Guix.
5061 (delete-file "Gemfile.lock")
5062 (substitute* "Gemfile"
5063 (("'minitest',.*")
5064 "'minitest'\n")
5065 (("'cucumber',.*")
5066 "'cucumber'\n"))
5067 #t))
5068 (add-before 'check 'disable-rails-test
5069 (lambda _
5070 ;; XXX: This test attempts to download and run the test
5071 ;; suites of multiple Rails versions(!) directly.
5072 (delete-file "spec/rails_spec.rb")
5073 #t))
5074 (add-before 'check 'set-HOME
5075 (lambda _
5076 ;; Some tests check the output of Bundler, and fail when
5077 ;; Bundler warns that /homeless-shelter does not exist.
5078 (setenv "HOME" "/tmp")
5079 #t)))))
5080 (native-inputs
5081 `(("ruby-bump" ,ruby-bump)
5082 ("ruby-cucumber" ,ruby-cucumber)
5083 ("ruby-cuke-modeler" ,ruby-cuke-modeler)
5084 ("ruby-minitest" ,ruby-minitest)
5085 ("ruby-rake" ,ruby-rake)
5086 ("ruby-rspec" ,ruby-rspec)
5087 ("ruby-spinach" ,ruby-spinach)))
5088 (propagated-inputs
5089 `(("ruby-parallel" ,ruby-parallel)))
5090 (synopsis "Run tests in parallel")
5091 (description
5092 "This package can speed up @code{Test::Unit}, @code{RSpec},
5093 @code{Cucumber}, and @code{Spinach} tests by running them concurrently
5094 across multiple CPU cores.")
5095 (license license:expat)))
5096
5097 (define-public ruby-parser
5098 (package
5099 (name "ruby-parser")
5100 (version "2.7.1.4")
5101 (source
5102 (origin
5103 (method url-fetch)
5104 (uri (rubygems-uri "parser" version))
5105 (sha256
5106 (base32
5107 "1030znhvhkfn39svwbj6qn4xb6hgl94gnvg57k4d3r76f9bryqmn"))))
5108 (build-system ruby-build-system)
5109 (native-inputs
5110 `(("bundler" ,bundler)
5111 ("ruby-cliver" ,ruby-cliver)
5112 ("ruby-simplecov" ,ruby-simplecov)
5113 ("ruby-racc" ,ruby-racc)))
5114 (inputs
5115 `(("ragel" ,ragel)))
5116 (propagated-inputs
5117 `(("ruby-ast" ,ruby-ast)))
5118 (synopsis "Ruby parser written in pure Ruby")
5119 (description
5120 "This package provides a Ruby parser written in pure Ruby.")
5121 (home-page "https://github.com/whitequark/parser")
5122 (license license:expat)))
5123
5124 (define-public ruby-sexp-processor
5125 (package
5126 (name "ruby-sexp-processor")
5127 (version "4.15.0")
5128 (source
5129 (origin
5130 (method url-fetch)
5131 (uri (rubygems-uri "sexp_processor" version))
5132 (sha256
5133 (base32
5134 "0d1vks77xnd0m3s94a58f9bkdwlaml5qdkmprx279m2s0pc2gv55"))))
5135 (build-system ruby-build-system)
5136 (native-inputs
5137 ;; TODO: Add ruby-minitest-proveit once available.
5138 `(("hoe" ,ruby-hoe)))
5139 (synopsis "ParseTree fork which includes generic S-exp processing tools")
5140 (description "The sexp_processor package is derived from ParseTree, but
5141 contrary to ParseTree, it includes all the generic S-exp processing tools.
5142 Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and
5143 @code{Environment}")
5144 (home-page "https://github.com/seattlerb/sexp_processor")
5145 (license license:expat)))
5146
5147 (define-public ruby-ruby-parser
5148 (package
5149 (name "ruby-ruby-parser")
5150 (version "3.14.2")
5151 (source
5152 (origin
5153 (method url-fetch)
5154 (uri (rubygems-uri "ruby_parser" version))
5155 (sha256
5156 (base32
5157 "09qcdyjjw3p7g6cjm5m9swkms1xnv35ndiy7yw24cas16qrhha6c"))))
5158 (build-system ruby-build-system)
5159 (native-inputs
5160 `(("hoe" ,ruby-hoe)
5161 ("racc" ,ruby-racc)
5162 ("unifdef" ,unifdef)))
5163 (propagated-inputs
5164 `(("ruby-sexp-processor" ,ruby-sexp-processor)))
5165 (home-page "https://github.com/seattlerb/ruby_parser/")
5166 (synopsis "Ruby parser written in pure Ruby")
5167 (description "The ruby_parser (RP) package provides a Ruby parser written
5168 in pure Ruby. It outputs S-expressions which can be manipulated and converted
5169 back to Ruby via the @code{ruby2ruby} library.")
5170 (license license:expat)))
5171
5172 (define-public ruby-prawn-manual-builder
5173 (package
5174 (name "ruby-prawn-manual-builder")
5175 (version "0.3.1")
5176 (source
5177 (origin
5178 (method url-fetch)
5179 (uri (rubygems-uri "prawn-manual_builder" version))
5180 (sha256
5181 (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs"))))
5182 (build-system ruby-build-system)
5183 (arguments
5184 '(#:tests? #f ; no included tests
5185 #:phases
5186 (modify-phases %standard-phases
5187 (add-after 'extract-gemspec 'patch-gemspec
5188 (lambda _
5189 (substitute* ".gemspec"
5190 ;; Loosen the requirement for pdf-inspector
5191 (("~> 1\\.0\\.7") ">= 0")))))))
5192 (propagated-inputs
5193 `(("ruby-coderay" ,ruby-coderay)))
5194 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
5195 (description
5196 "This package provides a tool for writing manuals for Prawn and Prawn
5197 accessories")
5198 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
5199 (license %prawn-project-licenses)))
5200
5201 (define-public ruby-progress_bar
5202 (package
5203 (name "ruby-progress_bar")
5204 (version "1.1.0")
5205 (source
5206 (origin
5207 (method url-fetch)
5208 (uri (rubygems-uri "progress_bar" version))
5209 (sha256
5210 (base32
5211 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
5212 (build-system ruby-build-system)
5213 (arguments
5214 '(#:test-target "spec"))
5215 (propagated-inputs
5216 `(("ruby-highline" ,ruby-highline)
5217 ("ruby-options" ,ruby-options)))
5218 (native-inputs
5219 `(("bundler" ,bundler)
5220 ("ruby-rspec" ,ruby-rspec)
5221 ("ruby-timecop" ,ruby-timecop)))
5222 (synopsis
5223 "Ruby library for displaying progress bars")
5224 (description
5225 "ProgressBar is a simple library for displaying progress bars. The
5226 maximum value is configurable, and additional information can be displayed
5227 like the percentage completion, estimated time remaining, elapsed time and
5228 rate.")
5229 (home-page "https://github.com/paul/progress_bar")
5230 (license license:wtfpl2)))
5231
5232 (define-public ruby-dep
5233 (package
5234 (name "ruby-dep")
5235 (version "1.5.0")
5236 (source
5237 (origin
5238 (method url-fetch)
5239 (uri (rubygems-uri "ruby_dep" version))
5240 (sha256
5241 (base32
5242 "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
5243 (build-system ruby-build-system)
5244 (arguments
5245 '(#:tests? #f)) ; No included tests
5246 (synopsis "Creates a version constraint of supported Rubies")
5247 (description
5248 "This package helps create a version constraint of supported Rubies,
5249 suitable for a gemspec file.")
5250 (home-page "https://github.com/e2/ruby_dep")
5251 (license license:expat)))
5252
5253 (define-public ruby-progressbar
5254 (package
5255 (name "ruby-progressbar")
5256 (version "1.10.1")
5257 (source
5258 (origin
5259 (method url-fetch)
5260 (uri (rubygems-uri "ruby-progressbar" version))
5261 (sha256
5262 (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf"))))
5263 (build-system ruby-build-system)
5264 (arguments
5265 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
5266 #:tests? #f))
5267 (synopsis "Text progress bar library for Ruby")
5268 (description
5269 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
5270 The output can be customized with a formatting system.")
5271 (home-page "https://github.com/jfelchner/ruby-progressbar")
5272 (license license:expat)))
5273
5274 (define-public ruby-pry
5275 (package
5276 (name "ruby-pry")
5277 (version "0.13.1")
5278 (source
5279 (origin
5280 (method url-fetch)
5281 (uri (rubygems-uri "pry" version))
5282 (sha256
5283 (base32
5284 "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk"))))
5285 (build-system ruby-build-system)
5286 (arguments
5287 '(#:tests? #f)) ; no tests
5288 (propagated-inputs
5289 `(("ruby-coderay" ,ruby-coderay)
5290 ("ruby-method-source" ,ruby-method-source)))
5291 (synopsis "Ruby REPL")
5292 (description "Pry is an IRB alternative and runtime developer console for
5293 Ruby. It features syntax highlighting, a plugin architecture, runtime
5294 invocation, and source and documentation browsing.")
5295 (home-page "https://cobaltbluemedia.com/pryrepl/")
5296 (license license:expat)))
5297
5298 (define-public ruby-single-cov
5299 (package
5300 (name "ruby-single-cov")
5301 (version "1.3.2")
5302 (home-page "https://github.com/grosser/single_cov")
5303 (source (origin
5304 (method git-fetch)
5305 (uri (git-reference (url home-page)
5306 (commit (string-append "v" version))))
5307 (file-name (git-file-name name version))
5308 (sha256
5309 (base32
5310 "05qdzpcai1p23a120gb9bxkfl4y73k9hicx34ch2lsk31lgi9bl7"))))
5311 (build-system ruby-build-system)
5312 (arguments
5313 '(#:test-target "default"
5314 #:phases (modify-phases %standard-phases
5315 (replace 'replace-git-ls-files
5316 (lambda _
5317 (substitute* "single_cov.gemspec"
5318 (("`git ls-files lib/ bin/ MIT-LICENSE`")
5319 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
5320 #t))
5321 (add-before 'check 'remove-version-constraints
5322 (lambda _
5323 (delete-file "Gemfile.lock")
5324 #t))
5325 (add-before 'check 'make-files-writable
5326 (lambda _
5327 ;; Tests need to create local directories and open files
5328 ;; with write permissions.
5329 (for-each make-file-writable
5330 (find-files "specs" #:directories? #t))
5331 #t))
5332 (add-before 'check 'disable-failing-test
5333 (lambda _
5334 ;; XXX: This test copies assets from minitest, but can
5335 ;; not cope with the files being read-only. Just skip
5336 ;; it for now.
5337 (substitute* "specs/single_cov_spec.rb"
5338 (("it \"complains when coverage is bad\"")
5339 "xit \"complains when coverage is bad\""))
5340 #t)))))
5341 (native-inputs
5342 `(("ruby-bump" ,ruby-bump)
5343 ("ruby-minitest" ,ruby-minitest)
5344 ("ruby-rspec" ,ruby-rspec)
5345 ("ruby-simplecov" ,ruby-simplecov)))
5346 (synopsis "Code coverage reporting tool")
5347 (description
5348 "This package provides actionable code coverage reports for Ruby
5349 projects. It has very little overhead and can be easily integrated with
5350 development tools to catch coverage problems early.")
5351 (license license:expat)))
5352
5353 (define-public ruby-guard
5354 (package
5355 (name "ruby-guard")
5356 (version "2.13.0")
5357 (source (origin
5358 (method git-fetch)
5359 ;; The gem does not include a Rakefile, nor does it contain a
5360 ;; gemspec file, nor does it come with the tests. This is why
5361 ;; we fetch the tarball from Github.
5362 (uri (git-reference
5363 (url "https://github.com/guard/guard")
5364 (commit (string-append "v" version))))
5365 (file-name (git-file-name name version))
5366 (sha256
5367 (base32
5368 "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs"))))
5369 (build-system ruby-build-system)
5370 (arguments
5371 `(#:tests? #f ; tests require cucumber
5372 #:phases
5373 (modify-phases %standard-phases
5374 (add-after 'unpack 'remove-git-ls-files
5375 (lambda* (#:key outputs #:allow-other-keys)
5376 (substitute* "guard.gemspec"
5377 (("git ls-files -z") "find . -type f -print0"))
5378 #t))
5379 (replace 'build
5380 (lambda _
5381 (invoke "gem" "build" "guard.gemspec"))))))
5382 (propagated-inputs
5383 `(("ruby-formatador" ,ruby-formatador)
5384 ("ruby-listen" ,ruby-listen)
5385 ("ruby-lumberjack" ,ruby-lumberjack)
5386 ("ruby-nenv" ,ruby-nenv)
5387 ("ruby-notiffany" ,ruby-notiffany)
5388 ("ruby-pry" ,ruby-pry)
5389 ("ruby-shellany" ,ruby-shellany)
5390 ("ruby-thor" ,ruby-thor)))
5391 (native-inputs
5392 `(("bundler" ,bundler)
5393 ("ruby-rspec" ,ruby-rspec)))
5394 (synopsis "Tool to handle events on file system modifications")
5395 (description
5396 "Guard is a command line tool to easily handle events on file system
5397 modifications. Guard automates various tasks by running custom rules whenever
5398 file or directories are modified.")
5399 (home-page "https://guardgem.org/")
5400 (license license:expat)))
5401
5402 (define-public ruby-spinach
5403 (package
5404 (name "ruby-spinach")
5405 (version "0.11.0")
5406 (home-page "https://github.com/codegram/spinach")
5407 (source (origin
5408 (method url-fetch)
5409 (uri (rubygems-uri "spinach" version))
5410 (sha256
5411 (base32
5412 "1mv053mqz9c8ngqa6wp1ymk2fax6j0yqzax6918akrdr7c3fx3c6"))))
5413 (build-system ruby-build-system)
5414 (arguments
5415 ;; FIXME: Disable tests altogether because they depend on 'capybara'
5416 ;; which in turn depends on many other unpackaged gems. Enable once
5417 ;; capybara is available.
5418 '(#:tests? #f))
5419 (propagated-inputs
5420 `(("ruby-colorize" ,ruby-colorize)
5421 ("ruby-gherkin-ruby" ,ruby-gherkin-ruby)
5422 ("ruby-json" ,ruby-json)))
5423 (synopsis "Gherkin-based BDD framework")
5424 (description
5425 "Spinach is a high-level @acronym{BDD, Behavior-driven development}
5426 framework that leverages the expressive @code{Gherkin} language to help you
5427 define executable specifications of your code.")
5428 (license license:expat)))
5429
5430 (define-public ruby-tilt
5431 (package
5432 (name "ruby-tilt")
5433 (version "2.0.10")
5434 (source
5435 (origin
5436 (method git-fetch) ;the distributed gem lacks tests
5437 (uri (git-reference
5438 (url "https://github.com/rtomayko/tilt")
5439 (commit (string-append "v" version))))
5440 (file-name (git-file-name name version))
5441 (sha256
5442 (base32
5443 "0adb7fg7925n2rd9a8kkqz3mgylw2skp9hkh9qc1rnph72mqsm6r"))))
5444 (build-system ruby-build-system)
5445 (arguments
5446 '(#:phases
5447 (modify-phases %standard-phases
5448 (add-after 'unpack 'remove-some-dependencies
5449 (lambda _
5450 (substitute* "Gemfile"
5451 ;; TODO ronn is used for generating the manual
5452 (("gem 'ronn'.*") "\n")
5453 ;; ruby-haml has a runtime dependency on ruby-tilt, so don't
5454 ;; pass it in as a native-input
5455 (("gem 'haml'.*") "\n")
5456 ;; TODO Not all of these gems are packaged for Guix yet:
5457 ;; less, coffee-script, livescript, babel-transpiler,
5458 ;; typescript-node
5459 (("if can_execjs") "if false")
5460 ;; Disable the secondary group to reduce the number of
5461 ;; dependencies. None of the normal approaches work, so patch
5462 ;; the Gemfile instead.
5463 (("group :secondary") "[].each"))
5464 #t)))))
5465 (propagated-inputs
5466 `(("ruby-pandoc-ruby" ,ruby-pandoc-ruby)
5467 ("ruby-sassc" ,ruby-sassc)))
5468 (native-inputs
5469 `(("bundler" ,bundler)
5470 ("ruby-yard" ,ruby-yard)
5471 ("ruby-builder" ,ruby-builder)
5472 ("ruby-erubis" ,ruby-erubis)
5473 ("ruby-markaby" ,ruby-markaby)))
5474 (synopsis "Generic interface to multiple Ruby template engines")
5475 (description
5476 "Tilt is a thin interface over a number of different Ruby template
5477 engines in an attempt to make their usage as generic as possible.")
5478 (home-page "https://github.com/rtomayko/tilt/")
5479 (license license:expat)))
5480
5481 (define-public ruby-thread-safe
5482 (package
5483 (name "ruby-thread-safe")
5484 (version "0.3.6")
5485 (source
5486 (origin
5487 (method url-fetch)
5488 (uri (rubygems-uri "thread_safe" version))
5489 (sha256
5490 (base32
5491 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
5492 (build-system ruby-build-system)
5493 (arguments
5494 '(#:tests? #f)) ; needs simplecov, among others
5495 (synopsis "Thread-safe utilities for Ruby")
5496 (description "The thread_safe library provides thread-safe collections and
5497 utilities for Ruby.")
5498 (home-page "https://github.com/ruby-concurrency/thread_safe")
5499 (license license:asl2.0)))
5500
5501 (define-public ruby-tzinfo
5502 (package
5503 (name "ruby-tzinfo")
5504 (version "1.2.4")
5505 (source
5506 (origin
5507 (method url-fetch)
5508 (uri (rubygems-uri "tzinfo" version))
5509 (sha256
5510 (base32
5511 "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp"))))
5512 (build-system ruby-build-system)
5513 (arguments
5514 '(#:phases
5515 (modify-phases %standard-phases
5516 (add-after 'unpack 'skip-safe-tests
5517 (lambda _
5518 (substitute* "test/test_utils.rb"
5519 (("def safe_test\\(options = \\{\\}\\)")
5520 "def safe_test(options = {})
5521 skip('The Guix build environment has an unsafe load path')"))
5522 #t)))))
5523 (propagated-inputs
5524 `(("ruby-thread-safe" ,ruby-thread-safe)))
5525 (synopsis "Time zone library for Ruby")
5526 (description "TZInfo is a Ruby library that provides daylight savings
5527 aware transformations between times in different time zones.")
5528 (home-page "https://tzinfo.github.io")
5529 (license license:expat)))
5530
5531 (define-public ruby-tzinfo-data
5532 (package
5533 (name "ruby-tzinfo-data")
5534 (version "1.2017.3")
5535 (source
5536 (origin
5537 (method git-fetch)
5538 ;; Download from GitHub because the rubygems version does not contain
5539 ;; Rakefile or tests.
5540 (uri (git-reference
5541 (url "https://github.com/tzinfo/tzinfo-data")
5542 (commit (string-append "v" version))))
5543 (file-name (git-file-name name version))
5544 (sha256
5545 (base32
5546 "0v3phl5l3jrm6waxcszqmj2dkjhqawxfsxb6mss7vkp1hlckqcdp"))
5547 ;; Remove the known test failure.
5548 ;; https://github.com/tzinfo/tzinfo-data/issues/10
5549 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
5550 (patches (search-patches
5551 "ruby-tzinfo-data-ignore-broken-test.patch"))))
5552 (build-system ruby-build-system)
5553 (propagated-inputs
5554 `(("ruby-tzinfo" ,ruby-tzinfo)))
5555 (synopsis "Data from the IANA Time Zone database")
5556 (description
5557 "This library provides @code{TZInfo::Data}, which contains data from the
5558 IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
5559 (home-page "https://tzinfo.github.io")
5560 (license license:expat)))
5561
5562 (define-public ruby-rb-inotify
5563 (package
5564 (name "ruby-rb-inotify")
5565 (version "0.9.10")
5566 (source
5567 (origin
5568 (method url-fetch)
5569 (uri (rubygems-uri "rb-inotify" version))
5570 (sha256
5571 (base32
5572 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
5573 (build-system ruby-build-system)
5574 (arguments
5575 '(#:tests? #f ; there are no tests
5576 #:phases
5577 (modify-phases %standard-phases
5578 ;; Building the gemspec with rake is not working here since it is
5579 ;; generated with Jeweler. It is also unnecessary because the
5580 ;; existing gemspec does not use any development tools to generate a
5581 ;; list of files.
5582 (replace 'build
5583 (lambda _
5584 (invoke "gem" "build" "rb-inotify.gemspec"))))))
5585 (propagated-inputs
5586 `(("ruby-ffi" ,ruby-ffi)))
5587 (native-inputs
5588 `(("ruby-yard" ,ruby-yard)))
5589 (synopsis "Ruby wrapper for Linux's inotify")
5590 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
5591 kernel subsystem for monitoring changes to files and directories.")
5592 (home-page "https://github.com/nex3/rb-inotify")
5593 (license license:expat)))
5594
5595 (define-public ruby-pry-editline
5596 (package
5597 (name "ruby-pry-editline")
5598 (version "1.1.2")
5599 (source (origin
5600 (method url-fetch)
5601 (uri (rubygems-uri "pry-editline" version))
5602 (sha256
5603 (base32
5604 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
5605 (build-system ruby-build-system)
5606 (arguments `(#:tests? #f)) ; no tests included
5607 (native-inputs
5608 `(("bundler" ,bundler)))
5609 (synopsis "Open the current REPL line in an editor")
5610 (description
5611 "This gem provides a plugin for the Ruby REPL to enable opening the
5612 current line in an external editor.")
5613 (home-page "https://github.com/tpope/pry-editline")
5614 (license license:expat)))
5615
5616 (define-public ruby-sdoc
5617 (package
5618 (name "ruby-sdoc")
5619 (version "1.1.0")
5620 (source (origin
5621 (method url-fetch)
5622 (uri (rubygems-uri "sdoc" version))
5623 (sha256
5624 (base32
5625 "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd"))))
5626 (build-system ruby-build-system)
5627 (arguments
5628 `(#:phases
5629 (modify-phases %standard-phases
5630 (add-before 'check 'set-rubylib-and-patch-gemfile
5631 (lambda _
5632 (setenv "RUBYLIB" "lib")
5633 (substitute* "sdoc.gemspec"
5634 (("s.add_runtime_dependency.*") "\n")
5635 (("s.add_dependency.*") "\n"))
5636 (substitute* "Gemfile"
5637 (("gem \"rake\".*")
5638 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
5639 #t)))))
5640 (propagated-inputs
5641 `(("ruby-json" ,ruby-json)))
5642 (native-inputs
5643 `(("bundler" ,bundler)
5644 ("ruby-minitest" ,ruby-minitest)
5645 ("ruby-hoe" ,ruby-hoe)))
5646 (synopsis "Generate searchable RDoc documentation")
5647 (description
5648 "SDoc is an RDoc documentation generator to build searchable HTML
5649 documentation for Ruby code.")
5650 (home-page "https://github.com/voloko/sdoc")
5651 (license license:expat)))
5652
5653 (define-public ruby-tins
5654 (package
5655 (name "ruby-tins")
5656 (version "1.15.0")
5657 (source (origin
5658 (method url-fetch)
5659 (uri (rubygems-uri "tins" version))
5660 (sha256
5661 (base32
5662 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
5663 (build-system ruby-build-system)
5664 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
5665 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
5666 ;; the gemspec.
5667 (arguments
5668 `(#:tests? #f ; there are no tests
5669 #:phases
5670 (modify-phases %standard-phases
5671 (replace 'build
5672 (lambda _
5673 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
5674 ;; causes an error.
5675 (substitute* "tins.gemspec"
5676 (("\"lib/spruz\", ") ""))
5677 (invoke "gem" "build" "tins.gemspec"))))))
5678 (synopsis "Assorted tools for Ruby")
5679 (description "Tins is a Ruby library providing assorted tools.")
5680 (home-page "https://github.com/flori/tins")
5681 (license license:expat)))
5682
5683 (define-public ruby-gem-hadar
5684 (package
5685 (name "ruby-gem-hadar")
5686 (version "1.9.1")
5687 (source (origin
5688 (method url-fetch)
5689 (uri (rubygems-uri "gem_hadar" version))
5690 (sha256
5691 (base32
5692 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
5693 (build-system ruby-build-system)
5694 ;; This gem needs itself at development time. We disable rebuilding of the
5695 ;; gemspec to avoid this loop.
5696 (arguments
5697 `(#:tests? #f ; there are no tests
5698 #:phases
5699 (modify-phases %standard-phases
5700 (replace 'build
5701 (lambda _
5702 (invoke "gem" "build" "gem_hadar.gemspec"))))))
5703 (propagated-inputs
5704 `(("git" ,git)
5705 ("ruby-tins" ,ruby-tins)
5706 ("ruby-yard" ,ruby-yard)))
5707 (synopsis "Library for the development of Ruby gems")
5708 (description
5709 "This library contains some useful functionality to support the
5710 development of Ruby gems.")
5711 (home-page "https://github.com/flori/gem_hadar")
5712 (license license:expat)))
5713
5714 (define-public ruby-minitest-tu-shim
5715 (package
5716 (name "ruby-minitest-tu-shim")
5717 (version "1.3.3")
5718 (source (origin
5719 (method url-fetch)
5720 (uri (rubygems-uri "minitest_tu_shim" version))
5721 (sha256
5722 (base32
5723 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
5724 (build-system ruby-build-system)
5725 (arguments
5726 `(#:phases
5727 (modify-phases %standard-phases
5728 (add-after 'unpack 'fix-test-include-path
5729 (lambda* (#:key inputs #:allow-other-keys)
5730 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
5731 (substitute* "Rakefile"
5732 (("Hoe\\.add_include_dirs .*")
5733 (string-append "Hoe.add_include_dirs \""
5734 minitest "/lib/ruby/vendor_ruby"
5735 "/gems/minitest-"
5736 ,(package-version ruby-minitest-4)
5737 "/lib" "\""))))
5738 #t))
5739 (add-before 'check 'fix-test-assumptions
5740 (lambda _
5741 ;; The test output includes the file name, so a couple of tests
5742 ;; fail. Changing the regular expressions slightly fixes this
5743 ;; problem.
5744 (substitute* "test/test_mini_test.rb"
5745 (("output.sub!\\(.*, 'FILE:LINE'\\)")
5746 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
5747 (("gsub\\(/.*, 'FILE:LINE'\\)")
5748 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
5749 #t)))))
5750 (propagated-inputs
5751 `(("ruby-minitest-4" ,ruby-minitest-4)))
5752 (native-inputs
5753 `(("ruby-hoe" ,ruby-hoe)))
5754 (synopsis "Adapter library between minitest and test/unit")
5755 (description
5756 "This library bridges the gap between the small and fast minitest and
5757 Ruby's large and slower test/unit.")
5758 (home-page "https://rubygems.org/gems/minitest_tu_shim")
5759 (license license:expat)))
5760
5761 (define-public ruby-term-ansicolor
5762 (package
5763 (name "ruby-term-ansicolor")
5764 (version "1.6.0")
5765 (source (origin
5766 (method url-fetch)
5767 (uri (rubygems-uri "term-ansicolor" version))
5768 (sha256
5769 (base32
5770 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
5771 (build-system ruby-build-system)
5772 ;; Rebuilding the gemspec seems to require git, even though this is not a
5773 ;; git repository, so we just build the gem from the existing gemspec.
5774 (arguments
5775 `(#:phases
5776 (modify-phases %standard-phases
5777 (add-after 'unpack 'fix-test
5778 (lambda -
5779 (substitute* "tests/hsl_triple_test.rb"
5780 (("0\\\\\\.0%")
5781 "0\\.?0?%"))))
5782 (replace 'build
5783 (lambda _
5784 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
5785 (propagated-inputs
5786 `(("ruby-tins" ,ruby-tins)))
5787 (native-inputs
5788 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5789 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
5790 (synopsis "Ruby library to control the attributes of terminal output")
5791 (description
5792 "This Ruby library uses ANSI escape sequences to control the attributes
5793 of terminal output.")
5794 (home-page "https://flori.github.io/term-ansicolor/")
5795 ;; There is no mention of the "or later" clause.
5796 (license license:gpl2)))
5797
5798 (define-public ruby-terraform
5799 (package
5800 (name "ruby-terraform")
5801 (version "0.22.0")
5802 (source
5803 (origin
5804 (method url-fetch)
5805 (uri (rubygems-uri "ruby-terraform" version))
5806 (sha256
5807 (base32
5808 "13zjkp71cd19j2ds2h9rqwcfr1zdg5nsh63p89l6qcsc9z39z324"))))
5809 (build-system ruby-build-system)
5810 (arguments
5811 '(#:tests? #f)) ; No included tests
5812 (propagated-inputs
5813 `(("ruby-lino" ,ruby-lino)))
5814 (synopsis "Ruby wrapper around the Terraform command line interface")
5815 (description
5816 "This package provides a Ruby wrapper around the Terraform command line
5817 interface so that Terraform can be more easily invoked from Ruby code.")
5818 (home-page "https://github.com/infrablocks/ruby_terraform")
5819 (license license:expat)))
5820
5821 (define-public ruby-pstree
5822 (package
5823 (name "ruby-pstree")
5824 (version "0.1.0")
5825 (source (origin
5826 (method url-fetch)
5827 (uri (rubygems-uri "pstree" version))
5828 (sha256
5829 (base32
5830 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
5831 (build-system ruby-build-system)
5832 (native-inputs
5833 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5834 ("bundler" ,bundler)))
5835 (synopsis "Create a process tree data structure")
5836 (description
5837 "This library uses the output of the @code{ps} command to create a
5838 process tree data structure for the current host.")
5839 (home-page "https://github.com/flori/pstree")
5840 ;; There is no mention of the "or later" clause.
5841 (license license:gpl2)))
5842
5843 (define-public ruby-utils
5844 (package
5845 (name "ruby-utils")
5846 (version "0.9.0")
5847 (source (origin
5848 (method url-fetch)
5849 (uri (rubygems-uri "utils" version))
5850 (sha256
5851 (base32
5852 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
5853 (build-system ruby-build-system)
5854 (propagated-inputs
5855 `(("ruby-tins" ,ruby-tins)
5856 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
5857 ("ruby-pstree" ,ruby-pstree)
5858 ("ruby-pry-editline" ,ruby-pry-editline)))
5859 (native-inputs
5860 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5861 ("bundler" ,bundler)))
5862 (synopsis "Command line tools for working with Ruby")
5863 (description
5864 "This package provides assorted command line tools that may be useful
5865 when working with Ruby code.")
5866 (home-page "https://github.com/flori/utils")
5867 ;; There is no mention of the "or later" clause.
5868 (license license:gpl2)))
5869
5870 (define-public ruby-jaro-winkler
5871 (package
5872 (name "ruby-jaro-winkler")
5873 (version "1.5.4")
5874 (source
5875 (origin
5876 (method url-fetch)
5877 (uri (rubygems-uri "jaro_winkler" version))
5878 (sha256
5879 (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh"))))
5880 (build-system ruby-build-system)
5881 (arguments
5882 '(#:tests? #f)) ; no included tests
5883 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
5884 (description
5885 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
5886 algorithm. It is written as a C extension and will fallback to a pure Ruby
5887 implementation on platforms where this is unsupported.")
5888 (home-page "https://github.com/tonytonyjan/jaro_winkler")
5889 (license license:expat)))
5890
5891 (define-public ruby-json
5892 (package
5893 (name "ruby-json")
5894 (version "2.1.0")
5895 (source
5896 (origin
5897 (method url-fetch)
5898 (uri (rubygems-uri "json" version))
5899 (sha256
5900 (base32
5901 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
5902 (build-system ruby-build-system)
5903 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
5904 (synopsis "JSON library for Ruby")
5905 (description "This Ruby library provides a JSON implementation written as
5906 a native C extension.")
5907 (home-page "http://json-jruby.rubyforge.org/")
5908 (license (list license:ruby license:gpl2)))) ; GPL2 only
5909
5910 (define-public ruby-json-pure
5911 (package
5912 (name "ruby-json-pure")
5913 (version "2.2.0")
5914 (source (origin
5915 (method url-fetch)
5916 (uri (rubygems-uri "json_pure" version))
5917 (sha256
5918 (base32
5919 "0m0j1mfwv0mvw72kzqisb26xjl236ivqypw1741dkis7s63b8439"))))
5920 (build-system ruby-build-system)
5921 (arguments
5922 `(#:phases
5923 (modify-phases %standard-phases
5924 (add-after 'unpack 'fix-rakefile
5925 (lambda _
5926 (substitute* "Rakefile"
5927 ;; Since this is not a git repository, do not call 'git'.
5928 (("`git ls-files`") "`find . -type f |sort`")
5929 ;; Loosen dependency constraint.
5930 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
5931 #t))
5932 (add-after 'replace-git-ls-files 'regenerate-gemspec
5933 (lambda _
5934 ;; Regenerate gemspec so loosened dependency constraints are
5935 ;; propagated.
5936 (invoke "rake" "gemspec")))
5937 (add-after 'regenerate-gemspec 'fix-json-java.gemspec
5938 (lambda _
5939 ;; This gemspec doesn't look to be generated by the above
5940 ;; command, so patch it separately.
5941 (substitute* "json-java.gemspec"
5942 (("%q<test-unit>\\.freeze, \\[\"~> 2\\.0\"\\]")
5943 "%q<test-unit>.freeze, [\">= 2.0\"]"))
5944 #t)))))
5945 (native-inputs
5946 `(("bundler" ,bundler)
5947 ("ragel" ,ragel)
5948 ("ruby-simplecov" ,ruby-simplecov)
5949 ("ruby-test-unit" ,ruby-test-unit)))
5950 (synopsis "JSON implementation in pure Ruby")
5951 (description
5952 "This package provides a JSON implementation written in pure Ruby.")
5953 (home-page "https://flori.github.com/json/")
5954 (license license:ruby)))
5955
5956 (define-public ruby-jwt
5957 (package
5958 (name "ruby-jwt")
5959 (version "2.1.0")
5960 (source
5961 (origin
5962 (method url-fetch)
5963 (uri (rubygems-uri "jwt" version))
5964 (sha256
5965 (base32
5966 "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky"))))
5967 (build-system ruby-build-system)
5968 (arguments
5969 '(#:test-target "test"
5970 #:phases
5971 (modify-phases %standard-phases
5972 (add-after 'unpack 'remove-unnecessary-dependencies
5973 (lambda _
5974 (substitute* "spec/spec_helper.rb"
5975 (("require 'simplecov.*") "\n")
5976 ;; Use [].each to disable running the SimpleCov configuration
5977 ;; block
5978 (("SimpleCov\\.configure") "[].each")
5979 (("require 'codeclimate-test-reporter'") "")
5980 (("require 'codacy-coverage'") "")
5981 (("Codacy::Reporter\\.start") ""))
5982 #t)))))
5983 (native-inputs
5984 `(("bundler" ,bundler)
5985 ("ruby-rspec" ,ruby-rspec)
5986 ("ruby-rbnacl" ,ruby-rbnacl)))
5987 (synopsis "Ruby implementation of the JSON Web Token standard")
5988 (description
5989 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
5990 @acronym{JWT, JSON Web Token} standard.")
5991 (home-page "https://github.com/jwt/ruby-jwt")
5992 (license license:expat)))
5993
5994 ;; Even though this package only provides bindings for a Mac OSX API it is
5995 ;; required by "ruby-listen" at runtime.
5996 (define-public ruby-rb-fsevent
5997 (package
5998 (name "ruby-rb-fsevent")
5999 (version "0.10.3")
6000 (source (origin
6001 (method url-fetch)
6002 (uri (rubygems-uri "rb-fsevent" version))
6003 (sha256
6004 (base32
6005 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
6006 (build-system ruby-build-system)
6007 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
6008 ;; "listen", which needs "rb-fsevent" at runtime.
6009 (arguments `(#:tests? #f))
6010 (synopsis "FSEvents API with signals catching")
6011 (description
6012 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
6013 (home-page "https://rubygems.org/gems/rb-fsevent")
6014 (license license:expat)))
6015
6016 (define-public ruby-listen
6017 (package
6018 (name "ruby-listen")
6019 (version "3.2.0")
6020 (source
6021 (origin
6022 ;; The gem does not include a Rakefile, so fetch from the Git
6023 ;; repository.
6024 (method git-fetch)
6025 (uri (git-reference
6026 (url "https://github.com/guard/listen")
6027 (commit (string-append "v" version))))
6028 (file-name (git-file-name name version))
6029 (sha256
6030 (base32
6031 "1hkp1g6hk5clsmbd001gkc12ma6s459x820piajyasv61m87if24"))))
6032 (build-system ruby-build-system)
6033 (arguments
6034 `(#:test-target "spec"
6035 #:phases
6036 (modify-phases %standard-phases
6037 (add-after 'unpack 'fix-files-in-gemspec
6038 (lambda _
6039 (substitute* "listen.gemspec"
6040 (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
6041 #t))
6042 (add-before 'check 'remove-unnecessary-dependencies'
6043 (lambda _
6044 (substitute* "Rakefile"
6045 ;; Rubocop is for code linting, and is unnecessary for running
6046 ;; the tests.
6047 ((".*rubocop.*") ""))
6048 #t)))))
6049 (native-inputs
6050 `(("bundler" ,bundler)
6051 ("ruby-rspec" ,ruby-rspec)))
6052 (inputs
6053 `(;; ruby-thor is used for the command line interface, and is referenced
6054 ;; in the wrapper, and therefore just needs to be an input.
6055 ("ruby-thor" ,ruby-thor)))
6056 (propagated-inputs
6057 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
6058 ("ruby-rb-inotify" ,ruby-rb-inotify)
6059 ("ruby-dep" ,ruby-dep)))
6060 (synopsis "Listen to file modifications")
6061 (description "The Listen gem listens to file modifications and notifies
6062 you about the changes.")
6063 (home-page "https://github.com/guard/listen")
6064 (license license:expat)))
6065
6066 (define-public ruby-loofah
6067 (package
6068 (name "ruby-loofah")
6069 (version "2.2.3")
6070 (source
6071 (origin
6072 (method url-fetch)
6073 (uri (rubygems-uri "loofah" version))
6074 (sha256
6075 (base32
6076 "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg"))))
6077 (build-system ruby-build-system)
6078 (arguments
6079 '(#:phases
6080 (modify-phases %standard-phases
6081 (add-after 'unpack 'remove-unnecessary-dependencies
6082 (lambda _
6083 ;; concourse is a development tool which is unused, so remove it
6084 ;; so it's not required.
6085 (substitute* "Gemfile"
6086 ((".*\"concourse\".*") "\n"))
6087 (substitute* "Rakefile"
6088 (("require 'concourse'") "")
6089 (("Concourse\\.new.*") "\n"))
6090 #t)))))
6091 (native-inputs
6092 `(("ruby-hoe" ,ruby-hoe)
6093 ("ruby-rr" ,ruby-rr)))
6094 (propagated-inputs
6095 `(("ruby-nokogiri" ,ruby-nokogiri)
6096 ("ruby-crass" ,ruby-crass)))
6097 (synopsis "Ruby library for manipulating and transforming HTML/XML")
6098 (description
6099 "Loofah is a general library for manipulating and transforming HTML/XML
6100 documents and fragments. It's built on top of Nokogiri and libxml2.")
6101 (home-page "https://github.com/flavorjones/loofah")
6102 (license license:expat)))
6103
6104 (define-public ruby-activesupport
6105 (package
6106 (name "ruby-activesupport")
6107 (version "5.2.2.1")
6108 (source
6109 (origin
6110 (method url-fetch)
6111 (uri (rubygems-uri "activesupport" version))
6112 (sha256
6113 (base32
6114 "161bp4p01v1a1lvszrhd1a02zf9x1p1l1yhw79a3rix1kvzkkdqb"))))
6115 (build-system ruby-build-system)
6116 (arguments
6117 `(#:phases
6118 (modify-phases %standard-phases
6119 (replace 'check
6120 (lambda _
6121 ;; There are no tests, instead attempt to load the library.
6122 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
6123 (propagated-inputs
6124 `(("ruby-concurrent" ,ruby-concurrent)
6125 ("ruby-i18n" ,ruby-i18n)
6126 ("ruby-minitest" ,ruby-minitest)
6127 ("ruby-tzinfo" ,ruby-tzinfo)
6128 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
6129 (synopsis "Ruby on Rails utility library")
6130 (description "ActiveSupport is a toolkit of support libraries and Ruby
6131 core extensions extracted from the Rails framework. It includes support for
6132 multibyte strings, internationalization, time zones, and testing.")
6133 (home-page "http://www.rubyonrails.org")
6134 (license license:expat)))
6135
6136 (define-public ruby-crass
6137 (package
6138 (name "ruby-crass")
6139 (version "1.0.6")
6140 (home-page "https://github.com/rgrove/crass")
6141 (source (origin
6142 ;; The gem does not contain tests, so pull from git.
6143 (method git-fetch)
6144 (uri (git-reference
6145 (url home-page)
6146 (commit (string-append "v" version))))
6147 (file-name (git-file-name name version))
6148 (sha256
6149 (base32
6150 "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40"))))
6151 (build-system ruby-build-system)
6152 (synopsis "Pure Ruby CSS parser")
6153 (description
6154 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
6155 (license license:expat)))
6156
6157 (define-public ruby-nokogumbo
6158 (package
6159 (name "ruby-nokogumbo")
6160 (version "2.0.2")
6161 (source (origin
6162 ;; We use the git reference, because there's no Rakefile in the
6163 ;; published gem and the tarball on Github is outdated.
6164 (method git-fetch)
6165 (uri (git-reference
6166 (url "https://github.com/rubys/nokogumbo")
6167 (commit (string-append "v" version))))
6168 (file-name (string-append name "-" version "-checkout"))
6169 (sha256
6170 (base32
6171 "1qg0iyw450lw6d0j1ghzg79a6l60nm1m4qmrzwzybi585861jxcx"))))
6172 (build-system ruby-build-system)
6173 (native-inputs
6174 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
6175 (inputs
6176 `(("gumbo-parser" ,gumbo-parser)))
6177 (propagated-inputs
6178 `(("ruby-nokogiri" ,ruby-nokogiri)))
6179 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
6180 (description
6181 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
6182 access the result as a Nokogiri parsed document.")
6183 (home-page "https://github.com/rubys/nokogumbo/")
6184 (license license:asl2.0)))
6185
6186 (define-public ruby-sanitize
6187 (package
6188 (name "ruby-sanitize")
6189 (version "5.1.0")
6190 (home-page "https://github.com/rgrove/sanitize")
6191 (source (origin
6192 (method git-fetch)
6193 ;; The gem does not include the Rakefile, so we download the
6194 ;; source from Github.
6195 (uri (git-reference
6196 (url home-page)
6197 (commit (string-append "v" version))))
6198 (file-name (git-file-name name version))
6199 (patches (search-patches "ruby-sanitize-system-libxml.patch"))
6200 (sha256
6201 (base32
6202 "0lj0q9yhjp0q0in5majkshnki07mw8m2vxgndx4m5na6232aszl0"))))
6203 (build-system ruby-build-system)
6204 (propagated-inputs
6205 `(("ruby-crass" ,ruby-crass)
6206 ("ruby-nokogiri" ,ruby-nokogiri)
6207 ("ruby-nokogumbo" ,ruby-nokogumbo)))
6208 (native-inputs
6209 `(("ruby-minitest" ,ruby-minitest)))
6210 (synopsis "Whitelist-based HTML and CSS sanitizer")
6211 (description
6212 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
6213 acceptable elements, attributes, and CSS properties, Sanitize will remove all
6214 unacceptable HTML and/or CSS from a string.")
6215 (license license:expat)))
6216
6217 (define-public ruby-oj
6218 (package
6219 (name "ruby-oj")
6220 (version "3.10.1")
6221 (source
6222 (origin
6223 (method git-fetch)
6224 ;; Version on rubygems.org does not contain Rakefile, so download from
6225 ;; GitHub instead.
6226 (uri (git-reference
6227 (url "https://github.com/ohler55/oj")
6228 (commit (string-append "v" version))))
6229 (file-name (git-file-name name version))
6230 (sha256
6231 (base32
6232 "0i5xjx4sh816zx2c1a4d1q67k7vllg5jnnc4jy6zhbmwi1dvp5vw"))))
6233 (build-system ruby-build-system)
6234 (arguments
6235 '(#:test-target "test_all"
6236 #:phases
6237 (modify-phases %standard-phases
6238 (add-before 'check 'disable-bundler
6239 (lambda _
6240 (substitute* "Rakefile"
6241 (("Bundler\\.with_clean_env") "1.times")
6242 (("bundle exec ") "")))))))
6243 (native-inputs
6244 `(("bundler" ,bundler)
6245 ("ruby-rspec" ,ruby-rspec)
6246 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6247 (synopsis "JSON parser for Ruby optimized for speed")
6248 (description
6249 "Oj is a JSON parser and generator for Ruby, where the encoding and
6250 decoding of JSON is implemented as a C extension to Ruby.")
6251 (home-page "http://www.ohler.com/oj/")
6252 (license (list license:expat ; Ruby code
6253 license:bsd-3)))) ; extension code
6254
6255 (define-public ruby-ox
6256 (package
6257 (name "ruby-ox")
6258 (version "2.6.0")
6259 (source
6260 (origin
6261 (method url-fetch)
6262 (uri (rubygems-uri "ox" version))
6263 (sha256
6264 (base32
6265 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
6266 (build-system ruby-build-system)
6267 (arguments
6268 '(#:tests? #f)) ; no tests
6269 (synopsis "Optimized XML library for Ruby")
6270 (description
6271 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
6272 written as a native C extension. It was designed to be an alternative to
6273 Nokogiri and other Ruby XML parsers for generic XML parsing and as an
6274 alternative to Marshal for Object serialization. ")
6275 (home-page "http://www.ohler.com/ox")
6276 (license license:expat)))
6277
6278 (define-public ruby-redcloth
6279 (package
6280 (name "ruby-redcloth")
6281 (version "4.3.2")
6282 (source (origin
6283 (method url-fetch)
6284 (uri (rubygems-uri "RedCloth" version))
6285 (sha256
6286 (base32
6287 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
6288 (build-system ruby-build-system)
6289 (arguments
6290 `(#:tests? #f ; no tests
6291 #:phases
6292 (modify-phases %standard-phases
6293 ;; Redcloth has complicated rake tasks to build various versions for
6294 ;; multiple targets using RVM. We don't want this so we just use the
6295 ;; existing gemspec.
6296 (replace 'build
6297 (lambda _
6298 (invoke "gem" "build" "redcloth.gemspec"))))))
6299 (native-inputs
6300 `(("bundler" ,bundler)
6301 ("ruby-diff-lcs" ,ruby-diff-lcs)
6302 ("ruby-rspec-2" ,ruby-rspec-2)))
6303 (synopsis "Textile markup language parser for Ruby")
6304 (description
6305 "RedCloth is a Ruby parser for the Textile markup language.")
6306 (home-page "http://redcloth.org")
6307 (license license:expat)))
6308
6309 (define-public ruby-pg
6310 (package
6311 (name "ruby-pg")
6312 (version "1.1.4")
6313 (source
6314 (origin
6315 (method url-fetch)
6316 (uri (rubygems-uri "pg" version))
6317 (sha256
6318 (base32
6319 "0fmnyxcyrvgdbgq7m09whgn9i8rwfybk0w8aii1nc4g5kqw0k2jy"))))
6320 (build-system ruby-build-system)
6321 (arguments
6322 '(#:test-target "spec"))
6323 (native-inputs
6324 `(("ruby-rake-compiler" ,ruby-rake-compiler)
6325 ("ruby-hoe" ,ruby-hoe)
6326 ("ruby-rspec" ,ruby-rspec)))
6327 (inputs
6328 `(("postgresql" ,postgresql)))
6329 (synopsis "Ruby interface to PostgreSQL")
6330 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
6331 with PostgreSQL 9.0 and later.")
6332 (home-page "https://bitbucket.org/ged/ruby-pg")
6333 (license license:ruby)))
6334
6335 (define-public ruby-byebug
6336 (package
6337 (name "ruby-byebug")
6338 (version "9.0.6")
6339 (source
6340 (origin
6341 (method url-fetch)
6342 (uri (rubygems-uri "byebug" version))
6343 (sha256
6344 (base32
6345 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
6346 (build-system ruby-build-system)
6347 (arguments
6348 '(#:tests? #f)) ; no tests
6349 (synopsis "Debugger for Ruby 2")
6350 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
6351 TracePoint C API for execution control and the Debug Inspector C API for call
6352 stack navigation. The core component provides support that front-ends can
6353 build on. It provides breakpoint handling and bindings for stack frames among
6354 other things and it comes with a command line interface.")
6355 (home-page "https://github.com/deivid-rodriguez/byebug")
6356 (license license:bsd-2)))
6357
6358 ;;; TODO: Make it the default byebug in core-updates.
6359 (define-public ruby-byebug-11
6360 (package
6361 (inherit ruby-byebug)
6362 (name "ruby-byebug")
6363 (version "11.1.3")
6364 (source
6365 (origin
6366 (method git-fetch)
6367 (uri (git-reference
6368 (url "https://github.com/deivid-rodriguez/byebug")
6369 (commit (string-append "v" version))))
6370 (file-name (git-file-name name version))
6371 (sha256
6372 (base32
6373 "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij"))
6374 (modules '((guix build utils)))
6375 (snippet
6376 '(begin
6377 ;; Remove wrappers that try to setup a bundle environment.
6378 (with-directory-excursion "bin"
6379 (for-each delete-file '("bundle" "rake" "rubocop"))
6380 ;; ruby-minitest doesn't come with a launcher, so fix the one
6381 ;; provided.
6382 (substitute* "minitest"
6383 (("load File\\.expand_path\\(\"bundle\".*") "")
6384 (("require \"bundler/setup\".*") "")))
6385 #t))))
6386 (arguments
6387 `(#:tests? #t
6388 #:phases
6389 (modify-phases %standard-phases
6390 (add-after 'unpack 'skip-tmp-path-sensitive-test
6391 (lambda _
6392 (substitute* "test/commands/where_test.rb"
6393 (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
6394 "unless true\n"))
6395 #t))
6396 (add-before 'build 'compile
6397 (lambda _
6398 (invoke "rake" "compile")))
6399 (add-before 'check 'set-home
6400 (lambda _
6401 (setenv "HOME" (getcwd))
6402 #t)))))
6403 (native-inputs
6404 `(("bundler" ,bundler)
6405 ("ruby-chandler" ,ruby-chandler)
6406 ("ruby-minitest" ,ruby-minitest)
6407 ("ruby-pry" ,ruby-pry)
6408 ("ruby-rake-compiler" ,ruby-rake-compiler)
6409 ("ruby-rubocop" ,ruby-rubocop)
6410 ("ruby-yard" ,ruby-yard)))))
6411
6412 (define-public ruby-netrc
6413 (package
6414 (name "ruby-netrc")
6415 (version "0.11.0")
6416 (source (origin
6417 (method url-fetch)
6418 (uri (rubygems-uri "netrc" version))
6419 (sha256
6420 (base32
6421 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
6422 (build-system ruby-build-system)
6423 (arguments
6424 `(#:phases
6425 (modify-phases %standard-phases
6426 (replace 'check
6427 ;; There is no Rakefile and minitest can only run one file at once,
6428 ;; so we have to iterate over all test files.
6429 (lambda _
6430 (for-each (lambda (file)
6431 (invoke "ruby" "-Itest" file))
6432 (find-files "./test" "test_.*\\.rb"))
6433 #t)))))
6434 (native-inputs
6435 `(("ruby-minitest" ,ruby-minitest)))
6436 (synopsis "Library to read and update netrc files")
6437 (description
6438 "This library can read and update netrc files, preserving formatting
6439 including comments and whitespace.")
6440 (home-page "https://github.com/geemus/netrc")
6441 (license license:expat)))
6442
6443 (define-public ruby-unf-ext
6444 (package
6445 (name "ruby-unf-ext")
6446 (version "0.0.7.6")
6447 (source (origin
6448 (method url-fetch)
6449 (uri (rubygems-uri "unf_ext" version))
6450 (sha256
6451 (base32
6452 "1ll6w64ibh81qwvjx19h8nj7mngxgffg7aigjx11klvf5k2g4nxf"))))
6453 (build-system ruby-build-system)
6454 (arguments
6455 `(#:phases
6456 (modify-phases %standard-phases
6457 (add-after 'build 'build-ext
6458 (lambda _ (invoke "rake" "compile:unf_ext")))
6459 (add-before 'check 'lose-rake-compiler-dock-dependency
6460 (lambda _
6461 ;; rake-compiler-dock is listed in the gemspec, but only
6462 ;; required when cross-compiling.
6463 (substitute* "unf_ext.gemspec"
6464 ((".*rake-compiler-dock.*") ""))
6465 #t)))))
6466 (native-inputs
6467 `(("bundler" ,bundler)
6468 ("ruby-rake-compiler" ,ruby-rake-compiler)
6469 ("ruby-test-unit" ,ruby-test-unit)))
6470 (synopsis "Unicode normalization form support library")
6471 (description
6472 "This package provides unicode normalization form support for Ruby.")
6473 (home-page "https://github.com/knu/ruby-unf_ext")
6474 (license license:expat)))
6475
6476 (define-public ruby-tdiff
6477 ;; Use a newer than released snapshot so that rspec-2 is not required.
6478 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
6479 (package
6480 (name "ruby-tdiff")
6481 (version (string-append "0.3.3-1." (string-take commit 8)))
6482 (source (origin
6483 (method git-fetch)
6484 (uri (git-reference
6485 (url "https://github.com/postmodern/tdiff")
6486 (commit commit)))
6487 (file-name (string-append name "-" version "-checkout"))
6488 (sha256
6489 (base32
6490 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
6491 (build-system ruby-build-system)
6492 (native-inputs
6493 `(("ruby-rspec" ,ruby-rspec)
6494 ("ruby-yard" ,ruby-yard)
6495 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
6496 (synopsis "Calculate the differences between two tree-like structures")
6497 (description
6498 "This library provides functions to calculate the differences between two
6499 tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
6500 (home-page "https://github.com/postmodern/tdiff")
6501 (license license:expat))))
6502
6503 (define-public ruby-nokogiri-diff
6504 ;; Use a newer than released snapshot so that rspec-2 is not required.
6505 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
6506 (package
6507 (name "ruby-nokogiri-diff")
6508 (version (string-append "0.2.0-1." (string-take commit 8)))
6509 (source (origin
6510 (method git-fetch)
6511 (uri (git-reference
6512 (url "https://github.com/postmodern/nokogiri-diff")
6513 (commit commit)))
6514 (file-name (string-append name "-" version "-checkout"))
6515 (sha256
6516 (base32
6517 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
6518 (build-system ruby-build-system)
6519 (propagated-inputs
6520 `(("ruby-tdiff" ,ruby-tdiff)
6521 ("ruby-nokogiri" ,ruby-nokogiri)))
6522 (native-inputs
6523 `(("ruby-rspec" ,ruby-rspec)
6524 ("ruby-yard" ,ruby-yard)
6525 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
6526 (synopsis "Calculate the differences between two XML/HTML documents")
6527 (description
6528 "@code{Nokogiri::Diff} adds the ability to calculate the
6529 differences (added or removed nodes) between two XML/HTML documents.")
6530 (home-page "https://github.com/postmodern/nokogiri-diff")
6531 (license license:expat))))
6532
6533 (define-public ruby-racc
6534 (package
6535 (name "ruby-racc")
6536 (version "1.4.14")
6537 (source
6538 (origin
6539 (method url-fetch)
6540 (uri (rubygems-uri "racc" version))
6541 (sha256
6542 (base32
6543 "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
6544 (build-system ruby-build-system)
6545 (native-inputs
6546 `(("ruby-hoe" ,ruby-hoe)
6547 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6548 (synopsis "LALR(1) parser generator for Ruby")
6549 (description
6550 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
6551 generates Ruby program.")
6552 (home-page "http://i.loveruby.net/en/projects/racc/")
6553 (license (list
6554 ;; Generally licensed under the LGPL2.1, and some files also
6555 ;; available under the same license as Ruby.
6556 license:lgpl2.1
6557 license:ruby))))
6558
6559 (define-public ruby-rack
6560 (package
6561 (name "ruby-rack")
6562 (version "2.0.6")
6563 (source
6564 (origin
6565 (method git-fetch)
6566 ;; Download from GitHub so that the patch can be applied.
6567 (uri (git-reference
6568 (url "https://github.com/rack/rack")
6569 (commit version)))
6570 (file-name (git-file-name name version))
6571 (sha256
6572 (base32
6573 "1n7z4g1x6yxip096cdc04wq7yk7ywpinq28g2xjb46r4nlv5h0j6"))
6574 ;; Ignore test which fails inside the build environment but works
6575 ;; outside.
6576 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
6577 (build-system ruby-build-system)
6578 (arguments
6579 '(#:phases
6580 (modify-phases %standard-phases
6581 (add-before 'check 'fix-tests
6582 (lambda _
6583 ;; A few of the tests use the length of a file on disk for
6584 ;; Content-Length and Content-Range headers. However, this file
6585 ;; has a shebang in it which an earlier phase patches, growing
6586 ;; the file size from 193 to 239 bytes when the store prefix is
6587 ;; "/gnu/store".
6588 (let ((size-diff (- (string-length (which "ruby"))
6589 (string-length "/usr/bin/env ruby"))))
6590 (substitute* '("test/spec_file.rb")
6591 (("193")
6592 (number->string (+ 193 size-diff)))
6593 (("bytes(.)22-33" all delimiter)
6594 (string-append "bytes"
6595 delimiter
6596 (number->string (+ 22 size-diff))
6597 "-"
6598 (number->string (+ 33 size-diff))))))
6599 #t))
6600 (add-before 'reset-gzip-timestamps 'make-files-writable
6601 (lambda* (#:key outputs #:allow-other-keys)
6602 ;; Make sure .gz files are writable so that the
6603 ;; 'reset-gzip-timestamps' phase can do its work.
6604 (let ((out (assoc-ref outputs "out")))
6605 (for-each make-file-writable
6606 (find-files out "\\.gz$"))
6607 #t))))))
6608 (native-inputs
6609 `(("ruby-minitest" ,ruby-minitest)
6610 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
6611 ("which" ,which)))
6612 (propagated-inputs
6613 `(("ruby-concurrent" ,ruby-concurrent)))
6614 (synopsis "Unified web application interface for Ruby")
6615 (description "Rack provides a minimal, modular and adaptable interface for
6616 developing web applications in Ruby. By wrapping HTTP requests and responses,
6617 it unifies the API for web servers, web frameworks, and software in between
6618 into a single method call.")
6619 (home-page "https://rack.github.io/")
6620 (license license:expat)))
6621
6622 (define-public ruby-rack-test
6623 (package
6624 (name "ruby-rack-test")
6625 (version "0.8.3")
6626 (source
6627 (origin
6628 (method url-fetch)
6629 (uri (rubygems-uri "rack-test" version))
6630 (sha256
6631 (base32
6632 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
6633 (build-system ruby-build-system)
6634 (arguments
6635 ;; Disable tests because of circular dependencies: requires sinatra,
6636 ;; which requires rack-protection, which requires rack-test. Instead
6637 ;; simply require the library.
6638 `(#:phases
6639 (modify-phases %standard-phases
6640 (replace 'check
6641 (lambda _
6642 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
6643 (propagated-inputs
6644 `(("ruby-rack" ,ruby-rack)))
6645 (synopsis "Testing API for Rack applications")
6646 (description
6647 "Rack::Test is a small, simple testing API for Rack applications. It can
6648 be used on its own or as a reusable starting point for Web frameworks and
6649 testing libraries to build on.")
6650 (home-page "https://github.com/rack-test/rack-test")
6651 (license license:expat)))
6652
6653 (define-public ruby-rack-protection
6654 (package
6655 (name "ruby-rack-protection")
6656 (version "2.0.5")
6657 (source
6658 (origin
6659 (method url-fetch)
6660 (uri (rubygems-uri "rack-protection" version))
6661 (sha256
6662 (base32
6663 "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk"))))
6664 (build-system ruby-build-system)
6665 (arguments
6666 '(;; Tests missing from the gem.
6667 #:tests? #f))
6668 (propagated-inputs
6669 `(("ruby-rack" ,ruby-rack)))
6670 (native-inputs
6671 `(("bundler" ,bundler)
6672 ("ruby-rspec" ,ruby-rspec-2)
6673 ("ruby-rack-test" ,ruby-rack-test)))
6674 (synopsis "Rack middleware that protects against typical web attacks")
6675 (description "Rack middleware that can be used to protect against typical
6676 web attacks. It can protect all Rack apps, including Rails. For instance, it
6677 protects against cross site request forgery, cross site scripting,
6678 clickjacking, directory traversal, session hijacking and IP spoofing.")
6679 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
6680 (license license:expat)))
6681
6682 (define-public ruby-rainbow
6683 (package
6684 (name "ruby-rainbow")
6685 (version "3.0.0")
6686 (source
6687 (origin
6688 (method url-fetch)
6689 (uri (rubygems-uri "rainbow" version))
6690 (sha256
6691 (base32
6692 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
6693 (build-system ruby-build-system)
6694 (arguments
6695 '(#:phases
6696 (modify-phases %standard-phases
6697 ;; Run rspec directly, to avoid requiring Rubocop which is used from
6698 ;; the Rakefile.
6699 (replace 'check
6700 (lambda* (#:key tests? #:allow-other-keys)
6701 (when tests?
6702 (invoke "rspec"))
6703 #t)))))
6704 (native-inputs
6705 `(("bundler" ,bundler)
6706 ("ruby-rspec" ,ruby-rspec)))
6707 (synopsis "Colorize printed text on ANSI terminals")
6708 (description
6709 "@code{rainbow} provides a string presenter object to colorize strings by
6710 wrapping them in ANSI escape codes.")
6711 (home-page "https://github.com/sickill/rainbow")
6712 (license license:expat)))
6713
6714 (define-public ruby-rr
6715 (package
6716 (name "ruby-rr")
6717 (version "1.2.1")
6718 (source
6719 (origin
6720 (method url-fetch)
6721 (uri (rubygems-uri "rr" version))
6722 (sha256
6723 (base32
6724 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
6725 (build-system ruby-build-system)
6726 (arguments
6727 '(#:tests? #f)) ; test files not included
6728 (native-inputs
6729 `(("bundler" ,bundler)
6730 ("ruby-rspec" ,ruby-rspec)))
6731 (synopsis "Ruby test double framework")
6732 (description
6733 "RR is a test double framework that features a rich selection of double
6734 techniques and a terse syntax.")
6735 (home-page "https://rr.github.io/rr/")
6736 (license license:expat)))
6737
6738 (define-public ruby-rest-client
6739 (package
6740 (name "ruby-rest-client")
6741 (version "2.0.2")
6742 (source
6743 (origin
6744 (method url-fetch)
6745 (uri (rubygems-uri "rest-client" version))
6746 (sha256
6747 (base32
6748 "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
6749 (build-system ruby-build-system)
6750 (arguments
6751 '(#:phases
6752 (modify-phases %standard-phases
6753 (add-before 'check 'remove-unnecessary-development-dependencies
6754 (lambda _
6755 (substitute* "rest-client.gemspec"
6756 ;; Remove rubocop as it's unused. Rubocop also indirectly
6757 ;; depends on this package through ruby-parser and ruby-ast so
6758 ;; this avoids a dependency loop.
6759 ((".*rubocop.*") "\n")
6760 ;; Remove pry as it's unused, it's a debugging tool
6761 ((".*pry.*") "\n")
6762 ;; Remove an unnecessarily strict rdoc dependency
6763 ((".*rdoc.*") "\n"))
6764 #t))
6765 (add-before 'check 'delete-network-dependent-tests
6766 (lambda _
6767 (delete-file "spec/integration/request_spec.rb")
6768 (delete-file "spec/integration/httpbin_spec.rb")
6769 #t)))))
6770 (propagated-inputs
6771 `(("ruby-http-cookie" ,ruby-http-cookie)
6772 ("ruby-mime-types" ,ruby-mime-types)
6773 ("ruby-netrc" ,ruby-netrc)))
6774 (native-inputs
6775 `(("bundler" ,bundler)
6776 ("ruby-webmock" ,ruby-webmock-2)
6777 ("ruby-rspec" ,ruby-rspec)))
6778 (synopsis "Simple HTTP and REST client for Ruby")
6779 (description
6780 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
6781 inspired by the Sinatra microframework style of specifying actions:
6782 @code{get}, @code{put}, @code{post}, @code{delete}.")
6783 (home-page "https://github.com/rest-client/rest-client")
6784 (license license:expat)))
6785
6786 (define-public ruby-rubocop-ast
6787 (package
6788 (name "ruby-rubocop-ast")
6789 (version "0.1.0")
6790 (source
6791 (origin
6792 (method git-fetch) ;no test suite in distributed gem
6793 (uri (git-reference
6794 (url "https://github.com/rubocop-hq/rubocop-ast.git")
6795 (commit (string-append "v" version))))
6796 (file-name (git-file-name name version))
6797 (sha256
6798 (base32
6799 "0nz25z5b76xkgb9sh370hni3l946j07fr05cdwkdj9x7ibgsb6nj"))))
6800 (build-system ruby-build-system)
6801 (arguments
6802 `(#:test-target "spec"
6803 #:phases (modify-phases %standard-phases
6804 (add-after 'unpack 'disable-bundler
6805 (lambda _
6806 (substitute* "Rakefile"
6807 (("Bundler\\.setup.*") "nil\n"))
6808 #t))
6809 (replace 'replace-git-ls-files
6810 (lambda _
6811 (substitute* "rubocop-ast.gemspec"
6812 (("`git ls-files(.*)`" _ files)
6813 (format #f "`find ~a -type f| sort`" files)))
6814 #t)))))
6815 (native-inputs
6816 `(("ruby-bump" ,ruby-bump)
6817 ("ruby-rspec" ,ruby-rspec)))
6818 (propagated-inputs
6819 `(("ruby-parser" ,ruby-parser)))
6820 (synopsis "RuboCop's AST extensions and NodePattern functionality")
6821 (description "Rubocop::AST extends @code{ruby-parser} with classes used
6822 by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular:
6823 @itemize
6824 @item @code{RuboCop::AST::Node}
6825 @item @code{RuboCop::AST::NodePattern}
6826 @end itemize")
6827 (home-page "https://rubocop.org/")
6828 (license license:expat)))
6829
6830 (define-public ruby-rexml
6831 (package
6832 (name "ruby-rexml")
6833 (version "3.2.4")
6834 (source
6835 (origin
6836 (method git-fetch) ;no tests in distributed gem
6837 (uri (git-reference
6838 (url "https://github.com/ruby/rexml.git")
6839 (commit (string-append "v" version))))
6840 (file-name (git-file-name name version))
6841 (sha256
6842 (base32
6843 "0rhjjbkaq2f2cs8hyr2i4yjqpcyl8m0wmr2cypa401m3fvz4221i"))))
6844 (build-system ruby-build-system)
6845 (synopsis "XML toolkit for Ruby")
6846 (description "Inspired by Electric XML library for Java, REXML aims to be
6847 easy-to-use API, small and fast. It supports both tree and stream document
6848 parsing.")
6849 (home-page "https://github.com/ruby/rexml")
6850 (license license:bsd-2)))
6851
6852 (define-public ruby-character-set
6853 (package
6854 (name "ruby-character-set")
6855 (version "1.4.0")
6856 (source
6857 (origin
6858 (method url-fetch)
6859 (uri (rubygems-uri "character_set" version))
6860 (sha256
6861 (base32
6862 "0affq9n77vwy897ri2zhmfinfagf37hcwwimrccy1bcxan9mj3h3"))))
6863 (build-system ruby-build-system)
6864 (arguments '(#:tests? #f)) ;avoid a cycle with ruby-regexp-parser
6865 (synopsis "Ruby library to manipulate Unicode")
6866 (description "CharacterSet is a C-extended Ruby library to work with sets
6867 of Unicode code points. It can read and write these sets in various formats
6868 and implements the @code{stdlib} @code{Set} interface for them. It also
6869 offers an alternate paradigm of @code{String} processing which grants much
6870 better performance than @code{Regexp} and @code{String} methods from the
6871 @code{stdlib} where applicable. Many parts can be used independently, e.g.:
6872 @itemize
6873 @item @code{CharacterSet::Character}
6874 @item @code{CharacterSet::Parser}
6875 @item @code{CharacterSet::Writer}
6876 @item @code{RangeCompressor}
6877 @end itemize")
6878 (home-page "https://github.com/jaynetics/character_set")
6879 (license license:expat)))
6880
6881 (define-public ruby-range-compressor
6882 (package
6883 (name "ruby-range-compressor")
6884 (version "1.0.0")
6885 (source
6886 (origin
6887 (method git-fetch)
6888 (uri (git-reference
6889 (url "https://github.com/janosch-x/range_compressor.git")
6890 (commit (string-append "v" version))))
6891 (file-name (git-file-name name version))
6892 (sha256
6893 (base32
6894 "0y8slri2msyyg2szgwgriqd6qw9hkxycssdrcl5lk2dbcq5zvn54"))))
6895 (build-system ruby-build-system)
6896 (arguments
6897 `(#:test-target "spec"
6898 #:phases (modify-phases %standard-phases
6899 (add-after 'extract-gemspec 'strip-version-requirements
6900 (lambda _
6901 (substitute* "range_compressor.gemspec"
6902 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
6903 (string-append stripped "\n")))
6904 #t)))))
6905 (native-inputs
6906 `(("ruby-rspec" ,ruby-rspec)))
6907 (synopsis "Simple arrays of objects to arrays of ranges compressor")
6908 (description "RangeCompresses is a tiny library that allows compressing
6909 arrays of objects into arrays of ranges. For example, it can turn the
6910 following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.")
6911 (home-page "https://github.com/janosch-x/range_compressor")
6912 (license license:expat)))
6913
6914 (define-public ruby-regexp-property-values
6915 (package
6916 (name "ruby-regexp-property-values")
6917 (version "1.0.0")
6918 (source
6919 (origin
6920 (method git-fetch)
6921 (uri (git-reference ;no test suite in distributed gem
6922 (url "https://github.com/jaynetics/regexp_property_values.git")
6923 (commit (string-append "v" version))))
6924 (file-name (git-file-name name version))
6925 (sha256
6926 (base32
6927 "0l3fjmscg1wxn7kc6bl022cc6k5d91pwb7daq1b5w36kvsx52w1j"))))
6928 (build-system ruby-build-system)
6929 (arguments
6930 '(#:test-target "default"))
6931 (native-inputs
6932 `(("ruby-character-set" ,ruby-character-set)
6933 ("ruby-rake-compiler" ,ruby-rake-compiler)
6934 ("ruby-range-compressor" ,ruby-range-compressor)
6935 ("ruby-rspec" ,ruby-rspec)))
6936 (synopsis "Inspect Ruby's regex engine property values")
6937 (description "This small library lets you see which property values are
6938 supported by the regular expression engine of the Ruby version you are running
6939 and can directly read out their code point ranges. In other words, it
6940 determines all supported values for @code{\\p{value}} expressions and what
6941 they match.")
6942 (home-page "https://github.com/jaynetics/regexp_property_values")
6943 (license license:expat)))
6944
6945 (define-public ruby-regexp-parser
6946 (package
6947 (name "ruby-regexp-parser")
6948 (version "1.7.1")
6949 (source
6950 (origin
6951 (method git-fetch) ;bin/test missing from gem
6952 (uri (git-reference
6953 (url "https://github.com/ammar/regexp_parser.git")
6954 (commit (string-append "v" version))))
6955 (file-name (git-file-name name version))
6956 (sha256
6957 (base32
6958 "0dk9d4vpw31cc06s29fqyr1kq0kipym1mydifkcrnppvpl3pd53r"))))
6959 (build-system ruby-build-system)
6960 (arguments
6961 '(#:test-target "default"
6962 #:phases (modify-phases %standard-phases
6963 (add-before 'build 'compile-scanner.rb
6964 (lambda _
6965 (invoke "rake" "build")
6966 ;; XXX: This is needed otherwise the install
6967 ;; phase fails to delete the installed cached
6968 ;; gem file.
6969 (delete-file-recursively "pkg")
6970 #t)))))
6971 (native-inputs
6972 `(("ragel" ,ragel)
6973 ("ruby-regexp-property-values" ,ruby-regexp-property-values)
6974 ("ruby-rspec" ,ruby-rspec)))
6975 (synopsis "A regular expression parser library for Ruby ")
6976 (description "A Ruby gem for tokenizing, parsing, and transforming regular
6977 expressions. It comprises the following components:
6978 @itemize
6979 @item A scanner/tokenizer based on Ragel,
6980 @item A lexer that produces a stream of token objects,
6981 @item A parser that produces a tree of Expression objects.
6982 @end itemize")
6983 (home-page "https://github.com/ammar/regexp_parser")
6984 (license license:expat)))
6985
6986 (define-public ruby-test-queue
6987 (package
6988 (name "ruby-test-queue")
6989 (version "0.4.2")
6990 (source
6991 (origin
6992 (method url-fetch)
6993 (uri (rubygems-uri "test-queue" version))
6994 (sha256
6995 (base32
6996 "0hvm3n1qrqxqilhqk4rjivw3gcrd08zz1i6am9qzg1ppjxv6f36f"))))
6997 (build-system ruby-build-system)
6998 (arguments
6999 '(#:phases
7000 (modify-phases %standard-phases
7001 (replace 'check
7002 (lambda* (#:key tests? #:allow-other-keys)
7003 (when tests?
7004 (invoke "rspec"))
7005 #t)))))
7006 (native-inputs
7007 `(("ruby-rspec" ,ruby-rspec)))
7008 (synopsis "Minitest/RSpec parallel test runner for CI environments")
7009 (description "The test-queue module is a parallel test runner,
7010 built using a centralized queue to ensure optimal distribution of
7011 tests between workers. It is specifically optimized for Continuous
7012 Integration (CI) environments: build statistics from each run are
7013 stored locally and used to sort the queue at the beginning of the next
7014 run.")
7015 (home-page "https://github.com/tmm1/test-queue")
7016 (license license:expat)))
7017
7018 (define-public ruby-rubocop
7019 (package
7020 (name "ruby-rubocop")
7021 (version "0.88.0")
7022 (source
7023 (origin
7024 (method git-fetch) ;no tests in distributed gem
7025 (uri (git-reference
7026 (url "https://github.com/rubocop-hq/rubocop.git")
7027 (commit (string-append "v" version))))
7028 (file-name (git-file-name name version))
7029 (sha256
7030 (base32
7031 "1d06893jp8pd85fvgp5d16vqcf31bafi430v4f4y746ihyvhzz5r"))
7032 (patches (search-patches "ruby-rubocop-break-dependency-cycle.patch"))))
7033 (build-system ruby-build-system)
7034 (arguments
7035 '(#:test-target "default"
7036 #:phases
7037 (modify-phases %standard-phases
7038 (add-after 'unpack 'remove-problematic-tests
7039 ;; These tests depend on Rubocop extensions, which cannot be
7040 ;; included as they cause a dependency cycle with Rubocop itself.
7041 (lambda _
7042 (delete-file "spec/rubocop/config_loader_spec.rb")
7043 (substitute* "Gemfile"
7044 ((".*'rubocop-performance'.*") "")
7045 ((".*'rubocop-rspec'.*") ""))
7046 ;; Prevent "Unnecessary disabling of RSpec/* (unknown cop)"
7047 ;; errors.
7048 (substitute* (find-files "spec/rubocop/cop/" "_spec\\.rb$")
7049 (("# (rubocop:(enable|disable) RSpec.*)" _ what)
7050 (string-append "# Disabled: " what)))
7051 #t))
7052 (add-after 'unpack 'disable-bundler
7053 (lambda _
7054 (substitute* "Rakefile"
7055 (("Bundler\\.setup.*") "nil\n"))
7056 #t))
7057 (replace 'replace-git-ls-files
7058 (lambda _
7059 (substitute* "rubocop.gemspec"
7060 (("`git ls-files(.*)`" _ files)
7061 (format #f "`find ~a -type f| sort`" files)))
7062 #t))
7063 (add-before 'check 'set-home
7064 (lambda _
7065 (setenv "HOME" (getcwd))
7066 #t))
7067 (add-before 'check 'make-adoc-files-writable
7068 (lambda _
7069 (let ((adoc-files (find-files "docs/modules/ROOT/pages"
7070 "\\.adoc$")))
7071 (for-each make-file-writable adoc-files))
7072 #t)))))
7073 (native-inputs
7074 `(("ruby-bump" ,ruby-bump)
7075 ("ruby-pry" ,ruby-pry)
7076 ("ruby-rspec" ,ruby-rspec)
7077 ("ruby-test-queue" ,ruby-test-queue)
7078 ("ruby-webmock" ,ruby-webmock-2)
7079 ("ruby-yard" ,ruby-yard)))
7080 (propagated-inputs
7081 `(("ruby-parallel" ,ruby-parallel)
7082 ("ruby-parser" ,ruby-parser)
7083 ("ruby-rainbow" ,ruby-rainbow)
7084 ("ruby-regexp-parser" ,ruby-regexp-parser)
7085 ("ruby-rexml" ,ruby-rexml)
7086 ("ruby-rubocop-ast" ,ruby-rubocop-ast)
7087 ("ruby-progressbar" ,ruby-progressbar)
7088 ("ruby-unicode-display-width" ,ruby-unicode-display-width)))
7089 (synopsis "Ruby code style checking tool")
7090 (description
7091 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
7092 the community-driven Ruby Style Guide.")
7093 (home-page "https://github.com/rubocop-hq/rubocop")
7094 (license license:expat)))
7095
7096 (define-public ruby-contest
7097 (package
7098 (name "ruby-contest")
7099 (version "0.1.3")
7100 (source
7101 (origin
7102 (method url-fetch)
7103 (uri (rubygems-uri "contest" version))
7104 (sha256
7105 (base32
7106 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
7107 (build-system ruby-build-system)
7108 (synopsis "Write declarative tests using nested contexts")
7109 (description
7110 "Contest allows writing declarative @code{Test::Unit} tests using nested
7111 contexts without performance penalties.")
7112 (home-page "https://github.com/citrusbyte/contest")
7113 (license license:expat)))
7114
7115 (define-public ruby-creole
7116 (package
7117 (name "ruby-creole")
7118 (version "0.5.0")
7119 (source
7120 (origin
7121 (method url-fetch)
7122 (uri (rubygems-uri "creole" version))
7123 (sha256
7124 (base32
7125 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
7126 (build-system ruby-build-system)
7127 (native-inputs
7128 `(("ruby-bacon" ,ruby-bacon)))
7129 (synopsis "Creole markup language converter")
7130 (description
7131 "Creole is a lightweight markup language and this library for converting
7132 creole to @code{HTML}.")
7133 (home-page "https://github.com/minad/creole")
7134 (license license:ruby)))
7135
7136 (define-public ruby-docile
7137 (package
7138 (name "ruby-docile")
7139 (version "1.1.5")
7140 (source
7141 (origin
7142 (method url-fetch)
7143 (uri (rubygems-uri "docile" version))
7144 (sha256
7145 (base32
7146 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
7147 (build-system ruby-build-system)
7148 (arguments
7149 '(#:tests? #f)) ; needs github-markup, among others
7150 (synopsis "Ruby EDSL helper library")
7151 (description "Docile is a Ruby library that provides an interface for
7152 creating embedded domain specific languages (EDSLs) that manipulate existing
7153 Ruby classes.")
7154 (home-page "https://ms-ati.github.io/docile/")
7155 (license license:expat)))
7156
7157 (define-public ruby-middleware
7158 (package
7159 (name "ruby-middleware")
7160 (version "0.1.0")
7161 (source
7162 (origin
7163 (method url-fetch)
7164 (uri (rubygems-uri "middleware" version))
7165 (sha256
7166 (base32
7167 "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl"))))
7168 (build-system ruby-build-system)
7169 (arguments '(#:tests? #f)) ;no test suite
7170 (synopsis "Implementation of a middleware abstraction for Ruby")
7171 (description "Middleware is a generalized implementation of a middleware
7172 abstraction for Ruby.")
7173 (home-page "https://github.com/mitchellh/middleware")
7174 (license license:expat)))
7175
7176 (define-public ruby-benchmark-ips
7177 (package
7178 (name "ruby-benchmark-ips")
7179 (version "2.8.2")
7180 (source
7181 (origin
7182 (method url-fetch)
7183 (uri (rubygems-uri "benchmark-ips" version))
7184 (sha256
7185 (base32
7186 "1n9397j7kh4vvikfann1467qgksc679imlr50hax3lk1q3af8kdw"))))
7187 (build-system ruby-build-system)
7188 (native-inputs
7189 `(("ruby-hoe" ,ruby-hoe)))
7190 (synopsis "Iterations per second enhancement for the Ruby Benchmark module")
7191 (description "Benchmark-ips enhances the Ruby Benchmark module with the
7192 iterations per second count. For short snippets of code, it can automatically
7193 figure out how many times to run the code to get interesting data.")
7194 (home-page "https://github.com/evanphx/benchmark-ips")
7195 (license license:expat)))
7196
7197 (define-public ruby-ffi-rzmq-core
7198 (package
7199 (name "ruby-ffi-rzmq-core")
7200 (version "1.0.7")
7201 (source
7202 (origin
7203 (method url-fetch)
7204 (uri (rubygems-uri "ffi-rzmq-core" version))
7205 (sha256
7206 (base32
7207 "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5"))))
7208 (build-system ruby-build-system)
7209 (arguments
7210 `(#:phases
7211 (modify-phases %standard-phases
7212 (add-after 'unpack 'patch-libzmq-search-path
7213 (lambda* (#:key inputs #:allow-other-keys)
7214 (let ((zeromq (assoc-ref inputs "zeromq")))
7215 (substitute* "lib/ffi-rzmq-core/libzmq.rb"
7216 (("/usr/local/lib")
7217 (string-append zeromq "/lib")))
7218 #t)))
7219 (replace 'check
7220 (lambda _
7221 (invoke "rspec"))))))
7222 (native-inputs
7223 `(("ruby-rspec" ,ruby-rspec)))
7224 (inputs
7225 `(("zeromq" ,zeromq)))
7226 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
7227 (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library")
7228 (description "This library only provides the FFI wrapper for the ZeroMQ
7229 networking library. It can be used to implement a Ruby API for the ZeroMQ
7230 library.")
7231 (home-page "https://github.com/chuckremes/ffi-rzmq-core")
7232 (license license:expat)))
7233
7234 (define-public ruby-ffi-rzmq
7235 (package
7236 (name "ruby-ffi-rzmq")
7237 (version "2.0.7")
7238 (source
7239 (origin
7240 (method url-fetch)
7241 (uri (rubygems-uri "ffi-rzmq" version))
7242 (sha256
7243 (base32
7244 "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg"))))
7245 (build-system ruby-build-system)
7246 (arguments '(#:tests? #t
7247 #:phases (modify-phases %standard-phases
7248 (replace 'check
7249 (lambda _
7250 (invoke "rspec"))))))
7251 (native-inputs
7252 `(("ruby-rspec" ,ruby-rspec)))
7253 (propagated-inputs
7254 `(("ruby-ffi-rzmq-core" ,ruby-ffi-rzmq-core)))
7255 (synopsis "High-level Ruby wrapper for the ZeroMQ networking library")
7256 (description "This library provides a high-level API that wraps the ZeroMQ
7257 networking library using the Ruby foreign function interface (FFI). It is a
7258 pure Ruby wrapper, hence is compatible with any Ruby runtime that has support
7259 for FFI.")
7260 (home-page "https://github.com/chuckremes/ffi-rzmq")
7261 (license license:expat)))
7262
7263 (define-public ruby-sawyer
7264 (package
7265 (name "ruby-sawyer")
7266 (version "0.8.2")
7267 (source
7268 (origin
7269 (method url-fetch)
7270 (uri (rubygems-uri "sawyer" version))
7271 (sha256
7272 (base32
7273 "0yrdchs3psh583rjapkv33mljdivggqn99wkydkjdckcjn43j3cz"))))
7274 (build-system ruby-build-system)
7275 (propagated-inputs
7276 `(("ruby-addressable" ,ruby-addressable)
7277 ("ruby-faraday" ,ruby-faraday)))
7278 (synopsis "Experimental hypermedia agent for Ruby")
7279 (description "Sawyer is an experimental hypermedia agent for Ruby built on
7280 top of Faraday.")
7281 (home-page "https://github.com/lostisland/sawyer")
7282 (license license:expat)))
7283
7284 (define-public ruby-octokit
7285 (package
7286 (name "ruby-octokit")
7287 (version "4.18.0")
7288 (source
7289 (origin
7290 (method url-fetch)
7291 (uri (rubygems-uri "octokit" version))
7292 (sha256
7293 (base32
7294 "0zvfr9njmj5svi39fcsi2b0g7pcxb0vamw9dlyas8bg814jlzhi6"))))
7295 (build-system ruby-build-system)
7296 (arguments '(#:tests? #f)) ;no test suite in the gem release
7297 (propagated-inputs
7298 `(("ruby-faraday" ,ruby-faraday)
7299 ("ruby-sawyer" ,ruby-sawyer)))
7300 (synopsis "Ruby toolkit for the GitHub API")
7301 (description "Octokit wraps the GitHub API in a flat API client that
7302 follows Ruby conventions and requires little knowledge of REST.")
7303 (home-page "https://github.com/octokit/octokit.rb")
7304 (license license:expat)))
7305
7306 (define-public ruby-chandler
7307 (package
7308 (name "ruby-chandler")
7309 (version "0.9.0")
7310 (source
7311 (origin
7312 (method url-fetch)
7313 (uri (rubygems-uri "chandler" version))
7314 (sha256
7315 (base32
7316 "1n8a4mr2jkcz5vaaps45g2rxa2pzy1wb7cylgw85xmmyyp14lnrr"))))
7317 (build-system ruby-build-system)
7318 (native-inputs
7319 `(("ruby-rubocop" ,ruby-rubocop)))
7320 (propagated-inputs
7321 `(("ruby-netrc" ,ruby-netrc)
7322 ("ruby-octokit" ,ruby-octokit)))
7323 (synopsis "Sync CHANGELOG entries to GitHub's release notes")
7324 (description "Chandler syncs a project's CHANGELOG file entries to
7325 GitHub's release notes to remove the need of manually entering release
7326 notes.")
7327 (home-page "https://github.com/mattbrictson/chandler")
7328 (license license:expat)))
7329
7330 (define-public ruby-pry-byebug
7331 (package
7332 (name "ruby-pry-byebug")
7333 (version "3.9.0")
7334 (source
7335 (origin
7336 (method git-fetch)
7337 (uri (git-reference
7338 (url "https://github.com/deivid-rodriguez/pry-byebug")
7339 (commit (string-append "v" version))))
7340 (file-name (git-file-name name version))
7341 (sha256
7342 (base32
7343 "1kchrwccai92068p50zyd6mh524ywqnm0jw5g3lks7iwmf0xkmgc"))))
7344 (build-system ruby-build-system)
7345 (arguments
7346 `(#:phases (modify-phases %standard-phases
7347 (add-before 'check 'set-home
7348 (lambda _
7349 (setenv "HOME" (getcwd))
7350 #t)))))
7351 (native-inputs
7352 `(("ruby-chandler" ,ruby-chandler)
7353 ("ruby-rubocop" ,ruby-rubocop)
7354 ("ruby-simplecov" ,ruby-simplecov)))
7355 (propagated-inputs
7356 `(("ruby-byebug" ,ruby-byebug-11)
7357 ("ruby-pry" ,ruby-pry)))
7358 (synopsis "Step-by-step debugging and stack navigation in Pry")
7359 (description "This package adds step-by-step debugging and stack
7360 navigation capabilities to @code{pry}, using @code{byebug}.")
7361 (home-page "https://github.com/deivid-rodriguez/pry-byebug")
7362 (license license:expat)))
7363
7364 (define-public ruby-binding-of-caller
7365 (package
7366 (name "ruby-binding-of-caller")
7367 (version "0.8.0")
7368 (source
7369 (origin
7370 (method url-fetch)
7371 (uri (rubygems-uri "binding_of_caller" version))
7372 (sha256
7373 (base32
7374 "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g"))))
7375 (build-system ruby-build-system)
7376 ;; Attempting to run the test suite fails with a rake deprecation error
7377 ;; (see: https://github.com/banister/binding_of_caller/issues/76).
7378 (arguments '(#:tests? #f))
7379 (propagated-inputs
7380 `(("ruby-debug-inspector" ,ruby-debug-inspector)))
7381 (synopsis "Retrieve the binding of a method's caller")
7382 (description "The @code{binding_of_caller} module provides the
7383 @code{Binding#of_caller} method. It allows accessing bindings from upper
7384 frames in the call stack and can evaluate code in that context.")
7385 (home-page "https://github.com/banister/binding_of_caller")
7386 (license license:expat)))
7387
7388 (define-public ruby-pry-stack-explorer
7389 (package
7390 (name "ruby-pry-stack-explorer")
7391 (version "0.5.1")
7392 (source
7393 (origin
7394 (method url-fetch)
7395 (uri (rubygems-uri "pry-stack_explorer" version))
7396 (sha256
7397 (base32
7398 "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0"))))
7399 (build-system ruby-build-system)
7400 (arguments '(#:tests? #f)) ;no test suite in gem release
7401 (propagated-inputs
7402 `(("ruby-binding-of-caller" ,ruby-binding-of-caller)
7403 ("ruby-pry" ,ruby-pry)))
7404 (synopsis "Call-stack navigation plugin for the Pry REPL")
7405 (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that
7406 add support to navigate the call-stack.")
7407 (home-page "https://github.com/pry/pry-stack_explorer")
7408 (license license:expat)))
7409
7410 (define-public ruby-varint
7411 (package
7412 (name "ruby-varint")
7413 (version "0.1.1")
7414 (source
7415 (origin
7416 (method url-fetch)
7417 (uri (rubygems-uri "varint" version))
7418 (sha256
7419 (base32
7420 "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac"))))
7421 (build-system ruby-build-system)
7422 (arguments '(#:tests? #f)) ;no test suite
7423 (synopsis "Variable length integers (varint) C extension for Ruby")
7424 (description "This package provides a small C extension to speed up
7425 variable length integers (varint) in Ruby Protocol Buffers.")
7426 (home-page "https://github.com/liquidm/varint")
7427 (license license:bsd-3)))
7428
7429 (define-public ruby-ruby-prof
7430 (package
7431 (name "ruby-ruby-prof")
7432 (version "1.4.1")
7433 (source
7434 (origin
7435 (method url-fetch)
7436 (uri (rubygems-uri "ruby-prof" version))
7437 (sha256
7438 (base32
7439 "12cd91m08ih0imfpy4k87618hd4mhyz291a6bx2hcskza4nf6d27"))))
7440 (build-system ruby-build-system)
7441 (arguments
7442 `(#:phases
7443 (modify-phases %standard-phases
7444 (add-after 'unpack 'patch-rakefile
7445 ;; This fixes the following error: "NameError: uninitialized
7446 ;; constant Bundler::GemHelper" (see:
7447 ;; https://github.com/ruby-prof/ruby-prof/issues/274).
7448 (lambda _
7449 (substitute* "Rakefile"
7450 ((".*require \"bundler/setup\".*" all)
7451 (string-append all " require 'bundler/gem_tasks'\n")))
7452 #t))
7453 ;; The LineNumbersTest test fails non-deterministically (see:
7454 ;; https://github.com/ruby-prof/ruby-prof/issues/276).
7455 (add-after 'extract-gemspec 'delete-flaky-test
7456 (lambda _
7457 (delete-file "test/line_number_test.rb")
7458 (substitute* "ruby-prof.gemspec"
7459 (("\"test/line_number_test\\.rb\"\\.freeze, ") ""))
7460 #t))
7461 (add-before 'check 'compile
7462 (lambda _
7463 (invoke "rake" "compile"))))))
7464 (native-inputs
7465 `(("bundler" ,bundler)
7466 ("ruby-minitest" ,ruby-minitest)
7467 ("ruby-rake-compiler" ,ruby-rake-compiler)
7468 ("ruby-rdoc" ,ruby-rdoc)))
7469 (synopsis "Fast code profiler for Ruby")
7470 (description "RubyProf is a fast code profiler for Ruby. Its features
7471 include:
7472 @table @asis
7473 @item Speed
7474 Being a C extension, it is many times faster than the standard Ruby profiler.
7475 @item Measurement Modes
7476 It can measure program wall time, process time, object allocations and memory
7477 usage.
7478 @item Reports
7479 A variety of text and cross-referenced HTML reports can be generated.
7480 @item Threads
7481 Profiling multiple threads simultaneously is supported.
7482 @end table")
7483 (home-page "https://github.com/ruby-prof/ruby-prof")
7484 (license license:bsd-2)))
7485
7486 (define-public ruby-cucumber-messages
7487 (package
7488 (name "ruby-cucumber-messages")
7489 (version "12.2.0")
7490 (source (origin
7491 (method git-fetch)
7492 (uri (git-reference
7493 (url "https://github.com/cucumber/messages-ruby")
7494 (commit "12cd07eac87bce7843fd1bb0bf64bc4da09f097c")))
7495 (file-name (git-file-name name version))
7496 (sha256
7497 (base32
7498 "16wwqfpsq7crvxc3q08lphgyh12cl2d83p1c79p312q4jmy9cn5a"))))
7499 (build-system ruby-build-system)
7500 (arguments
7501 `(#:phases (modify-phases %standard-phases
7502 (add-after 'unpack 'patch-protobuf.rb
7503 (lambda _
7504 (substitute* "rake/protobuf.rb"
7505 (("load 'protobuf/tasks/compile.rake'")
7506 "require 'protobuf/tasks'"))
7507 #t))
7508 (add-before 'build 'compile
7509 (lambda _
7510 (substitute* "Makefile"
7511 (("bundle exec ") "")
7512 (("include default.mk.*" all)
7513 (string-append "#" all)))
7514 (invoke "make")))
7515 (replace 'check
7516 (lambda _
7517 (invoke "rspec"))))))
7518 (propagated-inputs
7519 `(("ruby-protobuf" ,ruby-protobuf-cucumber)))
7520 (native-inputs
7521 `(("ruby-rspec" ,ruby-rspec)))
7522 (home-page "https://github.com/cucumber/messages-ruby")
7523 (synopsis "Cucumber Messages for Ruby (Protocol Buffers)")
7524 (description "Cucumber Messages for Ruby is a library which allows
7525 serialization and deserialization of the protocol buffer messages used in
7526 Cucumber.")
7527 (license license:expat)))
7528
7529 (define-public ruby-gherkin
7530 (package
7531 (name "ruby-gherkin")
7532 (version "14.0.1")
7533 (source (origin
7534 (method git-fetch)
7535 (uri (git-reference
7536 (url "https://github.com/cucumber/gherkin-ruby")
7537 (commit (string-append "v" version))))
7538 (file-name (git-file-name name version))
7539 (sha256
7540 (base32
7541 "1dwa8632nc6kijv8p257jl64rsjmc0fimlaqvxlkdi2h9n1nympb"))))
7542 (build-system ruby-build-system)
7543 (native-inputs
7544 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
7545 ("ruby-rspec" ,ruby-rspec)))
7546 (arguments
7547 `(#:test-target "spec"))
7548 (synopsis "Gherkin parser for Ruby")
7549 (description "Gherkin is a parser and compiler for the Gherkin language.
7550 It is intended be used by all Cucumber implementations to parse
7551 @file{.feature} files.")
7552 (home-page "https://github.com/cucumber/gherkin-ruby")
7553 (license license:expat)))
7554
7555 (define-public ruby-gherkin-ruby
7556 (package
7557 (name "ruby-gherkin-ruby")
7558 (version "0.3.2")
7559 (home-page "https://github.com/codegram/gherkin-ruby")
7560 (source (origin
7561 (method url-fetch)
7562 (uri (rubygems-uri "gherkin-ruby" version))
7563 (sha256
7564 (base32
7565 "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1"))))
7566 (build-system ruby-build-system)
7567 (synopsis "Pure Ruby Gherkin parser")
7568 (description
7569 "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than
7570 200 lines of code.")
7571 ;; XXX: No license information anywhere but Readme.md.
7572 (license license:expat)))
7573
7574 (define-public ruby-aruba
7575 (package
7576 (name "ruby-aruba")
7577 (version "0.14.14")
7578 (source
7579 (origin
7580 (method url-fetch)
7581 (uri (rubygems-uri "aruba" version))
7582 (sha256
7583 (base32
7584 "0l2mfpdxc03gdrbwc2hv4vdhjhqhfcdp6d02j05j64ncpi9srlqn"))))
7585 (build-system ruby-build-system)
7586 (arguments
7587 '(#:test-target "spec"
7588 #:phases
7589 (modify-phases %standard-phases
7590 (add-after 'unpack 'patch
7591 (lambda _
7592 (substitute* "spec/aruba/api_spec.rb"
7593 ;; This resolves some errors in the specs
7594 ;;
7595 ;; undefined method `parse' for Time:Class
7596 (("require 'spec_helper'")
7597 "require 'spec_helper'\nrequire 'time'"))
7598 ;; Avoid shebang issues in this spec file
7599 (substitute* "spec/aruba/matchers/command_spec.rb"
7600 (("/usr/bin/env bash")
7601 (which "bash")))
7602 #t))
7603 (add-before 'check 'remove-unnecessary-dependencies
7604 (lambda _
7605 (substitute* "Gemfile"
7606 ((".*byebug.*") "\n")
7607 ((".*pry.*") "\n")
7608 ((".*yaml.*") "\n")
7609 ((".*bcat.*") "\n")
7610 ((".*kramdown.*") "\n")
7611 ((".*rubocop.*") "\n")
7612 ((".*cucumber-pro.*") "\n")
7613 ((".*cucumber.*") "\n")
7614 ((".*license_finder.*") "\n")
7615 ((".*rake.*") "gem 'rake'\n")
7616 ((".*relish.*") "\n"))
7617 (substitute* "aruba.gemspec"
7618 (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
7619 "spec.add_runtime_dependency 'cucumber'"))
7620 #t))
7621 (add-before 'check 'set-home
7622 (lambda _ (setenv "HOME" "/tmp") #t)))))
7623 (native-inputs
7624 `(("bundler" ,bundler)
7625 ("ruby-rspec" ,ruby-rspec)
7626 ("ruby-fuubar" ,ruby-fuubar)
7627 ("ruby-simplecov" ,ruby-simplecov)))
7628 (propagated-inputs
7629 `(("ruby-childprocess" ,ruby-childprocess)
7630 ("ruby-contracts" ,ruby-contracts)
7631 ("ruby-cucumber" ,ruby-cucumber)
7632 ("ruby-ffi" ,ruby-ffi)
7633 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
7634 ("ruby-thor" ,ruby-thor)
7635 ("ruby-yard" ,ruby-yard)))
7636 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
7637 (description
7638 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
7639 command-line applications. It supports applications written in any
7640 language.")
7641 (home-page "https://github.com/cucumber/aruba")
7642 (license license:expat)))
7643
7644 ;; A version of ruby-aruba without tests run so that circular dependencies can
7645 ;; be avoided.
7646 (define ruby-aruba-without-tests
7647 (package
7648 (inherit ruby-aruba)
7649 (arguments '(#:tests? #f))
7650 (propagated-inputs
7651 `(("ruby-cucumber" ,ruby-cucumber-without-tests)
7652 ,@(alist-delete "ruby-cucumber"
7653 (package-propagated-inputs ruby-aruba))))
7654 (native-inputs '())))
7655
7656 (define-public ruby-sys-uname
7657 (package
7658 (name "ruby-sys-uname")
7659 (version "1.2.1")
7660 (source
7661 (origin
7662 (method url-fetch)
7663 (uri (rubygems-uri "sys-uname" version))
7664 (sha256
7665 (base32
7666 "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0"))))
7667 (build-system ruby-build-system)
7668 (arguments
7669 `(#:test-target "spec"))
7670 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
7671 (native-inputs `(("ruby-rspec" ,ruby-rspec)))
7672 (synopsis "Ruby interface for gathering system information")
7673 (description "The sys-uname library provides an interface for gathering
7674 information about your current platform. It allows retrieving information
7675 such as the OS name, OS version, system name, etc.")
7676 (home-page "https://github.com/djberg96/sys-uname")
7677 (license license:asl2.0)))
7678
7679 (define-public ruby-cucumber-create-meta
7680 (package
7681 (name "ruby-cucumber-create-meta")
7682 (version "1.0.0")
7683 (source
7684 (origin
7685 (method url-fetch)
7686 (uri (rubygems-uri "cucumber-create-meta" version))
7687 (sha256
7688 (base32
7689 "0i0i3arymjrnjk72mg79w1a11607x4d0lrqafm9sz2gq9l52zasw"))))
7690 (build-system ruby-build-system)
7691 (arguments
7692 `(#:phases (modify-phases %standard-phases
7693 (add-after 'extract-gemspec 'relax-version-requirements
7694 (lambda _
7695 (substitute* ".gemspec"
7696 ((" 12\\.2")
7697 " 12.1"))
7698 #t))
7699 (replace 'check
7700 (lambda _
7701 (invoke "rspec"))))))
7702 (native-inputs
7703 `(("ruby-rspec" ,ruby-rspec)))
7704 (propagated-inputs
7705 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
7706 ("ruby-sys-uname" ,ruby-sys-uname)))
7707 (synopsis "Function to create @code{Meta} messages for Cucumber Ruby")
7708 (description "The @code{createMeta} utility function allows generating
7709 system-specific @code{Meta} messages for Cucumber Ruby.")
7710 (home-page "https://github.com/cucumber/cucumber/tree/master/create-meta/ruby")
7711 (license license:expat)))
7712
7713 (define-public ruby-cucumber-html-formatter
7714 (package
7715 (name "ruby-cucumber-html-formatter")
7716 (version "7.0.0")
7717 (source
7718 (origin
7719 (method url-fetch)
7720 (uri (rubygems-uri "cucumber-html-formatter" version))
7721 (sha256
7722 (base32
7723 "0lshj4sw9jw7687wrhknyb9kffblai3l843zgrznyqij3ga0bc62"))))
7724 (build-system ruby-build-system)
7725 (arguments
7726 `(#:phases (modify-phases %standard-phases
7727 (replace 'check
7728 (lambda _
7729 (invoke "rspec"))))))
7730 (native-inputs
7731 `(("ruby-rspec" ,ruby-rspec)))
7732 (propagated-inputs
7733 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)))
7734 (synopsis "HTML formatter for Cucumber")
7735 (description "Cucumber HTML Formatter produces a HTML report for Cucumber
7736 runs. It is built on top of cucumber-react and works with any Cucumber
7737 implementation with a protocol buffer formatter that outputs Cucumber
7738 messages.")
7739 (home-page "https://github.com/cucumber/cucumber/tree/\
7740 master/html-formatter/ruby")
7741 (license license:expat)))
7742
7743 (define-public ruby-cucumber
7744 (package
7745 (name "ruby-cucumber")
7746 (version "4.1.0")
7747 (source
7748 (origin
7749 (method git-fetch)
7750 (uri (git-reference
7751 (url "https://github.com/cucumber/cucumber-ruby")
7752 (commit (string-append "v" version))))
7753 (file-name (git-file-name name version))
7754 (sha256
7755 (base32
7756 "0g9rqfslbzkkrq2kvl14fgknrhfbji3bjjpjxff5nc9wzd3hd549"))))
7757 (build-system ruby-build-system)
7758 (arguments
7759 '(#:test-target "default"
7760 #:phases
7761 (modify-phases %standard-phases
7762 (add-after 'unpack 'disable-rubocop
7763 ;; Rubocop lint check fails with our more recent version.
7764 (lambda _
7765 (substitute* "Rakefile"
7766 (("spec cucumber rubocop")
7767 "spec cucumber"))
7768 #t))
7769 (add-after 'extract-gemspec 'strip-version-requirements
7770 (lambda _
7771 (delete-file "Gemfile") ;do not use Bundler
7772 (substitute* "cucumber.gemspec"
7773 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
7774 (string-append stripped "\n")))
7775 #t))
7776 (add-before 'check 'set-home
7777 (lambda _
7778 (setenv "HOME" (getcwd))
7779 #t)))))
7780 (propagated-inputs
7781 `(("ruby-builder" ,ruby-builder)
7782 ("ruby-cucumber-core" ,ruby-cucumber-core)
7783 ("ruby-cucumber-create-meta" ,ruby-cucumber-create-meta)
7784 ("ruby-cucumber-html-formatter" ,ruby-cucumber-html-formatter)
7785 ("ruby-cucumber-messages" ,ruby-cucumber-messages)
7786 ("ruby-cucumber-wire" ,ruby-cucumber-wire)
7787 ("ruby-diff-lcs" ,ruby-diff-lcs)
7788 ("ruby-gherkin" ,ruby-gherkin)
7789 ("ruby-multi-json" ,ruby-multi-json)
7790 ("ruby-multi-test" ,ruby-multi-test)))
7791 (native-inputs
7792 `(;; Use a untested version of aruba, to avoid a circular dependency, as
7793 ;; ruby-aruba depends on ruby-cucumber.
7794 ("ruby-aruba", ruby-aruba-without-tests)
7795 ("ruby-rspec" ,ruby-rspec)
7796 ("ruby-pry" ,ruby-pry)
7797 ("ruby-nokogiri" ,ruby-nokogiri)
7798 ("ruby-rubocop" ,ruby-rubocop)))
7799 (synopsis "Describe automated tests in plain language")
7800 (description "Cucumber is a tool for running automated tests written in
7801 plain language. It's designed to support a Behaviour Driven Development (BDD)
7802 software development workflow.")
7803 (home-page "https://cucumber.io/")
7804 (license license:expat)))
7805
7806 (define ruby-cucumber-without-tests
7807 (package (inherit ruby-cucumber)
7808 (arguments
7809 '(#:tests? #f))
7810 (native-inputs
7811 '())))
7812
7813 (define-public ruby-coveralls
7814 (package
7815 (name "ruby-coveralls")
7816 (version "0.8.23")
7817 (source
7818 (origin
7819 (method url-fetch)
7820 (uri (rubygems-uri "coveralls" version))
7821 (sha256
7822 (base32
7823 "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc"))))
7824 (build-system ruby-build-system)
7825 ;; The test suite depends on ruby-vcr, which cannot be included in Guix
7826 ;; because of its nonfree, Hippocratic-derived license.
7827 (arguments
7828 `(#:tests? #f
7829 #:phases (modify-phases %standard-phases
7830 (add-after 'extract-gemspec 'strip-version-requirements
7831 ;; Keeping strict version requirements can cause problems
7832 ;; to users of the library, such as: Gem::ConflictError:
7833 ;; Unable to activate coveralls-0.8.23, because
7834 ;; simplecov-0.17.1 conflicts with simplecov (~> 0.16.1).
7835 (lambda _
7836 (substitute* "coveralls-ruby.gemspec"
7837 (("(.*add_.*dependency\\([^,]+), .*" _ stripped)
7838 (string-append stripped ")\n")))
7839 #t)))))
7840 (propagated-inputs
7841 `(("ruby-json" ,ruby-json)
7842 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
7843 ("ruby-thor" ,ruby-thor)
7844 ("ruby-tins" ,ruby-tins)))
7845 (synopsis "Ruby implementation of the Coveralls API")
7846 (description "This package provides a Ruby implementation of the Coveralls
7847 API.")
7848 (home-page "https://coveralls.io")
7849 (license license:expat)))
7850
7851 (define-public ruby-unindent
7852 (package
7853 (name "ruby-unindent")
7854 (version "1.0")
7855 (source
7856 (origin
7857 (method url-fetch)
7858 (uri (rubygems-uri "unindent" version))
7859 (sha256
7860 (base32
7861 "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd"))))
7862 (build-system ruby-build-system)
7863 (synopsis "Ruby method to unindent strings")
7864 (description "This module provides a @code{String#unindent} Ruby method to
7865 unindent strings, which can be useful to unindent multiline strings embedded
7866 in already-indented code.")
7867 (home-page "https://github.com/mynyml/unindent")
7868 (license license:expat)))
7869
7870 (define-public ruby-cucumber-core
7871 (package
7872 (name "ruby-cucumber-core")
7873 (version "7.1.0")
7874 (source
7875 (origin
7876 (method git-fetch)
7877 (uri (git-reference
7878 (url "https://github.com/cucumber/cucumber-ruby-core")
7879 (commit (string-append "v" version))))
7880 (file-name (git-file-name name version))
7881 (sha256
7882 (base32
7883 "1p5wb6wbggbw37ariyag4kxpiczznvgm3c8cnz1744dmbj79q1rn"))))
7884 (build-system ruby-build-system)
7885 (arguments
7886 `(#:test-target "spec"
7887 #:phases
7888 (modify-phases %standard-phases
7889 (add-after 'extract-gemspec 'relax-version-requirements
7890 (lambda _
7891 (substitute* "cucumber-core.gemspec"
7892 (("'cucumber-tag-expressions',.*")
7893 "'cucumber-tag-expressions', '>=2.0.0'\n"))
7894 #t)))))
7895 (native-inputs
7896 `(("ruby-rspec" ,ruby-rspec)
7897 ("ruby-coveralls" ,ruby-coveralls)
7898 ("ruby-rubocop" ,ruby-rubocop)
7899 ("ruby-simplecov" ,ruby-simplecov)
7900 ("ruby-unindent" ,ruby-unindent)))
7901 (propagated-inputs
7902 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
7903 ("ruby-gherkin" ,ruby-gherkin)
7904 ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
7905 (synopsis "Core library for the Cucumber BDD app")
7906 (description "Cucumber is a tool for running automated tests
7907 written in plain language. Because they're written in plain language,
7908 they can be read by anyone on your team. Because they can be read by
7909 anyone, you can use them to help improve communication, collaboration
7910 and trust on your team.")
7911 (home-page "https://cucumber.io/")
7912 (license license:expat)))
7913
7914 (define-public ruby-cucumber-expressions
7915 (package
7916 (name "ruby-cucumber-expressions")
7917 (version "10.2.0")
7918 (source
7919 (origin
7920 (method git-fetch)
7921 (uri (git-reference
7922 (url "https://github.com/cucumber/cucumber-expressions-ruby")
7923 (commit (string-append "v" version))))
7924 (file-name (git-file-name name version))
7925 (sha256
7926 (base32
7927 "1aivhcpjrmbvp9bg0y7g6zxh2swfvylvg0sapq5jc4i1y74k8npd"))))
7928 (build-system ruby-build-system)
7929 (arguments
7930 '(#:test-target "spec"))
7931 (native-inputs
7932 `(("ruby-rspec" ,ruby-rspec)
7933 ("ruby-simplecov" ,ruby-simplecov)))
7934 (synopsis "Simpler alternative to Regular Expressions")
7935 (description "Cucumber Expressions offer similar functionality to Regular
7936 Expressions, with a syntax that is easier to read and write. Cucumber
7937 Expressions are extensible with parameter types.")
7938 (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
7939 (license license:expat)))
7940
7941 (define-public ruby-cucumber-wire
7942 (package
7943 (name "ruby-cucumber-wire")
7944 (version "3.1.0")
7945 (source
7946 (origin
7947 (method url-fetch)
7948 (uri (rubygems-uri "cucumber-wire" version))
7949 (sha256
7950 (base32
7951 "0z1n13lqv70zb2lcrvs2263lm0gsb3gz8gbv890kxzwp8cvd433k"))))
7952 (build-system ruby-build-system)
7953 (arguments
7954 '(#:tests? #f ;tests use cucumber, causing a cycle
7955 #:phases
7956 (modify-phases %standard-phases
7957 (add-after 'extract-gemspec 'relax-version-requirements
7958 (lambda _
7959 (substitute* ".gemspec"
7960 ((" 10\\.1") " 10.2"))
7961 #t)))))
7962 (propagated-inputs
7963 `(("ruby-cucumber-core" ,ruby-cucumber-core)
7964 ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
7965 ("ruby-cucumber-messages" ,ruby-cucumber-messages)))
7966 (synopsis "Cucumber wire protocol plugin")
7967 (description "Cucumber's wire protocol allows step definitions to be
7968 implemented and invoked on any platform.")
7969 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
7970 (license license:expat)))
7971
7972 (define-public ruby-cucumber-tag-expressions
7973 (package
7974 (name "ruby-cucumber-tag-expressions")
7975 (version "3.0.0")
7976 (source
7977 (origin
7978 (method git-fetch)
7979 (uri (git-reference
7980 (url "https://github.com/cucumber/tag-expressions-ruby")
7981 (commit (string-append "v" version))))
7982 (file-name (git-file-name name version))
7983 (sha256
7984 (base32
7985 "15dw4w0npd4m6aw7zhqkjxxzngp42kswrkwfygxkxcxnhy5zl1vx"))))
7986 (build-system ruby-build-system)
7987 (arguments
7988 `(#:test-target "spec"))
7989 (native-inputs
7990 `(("ruby-rspec" ,ruby-rspec)))
7991 (synopsis "Cucumber tag expressions for Ruby")
7992 (description "Cucumber tag expression parser for Ruby. A tag expression
7993 is an infix boolean expression used by Cucumber.")
7994 (home-page "https://github.com/cucumber/tag-expressions-ruby")
7995 (license license:expat)))
7996
7997 (define-public ruby-bindex
7998 (package
7999 (name "ruby-bindex")
8000 (version "0.5.0")
8001 (source
8002 (origin
8003 (method url-fetch)
8004 (uri (rubygems-uri "bindex" version))
8005 (sha256
8006 (base32
8007 "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
8008 (build-system ruby-build-system)
8009 (arguments
8010 '(#:test-target "default"))
8011 (native-inputs
8012 `(("bundler" ,bundler)
8013 ("ruby-rake-compiler" ,ruby-rake-compiler)))
8014 (synopsis "Provides access for bindings relating to Ruby exceptions")
8015 (description
8016 "@code{bindex} provides a way to access the bindings that relate to
8017 exceptions in Ruby, providing more information about the context in which the
8018 exception occurred.")
8019 (home-page "https://github.com/gsamokovarov/bindex")
8020 (license license:expat)))
8021
8022 (define-public ruby-bio-logger
8023 (package
8024 (name "ruby-bio-logger")
8025 (version "1.0.1")
8026 (source
8027 (origin
8028 (method url-fetch)
8029 (uri (rubygems-uri "bio-logger" version))
8030 (sha256
8031 (base32
8032 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
8033 (build-system ruby-build-system)
8034 (arguments
8035 `(#:tests? #f)) ; rake errors, missing shoulda
8036 (propagated-inputs
8037 `(("ruby-log4r" ,ruby-log4r)))
8038 (synopsis "Log4r wrapper for Ruby")
8039 (description "Bio-logger is a wrapper around Log4r adding extra logging
8040 features such as filtering and fine grained logging.")
8041 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
8042 (license license:expat)))
8043
8044 (define-public ruby-yajl-ruby
8045 (package
8046 (name "ruby-yajl-ruby")
8047 (version "1.4.1")
8048 (source
8049 (origin
8050 (method url-fetch)
8051 (uri (rubygems-uri "yajl-ruby" version))
8052 (sha256
8053 (base32
8054 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
8055 (build-system ruby-build-system)
8056 (arguments
8057 '(#:test-target "spec"
8058 #:phases
8059 (modify-phases %standard-phases
8060 (add-before 'check 'patch-test-to-update-load-path
8061 (lambda _
8062 (substitute* "spec/parsing/large_number_spec.rb"
8063 (("require \"yajl\"")
8064 "$LOAD_PATH << 'lib'; require 'yajl'"))
8065 #t)))))
8066 (native-inputs
8067 `(("ruby-rake-compiler" ,ruby-rake-compiler)
8068 ("ruby-rspec" ,ruby-rspec)))
8069 (synopsis "Streaming JSON parsing and encoding library for Ruby")
8070 (description
8071 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
8072 is compatible with the JSON gem, so yajl-ruby can act as a drop in
8073 replacement.
8074
8075 A modified copy of yajl is used, and included in the package.")
8076 (home-page "https://github.com/brianmario/yajl-ruby")
8077 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
8078 license:bsd-3)))) ; Included, modified copy of yajl
8079
8080 (define-public ruby-yard
8081 (package
8082 (name "ruby-yard")
8083 (version "0.9.25")
8084 (source
8085 (origin
8086 (method git-fetch)
8087 ;; Tests do not pass if we build from the distributed gem.
8088 (uri (git-reference
8089 (url "https://github.com/lsegal/yard")
8090 (commit (string-append "v" version))))
8091 (file-name (git-file-name name version))
8092 (sha256
8093 (base32
8094 "1x7y4s557hrnq439lih7nqg1y7ximardw75jx9i92x3yzpviqqwa"))))
8095 (build-system ruby-build-system)
8096 (arguments
8097 ;; Note: Tests are willfully disabled to alleviate dependency cycle
8098 ;; problems.
8099 `(#:tests? #f
8100 #:phases (modify-phases %standard-phases
8101 (add-after 'unpack 'do-not-set-date-in-gemspec
8102 ;; Fix a reproducibility issue (see:
8103 ;; https://github.com/lsegal/yard/issues/1343).
8104 (lambda _
8105 (substitute* "yard.gemspec"
8106 ((".*s\\.date.*") ""))
8107 #t)))))
8108 (synopsis "Documentation generation tool for Ruby")
8109 (description "YARD is a documentation generation tool for the Ruby
8110 programming language. It enables the user to generate consistent, usable
8111 documentation that can be exported to a number of formats very easily, and
8112 also supports extending for custom Ruby constructs such as custom class level
8113 definitions.")
8114 (home-page "https://yardoc.org")
8115 (license license:expat)))
8116
8117 (define-public ruby-yard-with-tests
8118 (package
8119 (inherit ruby-yard)
8120 (name "ruby-yard-with-tests")
8121 (arguments
8122 (substitute-keyword-arguments (package-arguments ruby-yard)
8123 ((#:tests? _ #t) #t)
8124 ((#:test-target _ "default") "default")
8125 ((#:phases phases '%standard-phases)
8126 `(modify-phases ,phases
8127 (add-before 'check 'prepare-for-tests
8128 (lambda* (#:key tests? #:allow-other-keys)
8129 (when tests?
8130 (substitute* "Rakefile"
8131 ((".*[Ss]amus.*") ""))
8132 ;; Delete the Gemfile to avoid errors relating to it.
8133 (delete-file "Gemfile")
8134 ;; $HOME needs to be set to somewhere writeable for tests to
8135 ;; run.
8136 (setenv "HOME" "/tmp"))
8137 #t))))))
8138 (native-inputs
8139 `(("ruby-rspec" ,ruby-rspec)
8140 ("ruby-rack" ,ruby-rack)
8141 ("ruby-redcloth" ,ruby-redcloth)
8142 ("ruby-asciidoc" ,ruby-asciidoctor)))))
8143
8144 (define-public ruby-spectroscope
8145 (package
8146 (name "ruby-spectroscope")
8147 (version "0.1.0")
8148 (source
8149 (origin
8150 (method url-fetch)
8151 (uri (rubygems-uri "spectroscope" version))
8152 (sha256
8153 (base32
8154 "0iiid9sm110qhx0i1zkds710cvsnmhd308wbqa7slkzbq2akrb3y"))))
8155 (build-system ruby-build-system)
8156 (arguments
8157 `(#:phases
8158 (modify-phases %standard-phases
8159 (replace 'check
8160 (lambda _
8161 (with-output-to-file ".test"
8162 (lambda _
8163 (display
8164 "\
8165 require 'ae/should'
8166 require 'rspec'
8167
8168 include RSpec
8169
8170 Test.run :default do |run|
8171 run.files << 'spec/*_spec.rb'
8172 end")))
8173 (invoke "ruby" "-Ilib" "-rrubytest" ".test"))))))
8174 (native-inputs
8175 `(("ruby-ae" ,ruby-ae)
8176 ("ruby-rspec" ,ruby-rspec)))
8177 (propagated-inputs
8178 `(("ruby-rubytest" ,ruby-rubytest)))
8179 (synopsis "Behavior-Driven Development (BDD) framework built on RubyTest")
8180 (description "Spectroscope is a Behavior-Driven Development (BDD)
8181 framework built on RubyTest, designed to emulate RSpec in most respects. It
8182 is assertion framework independent so any number of assertion systems can be
8183 used, such as Assay or AE.")
8184 (home-page "http://rubyworks.github.com/spectroscope/")
8185 (license license:bsd-2)))
8186
8187 (define-public ruby-tomparse
8188 (package
8189 (name "ruby-tomparse")
8190 (version "0.4.2")
8191 (source
8192 (origin
8193 (method url-fetch)
8194 (uri (rubygems-uri "tomparse" version))
8195 (sha256
8196 (base32
8197 "06xakk41f1kgj6j1ahkwn4r6cvidixvm4phhlrvmwb7c3pr8ygc8"))))
8198 (build-system ruby-build-system)
8199 ;; TODO: Tests require citron and rulebow, not yet packaged.
8200 (arguments '(#:tests? #f))
8201 (synopsis "TomDoc parser for Ruby")
8202 (description "TomParse is a TomDoc parser for Ruby. It takes a code
8203 comment as input and parses it into a convenient object-oriented structure in
8204 accordance with the TomDoc standard. See
8205 @url{https://github.com/mojombo/tomdoc, TomDoc} for more information about the
8206 TomDoc format.")
8207 (home-page "http://rubyworks.github.com/tomparse/")
8208 (license license:bsd-2)))
8209
8210 (define-public ruby-yard-tomdoc
8211 (package
8212 (name "ruby-yard-tomdoc")
8213 (version "0.7.1")
8214 (source
8215 (origin
8216 (method url-fetch)
8217 (uri (rubygems-uri "yard-tomdoc" version))
8218 (sha256
8219 (base32
8220 "1725gs8b8klpwhrvnf2wwp7dw3zxs9vz2la983l2d8c4r4fn1j2z"))))
8221 (build-system ruby-build-system)
8222 (arguments
8223 `(#:phases (modify-phases %standard-phases
8224 (replace 'check
8225 (lambda _
8226 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
8227 (native-inputs
8228 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
8229 ("ruby-spectroscope" ,ruby-spectroscope)
8230 ("ruby-ae" ,ruby-ae)))
8231 (propagated-inputs
8232 `(("ruby-tomparse" ,ruby-tomparse)
8233 ("ruby-yard" ,ruby-yard)))
8234 (synopsis "TomDoc syntax for YARD")
8235 (description "This module adds support for the TomDoc documentation format
8236 to YARD, a documentation generation tool for Ruby.")
8237 (home-page "http://rubyworks.github.com/yard-tomdoc/")
8238 (license license:expat)))
8239
8240 (define-public ruby-clap
8241 (package
8242 (name "ruby-clap")
8243 (version "1.0.0")
8244 (source (origin
8245 (method url-fetch)
8246 (uri (rubygems-uri "clap" version))
8247 (sha256
8248 (base32
8249 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
8250 (build-system ruby-build-system)
8251 ;; Clap needs cutest for running tests, but cutest needs clap.
8252 (arguments `(#:tests? #f))
8253 (synopsis "Command line argument parsing for simple applications")
8254 (description
8255 "Clap provides command line argument parsing features. It covers the
8256 simple case of executing code based on the flags or parameters passed.")
8257 (home-page "https://github.com/djanowski/cutest")
8258 (license license:expat)))
8259
8260 (define-public ruby-cutest
8261 (package
8262 (name "ruby-cutest")
8263 (version "1.2.2")
8264 (source (origin
8265 (method url-fetch)
8266 (uri (rubygems-uri "cutest" version))
8267 (sha256
8268 (base32
8269 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
8270 (build-system ruby-build-system)
8271 (propagated-inputs
8272 `(("ruby-clap" ,ruby-clap)))
8273 (synopsis "Run tests in separate processes")
8274 (description
8275 "Cutest runs tests in separate processes to avoid shared state.")
8276 (home-page "https://github.com/djanowski/cutest")
8277 (license license:expat)))
8278
8279 (define-public ruby-pygmentize
8280 (package
8281 (name "ruby-pygmentize")
8282 (version "0.0.3")
8283 (source (origin
8284 (method url-fetch)
8285 (uri (rubygems-uri "pygmentize" version))
8286 (sha256
8287 (base32
8288 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
8289 (build-system ruby-build-system)
8290 (arguments
8291 `(#:phases
8292 (modify-phases %standard-phases
8293 (add-after 'unpack 'fix-pygmentize-path
8294 (lambda _
8295 (substitute* "lib/pygmentize.rb"
8296 (("\"/usr/bin/env python.*")
8297 (string-append "\"" (which "pygmentize") "\"\n")))
8298 #t))
8299 (add-after 'build 'do-not-use-vendor-directory
8300 (lambda _
8301 ;; Remove bundled pygments sources
8302 ;; FIXME: ruby-build-system does not support snippets.
8303 (delete-file-recursively "vendor")
8304 (substitute* "pygmentize.gemspec"
8305 (("\"vendor/\\*\\*/\\*\",") ""))
8306 #t)))))
8307 (inputs
8308 `(("pygments" ,python-pygments)))
8309 (native-inputs
8310 `(("ruby-cutest" ,ruby-cutest)
8311 ("ruby-nokogiri" ,ruby-nokogiri)))
8312 (synopsis "Thin Ruby wrapper around pygmentize")
8313 (description
8314 "Pygmentize provides a simple way to call pygmentize from within a Ruby
8315 application.")
8316 (home-page "https://github.com/djanowski/pygmentize")
8317 (license license:expat)))
8318
8319 (define-public ruby-eventmachine
8320 (package
8321 (name "ruby-eventmachine")
8322 (version "1.2.7")
8323 (source
8324 (origin
8325 (method url-fetch)
8326 (uri (rubygems-uri "eventmachine" version))
8327 (sha256
8328 (base32
8329 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
8330 (build-system ruby-build-system)
8331 (arguments
8332 '(#:tests? #f)) ; test suite tries to connect to google.com
8333 (native-inputs
8334 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
8335 (synopsis "Single-threaded network event framework for Ruby")
8336 (description
8337 "EventMachine implements a single-threaded engine for arbitrary network
8338 communications. EventMachine wraps all interactions with sockets, allowing
8339 programs to concentrate on the implementation of network protocols. It can be
8340 used to create both network servers and clients.")
8341 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
8342 (home-page "https://github.com/eventmachine/eventmachine")
8343 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
8344
8345 (define-public ruby-ruby-engine
8346 (package
8347 (name "ruby-ruby-engine")
8348 (version "2.0.0")
8349 (source
8350 (origin
8351 (method url-fetch)
8352 (uri (rubygems-uri "ruby_engine" version))
8353 (sha256
8354 (base32
8355 "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm"))))
8356 (build-system ruby-build-system)
8357 (arguments
8358 `(#:phases
8359 (modify-phases %standard-phases
8360 (add-after 'extract-gemspec 'clean-up
8361 (lambda _
8362 (delete-file "Gemfile.lock")
8363 (substitute* "ruby_engine.gemspec"
8364 ;; Remove unnecessary imports that would entail further
8365 ;; dependencies.
8366 ((".*<rdoc.*") "")
8367 ((".*<rubygems-tasks.*") "")
8368 ;; Remove extraneous .gem file
8369 (("\"pkg/ruby_engine-[0-9.]+\\.gem\".freeze, ") "")
8370 (("\"Gemfile.lock\".freeze, ") "")
8371 ;; Soften rake dependency
8372 (("%q<rake>.freeze, \\[\"~> 10.0\"\\]")
8373 "%q<rake>.freeze, [\">= 10.0\"]")
8374 ;; Soften the rspec dependency
8375 (("%q<rspec>.freeze, \\[\"~> 2.4\"\\]")
8376 "%q<rspec>.freeze, [\">= 2.4\"]"))
8377 (substitute* "Rakefile"
8378 (("require 'rubygems/tasks'") "")
8379 (("Gem::Tasks.new") ""))
8380 ;; Remove extraneous .gem file that otherwise gets installed.
8381 (delete-file-recursively "pkg")
8382 #t)))))
8383 (native-inputs
8384 `(("bundler" ,bundler)
8385 ("ruby-rake" ,ruby-rake)
8386 ("ruby-rspec" ,ruby-rspec)))
8387 (synopsis "Simplifies checking for Ruby implementation")
8388 (description
8389 "@code{ruby_engine} provides an RubyEngine class that can be used to
8390 check which implementation of Ruby is in use. It can provide the interpreter
8391 name and provides query methods such as @{RubyEngine.mri?}.")
8392 (home-page "https://github.com/janlelis/ruby_engine")
8393 (license license:expat)))
8394
8395 (define-public ruby-turn
8396 (package
8397 (name "ruby-turn")
8398 (version "0.9.7")
8399 (source
8400 (origin
8401 (method url-fetch)
8402 (uri (rubygems-uri "turn" version))
8403 (sha256
8404 (base32
8405 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
8406 (build-system ruby-build-system)
8407 (arguments
8408 `(#:phases
8409 (modify-phases %standard-phases
8410 ;; Tests fail because turn changes its environment so can no longer
8411 ;; find test/unit. Instead simply test if the executable runs
8412 ;; without issue.
8413 (replace 'check
8414 (lambda _
8415 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
8416 (propagated-inputs
8417 `(("ruby-ansi" ,ruby-ansi)
8418 ("ruby-minitest" ,ruby-minitest-4)))
8419 (synopsis "Alternate set of alternative runners for MiniTest")
8420 (description
8421 "TURN provides a set of alternative runners for MiniTest which are both
8422 colorful and informative. TURN displays each test on a separate line with
8423 failures being displayed immediately instead of at the end of the tests. Note
8424 that TURN is no longer being maintained.")
8425 (home-page "https://rubygems.org/gems/turn")
8426 (license license:expat)))
8427
8428 (define-public ruby-mimemagic
8429 (package
8430 (name "ruby-mimemagic")
8431 (version "0.3.3")
8432 (source
8433 (origin
8434 (method url-fetch)
8435 (uri (rubygems-uri "mimemagic" version))
8436 (sha256
8437 (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw"))))
8438 (build-system ruby-build-system)
8439 (arguments
8440 '(#:phases
8441 (modify-phases %standard-phases
8442 ;; This phase breaks the tests, as it patches some of the test data.
8443 (delete 'patch-source-shebangs))))
8444 (native-inputs
8445 `(("ruby-bacon" ,ruby-bacon)))
8446 (synopsis "Ruby library for MIME detection by extension or content")
8447 (description
8448 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
8449 extension or content, using the freedesktop.org.xml shared-mime-info
8450 database.")
8451 (home-page "https://github.com/minad/mimemagic")
8452 (license license:expat)))
8453
8454 (define-public ruby-mime-types-data
8455 (package
8456 (name "ruby-mime-types-data")
8457 (version "3.2016.0521")
8458 (source
8459 (origin
8460 (method url-fetch)
8461 (uri (rubygems-uri "mime-types-data" version))
8462 (sha256
8463 (base32
8464 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
8465 (build-system ruby-build-system)
8466 (native-inputs
8467 `(("ruby-hoe" ,ruby-hoe)))
8468 (synopsis "Registry for information about MIME media type definitions")
8469 (description
8470 "@code{mime-types-data} provides a registry for information about
8471 Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
8472 be used with the Ruby mime-types library or other software to determine
8473 defined filename extensions for MIME types, or to use filename extensions to
8474 look up the likely MIME type definitions.")
8475 (home-page "https://github.com/mime-types/mime-types-data/")
8476 (license license:expat)))
8477
8478 (define-public ruby-mime-types
8479 (package
8480 (name "ruby-mime-types")
8481 (version "3.1")
8482 (source
8483 (origin
8484 (method url-fetch)
8485 (uri (rubygems-uri "mime-types" version))
8486 (sha256
8487 (base32
8488 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
8489 (build-system ruby-build-system)
8490 (propagated-inputs
8491 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
8492 (native-inputs
8493 `(("ruby-hoe" ,ruby-hoe)
8494 ("ruby-fivemat" ,ruby-fivemat)
8495 ("ruby-minitest-focus" ,ruby-minitest-focus)
8496 ("ruby-minitest-rg" ,ruby-minitest-rg)
8497 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
8498 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
8499 (synopsis "Library and registry for MIME content type definitions")
8500 (description "The mime-types library provides a library and registry for
8501 information about Multipurpose Internet Mail Extensions (MIME) content type
8502 definitions. It can be used to determine defined filename extensions for MIME
8503 types, or to use filename extensions to look up the likely MIME type
8504 definitions.")
8505 (home-page "https://github.com/mime-types/ruby-mime-types")
8506 (license license:expat)))
8507
8508 (define-public ruby-fivemat
8509 (package
8510 (name "ruby-fivemat")
8511 (version "1.3.7")
8512 (source
8513 (origin
8514 (method url-fetch)
8515 (uri (rubygems-uri "fivemat" version))
8516 (sha256
8517 (base32
8518 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
8519 (build-system ruby-build-system)
8520 (arguments
8521 `(#:tests? #f)) ; no tests
8522 (synopsis "Each test file given its own line of dots")
8523 (description
8524 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
8525 its own line of dots during testing. It aims to provide test output that is
8526 neither too verbose nor too minimal.")
8527 (home-page "https://github.com/tpope/fivemat")
8528 (license license:expat)))
8529
8530 (define-public ruby-sqlite3
8531 (package
8532 (name "ruby-sqlite3")
8533 (version "1.4.2")
8534 (source
8535 (origin
8536 (method url-fetch)
8537 (uri (rubygems-uri "sqlite3" version))
8538 (sha256
8539 (base32
8540 "0lja01cp9xd5m6vmx99zwn4r7s97r1w5cb76gqd8xhbm1wxyzf78"))))
8541 (build-system ruby-build-system)
8542 (arguments
8543 `(#:phases
8544 (modify-phases %standard-phases
8545 (add-before 'check 'add-gemtest-file
8546 ;; This file exists in the repository but is not distributed.
8547 (lambda _ (invoke "touch" ".gemtest"))))))
8548 (inputs
8549 `(("sqlite" ,sqlite)))
8550 (native-inputs
8551 `(("ruby-hoe" ,ruby-hoe)
8552 ("ruby-rake-compiler" ,ruby-rake-compiler)
8553 ("ruby-mini-portile" ,ruby-mini-portile)))
8554 (synopsis "Interface with SQLite3 databases")
8555 (description
8556 "This module allows Ruby programs to interface with the SQLite3 database
8557 engine.")
8558 (home-page
8559 "https://github.com/sparklemotion/sqlite3-ruby")
8560 (license license:bsd-3)))
8561
8562 (define-public ruby-shoulda-context
8563 (package
8564 (name "ruby-shoulda-context")
8565 (version "1.2.2")
8566 (source
8567 (origin
8568 (method url-fetch)
8569 (uri (rubygems-uri "shoulda-context" version))
8570 (sha256
8571 (base32
8572 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
8573 (build-system ruby-build-system)
8574 (arguments
8575 `(#:phases
8576 (modify-phases %standard-phases
8577 (replace 'check
8578 (lambda _
8579 ;; Do not run tests to avoid circular dependence with rails.
8580 ;; Instead just import the library to test.
8581 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
8582 (synopsis "Test::Unit context framework extracted from Shoulda")
8583 (description
8584 "@code{shoulda-context} is the context framework extracted from Shoulda.
8585 Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
8586 context, setup, and should blocks combine to produce natural test method
8587 names.")
8588 (home-page "https://github.com/thoughtbot/shoulda-context")
8589 (license license:expat)))
8590
8591 (define-public ruby-shoulda-matchers
8592 (package
8593 (name "ruby-shoulda-matchers")
8594 (version "3.1.2")
8595 (source
8596 (origin
8597 (method url-fetch)
8598 (uri (rubygems-uri "shoulda-matchers" version))
8599 (sha256
8600 (base32
8601 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
8602 (build-system ruby-build-system)
8603 (arguments
8604 `(#:phases
8605 (modify-phases %standard-phases
8606 (replace 'check
8607 (lambda _
8608 ;; Do not run tests to avoid circular dependence with rails. Instead
8609 ;; just import the library to test.
8610 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
8611 (propagated-inputs
8612 `(("ruby-activesupport" ,ruby-activesupport)))
8613 (synopsis "Collection of testing matchers extracted from Shoulda")
8614 (description
8615 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
8616 test common Rails functionality. These tests would otherwise be much longer,
8617 more complex, and error-prone.")
8618 (home-page "https://github.com/thoughtbot/shoulda-matchers")
8619 (license license:expat)))
8620
8621 (define-public ruby-shoulda-matchers-2
8622 (package
8623 (inherit ruby-shoulda-matchers)
8624 (version "2.8.0")
8625 (source (origin
8626 (method url-fetch)
8627 (uri (rubygems-uri "shoulda-matchers" version))
8628 (sha256
8629 (base32
8630 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
8631
8632 (define-public ruby-shoulda
8633 (package
8634 (name "ruby-shoulda")
8635 (version "3.5.0")
8636 (source
8637 (origin
8638 (method url-fetch)
8639 (uri (rubygems-uri "shoulda" version))
8640 (sha256
8641 (base32
8642 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
8643 (build-system ruby-build-system)
8644 (arguments
8645 `(#:phases
8646 (modify-phases %standard-phases
8647 (replace 'check
8648 ;; Don't run tests to avoid circular dependence with rails. Instead
8649 ;; just import the library to test.
8650 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
8651 (propagated-inputs
8652 `(("ruby-shoulda-context" ,ruby-shoulda-context)
8653 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
8654 (synopsis "Context framework and matchers for testing")
8655 (description
8656 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
8657 @code{shoulda-matchers} providing tools for writing tests.")
8658 (home-page "https://github.com/thoughtbot/shoulda")
8659 (license license:expat)))
8660
8661 (define-public ruby-unf
8662 (package
8663 (name "ruby-unf")
8664 (version "0.1.4")
8665 (source
8666 (origin
8667 (method url-fetch)
8668 (uri (rubygems-uri "unf" version))
8669 (sha256
8670 (base32
8671 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
8672 (build-system ruby-build-system)
8673 (arguments
8674 `(#:phases
8675 (modify-phases %standard-phases
8676 (add-before 'check 'add-dependency-to-bundler
8677 (lambda _
8678 ;; test-unit is required but not provided by the bundler
8679 ;; environment. This is fixed in the upstream repository but fix
8680 ;; has not been released.
8681 (substitute* "Gemfile"
8682 (("^gemspec") "gem 'test-unit'\ngemspec"))
8683 #t)))))
8684 (propagated-inputs
8685 `(("ruby-unf-ext" ,ruby-unf-ext)))
8686 (native-inputs
8687 `(("ruby-shoulda" ,ruby-shoulda)
8688 ("bundler" ,bundler)
8689 ("ruby-test-unit" ,ruby-test-unit)))
8690 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
8691 (description
8692 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
8693 support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
8694 @code{java.text.Normalizer} on JRuby.")
8695 (home-page "https://github.com/knu/ruby-unf")
8696 (license license:bsd-2)))
8697
8698 (define-public ruby-warden
8699 (package
8700 (name "ruby-warden")
8701 (version "1.2.8")
8702 (source
8703 (origin
8704 (method url-fetch)
8705 (uri (rubygems-uri "warden" version))
8706 (sha256
8707 (base32
8708 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
8709 (build-system ruby-build-system)
8710 (arguments
8711 '(#:tests? #f)) ; No included tests
8712 (propagated-inputs
8713 `(("ruby-rack" ,ruby-rack)))
8714 (synopsis "Rack middleware providing authentication")
8715 (description
8716 "Warden is a Rack-based middleware that provides a mechanism for
8717 authentication in Ruby web applications.")
8718 (home-page "https://github.com/wardencommunity/warden")
8719 (license license:expat)))
8720
8721 (define-public ruby-warden-oauth2
8722 (package
8723 (name "ruby-warden-oauth2")
8724 (version "0.0.1")
8725 (source
8726 (origin
8727 (method url-fetch)
8728 (uri (rubygems-uri "warden-oauth2" version))
8729 (sha256
8730 (base32
8731 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
8732 (build-system ruby-build-system)
8733 (arguments
8734 '(#:test-target "spec"
8735 #:phases
8736 (modify-phases %standard-phases
8737 (add-after 'unpack 'remove-unnecessary-dependencies
8738 (lambda _
8739 (substitute* "Gemfile"
8740 ;; All of these gems relate to development, and are unnecessary
8741 ;; when running the tests
8742 (("gem 'guard-bundler'") "")
8743 (("gem 'guard'") "")
8744 (("gem 'guard-rspec'") "")
8745 (("gem 'rb-fsevent'") "")
8746 (("gem 'pry'") "")
8747 (("gem 'growl'") ""))
8748 #t))
8749 ;; The test suite doesn't work with rspec@2, and this is incompatible
8750 ;; with the current version of Rake, so invoke Rspec directly
8751 (replace 'check
8752 (lambda* (#:key tests? #:allow-other-keys)
8753 (when tests?
8754 (invoke "bundle" "exec" "rspec"))
8755 #t)))))
8756 (propagated-inputs
8757 `(("ruby-warden" ,ruby-warden)))
8758 (native-inputs
8759 `(("bundler" ,bundler)
8760 ("ruby-rspec" ,ruby-rspec-2)
8761 ("ruby-rack-test" ,ruby-rack-test)))
8762 (synopsis "OAuth 2.0 strategies for Warden")
8763 (description
8764 "This library extends Warden to support OAuth 2.0 authorized API
8765 requests.")
8766 (home-page "https://github.com/opperator/warden-oauth2")
8767 (license license:expat)))
8768
8769 (define-public ruby-webmock-2
8770 (package
8771 (name "ruby-webmock")
8772 (version "2.3.2")
8773 (source
8774 (origin
8775 (method url-fetch)
8776 (uri (rubygems-uri "webmock" version))
8777 (sha256
8778 (base32
8779 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))
8780 (build-system ruby-build-system)
8781 (native-inputs
8782 `(("bundler" ,bundler)
8783 ("ruby-rspec" ,ruby-rspec)))
8784 (propagated-inputs
8785 `(("ruby-addressable" ,ruby-addressable)
8786 ("ruby-crack" ,ruby-crack)
8787 ("ruby-hashdiff" ,ruby-hashdiff)))
8788 (synopsis "Allows stubbing and setting expectations on HTTP requests")
8789 (description
8790 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
8791 requests. This is useful when testing software.")
8792 (home-page "https://github.com/bblimke/webmock")
8793 (license license:expat)))
8794
8795 (define-public ruby-unicode-display-width
8796 (package
8797 (name "ruby-unicode-display-width")
8798 (version "1.6.0")
8799 (source
8800 (origin
8801 (method url-fetch)
8802 (uri (rubygems-uri "unicode-display_width" version))
8803 (sha256
8804 (base32
8805 "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w"))))
8806 (build-system ruby-build-system)
8807 (arguments
8808 '(;; Test data not included.
8809 #:tests? #f))
8810 (synopsis "Determine the monospace display width of Ruby strings")
8811 (description
8812 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
8813 display width of strings in Ruby.")
8814 (home-page "https://github.com/janlelis/unicode-display_width")
8815 (license license:expat)))
8816
8817 ;; There is another gem called 'ruby-version' so we use an underscore in this
8818 ;; name
8819 (define-public ruby_version
8820 (package
8821 (name "ruby_version")
8822 (version "1.0.2")
8823 (source
8824 (origin
8825 (method url-fetch)
8826 (uri (rubygems-uri "ruby_version" version))
8827 (sha256
8828 (base32
8829 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
8830 (build-system ruby-build-system)
8831 (arguments
8832 `(#:phases
8833 (modify-phases %standard-phases
8834 (add-before 'check 'fix-dependencies
8835 (lambda _
8836 ;; Remove the Gemfile.lock, as we want to use Guix packages at
8837 ;; whatever versions.
8838 (delete-file "Gemfile.lock")
8839 ;; Remove the included gem files as they unnecessary.
8840 (delete-file-recursively "pkg/")
8841 ;; Accept any version of rake, rdoc and rspec
8842 (substitute* "ruby_version.gemspec"
8843 (("%q<rake.*") "%q<rake>)\n")
8844 (("%q<rdoc.*") "%q<rdoc>)\n")
8845 (("%q<rspec.*") "%q<rspec>)\n"))
8846 ;; Do not use bundler.
8847 (substitute* "Rakefile"
8848 (("Bundler\\.setup.*") "nil\n"))
8849 #t)))))
8850 (native-inputs
8851 `(("ruby-rdoc" ,ruby-rdoc)
8852 ("ruby-rspec" ,ruby-rspec)
8853 ("ruby-rubygems-tasks", ruby-rubygems-tasks)))
8854 (synopsis "Ruby library to help check the Ruby version")
8855 (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify
8856 checking for the right Ruby version in software.")
8857 (home-page "https://github.com/janlelis/ruby_version")
8858 (license license:expat)))
8859
8860 (define-public ruby-websocket-driver
8861 (package
8862 (name "ruby-websocket-driver")
8863 (version "0.7.1")
8864 (source
8865 (origin
8866 (method url-fetch)
8867 (uri (rubygems-uri "websocket-driver" version))
8868 (sha256
8869 (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2"))))
8870 (build-system ruby-build-system)
8871 (arguments
8872 '(#:tests? #f)) ; no included tests
8873 (propagated-inputs
8874 `(("ruby-websocket-extensions" ,ruby-websocket-extensions)))
8875 (synopsis "WebSocket protocol handler with pluggable I/O")
8876 (description
8877 "@code{websocket-driver} provides a complete implementation of the
8878 WebSocket protocols that can be hooked up to any TCP library")
8879 (home-page "https://github.com/faye/websocket-driver-ruby")
8880 (license license:expat)))
8881
8882 (define-public ruby-websocket-extensions
8883 (package
8884 (name "ruby-websocket-extensions")
8885 (version "0.1.3")
8886 (source
8887 (origin
8888 (method url-fetch)
8889 (uri (rubygems-uri "websocket-extensions" version))
8890 (sha256
8891 (base32
8892 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
8893 (build-system ruby-build-system)
8894 (arguments
8895 '(;; No included tests
8896 #:tests? #f))
8897 (synopsis "Generic extension manager for WebSocket connections")
8898 (description
8899 "@code{websocket-extensions} provides a container for registering
8900 extension plugins.")
8901 (home-page "https://github.com/faye/websocket-extensions-ruby")
8902 (license license:expat)))
8903
8904 (define-public ruby-domain-name
8905 (package
8906 (name "ruby-domain-name")
8907 (version "0.5.20180417")
8908 (source
8909 (origin
8910 (method url-fetch)
8911 (uri (rubygems-uri "domain_name" version))
8912 (sha256
8913 (base32
8914 "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v"))))
8915 (build-system ruby-build-system)
8916 (arguments
8917 `(#:phases
8918 (modify-phases %standard-phases
8919 (add-before 'check 'fix-versions
8920 (lambda _
8921 ;; Fix NameError that appears to already be fixed upstream.
8922 (substitute* "Rakefile"
8923 (("DomainName::VERSION")
8924 "Bundler::GemHelper.gemspec.version"))
8925 ;; Loosen unnecessarily strict test-unit version specification.
8926 (substitute* "domain_name.gemspec"
8927 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
8928 #t)))))
8929 (propagated-inputs
8930 `(("ruby-unf" ,ruby-unf)))
8931 (native-inputs
8932 `(("ruby-shoulda" ,ruby-shoulda)
8933 ("bundler" ,bundler)
8934 ("ruby-test-unit" ,ruby-test-unit)))
8935 (synopsis "Domain name manipulation library")
8936 (description
8937 "@code{domain_name} is a Domain name manipulation library. It parses a
8938 domain name ready for extracting the registered domain and TLD (Top Level
8939 Domain). It can also be used for cookie domain validation based on the Public
8940 Suffix List.")
8941 (home-page "https://github.com/knu/ruby-domain_name")
8942 (license license:bsd-2)))
8943
8944 (define-public ruby-http-cookie
8945 (package
8946 (name "ruby-http-cookie")
8947 (version "1.0.3")
8948 (source
8949 (origin
8950 (method url-fetch)
8951 (uri (rubygems-uri "http-cookie" version))
8952 (sha256
8953 (base32
8954 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
8955 (build-system ruby-build-system)
8956 (arguments
8957 `(#:phases
8958 (modify-phases %standard-phases
8959 (add-before 'check 'add-dependency-to-bundler
8960 (lambda _
8961 ;; Fix NameError
8962 (substitute* "Rakefile"
8963 (("HTTP::Cookie::VERSION")
8964 "Bundler::GemHelper.gemspec.version"))
8965 #t)))))
8966 (propagated-inputs
8967 `(("ruby-domain-name" ,ruby-domain-name)))
8968 (native-inputs
8969 `(("rubysimplecov" ,ruby-simplecov)
8970 ("bundler" ,bundler)
8971 ("ruby-sqlite3" ,ruby-sqlite3)
8972 ("ruby-test-unit" ,ruby-test-unit)))
8973 (synopsis "Handle HTTP Cookies based on RFC 6265")
8974 (description
8975 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
8976 RFC 6265. It has been designed with security, standards compliance and
8977 compatibility in mind, to behave just the same as today's major web browsers.
8978 It has built-in support for the legacy @code{cookies.txt} and
8979 @code{cookies.sqlite} formats of Mozilla Firefox.")
8980 (home-page "https://github.com/sparklemotion/http-cookie")
8981 (license license:expat)))
8982
8983 (define-public ruby-httpclient
8984 (package
8985 (name "ruby-httpclient")
8986 (version "2.8.3")
8987 (source
8988 (origin
8989 (method url-fetch)
8990 (uri (rubygems-uri "httpclient" version))
8991 (sha256
8992 (base32
8993 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
8994 (build-system ruby-build-system)
8995 (arguments
8996 '(;; TODO: Some tests currently fail
8997 ;; ------
8998 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
8999 ;; 2 omissions, 0 notifications
9000 ;; 91.866% passed
9001 ;; ------
9002 ;; 6.49 tests/s, 22.41 assertions/s
9003 #:tests? #f
9004 #:phases
9005 (modify-phases %standard-phases
9006 (replace 'check
9007 (lambda* (#:key tests? #:allow-other-keys)
9008 (if tests?
9009 (invoke "ruby"
9010 "-Ilib"
9011 "test/runner.rb")
9012 #t))))))
9013 (native-inputs
9014 `(("ruby-rack" ,ruby-rack)))
9015 (synopsis
9016 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
9017 (description
9018 "The @code{httpclient} ruby library provides functionality related to
9019 HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
9020 Cookie, multithreading and authentication (digest, NTLM) support.
9021
9022 Also provided is a @command{httpclient} command, which can perform HTTP
9023 requests either using arguments or with an interactive prompt.")
9024 (home-page "https://github.com/nahi/httpclient")
9025 (license license:ruby)))
9026
9027 (define-public ruby-ansi
9028 (package
9029 (name "ruby-ansi")
9030 (version "1.5.0")
9031 (source
9032 (origin
9033 (method git-fetch)
9034 ;; Fetch from GitHub as the gem does not contain testing code.
9035 (uri (git-reference
9036 (url "https://github.com/rubyworks/ansi")
9037 (commit version)))
9038 (file-name (git-file-name name version))
9039 (sha256
9040 (base32
9041 "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5"))))
9042 (build-system ruby-build-system)
9043 (arguments
9044 `(#:phases
9045 (modify-phases %standard-phases
9046 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
9047 ;; cycle ansi, qed, ansi. Instead simply test that the library can
9048 ;; be require'd.
9049 (replace 'check
9050 (lambda _
9051 (invoke "ruby" "-Ilib" "-r" "ansi")))
9052 (add-before 'validate-runpath 'replace-broken-symlink
9053 (lambda* (#:key outputs #:allow-other-keys)
9054 (let* ((out (assoc-ref outputs "out"))
9055 (file (string-append
9056 out "/lib/ruby/vendor_ruby/gems/ansi-"
9057 ,version "/lib/ansi.yml")))
9058 ;; XXX: This symlink is broken since ruby 2.4.
9059 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
9060 (delete-file file)
9061 (symlink "../.index" file)
9062 #t))))))
9063 (synopsis "ANSI escape code related libraries")
9064 (description
9065 "This package is a collection of ANSI escape code related libraries
9066 enabling ANSI colorization and stylization of console output. Included in the
9067 library are the @code{Code} module, which defines ANSI codes as constants and
9068 methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
9069 @code{ProgressBar}, and a @code{String} subclass. The library also includes a
9070 @code{Terminal} module which provides information about the current output
9071 device.")
9072 (home-page "https://rubyworks.github.io/ansi/")
9073 (license license:bsd-2)))
9074
9075 (define-public ruby-systemu
9076 (package
9077 (name "ruby-systemu")
9078 (version "2.6.5")
9079 (source
9080 (origin
9081 (method url-fetch)
9082 (uri (rubygems-uri "systemu" version))
9083 (sha256
9084 (base32
9085 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
9086 (build-system ruby-build-system)
9087 (arguments
9088 `(#:phases
9089 (modify-phases %standard-phases
9090 (add-before 'check 'set-version
9091 (lambda _
9092 (setenv "VERSION" ,version)
9093 #t)))))
9094 (synopsis "Capture of stdout/stderr and handling of child processes")
9095 (description
9096 "Systemu can be used on any platform to return status, stdout, and stderr
9097 of any command. Unlike other methods like @code{open3} and @code{popen4}
9098 there is no danger of full pipes or threading issues hanging your process or
9099 subprocess.")
9100 (home-page "https://github.com/ahoward/systemu")
9101 (license license:ruby)))
9102
9103 (define-public ruby-bio-commandeer
9104 (package
9105 (name "ruby-bio-commandeer")
9106 (version "0.4.0")
9107 (source
9108 (origin
9109 (method url-fetch)
9110 (uri (rubygems-uri "bio-commandeer" version))
9111 (sha256
9112 (base32
9113 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
9114 (build-system ruby-build-system)
9115 (arguments
9116 `(#:phases
9117 (modify-phases %standard-phases
9118 (replace 'check
9119 ;; Run test without calling 'rake' so that jeweler is
9120 ;; not required as an input.
9121 (lambda _
9122 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
9123 (propagated-inputs
9124 `(("ruby-bio-logger" ,ruby-bio-logger)
9125 ("ruby-systemu" ,ruby-systemu)))
9126 (native-inputs
9127 `(("bundler" ,bundler)
9128 ("ruby-rspec" ,ruby-rspec)))
9129 (synopsis "Simplified running of shell commands from within Ruby")
9130 (description
9131 "Bio-commandeer provides an opinionated method of running shell commands
9132 from within Ruby. The advantage of bio-commandeer over other methods of
9133 running external commands is that when something goes wrong, messages printed
9134 to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
9135 detail to ease debugging.")
9136 (home-page "https://github.com/wwood/bioruby-commandeer")
9137 (license license:expat)))
9138
9139 (define-public ruby-rubytest
9140 (package
9141 (name "ruby-rubytest")
9142 (version "0.8.1")
9143 (source
9144 (origin
9145 (method url-fetch)
9146 (uri (rubygems-uri "rubytest" version))
9147 (sha256
9148 (base32
9149 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
9150 (build-system ruby-build-system)
9151 (arguments
9152 ;; Disable regular testing to break the cycle rubytest, qed, brass,
9153 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
9154 ;; simply test that the library can be require'd.
9155 `(#:phases
9156 (modify-phases %standard-phases
9157 (replace 'check
9158 (lambda _
9159 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
9160 (propagated-inputs
9161 `(("ruby-ansi" ,ruby-ansi)))
9162 (synopsis "Universal test harness for Ruby")
9163 (description
9164 "Rubytest is a testing meta-framework for Ruby. It can handle any
9165 compliant test framework and can run tests from multiple frameworks in a
9166 single pass.")
9167 (home-page "https://rubyworks.github.io/rubytest")
9168 (license license:bsd-2)))
9169
9170 (define-public ruby-brass
9171 (package
9172 (name "ruby-brass")
9173 (version "1.2.1")
9174 (source
9175 (origin
9176 (method url-fetch)
9177 (uri (rubygems-uri "brass" version))
9178 (sha256
9179 (base32
9180 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
9181 (build-system ruby-build-system)
9182 (arguments
9183 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
9184 ;; Instead simply test that the library can be require'd.
9185 `(#:phases
9186 (modify-phases %standard-phases
9187 (replace 'check
9188 (lambda _
9189 (invoke "ruby" "-Ilib" "-r" "brass"))))))
9190 (synopsis "Basic foundational assertions framework")
9191 (description
9192 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
9193 foundational assertions framework for other assertion and test frameworks to
9194 make use of.")
9195 (home-page "https://rubyworks.github.io/brass")
9196 (license license:bsd-2)))
9197
9198 (define-public ruby-qed
9199 (package
9200 (name "ruby-qed")
9201 (version "2.9.2")
9202 (source
9203 (origin
9204 (method url-fetch)
9205 (uri (rubygems-uri "qed" version))
9206 (sha256
9207 (base32
9208 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
9209 (build-system ruby-build-system)
9210 (arguments
9211 ;; Disable testing to break the cycle qed, ansi, qed, among others.
9212 ;; Instead simply test that the executable runs using --copyright.
9213 `(#:phases
9214 (modify-phases %standard-phases
9215 (replace 'check
9216 (lambda _
9217 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
9218 (propagated-inputs
9219 `(("ruby-ansi" ,ruby-ansi)
9220 ("ruby-brass" ,ruby-brass)))
9221 (synopsis "Test framework utilizing literate programming techniques")
9222 (description
9223 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
9224 @dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
9225 Development} (BDD) utilizing Literate Programming techniques. QED sits
9226 somewhere between lower-level testing tools like @code{Test::Unit} and
9227 requirement specifications systems like Cucumber.")
9228 (home-page "https://rubyworks.github.io/qed")
9229 (license license:bsd-2)))
9230
9231 (define-public ruby-que
9232 (package
9233 (name "ruby-que")
9234 (version "1.0.0.beta3")
9235 (source
9236 (origin
9237 (method url-fetch)
9238 (uri (rubygems-uri "que" version))
9239 (sha256
9240 (base32
9241 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
9242 (build-system ruby-build-system)
9243 (arguments
9244 '(#:tests? #f)) ; No included tests
9245 (synopsis "Job queue using PostgreSQL written in Ruby")
9246 (description
9247 "This package provides a job queue that uses PostgreSQL for storing jobs
9248 and locking between worker processes.")
9249 (home-page "https://github.com/chanks/que")
9250 (license license:expat)))
9251
9252 (define-public ruby-ae
9253 (package
9254 (name "ruby-ae")
9255 (version "1.8.2")
9256 (source
9257 (origin
9258 (method git-fetch)
9259 ;; Fetch from github so tests are included.
9260 (uri (git-reference
9261 (url "https://github.com/rubyworks/ae")
9262 (commit version)))
9263 (file-name (git-file-name name version))
9264 (sha256
9265 (base32
9266 "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp"))))
9267 (build-system ruby-build-system)
9268 (arguments
9269 `(#:phases
9270 (modify-phases %standard-phases
9271 (replace 'check
9272 (lambda _ (invoke "qed")))
9273 (add-before 'validate-runpath 'replace-broken-symlink
9274 (lambda* (#:key outputs #:allow-other-keys)
9275 (let* ((out (assoc-ref outputs "out"))
9276 (file (string-append
9277 out "/lib/ruby/vendor_ruby/gems/ae-"
9278 ,version "/lib/ae.yml")))
9279 ;; XXX: This symlink is broken since ruby 2.4.
9280 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
9281 (delete-file file)
9282 (symlink "../.index" file)
9283 #t))))))
9284 (propagated-inputs
9285 `(("ruby-ansi" ,ruby-ansi)))
9286 (native-inputs
9287 `(("ruby-qed" ,ruby-qed)))
9288 (synopsis "Assertions library")
9289 (description
9290 "Assertive Expressive (AE) is an assertions library specifically designed
9291 for reuse by other test frameworks.")
9292 (home-page "https://rubyworks.github.io/ae/")
9293 (license license:bsd-2)))
9294
9295 (define-public ruby-lemon
9296 (package
9297 (name "ruby-lemon")
9298 (version "0.9.1")
9299 (source
9300 (origin
9301 (method url-fetch)
9302 (uri (rubygems-uri "lemon" version))
9303 (sha256
9304 (base32
9305 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
9306 (build-system ruby-build-system)
9307 (arguments
9308 `(#:phases
9309 (modify-phases %standard-phases
9310 (replace 'check (lambda _ (invoke "qed"))))))
9311 (propagated-inputs
9312 `(("ruby-ae" ,ruby-ae)
9313 ("ruby-ansi" ,ruby-ansi)
9314 ("ruby-rubytest" ,ruby-rubytest)))
9315 (native-inputs
9316 `(("ruby-qed" ,ruby-qed)))
9317 (synopsis "Test framework correlating code structure and test unit")
9318 (description
9319 "Lemon is a unit testing framework that enforces highly formal
9320 case-to-class and unit-to-method test construction. This enforcement can help
9321 focus concern on individual units of behavior.")
9322 (home-page "https://rubyworks.github.io/lemon")
9323 (license license:bsd-2)))
9324
9325 (define-public ruby-rubytest-cli
9326 (package
9327 (name "ruby-rubytest-cli")
9328 (version "0.2.0")
9329 (source
9330 (origin
9331 (method url-fetch)
9332 (uri (rubygems-uri "rubytest-cli" version))
9333 (sha256
9334 (base32
9335 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
9336 (build-system ruby-build-system)
9337 (arguments
9338 `(#:tests? #f)) ; no tests
9339 (propagated-inputs
9340 `(("ruby-ansi" ,ruby-ansi)
9341 ("ruby-rubytest" ,ruby-rubytest)))
9342 (synopsis "Command-line interface for rubytest")
9343 (description
9344 "Rubytest CLI is a command-line interface for running tests for
9345 Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
9346 (home-page "https://rubyworks.github.io/rubytest-cli")
9347 (license license:bsd-2)))
9348
9349 (define-public ruby-hashery
9350 (package
9351 (name "ruby-hashery")
9352 (version "2.1.2")
9353 (source
9354 (origin
9355 (method url-fetch)
9356 (uri (rubygems-uri "hashery" version))
9357 (sha256
9358 (base32
9359 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
9360 (build-system ruby-build-system)
9361 (arguments
9362 `(#:phases
9363 (modify-phases %standard-phases
9364 (replace 'check
9365 (lambda _
9366 (invoke "qed")
9367 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
9368 (native-inputs
9369 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
9370 ("ruby-qed" ,ruby-qed)
9371 ("ruby-lemon" ,ruby-lemon)))
9372 (synopsis "Hash-like classes with extra features")
9373 (description
9374 "The Hashery is a tight collection of @code{Hash}-like classes.
9375 Included are the auto-sorting @code{Dictionary} class, the efficient
9376 @code{LRUHash}, the flexible @code{OpenHash} and the convenient
9377 @code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
9378 defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
9379 standard @code{Hash} making it possible to subclass and augment to fit any
9380 specific use case.")
9381 (home-page "https://rubyworks.github.io/hashery")
9382 (license license:bsd-2)))
9383
9384 (define-public ruby-rc4
9385 (package
9386 (name "ruby-rc4")
9387 (version "0.1.5")
9388 (source
9389 (origin
9390 (method url-fetch)
9391 (uri (rubygems-uri "ruby-rc4" version))
9392 (sha256
9393 (base32
9394 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
9395 (build-system ruby-build-system)
9396 (arguments
9397 `(#:phases
9398 (modify-phases %standard-phases
9399 (replace 'check
9400 (lambda _
9401 (invoke "rspec" "spec/rc4_spec.rb"))))))
9402 (native-inputs
9403 `(("ruby-rspec" ,ruby-rspec-2)))
9404 (synopsis "Implementation of the RC4 algorithm")
9405 (description
9406 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
9407 (home-page "https://github.com/caiges/Ruby-RC4")
9408 (license license:expat)))
9409
9410 (define-public ruby-afm
9411 (package
9412 (name "ruby-afm")
9413 (version "0.2.2")
9414 (source
9415 (origin
9416 (method url-fetch)
9417 (uri (rubygems-uri "afm" version))
9418 (sha256
9419 (base32
9420 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
9421 (build-system ruby-build-system)
9422 (native-inputs
9423 `(("bundler" ,bundler)))
9424 (synopsis "Read Adobe Font Metrics (afm) files")
9425 (description
9426 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
9427 files and use the data therein.")
9428 (home-page "https://github.com/halfbyte/afm")
9429 (license license:expat)))
9430
9431 (define-public ruby-ascii85
9432 (package
9433 (name "ruby-ascii85")
9434 (version "1.0.3")
9435 (source
9436 (origin
9437 (method url-fetch)
9438 (uri (rubygems-uri "Ascii85" version))
9439 (sha256
9440 (base32
9441 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
9442 (build-system ruby-build-system)
9443 (native-inputs
9444 `(("bundler" ,bundler)))
9445 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
9446 (description
9447 "This library provides methods to encode and decode Ascii85
9448 binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
9449 @dfn{Portable Document Format} (PDF) file formats.")
9450 (home-page "https://github.com/datawraith/ascii85gem")
9451 (license license:expat)))
9452
9453 (define-public ruby-ttfunk
9454 (package
9455 (name "ruby-ttfunk")
9456 (version "1.6.2.1")
9457 (source
9458 (origin
9459 (method git-fetch)
9460 ;; fetch from github as the gem does not contain testing code
9461 (uri (git-reference
9462 (url "https://github.com/prawnpdf/ttfunk")
9463 (commit version)))
9464 (file-name (git-file-name name version))
9465 (sha256
9466 (base32
9467 "0rsf4j6s97wbcnjbvmmh6xrc7imw4g9lrlcvn945wh400lc8r53z"))))
9468 (build-system ruby-build-system)
9469 (arguments
9470 `(#:test-target "spec"
9471 #:phases
9472 (modify-phases %standard-phases
9473 (add-before 'build 'remove-ssh
9474 (lambda _
9475 ;; remove dependency on an ssh key pair that doesn't exist
9476 (substitute* "ttfunk.gemspec"
9477 (("spec.signing_key.*") ""))
9478 #t))
9479 (add-before 'check 'remove-rubocop
9480 (lambda _
9481 ;; remove rubocop as a dependency as not needed for testing
9482 (substitute* "ttfunk.gemspec"
9483 (("spec.add_development_dependency\\('rubocop'.*") ""))
9484 (substitute* "Rakefile"
9485 (("require 'rubocop/rake_task'") "")
9486 (("RuboCop::RakeTask.new") ""))
9487 #t)))))
9488 (native-inputs
9489 `(("ruby-rspec" ,ruby-rspec)
9490 ("ruby-yard" ,ruby-yard)
9491 ("bundler" ,bundler)))
9492 (synopsis "Font metrics parser for the Prawn PDF generator")
9493 (description
9494 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
9495 part of the Prawn PDF generator.")
9496 (home-page "https://github.com/prawnpdf/ttfunk")
9497 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
9498 ;; for details."
9499 (license %prawn-project-licenses)))
9500
9501 (define-public ruby-puma
9502 (package
9503 (name "ruby-puma")
9504 (version "3.9.1")
9505 (source
9506 (origin
9507 (method git-fetch)
9508 ;; Fetch from GitHub because distributed gem does not contain tests.
9509 (uri (git-reference
9510 (url "https://github.com/puma/puma")
9511 (commit (string-append "v" version))))
9512 (file-name (git-file-name name version))
9513 (sha256
9514 (base32
9515 "1kj75k81iik3aj73pkc9ixj9rwf95ipkyma65n28m64dgw02qi1f"))))
9516 (build-system ruby-build-system)
9517 (arguments
9518 `(#:tests? #f ; Tests require an out-dated version of minitest.
9519 #:phases
9520 (modify-phases %standard-phases
9521 (add-before 'build 'fix-gemspec
9522 (lambda _
9523 (substitute* "puma.gemspec"
9524 (("git ls-files") "find * |sort"))
9525 #t)))))
9526 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
9527 (description
9528 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
9529 for Ruby/Rack applications. Puma is intended for use in both development and
9530 production environments. In order to get the best throughput, it is highly
9531 recommended that you use a Ruby implementation with real threads like Rubinius
9532 or JRuby.")
9533 (home-page "https://puma.io/")
9534 (license license:expat)))
9535
9536 (define-public ruby-hoe-git
9537 (package
9538 (name "ruby-hoe-git")
9539 (version "1.6.0")
9540 (source
9541 (origin
9542 (method url-fetch)
9543 (uri (rubygems-uri "hoe-git" version))
9544 (sha256
9545 (base32
9546 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
9547 (build-system ruby-build-system)
9548 (propagated-inputs
9549 `(("ruby-hoe" ,ruby-hoe)))
9550 (synopsis "Hoe plugins for tighter Git integration")
9551 (description
9552 "This package provides a set of Hoe plugins for tighter Git integration.
9553 It provides tasks to automate release tagging and pushing and changelog
9554 generation.")
9555 (home-page "https://github.com/jbarnette/hoe-git")
9556 (license license:expat)))
9557
9558 (define-public ruby-sequel
9559 (package
9560 (name "ruby-sequel")
9561 (version "4.49.0")
9562 (source
9563 (origin
9564 (method url-fetch)
9565 (uri (rubygems-uri "sequel" version))
9566 (sha256
9567 (base32
9568 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
9569 (build-system ruby-build-system)
9570 (arguments
9571 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
9572 (synopsis "Database toolkit for Ruby")
9573 (description "Sequel provides thread safety, connection pooling and a
9574 concise DSL for constructing SQL queries and table schemas. It includes a
9575 comprehensive ORM layer for mapping records to Ruby objects and handling
9576 associated records.")
9577 (home-page "https://sequel.jeremyevans.net")
9578 (license license:expat)))
9579
9580 (define-public ruby-timecop
9581 (package
9582 (name "ruby-timecop")
9583 (version "0.9.1")
9584 (source
9585 (origin
9586 (method url-fetch)
9587 (uri (rubygems-uri "timecop" version))
9588 (sha256
9589 (base32
9590 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
9591 (build-system ruby-build-system)
9592 (arguments
9593 `(#:phases
9594 (modify-phases %standard-phases
9595 (add-before 'check 'set-check-rubylib
9596 (lambda _
9597 ;; Set RUBYLIB so timecop tests finds its own lib.
9598 (setenv "RUBYLIB" "lib")
9599 #t)))))
9600 (native-inputs
9601 `(("bundler" ,bundler)
9602 ("ruby-minitest-rg" ,ruby-minitest-rg)
9603 ("ruby-mocha" ,ruby-mocha)
9604 ("ruby-activesupport" ,ruby-activesupport)))
9605 (synopsis "Test mocks for time-dependent functions")
9606 (description
9607 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
9608 making it easier to test time-dependent code. It provides a unified method to
9609 mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
9610 call.")
9611 (home-page "https://github.com/travisjeffery/timecop")
9612 (license license:expat)))
9613
9614 (define-public ruby-concurrent
9615 (package
9616 (name "ruby-concurrent")
9617 (version "1.1.5")
9618 (source
9619 (origin
9620 (method git-fetch)
9621 ;; Download from GitHub because the rubygems version does not contain
9622 ;; Rakefile.
9623 (uri (git-reference
9624 (url "https://github.com/ruby-concurrency/concurrent-ruby")
9625 (commit (string-append "v" version))))
9626 (file-name (git-file-name name version))
9627 (sha256
9628 (base32
9629 "193q2k47vk7qdvv9hlhmmdxgy91xl4imapyk1ijdg9vgf46knyzj"))))
9630 (build-system ruby-build-system)
9631 (arguments
9632 `(#:test-target "ci"
9633 #:phases
9634 (modify-phases %standard-phases
9635 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
9636 (lambda _
9637 ;; Delete extra gemspec files so 'first-gemspec' chooses the
9638 ;; correct one.
9639 (delete-file "concurrent-ruby-edge.gemspec")
9640 (delete-file "concurrent-ruby-ext.gemspec")
9641 #t))
9642 (replace 'replace-git-ls-files
9643 (lambda _
9644 ;; XXX: The default substitution made by this phase is not fully
9645 ;; compatible with "git ls-files". The latter produces file names
9646 ;; such as "lib/foo", whereas ruby-build-system uses "find . [...]"
9647 ;; which gives "./lib/foo". That difference in turn breaks the
9648 ;; comparison against a glob pattern in this script.
9649 (substitute* "concurrent-ruby.gemspec"
9650 (("git ls-files") "find * -type f | sort"))
9651 #t))
9652 (add-before 'build 'remove-jar-from-gemspec
9653 (lambda _
9654 ;; The gemspec wants to include a JAR file that we do not build
9655 ;; nor need.
9656 (substitute* "concurrent-ruby.gemspec"
9657 (("'lib/concurrent/concurrent_ruby.jar'")
9658 ""))
9659 #t))
9660 (add-before 'build 'remove-rake_compiler_dock-dependency
9661 (lambda _
9662 ;; This library is only used when building for non-MRI targets.
9663 (substitute* "Rakefile"
9664 (("require 'rake_compiler_dock'")
9665 ""))
9666 #t))
9667 (add-before 'check 'remove-timecop-dependency
9668 ;; Remove timecop-dependent tests as having timecop as a depedency
9669 ;; causes circular depedencies.
9670 (lambda _
9671 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
9672 (delete-file "spec/concurrent/scheduled_task_spec.rb")
9673 #t)))))
9674 (native-inputs
9675 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9676 ("ruby-rspec" ,ruby-rspec)))
9677 (synopsis "Concurrency tools for Ruby")
9678 (description
9679 "This library provides modern concurrency tools including agents,
9680 futures, promises, thread pools, actors, supervisors, and more. It is
9681 inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
9682 patterns.")
9683 (home-page "http://www.concurrent-ruby.com")
9684 (license license:expat)))
9685
9686 (define-public ruby-pkg-config
9687 (package
9688 (name "ruby-pkg-config")
9689 (version "1.2.5")
9690 (source
9691 (origin
9692 (method url-fetch)
9693 (uri (rubygems-uri "pkg-config" version))
9694 (sha256
9695 (base32
9696 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
9697 (build-system ruby-build-system)
9698 (arguments
9699 ;; Tests require extra files not included in the gem.
9700 `(#:tests? #f))
9701 (synopsis "Detect libraries for compiling Ruby native extensions")
9702 (description
9703 "@code{pkg-config} can be used in your extconf.rb to properly detect need
9704 libraries for compiling Ruby native extensions.")
9705 (home-page "https://github.com/ruby-gnome2/pkg-config")
9706 (license license:lgpl2.0+)))
9707
9708 (define-public ruby-net-http-digest-auth
9709 (package
9710 (name "ruby-net-http-digest-auth")
9711 (version "1.4.1")
9712 (source
9713 (origin
9714 (method url-fetch)
9715 (uri (rubygems-uri "net-http-digest_auth" version))
9716 (sha256
9717 (base32
9718 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
9719 (build-system ruby-build-system)
9720 (native-inputs
9721 `(("ruby-hoe" ,ruby-hoe)))
9722 (synopsis "RFC 2617 HTTP digest authentication library")
9723 (description
9724 "This library implements HTTP's digest authentication scheme based on
9725 RFC 2617. This enables the use of the digest authentication scheme instead
9726 of the more insecure basic authentication scheme.")
9727 (home-page "https://github.com/drbrain/net-http-digest_auth")
9728 (license license:expat)))
9729
9730 (define-public ruby-mail
9731 (package
9732 (name "ruby-mail")
9733 (version "2.6.6")
9734 (source
9735 (origin
9736 (method url-fetch)
9737 (uri (rubygems-uri "mail" version))
9738 (sha256
9739 (base32
9740 "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
9741 (build-system ruby-build-system)
9742 (propagated-inputs
9743 `(("ruby-mime-types" ,ruby-mime-types)))
9744 (arguments
9745 ;; Tests require extra gems not included in the Gemfile.
9746 ;; XXX: Try enabling this for the next version with mini_mime.
9747 `(#:tests? #f))
9748 (synopsis "Mail library for Ruby")
9749 (description
9750 "Mail is an internet library for Ruby that is designed to handle email
9751 generation, parsing and sending. The purpose of this library is to provide
9752 a single point of access to handle all email functions, including sending
9753 and receiving emails. All network type actions are done through proxy
9754 methods to @code{Net::SMTP}, @code{Net::POP3} etc.
9755
9756 Mail has been designed with a very simple object oriented system that
9757 really opens up the email messages you are parsing, if you know what you
9758 are doing, you can fiddle with every last bit of your email directly.")
9759 (home-page "https://github.com/mikel/mail")
9760 (license license:expat)))
9761
9762 (define-public ruby-mathn
9763 (package
9764 (name "ruby-mathn")
9765 (version "0.1.0")
9766 (source
9767 (origin
9768 (method url-fetch)
9769 (uri (rubygems-uri "mathn" version))
9770 (sha256
9771 (base32
9772 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
9773 (build-system ruby-build-system)
9774 (native-inputs
9775 `(("bundler" ,bundler)
9776 ("ruby-rake-compiler" ,ruby-rake-compiler)))
9777 (synopsis "Extends math operations for increased precision")
9778 (description
9779 "This gem makes mathematical operations more precise in Ruby and
9780 integrates other mathematical standard libraries. Prior to Ruby 2.5,
9781 @code{mathn} was part of the Ruby standard library.")
9782 (home-page "https://github.com/ruby/mathn")
9783 (license license:bsd-2)))
9784
9785 (define-public ruby-code-statistics
9786 (package
9787 (name "ruby-code-statistics")
9788 (version "0.2.13")
9789 (source
9790 (origin
9791 (method url-fetch)
9792 (uri (rubygems-uri "code_statistics" version))
9793 (sha256
9794 (base32
9795 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
9796 (build-system ruby-build-system)
9797 (arguments
9798 `(#:tests? #f)) ; Not all test code is included in gem.
9799 (synopsis "Port of the rails 'rake stats' method")
9800 (description
9801 "This gem is a port of the rails 'rake stats' method so it can be made
9802 more robust and work for non rails projects.")
9803 (home-page "https://github.com/danmayer/code_statistics")
9804 (license license:expat)))
9805
9806 (define-public ruby-rubypants
9807 (package
9808 (name "ruby-rubypants")
9809 (version "0.6.0")
9810 (source (origin
9811 (method url-fetch)
9812 (uri (rubygems-uri "rubypants" version))
9813 (sha256
9814 (base32
9815 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
9816 (build-system ruby-build-system)
9817 (arguments
9818 '(#:tests? #f)) ; need Codecov
9819 (synopsis "Port of the smart-quotes library SmartyPants")
9820 (description
9821 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
9822 original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
9823 and BBEdit that easily translates plain ASCII punctuation characters into
9824 smart typographic punctuation HTML entities.")
9825 (home-page "https://github.com/jmcnevin/rubypants")
9826 (license license:bsd-2)))
9827
9828 (define-public ruby-org-ruby
9829 (package
9830 (name "ruby-org-ruby")
9831 (version "0.9.12")
9832 (source (origin
9833 (method url-fetch)
9834 (uri (rubygems-uri "org-ruby" version))
9835 (sha256
9836 (base32
9837 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
9838 (build-system ruby-build-system)
9839 (arguments
9840 '(#:tests? #f)) ; no rakefile
9841 (propagated-inputs
9842 `(("ruby-rubypants" ,ruby-rubypants)))
9843 (synopsis "Org-mode parser written in Ruby")
9844 (description
9845 "Org-ruby is an org-mode parser written in Ruby. The most significant
9846 thing this library does today is convert org-mode files to HTML or Textile or
9847 Markdown.")
9848 (home-page "https://github.com/wallyqs/org-ruby")
9849 (license license:expat)))
9850
9851 (define-public ruby-rake
9852 (package
9853 (name "ruby-rake")
9854 (version "13.0.1")
9855 (source
9856 (origin
9857 (method url-fetch)
9858 (uri (rubygems-uri "rake" version))
9859 (sha256
9860 (base32
9861 "0w6qza25bq1s825faaglkx1k6d59aiyjjk3yw3ip5sb463mhhai9"))))
9862 (build-system ruby-build-system)
9863 (native-inputs
9864 `(("bundler" ,bundler)))
9865 (synopsis "Rake is a Make-like program implemented in Ruby")
9866 (description
9867 "Rake is a Make-like program where tasks and dependencies are specified
9868 in standard Ruby syntax.")
9869 (home-page "https://github.com/ruby/rake")
9870 (license license:expat)))
9871
9872 (define-public ruby-childprocess
9873 (package
9874 (name "ruby-childprocess")
9875 (version "3.0.0")
9876 (source
9877 (origin
9878 (method url-fetch)
9879 (uri (rubygems-uri "childprocess" version))
9880 (sha256
9881 (base32
9882 "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5"))))
9883 (build-system ruby-build-system)
9884 (arguments
9885 `(#:tests? #f))
9886 (native-inputs
9887 `(("bundler" ,bundler)
9888 ("ruby-rspec" ,ruby-rspec)))
9889 (propagated-inputs
9890 `(("ruby-ffi" ,ruby-ffi)))
9891 (synopsis "Control external programs running in the background, in Ruby")
9892 (description "@code{childprocess} provides a gem to control external
9893 programs running in the background, in Ruby.")
9894 (home-page "https://github.com/enkessler/childprocess")
9895 (license license:expat)))
9896
9897 (define-public ruby-public-suffix
9898 (package
9899 (name "ruby-public-suffix")
9900 (version "4.0.1")
9901 (source (origin
9902 (method url-fetch)
9903 (uri (rubygems-uri "public_suffix" version))
9904 (sha256
9905 (base32
9906 "0xnfv2j2bqgdpg2yq9i2rxby0w2sc9h5iyjkpaas2xknwrgmhdb0"))))
9907 (build-system ruby-build-system)
9908 (arguments
9909 '(#:phases
9910 (modify-phases %standard-phases
9911 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
9912 ;; including it as an input can lead to circular dependencies.
9913 (add-after 'unpack 'remove-rubocop-from-Rakefile
9914 (lambda _
9915 (substitute* "Rakefile"
9916 (("require \"rubocop/rake\\_task\"") "")
9917 (("RuboCop::RakeTask\\.new") ""))
9918 #t)))))
9919 (native-inputs
9920 `(("bundler" ,bundler)
9921 ("ruby-yard" ,ruby-yard)
9922 ("ruby-mocha" ,ruby-mocha)
9923 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
9924 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
9925 (synopsis "Domain name parser")
9926 (description "The gem @code{public_suffix} is a domain name parser,
9927 written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
9928 is one under which Internet users can (or historically could) directly
9929 register names. Some examples of public suffixes are @code{.com},
9930 @code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
9931 all known public suffixes.")
9932 (license license:expat)))
9933
9934 (define-public ruby-addressable
9935 (package
9936 (name "ruby-addressable")
9937 (version "2.7.0")
9938 (source (origin
9939 (method url-fetch)
9940 (uri (rubygems-uri "addressable" version))
9941 (sha256
9942 (base32
9943 "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy"))))
9944 (build-system ruby-build-system)
9945 (arguments
9946 '(#:test-target "spec"
9947 #:phases
9948 (modify-phases %standard-phases
9949 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
9950 (lambda _
9951 (substitute* "Gemfile"
9952 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
9953 ((".*launchy.*") "")
9954 ((".*rake.*") "gem 'rake'\n")
9955 ((".*redcarpet.*") ""))
9956 #t))
9957 (add-before 'check 'delete-network-dependent-test
9958 (lambda _
9959 (delete-file "spec/addressable/net_http_compat_spec.rb")
9960 #t)))))
9961 (native-inputs
9962 `(("ruby-rspec" ,ruby-rspec)
9963 ("bundler" ,bundler)
9964 ("ruby-idn-ruby" ,ruby-idn-ruby)
9965 ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
9966 ("ruby-rspec-its", ruby-rspec-its-minimal)
9967 ("ruby-yard" ,ruby-yard)
9968 ("ruby-simplecov" ,ruby-simplecov)))
9969 (propagated-inputs
9970 `(("ruby-public-suffix" ,ruby-public-suffix)))
9971 (home-page "https://github.com/sporkmonger/addressable")
9972 (synopsis "Alternative URI implementation")
9973 (description "Addressable is a replacement for the URI implementation that
9974 is part of Ruby's standard library. It more closely conforms to RFC 3986,
9975 RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
9976 (license license:asl2.0)))
9977
9978 (define-public ruby-colorize
9979 (package
9980 (name "ruby-colorize")
9981 (version "0.8.1")
9982 (source (origin
9983 (method url-fetch)
9984 (uri (rubygems-uri "colorize" version))
9985 (sha256
9986 (base32
9987 "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b"))))
9988 (build-system ruby-build-system)
9989 (arguments
9990 '(#:phases (modify-phases %standard-phases
9991 (add-before 'check 'remove-codeclimate-dependency
9992 (lambda _
9993 (substitute* "test/test_colorize.rb"
9994 ;; Do not hook the tests into the online CodeClimate
9995 ;; service which is unnecessary for these tests.
9996 (("require 'codeclimate-test-reporter'")
9997 "")
9998 (("CodeClimate.*") ""))
9999 #t)))))
10000 (synopsis "Add color effects to the @code{String} class")
10001 (description
10002 "This package extends the @code{String} class and adds a
10003 @code{ColorizedString} with methods to set text color, background color,
10004 and text effects.")
10005 (home-page "https://github.com/fazibear/colorize")
10006 (license license:gpl2+)))
10007
10008 (define-public ruby-colorator
10009 (package
10010 (name "ruby-colorator")
10011 (version "1.1.0")
10012 (source (origin
10013 (method url-fetch)
10014 (uri (rubygems-uri "colorator" version))
10015 (sha256
10016 (base32
10017 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
10018 (build-system ruby-build-system)
10019 (arguments
10020 ;; No test target
10021 `(#:tests? #f))
10022 (home-page "http://octopress.org/colorator/")
10023 (synopsis "Terminal color library")
10024 (description "Colorator is a Ruby gem that helps you colorize your text
10025 for the terminal.")
10026 (license license:expat)))
10027
10028 (define-public ruby-command-line-reporter
10029 (package
10030 (name "ruby-command-line-reporter")
10031 (version "4.0.1")
10032 (source (origin
10033 (method url-fetch)
10034 (uri (rubygems-uri "command_line_reporter" version))
10035 (sha256
10036 (base32
10037 "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll"))))
10038 (build-system ruby-build-system)
10039 (arguments
10040 ;; No Rakefile
10041 `(#:tests? #f
10042 #:phases
10043 (modify-phases %standard-phases
10044 (add-before 'build 'fix-dependencies
10045 (lambda _
10046 (substitute* ".gemspec"
10047 ;; colored is unmaintained
10048 (("colored") "colorator")
10049 ;; colorator version
10050 (("= 1.2") "= 1.1"))
10051 #t)))))
10052 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
10053 (home-page "https://github.com/wbailey/command_line_reporter")
10054 (synopsis "Report production while executing Ruby scripts")
10055 (description "This gem provides a DSL that makes it easy to write reports
10056 of various types in ruby. It eliminates the need to litter your source with
10057 puts statements, instead providing a more readable, expressive interface to
10058 your application.")
10059 (license license:asl2.0)))
10060
10061 (define-public ruby-command-line-reporter-3
10062 (package
10063 (inherit ruby-command-line-reporter)
10064 (version "3.3.6")
10065 (source (origin
10066 (method url-fetch)
10067 (uri (rubygems-uri "command_line_reporter" version))
10068 (sha256
10069 (base32
10070 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
10071
10072 (define-public ruby-kpeg
10073 (package
10074 (name "ruby-kpeg")
10075 (version "1.1.0")
10076 (source
10077 (origin
10078 (method url-fetch)
10079 (uri (rubygems-uri "kpeg" version))
10080 (sha256
10081 (base32
10082 "0x2kpfrcagj931masm5y1kwbnc6nxl60cqdcd3lyd1d2hz7kzlia"))))
10083 (build-system ruby-build-system)
10084 (native-inputs
10085 `(("ruby-hoe" ,ruby-hoe)))
10086 (synopsis "PEG library for Ruby")
10087 (description "KPeg is a simple PEG library for Ruby. It provides an API as
10088 well as native grammar to build the grammar. KPeg supports direct left
10089 recursion of rules via the
10090 @uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization}
10091 technique.")
10092 (home-page "https://github.com/evanphx/kpeg")
10093 (license license:expat)))
10094
10095 (define-public ruby-rdoc
10096 (package
10097 (name "ruby-rdoc")
10098 (version "6.2.0")
10099 (source
10100 (origin
10101 (method git-fetch)
10102 (uri (git-reference
10103 (url "https://github.com/ruby/rdoc")
10104 (commit (string-append "v" version))))
10105 (file-name (git-file-name name version))
10106 (sha256
10107 (base32
10108 "0dhk29nidv93b5vnjvlm9gcixgn4i0jcyzrgxdk6pdg019bw4cj6"))))
10109 (build-system ruby-build-system)
10110 (arguments
10111 `(#:phases
10112 (modify-phases %standard-phases
10113 (add-after 'unpack 'patch-gemspec
10114 ;; TODO: Remove after next release is tagged.
10115 (lambda _
10116 (substitute* "rdoc.gemspec"
10117 (("\"lib/rdoc/generator/template/darkfish/js/\
10118 jquery\\.js\", ") ""))
10119 #t))
10120 (add-before 'build 'generate
10121 ;; 'gem build' doesn't honor Rakefile dependencies (see:
10122 ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977).
10123 (lambda _
10124 (invoke "rake" "generate"))))))
10125 (native-inputs
10126 `(("bundler" ,bundler)
10127 ("ruby-kpeg" ,ruby-kpeg)
10128 ("ruby-racc" ,ruby-racc)
10129 ("ruby-rubocop" ,ruby-rubocop)))
10130 (home-page "https://ruby.github.io/rdoc/")
10131 (synopsis "HTML and command-line documentation utility")
10132 (description "RDoc produces HTML and command-line documentation for Ruby
10133 projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
10134 documentation from the command-line.")
10135 (license license:gpl2+)))
10136
10137 (define-public ruby-sass-listen
10138 (package
10139 (name "ruby-sass-listen")
10140 (version "4.0.0")
10141 (source (origin
10142 (method url-fetch)
10143 (uri (rubygems-uri "sass-listen" version))
10144 (sha256
10145 (base32
10146 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
10147 (build-system ruby-build-system)
10148 (arguments
10149 ;; No test target
10150 `(#:tests? #f))
10151 (propagated-inputs
10152 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
10153 ("ruby-rb-inotify" ,ruby-rb-inotify)))
10154 (home-page "https://github.com/sass/listen")
10155 (synopsis "File modification notification library")
10156 (description "The Listen gem listens to file modifications and notifies you
10157 about the changes.")
10158 (license license:expat)))
10159
10160 (define-public ruby-terminfo
10161 (package
10162 (name "ruby-terminfo")
10163 (version "0.1.1")
10164 (source
10165 (origin
10166 (method url-fetch)
10167 (uri (rubygems-uri "ruby-terminfo" version))
10168 (sha256
10169 (base32
10170 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
10171 (build-system ruby-build-system)
10172 (arguments
10173 `(#:test-target "test"
10174 ;; Rakefile requires old packages and would need modification to
10175 ;; work with current software.
10176 #:tests? #f))
10177 (inputs
10178 `(("ncurses" ,ncurses)))
10179 (native-inputs
10180 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
10181 ("ruby-rdoc" ,ruby-rdoc)))
10182 (home-page "http://www.a-k-r.org/ruby-terminfo/")
10183 (synopsis "Terminfo binding for Ruby")
10184 (description "Ruby-terminfo provides terminfo binding for Ruby.")
10185 (license license:bsd-3)))
10186
10187 (define-public ruby-diffy
10188 (package
10189 (name "ruby-diffy")
10190 (version "3.2.1")
10191 (source
10192 (origin
10193 (method url-fetch)
10194 (uri (rubygems-uri "diffy" version))
10195 (sha256
10196 (base32
10197 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
10198 (build-system ruby-build-system)
10199 (arguments
10200 ;; No tests
10201 `(#:tests? #f))
10202 (native-inputs
10203 `(("ruby-rspec" ,ruby-rspec)))
10204 (home-page "https://github.com/samg/diffy")
10205 (synopsis "Convenient diffing in ruby")
10206 (description "Diffy provides a convenient way to generate a diff from two
10207 strings or files.")
10208 (license license:expat)))
10209
10210 (define-public ruby-sass-spec
10211 (package
10212 (name "ruby-sass-spec")
10213 (version "3.5.4")
10214 (source
10215 (origin
10216 (method git-fetch)
10217 (uri (git-reference
10218 (url "https://github.com/sass/sass-spec")
10219 (commit (string-append "v" version))))
10220 (file-name (git-file-name name version))
10221 (sha256
10222 (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
10223 (build-system ruby-build-system)
10224 (propagated-inputs
10225 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
10226 ("ruby-diffy" ,ruby-diffy)
10227 ("ruby-terminfo" ,ruby-terminfo)))
10228 (arguments
10229 `(;; This package contains tests for a sass implementation, and the to
10230 ;; avoid any circular dependencies, the tests are not run here
10231 #:tests? #f
10232 #:phases
10233 (modify-phases %standard-phases
10234 (add-after 'unpack 'patch-test
10235 (lambda _
10236 (delete-file "spec/values/colors/alpha_hex-3.5/error")
10237 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
10238 (("string") "color")))))))
10239 (home-page "https://github.com/sass/sass-spec")
10240 (synopsis "Test suite for Sass")
10241 (description "Sass Spec is a test suite for Sass. Test cases are all in
10242 the @file{spec} directory.")
10243 (license license:expat)))
10244
10245 (define-public ruby-sass
10246 (package
10247 (name "ruby-sass")
10248 (version "3.6.0")
10249 (source (origin
10250 (method url-fetch)
10251 (uri (rubygems-uri "sass" version))
10252 (sha256
10253 (base32
10254 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
10255 (build-system ruby-build-system)
10256 (propagated-inputs
10257 `(("ruby-sass-listen" ,ruby-sass-listen)))
10258 (native-inputs
10259 `(("ruby-sass-spec" ,ruby-sass-spec)
10260 ("ruby-mathn" ,ruby-mathn)))
10261 (home-page "https://sass-lang.com/")
10262 (synopsis "CSS extension language")
10263 (description "Sass is a CSS extension language. It extends CSS with
10264 features that don't exist yet like variables, nesting, mixins and inheritance.")
10265 (license license:expat)))
10266
10267 (define-public ruby-sassc
10268 (package
10269 (name "ruby-sassc")
10270 (version "2.2.1")
10271 (source
10272 (origin
10273 (method url-fetch)
10274 (uri (rubygems-uri "sassc" version))
10275 (sha256
10276 (base32
10277 "09bnid7r5z5hcin5hykvpvv8xig27wbbckxwis60z2aaxq4j9siz"))))
10278 (build-system ruby-build-system)
10279 (arguments
10280 '(#:modules ((guix build ruby-build-system)
10281 (guix build utils)
10282 (ice-9 textual-ports))
10283 #:phases
10284 (modify-phases %standard-phases
10285 ;; TODO: This would be better as a snippet, but the ruby-build-system
10286 ;; doesn't seem to support that
10287 (add-after 'unpack 'remove-libsass
10288 (lambda _
10289 (delete-file-recursively "ext")
10290 (with-atomic-file-replacement "sassc.gemspec"
10291 (lambda (in out)
10292 (let* ((gemspec (get-string-all in))
10293 (index (string-contains gemspec "libsass_dir")))
10294 (display (string-append
10295 (string-take gemspec index)
10296 "\nend\n")
10297 out))))
10298 #t))
10299 (add-after 'unpack 'dont-check-the-libsass-version
10300 (lambda _
10301 (substitute* "test/native_test.rb"
10302 (("assert_equal.*Native\\.version") ""))
10303 #t))
10304 (add-after 'unpack 'remove-git-from-gemspec
10305 (lambda _
10306 (substitute* "sassc.gemspec"
10307 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))
10308 #t))
10309 (add-after 'unpack 'remove-extensions-from-gemspec
10310 (lambda _
10311 (substitute* "sassc.gemspec"
10312 (("\\[\"ext/extconf.rb\"\\]") "[]"))
10313 #t))
10314 (add-after 'unpack 'fix-Rakefile
10315 (lambda _
10316 (substitute* "Rakefile"
10317 (("test: 'compile:libsass'") ":test"))
10318 #t))
10319 (add-after 'unpack 'remove-unnecessary-dependencies
10320 (lambda _
10321 (substitute* "test/test_helper.rb"
10322 (("require \"pry\"") ""))
10323 #t))
10324 (add-before 'build 'patch-native.rb
10325 (lambda* (#:key inputs #:allow-other-keys)
10326 (substitute* "lib/sassc/native.rb"
10327 ((".*gem_root = spec.gem_dir") "")
10328 (("ffi_lib .*\n")
10329 (string-append
10330 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))
10331 #t))
10332 ;; The gemspec still references the libsass files, so just keep the
10333 ;; one in the gem.
10334 (delete 'extract-gemspec))))
10335 (propagated-inputs
10336 `(("ruby-ffi" ,ruby-ffi)
10337 ("ruby-rake" ,ruby-rake)))
10338 (inputs
10339 `(("libsass" ,libsass)))
10340 (native-inputs
10341 `(("bundler" ,bundler)
10342 ("ruby-rake-compiler" ,ruby-rake-compiler)
10343 ("ruby-minitest-around" ,ruby-minitest-around)
10344 ("ruby-test-construct" ,ruby-test-construct)))
10345 (synopsis "Use libsss from Ruby")
10346 (description
10347 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
10348 bindings to the libsass library. This enables rendering
10349 @acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
10350 (home-page "https://github.com/sass/sassc-ruby")
10351 (license license:expat)))
10352
10353 (define-public ruby-jekyll-sass-converter
10354 (package
10355 (name "ruby-jekyll-sass-converter")
10356 (version "1.5.2")
10357 (source (origin
10358 (method url-fetch)
10359 (uri (rubygems-uri "jekyll-sass-converter" version))
10360 (sha256
10361 (base32
10362 "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk"))))
10363 (build-system ruby-build-system)
10364 (propagated-inputs
10365 `(("ruby-sass" ,ruby-sass)))
10366 (arguments
10367 ;; No rakefile
10368 `(#:tests? #f))
10369 (home-page "https://github.com/jekyll/jekyll-sass-converter")
10370 (synopsis "Sass converter for Jekyll")
10371 (description "This gem provide built-in support for the Sass converter
10372 in Jekyll.")
10373 (license license:expat)))
10374
10375 (define-public ruby-jekyll-watch
10376 (package
10377 (name "ruby-jekyll-watch")
10378 (version "2.1.2")
10379 (source (origin
10380 (method url-fetch)
10381 (uri (rubygems-uri "jekyll-watch" version))
10382 (sha256
10383 (base32
10384 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
10385 (build-system ruby-build-system)
10386 (propagated-inputs
10387 `(("ruby-listen" ,ruby-listen)))
10388 (arguments
10389 ;; No rakefile
10390 `(#:tests? #f))
10391 (home-page "https://github.com/jekyll/jekyll-watch")
10392 (synopsis "Jekyll auto-rebuild support")
10393 (description "This gems add the @code{--watch} switch to the jekyll CLI
10394 interface. It allows Jekyll to rebuild your site when a file changes.")
10395 (license license:expat)))
10396
10397 (define-public ruby-parallel
10398 (package
10399 (name "ruby-parallel")
10400 (version "1.13.0")
10401 (source
10402 (origin
10403 (method git-fetch)
10404 (uri (git-reference
10405 (url "https://github.com/grosser/parallel")
10406 (commit (string-append "v" version))))
10407 (file-name (git-file-name name version))
10408 (sha256
10409 (base32
10410 "1isqzbqxz2ndad4i5z3lb9ldrhaijfncj8bmffv04sq44sv87ikv"))))
10411 (build-system ruby-build-system)
10412 (arguments
10413 `(;; TODO 3 test failures
10414 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
10415 ;; open unnecessary pipes
10416 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
10417 ;; SQLite in processes
10418 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
10419 ;; SQLite in threads
10420 #:tests? #f
10421 #:test-target "rspec-rerun:spec"
10422 #:phases
10423 (modify-phases %standard-phases
10424 (add-after 'unpack 'patch-Gemfile
10425 (lambda _
10426 (substitute* "Gemfile"
10427 (("gem 'rspec-legacy_formatters'") "")
10428 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
10429 (add-before 'check 'delete-Gemfile.lock
10430 (lambda _
10431 ;; Bundler isn't being used for fetching dependendencies, so
10432 ;; delete the Gemfile.lock
10433 (delete-file "Gemfile.lock")
10434 #t))
10435 (add-before 'build 'patch-gemspec
10436 (lambda _
10437 (substitute* "parallel.gemspec"
10438 (("git ls-files") "find"))
10439 #t)))))
10440 (native-inputs
10441 `(("ruby-rspec" ,ruby-rspec)
10442 ("ruby-rspec-rerun" ,ruby-rspec-rerun)
10443 ("bundler" ,bundler)
10444 ("ruby-activerecord" ,ruby-activerecord)
10445 ("ruby-progressbar" ,ruby-progressbar)
10446 ("ruby-bump" ,ruby-bump)
10447 ("procps" ,procps)
10448 ("lsof" ,lsof)
10449 ("ruby-mysql2" ,ruby-mysql2)
10450 ("ruby-sqlite3" ,ruby-sqlite3)
10451 ("ruby-i18n" ,ruby-i18n)))
10452 (home-page "https://github.com/grosser/parallel")
10453 (synopsis "Parallel processing in Ruby")
10454 (description "Parallel allows you to run any code in parallel Processes
10455 (to use all CPUs) or Threads(to speedup blocking operations). It is best
10456 suited for map-reduce or e.g. parallel downloads/uploads.")
10457 (license license:expat)))
10458
10459 (define-public ruby-cane
10460 (package
10461 (name "ruby-cane")
10462 (version "3.0.0")
10463 (source (origin
10464 (method url-fetch)
10465 (uri (rubygems-uri "cane" version))
10466 (sha256
10467 (base32
10468 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
10469 (build-system ruby-build-system)
10470 (arguments `(#:tests? #f)); No rakefile
10471 (home-page "https://github.com/square/cane")
10472 (propagated-inputs
10473 `(("ruby-parallel" ,ruby-parallel)))
10474 (synopsis "Code quality threshold checking")
10475 (description "Cane fails your build if code quality thresholds are not met.")
10476 (license license:asl2.0)))
10477
10478 (define-public ruby-morecane
10479 (package
10480 (name "ruby-morecane")
10481 (version "0.2.0")
10482 (source (origin
10483 (method url-fetch)
10484 (uri (rubygems-uri "morecane" version))
10485 (sha256
10486 (base32
10487 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
10488 (build-system ruby-build-system)
10489 (home-page "https://github.com/yob/morecane")
10490 (arguments `(#:tests? #f)); No rakefile
10491 (propagated-inputs
10492 `(("ruby-parallel" ,ruby-parallel)))
10493 (synopsis "Extra checks for cane")
10494 (description "The cane gem provides a great framework for running quality
10495 checks over your ruby project as part of continuous integration build. It
10496 comes with a few checks out of the box, but also provides an API for loading
10497 custom checks. This gem provides a set of additional checks.")
10498 (license license:expat)))
10499
10500 (define-public ruby-pdf-reader
10501 (package
10502 (name "ruby-pdf-reader")
10503 (version "2.4.0")
10504 (source (origin
10505 (method git-fetch) ;no test in distributed gem archive
10506 (uri (git-reference
10507 (url "https://github.com/yob/pdf-reader.git")
10508 (commit (string-append "v" version))))
10509 (file-name (git-file-name name version))
10510 (sha256
10511 (base32
10512 "1yh8yrlssf5ppnkvk4m78vmh5r5vqwdcd0gm3lqipw162llz0rai"))))
10513 (build-system ruby-build-system)
10514 (arguments `(#:test-target "spec"
10515 #:phases (modify-phases %standard-phases
10516 (add-after 'unpack 'do-not-use-bundler
10517 (lambda _
10518 (substitute* "spec/spec_helper.rb"
10519 ((".*[Bb]undler.*") ""))
10520 #t)))))
10521 (native-inputs
10522 `(("ruby-rspec" ,ruby-rspec)
10523 ("ruby-cane" ,ruby-cane)
10524 ("ruby-morecane" ,ruby-morecane)))
10525 (propagated-inputs
10526 `(("ruby-afm" ,ruby-afm)
10527 ("ruby-ascii85" ,ruby-ascii85)
10528 ("ruby-hashery" ,ruby-hashery)
10529 ("ruby-rc4" ,ruby-rc4)
10530 ("ruby-ttfunk" ,ruby-ttfunk)))
10531 (home-page "https://github.com/yob/pdf-reader")
10532 (synopsis "PDF parser in Ruby")
10533 (description "The PDF::Reader library implements a PDF parser conforming as
10534 much as possible to the PDF specification from Adobe. It provides programmatic
10535 access to the contents of a PDF file with a high degree of flexibility.")
10536 (license license:gpl3+)))
10537
10538 (define-public ruby-pdf-inspector
10539 (let ((revision "1")
10540 (commit "00ee4c92ff917118785ebec188e81effc968abeb"))
10541 (package
10542 (name "ruby-pdf-inspector")
10543 (version (git-version "1.3.0" revision commit))
10544 (source (origin
10545 (method git-fetch)
10546 (uri (git-reference
10547 (url "https://github.com/prawnpdf/pdf-inspector.git")
10548 (commit commit)))
10549 (file-name (git-file-name name version))
10550 (sha256
10551 (base32
10552 "0h9w81ddd0gvkh5n2cvny9ddb5qiac1si0dhinkk0xxh5382qs0m"))))
10553 (build-system ruby-build-system)
10554 (arguments
10555 `(#:test-target "spec"
10556 #:phases (modify-phases %standard-phases
10557 (add-before 'build 'drop-signing-key-requirement
10558 (lambda _
10559 (substitute* "pdf-inspector.gemspec"
10560 (("spec.signing_key =.*")
10561 "spec.signing_key = nil"))
10562 #t))
10563 (replace 'check
10564 (lambda _
10565 (substitute* "pdf-inspector.gemspec"
10566 ((".*rubocop.*") "")
10567 ((".*yard.*") ""))
10568 (invoke "rspec"))))))
10569 (native-inputs
10570 `(("ruby-rspec" ,ruby-rspec)))
10571 (propagated-inputs
10572 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
10573 (home-page "https://github.com/prawnpdf/pdf-inspector")
10574 (synopsis "Analysis classes for inspecting PDF output")
10575 (description "This library provides a number of PDF::Reader based tools for
10576 use in testing PDF output. Presently, the primary purpose of this tool is to
10577 support the tests found in Prawn, a pure Ruby PDF generation library.")
10578 (license %prawn-project-licenses))))
10579
10580 (define-public ruby-pdf-core
10581 (package
10582 (name "ruby-pdf-core")
10583 (version "0.8.1")
10584 (source (origin
10585 (method url-fetch)
10586 (uri (rubygems-uri "pdf-core" version))
10587 (sha256
10588 (base32
10589 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
10590 (build-system ruby-build-system)
10591 (arguments
10592 ; No test target
10593 `(#:tests? #f))
10594 (home-page "https://github.com/prawnpdf/pdf-core")
10595 (synopsis "Low level PDF features for Prawn")
10596 (description "This is an experimental gem that extracts low-level PDF
10597 functionality from Prawn.")
10598 (license license:gpl3+)))
10599
10600 (define-public ruby-prawn
10601 ;; There hasn't been a new release since 2017/03/17.
10602 (let ((revision "1")
10603 (commit "d980247be8a00e7c59cd4e5785e3aa98f9856db1"))
10604 (package
10605 (name "ruby-prawn")
10606 (version (git-version "2.2.2" revision commit))
10607 (source (origin
10608 (method git-fetch)
10609 (uri (git-reference
10610 (url "https://github.com/prawnpdf/prawn.git")
10611 (commit commit)))
10612 (file-name (git-file-name name version))
10613 (sha256
10614 (base32
10615 "0mcmvf22h8il93yq48v9f31qpy27pvjxgv9172p0f4x9lqy0imwr"))))
10616 (build-system ruby-build-system)
10617 (arguments
10618 `(#:phases
10619 (modify-phases %standard-phases
10620 (add-before 'build 'drop-signing-key-requirement
10621 (lambda _
10622 (substitute* "prawn.gemspec"
10623 (("spec.signing_key =.*")
10624 "spec.signing_key = nil"))
10625 #t))
10626 (replace 'check
10627 (lambda* (#:key tests? #:allow-other-keys)
10628 (when tests?
10629 ;; The Prawn manual test fails (see:
10630 ;; https://github.com/prawnpdf/prawn/issues/1163), so exclude
10631 ;; it.
10632 (invoke "rspec" "--exclude-pattern" "prawn_manual_spec.rb"))
10633 #t)))))
10634 (propagated-inputs
10635 `(("ruby-pdf-core" ,ruby-pdf-core)
10636 ("ruby-ttfunk" ,ruby-ttfunk)))
10637 (native-inputs
10638 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
10639 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
10640 ("ruby-rspec" ,ruby-rspec)
10641 ("ruby-simplecov" ,ruby-simplecov)
10642 ("ruby-yard" ,ruby-yard)))
10643 (home-page "https://prawnpdf.org/api-docs/2.0/")
10644 (synopsis "PDF generation for Ruby")
10645 (description "Prawn is a pure Ruby PDF generation library.")
10646 (license %prawn-project-licenses))))
10647
10648 (define-public ruby-prawn-table
10649 (package
10650 (name "ruby-prawn-table")
10651 (version "0.2.2")
10652 (source (origin
10653 (method url-fetch)
10654 (uri (rubygems-uri "prawn-table" version))
10655 (sha256
10656 (base32
10657 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
10658 (build-system ruby-build-system)
10659 (propagated-inputs
10660 `(("ruby-prawn" ,ruby-prawn)
10661 ("ruby-pdf-inspector" ,ruby-pdf-inspector)))
10662 (native-inputs
10663 `(("bundler" ,bundler)
10664 ("ruby-yard" ,ruby-yard)
10665 ("ruby-mocha" ,ruby-mocha)
10666 ("ruby-coderay" ,ruby-coderay)
10667 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
10668 ("ruby-simplecov" ,ruby-simplecov)
10669 ("ruby-rspec-2" ,ruby-rspec-2)))
10670 (arguments
10671 '(;; TODO: 1 test fails
10672 ;; Failure/Error: pdf.page_count.should == 1
10673 ;; expected: 1
10674 ;; got: 2 (using ==)
10675 ;; # ./spec/table_spec.rb:1308
10676 ;;
10677 ;; 225 examples, 1 failure
10678 #:tests? #f
10679 #:phases
10680 (modify-phases %standard-phases
10681 (add-before 'check 'patch-gemspec
10682 (lambda _
10683 (substitute* "prawn-table.gemspec"
10684 ;; Loosen the requirement for pdf-inspector
10685 (("~> 1\\.1\\.0") ">= 0")
10686 ;; Loosen the requirement for pdf-reader
10687 (("~> 1\\.2") ">= 0"))))
10688 (replace 'check
10689 (lambda* (#:key tests? #:allow-other-keys)
10690 (when tests?
10691 (invoke "rspec"))
10692 #t)))))
10693 (home-page "https://github.com/prawnpdf/prawn-table")
10694 (synopsis "Tables support for Prawn")
10695 (description "This gem provides tables support for Prawn.")
10696 (license license:gpl3+)))
10697
10698 (define-public ruby-kramdown
10699 (package
10700 (name "ruby-kramdown")
10701 (version "2.3.0")
10702 (source (origin
10703 (method url-fetch)
10704 (uri (rubygems-uri "kramdown" version))
10705 (sha256
10706 (base32
10707 "1vmw752c26ny2jwl0npn0gbyqwgz4hdmlpxnsld9qi9xhk5b1qh7"))))
10708 (build-system ruby-build-system)
10709 (arguments `(#:tests? #f)); FIXME: some test failures
10710 (native-inputs
10711 `(("ruby-prawn" ,ruby-prawn)
10712 ("ruby-prawn-table" ,ruby-prawn-table)))
10713 (home-page "https://kramdown.gettalong.org/")
10714 (synopsis "Markdown parsing and converting library")
10715 (description "Kramdown is a library for parsing and converting a superset
10716 of Markdown. It is completely written in Ruby, supports standard Markdown
10717 (with some minor modifications) and various extensions that have been made
10718 popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
10719 (license license:expat)))
10720
10721 (define-public ruby-http-parser.rb
10722 (package
10723 (name "ruby-http-parser.rb")
10724 (version "0.6.0")
10725 (source
10726 (origin
10727 (method url-fetch)
10728 (uri (rubygems-uri "http_parser.rb" version))
10729 (sha256
10730 (base32
10731 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
10732 (build-system ruby-build-system)
10733 (arguments
10734 ;; No tests
10735 `(#:tests? #f))
10736 (native-inputs
10737 `(("ruby-rake-compiler" ,ruby-rake-compiler)
10738 ("ruby-rspec" ,ruby-rspec)))
10739 (home-page "https://github.com/tmm1/http_parser.rb")
10740 (synopsis "HTTP parser un Ruby")
10741 (description "This gem is a simple callback-based HTTP request/response
10742 parser for writing http servers, clients and proxies.")
10743 (license license:expat)))
10744
10745 (define-public ruby-em-websocket
10746 (package
10747 (name "ruby-em-websocket")
10748 (version "0.5.1")
10749 (source
10750 (origin
10751 (method url-fetch)
10752 (uri (rubygems-uri "em-websocket" version))
10753 (sha256
10754 (base32
10755 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
10756 (build-system ruby-build-system)
10757 (arguments
10758 ;; No tests
10759 `(#:tests? #f))
10760 (propagated-inputs
10761 `(("ruby-eventmachine" ,ruby-eventmachine)
10762 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
10763 (native-inputs
10764 `(("bundler" ,bundler)
10765 ("ruby-rspec" ,ruby-rspec)))
10766 (home-page "https://github.com/igrigorik/em-websocket")
10767 (synopsis "EventMachine based WebSocket server")
10768 (description "Em-websocket is an EventMachine based WebSocket server
10769 implementation.")
10770 (license license:expat)))
10771
10772 (define-public ruby-rouge
10773 (package
10774 (name "ruby-rouge")
10775 (version "3.21.0")
10776 (source (origin
10777 (method url-fetch)
10778 (uri (rubygems-uri "rouge" version))
10779 (sha256
10780 (base32
10781 "1agrrmj88k9jkk36ra1ml2c1jffpp595pkxmcla74ac9ia09vn3s"))))
10782 (build-system ruby-build-system)
10783 (arguments `(#:tests? #f)); No rakefile
10784 (home-page "http://rouge.jneen.net/")
10785 (synopsis "Code highlighter")
10786 (description "Rouge is a code highlighter written in Ruby. It supports more
10787 than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
10788 is compatible with stylesheets designed for pygments.")
10789 (license (list
10790 ;; rouge is licensed under expat
10791 license:expat
10792 ;; pygments is licensed under bsd-2
10793 license:bsd-2))))
10794
10795 (define-public ruby-rouge-2
10796 (package
10797 (inherit ruby-rouge)
10798 (version "2.2.1")
10799 (source (origin
10800 (method url-fetch)
10801 (uri (rubygems-uri "rouge" version))
10802 (sha256
10803 (base32
10804 "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs"))))))
10805
10806 (define-public ruby-hashie
10807 (package
10808 (name "ruby-hashie")
10809 (version "3.6.0")
10810 (source (origin
10811 (method url-fetch)
10812 (uri (rubygems-uri "hashie" version))
10813 (sha256
10814 (base32
10815 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
10816 (build-system ruby-build-system)
10817 (native-inputs
10818 `(("bundler" ,bundler)))
10819 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
10820 (home-page "https://github.com/intridea/hashie")
10821 (synopsis "Extensions to Ruby Hashes")
10822 (description "Hashie is a collection of classes and mixins that make Ruby
10823 hashes more powerful.")
10824 (license license:expat)))
10825
10826 (define-public ruby-heredoc-unindent
10827 (package
10828 (name "ruby-heredoc-unindent")
10829 (version "1.2.0")
10830 (source (origin
10831 (method url-fetch)
10832 (uri (rubygems-uri "heredoc_unindent" version))
10833 (sha256
10834 (base32
10835 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
10836 (build-system ruby-build-system)
10837 (native-inputs
10838 `(("ruby-hoe" ,ruby-hoe)))
10839 (home-page "https://github.com/adrianomitre/heredoc_unindent")
10840 (synopsis "Heredoc indentation cleaner")
10841 (description "This gem removes common margin from indented strings, such
10842 as the ones produced by indented heredocs. In other words, it strips out
10843 leading whitespace chars at the beginning of each line, but only as much as
10844 the line with the smallest margin.
10845
10846 It is acknowledged that many strings defined by heredocs are just code and
10847 fact is that most parsers are insensitive to indentation. If, however, the
10848 strings are to be used otherwise, be it for printing or testing, the extra
10849 indentation will probably be an issue and hence this gem.")
10850 (license license:expat)))
10851
10852 (define-public ruby-safe-yaml
10853 (package
10854 (name "ruby-safe-yaml")
10855 (version "1.0.5")
10856 (source
10857 (origin
10858 (method git-fetch)
10859 (uri (git-reference
10860 (url "https://github.com/dtao/safe_yaml")
10861 (commit version)))
10862 (file-name (git-file-name name version))
10863 (sha256
10864 (base32
10865 "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg"))))
10866 (build-system ruby-build-system)
10867 (native-inputs
10868 `(("ruby-rspec" ,ruby-rspec)
10869 ("ruby-hashie" ,ruby-hashie)
10870 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
10871 (arguments
10872 '(#:test-target "spec"
10873 #:phases
10874 (modify-phases %standard-phases
10875 (add-before 'check 'set-TZ
10876 (lambda _
10877 ;; This test is dependent on the timezone
10878 ;; spec/transform/to_date_spec.rb:35
10879 ;; # SafeYAML::Transform::ToDate converts times to the local
10880 ;; timezone
10881 (setenv "TZ" "UTC-11")
10882 #t)))))
10883 (home-page "https://github.com/dtao/safe_yaml")
10884 (synopsis "YAML parser")
10885 (description "The SafeYAML gem provides an alternative implementation of
10886 YAML.load suitable for accepting user input in Ruby applications.")
10887 (license license:expat)))
10888
10889 (define-public ruby-mercenary
10890 (package
10891 (name "ruby-mercenary")
10892 (version "0.3.6")
10893 (source (origin
10894 (method url-fetch)
10895 (uri (rubygems-uri "mercenary" version))
10896 (sha256
10897 (base32
10898 "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"))))
10899 (build-system ruby-build-system)
10900 (arguments `(#:test-target "spec"))
10901 (native-inputs
10902 `(("bundler" ,bundler)))
10903 (home-page "https://github.com/jekyll/mercenary")
10904 (synopsis "Command-line apps library in Ruby")
10905 (description "Mercenary is a lightweight and flexible library for writing
10906 command-line apps in Ruby.")
10907 (license license:expat)))
10908
10909 (define-public ruby-liquid
10910 (package
10911 (name "ruby-liquid")
10912 (version "4.0.0")
10913 (source (origin
10914 (method url-fetch)
10915 (uri (rubygems-uri "liquid" version))
10916 (sha256
10917 (base32
10918 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
10919 (build-system ruby-build-system)
10920 (arguments `(#:tests? #f)); No rakefile
10921 (home-page "https://shopify.github.io/liquid/")
10922 (synopsis "Template language")
10923 (description "Liquid is a template language written in Ruby. It is used
10924 to load dynamic content on storefronts.")
10925 (license license:expat)))
10926
10927 (define-public ruby-forwardable-extended
10928 (package
10929 (name "ruby-forwardable-extended")
10930 (version "2.6.0")
10931 (source (origin
10932 (method url-fetch)
10933 (uri (rubygems-uri "forwardable-extended" version))
10934 (sha256
10935 (base32
10936 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
10937 (build-system ruby-build-system)
10938 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
10939 (home-page "https://github.com/envygeeks/forwardable-extended")
10940 (synopsis "Delegation to hashes and instance variables in Forwardable")
10941 (description "Forwardable Extended provides more @code{Forwardable}
10942 methods for your source as @code{Forwardable::Extended}.")
10943 (license license:expat)))
10944
10945 (define-public ruby-pathutil
10946 (package
10947 (name "ruby-pathutil")
10948 (version "0.16.2")
10949 (source (origin
10950 (method url-fetch)
10951 (uri (rubygems-uri "pathutil" version))
10952 (sha256
10953 (base32
10954 "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"))))
10955 (build-system ruby-build-system)
10956 (propagated-inputs
10957 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
10958 (native-inputs
10959 `(("bundler" ,bundler)
10960 ("ruby-rspec" ,ruby-rspec)))
10961 ;; Fails with: cannot load such file --
10962 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
10963 (arguments `(#:tests? #f))
10964 (home-page "https://github.com/envygeeks/pathutil")
10965 (synopsis "Extended implementation of Pathname")
10966 (description "Pathutil tries to be a faster pure Ruby implementation of
10967 Pathname.")
10968 (license license:expat)))
10969
10970 (define-public jekyll
10971 (package
10972 (name "jekyll")
10973 (version "3.8.6")
10974 (source (origin
10975 (method url-fetch)
10976 (uri (rubygems-uri "jekyll" version))
10977 (sha256
10978 (base32
10979 "1ph1jjjl25vmzif7bvxzviq7azjm384pm7ba4k24cah94285bzhz"))))
10980 (build-system ruby-build-system)
10981 (arguments
10982 ;; No rakefile, but a test subdirectory.
10983 `(#:tests? #f
10984 #:phases
10985 (modify-phases %standard-phases
10986 (add-before 'build 'fix-i18n
10987 (lambda _
10988 (substitute* ".gemspec"
10989 (("~> 0.7") ">= 0.7"))
10990 #t)))))
10991 (propagated-inputs
10992 `(("ruby-addressable" ,ruby-addressable)
10993 ("ruby-colorator" ,ruby-colorator)
10994 ("ruby-em-websocket" ,ruby-em-websocket)
10995 ("ruby-i18n" ,ruby-i18n)
10996 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
10997 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
10998 ("ruby-kramdown" ,ruby-kramdown)
10999 ("ruby-liquid" ,ruby-liquid)
11000 ("ruby-mercenary" ,ruby-mercenary)
11001 ("ruby-pathutil" ,ruby-pathutil)
11002 ("ruby-rouge" ,ruby-rouge-2)
11003 ("ruby-safe-yaml" ,ruby-safe-yaml)))
11004 (home-page "https://jekyllrb.com/")
11005 (synopsis "Static site generator")
11006 (description "Jekyll is a simple, blog aware, static site generator.")
11007 (license license:expat)))
11008
11009 (define-public ruby-jekyll-paginate-v2
11010 (package
11011 (name "ruby-jekyll-paginate-v2")
11012 (version "2.0.0")
11013 (source (origin
11014 (method url-fetch)
11015 (uri (rubygems-uri "jekyll-paginate-v2" version))
11016 (sha256
11017 (base32
11018 "154bfpyml6abxww9868hhyfvxasl8qhsc5zy2q30c7dxaj0igdib"))))
11019 (build-system ruby-build-system)
11020 (propagated-inputs
11021 `(("jekyll" ,jekyll)))
11022 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
11023 (synopsis "Pagination Generator for Jekyll 3")
11024 (description "The Pagination Generator forms the core of the pagination
11025 logic in Jekyll. It calculates and generates the pagination pages.")
11026 (license license:expat)))
11027
11028 (define-public ruby-faraday
11029 (package
11030 (name "ruby-faraday")
11031 (version "0.15.4")
11032 (source
11033 (origin
11034 (method url-fetch)
11035 (uri (rubygems-uri "faraday" version))
11036 (sha256
11037 (base32
11038 "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0"))))
11039 (build-system ruby-build-system)
11040 (arguments
11041 '(#:tests? #f))
11042 (propagated-inputs
11043 `(("ruby-multipart-post" ,ruby-multipart-post)))
11044 (synopsis "Ruby HTTP/REST API client library")
11045 (description
11046 "Faraday is a HTTP/REST API client library which provides a common
11047 interface over different adapters.")
11048 (home-page "https://github.com/lostisland/faraday")
11049 (license license:expat)))
11050
11051 (define-public ruby-nio4r
11052 (package
11053 (name "ruby-nio4r")
11054 (version "2.5.2")
11055 (source
11056 (origin
11057 (method url-fetch)
11058 (uri (rubygems-uri "nio4r" version))
11059 (sha256
11060 (base32
11061 "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c"))))
11062 (build-system ruby-build-system)
11063 (arguments
11064 '(#:phases
11065 (modify-phases %standard-phases
11066 (add-after 'unpack 'remove-unnecessary-dependencies
11067 (lambda _
11068 (substitute* "spec/spec_helper.rb"
11069 ;; Coveralls is for uploading test coverage information to an
11070 ;; online service, and thus unnecessary for building the Guix
11071 ;; package
11072 (("require \"coveralls\"") "")
11073 (("Coveralls\\.wear!") "")
11074 ;; Remove rspec/retry as we are not retrying the tests
11075 (("require \"rspec/retry\"") "")
11076 (("config\\.display_try_failure_messages = true") "")
11077 (("config\\.verbose_retry = true") ""))
11078 #t))
11079 (add-before 'check 'compile
11080 (lambda _
11081 (invoke "rake" "compile")
11082 #t))
11083 (replace 'check
11084 (lambda* (#:key tests? #:allow-other-keys)
11085 (when tests?
11086 (invoke "rspec"))
11087 #t)))))
11088 (native-inputs
11089 `(("bundler" ,bundler)
11090 ("ruby-rake-compiler" ,ruby-rake-compiler)
11091 ("ruby-rspec" ,ruby-rspec)
11092 ("ruby-rubocop" ,ruby-rubocop)))
11093 (synopsis "New I/O for Ruby")
11094 (description
11095 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
11096 for scalable network clients and servers.")
11097 (home-page "https://github.com/socketry/nio4r")
11098 (license license:expat)))
11099
11100 (define-public ruby-globalid
11101 (package
11102 (name "ruby-globalid")
11103 (version "0.4.2")
11104 (source
11105 (origin
11106 (method url-fetch)
11107 (uri (rubygems-uri "globalid" version))
11108 (sha256
11109 (base32
11110 "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"))))
11111 (build-system ruby-build-system)
11112 (arguments
11113 '(;; No included tests
11114 #:tests? #f))
11115 (propagated-inputs
11116 `(("ruby-activesupport" ,ruby-activesupport)))
11117 (synopsis "Generate URIs idenfitying model instances in Ruby")
11118 (description
11119 "@code{GlobalID} provides a way to generate URIs from a model in Ruby that
11120 uniquely identify it.")
11121 (home-page "https://rubyonrails.org/")
11122 (license license:expat)))
11123
11124 (define-public ruby-sprockets
11125 (package
11126 (name "ruby-sprockets")
11127 (version "3.7.2")
11128 (source
11129 (origin
11130 (method url-fetch)
11131 (uri (rubygems-uri "sprockets" version))
11132 (sha256
11133 (base32
11134 "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"))))
11135 (build-system ruby-build-system)
11136 (arguments
11137 '(;; No included tests
11138 #:tests? #f))
11139 (propagated-inputs
11140 `(("ruby-concurrent" ,ruby-concurrent)
11141 ("ruby-rack" ,ruby-rack)))
11142 (synopsis "Sprockets is a Rack-based asset packaging system")
11143 (description
11144 "Sprockets is a Rack-based asset packaging system that concatenates and
11145 serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
11146 (home-page "https://github.com/rails/sprockets")
11147 (license license:expat)))
11148
11149 (define-public ruby-mustache
11150 (package
11151 (name "ruby-mustache")
11152 (version "1.1.1")
11153 (source
11154 (origin
11155 (method url-fetch)
11156 (uri (rubygems-uri "mustache" version))
11157 (sha256
11158 (base32 "1l0p4wx15mi3wnamfv92ipkia4nsx8qi132c6g51jfdma3fiz2ch"))))
11159 (build-system ruby-build-system)
11160 (native-inputs
11161 `(("ruby-simplecov" ,ruby-simplecov)))
11162 (synopsis "framework-agnostic way to render logic-free views")
11163 (description
11164 "Mustache is a framework-agnostic way to render logic-free views.
11165 Think of Mustache as a replacement for your views. Instead of views
11166 consisting of ERB or HAML with random helpers and arbitrary logic,
11167 your views are broken into two parts: a Ruby class and an HTML
11168 template.")
11169 (home-page "https://github.com/mustache/mustache")
11170 (license license:expat)))
11171
11172 (define-public ruby-mustermann
11173 (package
11174 (name "ruby-mustermann")
11175 (version "1.0.3")
11176 (source
11177 (origin
11178 (method url-fetch)
11179 (uri (rubygems-uri "mustermann" version))
11180 (sha256
11181 (base32
11182 "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1"))))
11183 (build-system ruby-build-system)
11184 (arguments
11185 ;; No tests.
11186 '(#:tests? #f))
11187 (synopsis "Library implementing patterns that behave like regular expressions")
11188 (description "Given a string pattern, Mustermann will turn it into an
11189 object that behaves like a regular expression and has comparable performance
11190 characteristics.")
11191 (home-page "https://github.com/sinatra/mustermann")
11192 (license license:expat)))
11193
11194 (define-public ruby-htmlentities
11195 (package
11196 (name "ruby-htmlentities")
11197 (version "4.3.4")
11198 (source
11199 (origin
11200 (method url-fetch)
11201 (uri (rubygems-uri "htmlentities" version))
11202 (sha256
11203 (base32
11204 "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"))))
11205 (build-system ruby-build-system)
11206 (arguments
11207 `(#:phases
11208 (modify-phases %standard-phases
11209 (replace 'check
11210 (lambda _
11211 (map (lambda (file)
11212 (invoke "ruby" "-Itest" file))
11213 (find-files "./test" ".*_test\\.rb")))))))
11214 (synopsis "Encode and decode (X)HTML entities")
11215 (description
11216 "This package provides a module for encoding and decoding (X)HTML
11217 entities.")
11218 (home-page "https://github.com/threedaymonk/htmlentities")
11219 (license license:expat)))
11220
11221 (define-public ruby-sinatra
11222 (package
11223 (name "ruby-sinatra")
11224 (version "2.0.8.1")
11225 (source
11226 (origin
11227 (method url-fetch)
11228 (uri (rubygems-uri "sinatra" version))
11229 (sha256
11230 (base32
11231 "0riy3hwjab1mr73jcqx3brmbmwspnw3d193j06a5f0fy1w35z15q"))))
11232 (build-system ruby-build-system)
11233 (arguments
11234 `(#:phases
11235 (modify-phases %standard-phases
11236 ;; See: https://github.com/sinatra/sinatra/issues/1578.
11237 (add-after 'extract-gemspec 'fix-slow-doc-generation
11238 (lambda _
11239 (substitute* "sinatra.gemspec"
11240 (("\"README.rdoc\"\\.freeze," all)
11241 (string-append all " \"--exclude=.*\\.md\".freeze,")))
11242 #t)))))
11243 (propagated-inputs
11244 `(("ruby-mustermann" ,ruby-mustermann)
11245 ("ruby-rack" ,ruby-rack)
11246 ("ruby-rack-protection" ,ruby-rack-protection)
11247 ("ruby-tilt" ,ruby-tilt)))
11248 (synopsis "DSL for quick web applications creation in Ruby")
11249 (description
11250 "Sinatra is a DSL for quickly creating web applications in Ruby with
11251 minimal effort.")
11252 (home-page "http://sinatrarb.com/")
11253 (license license:expat)))
11254
11255 (define-public ruby-thin
11256 (package
11257 (name "ruby-thin")
11258 (version "1.7.2")
11259 (source
11260 (origin
11261 (method url-fetch)
11262 (uri (rubygems-uri "thin" version))
11263 (sha256
11264 (base32
11265 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
11266 (build-system ruby-build-system)
11267 (arguments
11268 ;; No tests.
11269 '(#:tests? #f))
11270 (propagated-inputs
11271 `(("ruby-daemons" ,ruby-daemons)
11272 ("ruby-eventmachine" ,ruby-eventmachine)
11273 ("ruby-rack" ,ruby-rack)))
11274 (synopsis "Thin and fast web server for Ruby")
11275 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
11276 @itemize
11277 @item the Mongrel parser,
11278 @item Event Machine, a network I/O library with high scalability, performance
11279 and stability,
11280 @item Rack, a minimal interface between webservers and Ruby frameworks.
11281 @end itemize\n")
11282 (home-page "https://github.com/macournoyer/thin")
11283 (license license:ruby)))
11284
11285 (define-public ruby-skinny
11286 (package
11287 (name "ruby-skinny")
11288 (version "0.2.4")
11289 (source
11290 (origin
11291 (method url-fetch)
11292 (uri (rubygems-uri "skinny" version))
11293 (sha256
11294 (base32
11295 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
11296 (build-system ruby-build-system)
11297 (arguments
11298 '(#:tests? #f ; No included tests
11299 #:phases
11300 (modify-phases %standard-phases
11301 (add-before 'build 'patch-gemspec
11302 (lambda _
11303 (substitute* ".gemspec"
11304 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
11305 "<eventmachine>, [\">= 1.0.0\"")
11306 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, ["))
11307 #t)))))
11308 (propagated-inputs
11309 `(("ruby-eventmachine" ,ruby-eventmachine)
11310 ("ruby-thin" ,ruby-thin)))
11311 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
11312 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
11313 the Thin library.")
11314 (home-page "https://github.com/sj26/skinny")
11315 (license license:expat)))
11316
11317 (define-public ruby-sys-filesystem
11318 (package
11319 (name "ruby-sys-filesystem")
11320 (version "1.3.4")
11321 (source (origin
11322 (method url-fetch)
11323 (uri (rubygems-uri "sys-filesystem" version))
11324 (sha256
11325 (base32
11326 "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01"))))
11327 (build-system ruby-build-system)
11328 (arguments
11329 '(#:phases (modify-phases %standard-phases
11330 (add-before 'check 'set-HOME
11331 (lambda _
11332 ;; Some tests attempt to stat $HOME. Let them.
11333 (setenv "HOME" "/tmp")
11334 #t)))))
11335 (propagated-inputs
11336 `(("ruby-ffi" ,ruby-ffi)))
11337 (native-inputs
11338 `(("ruby-mkmf-lite" ,ruby-mkmf-lite)))
11339 (synopsis "Gather file system information")
11340 (description
11341 "The @code{sys-filesystem} library provides a cross-platform interface
11342 for gathering file system information, such as disk space and mount points.")
11343 (home-page "https://github.com/djberg96/sys-filesystem")
11344 (license license:asl2.0)))
11345
11346 (define-public mailcatcher
11347 (package
11348 (name "mailcatcher")
11349 (version "0.7.1")
11350 (source
11351 (origin
11352 (method url-fetch)
11353 (uri (rubygems-uri "mailcatcher" version))
11354 (sha256
11355 (base32
11356 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
11357 (build-system ruby-build-system)
11358 (arguments
11359 ;; Tests require web/assets which is not included in the output. We
11360 ;; might be able to fix this by adding the Git repository to the GEM_PATH
11361 ;; of the tests. See ruby-mysql2.
11362 '(#:tests? #f
11363 #:phases
11364 (modify-phases %standard-phases
11365 (add-before 'build 'patch-gemspec
11366 (lambda _
11367 (substitute* ".gemspec"
11368 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
11369 "<eventmachine>, [\">= 1.0.9.1")
11370 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
11371 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
11372 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))
11373 #t))
11374 (add-before 'build 'loosen-dependency-contraint
11375 (lambda _
11376 (substitute* "lib/mail_catcher.rb"
11377 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
11378 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
11379 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
11380 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))
11381 #t)))))
11382 (inputs
11383 `(("ruby-eventmachine" ,ruby-eventmachine)
11384 ("ruby-mail" ,ruby-mail)
11385 ("ruby-rack" ,ruby-rack)
11386 ("ruby-sinatra" ,ruby-sinatra)
11387 ("ruby-skinny" ,ruby-skinny)
11388 ("ruby-sqlite3" ,ruby-sqlite3)
11389 ("ruby-thin" ,ruby-thin)))
11390 (synopsis "SMTP server which catches messages to display them a browser")
11391 (description
11392 "MailCatcher runs a super simple SMTP server which catches any message
11393 sent to it to display in a web interface. Run mailcatcher, set your favourite
11394 app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
11395 then check out http://127.0.0.1:1080 to see the mail.")
11396 (home-page "https://mailcatcher.me")
11397 (license license:expat)))
11398
11399 (define-public ruby-backport
11400 (package
11401 (name "ruby-backport")
11402 (version "1.1.2")
11403 (source
11404 (origin
11405 ;; The gem does not include test code, so fetch from the Git repository.
11406 (method git-fetch)
11407 (uri (git-reference
11408 (url "https://github.com/castwide/backport")
11409 (commit (string-append "v" version))))
11410 (file-name (git-file-name name version))
11411 (sha256
11412 (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2"))))
11413 (build-system ruby-build-system)
11414 (arguments
11415 `(#:test-target "spec"))
11416 (native-inputs
11417 `(("bundler" ,bundler)
11418 ("ruby-rspec" ,ruby-rspec)))
11419 (inputs
11420 `(("ruby-simplecov" ,ruby-simplecov)))
11421 (synopsis "Pure Ruby library for event-driven IO")
11422 (description
11423 "This package provides a pure Ruby library for event-driven IO.")
11424 (home-page "https://github.com/castwide/backport")
11425 (license license:expat)))
11426
11427 (define-public ruby-json-schema
11428 (package
11429 (name "ruby-json-schema")
11430 (version "2.8.1")
11431 (source
11432 (origin
11433 (method url-fetch)
11434 (uri (rubygems-uri "json-schema" version))
11435 (sha256
11436 (base32
11437 "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5"))))
11438 (build-system ruby-build-system)
11439 (arguments
11440 `(#:tests? #f ; no tests
11441 #:phases
11442 (modify-phases %standard-phases
11443 (replace 'build
11444 (lambda _
11445 (invoke "gem" "build" ".gemspec"))))))
11446 (propagated-inputs
11447 `(("ruby-addressable" ,ruby-addressable)))
11448 (synopsis "Ruby JSON Schema Validator")
11449 (description "This library provides Ruby with an interface for validating
11450 JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy
11451 support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1
11452 is also included.")
11453 (home-page "https://github.com/ruby-json-schema/json-schema")
11454 (license license:expat)))
11455
11456 (define-public swagger-diff
11457 (package
11458 (name "swagger-diff")
11459 (version "1.1.2")
11460 (source
11461 (origin
11462 (method url-fetch)
11463 (uri (rubygems-uri "swagger-diff" version))
11464 (sha256
11465 (base32
11466 "1hxx50nga1bqn254iqjcdwkc9c72364ks9lyjyw10ajz0l0ly7sn"))))
11467 (build-system ruby-build-system)
11468 (arguments
11469 `(#:test-target "spec"
11470 #:phases
11471 (modify-phases %standard-phases
11472 ;; Don't run or require rubocop, the code linting tool, as this is a
11473 ;; bit unnecessary.
11474 (add-after 'unpack 'dont-run-rubocop
11475 (lambda _
11476 (substitute* "Rakefile"
11477 ((".*rubocop.*") "")
11478 ((".*RuboCop.*") ""))
11479 #t)))))
11480 (propagated-inputs
11481 `(("ruby-json-schema" ,ruby-json-schema)))
11482 (native-inputs
11483 `(("bundler" ,bundler)
11484 ("ruby-rspec-core" ,ruby-rspec-core)
11485 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
11486 (synopsis
11487 "Compare Open API Initiative specification files")
11488 (description
11489 "Swagger::Diff is a utility for comparing two different Open API
11490 Initiative (OAI) specifications (formerly known as Swagger specifications).
11491 It is intended to determine whether a newer API specification is
11492 backwards-compatible with an older API specification.")
11493 (home-page "https://github.com/civisanalytics/swagger-diff")
11494 (license license:bsd-3)))
11495
11496 (define-public ruby-reverse-markdown
11497 (package
11498 (name "ruby-reverse-markdown")
11499 (version "1.1.0")
11500 (source
11501 (origin
11502 (method url-fetch)
11503 (uri (rubygems-uri "reverse_markdown" version))
11504 (sha256
11505 (base32
11506 "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg"))))
11507 (build-system ruby-build-system)
11508 (propagated-inputs
11509 `(("ruby-nokogiri" ,ruby-nokogiri)))
11510 (native-inputs
11511 `(("bundler" ,bundler)
11512 ("ruby-rspec" ,ruby-rspec)
11513 ("ruby-kramdown" ,ruby-kramdown)
11514 ("ruby-simplecov" ,ruby-simplecov)))
11515 (arguments
11516 `(#:phases
11517 (modify-phases %standard-phases
11518 (replace 'check
11519 (lambda* (#:key tests? #:allow-other-keys)
11520 (when tests?
11521 (invoke "rspec"))
11522 #t)))))
11523 (synopsis "Convert HTML into Markdown")
11524 (description
11525 "This Ruby module allows you to map simple HTML back into
11526 Markdown---e.g., if you want to import existing HTML data in your
11527 application.")
11528 (home-page "https://github.com/xijo/reverse_markdown")
11529 (license license:wtfpl2)))
11530
11531 (define-public ruby-solargraph
11532 (package
11533 (name "ruby-solargraph")
11534 (version "0.36.0")
11535 (source
11536 (origin
11537 (method url-fetch)
11538 (uri (rubygems-uri "solargraph" version))
11539 (sha256
11540 (base32
11541 "0b93xzkgd1h06da9gdnwivj1mzbil8lc072y2838dy6i7bxgpy9i"))))
11542 (build-system ruby-build-system)
11543 (propagated-inputs
11544 `(("ruby-backport" ,ruby-backport)
11545 ("bundler" ,bundler)
11546 ("ruby-htmlentities" ,ruby-htmlentities)
11547 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
11548 ("ruby-maruku" ,ruby-maruku)
11549 ("ruby-nokogiri" ,ruby-nokogiri)
11550 ("ruby-parser" ,ruby-parser)
11551 ("ruby-reverse-markdown" ,ruby-reverse-markdown)
11552 ("ruby-rubocop" ,ruby-rubocop)
11553 ("ruby-thor" ,ruby-thor)
11554 ("ruby-tilt" ,ruby-tilt)
11555 ("ruby-yard" ,ruby-yard)))
11556 (native-inputs
11557 `(("ruby-rspec" ,ruby-rspec)
11558 ("ruby-pry" ,ruby-pry)
11559 ("ruby-simplecov" ,ruby-simplecov)
11560 ("ruby-webmock" ,ruby-webmock-2)))
11561 ;; FIXME: can't figure out how to run the tests properly:
11562
11563 ;; An error occurred while loading spec_helper.
11564 ;; Failure/Error: return gem_original_require(path)
11565 ;; LoadError:
11566 ;; cannot load such file -- spec_helper
11567 (arguments
11568 '(#:tests? #f
11569 #:phases
11570 (modify-phases %standard-phases
11571 (replace 'check
11572 (lambda* (#:key tests? #:allow-other-keys)
11573 (when tests?
11574 (invoke "rspec"))
11575 #t)))))
11576 (synopsis
11577 "IDE tools for code completion, inline documentation, and static analysis")
11578 (description
11579 "Solargraph provides a comprehensive suite of tools for Ruby
11580 programming: intellisense, diagnostics, inline documentation, and type
11581 checking.")
11582 (home-page "https://solargraph.org/")
11583 (license license:expat)))
11584
11585 (define-public ruby-wayback-machine-downloader
11586 (package
11587 (name "ruby-wayback-machine-downloader")
11588 (version "2.2.1")
11589 (source
11590 (origin
11591 (method url-fetch)
11592 (uri (rubygems-uri
11593 "wayback_machine_downloader"
11594 version))
11595 (sha256
11596 (base32
11597 "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2"))))
11598 (build-system ruby-build-system)
11599 (arguments
11600 '(#:tests? #f)) ; no tests
11601 (synopsis "Download archived websites from the Wayback Machine")
11602 (description
11603 "Wayback Machine Downloader is a command line tool for downloading
11604 websites from the Internet Archive's Wayback Machine (archive.org).
11605 It allows fine grained control over what to download by specifying
11606 which snapshots to consider and what files to include.")
11607 (home-page
11608 "https://github.com/hartator/wayback-machine-downloader")
11609 (license license:expat)))
11610
11611 (define-public ruby-wwtd
11612 (package
11613 (name "ruby-wwtd")
11614 (version "1.4.1")
11615 (home-page "https://github.com/grosser/wwtd")
11616 (source (origin
11617 (method git-fetch)
11618 (uri (git-reference
11619 (url home-page)
11620 (commit (string-append "v" version))))
11621 (file-name (git-file-name name version))
11622 (sha256
11623 (base32
11624 "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2"))
11625 (modules '((guix build utils)))
11626 (snippet
11627 '(begin
11628 ;; Remove bundled library.
11629 (delete-file "spec/rake-12.3.0.gem")
11630 #t))))
11631 (build-system ruby-build-system)
11632 (arguments
11633 '(;; XXX: Tests need multiple versions of ruby, wants to run
11634 ;; `bundle install`, etc.
11635 #:tests? #f
11636 #:phases (modify-phases %standard-phases
11637 (replace 'replace-git-ls-files
11638 (lambda _
11639 (substitute* "wwtd.gemspec"
11640 (("git ls-files lib/ bin/`")
11641 "find lib/ bin/ -type f |sort`"))
11642 #t))
11643 (add-before 'check 'remove-version-constraints
11644 (lambda _
11645 (delete-file "Gemfile.lock")
11646 #t))
11647 (replace 'check
11648 (lambda* (#:key tests? #:allow-other-keys)
11649 (if tests?
11650 (invoke "rspec" "spec/")
11651 (format #t "test suite not run~%"))
11652 #t)))))
11653 (native-inputs
11654 `(("ruby-bump" ,ruby-bump)
11655 ("ruby-rspec" ,ruby-rspec)))
11656 (synopsis "Run @file{.travis.yml} files locally")
11657 (description
11658 "WWTD is a @dfn{Travis Simulator} that lets you run test matrices
11659 defined in @file{.travis.yml} on your local machine, using @code{rvm},
11660 @code{rbenv}, or @code{chruby} to test different versions of Ruby.")
11661 (license license:expat)))