gnu: facter: Update to 4.0.34.
[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 ;;;
25 ;;; This file is part of GNU Guix.
26 ;;;
27 ;;; GNU Guix is free software; you can redistribute it and/or modify it
28 ;;; under the terms of the GNU General Public License as published by
29 ;;; the Free Software Foundation; either version 3 of the License, or (at
30 ;;; your option) any later version.
31 ;;;
32 ;;; GNU Guix is distributed in the hope that it will be useful, but
33 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
34 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
35 ;;; GNU General Public License for more details.
36 ;;;
37 ;;; You should have received a copy of the GNU General Public License
38 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
39
40 (define-module (gnu packages ruby)
41 #:use-module ((guix licenses) #:prefix license:)
42 #:use-module (gnu packages)
43 #:use-module (gnu packages base)
44 #:use-module (gnu packages bison)
45 #:use-module (gnu packages c)
46 #:use-module (gnu packages check)
47 #:use-module (gnu packages compression)
48 #:use-module (gnu packages crypto)
49 #:use-module (gnu packages databases)
50 #:use-module (gnu packages dbm)
51 #:use-module (gnu packages rails)
52 #:use-module (gnu packages readline)
53 #:use-module (gnu packages autotools)
54 #:use-module (gnu packages haskell-xyz)
55 #:use-module (gnu packages java)
56 #:use-module (gnu packages libffi)
57 #:use-module (gnu packages libidn)
58 #:use-module (gnu packages linux)
59 #:use-module (gnu packages lsof)
60 #:use-module (gnu packages maths)
61 #:use-module (gnu packages ncurses)
62 #:use-module (gnu packages networking)
63 #:use-module (gnu packages node)
64 #:use-module (gnu packages protobuf)
65 #:use-module (gnu packages python)
66 #:use-module (gnu packages python-xyz)
67 #:use-module (gnu packages ragel)
68 #:use-module (gnu packages rsync)
69 #:use-module (gnu packages sqlite)
70 #:use-module (gnu packages tls)
71 #:use-module (gnu packages version-control)
72 #:use-module (guix packages)
73 #:use-module (guix download)
74 #:use-module (guix git-download)
75 #:use-module (guix utils)
76 #:use-module (guix build-system gnu)
77 #:use-module (gnu packages xml)
78 #:use-module (gnu packages web)
79 #:use-module (guix build-system ruby)
80 #:use-module ((srfi srfi-1) #:select (alist-delete)))
81
82 (define %prawn-project-licenses
83 ;; This set of licenses applies to most (all?) components of the Prawn
84 ;; project (it is triple licensed).
85 (list license:ruby
86 license:gpl2+
87 license:gpl3+))
88
89 (define-public ruby
90 (package
91 (name "ruby")
92 (version "2.6.5")
93 (source
94 (origin
95 (method url-fetch)
96 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
97 (version-major+minor version)
98 "/ruby-" version ".tar.xz"))
99 (sha256
100 (base32
101 "0qhsw2mr04f3lqinkh557msr35pb5rdaqy4vdxcj91flgxqxmmnm"))
102 (modules '((guix build utils)))
103 (snippet `(begin
104 ;; Remove bundled libffi
105 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
106 #t))))
107 (build-system gnu-build-system)
108 (arguments
109 `(#:test-target "test"
110 #:configure-flags '("--enable-shared") ; dynamic linking
111 #:phases
112 (modify-phases %standard-phases
113 (add-before 'configure 'replace-bin-sh-and-remove-libffi
114 (lambda _
115 (substitute* '("Makefile.in"
116 "ext/pty/pty.c"
117 "io.c"
118 "lib/mkmf.rb"
119 "process.c"
120 "test/rubygems/test_gem_ext_configure_builder.rb"
121 "test/rdoc/test_rdoc_parser.rb"
122 "test/ruby/test_rubyoptions.rb"
123 "test/ruby/test_process.rb"
124 "test/ruby/test_system.rb"
125 "tool/rbinstall.rb")
126 (("/bin/sh") (which "sh")))
127 #t)))))
128 (inputs
129 `(("readline" ,readline)
130 ("openssl" ,openssl)
131 ("libffi" ,libffi)
132 ("gdbm" ,gdbm)))
133 (propagated-inputs
134 `(("zlib" ,zlib)))
135 (native-search-paths
136 (list (search-path-specification
137 (variable "GEM_PATH")
138 (files (list (string-append "lib/ruby/vendor_ruby"))))))
139 (synopsis "Programming language interpreter")
140 (description "Ruby is a dynamic object-oriented programming language with
141 a focus on simplicity and productivity.")
142 (home-page "https://www.ruby-lang.org")
143 (license license:ruby)))
144
145 (define-public ruby-2.7
146 (package
147 (inherit ruby)
148 (version "2.7.1")
149 (source
150 (origin
151 (method url-fetch)
152 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
153 (version-major+minor version)
154 "/ruby-" version ".tar.gz"))
155 (sha256
156 (base32
157 "0674x98f542y02r7n2yv2qhmh97blqhi2mvh2dn5f000vlxlh66l"))
158 (modules '((guix build utils)))
159 (snippet `(begin
160 ;; Remove bundled libffi
161 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
162 #t))))
163 (arguments
164 `(#:test-target "test"
165 #:configure-flags '("--enable-shared") ; dynamic linking
166 #:phases
167 (modify-phases %standard-phases
168 (add-before 'configure 'replace-bin-sh-and-remove-libffi
169 (lambda _
170 (substitute* '("configure.ac"
171 "template/Makefile.in"
172 "lib/rubygems/installer.rb"
173 "ext/pty/pty.c"
174 "io.c"
175 "lib/mkmf.rb"
176 "process.c"
177 "test/rubygems/test_gem_ext_configure_builder.rb"
178 "test/rdoc/test_rdoc_parser.rb"
179 "test/ruby/test_rubyoptions.rb"
180 "test/ruby/test_process.rb"
181 "test/ruby/test_system.rb"
182 "tool/rbinstall.rb")
183 (("/bin/sh") (which "sh")))
184 #t)))))
185 (native-inputs
186 `(("autoconf" ,autoconf)))))
187
188 (define-public ruby-2.5
189 (package
190 (inherit ruby)
191 (version "2.5.8")
192 (source
193 (origin
194 (method url-fetch)
195 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
196 (version-major+minor version)
197 "/ruby-" version ".tar.xz"))
198 (sha256
199 (base32
200 "0vad5ah1lrdhxsyqr5iqc8c7r7qczpmm76cz8rsf4crimpzv5483"))
201 (modules '((guix build utils)))
202 (snippet `(begin
203 ;; Remove bundled libffi
204 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
205 #t))))))
206
207 (define-public ruby-2.4
208 (package
209 (inherit ruby)
210 (version "2.4.10")
211 (source
212 (origin
213 (method url-fetch)
214 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
215 (version-major+minor version)
216 "/ruby-" version ".tar.xz"))
217 (sha256
218 (base32
219 "1prhqlgik1zmw9lakl6hkriqslspw48pvhxff17h7ns42p8qwrnm"))
220 (modules '((guix build utils)))
221 (snippet `(begin
222 ;; Remove bundled libffi
223 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
224 #t))))))
225
226 (define-public mruby
227 (package
228 (name "mruby")
229 (version "2.0.0")
230 (source
231 (origin
232 (method git-fetch)
233 (uri (git-reference
234 (url "https://github.com/mruby/mruby")
235 (commit version)))
236 (file-name (git-file-name name version))
237 (sha256
238 (base32
239 "1r6w1asjshff43ymdwa6xmrkggza99mi2kw88k7ic6ag2j81hcj5"))))
240 (build-system gnu-build-system)
241 (arguments
242 `(#:test-target "test"
243 #:phases
244 (modify-phases %standard-phases
245 (delete 'configure)
246 (add-after 'unpack 'enable-verbose-tests
247 (lambda _
248 (substitute* "Makefile"
249 (("ruby ./minirake" m)
250 (string-append m " --verbose")))
251 #t))
252 (add-after 'unpack 'disable-broken-tests
253 (lambda _
254 (substitute* "mrbgems/mruby-io/test/io.rb"
255 (("assert\\('IO.popen.+$" m)
256 (string-append m "skip \"Hangs in the Guix build environment\"\n"))
257 (("assert\\('IO#isatty.+$" m)
258 (string-append m "skip \"Disable for Guix; there is no /dev/tty\"\n"))
259 ;; This one is really weird. The *expected* output is all wrong.
260 (("assert\\('`cmd`.*" m)
261 (string-append m "skip \"Disable for Guix\"\n"))
262 (("echo foo")
263 (string-append (which "echo") " foo")))
264 #t))
265 ;; There is no install target
266 (replace 'install
267 (lambda* (#:key outputs #:allow-other-keys)
268 (let* ((out (assoc-ref outputs "out"))
269 (bin (string-append out "/bin"))
270 (lib (string-append out "/lib")))
271 (mkdir-p bin)
272 (copy-recursively "build/host/bin" bin)
273 (mkdir-p lib)
274 (copy-recursively "build/host/lib" lib))
275 #t)))))
276 (native-inputs
277 `(("ruby" ,ruby)
278 ("bison" ,bison)))
279 (home-page "https://github.com/mruby/mruby")
280 (synopsis "Lightweight Ruby")
281 (description "mruby is the lightweight implementation of the Ruby
282 language. Its syntax is Ruby 1.9 compatible. mruby can be linked and
283 embedded within your application.")
284 (license license:expat)))
285
286 (define-public ruby-commander
287 (package
288 (name "ruby-commander")
289 (version "4.4.7")
290 (source
291 (origin
292 (method url-fetch)
293 (uri (rubygems-uri "commander" version))
294 (sha256
295 (base32
296 "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg"))))
297 (build-system ruby-build-system)
298 (arguments
299 `(#:test-target "spec"
300 #:phases
301 (modify-phases %standard-phases
302 ;; Don't run or require rubocop, the code linting tool, as this is a
303 ;; bit unnecessary.
304 (add-after 'unpack 'dont-run-rubocop
305 (lambda _
306 (substitute* "Rakefile"
307 ((".*rubocop.*") "")
308 ((".*RuboCop.*") ""))
309 #t)))))
310 (propagated-inputs
311 `(("ruby-highline" ,ruby-highline)))
312 (native-inputs
313 `(("bundler" ,bundler)
314 ("ruby-rspec-core" ,ruby-rspec-core)
315 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
316 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
317 ("ruby-simplecov" ,ruby-simplecov)))
318 (home-page "https://github.com/commander-rb/commander")
319 (synopsis "Library for building Ruby command-line executables")
320 (description
321 "Commander aims to be a complete solution for Ruby command-line
322 executables. Commander bridges the gap between other terminal related
323 libraries (OptionParser, HighLine), while providing many new features, and an
324 elegant API.")
325 (license license:expat)))
326
327 (define-public ruby-highline
328 (package
329 (name "ruby-highline")
330 (version "2.0.1")
331 (source
332 (origin
333 (method url-fetch)
334 (uri (rubygems-uri "highline" version))
335 (sha256
336 (base32
337 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
338 (build-system ruby-build-system)
339 (arguments
340 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
341 (native-inputs
342 `(("bundler" ,bundler)
343 ("ruby-code-statistics" ,ruby-code-statistics)))
344 (synopsis
345 "HighLine helps you build command-line interfaces")
346 (description
347 "HighLine provides a high-level IO library that provides validation,
348 type conversion, and more for command-line interfaces. HighLine also includes
349 a menu system for providing multiple options to the user.")
350 (home-page "https://github.com/JEG2/highline")
351 (license (list license:gpl2 license:ruby))))
352
353 (define-public ruby-hoe
354 (package
355 (name "ruby-hoe")
356 (version "3.21.0")
357 (source (origin
358 (method url-fetch)
359 (uri (rubygems-uri "hoe" version))
360 (sha256
361 (base32
362 "0qid0n56mgsjvq5ksxajv0gb92akky8imwgvw22ajms5g4fd6nf4"))))
363 (build-system ruby-build-system)
364 (arguments
365 '(#:phases
366 (modify-phases %standard-phases
367 ;; One of the tests fails if the SOURCE_DATE_EPOCH environment
368 ;; variable is set, so unset it for the duration of the tests.
369 ;;
370 ;; TestHoe#test_possibly_better
371 ;; [/tmp/guix-build-ruby-hoe-3.20.0.drv-0/gem/test/test_hoe.rb:250]:
372 ;; Expected: 2019-11-12 00:00:00 UTC
373 ;; Actual: 1970-01-01 00:00:00 UTC
374 (add-before 'check 'unset-SOURCE-DATE-EPOCH
375 (lambda _
376 (unsetenv "SOURCE_DATE_EPOCH")
377 #t))
378 (add-after 'check 'set-SOURCE-DATE-EPOCH-again
379 (lambda _
380 (setenv "SOURCE_DATE_EPOCH" "1")
381 #t)))))
382 (synopsis "Ruby project management helper")
383 (description
384 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
385 maintain, and release projects and includes a dynamic plug-in system allowing
386 for easy extensibility. Hoe ships with plug-ins for all the usual project
387 tasks including rdoc generation, testing, packaging, deployment, and
388 announcement.")
389 (home-page "https://www.zenspider.com/projects/hoe.html")
390 (license license:expat)))
391
392 (define-public ruby-rake-compiler
393 (package
394 (name "ruby-rake-compiler")
395 (version "1.1.0")
396 (source (origin
397 (method url-fetch)
398 (uri (rubygems-uri "rake-compiler" version))
399 (sha256
400 (base32
401 "0l4hg21v0phfrfsc2hilgmwvn2imxr0byqh8dv16bya1s5d3km0q"))))
402 (build-system ruby-build-system)
403 (arguments
404 '(#:tests? #f)) ; needs cucumber
405 (synopsis "Building and packaging helper for Ruby native extensions")
406 (description "Rake-compiler provides a framework for building and
407 packaging native C and Java extensions in Ruby.")
408 (home-page "https://github.com/rake-compiler/rake-compiler")
409 (license license:expat)))
410
411 (define-public ruby-rsync
412 (package
413 (name "ruby-rsync")
414 (version "1.0.9")
415 (source
416 (origin
417 (method url-fetch)
418 (uri (rubygems-uri "rsync" version))
419 (sha256
420 (base32
421 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
422 (build-system ruby-build-system)
423 (arguments
424 '(#:test-target "spec"
425 #:phases
426 (modify-phases %standard-phases
427 (add-after 'unpack 'remove-coveralls-requirement
428 (lambda _
429 (substitute* "spec/spec_helper.rb"
430 (("require 'coveralls'") "")
431 (("Coveralls.wear!") ""))
432 #t)))))
433 (native-inputs
434 `(("bundler" ,bundler)
435 ("rsync" ,rsync)
436 ("ruby-rspec-core" ,ruby-rspec-core)
437 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
438 ("ruby-rspec-mocks" ,ruby-rspec-mocks)))
439 (home-page "https://github.com/jbussdieker/ruby-rsync")
440 (synopsis "Ruby wrapper around rsync")
441 (description
442 "Ruby Rsync is a Ruby library that can synchronize files between remote
443 hosts by wrapping the @file{rsync} binary.")
444 (license license:expat)))
445
446 (define-public ruby-i18n
447 (package
448 (name "ruby-i18n")
449 (version "1.7.0")
450 (source (origin
451 (method url-fetch)
452 (uri (rubygems-uri "i18n" version))
453 (sha256
454 (base32
455 "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl"))))
456 (build-system ruby-build-system)
457 (arguments
458 '(#:tests? #f)) ; no tests
459 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
460 (synopsis "Internationalization library for Ruby")
461 (description "Ruby i18n is an internationalization and localization
462 solution for Ruby programs. It features translation and localization,
463 interpolation of values to translations, pluralization, customizable
464 transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
465 translation data, custom key/scope separator, custom exception handlers, and
466 an extensible architecture with a swappable backend.")
467 (home-page "https://github.com/ruby-i18n/i18n")
468 (license license:expat)))
469
470 (define-public ruby-iruby
471 (package
472 (name "ruby-iruby")
473 (version "0.3")
474 (source
475 (origin
476 (method url-fetch)
477 (uri (rubygems-uri "iruby" version))
478 (sha256
479 (base32
480 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
481 (build-system ruby-build-system)
482 (arguments
483 ;; TODO: Tests currently fail.
484 ;;
485 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
486 ;;
487 ;; 1) Failure:
488 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
489 ;; In [ expected
490 ;;
491 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
492 '(#:tests? #f
493 #:phases
494 (modify-phases %standard-phases
495 (add-after 'unpack 'patch-ipython
496 (lambda* (#:key inputs #:allow-other-keys)
497 (substitute* "lib/iruby/command.rb"
498 (("version = `")
499 (string-append
500 "version = `"
501 (assoc-ref inputs "python-ipython")
502 "/bin/"))
503 (("Kernel\\.exec\\('")
504 (string-append
505 "Kernel.exec('"
506 (assoc-ref inputs "python-ipython")
507 "/bin/")))
508 #t)))))
509 (inputs
510 `(("python-ipython" ,python-ipython)))
511 (propagated-inputs
512 `(("ruby-bond" ,ruby-bond)
513 ("ruby-data_uri" ,ruby-data_uri)
514 ("ruby-mimemagic" ,ruby-mimemagic)
515 ("ruby-multi-json" ,ruby-multi-json)
516 ("ruby-cztop" ,ruby-cztop)
517 ;; Optional inputs
518 ("ruby-pry" ,ruby-pry)))
519 (synopsis "Ruby kernel for Jupyter/IPython")
520 (description
521 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
522 notebook).")
523 (home-page "https://github.com/SciRuby/iruby")
524 (license license:expat)))
525
526 ;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
527 ;; dependencies use RSpec for their test suites! To avoid these circular
528 ;; dependencies, we disable tests for all of the RSpec-related packages.
529 (define-public ruby-rspec-support
530 (package
531 (name "ruby-rspec-support")
532 (version "3.8.0")
533 (source (origin
534 (method url-fetch)
535 (uri (rubygems-uri "rspec-support" version))
536 (sha256
537 (base32
538 "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609"))))
539 (build-system ruby-build-system)
540 (arguments
541 '(#:tests? #f)) ; avoid dependency cycles
542 (synopsis "RSpec support library")
543 (description "Support utilities for RSpec gems.")
544 (home-page "https://github.com/rspec/rspec-support")
545 (license license:expat)))
546
547 (define-public ruby-rspec-core
548 (package
549 (name "ruby-rspec-core")
550 (version "3.8.0")
551 (source (origin
552 (method url-fetch)
553 (uri (rubygems-uri "rspec-core" version))
554 (sha256
555 (base32
556 "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p"))))
557 (build-system ruby-build-system)
558 (arguments
559 '(#:tests? #f)) ; avoid dependency cycles
560 (propagated-inputs
561 `(("ruby-rspec-support" ,ruby-rspec-support)))
562 (synopsis "RSpec core library")
563 (description "Rspec-core provides the RSpec test runner and example
564 groups.")
565 (home-page "https://github.com/rspec/rspec-core")
566 (license license:expat)))
567
568 (define-public ruby-rspec-core-2
569 (package (inherit ruby-rspec-core)
570 (version "2.14.8")
571 (source (origin
572 (method url-fetch)
573 (uri (rubygems-uri "rspec-core" version))
574 (sha256
575 (base32
576 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
577 (propagated-inputs `())))
578
579 (define-public ruby-diff-lcs
580 (package
581 (name "ruby-diff-lcs")
582 (version "1.3")
583 (source (origin
584 (method url-fetch)
585 (uri (rubygems-uri "diff-lcs" version))
586 (sha256
587 (base32
588 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
589 (build-system ruby-build-system)
590 (arguments
591 '(#:tests? #f)) ; avoid dependency cycles
592 (synopsis "Compute the difference between two Enumerable sequences")
593 (description "Diff::LCS computes the difference between two Enumerable
594 sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
595 It includes utilities to create a simple HTML diff output format and a
596 standard diff-like tool.")
597 (home-page "https://github.com/halostatue/diff-lcs")
598 (license license:expat)))
599
600 (define-public ruby-rspec-expectations
601 (package
602 (name "ruby-rspec-expectations")
603 (version "3.8.2")
604 (source (origin
605 (method url-fetch)
606 (uri (rubygems-uri "rspec-expectations" version))
607 (sha256
608 (base32
609 "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm"))))
610 (build-system ruby-build-system)
611 (arguments
612 '(#:tests? #f)) ; avoid dependency cycles
613 (propagated-inputs
614 `(("ruby-rspec-support" ,ruby-rspec-support)
615 ("ruby-diff-lcs" ,ruby-diff-lcs)))
616 (synopsis "RSpec expectations library")
617 (description "Rspec-expectations provides a simple API to express expected
618 outcomes of a code example.")
619 (home-page "https://github.com/rspec/rspec-expectations")
620 (license license:expat)))
621
622 (define-public ruby-rspec-expectations-2
623 (package (inherit ruby-rspec-expectations)
624 (version "2.14.5")
625 (source (origin
626 (method url-fetch)
627 (uri (rubygems-uri "rspec-expectations" version))
628 (sha256
629 (base32
630 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
631 (propagated-inputs
632 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
633
634 (define-public ruby-sorcerer
635 (package
636 (name "ruby-sorcerer")
637 (version "2.0.1")
638 (source
639 (origin
640 (method url-fetch)
641 (uri (rubygems-uri "sorcerer" version))
642 (sha256
643 (base32
644 "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h"))))
645 (build-system ruby-build-system)
646 (synopsis "Ripper-style abstract syntax tree to Ruby source generator")
647 (description "Sorcerer generates Ruby code from a Ripper-like abstract
648 syntax tree (i.e. S-Expressions). Sorcerer is targeted mainly at small
649 snippets of Ruby code, expressable in a single line. Longer examples may be
650 re-sourced, but they will be rendered in a single line format.")
651 (home-page "https://github.com/rspec-given/sorcerer")
652 (license license:expat)))
653
654 (define-public ruby-given-core
655 (package
656 (name "ruby-given-core")
657 (version "3.8.0")
658 (source
659 (origin
660 (method url-fetch)
661 (uri (rubygems-uri "given_core" version))
662 (sha256
663 (base32
664 "1lzyqllbbv6as3qgwz2007mvy7wy247bgkch9adnmh1zfa73bkrg"))))
665 (build-system ruby-build-system)
666 (arguments '(#:tests? #f)) ;no test suite for the core package
667 (propagated-inputs
668 `(("ruby-sorcerer" ,ruby-sorcerer)))
669 (synopsis "Core abstractions used by rspec-given and minitest-given")
670 (description "Given_core is the basic functionality behind rspec-given and
671 minitest-given, extensions that allow the use of Given/When/Then terminology
672 when defining specifications.")
673 (home-page "https://github.com/rspec-given/rspec-given")
674 (license license:expat)))
675
676 (define-public ruby-rspec-given
677 (package
678 (name "ruby-rspec-given")
679 (version "3.8.0")
680 (source
681 (origin
682 (method url-fetch)
683 (uri (rubygems-uri "rspec-given" version))
684 (sha256
685 (base32
686 "1783bazja10kbha8hk15khvybsq88siyax02cpkk688604h54nji"))))
687 (build-system ruby-build-system)
688 (arguments
689 `(#:test-target "rs"
690 #:phases
691 (modify-phases %standard-phases
692 (add-after 'unpack 'fix-rakefile
693 (lambda _
694 (substitute* '("Rakefile" "rakelib/gemspec.rake")
695 (("require '\\./lib/given/.*") "")
696 (("Given::VERSION") (format #f "~s" ,version))
697 ;; Fix the error: "cannot load such file -- example_helper"
698 (("sh \"rspec")
699 "sh \"rspec -Ilib:examples"))
700 #t))
701 (add-after 'extract-gemspec 'delete-failing-tests
702 ;; See: https://github.com/jimweirich/rspec-given/issues/57.
703 (lambda _
704 (substitute* ".gemspec"
705 (("\"spec/lib/given/natural_assertion_spec.rb\".freeze, ")
706 "")
707 (("\"examples/integration/failing_messages_spec.rb\".freeze, ")
708 ""))
709 (delete-file "spec/lib/given/natural_assertion_spec.rb")
710 (delete-file "examples/integration/failing_messages_spec.rb")
711 #t)))))
712 (native-inputs
713 `(("ruby-rspec" ,ruby-rspec)
714 ("ruby-minitest" ,ruby-minitest)))
715 (propagated-inputs
716 `(("ruby-given-core" ,ruby-given-core)
717 ("ruby-rspec" ,ruby-rspec)))
718 (synopsis "Given/When/Then for RSpec and Minitest")
719 (description "Given is an RSpec extension that allows the use of
720 Given/When/Then terminology when defining specifications, in a way similar to
721 the Cucumber Gherkin language.")
722 (home-page "https://github.com/rspec-given/rspec-given")
723 (license license:expat)))
724
725 (define-public ruby-rspec-its
726 (package
727 (name "ruby-rspec-its")
728 (version "1.3.0")
729 (source
730 (origin
731 (method git-fetch)
732 (uri (git-reference
733 (url "https://github.com/rspec/rspec-its")
734 (commit (string-append "v" version))))
735 (file-name (git-file-name name version))
736 (sha256
737 (base32
738 "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p"))))
739 (build-system ruby-build-system)
740 (arguments
741 `(#:test-target "spec"
742 #:phases
743 (modify-phases %standard-phases
744 (add-after 'unpack 'dont-install-gems-from-gemfile
745 (lambda _
746 (substitute* "Gemfile"
747 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
748 ""))
749 #t))
750 (add-before 'build 'loosen-ffi-requirement
751 (lambda _
752 ;; Accept any version of ruby-ffi.
753 (substitute* "Gemfile"
754 ((" gem 'ffi', '~> 1\\.9\\.25'")
755 " gem 'ffi'"))
756 #t))
757 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
758 (lambda _
759 (substitute* "rspec-its.gemspec"
760 (("rake.*") "rake'\n")
761 (("spec.add_development_dependency 'cucumber'.*")
762 "spec.add_development_dependency 'cucumber'\n")
763 (("bundler.*") "bundler'\n")
764 (("\"aruba.*") "'aruba'\n"))
765 #t)))))
766 (propagated-inputs
767 `(("ruby-rspec-core" ,ruby-rspec-core)
768 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
769 (native-inputs
770 `(("bundler" ,bundler)
771 ("ruby-cucumber" ,ruby-cucumber)
772 ("ruby-ffi" ,ruby-ffi)
773 ("ruby-aruba" ,ruby-aruba)))
774 (synopsis "RSpec extension that provides the @code{its} method")
775 (description
776 "RSpec::Its provides the its method as a short-hand to specify the expected
777 value of an attribute. For example, one can use @code{its(:size)\\{should
778 eq(1)\\}}.")
779 (home-page "https://github.com/rspec/rspec-its")
780 (license license:expat)))
781
782 ;;; This variant is used to break a cycle with ruby-protobuf.
783 (define-public ruby-rspec-its-minimal
784 (hidden-package
785 (package
786 (inherit ruby-rspec-its)
787 (arguments
788 (substitute-keyword-arguments (package-arguments ruby-rspec-its)
789 ((#:tests? _ #f) #f)))
790 (native-inputs '()))))
791
792 (define-public ruby-rspec-mocks
793 (package
794 (name "ruby-rspec-mocks")
795 (version "3.8.0")
796 (source (origin
797 (method url-fetch)
798 (uri (rubygems-uri "rspec-mocks" version))
799 (sha256
800 (base32
801 "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp"))))
802 (build-system ruby-build-system)
803 (arguments
804 '(#:tests? #f)) ; avoid dependency cycles
805 (propagated-inputs
806 `(("ruby-rspec-support" ,ruby-rspec-support)
807 ("ruby-diff-lcs" ,ruby-diff-lcs)))
808 (synopsis "RSpec stubbing and mocking library")
809 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
810 support for stubbing and mocking.")
811 (home-page "https://github.com/rspec/rspec-mocks")
812 (license license:expat)))
813
814 (define-public ruby-rspec-mocks-2
815 (package (inherit ruby-rspec-mocks)
816 (version "2.14.6")
817 (source (origin
818 (method url-fetch)
819 (uri (rubygems-uri "rspec-mocks" version))
820 (sha256
821 (base32
822 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
823 (propagated-inputs
824 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
825
826 (define-public ruby-rspec-rerun
827 (package
828 (name "ruby-rspec-rerun")
829 (version "1.1.0")
830 (source
831 (origin
832 (method url-fetch)
833 (uri (rubygems-uri "rspec-rerun" version))
834 (sha256
835 (base32
836 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
837 (build-system ruby-build-system)
838 (arguments
839 '(;; No included tests
840 #:tests? #f))
841 (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
842 (synopsis "Track failed RSpec tests to re-run them")
843 (description
844 "This package provides an automated way to track, and then re-run failed
845 RSpec tests.")
846 (home-page "https://github.com/dblock/rspec-rerun")
847 (license license:expat)))
848
849 (define-public ruby-rspec-wait
850 (package
851 (name "ruby-rspec-wait")
852 (version "0.0.9")
853 (source
854 (origin
855 (method url-fetch)
856 (uri (rubygems-uri "rspec-wait" version))
857 (sha256
858 (base32
859 "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
860 (build-system ruby-build-system)
861 (arguments
862 '(#:phases
863 (modify-phases %standard-phases
864 (replace 'check
865 (lambda _
866 (invoke "rake" "spec"))))))
867 (native-inputs
868 `(("bundler" ,bundler)))
869 (propagated-inputs
870 `(("ruby-rspec" ,ruby-rspec)))
871 (home-page "https://github.com/laserlemon/rspec-wait")
872 (synopsis "Wait for conditions in RSpec")
873 (description
874 "RSpec::Wait strives to make it easier to test asynchronous or slow
875 interactions.")
876 (license license:expat)))
877
878 (define-public ruby-rspec
879 (package
880 (name "ruby-rspec")
881 (version "3.8.0")
882 (source (origin
883 (method url-fetch)
884 (uri (rubygems-uri "rspec" version))
885 (sha256
886 (base32
887 "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3"))))
888 (build-system ruby-build-system)
889 (arguments
890 '(#:tests? #f)) ; avoid dependency cycles
891 (propagated-inputs
892 `(("ruby-rspec-core" ,ruby-rspec-core)
893 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
894 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
895 (synopsis "Behavior-driven development framework for Ruby")
896 (description "RSpec is a behavior-driven development (BDD) framework for
897 Ruby. This meta-package includes the RSpec test runner, along with the
898 expectations and mocks frameworks.")
899 (home-page "https://rspec.info/")
900 (license license:expat)))
901
902 (define-public ruby-rspec-2
903 (package (inherit ruby-rspec)
904 (version "2.14.1")
905 (source (origin
906 (method url-fetch)
907 (uri (rubygems-uri "rspec" version))
908 (sha256
909 (base32
910 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
911 (propagated-inputs
912 `(("ruby-rspec-core" ,ruby-rspec-core-2)
913 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
914 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
915
916 ;; Bundler is yet another source of circular dependencies, so we must disable
917 ;; its test suite as well.
918 (define-public bundler
919 (package
920 (name "bundler")
921 (version "2.1.4")
922 (source (origin
923 (method url-fetch)
924 (uri (rubygems-uri "bundler" version))
925 (sha256
926 (base32
927 "12glbb1357x91fvd004jgkw7ihlkpc9dwr349pd7j83isqhls0ah"))))
928 (build-system ruby-build-system)
929 (arguments
930 '(#:tests? #f)) ; avoid dependency cycles
931 (synopsis "Ruby gem bundler")
932 (description "Bundler automatically downloads and installs a list of gems
933 specified in a \"Gemfile\", as well as their dependencies.")
934 (home-page "https://bundler.io/")
935 (license license:expat)))
936
937 (define-public ruby-builder
938 (package
939 (name "ruby-builder")
940 (version "3.2.3")
941 (source (origin
942 (method url-fetch)
943 (uri (rubygems-uri "builder" version))
944 (sha256
945 (base32
946 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
947 (build-system ruby-build-system)
948 (arguments
949 `(#:phases
950 (modify-phases %standard-phases
951 (add-after 'unpack 'do-not-use-rvm
952 (lambda _
953 (substitute* "rakelib/tags.rake"
954 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
955 #t)))))
956 (synopsis "Ruby library to create structured data")
957 (description "Builder provides a number of builder objects that make it
958 easy to create structured data. Currently the following builder objects are
959 supported: XML Markup and XML Events.")
960 (home-page "https://github.com/jimweirich/builder")
961 (license license:expat)))
962
963 (define-public ruby-bump
964 (package
965 (name "ruby-bump")
966 (version "0.7.0")
967 (source
968 (origin
969 (method url-fetch)
970 (uri (rubygems-uri "bump" version))
971 (sha256
972 (base32
973 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
974 (build-system ruby-build-system)
975 (arguments
976 '(;; No included tests
977 #:tests? #f))
978 (synopsis "Tool for working with Rubygems")
979 (description
980 "Bump provides commands to manage Rubygem versioning, updating to the
981 next patch version for example.")
982 (home-page "https://github.com/gregorym/bump")
983 (license license:expat)))
984
985 (define-public ruby-rjb
986 (package
987 (name "ruby-rjb")
988 (version "1.5.5")
989 (source (origin
990 (method url-fetch)
991 (uri (rubygems-uri "rjb" version))
992 (sha256
993 (base32
994 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
995 (build-system ruby-build-system)
996 (arguments
997 `(#:tests? #f ; no rakefile
998 #:phases
999 (modify-phases %standard-phases
1000 (add-before 'build 'set-java-home
1001 (lambda* (#:key inputs #:allow-other-keys)
1002 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
1003 #t)))))
1004 (native-inputs
1005 `(("jdk" ,icedtea "jdk")))
1006 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
1007 (description "RJB is a bridge program that connects Ruby and Java via the
1008 Java Native Interface.")
1009 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
1010 (license license:lgpl2.1+)))
1011
1012 (define-public ruby-log4r
1013 (package
1014 (name "ruby-log4r")
1015 (version "1.1.10")
1016 (source
1017 (origin
1018 (method url-fetch)
1019 (uri (rubygems-uri "log4r" version))
1020 (sha256
1021 (base32
1022 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
1023 (build-system ruby-build-system)
1024 (arguments
1025 '(#:tests? #f)) ; no Rakefile in gem
1026 (synopsis "Flexible logging library for Ruby")
1027 (description "Comprehensive and flexible logging library written
1028 in Ruby for use in Ruby programs. It features a hierarchical logging
1029 system of any number of levels, custom level names, logger
1030 inheritance, multiple output destinations per log event, execution
1031 tracing, custom formatting, thread safteyness, XML and YAML
1032 configuration, and more.")
1033 (home-page "http://log4r.rubyforge.org/")
1034 (license license:bsd-3)))
1035
1036 (define-public ruby-atoulme-antwrap
1037 (package
1038 (name "ruby-atoulme-antwrap")
1039 (version "0.7.5")
1040 (source (origin
1041 (method url-fetch)
1042 (uri (rubygems-uri "atoulme-Antwrap" version))
1043 (sha256
1044 (base32
1045 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
1046 (build-system ruby-build-system)
1047 ;; Test data required for most of the tests are not included.
1048 (arguments `(#:tests? #f))
1049 (native-inputs
1050 `(("ruby-hoe" ,ruby-hoe)))
1051 (inputs
1052 `(("ruby-rjb" ,ruby-rjb)))
1053 (synopsis "Ruby wrapper for the Ant build tool")
1054 (description "Antwrap is a Ruby module that wraps the Apache Ant build
1055 tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
1056 script.")
1057 (home-page "http://rubyforge.org/projects/antwrap/")
1058 (license license:expat)))
1059
1060 (define-public ruby-atoulme-saikuro
1061 (package
1062 (name "ruby-atoulme-saikuro")
1063 (version "1.2.1")
1064 (source (origin
1065 (method url-fetch)
1066 (uri (rubygems-uri "atoulme-Saikuro" version))
1067 (sha256
1068 (base32
1069 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
1070 (build-system ruby-build-system)
1071 ;; FIXME: There are no unit tests. The tests are demonstrations of the
1072 ;; "saikuro" tool.
1073 (arguments `(#:tests? #f))
1074 (synopsis "Cyclomatic complexity analyzer")
1075 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
1076 given Ruby source code Saikuro will generate a report listing the cyclomatic
1077 complexity of each method found. In addition, Saikuro counts the number of
1078 lines per method and can generate a listing of the number of tokens on each
1079 line of code.")
1080 (home-page "http://www.github.com/atoulme/Saikuro")
1081 ;; File headers contain the BSD-3 license and the README.rdoc says that
1082 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
1083 ;; of the Expat license.
1084 (license license:bsd-3)))
1085
1086 (define-public ruby-pandoc-ruby
1087 (package
1088 (name "ruby-pandoc-ruby")
1089 (version "2.1.4")
1090 (source
1091 (origin
1092 (method git-fetch) ;the gem lacks many test files
1093 (uri (git-reference
1094 (url "https://github.com/xwmx/pandoc-ruby")
1095 (commit version)))
1096 (file-name (git-file-name name version))
1097 (sha256
1098 (base32
1099 "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935"))))
1100 (build-system ruby-build-system)
1101 (arguments
1102 `(#:phases
1103 (modify-phases %standard-phases
1104 (add-after 'unpack 'disable-failing-tests
1105 ;; TODO: Remove this phase after ghc-pandoc gets upgraded to 2.9.2+
1106 ;; (see: https://github.com/xwmx/pandoc-ruby/issues/39).
1107 (lambda _
1108 (substitute* "test/test_conversions.rb"
1109 (("next if from == to.*" all)
1110 (string-append
1111 all
1112 " next if ['plain', 'beamer'].include? to\n")))
1113 #t))
1114 (add-after 'unpack 'patch-pandoc-path
1115 (lambda* (#:key inputs #:allow-other-keys)
1116 (let ((pandoc (string-append (assoc-ref inputs "ghc-pandoc")
1117 "/bin/pandoc")))
1118 (substitute* "lib/pandoc-ruby.rb"
1119 (("@@pandoc_path = 'pandoc'")
1120 (format #f "@@pandoc_path = '~a'" pandoc)))
1121 (substitute* "test/test_pandoc_ruby.rb"
1122 (("('|\")pandoc" _ quote)
1123 (string-append quote pandoc))
1124 (("\\^pandoc")
1125 ".*pandoc"))
1126 #t)))
1127 (add-after 'extract-gemspec 'remove-Gemfile.lock
1128 (lambda _
1129 (delete-file "Gemfile.lock")
1130 (substitute* "pandoc-ruby.gemspec"
1131 (("Gemfile\\.lock") ""))
1132 #t)))))
1133 (native-inputs
1134 `(("ruby-mocha" ,ruby-mocha)))
1135 (inputs
1136 `(("ghc-pandoc" ,ghc-pandoc)))
1137 (synopsis "Ruby wrapper for Pandoc")
1138 (description "PandocRuby is a wrapper for Pandoc, a Haskell library with
1139 command line tools for converting one markup format to another. Pandoc can
1140 convert documents from a variety of formats including markdown,
1141 reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a
1142 variety of other formats, including markdown, reStructuredText, HTML, LaTeX,
1143 ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki
1144 markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and
1145 more.")
1146 (home-page "https://github.com/xwmx/pandoc-ruby")
1147 (license license:expat)))
1148
1149 (define-public ruby-slim
1150 (package
1151 (name "ruby-slim")
1152 (version "4.1.0")
1153 (source
1154 (origin
1155 (method url-fetch)
1156 (uri (rubygems-uri "slim" version))
1157 (sha256
1158 (base32
1159 "0gjx30g84c82qzg32bd7giscvb4206v7mvg56kc839w9wjagn36n"))))
1160 (build-system ruby-build-system)
1161 (arguments
1162 `(#:phases
1163 (modify-phases %standard-phases
1164 ;; See: https://github.com/slim-template/slim/issues/857 and
1165 ;; https://github.com/slim-template/slim/issues/858.
1166 (add-after 'unpack 'skip-broken-tests
1167 (lambda _
1168 (substitute* "test/core/test_embedded_engines.rb"
1169 (("def test_render_with_markdown")
1170 "def skipped_test_render_with_markdown"))
1171 (substitute* "test/translator/test_translator.rb"
1172 (("raise (\"Missing test for.*)" _ tail)
1173 (string-append "print " tail)))
1174 #t))
1175 ;; See: https://salsa.debian.org/ruby-team/ruby-slim/-/commit/
1176 ;; 824862bd99d1675bc699d8fc71ba965a785c1f44.
1177 (add-after 'unpack 'prevent-bundler-interference
1178 (lambda _
1179 (substitute* "Rakefile"
1180 (("require 'bundler/setup'") "nil")
1181 (("Bundler::GemHelper\\.install_tasks") "nil"))
1182 #t)))))
1183 (native-inputs
1184 `(("ruby-rack-test" ,ruby-rack-test)
1185 ("ruby-sinatra" ,ruby-sinatra)))
1186 (propagated-inputs
1187 `(("ruby-temple" ,ruby-temple)
1188 ("ruby-tilt" ,ruby-tilt)))
1189 (synopsis "Minimalist template language for Ruby")
1190 (description "Slim is a template language for Ruby that aims to reduce the
1191 syntax to the minimum while remaining clear.")
1192 (home-page "http://slim-lang.com/")
1193 (license license:expat)))
1194
1195 (define-public ruby-asciidoctor
1196 (package
1197 (name "ruby-asciidoctor")
1198 (version "2.0.10")
1199 (source
1200 (origin
1201 (method git-fetch) ;the gem release lacks a Rakefile
1202 (uri (git-reference
1203 (url "https://github.com/asciidoctor/asciidoctor")
1204 (commit (string-append "v" version))))
1205 (file-name (git-file-name name version))
1206 (sha256
1207 (base32
1208 "0jaxpnsdnx3qyjw5p2lsx1swny12q1i2vxw2kgdp4vlsyjv95z95"))))
1209 (build-system ruby-build-system)
1210 (arguments
1211 `(#:test-target "test:all"
1212 #:phases
1213 (modify-phases %standard-phases
1214 (replace 'replace-git-ls-files
1215 (lambda _
1216 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1217 ;; git ls-files output is merged in ruby-build-system.
1218 (substitute* "asciidoctor.gemspec"
1219 (("`git ls-files -z`")
1220 "`find . -type f -print0 |sort -z|cut -zc3-`"))
1221 #t))
1222 (add-after 'extract-gemspec 'strip-version-requirements
1223 (lambda _
1224 (delete-file "Gemfile")
1225 (substitute* "asciidoctor.gemspec"
1226 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1227 (string-append stripped "\n")))
1228 #t)))))
1229 (native-inputs
1230 `(("ruby-erubis" ,ruby-erubis)
1231 ("ruby-minitest" ,ruby-minitest)
1232 ("ruby-nokogiri" ,ruby-nokogiri)
1233 ("ruby-asciimath" ,ruby-asciimath)
1234 ("ruby-coderay" ,ruby-coderay)
1235 ("ruby-cucumber" ,ruby-cucumber)
1236 ("ruby-haml" ,ruby-haml)
1237 ("ruby-rouge" ,ruby-rouge)
1238 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
1239 ("ruby-simplecov" ,ruby-simplecov)
1240 ("ruby-slim" ,ruby-slim)
1241 ("ruby-tilt" ,ruby-tilt)))
1242 (synopsis "Converter from AsciiDoc content to other formats")
1243 (description "Asciidoctor is a text processor and publishing toolchain for
1244 converting AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other
1245 formats.")
1246 (home-page "https://asciidoctor.org")
1247 (license license:expat)))
1248
1249 (define-public ruby-prawn-icon
1250 (package
1251 (name "ruby-prawn-icon")
1252 (version "2.5.0")
1253 (source
1254 (origin
1255 (method url-fetch)
1256 (uri (rubygems-uri "prawn-icon" version))
1257 (sha256
1258 (base32
1259 "1ivkdf8rdf92hhy97vbmc2a4w97vcvqd58jcj4z9hz3hfsb1526w"))))
1260 (build-system ruby-build-system)
1261 (arguments
1262 `(#:test-target "spec"
1263 #:phases (modify-phases %standard-phases
1264 (add-after 'unpack 'remove-unnecessary-dependencies
1265 (lambda _
1266 (substitute* '("Rakefile" "spec/spec_helper.rb")
1267 ((".*[Bb]undler.*") "")
1268 (("^require 'rubocop.*") "")
1269 (("^RuboCop.*") ""))
1270 #t)))))
1271 (native-inputs
1272 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
1273 ("ruby-pdf-reader" ,ruby-pdf-reader)
1274 ("ruby-rspec" ,ruby-rspec)
1275 ("ruby-simplecov" ,ruby-simplecov)))
1276 (propagated-inputs
1277 `(("ruby-prawn" ,ruby-prawn)))
1278 (synopsis "Icon fonts for use with the Prawn PDF toolkit")
1279 (description "@code{Prawn::Icon} provides various icon fonts including
1280 FontAwesome, PaymentFont and Foundation Icons for use with the Prawn PDF
1281 toolkit.")
1282 (home-page "https://github.com/jessedoyle/prawn-icon/")
1283 (license %prawn-project-licenses)))
1284
1285 (define-public ruby-css-parser
1286 (package
1287 (name "ruby-css-parser")
1288 (version "1.7.1")
1289 (source
1290 (origin
1291 (method url-fetch)
1292 (uri (rubygems-uri "css_parser" version))
1293 (sha256
1294 (base32
1295 "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw"))))
1296 (build-system ruby-build-system)
1297 (arguments `(#:tests? #f)) ;gem doesn't ship with test suite
1298 (propagated-inputs
1299 `(("ruby-addressable" ,ruby-addressable)))
1300 (synopsis "Ruby Cascading Style Sheets (CSS) parser")
1301 (description "This package allows loading, parsing and cascading Cascading
1302 Style Sheets (CSS) rule sets in Ruby.")
1303 (home-page "https://github.com/premailer/css_parser")
1304 (license license:expat)))
1305
1306 (define-public ruby-prawn-svg
1307 (package
1308 (name "ruby-prawn-svg")
1309 (version "0.30.0")
1310 (source
1311 (origin
1312 (method url-fetch)
1313 (uri (rubygems-uri "prawn-svg" version))
1314 (sha256
1315 (base32
1316 "0df3l49cy3xpwi0b73hmi2ykbjg9kjwrvhk0k3z7qhh5ghmmrn77"))))
1317 (build-system ruby-build-system)
1318 (arguments
1319 `(#:phases (modify-phases %standard-phases
1320 (add-after 'unpack 'do-not-use-bundler
1321 (lambda _
1322 (substitute* "spec/spec_helper.rb"
1323 ((".*[Bb]undler.*") ""))
1324 #t))
1325 (replace 'check
1326 (lambda* (#:key tests? #:allow-other-keys)
1327 (when tests?
1328 (invoke "rspec" "-Ilib" "-rprawn-svg"))
1329 #t)))))
1330 (native-inputs
1331 `(("ruby-rspec" ,ruby-rspec)))
1332 (propagated-inputs
1333 `(("ruby-css-parser" ,ruby-css-parser)
1334 ("ruby-prawn" ,ruby-prawn)))
1335 (synopsis "SVG renderer for the Prawn PDF library")
1336 (description "This library allows rendering Scalable Vector Graphics (SVG)
1337 graphics directly into a Portable Document Format (PDF) document using the
1338 Prawn module.")
1339 (home-page "https://github.com/mogest/prawn-svg")
1340 (license license:expat)))
1341
1342 (define-public ruby-prawn-templates
1343 (package
1344 (name "ruby-prawn-templates")
1345 (version "0.1.2")
1346 (source
1347 (origin
1348 (method git-fetch)
1349 (uri (git-reference
1350 (url "https://github.com/prawnpdf/prawn-templates.git")
1351 (commit version)))
1352 (file-name (git-file-name name version))
1353 (sha256
1354 (base32
1355 "0wll54wxxwixpwazfn4ffbqvqbfrl01cfsv8y11vnlzy7isx5xvl"))))
1356 (build-system ruby-build-system)
1357 (arguments
1358 `(#:phases (modify-phases %standard-phases
1359 (add-after 'unpack 'do-not-use-bundler
1360 (lambda _
1361 (substitute* "spec/spec_helper.rb"
1362 ((".*[Bb]undler.*") ""))
1363 #t))
1364 (replace 'check
1365 (lambda* (#:key tests? #:allow-other-keys)
1366 (when tests?
1367 (invoke "rspec"))
1368 #t)))))
1369 (native-inputs
1370 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
1371 ("ruby-rspec" ,ruby-rspec)))
1372 (propagated-inputs
1373 `(("ruby-pdf-reader" ,ruby-pdf-reader)
1374 ("ruby-prawn" ,ruby-prawn)))
1375 (synopsis "Prawn extension to include or combine PDF documents")
1376 (description "This @strong{unmaintained} package provides a Prawn
1377 extension that allows including other Portable Document Format (PDF) documents
1378 as background or combining several PDF documents into one. This functionality
1379 used to be part of Prawn itself, but was extracted from Prawn 0.15.0 because
1380 of its many longstanding issues.")
1381 (home-page "https://github.com/prawnpdf/prawn-templates")
1382 (license %prawn-project-licenses)))
1383
1384 (define-public ruby-polyglot
1385 (package
1386 (name "ruby-polyglot")
1387 (version "0.3.5")
1388 (source
1389 (origin
1390 (method url-fetch)
1391 (uri (rubygems-uri "polyglot" version))
1392 (sha256
1393 (base32
1394 "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr"))))
1395 (build-system ruby-build-system)
1396 (arguments `(#:tests? #f)) ;no test suite
1397 (synopsis "Augment @code{require} to load non-Ruby file types")
1398 (description "The Polyglot library allows a Ruby module to register a
1399 loader for the file type associated with a filename extension, and it augments
1400 @code{require} to find and load matching files.")
1401 (home-page "https://github.com/cjheath/polyglot")
1402 (license license:expat)))
1403
1404 (define-public ruby-treetop
1405 (package
1406 (name "ruby-treetop")
1407 (version "1.6.10")
1408 (source
1409 (origin
1410 (method git-fetch) ;no test suite in distributed gem
1411 (uri (git-reference
1412 (url "https://github.com/cjheath/treetop.git")
1413 (commit (string-append "v" version))))
1414 (file-name (git-file-name name version))
1415 (sha256
1416 (base32
1417 "1dmk94z6ivhrz5hsq68vl5vgydhkz89n394rha1ymddw3rymbfcv"))))
1418 (build-system ruby-build-system)
1419 (arguments
1420 `(#:test-target "spec"
1421 #:phases
1422 (modify-phases %standard-phases
1423 (replace 'replace-git-ls-files
1424 (lambda _
1425 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1426 ;; git ls-files output is merged in ruby-build-system.
1427 (substitute* "treetop.gemspec"
1428 (("`git ls-files -z`")
1429 "`find . -type f -print0 |sort -z|cut -zc3-`"))
1430 #t)))))
1431 (native-inputs
1432 `(("ruby-activesupport" ,ruby-activesupport)
1433 ("ruby-rr" ,ruby-rr)
1434 ("ruby-rspec" ,ruby-rspec)))
1435 (propagated-inputs
1436 `(("ruby-polyglot" ,ruby-polyglot)))
1437 (synopsis "Ruby-based parsing DSL based on parsing expression grammars")
1438 (description "This package provides a Ruby-based Parsing Expression
1439 Grammar (PEG) parser generator Domain Specific Language (DSL).")
1440 (home-page "https://github.com/cjheath/treetop")
1441 (license license:expat)))
1442
1443 (define-public ruby-rubocop-performance
1444 (package
1445 (name "ruby-rubocop-performance")
1446 (version "1.7.1")
1447 (source
1448 (origin
1449 (method url-fetch)
1450 (uri (rubygems-uri "rubocop-performance" version))
1451 (sha256
1452 (base32
1453 "04r8d4x62ygv17spvz9yyfxbmbf8qxwhijs0xycfvzr0q4pyg9sw"))))
1454 (build-system ruby-build-system)
1455 (arguments
1456 `(#:tests? #f)) ;no test suite in the distributed gem
1457 (propagated-inputs
1458 `(("ruby-rubocop" ,ruby-rubocop)))
1459 (synopsis "Performance optimizations checkers for Ruby code")
1460 (description "This package provides a collection of RuboCop cops to check
1461 for performance optimizations in Ruby code.")
1462 (home-page "https://docs.rubocop.org/rubocop-performance/")
1463 (license license:expat)))
1464
1465 (define-public ruby-gimme
1466 (let ((revision "1")
1467 (commit "4e71f0236f1271871916dd403261d26533db34c0"))
1468 (package
1469 (name "ruby-gimme")
1470 (version (git-version "0.5.0" revision commit))
1471 (source
1472 (origin
1473 (method git-fetch)
1474 (uri (git-reference
1475 (url "https://github.com/searls/gimme.git")
1476 (commit commit)))
1477 (file-name (git-file-name name version))
1478 (sha256
1479 (base32
1480 "0hrd32ygvf3i7h47ak8f623cz8ns9q7g60nnnvvlnywbggjaz3h6"))))
1481 (build-system ruby-build-system)
1482 (native-inputs
1483 `(("ruby-coveralls" ,ruby-coveralls)
1484 ("ruby-cucumber" ,ruby-cucumber)
1485 ("ruby-pry" ,ruby-pry)
1486 ("ruby-simplecov" ,ruby-simplecov)
1487 ("ruby-rspec-given" ,ruby-rspec-given)))
1488 (arguments
1489 `(;; The cucumber task fails with error: "index 3 out of matches
1490 ;; (IndexError)", apparently due to our newer Cucumber version.
1491 ;; TODO: Try the "default" task with a future release.
1492 #:test-target "spec"
1493 #:phases
1494 (modify-phases %standard-phases
1495 (add-after 'extract-gemspec 'prepare-for-tests
1496 (lambda _
1497 ;; Delete failing tests (possibly due to our newer rspec
1498 ;; version).
1499 (delete-file "spec/gimme/gives_class_methods_spec.rb")
1500 (delete-file "spec/gimme/rspec_adapter_spec.rb")
1501 (delete-file "spec/gimme/verifies_class_methods_spec.rb")
1502 ;; Fix duplicate version requirements and de-register files.
1503 (delete-file "Gemfile")
1504 (delete-file "Gemfile.lock")
1505 (substitute* "gimme.gemspec"
1506 ((".*\"Gemfile\".*") "")
1507 ((".*\"Gemfile\\.lock\",.*") "")
1508 ((".*(rspec|cucumber).*\">= 0\".*") "")
1509 (("\"spec/gimme/gives_class_methods_spec.rb\",") "")
1510 (("\"spec/gimme/rspec_adapter_spec.rb\",") "")
1511 (("\"spec/gimme/verifies_class_methods_spec.rb\",") "")
1512 ;; All of these gems relate to development, and are
1513 ;; unnecessary when running the tests.
1514 ((".*(add|gem).*guard-.*") "")
1515 ((".*(add|gem).*jeweler.*") "")
1516 ((".*(add|gem).*pry.*") "")
1517 ((".*(add|gem).*growl.*") "")
1518 ((".*(add|gem).*rb-fsevent.*") ""))
1519 #t)))))
1520 (synopsis "Lightweight test double library for Ruby")
1521 (description "Gimme is a very lightweight test double library for Ruby,
1522 based on Mockito (a mocking framework for Java). It is an opinionated (but
1523 not noisy) means to facilitate test-driving by enabling the authors to specify
1524 only what they care about.")
1525 (home-page "https://github.com/searls/gimme")
1526 (license license:expat))))
1527
1528 (define-public ruby-standard
1529 (package
1530 (name "ruby-standard")
1531 (version "0.4.7")
1532 (source
1533 (origin
1534 (method git-fetch) ;no test suite in distributed gem
1535 (uri (git-reference
1536 (url "https://github.com/testdouble/standard.git")
1537 (commit (string-append "v" version))))
1538 (file-name (git-file-name name version))
1539 (sha256
1540 (base32
1541 "0ylx0lm2pbbgr5h7fban592w96bl3wxmvfcpcdfrhkxnpg5kiwgv"))))
1542 (build-system ruby-build-system)
1543 (arguments
1544 ;; TODO: the tests are currently broken due to using a newer Rubocop.
1545 `(#:tests? #f
1546 #:phases
1547 (modify-phases %standard-phases
1548 (add-after 'unpack 'relax-version-requiremens
1549 (lambda _
1550 (delete-file "Gemfile")
1551 (delete-file "Gemfile.lock")
1552 #t))
1553 (replace 'replace-git-ls-files
1554 (lambda _
1555 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1556 ;; git ls-files output is merged in ruby-build-system.
1557 (substitute* "standard.gemspec"
1558 (("`git ls-files -z`")
1559 "`find . -type f -not -regex '.*\\.gem$' -print0 \
1560 |sort -z|cut -zc3-`"))
1561 #t)))))
1562 (native-inputs
1563 `(("ruby-gimme" ,ruby-gimme)
1564 ("ruby-pry" ,ruby-pry)
1565 ("ruby-simplecov" ,ruby-simplecov)))
1566 (propagated-inputs
1567 `(("ruby-rubocop" ,ruby-rubocop)
1568 ("ruby-rubocop-performance" ,ruby-rubocop-performance)))
1569 (synopsis "Ruby Style Guide, with linter & automatic code fixer")
1570 (description "Standard is a port of StandardJS. Like StandardJS, it aims
1571 to save time in the following ways:
1572 @itemize
1573 @item No configuration.
1574 @item Automatically format code.
1575 @item Catch style issues and programmer errors early.
1576 @end itemize")
1577 (home-page "https://github.com/testdouble/standard")
1578 (license license:expat)))
1579
1580 (define-public ruby-chunky-png
1581 (package
1582 (name "ruby-chunky-png")
1583 (version "1.3.12")
1584 (source
1585 (origin
1586 (method git-fetch)
1587 (uri (git-reference
1588 (url "https://github.com/wvanbergen/chunky_png.git")
1589 (commit (string-append "v" version))))
1590 (file-name (git-file-name name version))
1591 (sha256
1592 (base32
1593 "0hn8ap7iib47qkqdp0awmxgma11z0lmk1ca3lp7c97ykhv7ij1zs"))))
1594 (build-system ruby-build-system)
1595 (arguments
1596 `(#:test-target "spec"
1597 #:phases
1598 (modify-phases %standard-phases
1599 (add-after 'unpack 'disable-bundler
1600 (lambda _
1601 (substitute* (find-files "." "\\.rb$")
1602 (("require.*bundler/setup.*") ""))
1603 #t))
1604 (replace 'replace-git-ls-files
1605 (lambda _
1606 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1607 ;; git ls-files output is merged in ruby-build-system.
1608 (substitute* "chunky_png.gemspec"
1609 (("`git ls-files`")
1610 "`find . -type f -not -regex '.*\\.gem$' |sort |cut -c3-`"))
1611 #t)))))
1612 (native-inputs
1613 `(("bundler" ,bundler)
1614 ("ruby-rspec" ,ruby-rspec)
1615 ("ruby-standard" ,ruby-standard)
1616 ("ruby-yard" ,ruby-yard)))
1617 (synopsis "Ruby library to handle PNG images")
1618 (description "ChunkyPNG is a pure Ruby library that can read and write
1619 Portable Network Graphics (PNG) images without depending on an external image
1620 library. It tries to be memory efficient and reasonably fast. It has
1621 features such as:
1622 @itemize
1623 @item
1624 Decoding support for any image that the PNG standard allows. This includes all
1625 standard color modes, all bit depths, all transparency, and interlacing and
1626 filtering options.
1627 @item
1628 Encoding support for images of all color modes (true color, grayscale, and
1629 indexed) and transparency for all these color modes. The best color mode is
1630 chosen automatically, based on the amount of used colors.
1631 @item Read/write access to the image's pixels.
1632 @item Read/write access to all image metadata that is stored in chunks.
1633 @item
1634 Memory efficiency: @code{fixnum} are used, i.e. 4 or 8 bytes of memory per
1635 pixel, depending on the hardware).
1636 @item
1637 Performance: ChunkyPNG is reasonably fast for Ruby standards, by only using
1638 integer math and a highly optimized saving routine.
1639 @item Interoperability with RMagick.
1640 @end itemize")
1641 (home-page "https://github.com/wvanbergen/chunky_png/wiki")
1642 (license license:expat)))
1643
1644 (define-public ruby-text-hyphen
1645 (package
1646 (name "ruby-text-hyphen")
1647 (version "1.4.1")
1648 (source
1649 (origin
1650 (method url-fetch)
1651 (uri (rubygems-uri "text-hyphen" version))
1652 (sha256
1653 (base32
1654 "1gj4awvs9ryf960m0iawg43jyjmfwcqgfwrbcfp890a57b9ag7q1"))))
1655 (build-system ruby-build-system)
1656 (native-inputs
1657 `(("ruby-hoe" ,ruby-hoe)))
1658 (synopsis "Ruby library to hyphenate words in various languages")
1659 (description "Text::Hyphen is a Ruby library to hyphenate words in various
1660 languages using Ruby-fied versions of TeX hyphenation patterns. It will
1661 properly hyphenate various words according to the rules of the language the
1662 word is written in. The algorithm is based on that of the TeX typesetting
1663 system by Donald E. Knuth.")
1664 (home-page "https://github.com/halostatue/text-hyphen")
1665 ;; The whole is licensed under the Expat license, but parts use various
1666 ;; versions of the LaTeX Project Public License.
1667 (license license:expat)))
1668
1669 (define-public ruby-open-uri-cached
1670 (package
1671 (name "ruby-open-uri-cached")
1672 (version "0.0.5")
1673 (source
1674 (origin
1675 (method url-fetch)
1676 (uri (rubygems-uri "open-uri-cached" version))
1677 (sha256
1678 (base32
1679 "13xy2vhrgz9mdxhklw5fszhamsdxh8ysf3l40g92hqm4hm288wap"))))
1680 (build-system ruby-build-system)
1681 (arguments
1682 `(#:tests? #f)) ;no test suite
1683 (synopsis "OpenURI with transparent disk caching")
1684 (description "OpenURI with transparent disk caching, which is
1685 useful to avoid making excessive queries, for example when scraping
1686 web pages.")
1687 (home-page "https://github.com/tigris/open-uri-cached")
1688 (license license:expat)))
1689
1690 (define-public ruby-asciidoctor-pdf
1691 ;; Use the latest commit, as the last tag doesn't build with the
1692 ;; latest Ruby dependencies in Guix.
1693 (let ((revision "1")
1694 (commit "d257440df895d1595a3825ef58b32e4b290ba1c3"))
1695 (package
1696 (name "ruby-asciidoctor-pdf")
1697 (version (git-version "1.5.3" revision commit))
1698 (source
1699 (origin
1700 (method git-fetch) ;no test suite in the distributed gem
1701 (uri (git-reference
1702 (url "https://github.com/asciidoctor/asciidoctor-pdf.git")
1703 (commit commit)))
1704 (file-name (git-file-name name version))
1705 (sha256
1706 (base32
1707 "1563d11ghzsrsg4inwfwj6b9hb5sk5b429f49fwq5qg3sq76kgjj"))))
1708 (build-system ruby-build-system)
1709 (arguments
1710 `(#:test-target "spec"
1711 #:phases
1712 (modify-phases %standard-phases
1713 (add-after 'unpack 'remove-failing-tests
1714 ;; Two tests module fail for unknown reasons, *only* when
1715 ;; ran in the build container (see:
1716 ;; https://github.com/asciidoctor/asciidoctor-pdf/issues/1725#issuecomment-658777965).
1717 (lambda _
1718 (delete-file "spec/audio_spec.rb")
1719 (delete-file "spec/video_spec.rb")
1720 #t))
1721 (add-after 'extract-gemspec 'strip-version-requirements
1722 (lambda _
1723 (substitute* "asciidoctor-pdf.gemspec"
1724 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1725 (string-append stripped "\n")))
1726 #t))
1727 (replace 'replace-git-ls-files
1728 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1729 ;; git ls-files output is merged in ruby-build-system.
1730 (lambda _
1731 (substitute* "asciidoctor-pdf.gemspec"
1732 (("`git ls-files -z`")
1733 "`find . -type f -not -regex '.*\\.gem$' -print0 \
1734 |sort -z|cut -zc3-`"))
1735 #t))
1736 ;; The tests rely on the Gem being installed, so move the check phase
1737 ;; after the install phase.
1738 (delete 'check)
1739 (add-after 'install 'check
1740 (lambda* (#:key outputs tests? #:allow-other-keys)
1741 (let ((new-gem (string-append (assoc-ref outputs "out")
1742 "/lib/ruby/vendor_ruby")))
1743 (setenv "GEM_PATH"
1744 (string-append (getenv "GEM_PATH") ":" new-gem))
1745 (when tests?
1746 (invoke "rspec" "-t" "~visual" "-t" "~cli" "-t" "~network"))
1747 #t))))))
1748 (native-inputs
1749 `(("ruby-chunky-png" ,ruby-chunky-png)
1750 ("ruby-coderay" ,ruby-coderay)
1751 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
1752 ("ruby-rouge" ,ruby-rouge)
1753 ("ruby-rspec" ,ruby-rspec)))
1754 (propagated-inputs
1755 `(("ruby-asciidoctor" ,ruby-asciidoctor)
1756 ("ruby-concurrent-ruby" ,ruby-concurrent)
1757 ("ruby-open-uri-cached" ,ruby-open-uri-cached)
1758 ("ruby-prawn" ,ruby-prawn)
1759 ("ruby-prawn-icon" ,ruby-prawn-icon)
1760 ("ruby-prawn-svg" ,ruby-prawn-svg)
1761 ("ruby-prawn-table" ,ruby-prawn-table)
1762 ("ruby-prawn-templates" ,ruby-prawn-templates)
1763 ("ruby-safe-yaml" ,ruby-safe-yaml)
1764 ("ruby-text-hyphen" ,ruby-text-hyphen)
1765 ("ruby-thread-safe" ,ruby-thread-safe)
1766 ("ruby-treetop" ,ruby-treetop)
1767 ("ruby-ttfunk" ,ruby-ttfunk)))
1768 (synopsis"AsciiDoc to Portable Document Format (PDF)} converter")
1769 (description "Asciidoctor PDF is an extension for Asciidoctor that
1770 converts AsciiDoc documents to Portable Document Format (PDF) using the Prawn
1771 PDF library. It has features such as:
1772 @itemize
1773 @item Direct AsciiDoc to PDF conversion
1774 @item Configuration-driven theme (style and layout)
1775 @item Scalable Vector Graphics (SVG) support
1776 @item PDF document outline (i.e., bookmarks)
1777 @item Table of contents page(s)
1778 @item Document metadata (title, authors, subject, keywords, etc.)
1779 @item Internal cross reference links
1780 @item Syntax highlighting with Rouge, Pygments, or CodeRay
1781 @item Page numbering
1782 @item Customizable running content (header and footer)
1783 @item
1784 “Keep together” blocks (i.e., page breaks avoided in certain block content)
1785 @item Orphaned section titles avoided
1786 @item Autofit verbatim blocks (as permitted by base_font_size_min setting)
1787 @item Table border settings honored
1788 @item Font-based icons
1789 @item Custom TrueType (TTF) fonts
1790 @item Double-sided printing mode (margins alternate on recto and verso pages)
1791 @end itemize")
1792 (home-page "https://asciidoctor.org/docs/asciidoctor-pdf")
1793 (license license:expat))))
1794
1795 (define-public ruby-ast
1796 (package
1797 (name "ruby-ast")
1798 (version "2.4.1")
1799 (source
1800 (origin
1801 (method git-fetch) ;no test included in gem from v2.4.1
1802 (uri (git-reference
1803 (url "https://github.com/whitequark/ast")
1804 (commit (string-append "v" version))))
1805 (file-name (git-file-name name version))
1806 (sha256
1807 (base32
1808 "0k8vya256chimy473g818gim06m5rjgh6mz5sc5g8xz3csh3rysi"))))
1809 (build-system ruby-build-system)
1810 (arguments
1811 '(#:phases
1812 (modify-phases %standard-phases
1813 (add-after 'unpack 'remove-coveralls-requirement
1814 (lambda _
1815 (substitute* "test/helper.rb"
1816 (("require 'coveralls'") "")
1817 (("Coveralls::SimpleCov::Formatter") ""))
1818 #t))
1819 (add-after 'extract-gemspec 'remove-unnecessary-requirements
1820 (lambda _
1821 (substitute* "ast.gemspec"
1822 ((".*coveralls.*") "\n")
1823 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
1824 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
1825 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n"))
1826 #t)))))
1827 (native-inputs
1828 `(("bundler" ,bundler)
1829 ("ruby-simplecov" ,ruby-simplecov)
1830 ("ruby-json-pure" ,ruby-json-pure)
1831 ("ruby-mime-times" ,ruby-mime-types)
1832 ("ruby-yard" ,ruby-yard)
1833 ("ruby-kramdown" ,ruby-kramdown)
1834 ("ruby-rest-client" ,ruby-rest-client)
1835 ("ruby-bacon" ,ruby-bacon)
1836 ("ruby-bacon-colored-output" ,ruby-bacon-colored-output)
1837 ("ruby-racc" ,ruby-racc)))
1838 (synopsis "Library for working with Abstract Syntax Trees")
1839 (description
1840 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
1841 It does this through immutable data structures.")
1842 (home-page "https://whitequark.github.io/ast/")
1843 (license license:expat)))
1844
1845 (define-public ruby-sporkmonger-rack-mount
1846 ;; Testing the addressable gem requires a newer commit than that released, so
1847 ;; use an up to date version.
1848 (let ((revision "1")
1849 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
1850 (package
1851 (name "ruby-sporkmonger-rack-mount")
1852 (version (git-version "0.8.3" revision commit))
1853 (source (origin
1854 (method git-fetch)
1855 (uri (git-reference
1856 (url "https://github.com/sporkmonger/rack-mount")
1857 (commit commit)))
1858 (file-name (git-file-name name version))
1859 (sha256
1860 (base32
1861 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
1862 (build-system ruby-build-system)
1863 (arguments
1864 ;; Tests currently fail so disable them.
1865 ;; https://github.com/sporkmonger/rack-mount/pull/1
1866 `(#:tests? #f))
1867 (propagated-inputs `(("ruby-rack" ,ruby-rack)))
1868 (synopsis "Stackable dynamic tree based Rack router")
1869 (description
1870 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
1871 continue trying routes if the response returns pass. This allows multiple
1872 routes to be nested or stacked on top of each other.")
1873 (home-page "https://github.com/sporkmonger/rack-mount")
1874 (license license:expat))))
1875
1876 (define-public ruby-ci-reporter
1877 (package
1878 (name "ruby-ci-reporter")
1879 (version "2.0.0")
1880 (source (origin
1881 (method url-fetch)
1882 (uri (rubygems-uri "ci_reporter" version))
1883 (sha256
1884 (base32
1885 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
1886 (build-system ruby-build-system)
1887 (arguments
1888 `(#:test-target "rspec"))
1889 (propagated-inputs
1890 `(("ruby-builder" ,ruby-builder)))
1891 (native-inputs
1892 `(("bundler" ,bundler)
1893 ("ruby-rspec" ,ruby-rspec)))
1894 (synopsis "Generate XML reports of runs test")
1895 (description
1896 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
1897 you to generate XML reports of your test runs. The resulting files can be
1898 read by a continuous integration system that understands Ant's JUnit report
1899 format.")
1900 (home-page "https://github.com/nicksieger/ci_reporter")
1901 (license license:expat)))
1902
1903 (define-public ruby-contracts
1904 (package
1905 (name "ruby-contracts")
1906 (version "0.16.0")
1907 (source
1908 (origin
1909 (method url-fetch)
1910 (uri (rubygems-uri "contracts" version))
1911 (sha256
1912 (base32
1913 "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"))))
1914 (build-system ruby-build-system)
1915 (arguments
1916 '(#:test-target "spec"
1917 #:phases
1918 (modify-phases %standard-phases
1919 ;; Don't run or require rubocop, the code linting tool, as this is a
1920 ;; bit unnecessary.
1921 (add-after 'unpack 'dont-run-rubocop
1922 (lambda _
1923 (substitute* "Rakefile"
1924 ((".*rubocop.*") "")
1925 ((".*RuboCop.*") ""))
1926 #t)))))
1927 (native-inputs
1928 `(("ruby-rspec" ,ruby-rspec)))
1929 (synopsis "Method contracts for Ruby")
1930 (description
1931 "This library provides contracts for Ruby. A contract describes the
1932 correct inputs and output for a method, and will raise an error if a incorrect
1933 value is found.")
1934 (home-page "https://github.com/egonSchiele/contracts.ruby")
1935 (license license:bsd-2)))
1936
1937 (define-public ruby-crack
1938 (package
1939 (name "ruby-crack")
1940 (version "0.4.3")
1941 (source
1942 (origin
1943 (method url-fetch)
1944 (uri (rubygems-uri "crack" version))
1945 (sha256
1946 (base32
1947 "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k"))))
1948 (build-system ruby-build-system)
1949 (arguments
1950 `(#:phases
1951 (modify-phases %standard-phases
1952 (replace 'check
1953 (lambda* (#:key tests? #:allow-other-keys)
1954 (when tests?
1955 (for-each (lambda (file)
1956 (display file)(display "\n")
1957 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
1958 (find-files "test" ".*rb$")))
1959 #t)))))
1960 (propagated-inputs
1961 `(("ruby-safe-yaml" ,ruby-safe-yaml)))
1962 (synopsis "Simple JSON and XML parsing for Ruby")
1963 (description
1964 "@code{crack} provides really simple JSON and XML parsing, extracted from
1965 code in Merb and Rails.")
1966 (home-page "https://github.com/jnunemaker/crack")
1967 (license license:expat)))
1968
1969 (define-public ruby-cliver
1970 (package
1971 (name "ruby-cliver")
1972 (version "0.3.2")
1973 (source
1974 (origin
1975 (method url-fetch)
1976 (uri (rubygems-uri "cliver" version))
1977 (sha256
1978 (base32
1979 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
1980 (build-system ruby-build-system)
1981 (arguments
1982 '(#:phases
1983 (modify-phases %standard-phases
1984 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
1985 ;; would be nice, but the tests look to be incompatible:
1986 ;;
1987 ;; NoMethodError: undefined method `last_comment'
1988 (replace 'check
1989 (lambda* (#:key tests? #:allow-other-keys)
1990 (when tests?
1991 (invoke "rspec"))
1992 #t)))))
1993 (native-inputs
1994 `(("bundler" ,bundler)
1995 ("ruby-rspec" ,ruby-rspec-2)))
1996 (synopsis "Assertions for command-line dependencies in Ruby")
1997 (description
1998 "@code{cliver} provides a way to detect missing command-line
1999 dependencies, including versions.")
2000 (home-page "https://github.com/yaauie/cliver")
2001 (license license:expat)))
2002
2003 (define-public ruby-czmq-ffi-gen
2004 (package
2005 (name "ruby-czmq-ffi-gen")
2006 (version "0.13.0")
2007 (source
2008 (origin
2009 (method url-fetch)
2010 (uri (rubygems-uri "czmq-ffi-gen" version))
2011 (sha256
2012 (base32
2013 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
2014 (build-system ruby-build-system)
2015 (arguments
2016 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
2017 #:phases
2018 (modify-phases %standard-phases
2019 (add-after 'unpack 'patch-lib_dirs
2020 (lambda* (#:key inputs #:allow-other-keys)
2021 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
2022 (("lib\\_dirs = \\[.*\\]")
2023 (string-append "lib_dirs = ['"
2024 (assoc-ref inputs "czmq") "/lib"
2025 "']")))
2026 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
2027 (("lib\\_dirs = \\[.*\\]")
2028 (string-append "lib_dirs = ['"
2029 (assoc-ref inputs "zeromq") "/lib"
2030 "']"))))))))
2031 (inputs
2032 `(("zeromq" ,zeromq)
2033 ("czmq" ,czmq)))
2034 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
2035 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
2036 (description
2037 "These Ruby bindings are not intended to be directly used, but rather
2038 used by higher level bindings like those provided by CZTop.")
2039 (home-page
2040 "https://github.com/paddor/czmq-ffi-gen")
2041 (license license:isc)))
2042
2043 (define-public ruby-cztop
2044 (package
2045 (name "ruby-cztop")
2046 (version "0.12.2")
2047 (source
2048 (origin
2049 (method url-fetch)
2050 (uri (rubygems-uri "cztop" version))
2051 (sha256
2052 (base32
2053 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
2054 (build-system ruby-build-system)
2055 (arguments
2056 '(#:test-target "spec"
2057 #:phases
2058 (modify-phases %standard-phases
2059 (add-after 'unpack 'patch-lib_paths
2060 (lambda* (#:key inputs #:allow-other-keys)
2061 (substitute* "lib/cztop/poller/zmq.rb"
2062 (("lib\\_paths = \\[.*\\]")
2063 (string-append "lib_paths = ['"
2064 (assoc-ref inputs "zeromq") "/lib"
2065 "']"))))))))
2066 (native-inputs
2067 `(("bundler" ,bundler)
2068 ("ruby-rspec" ,ruby-rspec)))
2069 (inputs
2070 `(("zeromq" ,zeromq)))
2071 (propagated-inputs
2072 `(("ruby-czmq-ffi-gen" ,ruby-czmq-ffi-gen)))
2073 (synopsis "CZMQ Ruby bindings")
2074 (description
2075 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
2076 CZMQ. The focus of of CZTop is on being easy to use and providing first class
2077 support for security mechanisms.")
2078 (home-page "https://github.com/paddor/cztop")
2079 (license license:isc)))
2080
2081 (define-public ruby-saikuro-treemap
2082 (package
2083 (name "ruby-saikuro-treemap")
2084 (version "0.2.0")
2085 (source (origin
2086 (method url-fetch)
2087 (uri (rubygems-uri "saikuro_treemap" version))
2088 (sha256
2089 (base32
2090 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
2091 (build-system ruby-build-system)
2092 ;; Some of the tests fail because the generated JSON has keys in a
2093 ;; different order. This is a problem with the test suite rather than any
2094 ;; of the involved libraries.
2095 (arguments `(#:tests? #f))
2096 (propagated-inputs
2097 `(("ruby-json-pure" ,ruby-json-pure)
2098 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
2099 (synopsis "Generate complexity treemap based on saikuro analysis")
2100 (description
2101 "This gem generates a treemap showing the complexity of Ruby code on
2102 which it is run. It uses Saikuro under the covers to analyze Ruby code
2103 complexity.")
2104 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
2105 (license license:expat)))
2106
2107 (define-public ruby-oauth2
2108 (package
2109 (name "ruby-oauth2")
2110 (version "1.4.2")
2111 (source
2112 (origin
2113 (method url-fetch)
2114 (uri (rubygems-uri "oauth2" version))
2115 (sha256
2116 (base32 "15i9z4j5pcjkr30lkcd79xzbr4kpmy0bqgwa436fqyqk646fv036"))))
2117 (build-system ruby-build-system)
2118 (arguments
2119 '(#:tests? #f)) ; no included tests
2120 (propagated-inputs
2121 `(("ruby-faraday" ,ruby-faraday)
2122 ("ruby-jwt" ,ruby-jwt)
2123 ("ruby-multi-json" ,ruby-multi-json)
2124 ("ruby-multi-xml" ,ruby-multi-xml)
2125 ("ruby-rack" ,ruby-rack)))
2126 (synopsis "Ruby wrapper for the OAuth 2.0")
2127 (description
2128 "This package provides a Ruby wrapper for the OAuth 2.0 protocol built
2129 with a similar style to the original OAuth spec.")
2130 (home-page "https://github.com/oauth-xx/oauth2")
2131 (license license:expat)))
2132
2133 (define-public ruby-omniauth
2134 (package
2135 (name "ruby-omniauth")
2136 (version "1.9.1")
2137 (source
2138 (origin
2139 (method url-fetch)
2140 (uri (rubygems-uri "omniauth" version))
2141 (sha256
2142 (base32 "002vi9gwamkmhf0dsj2im1d47xw2n1jfhnzl18shxf3ampkqfmyz"))))
2143 (build-system ruby-build-system)
2144 (arguments
2145 '(#:tests? #f)) ; No included tests
2146 (propagated-inputs
2147 `(("ruby-hashie" ,ruby-hashie)
2148 ("ruby-rack" ,ruby-rack)))
2149 (synopsis "Generalized Rack framework for multiple-provider authentication")
2150 (description
2151 "This package provides a generalized Rack framework for multiple-provider
2152 authentication.")
2153 (home-page "https://github.com/omniauth/omniauth")
2154 (license license:expat)))
2155
2156 (define-public ruby-omniauth-oauth2
2157 (package
2158 (name "ruby-omniauth-oauth2")
2159 (version "1.6.0")
2160 (source
2161 (origin
2162 (method url-fetch)
2163 (uri (rubygems-uri "omniauth-oauth2" version))
2164 (sha256
2165 (base32
2166 "11mi36l9d97r77q99jnafdc1yaa0a9wahhpp7dj7ank8q52g7g79"))))
2167 (build-system ruby-build-system)
2168 (arguments
2169 '(#:phases
2170 (modify-phases %standard-phases
2171 (add-after 'unpack 'remove-unnecessary-dependencies
2172 (lambda _
2173 ;; The coveralls gem submits coverage information to an online
2174 ;; service, and is unnecessary when running the tests
2175 (substitute* "Gemfile"
2176 ((".*coveralls\"") ""))
2177 (substitute* "spec/helper.rb"
2178 (("require \"coveralls\"") "")
2179 (("Coveralls::SimpleCov::Formatter") ""))
2180 #t)))))
2181 (propagated-inputs
2182 `(("ruby-oauth2" ,ruby-oauth2)
2183 ("ruby-omniauth" ,ruby-omniauth)))
2184 (native-inputs
2185 `(("bundler" ,bundler)
2186 ("ruby-rspec" ,ruby-rspec)
2187 ("ruby-simplecov" ,ruby-simplecov)
2188 ("ruby-rack-test" ,ruby-rack-test)
2189 ("ruby-webmock" ,ruby-webmock-2)))
2190 (synopsis "Abstract OAuth2 strategy for OmniAuth")
2191 (description
2192 "This library provides a generic OAuth2 strategy for OmniAuth. It
2193 doesn't provide a way to gather user information, so should be used as a
2194 building block for authentication strategies.")
2195 (home-page "https://github.com/omniauth/omniauth-oauth2")
2196 (license license:expat)))
2197
2198 (define-public ruby-open4
2199 (package
2200 (name "ruby-open4")
2201 (version "1.3.4")
2202 (source
2203 (origin
2204 (method url-fetch)
2205 (uri (rubygems-uri "open4" version))
2206 (sha256
2207 (base32
2208 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
2209 (build-system ruby-build-system)
2210 (arguments
2211 '(#:phases
2212 (modify-phases %standard-phases
2213 (add-after 'unpack 'patch
2214 (lambda _
2215 (substitute* "rakefile"
2216 ;; Update the Rakefile so it works
2217 (("-rubygems") "-rrubygems")
2218 (("Config") "RbConfig"))
2219 #t))
2220 (add-before 'check 'set-LIB
2221 (lambda _
2222 ;; This is used in the rakefile when running the tests
2223 (setenv "LIB" "open4")
2224 #t)))))
2225 (synopsis "Open child processes from Ruby and manage them easily")
2226 (description
2227 "@code{Open4} is a Ruby library to run child processes and manage their
2228 input and output.")
2229 (home-page "https://github.com/ahoward/open4")
2230 (license license:ruby)))
2231
2232 (define-public ruby-options
2233 (package
2234 (name "ruby-options")
2235 (version "2.3.2")
2236 (source
2237 (origin
2238 (method url-fetch)
2239 (uri (rubygems-uri "options" version))
2240 (sha256
2241 (base32
2242 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
2243 (build-system ruby-build-system)
2244 (arguments
2245 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
2246 #:phases
2247 (modify-phases %standard-phases
2248 (add-before 'check 'set-LIB
2249 (lambda _
2250 ;; This is used in the Rakefile, and setting it avoids an issue
2251 ;; with running the tests.
2252 (setenv "LIB" "options")
2253 #t)))))
2254 (synopsis "Ruby library to parse options from *args cleanly")
2255 (description
2256 "The @code{options} library helps with parsing keyword options in Ruby
2257 functions.")
2258 (home-page "https://github.com/ahoward/options")
2259 (license license:ruby)))
2260
2261 (define-public ruby-erubi
2262 (package
2263 (name "ruby-erubi")
2264 (version "1.8.0")
2265 (source
2266 (origin
2267 (method url-fetch)
2268 (uri (rubygems-uri "erubi" version))
2269 (sha256
2270 (base32
2271 "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1"))))
2272 (build-system ruby-build-system)
2273 (synopsis "ERB template engine for Ruby")
2274 (description
2275 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
2276 Erubis")
2277 (home-page "https://github.com/jeremyevans/erubi")
2278 (license license:expat)))
2279
2280 (define-public ruby-erubis
2281 (package
2282 (name "ruby-erubis")
2283 (version "2.7.0")
2284 (source
2285 (origin
2286 (method url-fetch)
2287 (uri (rubygems-uri "erubis" version))
2288 (sha256
2289 (base32
2290 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
2291 (build-system ruby-build-system)
2292 (arguments
2293 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
2294 (synopsis "Implementation of embedded Ruby (eRuby)")
2295 (description
2296 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
2297 features such as multi-language support, auto escaping, auto trimming spaces
2298 around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
2299 support.")
2300 (home-page "http://www.kuwata-lab.com/erubis/")
2301 (license license:expat)))
2302
2303 (define-public ruby-execjs
2304 (package
2305 (name "ruby-execjs")
2306 (version "2.7.0")
2307 (source
2308 (origin
2309 ;; fetch from github as the gem does not contain testing code
2310 (method git-fetch)
2311 (uri (git-reference
2312 (url "https://github.com/rails/execjs")
2313 (commit (string-append "v" version))))
2314 (file-name (git-file-name name version))
2315 (sha256
2316 (base32
2317 "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
2318 (build-system ruby-build-system)
2319 (native-inputs
2320 `(("bundler" ,bundler)
2321 ;; The test suite tests all the available backends. Currenly, this just
2322 ;; means the node backend.
2323 ;;
2324 ;; PASSED: test:node
2325 ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
2326 ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
2327 ("node" ,node)))
2328 (synopsis "Run JavaScript code from Ruby")
2329 (description
2330 "ExecJS lets you run JavaScript code from Ruby. It automatically picks a
2331 runtime to evaluate your JavaScript program, then returns the result to you as
2332 a Ruby object.")
2333 (home-page "https://github.com/rails/execjs")
2334 (license license:expat)))
2335
2336 (define-public ruby-fakefs
2337 (package
2338 (name "ruby-fakefs")
2339 (version "1.2.2")
2340 (home-page "https://github.com/fakefs/fakefs")
2341 (source (origin
2342 ;; The Rubygems release does not contain tests.
2343 (method git-fetch)
2344 (uri (git-reference
2345 (url home-page)
2346 (commit (string-append "v" version))))
2347 (file-name (git-file-name name version))
2348 (sha256
2349 (base32
2350 "008dq9knyip2bfbl0mrk8b8r7bv0k3bf128wcfqsgy1rqal4mgwk"))))
2351 (build-system ruby-build-system)
2352 (arguments
2353 '(#:phases (modify-phases %standard-phases
2354 (replace 'replace-git-ls-files
2355 (lambda _
2356 (substitute* "fakefs.gemspec"
2357 (("`git ls-files lib README.md LICENSE`")
2358 "`find lib README.md LICENSE -type f | sort`"))
2359 #t))
2360 (add-before 'check 'remove-version-constraints
2361 (lambda _
2362 ;; Drop hard version requirements for test dependencies.
2363 (substitute* "fakefs.gemspec"
2364 (("(.*add_development_dependency .*), .*" _ dep)
2365 (string-append dep "\n")))
2366 #t)))))
2367 (native-inputs
2368 `(("ruby-bump" ,ruby-bump)
2369 ("ruby-maxitest" ,ruby-maxitest)
2370 ("ruby-rubocop" ,ruby-rubocop)
2371 ("ruby-rspec" ,ruby-rspec)))
2372 (synopsis "Fake file system for Ruby")
2373 (description
2374 "This package provides a fake file system for use in test suites. It
2375 avoids the need for manually creating temporary directories, or dealing
2376 with platform intricacies in @code{File} and @code{FileUtils}.")
2377 (license license:expat)))
2378
2379 (define-public ruby-orderedhash
2380 (package
2381 (name "ruby-orderedhash")
2382 (version "0.0.6")
2383 (source (origin
2384 (method url-fetch)
2385 (uri (rubygems-uri "orderedhash" version))
2386 (sha256
2387 (base32
2388 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
2389 (build-system ruby-build-system)
2390 (arguments
2391 '(#:tests? #f)) ; no test suite
2392 (synopsis "Ruby library providing an order-preserving hash")
2393 (description "Orderedhash is a Ruby library providing a hash
2394 implementation that preserves the order of items and features some array-like
2395 extensions.")
2396 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
2397 (license license:public-domain)))
2398
2399 (define-public ruby-libxml
2400 (package
2401 (name "ruby-libxml")
2402 (version "3.0.0")
2403 (source
2404 (origin
2405 (method url-fetch)
2406 (uri (rubygems-uri "libxml-ruby" version))
2407 (sha256
2408 (base32
2409 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
2410 (build-system ruby-build-system)
2411 (inputs
2412 `(("zlib" ,zlib)
2413 ("libxml2" ,libxml2)))
2414 (arguments
2415 '(#:tests? #f ; test suite hangs for unknown reason
2416 #:gem-flags
2417 (list "--"
2418 (string-append "--with-xml2-include="
2419 (assoc-ref %build-inputs "libxml2")
2420 "/include/libxml2" ))))
2421 (synopsis "Ruby bindings for GNOME Libxml2")
2422 (description "The Libxml-Ruby project provides Ruby language bindings for
2423 the GNOME Libxml2 XML toolkit.")
2424 (home-page "https://xml4r.github.com/libxml-ruby")
2425 (license license:expat)))
2426
2427 (define-public ruby-lino
2428 (package
2429 (name "ruby-lino")
2430 (version "1.1.0")
2431 (source
2432 (origin
2433 (method url-fetch)
2434 (uri (rubygems-uri "lino" version))
2435 (sha256
2436 (base32
2437 "11d29g0fk372b9fcpyr0k6hxm2b4j4igpysmi542hgbbgqgp9cd3"))))
2438 (build-system ruby-build-system)
2439 (arguments
2440 '(#:tests? #f)) ; No included tests
2441 (propagated-inputs
2442 `(("ruby-hamster" ,ruby-hamster)
2443 ("ruby-open4" ,ruby-open4)))
2444 (synopsis "Build and execute commands in Ruby")
2445 (description
2446 "@code{Lino} provides an interface to run external commands. It provides
2447 an interface to add options as well as managing the standard input, output and
2448 error streams.")
2449 (home-page "https://github.com/tobyclemson/lino")
2450 (license license:expat)))
2451
2452 (define-public ruby-xml-simple
2453 (package
2454 (name "ruby-xml-simple")
2455 (version "1.1.5")
2456 (source (origin
2457 (method url-fetch)
2458 (uri (rubygems-uri "xml-simple" version))
2459 (sha256
2460 (base32
2461 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
2462 (build-system ruby-build-system)
2463 (arguments
2464 '(#:tests? #f)) ; no test suite
2465 (synopsis "Simple Ruby library for XML processing")
2466 (description "This library provides a simple API for XML processing in
2467 Ruby.")
2468 (home-page "https://github.com/maik/xml-simple")
2469 (license license:ruby)))
2470
2471 (define-public ruby-thor
2472 (package
2473 (name "ruby-thor")
2474 (version "1.0.1")
2475 (source (origin
2476 ;; Pull from git because the gem has no tests.
2477 (method git-fetch)
2478 (uri (git-reference
2479 (url "https://github.com/erikhuda/thor")
2480 (commit (string-append "v" version))))
2481 (file-name (git-file-name name version))
2482 (sha256
2483 (base32
2484 "1anrx5vynk57hn5c8ig5pgkmcsbj9q5mvckd5rviw1jid7n89k57"))))
2485 (build-system ruby-build-system)
2486 (arguments
2487 '(#:phases (modify-phases %standard-phases
2488 (add-after 'unpack 'fix-readline-tests
2489 (lambda _
2490 ;; Ensure Readline is initialized before running the
2491 ;; test to avoid a type clash with the mock ::Readline.
2492 ;; See <https://github.com/erikhuda/thor/pull/717>.
2493 (substitute* "spec/line_editor/readline_spec.rb"
2494 (("unless defined\\? ::Readline" all)
2495 (string-append "Thor::LineEditor::Readline.available?\n"
2496 all)))
2497 #t))
2498 (add-after 'unpack 'remove-coveralls-dependency
2499 (lambda _
2500 ;; Do not hook the test suite into the online
2501 ;; coveralls service.
2502 (substitute* "Gemfile"
2503 ((".*coveralls.*") ""))
2504 (substitute* "spec/helper.rb"
2505 (("require \"coveralls\"") "")
2506 (("Coveralls::SimpleCov::Formatter") "")
2507 ;; Also drop the WebMock dependency which is only
2508 ;; present to allow a coveralls.io connection, and
2509 ;; would otherwise introduce a circular dependency.
2510 (("require \"webmock/rspec\"") "")
2511 (("WebMock\\.disable_net_connect.*") ""))
2512 #t))
2513 (add-after 'unpack 'disable-network-tests
2514 (lambda _
2515 ;; These tests attempt to look up example.com.
2516 (substitute* "spec/actions/file_manipulation_spec.rb"
2517 (("it \"accepts (https?) remote sources" _ proto)
2518 (string-append "xit \"accepts " proto " remote sources")))
2519 #t))
2520 (add-after 'unpack 'disable-quality-tests
2521 (lambda _
2522 ;; These tests attempt to check the git repository for
2523 ;; tabs vs spaces, double vs single quotes, etc, and
2524 ;; depend on the git checkout.
2525 (delete-file "spec/quality_spec.rb")
2526 #t))
2527 (add-before 'check 'make-files-writable
2528 (lambda _
2529 ;; The tests needs rw access to the test suite.
2530 (for-each make-file-writable (find-files "spec"))
2531 #t))
2532 (replace 'check
2533 (lambda _
2534 (invoke "rspec" "spec"))))))
2535 (native-inputs
2536 `(("ruby-rspec" ,ruby-rspec)
2537 ("ruby-simplecov" ,ruby-simplecov)))
2538 (synopsis "Ruby toolkit for building command-line interfaces")
2539 (description "Thor is a toolkit for building powerful command-line
2540 interfaces.")
2541 (home-page "http://whatisthor.com/")
2542 (license license:expat)))
2543
2544 (define-public ruby-lumberjack
2545 (package
2546 (name "ruby-lumberjack")
2547 (version "1.0.13")
2548 (source (origin
2549 (method url-fetch)
2550 (uri (rubygems-uri "lumberjack" version))
2551 (sha256
2552 (base32
2553 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
2554 (build-system ruby-build-system)
2555 (native-inputs
2556 `(("ruby-rspec" ,ruby-rspec)
2557 ("ruby-timecop" ,ruby-timecop)))
2558 (synopsis "Logging utility library for Ruby")
2559 (description "Lumberjack is a simple logging utility that can be a drop in
2560 replacement for Logger or ActiveSupport::BufferedLogger. It provides support
2561 for automatically rolling log files even with multiple processes writing the
2562 same log file.")
2563 (home-page "https://github.com/bdurand/lumberjack")
2564 (license license:expat)))
2565
2566 (define-public ruby-rbnacl
2567 (package
2568 (name "ruby-rbnacl")
2569 (version "6.0.1")
2570 (source
2571 (origin
2572 (method url-fetch)
2573 (uri (rubygems-uri "rbnacl" version))
2574 (sha256
2575 (base32
2576 "0ajxy5kj2jw09wdsla3jmha8w07vj5l14288xr9djpl327g3lzhn"))))
2577 (build-system ruby-build-system)
2578 (arguments
2579 `(#:phases
2580 (modify-phases %standard-phases
2581 (add-after 'unpack 'remove-unnecessary-dependencies
2582 (lambda _
2583 ;; Coveralls relates to a network service, and Rubocop to code
2584 ;; linting and both are unnecessary to run the tests
2585 (substitute* "Gemfile"
2586 ((".*rubocop.*") "\n")
2587 ((".*guard-rspec.*") "\n")
2588 ((".*coveralls.*") "\n"))
2589 (substitute* "spec/spec_helper.rb"
2590 (("require \"coveralls\"") "")
2591 (("Coveralls.wear!") ""))
2592 #t))
2593 (add-after 'unpack 'use-libsodium-from-store
2594 (lambda* (#:key inputs #:allow-other-keys)
2595 (substitute* '("lib/rbnacl/init.rb"
2596 "lib/rbnacl/sodium.rb")
2597 (("ffi_lib \\[.+\\]")
2598 (string-append "ffi_lib [\""
2599 (assoc-ref inputs "libsodium") "/lib/libsodium.so"
2600 "\"]")))
2601 #t))
2602 ;; Run Rspec directly to avoid the Rubocop dependency in the Rakefile
2603 (replace 'check
2604 (lambda* (#:key tests? #:allow-other-keys)
2605 (when tests?
2606 (invoke "rspec"))
2607 #t)))))
2608 (propagated-inputs
2609 `(("ruby-ffi" ,ruby-ffi)))
2610 (inputs
2611 `(("libsodium" ,libsodium)))
2612 (native-inputs
2613 `(("bundler" ,bundler)
2614 ("ruby-rspec" ,ruby-rspec)))
2615 (synopsis "Ruby FFI binding to libsodium")
2616 (description
2617 "This package provides Ruby FFI bindings to the Networking and
2618 Cryptography (NaCl) library, also known as libsodium. This provides a
2619 high-level toolkit for building cryptographic systems and protocols.")
2620 (home-page "https://github.com/crypto-rb/rbnacl")
2621 (license license:expat)))
2622
2623 (define-public ruby-nenv
2624 (package
2625 (name "ruby-nenv")
2626 (version "0.3.0")
2627 (source (origin
2628 (method url-fetch)
2629 (uri (rubygems-uri "nenv" version))
2630 (sha256
2631 (base32
2632 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
2633 (build-system ruby-build-system)
2634 (arguments
2635 `(#:tests? #f)) ; no tests included
2636 (native-inputs
2637 `(("ruby-rspec" ,ruby-rspec)
2638 ("bundler" ,bundler)))
2639 (synopsis "Ruby interface for modifying the environment")
2640 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
2641 and inspect the environment.")
2642 (home-page "https://github.com/e2/nenv")
2643 (license license:expat)))
2644
2645 (define-public ruby-ptools
2646 (package
2647 (name "ruby-ptools")
2648 (version "1.3.5")
2649 (source (origin
2650 (method url-fetch)
2651 (uri (rubygems-uri "ptools" version))
2652 (sha256
2653 (base32
2654 "1jb1h1nsk9zwykpniw8filbsk26kjsdlpk5wz6w0zyamcd41h87j"))))
2655 (build-system ruby-build-system)
2656 (arguments
2657 '(#:phases (modify-phases %standard-phases
2658 (add-after 'unpack 'patch-/bin/ls
2659 (lambda _
2660 (substitute* "test/test_binary.rb"
2661 (("/bin/ls")
2662 (which "ls")))
2663 #t))
2664 (add-before 'install 'create-gem
2665 (lambda _
2666 ;; Do not attempt to sign the gem.
2667 (substitute* "Rakefile"
2668 (("spec\\.signing_key = .*")
2669 ""))
2670 (invoke "rake" "gem:create"))))))
2671 (synopsis "Extra methods for Ruby's @code{File} class")
2672 (description
2673 "The @dfn{ptools} (power tools) library extends Ruby's core @code{File}
2674 class with many additional methods modelled after common POSIX tools, such as
2675 @code{File.which} for finding executables, @code{File.tail} to print the last
2676 lines of a file, @code{File.wc} to count words, and so on.")
2677 (home-page "https://github.com/djberg96/ptools")
2678 (license license:artistic2.0)))
2679
2680 (define-public ruby-permutation
2681 (package
2682 (name "ruby-permutation")
2683 (version "0.1.8")
2684 (source (origin
2685 (method url-fetch)
2686 (uri (rubygems-uri "permutation" version))
2687 (sha256
2688 (base32
2689 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
2690 (build-system ruby-build-system)
2691 (arguments
2692 `(#:phases
2693 (modify-phases %standard-phases
2694 (add-after 'unpack 'fix-rakefile
2695 (lambda _
2696 (substitute* "Rakefile"
2697 (("require 'rake/gempackagetask'")
2698 "require 'rubygems/package_task'")
2699 (("include Config") ""))
2700 #t))
2701 (replace 'check
2702 (lambda _
2703 (invoke "ruby" "-Ilib" "test/test.rb"))))))
2704 (synopsis "Library to perform operations with sequence permutations")
2705 (description "This package provides a Ruby library to perform different
2706 operations with permutations of sequences, such as strings and arrays.")
2707 (home-page "https://flori.github.io/permutation")
2708 (license license:gpl2))) ; GPL 2 only
2709
2710 (define-public ruby-shellany
2711 (package
2712 (name "ruby-shellany")
2713 (version "0.0.1")
2714 (source (origin
2715 (method url-fetch)
2716 (uri (rubygems-uri "shellany" version))
2717 (sha256
2718 (base32
2719 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
2720 (build-system ruby-build-system)
2721 (arguments
2722 `(#:test-target "default"
2723 #:phases
2724 (modify-phases %standard-phases
2725 (add-after 'unpack 'fix-version-test
2726 (lambda _
2727 (substitute* "spec/shellany_spec.rb"
2728 (("^RSpec") "require \"shellany\"\nRSpec"))
2729 #t)))))
2730 (native-inputs
2731 `(("ruby-rspec" ,ruby-rspec)
2732 ("ruby-nenv" ,ruby-nenv)
2733 ("bundler" ,bundler)))
2734 (synopsis "Capture command output")
2735 (description "Shellany is a Ruby library providing functions to capture
2736 the output produced by running shell commands.")
2737 (home-page "https://rubygems.org/gems/shellany")
2738 (license license:expat)))
2739
2740 (define-public ruby-notiffany
2741 (package
2742 (name "ruby-notiffany")
2743 (version "0.1.3")
2744 (source (origin
2745 (method url-fetch)
2746 (uri (rubygems-uri "notiffany" version))
2747 (sha256
2748 (base32
2749 "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk"))))
2750 (build-system ruby-build-system)
2751 ;; Tests are not included in the gem.
2752 (arguments `(#:tests? #f))
2753 (propagated-inputs
2754 `(("ruby-shellany" ,ruby-shellany)
2755 ("ruby-nenv" ,ruby-nenv)))
2756 (native-inputs
2757 `(("bundler" ,bundler)))
2758 (synopsis "Wrapper library for notification libraries")
2759 (description "Notiffany is a Ruby wrapper library for notification
2760 libraries such as Libnotify.")
2761 (home-page "https://github.com/guard/notiffany")
2762 (license license:expat)))
2763
2764 (define-public ruby-forking-test-runner
2765 (package
2766 (name "ruby-forking-test-runner")
2767 (version "1.6.0")
2768 (home-page "https://github.com/grosser/forking_test_runner")
2769 (source (origin
2770 (method git-fetch)
2771 (uri (git-reference (url home-page)
2772 (commit (string-append "v" version))))
2773 (file-name (git-file-name name version))
2774 (sha256
2775 (base32
2776 "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m"))))
2777 (build-system ruby-build-system)
2778 (arguments
2779 '(#:test-target "spec"
2780 ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has
2781 ;; 1.4.1, which in turn breaks the tests that use ActiveRecord.
2782 #:tests? #f
2783 #:phases (modify-phases %standard-phases
2784 (replace 'replace-git-ls-files
2785 (lambda _
2786 (substitute* "forking_test_runner.gemspec"
2787 (("`git ls-files lib/ bin/ MIT-LICENSE`")
2788 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
2789 #t))
2790 (add-before 'check 'remove-version-constraints
2791 (lambda _
2792 ;; Ignore hard coded version constraints for the tests.
2793 (delete-file "Gemfile.lock")
2794 #t))
2795 (add-before 'check 'set-HOME
2796 (lambda _
2797 ;; Many tests invoke Bundler, and fails when Bundler
2798 ;; warns that /homeless-shelter does not exist.
2799 (setenv "HOME" "/tmp")
2800 #t)))))
2801 (native-inputs
2802 `(("ruby-activerecord" ,ruby-activerecord)
2803 ("ruby-bump" ,ruby-bump)
2804 ("ruby-rspec" ,ruby-rspec)
2805 ("ruby-sqlite3" ,ruby-sqlite3)
2806 ("ruby-wwtd" ,ruby-wwtd)))
2807 (propagated-inputs
2808 `(("ruby-parallel-tests" ,ruby-parallel-tests)))
2809 (synopsis "Run every test in a fork")
2810 (description
2811 "This package is a wrapper around @code{parallel_tests} that runs every
2812 test in a fork to avoid pollution and get clean output per test.")
2813 (license license:expat)))
2814
2815 (define-public ruby-formatador
2816 (package
2817 (name "ruby-formatador")
2818 (version "0.2.5")
2819 (source (origin
2820 (method url-fetch)
2821 (uri (rubygems-uri "formatador" version))
2822 (sha256
2823 (base32
2824 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
2825 (build-system ruby-build-system)
2826 ;; Circular dependency: Tests require ruby-shindo, which requires
2827 ;; ruby-formatador at runtime.
2828 (arguments `(#:tests? #f))
2829 (synopsis "Ruby library to format text on stdout")
2830 (description "Formatador is a Ruby library to format text printed to the
2831 standard output stream.")
2832 (home-page "https://github.com/geemus/formatador")
2833 (license license:expat)))
2834
2835 (define-public ruby-fuubar
2836 (package
2837 (name "ruby-fuubar")
2838 (version "2.3.2")
2839 (source
2840 (origin
2841 ;; Fetch from the git repository, as the gem package doesn't include
2842 ;; the tests.
2843 (method git-fetch)
2844 (uri (git-reference
2845 (url "https://github.com/thekompanee/fuubar")
2846 (commit (string-append "releases/v" version))))
2847 (file-name (git-file-name name version))
2848 (sha256
2849 (base32
2850 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
2851 (build-system ruby-build-system)
2852 (arguments
2853 '(;; TODO: Some tests fail, unsure why.
2854 ;; 21 examples, 7 failures
2855 #:tests? #f
2856 #:phases
2857 (modify-phases %standard-phases
2858 (add-before 'build 'delete-certificate
2859 (lambda _
2860 ;; Remove 's.cert_chain' as we do not build with a private key
2861 (substitute* "fuubar.gemspec"
2862 ((".*cert_chain.*") "")
2863 ((".*signing_key.*") ""))
2864 #t))
2865 (replace 'check
2866 (lambda* (#:key tests? #:allow-other-keys)
2867 (when tests?
2868 (invoke "rspec"))
2869 #t)))))
2870 (native-inputs
2871 `(("bundler" ,bundler)))
2872 (propagated-inputs
2873 `(("ruby-rspec-core" ,ruby-rspec-core)
2874 ("ruby-progressbar" ,ruby-progressbar)))
2875 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
2876 (description
2877 "Fuubar is an RSpec formatter that uses a progress bar instead of a
2878 string of letters and dots as feedback. It also stops on the first test
2879 failure.")
2880 (home-page "https://github.com/thekompanee/fuubar")
2881 (license license:expat)))
2882
2883 (define-public ruby-haml
2884 (package
2885 (name "ruby-haml")
2886 (version "5.0.4")
2887 (source
2888 (origin
2889 (method url-fetch)
2890 (uri (rubygems-uri "haml" version))
2891 (sha256
2892 (base32
2893 "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"))))
2894 (build-system ruby-build-system)
2895 (arguments
2896 '(#:tests? #f)) ; No included tests
2897 (propagated-inputs
2898 `(("ruby-tilt" ,ruby-tilt)
2899 ("ruby-temple" ,ruby-temple)))
2900 (synopsis "Haml is a Ruby library to generate HTML documents")
2901 (description
2902 "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of
2903 HTML or XML that is designed to express the structure of documents using
2904 indentation rather than closing tags. It was originally envisioned as a
2905 plugin for Ruby on Rails, but it can function as a stand-alone templating
2906 engine.")
2907 (home-page "http://haml.info/")
2908 (license license:expat)))
2909
2910 (define-public ruby-hamster
2911 (package
2912 (name "ruby-hamster")
2913 (version "3.0.0")
2914 (source
2915 (origin
2916 (method url-fetch)
2917 (uri (rubygems-uri "hamster" version))
2918 (sha256
2919 (base32
2920 "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
2921 (build-system ruby-build-system)
2922 (arguments
2923 '(#:phases
2924 (modify-phases %standard-phases
2925 (add-after 'unpack 'remove-unnecessary-dependencies
2926 (lambda _
2927 ;; pry is a debugging tool, and is unnecessary when running the
2928 ;; tests
2929 (substitute* "spec/lib/hamster/vector/insert_spec.rb"
2930 (("require 'pry'") ""))
2931 (substitute* "spec/spec_helper.rb"
2932 (("require \"pry\"") "")
2933 ;; CodeClimate is an online service, and is unnecessary for
2934 ;; running the tests
2935 (("require \"codeclimate-test-reporter\"") "")
2936 (("CodeClimate.*\n") ""))
2937 #t))
2938 ;; No Rakefile is included, so run rspec directly.
2939 (replace 'check
2940 (lambda* (#:key tests? #:allow-other-keys)
2941 (when tests?
2942 (invoke "rspec"))
2943 #t)))))
2944 (propagated-inputs
2945 `(("ruby-concurrent" ,ruby-concurrent)))
2946 (native-inputs
2947 `(("ruby-rspec" ,ruby-rspec)))
2948 (synopsis "Efficient, immutable, thread-safe collection classes for Ruby")
2949 (description
2950 "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector},
2951 @code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an
2952 immutable queue or stack).")
2953 (home-page "https://github.com/hamstergem/hamster")
2954 (license license:expat)))
2955
2956 (define-public ruby-hashdiff
2957 (package
2958 (name "ruby-hashdiff")
2959 (version "0.3.8")
2960 (source
2961 (origin
2962 (method url-fetch)
2963 (uri (rubygems-uri "hashdiff" version))
2964 (sha256
2965 (base32
2966 "19ykg5pax8798nh1yv71adkx0zzs7gn2rxjj86v7nsw0jba5lask"))))
2967 (build-system ruby-build-system)
2968 (arguments
2969 '(#:phases
2970 (modify-phases %standard-phases
2971 ;; Run tests directly via rspec to avoid Rake issue:
2972 ;; NoMethodError: undefined method `last_comment'
2973 (replace 'check
2974 (lambda* (#:key tests? #:allow-other-keys)
2975 (when tests?
2976 (invoke "rspec"))
2977 #t)))))
2978 (native-inputs
2979 `(("bundler" ,bundler)
2980 ("ruby-rspec" ,ruby-rspec-2)))
2981 (synopsis "HashDiff computes the smallest difference between two hashes")
2982 (description
2983 "HashDiff is a Ruby library to compute the smallest difference between
2984 two hashes.")
2985 (home-page "https://github.com/liufengyun/hashdiff")
2986 (license license:expat)))
2987
2988 (define-public ruby-hydra
2989 ;; No releases yet.
2990 (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
2991 (revision "0"))
2992 (package
2993 (name "ruby-hydra")
2994 (version (git-version "0.0" revision commit))
2995 (home-page "https://github.com/hyphenation/hydra")
2996 (source (origin
2997 (method git-fetch)
2998 (uri (git-reference (url home-page) (commit commit)))
2999 (file-name (git-file-name name version))
3000 (sha256
3001 (base32
3002 "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
3003 (build-system ruby-build-system)
3004 (arguments
3005 '(#:phases (modify-phases %standard-phases
3006 (add-after 'unpack 'make-files-writable
3007 (lambda _
3008 (for-each make-file-writable (find-files "."))
3009 #t))
3010 (replace 'check
3011 (lambda _
3012 (invoke "rspec"))))))
3013 (native-inputs
3014 `(("ruby-rspec" ,ruby-rspec)))
3015 (propagated-inputs
3016 `(("ruby-byebug" ,ruby-byebug)))
3017 (synopsis "Ruby hyphenation patterns")
3018 (description
3019 "ruby-hydra is a Ruby library for working with hyphenation patterns.")
3020 (license license:expat))))
3021
3022 (define-public ruby-shindo
3023 (package
3024 (name "ruby-shindo")
3025 (version "0.3.8")
3026 (source (origin
3027 (method url-fetch)
3028 (uri (rubygems-uri "shindo" version))
3029 (sha256
3030 (base32
3031 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
3032 (build-system ruby-build-system)
3033 (arguments
3034 `(#:test-target "shindo_tests"
3035 #:phases
3036 (modify-phases %standard-phases
3037 (add-after 'unpack 'fix-tests
3038 (lambda _
3039 (substitute* "tests/tests_helper.rb"
3040 (("-rubygems") ""))
3041 (substitute* "Rakefile"
3042 (("system \"shindo") "system \"./bin/shindo")
3043 ;; This test doesn't work, so we disable it.
3044 (("fail \"The build_error test should fail") "#")
3045 ((" -rubygems") ""))
3046 #t)))))
3047 (propagated-inputs
3048 `(("ruby-formatador" ,ruby-formatador)))
3049 (synopsis "Simple depth first Ruby testing")
3050 (description "Shindo is a simple depth first testing library for Ruby.")
3051 (home-page "https://github.com/geemus/shindo")
3052 (license license:expat)))
3053
3054 (define-public ruby-rubygems-tasks
3055 (package
3056 (name "ruby-rubygems-tasks")
3057 (version "0.2.5")
3058 (source (origin
3059 (method url-fetch)
3060 (uri (rubygems-uri "rubygems-tasks" version))
3061 (sha256
3062 (base32
3063 "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx"))))
3064 (build-system ruby-build-system)
3065 ;; Tests need Internet access.
3066 (arguments `(#:tests? #f))
3067 (native-inputs
3068 `(("ruby-rspec" ,ruby-rspec)
3069 ("ruby-yard" ,ruby-yard)))
3070 (synopsis "Rake tasks for managing and releasing Ruby Gems")
3071 (description "Rubygems-task provides Rake tasks for managing and releasing
3072 Ruby Gems.")
3073 (home-page "https://github.com/postmodern/rubygems-tasks")
3074 (license license:expat)))
3075
3076 (define-public ruby-rubyzip
3077 (package
3078 (name "ruby-rubyzip")
3079 (version "1.2.1")
3080 (source
3081 (origin
3082 (method url-fetch)
3083 (uri (rubygems-uri "rubyzip" version))
3084 (sha256
3085 (base32
3086 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
3087 (build-system ruby-build-system)
3088 (arguments
3089 '(#:phases
3090 (modify-phases %standard-phases
3091 (add-before 'check 'patch-tests
3092 (lambda* (#:key inputs #:allow-other-keys)
3093 (substitute* "test/gentestfiles.rb"
3094 (("/usr/bin/zip")
3095 (string-append
3096 (assoc-ref inputs "zip") "/bin/zip")))
3097 (substitute* "test/input_stream_test.rb"
3098 (("/usr/bin/env ruby") (which "ruby")))
3099 #t)))))
3100 (native-inputs
3101 `(("bundler" ,bundler)
3102 ("ruby-simplecov" ,ruby-simplecov)
3103 ("zip" ,zip)
3104 ("unzip" ,unzip)))
3105 (synopsis "Ruby module is for reading and writing zip files")
3106 (description
3107 "The rubyzip module provides ways to read from and create zip files.")
3108 (home-page "https://github.com/rubyzip/rubyzip")
3109 (license license:bsd-2)))
3110
3111 (define-public ruby-simplecov-html
3112 (package
3113 (name "ruby-simplecov-html")
3114 (version "0.10.2")
3115 (source (origin
3116 (method url-fetch)
3117 (uri (rubygems-uri "simplecov-html" version))
3118 (sha256
3119 (base32
3120 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
3121 (build-system ruby-build-system)
3122 (arguments `(#:tests? #f)) ; there are no tests
3123 (native-inputs
3124 `(("bundler" ,bundler)))
3125 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
3126 (description "This package provides the default HTML formatter for
3127 the SimpleCov code coverage tool for Ruby version 1.9 and above.")
3128 (home-page "https://github.com/colszowka/simplecov-html")
3129 (license license:expat)))
3130
3131 (define-public ruby-simplecov
3132 (package
3133 (name "ruby-simplecov")
3134 (version "0.17.1")
3135 (source (origin
3136 (method url-fetch)
3137 (uri (rubygems-uri "simplecov" version))
3138 (sha256
3139 (base32
3140 "1135k46nik05sdab30yxb8264lqiz01c8v000g16cl9pjc4mxrdw"))))
3141 (build-system ruby-build-system)
3142 ;; Simplecov depends on rubocop for code style checking at build time.
3143 ;; Rubocop needs simplecov at build time.
3144 (arguments `(#:tests? #f))
3145 (propagated-inputs
3146 `(("ruby-json" ,ruby-json)
3147 ("ruby-docile" ,ruby-docile)
3148 ("ruby-simplecov-html" ,ruby-simplecov-html)))
3149 (native-inputs
3150 `(("bundler" ,bundler)))
3151 (synopsis "Code coverage framework for Ruby")
3152 (description "SimpleCov is a code coverage framework for Ruby with a
3153 powerful configuration library and automatic merging of coverage across test
3154 suites.")
3155 (home-page "https://github.com/colszowka/simplecov")
3156 (license license:expat)))
3157
3158 (define-public ruby-useragent
3159 (package
3160 (name "ruby-useragent")
3161 (version "0.16.10")
3162 (source (origin
3163 (method url-fetch)
3164 (uri (rubygems-uri "useragent" version))
3165 (sha256
3166 (base32
3167 "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p"))))
3168 (build-system ruby-build-system)
3169 (arguments
3170 '(#:tests? #f)) ; no test suite
3171 (synopsis "HTTP user agent parser for Ruby")
3172 (description "UserAgent is a Ruby library that parses and compares HTTP
3173 User Agents.")
3174 (home-page "https://github.com/gshutler/useragent")
3175 (license license:expat)))
3176
3177 (define-public ruby-backports
3178 (package
3179 (name "ruby-backports")
3180 (version "3.11.4")
3181 (source
3182 (origin
3183 (method url-fetch)
3184 (uri (rubygems-uri "backports" version))
3185 (sha256
3186 (base32
3187 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
3188 (build-system ruby-build-system)
3189 (arguments
3190 '(;; TODO: This should be default, but there is one test failure
3191 #:test-target "all_spec"))
3192 (native-inputs
3193 `(("ruby-mspec" ,ruby-mspec)
3194 ("ruby-activesupport" ,ruby-activesupport)))
3195 (synopsis "Backports of the features in newer Ruby versions")
3196 (description
3197 "Backports enables more compatibility across Ruby versions by providing
3198 backports of some features.")
3199 (home-page "https://github.com/marcandre/backports")
3200 (license license:expat)))
3201
3202 (define-public ruby-bacon
3203 (package
3204 (name "ruby-bacon")
3205 (version "1.2.0")
3206 (source (origin
3207 (method url-fetch)
3208 (uri (rubygems-uri "bacon" version))
3209 (sha256
3210 (base32
3211 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
3212 (build-system ruby-build-system)
3213 (synopsis "Small RSpec clone")
3214 (description "Bacon is a small RSpec clone providing all essential
3215 features.")
3216 (home-page "https://github.com/chneukirchen/bacon")
3217 (license license:expat)))
3218
3219 (define-public ruby-bacon-bits
3220 (package
3221 (name "ruby-bacon-bits")
3222 (version "0.1.0")
3223 (source
3224 (origin
3225 (method url-fetch)
3226 (uri (rubygems-uri "bacon-bits" version))
3227 (sha256
3228 (base32
3229 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
3230 (build-system ruby-build-system)
3231 (arguments
3232 ;; No tests
3233 '(#:tests? #f))
3234 (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
3235 (synopsis "Extensions to Bacon, for disabling tests, before and after
3236 blocks and more")
3237 (description
3238 "This extends the bacon testing framework with useful extensions to
3239 disable tests, have before and after blocks that run once and more.")
3240 (home-page "https://github.com/cldwalker/bacon-bits")
3241 (license license:expat)))
3242
3243 (define-public ruby-bacon-colored-output
3244 (package
3245 (name "ruby-bacon-colored-output")
3246 (version "1.1.1")
3247 (source
3248 (origin
3249 (method url-fetch)
3250 (uri (rubygems-uri "bacon-colored_output" version))
3251 (sha256
3252 (base32
3253 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
3254 (build-system ruby-build-system)
3255 (arguments
3256 '(;; No included tests
3257 #:tests? #f))
3258 (propagated-inputs
3259 `(("ruby-bacon" ,ruby-bacon)))
3260 (synopsis "Colored output for Bacon test framework")
3261 (description
3262 "This package adds color through ANSI escape codes to Bacon test
3263 output.")
3264 (home-page "https://github.com/whitequark/bacon-colored_output")
3265 (license license:expat)))
3266
3267 (define-public ruby-connection-pool
3268 (package
3269 (name "ruby-connection-pool")
3270 (version "2.2.2")
3271 (source (origin
3272 (method url-fetch)
3273 (uri (rubygems-uri "connection_pool" version))
3274 (sha256
3275 (base32
3276 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
3277 (build-system ruby-build-system)
3278 (native-inputs
3279 `(("bundler" ,bundler)))
3280 (synopsis "Generic connection pool for Ruby")
3281 (description "Connection_pool provides a generic connection pooling
3282 interface for Ruby programs.")
3283 (home-page "https://github.com/mperham/connection_pool")
3284 (license license:expat)))
3285
3286 (define-public ruby-fast-gettext
3287 (package
3288 (name "ruby-fast-gettext")
3289 (version "2.0.3")
3290 (home-page "https://github.com/grosser/fast_gettext")
3291 (source (origin
3292 (method git-fetch)
3293 (uri (git-reference (url home-page)
3294 (commit (string-append "v" version))))
3295 (file-name (git-file-name name version))
3296 (sha256
3297 (base32
3298 "1dg14apq5sfjshhcq0idphhs7aq9ikzswhqmn689p1h76mxqr1v6"))))
3299 (build-system ruby-build-system)
3300 (arguments
3301 '(#:test-target "spec"
3302 #:phases (modify-phases %standard-phases
3303 (add-before 'check 'remove-version-constraints
3304 (lambda _
3305 (delete-file "Gemfile.lock")
3306 #t))
3307 (add-before 'check 'remove-activerecord-test
3308 (lambda _
3309 ;; FIXME: This test fails because ActiveRecord depends on
3310 ;; a different version of ruby-sqlite than the currently
3311 ;; available one.
3312 (delete-file
3313 "spec/fast_gettext/translation_repository/db_spec.rb")
3314 #t))
3315 (add-before 'check 'disable-i18n-test
3316 (lambda _
3317 ;; XXX: This test checks i18n intricasies with Rails 3 and
3318 ;; automatically disables itself for Rails 4.0, but does
3319 ;; not know about newer versions as it has not been updated
3320 ;; since 2014. Disable for later versions of Rails too.
3321 (substitute* "spec/fast_gettext/vendor/string_spec.rb"
3322 (((string-append "ActiveRecord::VERSION::MAJOR == 4 and "
3323 "ActiveRecord::VERSION::MINOR == 0"))
3324 "ActiveRecord::VERSION::MAJOR >= 4"))
3325 #t)))))
3326 (native-inputs
3327 `(;; For tests.
3328 ("ruby-activerecord" ,ruby-activerecord)
3329 ("ruby-activesupport" ,ruby-activesupport)
3330 ("ruby-bump" ,ruby-bump)
3331 ("ruby-forking-test-runner" ,ruby-forking-test-runner)
3332 ("ruby-i18n" ,ruby-i18n)
3333 ("ruby-rubocop" ,ruby-rubocop)
3334 ("ruby-rspec" ,ruby-rspec)
3335 ("ruby-single-cov" ,ruby-single-cov)
3336 ("ruby-sqlite3" ,ruby-sqlite3)
3337 ("ruby-wwtd" ,ruby-wwtd)))
3338 (synopsis "Fast implementation of @code{GetText}")
3339 (description
3340 "This package provides an alternative implementation of the Ruby
3341 @code{GetText} library that is approximately 12x faster yet thread safe.")
3342 ;; Some parts are covered by the Ruby license, see file headers.
3343 (license (list license:expat license:ruby))))
3344
3345 (define-public ruby-net-http-persistent
3346 (package
3347 (name "ruby-net-http-persistent")
3348 (version "3.0.0")
3349 (source (origin
3350 (method url-fetch)
3351 (uri (rubygems-uri "net-http-persistent" version))
3352 (sha256
3353 (base32
3354 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
3355 (build-system ruby-build-system)
3356 (native-inputs
3357 `(("ruby-connection-pool" ,ruby-connection-pool)
3358 ("ruby-hoe" ,ruby-hoe)))
3359 (synopsis "Persistent HTTP connection manager")
3360 (description "Net::HTTP::Persistent manages persistent HTTP connections
3361 using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
3362 (home-page "https://github.com/drbrain/net-http-persistent")
3363 (license license:expat)))
3364
3365 (define-public ruby-power-assert
3366 (package
3367 (name "ruby-power-assert")
3368 (version "1.1.5")
3369 (source (origin
3370 (method url-fetch)
3371 (uri (rubygems-uri "power_assert" version))
3372 (sha256
3373 (base32
3374 "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s"))))
3375 (build-system ruby-build-system)
3376 (arguments
3377 '(#:tests? #f)) ; No included tests
3378 (native-inputs
3379 `(("bundler" ,bundler)))
3380 (synopsis "Assert library with descriptive assertion messages")
3381 (description "Power-assert is an assertion library providing descriptive
3382 assertion messages for tests.")
3383 (home-page "https://github.com/k-tsj/power_assert")
3384 (license (list license:bsd-2 license:ruby))))
3385
3386 (define-public ruby-powerpack
3387 (package
3388 (name "ruby-powerpack")
3389 (version "0.1.2")
3390 (source
3391 (origin
3392 (method url-fetch)
3393 (uri (rubygems-uri "powerpack" version))
3394 (sha256
3395 (base32
3396 "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
3397 (build-system ruby-build-system)
3398 (arguments
3399 '(#:test-target "spec"))
3400 (native-inputs
3401 `(("bundler" ,bundler)
3402 ("ruby-rspec" ,ruby-rspec)
3403 ("ruby-yard" ,ruby-yard)))
3404 (synopsis "Useful extensions to core Ruby classes")
3405 (description
3406 "This package provides a few useful extensions to core Ruby classes,
3407 including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
3408 @code{String}.")
3409 (home-page "https://github.com/bbatsov/powerpack")
3410 (license license:expat)))
3411
3412 (define-public ruby-locale
3413 (package
3414 (name "ruby-locale")
3415 (version "2.1.2")
3416 (source (origin
3417 (method url-fetch)
3418 (uri (rubygems-uri "locale" version))
3419 (sha256
3420 (base32
3421 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
3422 (build-system ruby-build-system)
3423 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
3424 ;; which needs ruby-gettext, which needs ruby-locale. To break the
3425 ;; dependency cycle we disable tests.
3426 (arguments `(#:tests? #f))
3427 (native-inputs
3428 `(("bundler" ,bundler)
3429 ("ruby-yard" ,ruby-yard)))
3430 (synopsis "Ruby library providing basic localization APIs")
3431 (description
3432 "Ruby-Locale is the pure ruby library which provides basic APIs for
3433 localization.")
3434 (home-page "https://github.com/ruby-gettext/locale")
3435 (license (list license:lgpl3+ license:ruby))))
3436
3437 (define-public ruby-temple
3438 (package
3439 (name "ruby-temple")
3440 (version "0.8.2")
3441 (source
3442 (origin
3443 (method url-fetch)
3444 (uri (rubygems-uri "temple" version))
3445 (sha256
3446 (base32
3447 "060zzj7c2kicdfk6cpnn40n9yjnhfrr13d0rsbdhdij68chp2861"))))
3448 (build-system ruby-build-system)
3449 (native-inputs
3450 `(("ruby-tilt" ,ruby-tilt)
3451 ("ruby-bacon" ,ruby-bacon)
3452 ("ruby-erubis" ,ruby-erubis)))
3453 (synopsis "Template compilation framework in Ruby")
3454 (description
3455 "Temple is an abstraction and framework for compiling templates to pure
3456 Ruby.")
3457 (home-page "https://github.com/judofyr/temple")
3458 (license license:expat)))
3459
3460 (define-public ruby-text
3461 (package
3462 (name "ruby-text")
3463 (version "1.3.1")
3464 (source (origin
3465 (method url-fetch)
3466 (uri (rubygems-uri "text" version))
3467 (sha256
3468 (base32
3469 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
3470 (build-system ruby-build-system)
3471 (synopsis "Collection of text algorithms for Ruby")
3472 (description
3473 "This package provides a collection of text algorithms: Levenshtein,
3474 Soundex, Metaphone, Double Metaphone, Porter Stemming.")
3475 (home-page "https://github.com/threedaymonk/text")
3476 (license license:expat)))
3477
3478 (define-public ruby-gettext
3479 (package
3480 (name "ruby-gettext")
3481 (version "3.1.7")
3482 (source (origin
3483 (method url-fetch)
3484 (uri (rubygems-uri "gettext" version))
3485 (sha256
3486 (base32
3487 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
3488 (build-system ruby-build-system)
3489 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
3490 ;; which needs ruby-gettext. To break the dependency cycle we disable
3491 ;; tests.
3492 (arguments `(#:tests? #f))
3493 (propagated-inputs
3494 `(("ruby-locale" ,ruby-locale)
3495 ("ruby-text" ,ruby-text)))
3496 (native-inputs
3497 `(("bundler" ,bundler)
3498 ("ruby-yard" ,ruby-yard)))
3499 (synopsis "GNU gettext-like program for Ruby")
3500 (description
3501 "Gettext is a GNU gettext-like program for Ruby. The catalog
3502 file (po-file) used is the same as that used by GNU gettext, allowing you to
3503 use GNU gettext tools for maintenance.")
3504 (home-page "https://ruby-gettext.github.com/")
3505 (license (list license:lgpl3+ license:ruby))))
3506
3507 (define-public ruby-packnga
3508 (package
3509 (name "ruby-packnga")
3510 (version "1.0.4")
3511 (source (origin
3512 (method url-fetch)
3513 (uri (rubygems-uri "packnga" version))
3514 (sha256
3515 (base32
3516 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
3517 (build-system ruby-build-system)
3518 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
3519 ;; To break the dependency cycle we disable tests.
3520 (arguments `(#:tests? #f))
3521 (propagated-inputs
3522 `(("ruby-gettext" ,ruby-gettext)
3523 ("ruby-yard" ,ruby-yard)))
3524 (native-inputs
3525 `(("bundler" ,bundler)))
3526 (synopsis "Utility library to package internationalized libraries")
3527 (description
3528 "Packnga is a library to translate to many languages using YARD.")
3529 (home-page "http://ranguba.org/packnga/")
3530 (license license:lgpl2.0+)))
3531
3532 (define-public ruby-test-construct
3533 (package
3534 (name "ruby-test-construct")
3535 (version "2.0.1")
3536 (source
3537 (origin
3538 (method url-fetch)
3539 (uri (rubygems-uri "test_construct" version))
3540 (sha256
3541 (base32
3542 "1a2ym3l068d0pxzzr95kvqx87zpdsarxslz9ygd4qfm9frrz0kgj"))))
3543 (build-system ruby-build-system)
3544 (native-inputs
3545 `(("bundler" ,bundler)
3546 ("ruby-mocha" ,ruby-mocha)
3547 ("ruby-rspec" ,ruby-rspec)))
3548 (synopsis "Creates temporary files and directories for testing")
3549 (description
3550 "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
3551 temporary files and directories during tests.")
3552 (home-page "https://github.com/bhb/test_construct")
3553 (license license:expat)))
3554
3555 (define-public ruby-test-unit
3556 (package
3557 (name "ruby-test-unit")
3558 (version "3.2.5")
3559 (source (origin
3560 (method url-fetch)
3561 (uri (rubygems-uri "test-unit" version))
3562 (sha256
3563 (base32
3564 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
3565 (build-system ruby-build-system)
3566 (propagated-inputs
3567 `(("ruby-power-assert" ,ruby-power-assert)))
3568 (native-inputs
3569 `(("bundler" ,bundler)
3570 ("ruby-packnga" ,ruby-packnga)
3571 ("ruby-yard" ,ruby-yard)))
3572 (synopsis "Unit testing framework for Ruby")
3573 (description "@code{Test::Unit} is unit testing framework for Ruby, based
3574 on xUnit principles. These were originally designed by Kent Beck, creator of
3575 extreme programming software development methodology, for Smalltalk's SUnit.
3576 It allows writing tests, checking results and automated testing in Ruby.")
3577 (home-page "https://test-unit.github.io/")
3578 (license (list license:psfl license:ruby))))
3579
3580 (define-public ruby-markaby
3581 (package
3582 (name "ruby-markaby")
3583 (version "0.9.0")
3584 (source
3585 (origin
3586 (method url-fetch)
3587 (uri (rubygems-uri "markaby" version))
3588 (sha256
3589 (base32
3590 "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
3591 (build-system ruby-build-system)
3592 (arguments
3593 '(#:phases
3594 (modify-phases %standard-phases
3595 ;; Run rspec manually without using the Rakefile, as the versions of
3596 ;; Rake and RSpec 2 are incompatible:
3597 ;;
3598 ;; NoMethodError: undefined method `last_comment'
3599 (replace 'check
3600 (lambda* (#:key tests? #:allow-other-keys)
3601 (when tests?
3602 (invoke "rspec"))
3603 #t)))))
3604 (propagated-inputs
3605 `(("ruby-builder" ,ruby-builder)))
3606 (native-inputs
3607 `(("bundler" ,bundler)
3608 ("ruby-rspec" ,ruby-rspec-2)))
3609 (synopsis "Write HTML pages in pure Ruby")
3610 (description
3611 "Markaby allows writing HTML packages in pure Ruby. This is similar to
3612 the functionality provided by @acronym{ERB, Embedded Ruby}, but without the
3613 mixture of HTML and additional ERB syntax.")
3614 (home-page "https://markaby.github.io/")
3615 (license license:expat)))
3616
3617 (define-public ruby-maruku
3618 (package
3619 (name "ruby-maruku")
3620 (version "0.7.3")
3621 (source
3622 (origin
3623 (method url-fetch)
3624 (uri (rubygems-uri "maruku" version))
3625 (sha256
3626 (base32
3627 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
3628 (build-system ruby-build-system)
3629 (arguments
3630 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
3631 #:tests? #f
3632 #:phases
3633 (modify-phases %standard-phases
3634 (replace 'check
3635 (lambda* (#:key tests? #:allow-other-keys)
3636 (when tests?
3637 (invoke "rspec"))
3638 #t)))))
3639 (native-inputs
3640 `(("ruby-rspec" ,ruby-rspec)
3641 ("ruby-simplecov" ,ruby-simplecov)
3642 ("ruby-nokogiri-diff" ,ruby-nokogiri-diff)))
3643 (synopsis "Markdown interpreter in Ruby")
3644 (description
3645 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
3646 HTML, and PDF through LaTeX.")
3647 (home-page "https://github.com/bhollis/maruku")
3648 (license license:expat)))
3649
3650 (define-public ruby-metaclass
3651 (package
3652 (name "ruby-metaclass")
3653 (version "0.0.4")
3654 (source (origin
3655 (method url-fetch)
3656 (uri (rubygems-uri "metaclass" version))
3657 (sha256
3658 (base32
3659 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
3660 (build-system ruby-build-system)
3661 (arguments
3662 `(#:phases
3663 (modify-phases %standard-phases
3664 (add-after 'unpack 'add-test-unit-to-search-path
3665 (lambda* (#:key inputs #:allow-other-keys)
3666 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
3667 (substitute* "Rakefile"
3668 (("t\\.libs << \"test\"" line)
3669 (string-append line "; t.libs << \""
3670 test-unit "/lib/ruby/vendor_ruby"
3671 "/gems/test-unit-"
3672 ,(package-version ruby-test-unit)
3673 "/lib\""))))
3674 #t)))))
3675 (native-inputs
3676 `(("bundler" ,bundler)
3677 ("ruby-test-unit" ,ruby-test-unit)))
3678 (synopsis "Ruby library adding metaclass method to all objects")
3679 (description
3680 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
3681 objects.")
3682 (home-page "https://github.com/floehopper/metaclass")
3683 (license license:expat)))
3684
3685 (define-public ruby-mkmf-lite
3686 (package
3687 (name "ruby-mkmf-lite")
3688 (version "0.3.2")
3689 (source (origin
3690 (method url-fetch)
3691 (uri (rubygems-uri "mkmf-lite" version))
3692 (sha256
3693 (base32
3694 "0br9k6zijj1zc25n8p7f2j1mwl58nfgdknf3q13h9k156jvrir06"))))
3695 (build-system ruby-build-system)
3696 (propagated-inputs
3697 `(("ruby-ptools" ,ruby-ptools)))
3698 (synopsis "Lightweight alternative to @code{mkmf}")
3699 (description
3700 "@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed
3701 for use as a library. It does not create packages, builds, or log files of
3702 any kind. Instead, it provides mixin methods that you can use in FFI or tests
3703 to check for the presence of header files, constants, and so on.")
3704 (home-page "https://github.com/djberg96/mkmf-lite")
3705 (license license:asl2.0)))
3706
3707 (define-public ruby-mspec
3708 (package
3709 (name "ruby-mspec")
3710 (version "1.9.1")
3711 (source
3712 (origin
3713 (method url-fetch)
3714 (uri (rubygems-uri "mspec" version))
3715 (sha256
3716 (base32
3717 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
3718 (build-system ruby-build-system)
3719 (arguments
3720 '(;; TODO: 3 test failures
3721 ;; ./spec/mocks/mock_spec.rb:82
3722 ;; ./spec/utils/name_map_spec.rb:151
3723 ;; ./spec/utils/name_map_spec.rb:155
3724 #:tests? #f
3725 #:phases
3726 (modify-phases %standard-phases
3727 (add-after 'extract-gemspec 'change-dependency-constraints
3728 (lambda _
3729 (substitute* "mspec.gemspec"
3730 (("rake.*") "rake>)\n")
3731 (("rspec.*") "rspec>)\n"))
3732 #t))
3733 (replace 'check
3734 (lambda* (#:key tests? #:allow-other-keys)
3735 (when tests?
3736 (invoke "rspec" "spec"))
3737 #t)))))
3738 (native-inputs
3739 `(("bundler" ,bundler)
3740 ("ruby-rake" ,ruby-rake)
3741 ("ruby-rspec" ,ruby-rspec)))
3742 (synopsis "MSpec is a specialized framework for RubySpec")
3743 (description
3744 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
3745 for basic features. MSpec contains additional features that assist in writing
3746 specs for Ruby implementations in ruby/spec.")
3747 (home-page "http://rubyspec.org")
3748 (license license:expat)))
3749
3750 (define-public ruby-mysql2
3751 (package
3752 (name "ruby-mysql2")
3753 (version "0.5.2")
3754 (source
3755 (origin
3756 (method git-fetch)
3757 (uri (git-reference
3758 (url "https://github.com/brianmario/mysql2")
3759 (commit version)))
3760 (file-name (git-file-name name version))
3761 (sha256
3762 (base32
3763 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
3764 (build-system ruby-build-system)
3765 (arguments
3766 '(;; TODO: Tests require a running MySQL/MariaDB service
3767 #:tests? #f
3768 #:phases
3769 (modify-phases %standard-phases
3770 (replace 'replace-git-ls-files
3771 (lambda _
3772 (substitute* "mysql2.gemspec"
3773 (("git ls-files .*`") "find . -type f |sort`"))
3774 #t))
3775 (add-before 'install 'set-MAKEFLAGS
3776 (lambda* (#:key outputs #:allow-other-keys)
3777 (setenv "MAKEFLAGS"
3778 (string-append
3779 "V=1 "
3780 "prefix=" (assoc-ref outputs "out")))
3781 #t))
3782 ;; Move the 'check phase to after 'install, as then you can test
3783 ;; using the installed mysql2 gem in the store.
3784 (delete 'check)
3785 (add-after 'install 'check
3786 (lambda* (#:key outputs tests? #:allow-other-keys)
3787 (setenv "GEM_PATH"
3788 (string-append
3789 (getenv "GEM_PATH")
3790 ":"
3791 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
3792 (when tests?
3793 (invoke "rspec"))
3794 #t)))))
3795 (inputs
3796 `(("mariadb" ,mariadb "lib")
3797 ("mariadb-dev" ,mariadb "dev")
3798 ("zlib" ,zlib)))
3799 (native-inputs
3800 `(("ruby-rspec" ,ruby-rspec)
3801 ("ruby-rake-compiler" ,ruby-rake-compiler)))
3802 (synopsis "MySQL library for Ruby, binding to libmysql")
3803 (description
3804 "This package provides a simple, fast MySQL library for Ruby, binding to
3805 libmysql.")
3806 (home-page "https://github.com/brianmario/mysql2")
3807 (license license:expat)))
3808
3809 (define-public ruby-blankslate
3810 (package
3811 (name "ruby-blankslate")
3812 (version "3.1.3")
3813 (source (origin
3814 (method url-fetch)
3815 (uri (rubygems-uri "blankslate" version))
3816 (sha256
3817 (base32
3818 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
3819 (build-system ruby-build-system)
3820 (arguments
3821 `(#:phases
3822 (modify-phases %standard-phases
3823 (replace 'check
3824 (lambda _ (invoke "rspec" "spec/"))))))
3825 (native-inputs
3826 `(("bundler" ,bundler)
3827 ("ruby-rspec" ,ruby-rspec)))
3828 (synopsis "Abstract base class with no predefined methods")
3829 (description
3830 "BlankSlate provides an abstract base class with no predefined
3831 methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
3832 as a base class when writing classes that depend upon
3833 @code{method_missing} (e.g. dynamic proxies).")
3834 (home-page "https://github.com/masover/blankslate")
3835 (license license:expat)))
3836
3837 (define-public ruby-bond
3838 (package
3839 (name "ruby-bond")
3840 (version "0.5.1")
3841 (source
3842 (origin
3843 (method url-fetch)
3844 (uri (rubygems-uri "bond" version))
3845 (sha256
3846 (base32
3847 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
3848 (build-system ruby-build-system)
3849 (native-inputs
3850 `(("ruby-bacon" ,ruby-bacon)
3851 ("ruby-bacon-bits" ,ruby-bacon-bits)
3852 ("ruby-mocha-on-bacon" ,ruby-mocha-on-bacon)))
3853 (synopsis "Bond can provide custom autocompletion for arguments, methods
3854 and more")
3855 (description
3856 "Bond can autocomplete argument(s) to methods, uniquely completing per
3857 module, per method and per argument. Bond provides a configuration system and
3858 a DSL for creating custom completions and completion rules. Bond can also
3859 load completions that ship with gems. Bond is able to offer more than irb's
3860 completion since it uses the full line of input when completing as opposed to
3861 irb's last-word approach.")
3862 (home-page "http://tagaholic.me/bond/")
3863 (license license:expat)))
3864
3865 (define-public ruby-idn-ruby
3866 (package
3867 (name "ruby-idn-ruby")
3868 (version "0.1.0")
3869 (source
3870 (origin
3871 (method url-fetch)
3872 (uri (rubygems-uri "idn-ruby" version))
3873 (sha256
3874 (base32
3875 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
3876 (build-system ruby-build-system)
3877 (arguments
3878 '(#:phases
3879 (modify-phases %standard-phases
3880 (delete 'check)
3881 (add-after 'install 'check
3882 (lambda* (#:key tests? outputs #:allow-other-keys)
3883 (when tests?
3884 (let* ((gem-file (cadr (find-files "." "\\.gem")))
3885 (name-and-version (basename gem-file ".gem")))
3886 (apply invoke
3887 "ruby" "--verbose"
3888 (string-append "-I"
3889 (assoc-ref outputs "out")
3890 "/lib/ruby/vendor_ruby/gems/"
3891 name-and-version
3892 "/lib")
3893 (find-files "./test" ".*\\.rb"))))
3894 #t)))))
3895 (inputs
3896 `(("libidn" ,libidn)))
3897 (synopsis "Ruby Bindings for the GNU LibIDN library")
3898 (description
3899 "Ruby Bindings for the GNU LibIDN library, an implementation of the
3900 Stringprep, Punycode and IDNA specifications. These are used to encode and
3901 decode internationalized domain + names according to the IDNA2003
3902 specifications.
3903
3904 Included are the most important parts of the Stringprep, Punycode and IDNA
3905 APIs like performing Stringprep processings, encoding to and decoding from
3906 Punycode strings and converting entire domain names to and from the ACE
3907 encoded form.")
3908 (home-page "https://github.com/deepfryed/idn-ruby")
3909 (license license:asl2.0)))
3910
3911 (define-public ruby-instantiator
3912 (package
3913 (name "ruby-instantiator")
3914 (version "0.0.7")
3915 (source (origin
3916 (method url-fetch)
3917 (uri (rubygems-uri "instantiator" version))
3918 (sha256
3919 (base32
3920 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
3921 (build-system ruby-build-system)
3922 (arguments
3923 `(#:phases
3924 (modify-phases %standard-phases
3925 (add-after 'unpack 'add-test-unit-to-search-path
3926 (lambda* (#:key inputs #:allow-other-keys)
3927 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
3928 (substitute* "Rakefile"
3929 (("t\\.libs << \"test\"" line)
3930 (string-append line "; t.libs << \""
3931 test-unit "/lib/ruby/vendor_ruby"
3932 "/gems/test-unit-"
3933 ,(package-version ruby-test-unit)
3934 "/lib\""))))
3935 #t)))))
3936 (propagated-inputs
3937 `(("ruby-blankslate" ,ruby-blankslate)))
3938 (native-inputs
3939 `(("bundler" ,bundler)
3940 ("ruby-test-unit" ,ruby-test-unit)))
3941 (synopsis "Instantiate an arbitrary Ruby class")
3942 (description
3943 "Instantiator lets you instantiate an arbitrary Ruby class without
3944 knowing anything about the constructor.")
3945 (home-page "https://github.com/floehopper/instantiator")
3946 (license license:expat)))
3947
3948 (define-public ruby-introspection
3949 (package
3950 (name "ruby-introspection")
3951 (version "0.0.4")
3952 (source (origin
3953 (method url-fetch)
3954 (uri (rubygems-uri "introspection" version))
3955 (sha256
3956 (base32
3957 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
3958 (build-system ruby-build-system)
3959 (arguments
3960 `(#:phases
3961 (modify-phases %standard-phases
3962 (add-after 'unpack 'add-test-unit-to-search-path
3963 (lambda* (#:key inputs #:allow-other-keys)
3964 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
3965 (substitute* "Rakefile"
3966 (("t\\.libs << \"test\"" line)
3967 (string-append line "; t.libs << \""
3968 test-unit "/lib/ruby/vendor_ruby"
3969 "/gems/test-unit-"
3970 ,(package-version ruby-test-unit)
3971 "/lib\""))))
3972 #t)))))
3973 (propagated-inputs
3974 `(("ruby-instantiator" ,ruby-instantiator)
3975 ("ruby-metaclass" ,ruby-metaclass)))
3976 (native-inputs
3977 `(("bundler" ,bundler)
3978 ("ruby-blankslate" ,ruby-blankslate)
3979 ("ruby-test-unit" ,ruby-test-unit)))
3980 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
3981 (description
3982 "Introspection provides tools to inspect the hierarchy of method
3983 definitions on a Ruby object.")
3984 (home-page "https://github.com/floehopper/introspection")
3985 (license license:expat)))
3986
3987 (define-public ruby-redcarpet
3988 (package
3989 (name "ruby-redcarpet")
3990 (version "3.5.0")
3991 (source (origin
3992 (method url-fetch)
3993 (uri (rubygems-uri "redcarpet" version))
3994 (sha256
3995 (base32
3996 "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k"))))
3997 (build-system ruby-build-system)
3998 (arguments
3999 `(#:phases
4000 (modify-phases %standard-phases
4001 ;; The gem archive does not include the conformance tests.
4002 (add-after 'unpack 'disable-conformance-tests
4003 (lambda _
4004 (substitute* "Rakefile"
4005 (("task :test => %w\\[test:unit test:conformance\\]")
4006 "task :test => %w[test:unit]"))
4007 #t)))))
4008 (native-inputs
4009 `(("bundler" ,bundler)
4010 ("ruby-test-unit" ,ruby-test-unit)
4011 ("ruby-rake-compiler" ,ruby-rake-compiler)))
4012 (synopsis "Extensible Markdown to (X)HTML converter")
4013 (description
4014 "Redcarpet is an extensible Ruby library for Markdown processing and
4015 conversion to (X)HTML.")
4016 (home-page "https://github.com/vmg/redcarpet")
4017 (license license:expat)))
4018
4019 (define-public ruby-rerun
4020 (package
4021 (name "ruby-rerun")
4022 (version "0.13.0")
4023 (source
4024 (origin
4025 (method url-fetch)
4026 (uri (rubygems-uri "rerun" version))
4027 (sha256
4028 (base32
4029 "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
4030 (build-system ruby-build-system)
4031 (arguments
4032 '(#:tests? #f)) ; No included tests
4033 (propagated-inputs
4034 `(("ruby-listen" ,ruby-listen)))
4035 (synopsis "Run a process, and restart when some monitored files change")
4036 (description
4037 "Rerun is a tool to launch programs, then monitor the file system, and
4038 restart the program when any of the monitored files change. It's written in
4039 Ruby, but can be used for all programs.")
4040 (home-page "https://github.com/alexch/rerun/")
4041 (license license:expat)))
4042
4043 (define-public ruby-maxitest
4044 (package
4045 (name "ruby-maxitest")
4046 (version "3.6.0")
4047 (home-page "https://github.com/grosser/maxitest")
4048 (source (origin
4049 ;; Pull from git because the gem does not contain tests.
4050 (method git-fetch)
4051 (uri (git-reference
4052 (url home-page)
4053 (commit (string-append "v" version))))
4054 (file-name (git-file-name name version))
4055 (sha256
4056 (base32
4057 "07b3j0bv3dx5j42jlvpvl07aaxplyi6wq688y3jl8y528ww2hjz8"))))
4058 (build-system ruby-build-system)
4059 (arguments
4060 '(#:test-target "default"
4061 #:phases (modify-phases %standard-phases
4062 (replace 'replace-git-ls-files
4063 (lambda _
4064 (substitute* "maxitest.gemspec"
4065 (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
4066 "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))
4067 #t))
4068 (add-before 'check 'remove-version-constraints
4069 (lambda _
4070 ;; Don't use specific versions of dependencies, instead
4071 ;; take whatever is available in Guix.
4072 (delete-file "Gemfile.lock")
4073 #t))
4074 (add-before 'check 'add-mtest-on-PATH
4075 (lambda _
4076 ;; Tests use 'mtest' which is not automatically added on
4077 ;; PATH.
4078 (setenv "PATH" (string-append (getcwd) "/bin:"
4079 (getenv "PATH")))
4080 #t)))))
4081 (native-inputs
4082 `(("ps" ,procps)
4083 ("ruby-bump" ,ruby-bump)
4084 ("ruby-byebug" ,ruby-byebug)
4085 ("ruby-rspec" ,ruby-rspec)
4086 ("ruby-wwtd" ,ruby-wwtd)))
4087 (propagated-inputs
4088 `(("ruby-minitest" ,ruby-minitest)))
4089 (synopsis "Minitest with extra features")
4090 (description
4091 "Maxitest is a wrapper around Minitest with extra functionality such
4092 as timeouts, an @command{mtest} executable that can run tests by line
4093 number, support for interrupted tests, better backtraces, and more.")
4094 (license license:expat)))
4095
4096 (define-public ruby-mocha
4097 (package
4098 (name "ruby-mocha")
4099 (version "1.11.2")
4100 (source (origin
4101 (method url-fetch)
4102 (uri (rubygems-uri "mocha" version))
4103 (sha256
4104 (base32
4105 "0hxmkm8qxd04vwj8mqnpyrf2dwy7g1k9zipdfhl4y71cw7ijm9n4"))))
4106 (build-system ruby-build-system)
4107 (arguments
4108 `(#:phases
4109 (modify-phases %standard-phases
4110 (add-before 'check 'remove-rubocop-dependency
4111 (lambda _
4112 ;; Disable dependency on Rubocop, which is just a linter,
4113 ;; and would introduce a circular dependency.
4114 (substitute* "mocha.gemspec"
4115 ((".*rubocop.*")
4116 "true\n"))
4117 #t)))))
4118 (native-inputs
4119 `(("ruby-introspection" ,ruby-introspection)))
4120 (synopsis "Mocking and stubbing library for Ruby")
4121 (description
4122 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
4123 allows mocking and stubbing of methods on real (non-mock) classes.")
4124 (home-page "http://gofreerange.com/mocha/docs")
4125 ;; Mocha can be used with either license at the users choice.
4126 (license (list license:expat license:ruby))))
4127
4128 (define-public ruby-mocha-on-bacon
4129 (package
4130 (name "ruby-mocha-on-bacon")
4131 (version "0.2.3")
4132 (source
4133 (origin
4134 (method url-fetch)
4135 (uri (rubygems-uri "mocha-on-bacon" version))
4136 (sha256
4137 (base32
4138 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
4139 (build-system ruby-build-system)
4140 (arguments
4141 ;; rubygems.org release missing tests
4142 '(#:tests? #f))
4143 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
4144 (synopsis "Mocha adapter for Bacon")
4145 (description
4146 "This package provides a Mocha adapter for Bacon, allowing you to use the
4147 Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
4148 (home-page
4149 "https://github.com/alloy/mocha-on-bacon")
4150 (license license:expat)))
4151
4152 (define-public ruby-net-ssh
4153 (package
4154 (name "ruby-net-ssh")
4155 (version "4.2.0")
4156 (source (origin
4157 (method url-fetch)
4158 (uri (rubygems-uri "net-ssh" version))
4159 (sha256
4160 (base32
4161 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
4162 (build-system ruby-build-system)
4163 (native-inputs
4164 `(("bundler" ,bundler)
4165 ("ruby-mocha" ,ruby-mocha)
4166 ("ruby-test-unit" ,ruby-test-unit)))
4167 (synopsis "Ruby implementation of the SSH2 client protocol")
4168 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
4169 client protocol. It allows you to write programs that invoke and interact
4170 with processes on remote servers, via SSH2.")
4171 (home-page "https://github.com/net-ssh/net-ssh")
4172 (license license:expat)))
4173
4174 (define-public ruby-net-scp
4175 (package
4176 (name "ruby-net-scp")
4177 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
4178 (version "1.2.2.rc2")
4179 (source
4180 (origin
4181 (method git-fetch)
4182 (uri (git-reference
4183 (url "https://github.com/net-ssh/net-scp")
4184 (commit (string-append "v" version))))
4185 (file-name (git-file-name name version))
4186 (sha256
4187 (base32 "1nyn17sy71fn7zs3y6wbgcn35318c10flqgc0582409095x4h0sx"))))
4188 (build-system ruby-build-system)
4189 (native-inputs
4190 `(("bundler" ,bundler)
4191 ("ruby-test-unit" ,ruby-test-unit)
4192 ("ruby-mocha" ,ruby-mocha)))
4193 (propagated-inputs
4194 `(("ruby-net-ssh" ,ruby-net-ssh)))
4195 (synopsis "Pure-Ruby SCP client library")
4196 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
4197 client protocol.")
4198 (home-page "https://github.com/net-ssh/net-scp")
4199 (license license:expat)))
4200
4201 (define-public ruby-minitest
4202 (package
4203 (name "ruby-minitest")
4204 (version "5.11.3")
4205 (source (origin
4206 (method url-fetch)
4207 (uri (rubygems-uri "minitest" version))
4208 (sha256
4209 (base32
4210 "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"))))
4211 (build-system ruby-build-system)
4212 (native-inputs
4213 `(("ruby-hoe" ,ruby-hoe)))
4214 (synopsis "Small test suite library for Ruby")
4215 (description "Minitest provides a complete suite of Ruby testing
4216 facilities supporting TDD, BDD, mocking, and benchmarking.")
4217 (home-page "https://github.com/seattlerb/minitest")
4218 (license license:expat)))
4219
4220 ;; This is the last release of Minitest 4, which is used by some packages.
4221 (define-public ruby-minitest-4
4222 (package (inherit ruby-minitest)
4223 (version "4.7.5")
4224 (source (origin
4225 (method url-fetch)
4226 (uri (rubygems-uri "minitest" version))
4227 (sha256
4228 (base32
4229 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
4230 (arguments
4231 `(#:phases
4232 (modify-phases %standard-phases
4233 (add-after 'unpack 'remove-unsupported-method
4234 (lambda _
4235 (substitute* "Rakefile"
4236 (("self\\.rubyforge_name = .*") ""))
4237 #t))
4238 (add-after 'build 'exclude-failing-tests
4239 (lambda _
4240 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
4241 ;; Fixnum.
4242 (delete-file "test/minitest/test_minitest_spec.rb")
4243 #t)))))))
4244
4245 (define-public ruby-minitest-around
4246 (package
4247 (name "ruby-minitest-around")
4248 (version "0.5.0")
4249 (source
4250 (origin
4251 (method url-fetch)
4252 (uri (rubygems-uri "minitest-around" version))
4253 (sha256
4254 (base32
4255 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
4256 (build-system ruby-build-system)
4257 (arguments
4258 '(#:phases
4259 (modify-phases %standard-phases
4260 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
4261 (lambda _
4262 (substitute* "minitest-around.gemspec"
4263 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n"))
4264 #t)))))
4265 (propagated-inputs
4266 `(("ruby-minitest" ,ruby-minitest)))
4267 (native-inputs
4268 `(("bundler" ,bundler)
4269 ("ruby-cucumber" ,ruby-cucumber)
4270 ("ruby-bump" ,ruby-bump)
4271 ("ruby-test-construct" ,ruby-test-construct)))
4272 (synopsis "Run code around tests in Minitest")
4273 (description
4274 "This library provides a way to run code around tests in Minitest,
4275 written using either the unit test or spec style.")
4276 (home-page "https://github.com/splattael/minitest-around")
4277 (license license:expat)))
4278
4279 (define-public ruby-minitest-sprint
4280 (package
4281 (name "ruby-minitest-sprint")
4282 (version "1.1.0")
4283 (source (origin
4284 (method url-fetch)
4285 (uri (rubygems-uri "minitest-sprint" version))
4286 (sha256
4287 (base32
4288 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
4289 (build-system ruby-build-system)
4290 (native-inputs
4291 `(("ruby-hoe" ,ruby-hoe)
4292 ("ruby-minitest" ,ruby-minitest)))
4293 (synopsis "Fast test suite runner for minitest")
4294 (description "Minitest-sprint is a test runner for minitest that makes it
4295 easier to re-run individual failing tests.")
4296 (home-page "https://github.com/seattlerb/minitest-sprint")
4297 (license license:expat)))
4298
4299 (define-public ruby-minitest-bacon
4300 (package
4301 (name "ruby-minitest-bacon")
4302 (version "1.0.3")
4303 (source (origin
4304 (method url-fetch)
4305 (uri (rubygems-uri "minitest-bacon" version))
4306 (sha256
4307 (base32
4308 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
4309 (build-system ruby-build-system)
4310 (native-inputs
4311 `(("ruby-hoe" ,ruby-hoe)))
4312 (inputs
4313 `(("ruby-minitest" ,ruby-minitest)))
4314 (synopsis "Bacon compatibility library for minitest")
4315 (description "Minitest-bacon extends minitest with bacon-like
4316 functionality, making it easier to migrate test suites from bacon to minitest.")
4317 (home-page "https://github.com/seattlerb/minitest-bacon")
4318 (license license:expat)))
4319
4320 (define-public ruby-minitest-focus
4321 (package
4322 (name "ruby-minitest-focus")
4323 (version "1.1.2")
4324 (source
4325 (origin
4326 (method url-fetch)
4327 (uri (rubygems-uri "minitest-focus" version))
4328 (sha256
4329 (base32
4330 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
4331 (build-system ruby-build-system)
4332 (propagated-inputs
4333 `(("ruby-minitest" ,ruby-minitest)))
4334 (native-inputs
4335 `(("ruby-hoe" ,ruby-hoe)))
4336 (synopsis "Allows a few specific tests to be focused on")
4337 (description
4338 "@code{minitest-focus} gives the ability focus on a few tests with ease
4339 without having to use command-line arguments. It introduces a @code{focus}
4340 class method for use in testing classes, specifying that the next defined test
4341 is to be run.")
4342 (home-page "https://github.com/seattlerb/minitest-focus")
4343 (license license:expat)))
4344
4345 (define-public ruby-minitest-pretty-diff
4346 ;; Use git reference because gem is out of date and does not contain testing
4347 ;; script. There are no releases on GitHub.
4348 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
4349 (package
4350 (name "ruby-minitest-pretty-diff")
4351 (version (string-append "0.1-1." (string-take commit 8)))
4352 (source (origin
4353 (method git-fetch)
4354 (uri (git-reference
4355 (url "https://github.com/adammck/minitest-pretty_diff")
4356 (commit commit)))
4357 (file-name (string-append name "-" version "-checkout"))
4358 (sha256
4359 (base32
4360 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
4361 (build-system ruby-build-system)
4362 (arguments
4363 `(#:phases
4364 (modify-phases %standard-phases
4365 (replace 'check
4366 (lambda _
4367 (invoke "script/test"))))))
4368 (native-inputs
4369 `(("bundler" ,bundler)
4370 ("ruby-turn" ,ruby-turn)))
4371 (synopsis "Pretty-print hashes and arrays in MiniTest")
4372 (description
4373 "@code{minitest-pretty_diff} monkey-patches
4374 @code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
4375 diffing them. This makes it easier to spot differences between nested
4376 structures when tests fail.")
4377 (home-page "https://github.com/adammck/minitest-pretty_diff")
4378 (license license:expat))))
4379
4380 (define-public ruby-minitest-moar
4381 (package
4382 (name "ruby-minitest-moar")
4383 (version "0.0.4")
4384 (source
4385 (origin
4386 (method url-fetch)
4387 (uri (rubygems-uri "minitest-moar" version))
4388 (sha256
4389 (base32
4390 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
4391 (build-system ruby-build-system)
4392 (arguments
4393 `(#:phases
4394 (modify-phases %standard-phases
4395 (add-before 'check 'clean-dependencies
4396 (lambda _
4397 ;; Remove all gems defined in the Gemfile because these are not
4398 ;; truly needed.
4399 (substitute* "Gemfile"
4400 (("gem .*") ""))
4401 ;; Remove byebug as not needed to run tests.
4402 (substitute* "test/test_helper.rb"
4403 (("require 'byebug'") ""))
4404 #t)))))
4405 (native-inputs
4406 `(("bundler" ,bundler)
4407 ("ruby-minitest" ,ruby-minitest)))
4408 (synopsis "Extra features and changes to MiniTest")
4409 (description "@code{MiniTest Moar} add some additional features and
4410 changes some default behaviours in MiniTest. For instance, Moar replaces the
4411 MiniTest @code{Object#stub} with a global @code{stub} method.")
4412 (home-page "https://github.com/dockyard/minitest-moar")
4413 (license license:expat)))
4414
4415 (define-public ruby-minitest-bonus-assertions
4416 (package
4417 (name "ruby-minitest-bonus-assertions")
4418 (version "3.0")
4419 (source
4420 (origin
4421 (method url-fetch)
4422 (uri (rubygems-uri "minitest-bonus-assertions" version))
4423 (sha256
4424 (base32
4425 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
4426 (build-system ruby-build-system)
4427 (arguments
4428 `(#:phases
4429 (modify-phases %standard-phases
4430 (add-before 'check 'clean-dependencies
4431 (lambda _
4432 ;; Remove unneeded require statement that would entail another
4433 ;; dependency.
4434 (substitute* "test/minitest_config.rb"
4435 (("require 'minitest/bisect'") ""))
4436 #t)))))
4437 (native-inputs
4438 `(("ruby-hoe" ,ruby-hoe)
4439 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
4440 ("ruby-minitest-focus" ,ruby-minitest-focus)
4441 ("ruby-minitest-moar" ,ruby-minitest-moar)))
4442 (synopsis "Bonus assertions for @code{Minitest}")
4443 (description
4444 "Minitest bonus assertions provides extra MiniTest assertions. For
4445 instance, it provides @code{assert_true}, @code{assert_false} and
4446 @code{assert_set_equal}.")
4447 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
4448 (license license:expat)))
4449
4450 (define-public ruby-minitest-reporters
4451 (package
4452 (name "ruby-minitest-reporters")
4453 (version "1.3.6")
4454 (source
4455 (origin
4456 (method url-fetch)
4457 (uri (rubygems-uri "minitest-reporters" version))
4458 (sha256
4459 (base32
4460 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
4461 (build-system ruby-build-system)
4462 (arguments
4463 '(#:phases
4464 (modify-phases %standard-phases
4465 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
4466 ;; including it as an input can lead to circular dependencies.
4467 (add-after 'unpack 'remove-rubocop-from-Rakefile
4468 (lambda _
4469 (substitute* "Rakefile"
4470 (("require 'rubocop/rake\\_task'") "")
4471 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
4472 #t))
4473 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
4474 (lambda _
4475 (substitute* "minitest-reporters.gemspec"
4476 ((".*%q<rubocop>.*") "\n"))
4477 #t)))))
4478 (propagated-inputs
4479 `(("ruby-ansi" ,ruby-ansi)
4480 ("ruby-builder" ,ruby-builder)
4481 ("ruby-minitest" ,ruby-minitest)
4482 ("ruby-progressbar" ,ruby-progressbar)))
4483 (native-inputs
4484 `(("bundler" ,bundler)
4485 ("ruby-maruku" ,ruby-maruku)))
4486 (synopsis "Enhanced reporting for Minitest tests")
4487 (description
4488 "@code{minitest/reporters} provides a custom Minitest runner to improve
4489 how the test state is reported. A number of different reporters are
4490 available, including a spec reporter, progress bar reporter, a HTML
4491 reporter.")
4492 (home-page "https://github.com/kern/minitest-reporters")
4493 (license license:expat)))
4494
4495 (define-public ruby-minitest-rg
4496 (package
4497 (name "ruby-minitest-rg")
4498 (version "5.2.0")
4499 (source
4500 (origin
4501 (method url-fetch)
4502 (uri (rubygems-uri "minitest-rg" version))
4503 (sha256
4504 (base32
4505 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
4506 (build-system ruby-build-system)
4507 (arguments
4508 ;; Some tests fail even outside Guix, so disable tests.
4509 ;; https://github.com/blowmage/minitest-rg/issues/12
4510 ;; https://github.com/blowmage/minitest-rg/pull/13
4511 `(#:tests? #f))
4512 (propagated-inputs
4513 `(("ruby-minitest" ,ruby-minitest)))
4514 (synopsis "Coloured output for Minitest")
4515 (description
4516 "@code{minitest-rg} changes the colour of the output from Minitest.")
4517 (home-page "https://blowmage.com/minitest-rg/")
4518 (license license:expat)))
4519
4520 (define-public ruby-minitest-hooks
4521 (package
4522 (name "ruby-minitest-hooks")
4523 (version "1.4.2")
4524 (source
4525 (origin
4526 (method url-fetch)
4527 (uri (rubygems-uri "minitest-hooks" version))
4528 (sha256
4529 (base32
4530 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
4531 (build-system ruby-build-system)
4532 (arguments
4533 '(#:test-target "spec"))
4534 (native-inputs
4535 `(("ruby-sequel" ,ruby-sequel)
4536 ("ruby-sqlite3" ,ruby-sqlite3)))
4537 (synopsis "Hooks for the minitest framework")
4538 (description
4539 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
4540 @code{around_all} hooks for Minitest. This allows, for instance, running each
4541 suite of specs inside a database transaction, running each spec inside its own
4542 savepoint inside that transaction. This can significantly speed up testing
4543 for specs that share expensive database setup code.")
4544 (home-page "https://github.com/jeremyevans/minitest-hooks")
4545 (license license:expat)))
4546
4547 (define-public ruby-daemons
4548 (package
4549 (name "ruby-daemons")
4550 (version "1.2.5")
4551 (source (origin
4552 (method url-fetch)
4553 (uri (rubygems-uri "daemons" version))
4554 (sha256
4555 (base32
4556 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
4557 (build-system ruby-build-system)
4558 (arguments
4559 `(#:tests? #f)) ; no test suite
4560 (synopsis "Daemonize Ruby programs")
4561 (description "Daemons provides a way to wrap existing Ruby scripts to be
4562 run as a daemon and to be controlled by simple start/stop/restart commands.")
4563 (home-page "https://github.com/thuehlinger/daemons")
4564 (license license:expat)))
4565
4566 (define-public ruby-data_uri
4567 (package
4568 (name "ruby-data_uri")
4569 (version "0.1.0")
4570 (source
4571 (origin
4572 (method url-fetch)
4573 (uri (rubygems-uri "data_uri" version))
4574 (sha256
4575 (base32
4576 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
4577 (build-system ruby-build-system)
4578 (synopsis "URI class for parsing data URIs")
4579 (description
4580 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
4581 embedded inside a URI. The URI::Data class provides support for parsing these
4582 URIs using the normal URI.parse method.")
4583 (home-page "https://github.com/dball/data_uri")
4584 (license license:expat)))
4585
4586 (define-public ruby-deep-merge
4587 (package
4588 (name "ruby-deep-merge")
4589 (version "1.2.1")
4590 (home-page "https://github.com/danielsdeleo/deep_merge")
4591 ;; The Rubygem source does not contain the gemspec required for tests.
4592 (source (origin
4593 (method git-fetch)
4594 (uri (git-reference (url home-page) (commit version)))
4595 (file-name (git-file-name name version))
4596 (sha256
4597 (base32
4598 "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931"))))
4599 (build-system ruby-build-system)
4600 (native-inputs
4601 `(("ruby-minitest" ,ruby-minitest)))
4602 (synopsis "Recursively merge hashes")
4603 (description
4604 "Deep Merge is a set of utility functions for @code{Hash}. It permits
4605 you to merge elements inside a hash together recursively.")
4606 (license license:expat)))
4607
4608 (define-public ruby-git
4609 (package
4610 (name "ruby-git")
4611 (version "1.3.0")
4612 (source (origin
4613 (method url-fetch)
4614 (uri (rubygems-uri "git" version))
4615 (sha256
4616 (base32
4617 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
4618 (build-system ruby-build-system)
4619 (arguments
4620 `(#:tests? #f ; no tests
4621 #:phases (modify-phases %standard-phases
4622 (add-after 'install 'patch-git-binary
4623 (lambda* (#:key inputs outputs #:allow-other-keys)
4624 ;; Make the default git binary an absolute path to the
4625 ;; store.
4626 (let ((git (string-append (assoc-ref inputs "git")
4627 "/bin/git"))
4628 (config (string-append
4629 (assoc-ref outputs "out")
4630 "/lib/ruby/vendor_ruby/gems/git-"
4631 ,version "/lib/git/config.rb")))
4632 (substitute* (list config)
4633 (("'git'")
4634 (string-append "'" git "'")))
4635 #t))))))
4636 (inputs
4637 `(("git" ,git)))
4638 (synopsis "Ruby wrappers for Git")
4639 (description "Ruby/Git is a Ruby library that can be used to create, read
4640 and manipulate Git repositories by wrapping system calls to the git binary.")
4641 (home-page "https://github.com/schacon/ruby-git")
4642 (license license:expat)))
4643
4644 (define-public ruby-hocon
4645 (package
4646 (name "ruby-hocon")
4647 (version "1.3.1")
4648 (home-page "https://github.com/puppetlabs/ruby-hocon")
4649 (source (origin
4650 (method git-fetch)
4651 (uri (git-reference (url home-page) (commit version)))
4652 (file-name (git-file-name name version))
4653 (sha256
4654 (base32
4655 "172hh2zr0n9nnszv0qvlgwszgkrq84yahrg053m68asy79zpmbqr"))))
4656 (build-system ruby-build-system)
4657 (arguments
4658 '(#:phases (modify-phases %standard-phases
4659 (replace 'check
4660 (lambda* (#:key tests? #:allow-other-keys)
4661 (if tests?
4662 (invoke "rspec")
4663 (format #t "test suite not run~%"))
4664 #t)))))
4665 (native-inputs
4666 `(("bundler" ,bundler)
4667 ("ruby-rspec" ,ruby-rspec)))
4668 (synopsis "HOCON config library")
4669 (description
4670 "This package provides Ruby support for the @acronym{HOCON,
4671 Human-Optimized Config Object Notation} configuration file format. It
4672 supports parsing and modifying HOCON and JSON files, and rendering parsed
4673 objects back to a @code{String}.")
4674 (license license:asl2.0)))
4675
4676 (define-public ruby-slop
4677 (package
4678 (name "ruby-slop")
4679 (version "4.5.0")
4680 (source (origin
4681 (method url-fetch)
4682 (uri (rubygems-uri "slop" version))
4683 (sha256
4684 (base32
4685 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
4686 (build-system ruby-build-system)
4687 (native-inputs
4688 `(("ruby-minitest" ,ruby-minitest)))
4689 (synopsis "Ruby command line option parser")
4690 (description "Slop provides a Ruby domain specific language for gathering
4691 options and parsing command line flags.")
4692 (home-page "https://github.com/leejarvis/slop")
4693 (license license:expat)))
4694
4695 (define-public ruby-slop-3
4696 (package (inherit ruby-slop)
4697 (version "3.6.0")
4698 (source (origin
4699 (method url-fetch)
4700 (uri (rubygems-uri "slop" version))
4701 (sha256
4702 (base32
4703 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
4704
4705 (define-public ruby-multi-xml
4706 (package
4707 (name "ruby-multi-xml")
4708 (version "0.6.0")
4709 (source
4710 (origin
4711 (method url-fetch)
4712 (uri (rubygems-uri "multi_xml" version))
4713 (sha256
4714 (base32
4715 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
4716 (build-system ruby-build-system)
4717 (arguments
4718 '(#:tests? #f)) ; No included tests
4719 (synopsis "Swappable XML backends for Ruby")
4720 (description
4721 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
4722 Nokogiri, Ox, or REXML.")
4723 (home-page "https://github.com/sferik/multi_xml")
4724 (license license:expat)))
4725
4726 (define-public ruby-multipart-post
4727 (package
4728 (name "ruby-multipart-post")
4729 (version "2.0.0")
4730 (source (origin
4731 (method url-fetch)
4732 (uri (rubygems-uri "multipart-post" version))
4733 (sha256
4734 (base32
4735 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
4736 (build-system ruby-build-system)
4737 (native-inputs
4738 `(("bundler" ,bundler)))
4739 (synopsis "Multipart POST library for Ruby")
4740 (description "Multipart-Post Adds multipart POST capability to Ruby's
4741 net/http library.")
4742 (home-page "https://github.com/nicksieger/multipart-post")
4743 (license license:expat)))
4744
4745 (define-public ruby-multi-json
4746 (package
4747 (name "ruby-multi-json")
4748 (version "1.13.1")
4749 (source
4750 (origin
4751 (method git-fetch)
4752 ;; Tests are not distributed at rubygems.org so download from GitHub
4753 ;; instead.
4754 (uri (git-reference
4755 (url "https://github.com/intridea/multi_json")
4756 (commit (string-append "v" version))))
4757 (file-name (git-file-name name version))
4758 (sha256
4759 (base32
4760 "18wpb6p01rrkl4v33byh70vxj2a5jxkfxzv3pz8z6pssy4ymwkm4"))))
4761 (build-system ruby-build-system)
4762 (arguments
4763 `(#:phases
4764 (modify-phases %standard-phases
4765 (add-after 'unpack 'remove-signing-key-reference
4766 (lambda _
4767 (substitute* "multi_json.gemspec"
4768 ((".*spec.signing_key.*") ""))
4769 #t)))))
4770 (native-inputs
4771 `(("bundler" ,bundler)
4772 ("ruby-rspec" ,ruby-rspec)
4773 ("ruby-yard" ,ruby-yard)
4774 ("ruby-json-pure" ,ruby-json-pure)
4775 ("ruby-oj" ,ruby-oj)
4776 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
4777 (synopsis "Common interface to multiple JSON libraries for Ruby")
4778 (description
4779 "This package provides a common interface to multiple JSON libraries,
4780 including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
4781 NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
4782 (home-page "https://github.com/intridea/multi_json")
4783 (license license:expat)))
4784
4785 (define-public ruby-multi-test
4786 (package
4787 (name "ruby-multi-test")
4788 (version "0.1.2")
4789 (source
4790 (origin
4791 (method url-fetch)
4792 (uri (rubygems-uri "multi_test" version))
4793 (sha256
4794 (base32
4795 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
4796 (build-system ruby-build-system)
4797 (arguments
4798 '(;; Tests require different sets of specific gem versions to be available,
4799 ;; and there is no gemfile that specifies the newest versions of
4800 ;; dependencies to be tested.
4801 #:tests? #f))
4802 (synopsis
4803 "Interface to testing libraries loaded into a running Ruby process")
4804 (description
4805 "@code{multi_test} provides a uniform interface onto whatever testing
4806 libraries that have been loaded into a running Ruby process to help control
4807 rogue test/unit/autorun requires.")
4808 (home-page "https://github.com/cucumber/multi_test")
4809 (license license:expat)))
4810
4811 (define-public ruby-arel
4812 (package
4813 (name "ruby-arel")
4814 (version "9.0.0")
4815 (source (origin
4816 (method url-fetch)
4817 (uri (rubygems-uri "arel" version))
4818 (sha256
4819 (base32
4820 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
4821 (build-system ruby-build-system)
4822 (arguments '(#:tests? #f)) ; no tests
4823 (home-page "https://github.com/rails/arel")
4824 (synopsis "SQL AST manager for Ruby")
4825 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
4826 Ruby. It simplifies the generation of complex SQL queries and adapts to
4827 various relational database implementations.")
4828 (license license:expat)))
4829
4830 (define-public ruby-marcel
4831 (package
4832 (name "ruby-marcel")
4833 (version "0.3.3")
4834 (source
4835 (origin
4836 (method url-fetch)
4837 (uri (rubygems-uri "marcel" version))
4838 (sha256
4839 (base32
4840 "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
4841 (build-system ruby-build-system)
4842 (arguments
4843 '(;; No included tests
4844 #:tests? #f))
4845 (propagated-inputs
4846 `(("ruby-mimemagic" ,ruby-mimemagic)))
4847 (synopsis "MIME type detection using magic numbers, filenames and extensions")
4848 (description
4849 "@code{marcel} provides @acronym{MIME, Multipurpose Internet Mail
4850 Extensions} type detection using magic numbers, filenames, and extensions")
4851 (home-page "https://github.com/basecamp/marcel")
4852 (license license:expat)))
4853
4854 (define-public ruby-minitar
4855 ;; We package from the GitHub source to fix the security issue reported at
4856 ;; https://github.com/halostatue/minitar/issues/16.
4857 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
4858 (package
4859 (name "ruby-minitar")
4860 (version (string-append "0.5.4-1." (string-take commit 8)))
4861 (source
4862 (origin
4863 (method git-fetch)
4864 (uri (git-reference
4865 (url "https://github.com/halostatue/minitar")
4866 (commit commit)))
4867 (file-name (string-append name "-" version "-checkout"))
4868 (sha256
4869 (base32
4870 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
4871 (build-system ruby-build-system)
4872 (arguments
4873 '(#:tests? #f)) ; missing a gemspec
4874 (synopsis "Ruby library and utility for handling tar archives")
4875 (description
4876 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
4877 that provides the ability to deal with POSIX tar archive files.")
4878 (home-page "http://www.github.com/atoulme/minitar")
4879 (license (list license:gpl2+ license:ruby)))))
4880
4881 (define-public ruby-mini-portile
4882 (package
4883 (name "ruby-mini-portile")
4884 (version "0.6.2")
4885 (source
4886 (origin
4887 (method url-fetch)
4888 (uri (rubygems-uri "mini_portile" version))
4889 (sha256
4890 (base32
4891 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
4892 (build-system ruby-build-system)
4893 (arguments
4894 '(#:tests? #f)) ; tests require network access
4895 (synopsis "Ports system for Ruby developers")
4896 (description "Mini-portile is a port/recipe system for Ruby developers.
4897 It provides a standard way to compile against specific versions of libraries
4898 to reproduce user environments.")
4899 (home-page "https://github.com/flavorjones/mini_portile")
4900 (license license:expat)))
4901
4902 (define-public ruby-mini-portile-2
4903 (package (inherit ruby-mini-portile)
4904 (version "2.4.0")
4905 (source (origin
4906 (method url-fetch)
4907 (uri (rubygems-uri "mini_portile2" version))
4908 (sha256
4909 (base32
4910 "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"))))))
4911
4912 (define-public ruby-nokogiri
4913 (package
4914 (name "ruby-nokogiri")
4915 (version "1.10.9")
4916 (source (origin
4917 (method url-fetch)
4918 (uri (rubygems-uri "nokogiri" version))
4919 (sha256
4920 (base32
4921 "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm"))))
4922 (build-system ruby-build-system)
4923 (arguments
4924 ;; Tests fail because Nokogiri can only test with an installed extension,
4925 ;; and also because many test framework dependencies are missing.
4926 `(#:tests? #f
4927 #:gem-flags (list "--" "--use-system-libraries"
4928 (string-append "--with-xml2-include="
4929 (assoc-ref %build-inputs "libxml2")
4930 "/include/libxml2" ))
4931 #:phases
4932 (modify-phases %standard-phases
4933 (add-before 'build 'patch-extconf
4934 ;; 'pkg-config' is not included in the GEM_PATH during
4935 ;; installation, so we add it directly to the load path.
4936 (lambda* (#:key inputs #:allow-other-keys)
4937 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
4938 (substitute* "ext/nokogiri/extconf.rb"
4939 (("gem 'pkg-config'.*")
4940 (string-append "$:.unshift '"
4941 pkg-config "/lib/ruby/vendor_ruby"
4942 "/gems/pkg-config-"
4943 ,(package-version ruby-pkg-config)
4944 "/lib'\n"))))
4945 #t)))))
4946 (native-inputs
4947 `(("ruby-hoe" ,ruby-hoe)))
4948 (inputs
4949 `(("zlib" ,zlib)
4950 ("libxml2" ,libxml2)
4951 ("libxslt" ,libxslt)))
4952 (propagated-inputs
4953 `(("ruby-mini-portile" ,ruby-mini-portile-2)
4954 ("ruby-pkg-config" ,ruby-pkg-config)))
4955 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
4956 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
4957 both CSS3 selector and XPath 1.0 support.")
4958 (home-page "http://www.nokogiri.org/")
4959 (license license:expat)))
4960
4961 (define-public ruby-method-source
4962 (package
4963 (name "ruby-method-source")
4964 (version "1.0.0")
4965 (source
4966 (origin
4967 (method url-fetch)
4968 (uri (rubygems-uri "method_source" version))
4969 (sha256
4970 (base32
4971 "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"))))
4972 (build-system ruby-build-system)
4973 (arguments
4974 `(#:test-target "spec"))
4975 (native-inputs
4976 `(("ruby-rspec" ,ruby-rspec)
4977 ("git" ,git)))
4978 (synopsis "Retrieve the source code for Ruby methods")
4979 (description "Method_source retrieves the source code for Ruby methods.
4980 Additionally, it can extract source code from Proc and Lambda objects or just
4981 extract comments.")
4982 (home-page "https://github.com/banister/method_source")
4983 (license license:expat)))
4984
4985 (define-public ruby-coderay
4986 (package
4987 (name "ruby-coderay")
4988 (version "1.1.2")
4989 (source
4990 (origin
4991 (method url-fetch)
4992 (uri (rubygems-uri "coderay" version))
4993 (sha256
4994 (base32
4995 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
4996 (build-system ruby-build-system)
4997 (arguments
4998 '(#:tests? #f)) ; missing test files
4999 (synopsis "Ruby syntax highlighting library")
5000 (description "Coderay is a Ruby library that provides syntax highlighting
5001 for select languages.")
5002 (home-page "http://coderay.rubychan.de")
5003 (license license:expat)))
5004
5005 (define-public ruby-cuke-modeler
5006 (package
5007 (name "ruby-cuke-modeler")
5008 (version "3.1.0")
5009 (source
5010 (origin
5011 (method url-fetch)
5012 (uri (rubygems-uri "cuke_modeler" version))
5013 (sha256
5014 (base32
5015 "19smj3g3wvz0203l549sadpcxgh0ir350a6k78gq0bmlv9cchmjb"))))
5016 (build-system ruby-build-system)
5017 (arguments `(#:tests? #f)) ;no test suite in gem
5018 (propagated-inputs
5019 `(("ruby-gherkin" ,ruby-gherkin)))
5020 (synopsis "Gherkin test suite analysis tool")
5021 (description "CukeModeler facilitates modeling a test suite that is
5022 written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by
5023 providing an abstraction layer on top of the Abstract Syntax Tree (AST) that
5024 the @code{cucumber-gherkin} generates when parsing features, as well as
5025 providing models for feature files and directories in order to be able to have
5026 a fully traversable model tree of a test suite's structure. These models can
5027 then be analyzed or manipulated more easily than the underlying AST layer.")
5028 (home-page "https://github.com/enkessler/cuke_modeler")
5029 (license license:expat)))
5030
5031 (define-public ruby-parallel-tests
5032 (package
5033 (name "ruby-parallel-tests")
5034 (version "3.0.0")
5035 (home-page "https://github.com/grosser/parallel_tests")
5036 (source (origin
5037 (method git-fetch)
5038 (uri (git-reference
5039 (url home-page)
5040 (commit (string-append "v" version))))
5041 (file-name (string-append name version))
5042 (sha256
5043 (base32
5044 "08a6ndqn2dqacmc7yg48k0dh2rfrynvhkd5hiay16dl9m1r9q8pz"))))
5045 (build-system ruby-build-system)
5046 (arguments
5047 '(#:test-target "default"
5048 #:phases (modify-phases %standard-phases
5049 (add-after 'patch-source-shebangs 'patch-shell-invokations
5050 (lambda _
5051 (substitute* '("lib/parallel_tests/tasks.rb"
5052 "spec/parallel_tests/tasks_spec.rb")
5053 (("/bin/sh") (which "sh"))
5054 (("/bin/bash") (which "bash")))
5055 #t))
5056 (add-before 'check 'remove-version-constraints
5057 (lambda _
5058 ;; Remove hard coded version constraints, instead just
5059 ;; use whatever versions are available in Guix.
5060 (delete-file "Gemfile.lock")
5061 (substitute* "Gemfile"
5062 (("'minitest',.*")
5063 "'minitest'\n")
5064 (("'cucumber',.*")
5065 "'cucumber'\n"))
5066 #t))
5067 (add-before 'check 'disable-rails-test
5068 (lambda _
5069 ;; XXX: This test attempts to download and run the test
5070 ;; suites of multiple Rails versions(!) directly.
5071 (delete-file "spec/rails_spec.rb")
5072 #t))
5073 (add-before 'check 'set-HOME
5074 (lambda _
5075 ;; Some tests check the output of Bundler, and fail when
5076 ;; Bundler warns that /homeless-shelter does not exist.
5077 (setenv "HOME" "/tmp")
5078 #t)))))
5079 (native-inputs
5080 `(("ruby-bump" ,ruby-bump)
5081 ("ruby-cucumber" ,ruby-cucumber)
5082 ("ruby-cuke-modeler" ,ruby-cuke-modeler)
5083 ("ruby-minitest" ,ruby-minitest)
5084 ("ruby-rake" ,ruby-rake)
5085 ("ruby-rspec" ,ruby-rspec)
5086 ("ruby-spinach" ,ruby-spinach)))
5087 (propagated-inputs
5088 `(("ruby-parallel" ,ruby-parallel)))
5089 (synopsis "Run tests in parallel")
5090 (description
5091 "This package can speed up @code{Test::Unit}, @code{RSpec},
5092 @code{Cucumber}, and @code{Spinach} tests by running them concurrently
5093 across multiple CPU cores.")
5094 (license license:expat)))
5095
5096 (define-public ruby-parser
5097 (package
5098 (name "ruby-parser")
5099 (version "2.7.1.4")
5100 (source
5101 (origin
5102 (method url-fetch)
5103 (uri (rubygems-uri "parser" version))
5104 (sha256
5105 (base32
5106 "1030znhvhkfn39svwbj6qn4xb6hgl94gnvg57k4d3r76f9bryqmn"))))
5107 (build-system ruby-build-system)
5108 (native-inputs
5109 `(("bundler" ,bundler)
5110 ("ruby-cliver" ,ruby-cliver)
5111 ("ruby-simplecov" ,ruby-simplecov)
5112 ("ruby-racc" ,ruby-racc)))
5113 (inputs
5114 `(("ragel" ,ragel)))
5115 (propagated-inputs
5116 `(("ruby-ast" ,ruby-ast)))
5117 (synopsis "Ruby parser written in pure Ruby")
5118 (description
5119 "This package provides a Ruby parser written in pure Ruby.")
5120 (home-page "https://github.com/whitequark/parser")
5121 (license license:expat)))
5122
5123 (define-public ruby-sexp-processor
5124 (package
5125 (name "ruby-sexp-processor")
5126 (version "4.15.0")
5127 (source
5128 (origin
5129 (method url-fetch)
5130 (uri (rubygems-uri "sexp_processor" version))
5131 (sha256
5132 (base32
5133 "0d1vks77xnd0m3s94a58f9bkdwlaml5qdkmprx279m2s0pc2gv55"))))
5134 (build-system ruby-build-system)
5135 (native-inputs
5136 ;; TODO: Add ruby-minitest-proveit once available.
5137 `(("hoe" ,ruby-hoe)))
5138 (synopsis "ParseTree fork which includes generic S-exp processing tools")
5139 (description "The sexp_processor package is derived from ParseTree, but
5140 contrary to ParseTree, it includes all the generic S-exp processing tools.
5141 Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and
5142 @code{Environment}")
5143 (home-page "https://github.com/seattlerb/sexp_processor")
5144 (license license:expat)))
5145
5146 (define-public ruby-ruby-parser
5147 (package
5148 (name "ruby-ruby-parser")
5149 (version "3.14.2")
5150 (source
5151 (origin
5152 (method url-fetch)
5153 (uri (rubygems-uri "ruby_parser" version))
5154 (sha256
5155 (base32
5156 "09qcdyjjw3p7g6cjm5m9swkms1xnv35ndiy7yw24cas16qrhha6c"))))
5157 (build-system ruby-build-system)
5158 (native-inputs
5159 `(("hoe" ,ruby-hoe)
5160 ("racc" ,ruby-racc)
5161 ("unifdef" ,unifdef)))
5162 (propagated-inputs
5163 `(("ruby-sexp-processor" ,ruby-sexp-processor)))
5164 (home-page "https://github.com/seattlerb/ruby_parser/")
5165 (synopsis "Ruby parser written in pure Ruby")
5166 (description "The ruby_parser (RP) package provides a Ruby parser written
5167 in pure Ruby. It outputs S-expressions which can be manipulated and converted
5168 back to Ruby via the @code{ruby2ruby} library.")
5169 (license license:expat)))
5170
5171 (define-public ruby-prawn-manual-builder
5172 (package
5173 (name "ruby-prawn-manual-builder")
5174 (version "0.3.1")
5175 (source
5176 (origin
5177 (method url-fetch)
5178 (uri (rubygems-uri "prawn-manual_builder" version))
5179 (sha256
5180 (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs"))))
5181 (build-system ruby-build-system)
5182 (arguments
5183 '(#:tests? #f ; no included tests
5184 #:phases
5185 (modify-phases %standard-phases
5186 (add-after 'extract-gemspec 'patch-gemspec
5187 (lambda _
5188 (substitute* ".gemspec"
5189 ;; Loosen the requirement for pdf-inspector
5190 (("~> 1\\.0\\.7") ">= 0")))))))
5191 (propagated-inputs
5192 `(("ruby-coderay" ,ruby-coderay)))
5193 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
5194 (description
5195 "This package provides a tool for writing manuals for Prawn and Prawn
5196 accessories")
5197 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
5198 (license %prawn-project-licenses)))
5199
5200 (define-public ruby-progress_bar
5201 (package
5202 (name "ruby-progress_bar")
5203 (version "1.1.0")
5204 (source
5205 (origin
5206 (method url-fetch)
5207 (uri (rubygems-uri "progress_bar" version))
5208 (sha256
5209 (base32
5210 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
5211 (build-system ruby-build-system)
5212 (arguments
5213 '(#:test-target "spec"))
5214 (propagated-inputs
5215 `(("ruby-highline" ,ruby-highline)
5216 ("ruby-options" ,ruby-options)))
5217 (native-inputs
5218 `(("bundler" ,bundler)
5219 ("ruby-rspec" ,ruby-rspec)
5220 ("ruby-timecop" ,ruby-timecop)))
5221 (synopsis
5222 "Ruby library for displaying progress bars")
5223 (description
5224 "ProgressBar is a simple library for displaying progress bars. The
5225 maximum value is configurable, and additional information can be displayed
5226 like the percentage completion, estimated time remaining, elapsed time and
5227 rate.")
5228 (home-page "https://github.com/paul/progress_bar")
5229 (license license:wtfpl2)))
5230
5231 (define-public ruby-dep
5232 (package
5233 (name "ruby-dep")
5234 (version "1.5.0")
5235 (source
5236 (origin
5237 (method url-fetch)
5238 (uri (rubygems-uri "ruby_dep" version))
5239 (sha256
5240 (base32
5241 "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
5242 (build-system ruby-build-system)
5243 (arguments
5244 '(#:tests? #f)) ; No included tests
5245 (synopsis "Creates a version constraint of supported Rubies")
5246 (description
5247 "This package helps create a version constraint of supported Rubies,
5248 suitable for a gemspec file.")
5249 (home-page "https://github.com/e2/ruby_dep")
5250 (license license:expat)))
5251
5252 (define-public ruby-progressbar
5253 (package
5254 (name "ruby-progressbar")
5255 (version "1.10.1")
5256 (source
5257 (origin
5258 (method url-fetch)
5259 (uri (rubygems-uri "ruby-progressbar" version))
5260 (sha256
5261 (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf"))))
5262 (build-system ruby-build-system)
5263 (arguments
5264 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
5265 #:tests? #f))
5266 (synopsis "Text progress bar library for Ruby")
5267 (description
5268 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
5269 The output can be customized with a formatting system.")
5270 (home-page "https://github.com/jfelchner/ruby-progressbar")
5271 (license license:expat)))
5272
5273 (define-public ruby-pry
5274 (package
5275 (name "ruby-pry")
5276 (version "0.13.1")
5277 (source
5278 (origin
5279 (method url-fetch)
5280 (uri (rubygems-uri "pry" version))
5281 (sha256
5282 (base32
5283 "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk"))))
5284 (build-system ruby-build-system)
5285 (arguments
5286 '(#:tests? #f)) ; no tests
5287 (propagated-inputs
5288 `(("ruby-coderay" ,ruby-coderay)
5289 ("ruby-method-source" ,ruby-method-source)))
5290 (synopsis "Ruby REPL")
5291 (description "Pry is an IRB alternative and runtime developer console for
5292 Ruby. It features syntax highlighting, a plugin architecture, runtime
5293 invocation, and source and documentation browsing.")
5294 (home-page "https://cobaltbluemedia.com/pryrepl/")
5295 (license license:expat)))
5296
5297 (define-public ruby-single-cov
5298 (package
5299 (name "ruby-single-cov")
5300 (version "1.3.2")
5301 (home-page "https://github.com/grosser/single_cov")
5302 (source (origin
5303 (method git-fetch)
5304 (uri (git-reference (url home-page)
5305 (commit (string-append "v" version))))
5306 (file-name (git-file-name name version))
5307 (sha256
5308 (base32
5309 "05qdzpcai1p23a120gb9bxkfl4y73k9hicx34ch2lsk31lgi9bl7"))))
5310 (build-system ruby-build-system)
5311 (arguments
5312 '(#:test-target "default"
5313 #:phases (modify-phases %standard-phases
5314 (replace 'replace-git-ls-files
5315 (lambda _
5316 (substitute* "single_cov.gemspec"
5317 (("`git ls-files lib/ bin/ MIT-LICENSE`")
5318 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
5319 #t))
5320 (add-before 'check 'remove-version-constraints
5321 (lambda _
5322 (delete-file "Gemfile.lock")
5323 #t))
5324 (add-before 'check 'make-files-writable
5325 (lambda _
5326 ;; Tests need to create local directories and open files
5327 ;; with write permissions.
5328 (for-each make-file-writable
5329 (find-files "specs" #:directories? #t))
5330 #t))
5331 (add-before 'check 'disable-failing-test
5332 (lambda _
5333 ;; XXX: This test copies assets from minitest, but can
5334 ;; not cope with the files being read-only. Just skip
5335 ;; it for now.
5336 (substitute* "specs/single_cov_spec.rb"
5337 (("it \"complains when coverage is bad\"")
5338 "xit \"complains when coverage is bad\""))
5339 #t)))))
5340 (native-inputs
5341 `(("ruby-bump" ,ruby-bump)
5342 ("ruby-minitest" ,ruby-minitest)
5343 ("ruby-rspec" ,ruby-rspec)
5344 ("ruby-simplecov" ,ruby-simplecov)))
5345 (synopsis "Code coverage reporting tool")
5346 (description
5347 "This package provides actionable code coverage reports for Ruby
5348 projects. It has very little overhead and can be easily integrated with
5349 development tools to catch coverage problems early.")
5350 (license license:expat)))
5351
5352 (define-public ruby-guard
5353 (package
5354 (name "ruby-guard")
5355 (version "2.13.0")
5356 (source (origin
5357 (method git-fetch)
5358 ;; The gem does not include a Rakefile, nor does it contain a
5359 ;; gemspec file, nor does it come with the tests. This is why
5360 ;; we fetch the tarball from Github.
5361 (uri (git-reference
5362 (url "https://github.com/guard/guard")
5363 (commit (string-append "v" version))))
5364 (file-name (git-file-name name version))
5365 (sha256
5366 (base32
5367 "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs"))))
5368 (build-system ruby-build-system)
5369 (arguments
5370 `(#:tests? #f ; tests require cucumber
5371 #:phases
5372 (modify-phases %standard-phases
5373 (add-after 'unpack 'remove-git-ls-files
5374 (lambda* (#:key outputs #:allow-other-keys)
5375 (substitute* "guard.gemspec"
5376 (("git ls-files -z") "find . -type f -print0"))
5377 #t))
5378 (replace 'build
5379 (lambda _
5380 (invoke "gem" "build" "guard.gemspec"))))))
5381 (propagated-inputs
5382 `(("ruby-formatador" ,ruby-formatador)
5383 ("ruby-listen" ,ruby-listen)
5384 ("ruby-lumberjack" ,ruby-lumberjack)
5385 ("ruby-nenv" ,ruby-nenv)
5386 ("ruby-notiffany" ,ruby-notiffany)
5387 ("ruby-pry" ,ruby-pry)
5388 ("ruby-shellany" ,ruby-shellany)
5389 ("ruby-thor" ,ruby-thor)))
5390 (native-inputs
5391 `(("bundler" ,bundler)
5392 ("ruby-rspec" ,ruby-rspec)))
5393 (synopsis "Tool to handle events on file system modifications")
5394 (description
5395 "Guard is a command line tool to easily handle events on file system
5396 modifications. Guard automates various tasks by running custom rules whenever
5397 file or directories are modified.")
5398 (home-page "https://guardgem.org/")
5399 (license license:expat)))
5400
5401 (define-public ruby-spinach
5402 (package
5403 (name "ruby-spinach")
5404 (version "0.11.0")
5405 (home-page "https://github.com/codegram/spinach")
5406 (source (origin
5407 (method url-fetch)
5408 (uri (rubygems-uri "spinach" version))
5409 (sha256
5410 (base32
5411 "1mv053mqz9c8ngqa6wp1ymk2fax6j0yqzax6918akrdr7c3fx3c6"))))
5412 (build-system ruby-build-system)
5413 (arguments
5414 ;; FIXME: Disable tests altogether because they depend on 'capybara'
5415 ;; which in turn depends on many other unpackaged gems. Enable once
5416 ;; capybara is available.
5417 '(#:tests? #f))
5418 (propagated-inputs
5419 `(("ruby-colorize" ,ruby-colorize)
5420 ("ruby-gherkin-ruby" ,ruby-gherkin-ruby)
5421 ("ruby-json" ,ruby-json)))
5422 (synopsis "Gherkin-based BDD framework")
5423 (description
5424 "Spinach is a high-level @acronym{BDD, Behavior-driven development}
5425 framework that leverages the expressive @code{Gherkin} language to help you
5426 define executable specifications of your code.")
5427 (license license:expat)))
5428
5429 (define-public ruby-tilt
5430 (package
5431 (name "ruby-tilt")
5432 (version "2.0.10")
5433 (source
5434 (origin
5435 (method git-fetch) ;the distributed gem lacks tests
5436 (uri (git-reference
5437 (url "https://github.com/rtomayko/tilt")
5438 (commit (string-append "v" version))))
5439 (file-name (git-file-name name version))
5440 (sha256
5441 (base32
5442 "0adb7fg7925n2rd9a8kkqz3mgylw2skp9hkh9qc1rnph72mqsm6r"))))
5443 (build-system ruby-build-system)
5444 (arguments
5445 '(#:phases
5446 (modify-phases %standard-phases
5447 (add-after 'unpack 'remove-some-dependencies
5448 (lambda _
5449 (substitute* "Gemfile"
5450 ;; TODO ronn is used for generating the manual
5451 (("gem 'ronn'.*") "\n")
5452 ;; ruby-haml has a runtime dependency on ruby-tilt, so don't
5453 ;; pass it in as a native-input
5454 (("gem 'haml'.*") "\n")
5455 ;; TODO Not all of these gems are packaged for Guix yet:
5456 ;; less, coffee-script, livescript, babel-transpiler,
5457 ;; typescript-node
5458 (("if can_execjs") "if false")
5459 ;; Disable the secondary group to reduce the number of
5460 ;; dependencies. None of the normal approaches work, so patch
5461 ;; the Gemfile instead.
5462 (("group :secondary") "[].each"))
5463 #t)))))
5464 (propagated-inputs
5465 `(("ruby-pandoc-ruby" ,ruby-pandoc-ruby)
5466 ("ruby-sassc" ,ruby-sassc)))
5467 (native-inputs
5468 `(("bundler" ,bundler)
5469 ("ruby-yard" ,ruby-yard)
5470 ("ruby-builder" ,ruby-builder)
5471 ("ruby-erubis" ,ruby-erubis)
5472 ("ruby-markaby" ,ruby-markaby)))
5473 (synopsis "Generic interface to multiple Ruby template engines")
5474 (description
5475 "Tilt is a thin interface over a number of different Ruby template
5476 engines in an attempt to make their usage as generic as possible.")
5477 (home-page "https://github.com/rtomayko/tilt/")
5478 (license license:expat)))
5479
5480 (define-public ruby-thread-safe
5481 (package
5482 (name "ruby-thread-safe")
5483 (version "0.3.6")
5484 (source
5485 (origin
5486 (method url-fetch)
5487 (uri (rubygems-uri "thread_safe" version))
5488 (sha256
5489 (base32
5490 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
5491 (build-system ruby-build-system)
5492 (arguments
5493 '(#:tests? #f)) ; needs simplecov, among others
5494 (synopsis "Thread-safe utilities for Ruby")
5495 (description "The thread_safe library provides thread-safe collections and
5496 utilities for Ruby.")
5497 (home-page "https://github.com/ruby-concurrency/thread_safe")
5498 (license license:asl2.0)))
5499
5500 (define-public ruby-tzinfo
5501 (package
5502 (name "ruby-tzinfo")
5503 (version "1.2.4")
5504 (source
5505 (origin
5506 (method url-fetch)
5507 (uri (rubygems-uri "tzinfo" version))
5508 (sha256
5509 (base32
5510 "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp"))))
5511 (build-system ruby-build-system)
5512 (arguments
5513 '(#:phases
5514 (modify-phases %standard-phases
5515 (add-after 'unpack 'skip-safe-tests
5516 (lambda _
5517 (substitute* "test/test_utils.rb"
5518 (("def safe_test\\(options = \\{\\}\\)")
5519 "def safe_test(options = {})
5520 skip('The Guix build environment has an unsafe load path')"))
5521 #t)))))
5522 (propagated-inputs
5523 `(("ruby-thread-safe" ,ruby-thread-safe)))
5524 (synopsis "Time zone library for Ruby")
5525 (description "TZInfo is a Ruby library that provides daylight savings
5526 aware transformations between times in different time zones.")
5527 (home-page "https://tzinfo.github.io")
5528 (license license:expat)))
5529
5530 (define-public ruby-tzinfo-data
5531 (package
5532 (name "ruby-tzinfo-data")
5533 (version "1.2017.3")
5534 (source
5535 (origin
5536 (method git-fetch)
5537 ;; Download from GitHub because the rubygems version does not contain
5538 ;; Rakefile or tests.
5539 (uri (git-reference
5540 (url "https://github.com/tzinfo/tzinfo-data")
5541 (commit (string-append "v" version))))
5542 (file-name (git-file-name name version))
5543 (sha256
5544 (base32
5545 "0v3phl5l3jrm6waxcszqmj2dkjhqawxfsxb6mss7vkp1hlckqcdp"))
5546 ;; Remove the known test failure.
5547 ;; https://github.com/tzinfo/tzinfo-data/issues/10
5548 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
5549 (patches (search-patches
5550 "ruby-tzinfo-data-ignore-broken-test.patch"))))
5551 (build-system ruby-build-system)
5552 (propagated-inputs
5553 `(("ruby-tzinfo" ,ruby-tzinfo)))
5554 (synopsis "Data from the IANA Time Zone database")
5555 (description
5556 "This library provides @code{TZInfo::Data}, which contains data from the
5557 IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
5558 (home-page "https://tzinfo.github.io")
5559 (license license:expat)))
5560
5561 (define-public ruby-rb-inotify
5562 (package
5563 (name "ruby-rb-inotify")
5564 (version "0.9.10")
5565 (source
5566 (origin
5567 (method url-fetch)
5568 (uri (rubygems-uri "rb-inotify" version))
5569 (sha256
5570 (base32
5571 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
5572 (build-system ruby-build-system)
5573 (arguments
5574 '(#:tests? #f ; there are no tests
5575 #:phases
5576 (modify-phases %standard-phases
5577 ;; Building the gemspec with rake is not working here since it is
5578 ;; generated with Jeweler. It is also unnecessary because the
5579 ;; existing gemspec does not use any development tools to generate a
5580 ;; list of files.
5581 (replace 'build
5582 (lambda _
5583 (invoke "gem" "build" "rb-inotify.gemspec"))))))
5584 (propagated-inputs
5585 `(("ruby-ffi" ,ruby-ffi)))
5586 (native-inputs
5587 `(("ruby-yard" ,ruby-yard)))
5588 (synopsis "Ruby wrapper for Linux's inotify")
5589 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
5590 kernel subsystem for monitoring changes to files and directories.")
5591 (home-page "https://github.com/nex3/rb-inotify")
5592 (license license:expat)))
5593
5594 (define-public ruby-pry-editline
5595 (package
5596 (name "ruby-pry-editline")
5597 (version "1.1.2")
5598 (source (origin
5599 (method url-fetch)
5600 (uri (rubygems-uri "pry-editline" version))
5601 (sha256
5602 (base32
5603 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
5604 (build-system ruby-build-system)
5605 (arguments `(#:tests? #f)) ; no tests included
5606 (native-inputs
5607 `(("bundler" ,bundler)))
5608 (synopsis "Open the current REPL line in an editor")
5609 (description
5610 "This gem provides a plugin for the Ruby REPL to enable opening the
5611 current line in an external editor.")
5612 (home-page "https://github.com/tpope/pry-editline")
5613 (license license:expat)))
5614
5615 (define-public ruby-sdoc
5616 (package
5617 (name "ruby-sdoc")
5618 (version "1.1.0")
5619 (source (origin
5620 (method url-fetch)
5621 (uri (rubygems-uri "sdoc" version))
5622 (sha256
5623 (base32
5624 "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd"))))
5625 (build-system ruby-build-system)
5626 (arguments
5627 `(#:phases
5628 (modify-phases %standard-phases
5629 (add-before 'check 'set-rubylib-and-patch-gemfile
5630 (lambda _
5631 (setenv "RUBYLIB" "lib")
5632 (substitute* "sdoc.gemspec"
5633 (("s.add_runtime_dependency.*") "\n")
5634 (("s.add_dependency.*") "\n"))
5635 (substitute* "Gemfile"
5636 (("gem \"rake\".*")
5637 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
5638 #t)))))
5639 (propagated-inputs
5640 `(("ruby-json" ,ruby-json)))
5641 (native-inputs
5642 `(("bundler" ,bundler)
5643 ("ruby-minitest" ,ruby-minitest)
5644 ("ruby-hoe" ,ruby-hoe)))
5645 (synopsis "Generate searchable RDoc documentation")
5646 (description
5647 "SDoc is an RDoc documentation generator to build searchable HTML
5648 documentation for Ruby code.")
5649 (home-page "https://github.com/voloko/sdoc")
5650 (license license:expat)))
5651
5652 (define-public ruby-tins
5653 (package
5654 (name "ruby-tins")
5655 (version "1.15.0")
5656 (source (origin
5657 (method url-fetch)
5658 (uri (rubygems-uri "tins" version))
5659 (sha256
5660 (base32
5661 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
5662 (build-system ruby-build-system)
5663 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
5664 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
5665 ;; the gemspec.
5666 (arguments
5667 `(#:tests? #f ; there are no tests
5668 #:phases
5669 (modify-phases %standard-phases
5670 (replace 'build
5671 (lambda _
5672 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
5673 ;; causes an error.
5674 (substitute* "tins.gemspec"
5675 (("\"lib/spruz\", ") ""))
5676 (invoke "gem" "build" "tins.gemspec"))))))
5677 (synopsis "Assorted tools for Ruby")
5678 (description "Tins is a Ruby library providing assorted tools.")
5679 (home-page "https://github.com/flori/tins")
5680 (license license:expat)))
5681
5682 (define-public ruby-gem-hadar
5683 (package
5684 (name "ruby-gem-hadar")
5685 (version "1.9.1")
5686 (source (origin
5687 (method url-fetch)
5688 (uri (rubygems-uri "gem_hadar" version))
5689 (sha256
5690 (base32
5691 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
5692 (build-system ruby-build-system)
5693 ;; This gem needs itself at development time. We disable rebuilding of the
5694 ;; gemspec to avoid this loop.
5695 (arguments
5696 `(#:tests? #f ; there are no tests
5697 #:phases
5698 (modify-phases %standard-phases
5699 (replace 'build
5700 (lambda _
5701 (invoke "gem" "build" "gem_hadar.gemspec"))))))
5702 (propagated-inputs
5703 `(("git" ,git)
5704 ("ruby-tins" ,ruby-tins)
5705 ("ruby-yard" ,ruby-yard)))
5706 (synopsis "Library for the development of Ruby gems")
5707 (description
5708 "This library contains some useful functionality to support the
5709 development of Ruby gems.")
5710 (home-page "https://github.com/flori/gem_hadar")
5711 (license license:expat)))
5712
5713 (define-public ruby-minitest-tu-shim
5714 (package
5715 (name "ruby-minitest-tu-shim")
5716 (version "1.3.3")
5717 (source (origin
5718 (method url-fetch)
5719 (uri (rubygems-uri "minitest_tu_shim" version))
5720 (sha256
5721 (base32
5722 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
5723 (build-system ruby-build-system)
5724 (arguments
5725 `(#:phases
5726 (modify-phases %standard-phases
5727 (add-after 'unpack 'fix-test-include-path
5728 (lambda* (#:key inputs #:allow-other-keys)
5729 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
5730 (substitute* "Rakefile"
5731 (("Hoe\\.add_include_dirs .*")
5732 (string-append "Hoe.add_include_dirs \""
5733 minitest "/lib/ruby/vendor_ruby"
5734 "/gems/minitest-"
5735 ,(package-version ruby-minitest-4)
5736 "/lib" "\""))))
5737 #t))
5738 (add-before 'check 'fix-test-assumptions
5739 (lambda _
5740 ;; The test output includes the file name, so a couple of tests
5741 ;; fail. Changing the regular expressions slightly fixes this
5742 ;; problem.
5743 (substitute* "test/test_mini_test.rb"
5744 (("output.sub!\\(.*, 'FILE:LINE'\\)")
5745 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
5746 (("gsub\\(/.*, 'FILE:LINE'\\)")
5747 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
5748 #t)))))
5749 (propagated-inputs
5750 `(("ruby-minitest-4" ,ruby-minitest-4)))
5751 (native-inputs
5752 `(("ruby-hoe" ,ruby-hoe)))
5753 (synopsis "Adapter library between minitest and test/unit")
5754 (description
5755 "This library bridges the gap between the small and fast minitest and
5756 Ruby's large and slower test/unit.")
5757 (home-page "https://rubygems.org/gems/minitest_tu_shim")
5758 (license license:expat)))
5759
5760 (define-public ruby-term-ansicolor
5761 (package
5762 (name "ruby-term-ansicolor")
5763 (version "1.6.0")
5764 (source (origin
5765 (method url-fetch)
5766 (uri (rubygems-uri "term-ansicolor" version))
5767 (sha256
5768 (base32
5769 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
5770 (build-system ruby-build-system)
5771 ;; Rebuilding the gemspec seems to require git, even though this is not a
5772 ;; git repository, so we just build the gem from the existing gemspec.
5773 (arguments
5774 `(#:phases
5775 (modify-phases %standard-phases
5776 (add-after 'unpack 'fix-test
5777 (lambda -
5778 (substitute* "tests/hsl_triple_test.rb"
5779 (("0\\\\\\.0%")
5780 "0\\.?0?%"))))
5781 (replace 'build
5782 (lambda _
5783 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
5784 (propagated-inputs
5785 `(("ruby-tins" ,ruby-tins)))
5786 (native-inputs
5787 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5788 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
5789 (synopsis "Ruby library to control the attributes of terminal output")
5790 (description
5791 "This Ruby library uses ANSI escape sequences to control the attributes
5792 of terminal output.")
5793 (home-page "https://flori.github.io/term-ansicolor/")
5794 ;; There is no mention of the "or later" clause.
5795 (license license:gpl2)))
5796
5797 (define-public ruby-terraform
5798 (package
5799 (name "ruby-terraform")
5800 (version "0.22.0")
5801 (source
5802 (origin
5803 (method url-fetch)
5804 (uri (rubygems-uri "ruby-terraform" version))
5805 (sha256
5806 (base32
5807 "13zjkp71cd19j2ds2h9rqwcfr1zdg5nsh63p89l6qcsc9z39z324"))))
5808 (build-system ruby-build-system)
5809 (arguments
5810 '(#:tests? #f)) ; No included tests
5811 (propagated-inputs
5812 `(("ruby-lino" ,ruby-lino)))
5813 (synopsis "Ruby wrapper around the Terraform command line interface")
5814 (description
5815 "This package provides a Ruby wrapper around the Terraform command line
5816 interface so that Terraform can be more easily invoked from Ruby code.")
5817 (home-page "https://github.com/infrablocks/ruby_terraform")
5818 (license license:expat)))
5819
5820 (define-public ruby-pstree
5821 (package
5822 (name "ruby-pstree")
5823 (version "0.1.0")
5824 (source (origin
5825 (method url-fetch)
5826 (uri (rubygems-uri "pstree" version))
5827 (sha256
5828 (base32
5829 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
5830 (build-system ruby-build-system)
5831 (native-inputs
5832 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5833 ("bundler" ,bundler)))
5834 (synopsis "Create a process tree data structure")
5835 (description
5836 "This library uses the output of the @code{ps} command to create a
5837 process tree data structure for the current host.")
5838 (home-page "https://github.com/flori/pstree")
5839 ;; There is no mention of the "or later" clause.
5840 (license license:gpl2)))
5841
5842 (define-public ruby-utils
5843 (package
5844 (name "ruby-utils")
5845 (version "0.9.0")
5846 (source (origin
5847 (method url-fetch)
5848 (uri (rubygems-uri "utils" version))
5849 (sha256
5850 (base32
5851 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
5852 (build-system ruby-build-system)
5853 (propagated-inputs
5854 `(("ruby-tins" ,ruby-tins)
5855 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
5856 ("ruby-pstree" ,ruby-pstree)
5857 ("ruby-pry-editline" ,ruby-pry-editline)))
5858 (native-inputs
5859 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5860 ("bundler" ,bundler)))
5861 (synopsis "Command line tools for working with Ruby")
5862 (description
5863 "This package provides assorted command line tools that may be useful
5864 when working with Ruby code.")
5865 (home-page "https://github.com/flori/utils")
5866 ;; There is no mention of the "or later" clause.
5867 (license license:gpl2)))
5868
5869 (define-public ruby-jaro-winkler
5870 (package
5871 (name "ruby-jaro-winkler")
5872 (version "1.5.4")
5873 (source
5874 (origin
5875 (method url-fetch)
5876 (uri (rubygems-uri "jaro_winkler" version))
5877 (sha256
5878 (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh"))))
5879 (build-system ruby-build-system)
5880 (arguments
5881 '(#:tests? #f)) ; no included tests
5882 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
5883 (description
5884 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
5885 algorithm. It is written as a C extension and will fallback to a pure Ruby
5886 implementation on platforms where this is unsupported.")
5887 (home-page "https://github.com/tonytonyjan/jaro_winkler")
5888 (license license:expat)))
5889
5890 (define-public ruby-json
5891 (package
5892 (name "ruby-json")
5893 (version "2.1.0")
5894 (source
5895 (origin
5896 (method url-fetch)
5897 (uri (rubygems-uri "json" version))
5898 (sha256
5899 (base32
5900 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
5901 (build-system ruby-build-system)
5902 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
5903 (synopsis "JSON library for Ruby")
5904 (description "This Ruby library provides a JSON implementation written as
5905 a native C extension.")
5906 (home-page "http://json-jruby.rubyforge.org/")
5907 (license (list license:ruby license:gpl2)))) ; GPL2 only
5908
5909 (define-public ruby-json-pure
5910 (package
5911 (name "ruby-json-pure")
5912 (version "2.2.0")
5913 (source (origin
5914 (method url-fetch)
5915 (uri (rubygems-uri "json_pure" version))
5916 (sha256
5917 (base32
5918 "0m0j1mfwv0mvw72kzqisb26xjl236ivqypw1741dkis7s63b8439"))))
5919 (build-system ruby-build-system)
5920 (arguments
5921 `(#:phases
5922 (modify-phases %standard-phases
5923 (add-after 'unpack 'fix-rakefile
5924 (lambda _
5925 (substitute* "Rakefile"
5926 ;; Since this is not a git repository, do not call 'git'.
5927 (("`git ls-files`") "`find . -type f |sort`")
5928 ;; Loosen dependency constraint.
5929 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
5930 #t))
5931 (add-after 'replace-git-ls-files 'regenerate-gemspec
5932 (lambda _
5933 ;; Regenerate gemspec so loosened dependency constraints are
5934 ;; propagated.
5935 (invoke "rake" "gemspec")))
5936 (add-after 'regenerate-gemspec 'fix-json-java.gemspec
5937 (lambda _
5938 ;; This gemspec doesn't look to be generated by the above
5939 ;; command, so patch it separately.
5940 (substitute* "json-java.gemspec"
5941 (("%q<test-unit>\\.freeze, \\[\"~> 2\\.0\"\\]")
5942 "%q<test-unit>.freeze, [\">= 2.0\"]"))
5943 #t)))))
5944 (native-inputs
5945 `(("bundler" ,bundler)
5946 ("ragel" ,ragel)
5947 ("ruby-simplecov" ,ruby-simplecov)
5948 ("ruby-test-unit" ,ruby-test-unit)))
5949 (synopsis "JSON implementation in pure Ruby")
5950 (description
5951 "This package provides a JSON implementation written in pure Ruby.")
5952 (home-page "https://flori.github.com/json/")
5953 (license license:ruby)))
5954
5955 (define-public ruby-jwt
5956 (package
5957 (name "ruby-jwt")
5958 (version "2.1.0")
5959 (source
5960 (origin
5961 (method url-fetch)
5962 (uri (rubygems-uri "jwt" version))
5963 (sha256
5964 (base32
5965 "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky"))))
5966 (build-system ruby-build-system)
5967 (arguments
5968 '(#:test-target "test"
5969 #:phases
5970 (modify-phases %standard-phases
5971 (add-after 'unpack 'remove-unnecessary-dependencies
5972 (lambda _
5973 (substitute* "spec/spec_helper.rb"
5974 (("require 'simplecov.*") "\n")
5975 ;; Use [].each to disable running the SimpleCov configuration
5976 ;; block
5977 (("SimpleCov\\.configure") "[].each")
5978 (("require 'codeclimate-test-reporter'") "")
5979 (("require 'codacy-coverage'") "")
5980 (("Codacy::Reporter\\.start") ""))
5981 #t)))))
5982 (native-inputs
5983 `(("bundler" ,bundler)
5984 ("ruby-rspec" ,ruby-rspec)
5985 ("ruby-rbnacl" ,ruby-rbnacl)))
5986 (synopsis "Ruby implementation of the JSON Web Token standard")
5987 (description
5988 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
5989 @acronym{JWT, JSON Web Token} standard.")
5990 (home-page "https://github.com/jwt/ruby-jwt")
5991 (license license:expat)))
5992
5993 ;; Even though this package only provides bindings for a Mac OSX API it is
5994 ;; required by "ruby-listen" at runtime.
5995 (define-public ruby-rb-fsevent
5996 (package
5997 (name "ruby-rb-fsevent")
5998 (version "0.10.3")
5999 (source (origin
6000 (method url-fetch)
6001 (uri (rubygems-uri "rb-fsevent" version))
6002 (sha256
6003 (base32
6004 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
6005 (build-system ruby-build-system)
6006 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
6007 ;; "listen", which needs "rb-fsevent" at runtime.
6008 (arguments `(#:tests? #f))
6009 (synopsis "FSEvents API with signals catching")
6010 (description
6011 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
6012 (home-page "https://rubygems.org/gems/rb-fsevent")
6013 (license license:expat)))
6014
6015 (define-public ruby-listen
6016 (package
6017 (name "ruby-listen")
6018 (version "3.2.0")
6019 (source
6020 (origin
6021 ;; The gem does not include a Rakefile, so fetch from the Git
6022 ;; repository.
6023 (method git-fetch)
6024 (uri (git-reference
6025 (url "https://github.com/guard/listen")
6026 (commit (string-append "v" version))))
6027 (file-name (git-file-name name version))
6028 (sha256
6029 (base32
6030 "1hkp1g6hk5clsmbd001gkc12ma6s459x820piajyasv61m87if24"))))
6031 (build-system ruby-build-system)
6032 (arguments
6033 `(#:test-target "spec"
6034 #:phases
6035 (modify-phases %standard-phases
6036 (add-after 'unpack 'fix-files-in-gemspec
6037 (lambda _
6038 (substitute* "listen.gemspec"
6039 (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
6040 #t))
6041 (add-before 'check 'remove-unnecessary-dependencies'
6042 (lambda _
6043 (substitute* "Rakefile"
6044 ;; Rubocop is for code linting, and is unnecessary for running
6045 ;; the tests.
6046 ((".*rubocop.*") ""))
6047 #t)))))
6048 (native-inputs
6049 `(("bundler" ,bundler)
6050 ("ruby-rspec" ,ruby-rspec)))
6051 (inputs
6052 `(;; ruby-thor is used for the command line interface, and is referenced
6053 ;; in the wrapper, and therefore just needs to be an input.
6054 ("ruby-thor" ,ruby-thor)))
6055 (propagated-inputs
6056 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
6057 ("ruby-rb-inotify" ,ruby-rb-inotify)
6058 ("ruby-dep" ,ruby-dep)))
6059 (synopsis "Listen to file modifications")
6060 (description "The Listen gem listens to file modifications and notifies
6061 you about the changes.")
6062 (home-page "https://github.com/guard/listen")
6063 (license license:expat)))
6064
6065 (define-public ruby-loofah
6066 (package
6067 (name "ruby-loofah")
6068 (version "2.2.3")
6069 (source
6070 (origin
6071 (method url-fetch)
6072 (uri (rubygems-uri "loofah" version))
6073 (sha256
6074 (base32
6075 "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg"))))
6076 (build-system ruby-build-system)
6077 (arguments
6078 '(#:phases
6079 (modify-phases %standard-phases
6080 (add-after 'unpack 'remove-unnecessary-dependencies
6081 (lambda _
6082 ;; concourse is a development tool which is unused, so remove it
6083 ;; so it's not required.
6084 (substitute* "Gemfile"
6085 ((".*\"concourse\".*") "\n"))
6086 (substitute* "Rakefile"
6087 (("require 'concourse'") "")
6088 (("Concourse\\.new.*") "\n"))
6089 #t)))))
6090 (native-inputs
6091 `(("ruby-hoe" ,ruby-hoe)
6092 ("ruby-rr" ,ruby-rr)))
6093 (propagated-inputs
6094 `(("ruby-nokogiri" ,ruby-nokogiri)
6095 ("ruby-crass" ,ruby-crass)))
6096 (synopsis "Ruby library for manipulating and transforming HTML/XML")
6097 (description
6098 "Loofah is a general library for manipulating and transforming HTML/XML
6099 documents and fragments. It's built on top of Nokogiri and libxml2.")
6100 (home-page "https://github.com/flavorjones/loofah")
6101 (license license:expat)))
6102
6103 (define-public ruby-activesupport
6104 (package
6105 (name "ruby-activesupport")
6106 (version "5.2.2.1")
6107 (source
6108 (origin
6109 (method url-fetch)
6110 (uri (rubygems-uri "activesupport" version))
6111 (sha256
6112 (base32
6113 "161bp4p01v1a1lvszrhd1a02zf9x1p1l1yhw79a3rix1kvzkkdqb"))))
6114 (build-system ruby-build-system)
6115 (arguments
6116 `(#:phases
6117 (modify-phases %standard-phases
6118 (replace 'check
6119 (lambda _
6120 ;; There are no tests, instead attempt to load the library.
6121 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
6122 (propagated-inputs
6123 `(("ruby-concurrent" ,ruby-concurrent)
6124 ("ruby-i18n" ,ruby-i18n)
6125 ("ruby-minitest" ,ruby-minitest)
6126 ("ruby-tzinfo" ,ruby-tzinfo)
6127 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
6128 (synopsis "Ruby on Rails utility library")
6129 (description "ActiveSupport is a toolkit of support libraries and Ruby
6130 core extensions extracted from the Rails framework. It includes support for
6131 multibyte strings, internationalization, time zones, and testing.")
6132 (home-page "http://www.rubyonrails.org")
6133 (license license:expat)))
6134
6135 (define-public ruby-crass
6136 (package
6137 (name "ruby-crass")
6138 (version "1.0.6")
6139 (home-page "https://github.com/rgrove/crass")
6140 (source (origin
6141 ;; The gem does not contain tests, so pull from git.
6142 (method git-fetch)
6143 (uri (git-reference
6144 (url home-page)
6145 (commit (string-append "v" version))))
6146 (file-name (git-file-name name version))
6147 (sha256
6148 (base32
6149 "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40"))))
6150 (build-system ruby-build-system)
6151 (synopsis "Pure Ruby CSS parser")
6152 (description
6153 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
6154 (license license:expat)))
6155
6156 (define-public ruby-nokogumbo
6157 (package
6158 (name "ruby-nokogumbo")
6159 (version "2.0.2")
6160 (source (origin
6161 ;; We use the git reference, because there's no Rakefile in the
6162 ;; published gem and the tarball on Github is outdated.
6163 (method git-fetch)
6164 (uri (git-reference
6165 (url "https://github.com/rubys/nokogumbo")
6166 (commit (string-append "v" version))))
6167 (file-name (string-append name "-" version "-checkout"))
6168 (sha256
6169 (base32
6170 "1qg0iyw450lw6d0j1ghzg79a6l60nm1m4qmrzwzybi585861jxcx"))))
6171 (build-system ruby-build-system)
6172 (native-inputs
6173 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
6174 (inputs
6175 `(("gumbo-parser" ,gumbo-parser)))
6176 (propagated-inputs
6177 `(("ruby-nokogiri" ,ruby-nokogiri)))
6178 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
6179 (description
6180 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
6181 access the result as a Nokogiri parsed document.")
6182 (home-page "https://github.com/rubys/nokogumbo/")
6183 (license license:asl2.0)))
6184
6185 (define-public ruby-sanitize
6186 (package
6187 (name "ruby-sanitize")
6188 (version "5.1.0")
6189 (home-page "https://github.com/rgrove/sanitize")
6190 (source (origin
6191 (method git-fetch)
6192 ;; The gem does not include the Rakefile, so we download the
6193 ;; source from Github.
6194 (uri (git-reference
6195 (url home-page)
6196 (commit (string-append "v" version))))
6197 (file-name (git-file-name name version))
6198 (patches (search-patches "ruby-sanitize-system-libxml.patch"))
6199 (sha256
6200 (base32
6201 "0lj0q9yhjp0q0in5majkshnki07mw8m2vxgndx4m5na6232aszl0"))))
6202 (build-system ruby-build-system)
6203 (propagated-inputs
6204 `(("ruby-crass" ,ruby-crass)
6205 ("ruby-nokogiri" ,ruby-nokogiri)
6206 ("ruby-nokogumbo" ,ruby-nokogumbo)))
6207 (native-inputs
6208 `(("ruby-minitest" ,ruby-minitest)))
6209 (synopsis "Whitelist-based HTML and CSS sanitizer")
6210 (description
6211 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
6212 acceptable elements, attributes, and CSS properties, Sanitize will remove all
6213 unacceptable HTML and/or CSS from a string.")
6214 (license license:expat)))
6215
6216 (define-public ruby-oj
6217 (package
6218 (name "ruby-oj")
6219 (version "3.10.1")
6220 (source
6221 (origin
6222 (method git-fetch)
6223 ;; Version on rubygems.org does not contain Rakefile, so download from
6224 ;; GitHub instead.
6225 (uri (git-reference
6226 (url "https://github.com/ohler55/oj")
6227 (commit (string-append "v" version))))
6228 (file-name (git-file-name name version))
6229 (sha256
6230 (base32
6231 "0i5xjx4sh816zx2c1a4d1q67k7vllg5jnnc4jy6zhbmwi1dvp5vw"))))
6232 (build-system ruby-build-system)
6233 (arguments
6234 '(#:test-target "test_all"
6235 #:phases
6236 (modify-phases %standard-phases
6237 (add-before 'check 'disable-bundler
6238 (lambda _
6239 (substitute* "Rakefile"
6240 (("Bundler\\.with_clean_env") "1.times")
6241 (("bundle exec ") "")))))))
6242 (native-inputs
6243 `(("bundler" ,bundler)
6244 ("ruby-rspec" ,ruby-rspec)
6245 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6246 (synopsis "JSON parser for Ruby optimized for speed")
6247 (description
6248 "Oj is a JSON parser and generator for Ruby, where the encoding and
6249 decoding of JSON is implemented as a C extension to Ruby.")
6250 (home-page "http://www.ohler.com/oj/")
6251 (license (list license:expat ; Ruby code
6252 license:bsd-3)))) ; extension code
6253
6254 (define-public ruby-ox
6255 (package
6256 (name "ruby-ox")
6257 (version "2.6.0")
6258 (source
6259 (origin
6260 (method url-fetch)
6261 (uri (rubygems-uri "ox" version))
6262 (sha256
6263 (base32
6264 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
6265 (build-system ruby-build-system)
6266 (arguments
6267 '(#:tests? #f)) ; no tests
6268 (synopsis "Optimized XML library for Ruby")
6269 (description
6270 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
6271 written as a native C extension. It was designed to be an alternative to
6272 Nokogiri and other Ruby XML parsers for generic XML parsing and as an
6273 alternative to Marshal for Object serialization. ")
6274 (home-page "http://www.ohler.com/ox")
6275 (license license:expat)))
6276
6277 (define-public ruby-redcloth
6278 (package
6279 (name "ruby-redcloth")
6280 (version "4.3.2")
6281 (source (origin
6282 (method url-fetch)
6283 (uri (rubygems-uri "RedCloth" version))
6284 (sha256
6285 (base32
6286 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
6287 (build-system ruby-build-system)
6288 (arguments
6289 `(#:tests? #f ; no tests
6290 #:phases
6291 (modify-phases %standard-phases
6292 ;; Redcloth has complicated rake tasks to build various versions for
6293 ;; multiple targets using RVM. We don't want this so we just use the
6294 ;; existing gemspec.
6295 (replace 'build
6296 (lambda _
6297 (invoke "gem" "build" "redcloth.gemspec"))))))
6298 (native-inputs
6299 `(("bundler" ,bundler)
6300 ("ruby-diff-lcs" ,ruby-diff-lcs)
6301 ("ruby-rspec-2" ,ruby-rspec-2)))
6302 (synopsis "Textile markup language parser for Ruby")
6303 (description
6304 "RedCloth is a Ruby parser for the Textile markup language.")
6305 (home-page "http://redcloth.org")
6306 (license license:expat)))
6307
6308 (define-public ruby-pg
6309 (package
6310 (name "ruby-pg")
6311 (version "1.1.4")
6312 (source
6313 (origin
6314 (method url-fetch)
6315 (uri (rubygems-uri "pg" version))
6316 (sha256
6317 (base32
6318 "0fmnyxcyrvgdbgq7m09whgn9i8rwfybk0w8aii1nc4g5kqw0k2jy"))))
6319 (build-system ruby-build-system)
6320 (arguments
6321 '(#:test-target "spec"))
6322 (native-inputs
6323 `(("ruby-rake-compiler" ,ruby-rake-compiler)
6324 ("ruby-hoe" ,ruby-hoe)
6325 ("ruby-rspec" ,ruby-rspec)))
6326 (inputs
6327 `(("postgresql" ,postgresql)))
6328 (synopsis "Ruby interface to PostgreSQL")
6329 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
6330 with PostgreSQL 9.0 and later.")
6331 (home-page "https://bitbucket.org/ged/ruby-pg")
6332 (license license:ruby)))
6333
6334 (define-public ruby-byebug
6335 (package
6336 (name "ruby-byebug")
6337 (version "9.0.6")
6338 (source
6339 (origin
6340 (method url-fetch)
6341 (uri (rubygems-uri "byebug" version))
6342 (sha256
6343 (base32
6344 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
6345 (build-system ruby-build-system)
6346 (arguments
6347 '(#:tests? #f)) ; no tests
6348 (synopsis "Debugger for Ruby 2")
6349 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
6350 TracePoint C API for execution control and the Debug Inspector C API for call
6351 stack navigation. The core component provides support that front-ends can
6352 build on. It provides breakpoint handling and bindings for stack frames among
6353 other things and it comes with a command line interface.")
6354 (home-page "https://github.com/deivid-rodriguez/byebug")
6355 (license license:bsd-2)))
6356
6357 ;;; TODO: Make it the default byebug in core-updates.
6358 (define-public ruby-byebug-11
6359 (package
6360 (inherit ruby-byebug)
6361 (name "ruby-byebug")
6362 (version "11.1.3")
6363 (source
6364 (origin
6365 (method git-fetch)
6366 (uri (git-reference
6367 (url "https://github.com/deivid-rodriguez/byebug")
6368 (commit (string-append "v" version))))
6369 (file-name (git-file-name name version))
6370 (sha256
6371 (base32
6372 "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij"))
6373 (modules '((guix build utils)))
6374 (snippet
6375 '(begin
6376 ;; Remove wrappers that try to setup a bundle environment.
6377 (with-directory-excursion "bin"
6378 (for-each delete-file '("bundle" "rake" "rubocop"))
6379 ;; ruby-minitest doesn't come with a launcher, so fix the one
6380 ;; provided.
6381 (substitute* "minitest"
6382 (("load File\\.expand_path\\(\"bundle\".*") "")
6383 (("require \"bundler/setup\".*") "")))
6384 #t))))
6385 (arguments
6386 `(#:tests? #t
6387 #:phases
6388 (modify-phases %standard-phases
6389 (add-after 'unpack 'skip-tmp-path-sensitive-test
6390 (lambda _
6391 (substitute* "test/commands/where_test.rb"
6392 (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
6393 "unless true\n"))
6394 #t))
6395 (add-before 'build 'compile
6396 (lambda _
6397 (invoke "rake" "compile")))
6398 (add-before 'check 'set-home
6399 (lambda _
6400 (setenv "HOME" (getcwd))
6401 #t)))))
6402 (native-inputs
6403 `(("bundler" ,bundler)
6404 ("ruby-chandler" ,ruby-chandler)
6405 ("ruby-minitest" ,ruby-minitest)
6406 ("ruby-pry" ,ruby-pry)
6407 ("ruby-rake-compiler" ,ruby-rake-compiler)
6408 ("ruby-rubocop" ,ruby-rubocop)
6409 ("ruby-yard" ,ruby-yard)))))
6410
6411 (define-public ruby-netrc
6412 (package
6413 (name "ruby-netrc")
6414 (version "0.11.0")
6415 (source (origin
6416 (method url-fetch)
6417 (uri (rubygems-uri "netrc" version))
6418 (sha256
6419 (base32
6420 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
6421 (build-system ruby-build-system)
6422 (arguments
6423 `(#:phases
6424 (modify-phases %standard-phases
6425 (replace 'check
6426 ;; There is no Rakefile and minitest can only run one file at once,
6427 ;; so we have to iterate over all test files.
6428 (lambda _
6429 (for-each (lambda (file)
6430 (invoke "ruby" "-Itest" file))
6431 (find-files "./test" "test_.*\\.rb"))
6432 #t)))))
6433 (native-inputs
6434 `(("ruby-minitest" ,ruby-minitest)))
6435 (synopsis "Library to read and update netrc files")
6436 (description
6437 "This library can read and update netrc files, preserving formatting
6438 including comments and whitespace.")
6439 (home-page "https://github.com/geemus/netrc")
6440 (license license:expat)))
6441
6442 (define-public ruby-unf-ext
6443 (package
6444 (name "ruby-unf-ext")
6445 (version "0.0.7.6")
6446 (source (origin
6447 (method url-fetch)
6448 (uri (rubygems-uri "unf_ext" version))
6449 (sha256
6450 (base32
6451 "1ll6w64ibh81qwvjx19h8nj7mngxgffg7aigjx11klvf5k2g4nxf"))))
6452 (build-system ruby-build-system)
6453 (arguments
6454 `(#:phases
6455 (modify-phases %standard-phases
6456 (add-after 'build 'build-ext
6457 (lambda _ (invoke "rake" "compile:unf_ext")))
6458 (add-before 'check 'lose-rake-compiler-dock-dependency
6459 (lambda _
6460 ;; rake-compiler-dock is listed in the gemspec, but only
6461 ;; required when cross-compiling.
6462 (substitute* "unf_ext.gemspec"
6463 ((".*rake-compiler-dock.*") ""))
6464 #t)))))
6465 (native-inputs
6466 `(("bundler" ,bundler)
6467 ("ruby-rake-compiler" ,ruby-rake-compiler)
6468 ("ruby-test-unit" ,ruby-test-unit)))
6469 (synopsis "Unicode normalization form support library")
6470 (description
6471 "This package provides unicode normalization form support for Ruby.")
6472 (home-page "https://github.com/knu/ruby-unf_ext")
6473 (license license:expat)))
6474
6475 (define-public ruby-tdiff
6476 ;; Use a newer than released snapshot so that rspec-2 is not required.
6477 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
6478 (package
6479 (name "ruby-tdiff")
6480 (version (string-append "0.3.3-1." (string-take commit 8)))
6481 (source (origin
6482 (method git-fetch)
6483 (uri (git-reference
6484 (url "https://github.com/postmodern/tdiff")
6485 (commit commit)))
6486 (file-name (string-append name "-" version "-checkout"))
6487 (sha256
6488 (base32
6489 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
6490 (build-system ruby-build-system)
6491 (native-inputs
6492 `(("ruby-rspec" ,ruby-rspec)
6493 ("ruby-yard" ,ruby-yard)
6494 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
6495 (synopsis "Calculate the differences between two tree-like structures")
6496 (description
6497 "This library provides functions to calculate the differences between two
6498 tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
6499 (home-page "https://github.com/postmodern/tdiff")
6500 (license license:expat))))
6501
6502 (define-public ruby-nokogiri-diff
6503 ;; Use a newer than released snapshot so that rspec-2 is not required.
6504 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
6505 (package
6506 (name "ruby-nokogiri-diff")
6507 (version (string-append "0.2.0-1." (string-take commit 8)))
6508 (source (origin
6509 (method git-fetch)
6510 (uri (git-reference
6511 (url "https://github.com/postmodern/nokogiri-diff")
6512 (commit commit)))
6513 (file-name (string-append name "-" version "-checkout"))
6514 (sha256
6515 (base32
6516 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
6517 (build-system ruby-build-system)
6518 (propagated-inputs
6519 `(("ruby-tdiff" ,ruby-tdiff)
6520 ("ruby-nokogiri" ,ruby-nokogiri)))
6521 (native-inputs
6522 `(("ruby-rspec" ,ruby-rspec)
6523 ("ruby-yard" ,ruby-yard)
6524 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
6525 (synopsis "Calculate the differences between two XML/HTML documents")
6526 (description
6527 "@code{Nokogiri::Diff} adds the ability to calculate the
6528 differences (added or removed nodes) between two XML/HTML documents.")
6529 (home-page "https://github.com/postmodern/nokogiri-diff")
6530 (license license:expat))))
6531
6532 (define-public ruby-racc
6533 (package
6534 (name "ruby-racc")
6535 (version "1.4.14")
6536 (source
6537 (origin
6538 (method url-fetch)
6539 (uri (rubygems-uri "racc" version))
6540 (sha256
6541 (base32
6542 "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
6543 (build-system ruby-build-system)
6544 (native-inputs
6545 `(("ruby-hoe" ,ruby-hoe)
6546 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6547 (synopsis "LALR(1) parser generator for Ruby")
6548 (description
6549 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
6550 generates Ruby program.")
6551 (home-page "http://i.loveruby.net/en/projects/racc/")
6552 (license (list
6553 ;; Generally licensed under the LGPL2.1, and some files also
6554 ;; available under the same license as Ruby.
6555 license:lgpl2.1
6556 license:ruby))))
6557
6558 (define-public ruby-rack
6559 (package
6560 (name "ruby-rack")
6561 (version "2.0.6")
6562 (source
6563 (origin
6564 (method git-fetch)
6565 ;; Download from GitHub so that the patch can be applied.
6566 (uri (git-reference
6567 (url "https://github.com/rack/rack")
6568 (commit version)))
6569 (file-name (git-file-name name version))
6570 (sha256
6571 (base32
6572 "1n7z4g1x6yxip096cdc04wq7yk7ywpinq28g2xjb46r4nlv5h0j6"))
6573 ;; Ignore test which fails inside the build environment but works
6574 ;; outside.
6575 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
6576 (build-system ruby-build-system)
6577 (arguments
6578 '(#:phases
6579 (modify-phases %standard-phases
6580 (add-before 'check 'fix-tests
6581 (lambda _
6582 ;; A few of the tests use the length of a file on disk for
6583 ;; Content-Length and Content-Range headers. However, this file
6584 ;; has a shebang in it which an earlier phase patches, growing
6585 ;; the file size from 193 to 239 bytes when the store prefix is
6586 ;; "/gnu/store".
6587 (let ((size-diff (- (string-length (which "ruby"))
6588 (string-length "/usr/bin/env ruby"))))
6589 (substitute* '("test/spec_file.rb")
6590 (("193")
6591 (number->string (+ 193 size-diff)))
6592 (("bytes(.)22-33" all delimiter)
6593 (string-append "bytes"
6594 delimiter
6595 (number->string (+ 22 size-diff))
6596 "-"
6597 (number->string (+ 33 size-diff))))))
6598 #t))
6599 (add-before 'reset-gzip-timestamps 'make-files-writable
6600 (lambda* (#:key outputs #:allow-other-keys)
6601 ;; Make sure .gz files are writable so that the
6602 ;; 'reset-gzip-timestamps' phase can do its work.
6603 (let ((out (assoc-ref outputs "out")))
6604 (for-each make-file-writable
6605 (find-files out "\\.gz$"))
6606 #t))))))
6607 (native-inputs
6608 `(("ruby-minitest" ,ruby-minitest)
6609 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
6610 ("which" ,which)))
6611 (propagated-inputs
6612 `(("ruby-concurrent" ,ruby-concurrent)))
6613 (synopsis "Unified web application interface for Ruby")
6614 (description "Rack provides a minimal, modular and adaptable interface for
6615 developing web applications in Ruby. By wrapping HTTP requests and responses,
6616 it unifies the API for web servers, web frameworks, and software in between
6617 into a single method call.")
6618 (home-page "https://rack.github.io/")
6619 (license license:expat)))
6620
6621 (define-public ruby-rack-test
6622 (package
6623 (name "ruby-rack-test")
6624 (version "0.8.3")
6625 (source
6626 (origin
6627 (method url-fetch)
6628 (uri (rubygems-uri "rack-test" version))
6629 (sha256
6630 (base32
6631 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
6632 (build-system ruby-build-system)
6633 (arguments
6634 ;; Disable tests because of circular dependencies: requires sinatra,
6635 ;; which requires rack-protection, which requires rack-test. Instead
6636 ;; simply require the library.
6637 `(#:phases
6638 (modify-phases %standard-phases
6639 (replace 'check
6640 (lambda _
6641 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
6642 (propagated-inputs
6643 `(("ruby-rack" ,ruby-rack)))
6644 (synopsis "Testing API for Rack applications")
6645 (description
6646 "Rack::Test is a small, simple testing API for Rack applications. It can
6647 be used on its own or as a reusable starting point for Web frameworks and
6648 testing libraries to build on.")
6649 (home-page "https://github.com/rack-test/rack-test")
6650 (license license:expat)))
6651
6652 (define-public ruby-rack-protection
6653 (package
6654 (name "ruby-rack-protection")
6655 (version "2.0.5")
6656 (source
6657 (origin
6658 (method url-fetch)
6659 (uri (rubygems-uri "rack-protection" version))
6660 (sha256
6661 (base32
6662 "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk"))))
6663 (build-system ruby-build-system)
6664 (arguments
6665 '(;; Tests missing from the gem.
6666 #:tests? #f))
6667 (propagated-inputs
6668 `(("ruby-rack" ,ruby-rack)))
6669 (native-inputs
6670 `(("bundler" ,bundler)
6671 ("ruby-rspec" ,ruby-rspec-2)
6672 ("ruby-rack-test" ,ruby-rack-test)))
6673 (synopsis "Rack middleware that protects against typical web attacks")
6674 (description "Rack middleware that can be used to protect against typical
6675 web attacks. It can protect all Rack apps, including Rails. For instance, it
6676 protects against cross site request forgery, cross site scripting,
6677 clickjacking, directory traversal, session hijacking and IP spoofing.")
6678 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
6679 (license license:expat)))
6680
6681 (define-public ruby-rainbow
6682 (package
6683 (name "ruby-rainbow")
6684 (version "3.0.0")
6685 (source
6686 (origin
6687 (method url-fetch)
6688 (uri (rubygems-uri "rainbow" version))
6689 (sha256
6690 (base32
6691 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
6692 (build-system ruby-build-system)
6693 (arguments
6694 '(#:phases
6695 (modify-phases %standard-phases
6696 ;; Run rspec directly, to avoid requiring Rubocop which is used from
6697 ;; the Rakefile.
6698 (replace 'check
6699 (lambda* (#:key tests? #:allow-other-keys)
6700 (when tests?
6701 (invoke "rspec"))
6702 #t)))))
6703 (native-inputs
6704 `(("bundler" ,bundler)
6705 ("ruby-rspec" ,ruby-rspec)))
6706 (synopsis "Colorize printed text on ANSI terminals")
6707 (description
6708 "@code{rainbow} provides a string presenter object to colorize strings by
6709 wrapping them in ANSI escape codes.")
6710 (home-page "https://github.com/sickill/rainbow")
6711 (license license:expat)))
6712
6713 (define-public ruby-rr
6714 (package
6715 (name "ruby-rr")
6716 (version "1.2.1")
6717 (source
6718 (origin
6719 (method url-fetch)
6720 (uri (rubygems-uri "rr" version))
6721 (sha256
6722 (base32
6723 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
6724 (build-system ruby-build-system)
6725 (arguments
6726 '(#:tests? #f)) ; test files not included
6727 (native-inputs
6728 `(("bundler" ,bundler)
6729 ("ruby-rspec" ,ruby-rspec)))
6730 (synopsis "Ruby test double framework")
6731 (description
6732 "RR is a test double framework that features a rich selection of double
6733 techniques and a terse syntax.")
6734 (home-page "https://rr.github.io/rr/")
6735 (license license:expat)))
6736
6737 (define-public ruby-rest-client
6738 (package
6739 (name "ruby-rest-client")
6740 (version "2.0.2")
6741 (source
6742 (origin
6743 (method url-fetch)
6744 (uri (rubygems-uri "rest-client" version))
6745 (sha256
6746 (base32
6747 "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
6748 (build-system ruby-build-system)
6749 (arguments
6750 '(#:phases
6751 (modify-phases %standard-phases
6752 (add-before 'check 'remove-unnecessary-development-dependencies
6753 (lambda _
6754 (substitute* "rest-client.gemspec"
6755 ;; Remove rubocop as it's unused. Rubocop also indirectly
6756 ;; depends on this package through ruby-parser and ruby-ast so
6757 ;; this avoids a dependency loop.
6758 ((".*rubocop.*") "\n")
6759 ;; Remove pry as it's unused, it's a debugging tool
6760 ((".*pry.*") "\n")
6761 ;; Remove an unnecessarily strict rdoc dependency
6762 ((".*rdoc.*") "\n"))
6763 #t))
6764 (add-before 'check 'delete-network-dependent-tests
6765 (lambda _
6766 (delete-file "spec/integration/request_spec.rb")
6767 (delete-file "spec/integration/httpbin_spec.rb")
6768 #t)))))
6769 (propagated-inputs
6770 `(("ruby-http-cookie" ,ruby-http-cookie)
6771 ("ruby-mime-types" ,ruby-mime-types)
6772 ("ruby-netrc" ,ruby-netrc)))
6773 (native-inputs
6774 `(("bundler" ,bundler)
6775 ("ruby-webmock" ,ruby-webmock-2)
6776 ("ruby-rspec" ,ruby-rspec)))
6777 (synopsis "Simple HTTP and REST client for Ruby")
6778 (description
6779 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
6780 inspired by the Sinatra microframework style of specifying actions:
6781 @code{get}, @code{put}, @code{post}, @code{delete}.")
6782 (home-page "https://github.com/rest-client/rest-client")
6783 (license license:expat)))
6784
6785 (define-public ruby-rubocop-ast
6786 (package
6787 (name "ruby-rubocop-ast")
6788 (version "0.1.0")
6789 (source
6790 (origin
6791 (method git-fetch) ;no test suite in distributed gem
6792 (uri (git-reference
6793 (url "https://github.com/rubocop-hq/rubocop-ast.git")
6794 (commit (string-append "v" version))))
6795 (file-name (git-file-name name version))
6796 (sha256
6797 (base32
6798 "0nz25z5b76xkgb9sh370hni3l946j07fr05cdwkdj9x7ibgsb6nj"))))
6799 (build-system ruby-build-system)
6800 (arguments
6801 `(#:test-target "spec"
6802 #:phases (modify-phases %standard-phases
6803 (add-after 'unpack 'disable-bundler
6804 (lambda _
6805 (substitute* "Rakefile"
6806 (("Bundler\\.setup.*") "nil\n"))
6807 #t))
6808 (replace 'replace-git-ls-files
6809 (lambda _
6810 (substitute* "rubocop-ast.gemspec"
6811 (("`git ls-files(.*)`" _ files)
6812 (format #f "`find ~a -type f| sort`" files)))
6813 #t)))))
6814 (native-inputs
6815 `(("ruby-bump" ,ruby-bump)
6816 ("ruby-rspec" ,ruby-rspec)))
6817 (propagated-inputs
6818 `(("ruby-parser" ,ruby-parser)))
6819 (synopsis "RuboCop's AST extensions and NodePattern functionality")
6820 (description "Rubocop::AST extends @code{ruby-parser} with classes used
6821 by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular:
6822 @itemize
6823 @item @code{RuboCop::AST::Node}
6824 @item @code{RuboCop::AST::NodePattern}
6825 @end itemize")
6826 (home-page "https://rubocop.org/")
6827 (license license:expat)))
6828
6829 (define-public ruby-rexml
6830 (package
6831 (name "ruby-rexml")
6832 (version "3.2.4")
6833 (source
6834 (origin
6835 (method git-fetch) ;no tests in distributed gem
6836 (uri (git-reference
6837 (url "https://github.com/ruby/rexml.git")
6838 (commit (string-append "v" version))))
6839 (file-name (git-file-name name version))
6840 (sha256
6841 (base32
6842 "0rhjjbkaq2f2cs8hyr2i4yjqpcyl8m0wmr2cypa401m3fvz4221i"))))
6843 (build-system ruby-build-system)
6844 (synopsis "XML toolkit for Ruby")
6845 (description "Inspired by Electric XML library for Java, REXML aims to be
6846 easy-to-use API, small and fast. It supports both tree and stream document
6847 parsing.")
6848 (home-page "https://github.com/ruby/rexml")
6849 (license license:bsd-2)))
6850
6851 (define-public ruby-character-set
6852 (package
6853 (name "ruby-character-set")
6854 (version "1.4.0")
6855 (source
6856 (origin
6857 (method url-fetch)
6858 (uri (rubygems-uri "character_set" version))
6859 (sha256
6860 (base32
6861 "0affq9n77vwy897ri2zhmfinfagf37hcwwimrccy1bcxan9mj3h3"))))
6862 (build-system ruby-build-system)
6863 (arguments '(#:tests? #f)) ;avoid a cycle with ruby-regexp-parser
6864 (synopsis "Ruby library to manipulate Unicode")
6865 (description "CharacterSet is a C-extended Ruby library to work with sets
6866 of Unicode code points. It can read and write these sets in various formats
6867 and implements the @code{stdlib} @code{Set} interface for them. It also
6868 offers an alternate paradigm of @code{String} processing which grants much
6869 better performance than @code{Regexp} and @code{String} methods from the
6870 @code{stdlib} where applicable. Many parts can be used independently, e.g.:
6871 @itemize
6872 @item @code{CharacterSet::Character}
6873 @item @code{CharacterSet::Parser}
6874 @item @code{CharacterSet::Writer}
6875 @item @code{RangeCompressor}
6876 @end itemize")
6877 (home-page "https://github.com/jaynetics/character_set")
6878 (license license:expat)))
6879
6880 (define-public ruby-range-compressor
6881 (package
6882 (name "ruby-range-compressor")
6883 (version "1.0.0")
6884 (source
6885 (origin
6886 (method git-fetch)
6887 (uri (git-reference
6888 (url "https://github.com/janosch-x/range_compressor.git")
6889 (commit (string-append "v" version))))
6890 (file-name (git-file-name name version))
6891 (sha256
6892 (base32
6893 "0y8slri2msyyg2szgwgriqd6qw9hkxycssdrcl5lk2dbcq5zvn54"))))
6894 (build-system ruby-build-system)
6895 (arguments
6896 `(#:test-target "spec"
6897 #:phases (modify-phases %standard-phases
6898 (add-after 'extract-gemspec 'strip-version-requirements
6899 (lambda _
6900 (substitute* "range_compressor.gemspec"
6901 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
6902 (string-append stripped "\n")))
6903 #t)))))
6904 (native-inputs
6905 `(("ruby-rspec" ,ruby-rspec)))
6906 (synopsis "Simple arrays of objects to arrays of ranges compressor")
6907 (description "RangeCompresses is a tiny library that allows compressing
6908 arrays of objects into arrays of ranges. For example, it can turn the
6909 following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.")
6910 (home-page "https://github.com/janosch-x/range_compressor")
6911 (license license:expat)))
6912
6913 (define-public ruby-regexp-property-values
6914 (package
6915 (name "ruby-regexp-property-values")
6916 (version "1.0.0")
6917 (source
6918 (origin
6919 (method git-fetch)
6920 (uri (git-reference ;no test suite in distributed gem
6921 (url "https://github.com/jaynetics/regexp_property_values.git")
6922 (commit (string-append "v" version))))
6923 (file-name (git-file-name name version))
6924 (sha256
6925 (base32
6926 "0l3fjmscg1wxn7kc6bl022cc6k5d91pwb7daq1b5w36kvsx52w1j"))))
6927 (build-system ruby-build-system)
6928 (arguments
6929 '(#:test-target "default"))
6930 (native-inputs
6931 `(("ruby-character-set" ,ruby-character-set)
6932 ("ruby-rake-compiler" ,ruby-rake-compiler)
6933 ("ruby-range-compressor" ,ruby-range-compressor)
6934 ("ruby-rspec" ,ruby-rspec)))
6935 (synopsis "Inspect Ruby's regex engine property values")
6936 (description "This small library lets you see which property values are
6937 supported by the regular expression engine of the Ruby version you are running
6938 and can directly read out their code point ranges. In other words, it
6939 determines all supported values for @code{\\p{value}} expressions and what
6940 they match.")
6941 (home-page "https://github.com/jaynetics/regexp_property_values")
6942 (license license:expat)))
6943
6944 (define-public ruby-regexp-parser
6945 (package
6946 (name "ruby-regexp-parser")
6947 (version "1.7.1")
6948 (source
6949 (origin
6950 (method git-fetch) ;bin/test missing from gem
6951 (uri (git-reference
6952 (url "https://github.com/ammar/regexp_parser.git")
6953 (commit (string-append "v" version))))
6954 (file-name (git-file-name name version))
6955 (sha256
6956 (base32
6957 "0dk9d4vpw31cc06s29fqyr1kq0kipym1mydifkcrnppvpl3pd53r"))))
6958 (build-system ruby-build-system)
6959 (arguments
6960 '(#:test-target "default"
6961 #:phases (modify-phases %standard-phases
6962 (add-before 'build 'compile-scanner.rb
6963 (lambda _
6964 (invoke "rake" "build")
6965 ;; XXX: This is needed otherwise the install
6966 ;; phase fails to delete the installed cached
6967 ;; gem file.
6968 (delete-file-recursively "pkg")
6969 #t)))))
6970 (native-inputs
6971 `(("ragel" ,ragel)
6972 ("ruby-regexp-property-values" ,ruby-regexp-property-values)
6973 ("ruby-rspec" ,ruby-rspec)))
6974 (synopsis "A regular expression parser library for Ruby ")
6975 (description "A Ruby gem for tokenizing, parsing, and transforming regular
6976 expressions. It comprises the following components:
6977 @itemize
6978 @item A scanner/tokenizer based on Ragel,
6979 @item A lexer that produces a stream of token objects,
6980 @item A parser that produces a tree of Expression objects.
6981 @end itemize")
6982 (home-page "https://github.com/ammar/regexp_parser")
6983 (license license:expat)))
6984
6985 (define-public ruby-test-queue
6986 (package
6987 (name "ruby-test-queue")
6988 (version "0.4.2")
6989 (source
6990 (origin
6991 (method url-fetch)
6992 (uri (rubygems-uri "test-queue" version))
6993 (sha256
6994 (base32
6995 "0hvm3n1qrqxqilhqk4rjivw3gcrd08zz1i6am9qzg1ppjxv6f36f"))))
6996 (build-system ruby-build-system)
6997 (arguments
6998 '(#:phases
6999 (modify-phases %standard-phases
7000 (replace 'check
7001 (lambda* (#:key tests? #:allow-other-keys)
7002 (when tests?
7003 (invoke "rspec"))
7004 #t)))))
7005 (native-inputs
7006 `(("ruby-rspec" ,ruby-rspec)))
7007 (synopsis "Minitest/RSpec parallel test runner for CI environments")
7008 (description "The test-queue module is a parallel test runner,
7009 built using a centralized queue to ensure optimal distribution of
7010 tests between workers. It is specifically optimized for Continuous
7011 Integration (CI) environments: build statistics from each run are
7012 stored locally and used to sort the queue at the beginning of the next
7013 run.")
7014 (home-page "https://github.com/tmm1/test-queue")
7015 (license license:expat)))
7016
7017 (define-public ruby-rubocop
7018 (package
7019 (name "ruby-rubocop")
7020 (version "0.88.0")
7021 (source
7022 (origin
7023 (method git-fetch) ;no tests in distributed gem
7024 (uri (git-reference
7025 (url "https://github.com/rubocop-hq/rubocop.git")
7026 (commit (string-append "v" version))))
7027 (file-name (git-file-name name version))
7028 (sha256
7029 (base32
7030 "1d06893jp8pd85fvgp5d16vqcf31bafi430v4f4y746ihyvhzz5r"))
7031 (patches (search-patches "ruby-rubocop-break-dependency-cycle.patch"))))
7032 (build-system ruby-build-system)
7033 (arguments
7034 '(#:test-target "default"
7035 #:phases
7036 (modify-phases %standard-phases
7037 (add-after 'unpack 'remove-problematic-tests
7038 ;; These tests depend on Rubocop extensions, which cannot be
7039 ;; included as they cause a dependency cycle with Rubocop itself.
7040 (lambda _
7041 (delete-file "spec/rubocop/config_loader_spec.rb")
7042 (substitute* "Gemfile"
7043 ((".*'rubocop-performance'.*") "")
7044 ((".*'rubocop-rspec'.*") ""))
7045 ;; Prevent "Unnecessary disabling of RSpec/* (unknown cop)"
7046 ;; errors.
7047 (substitute* (find-files "spec/rubocop/cop/" "_spec\\.rb$")
7048 (("# (rubocop:(enable|disable) RSpec.*)" _ what)
7049 (string-append "# Disabled: " what)))
7050 #t))
7051 (add-after 'unpack 'disable-bundler
7052 (lambda _
7053 (substitute* "Rakefile"
7054 (("Bundler\\.setup.*") "nil\n"))
7055 #t))
7056 (replace 'replace-git-ls-files
7057 (lambda _
7058 (substitute* "rubocop.gemspec"
7059 (("`git ls-files(.*)`" _ files)
7060 (format #f "`find ~a -type f| sort`" files)))
7061 #t))
7062 (add-before 'check 'set-home
7063 (lambda _
7064 (setenv "HOME" (getcwd))
7065 #t))
7066 (add-before 'check 'make-adoc-files-writable
7067 (lambda _
7068 (let ((adoc-files (find-files "docs/modules/ROOT/pages"
7069 "\\.adoc$")))
7070 (for-each make-file-writable adoc-files))
7071 #t)))))
7072 (native-inputs
7073 `(("ruby-bump" ,ruby-bump)
7074 ("ruby-pry" ,ruby-pry)
7075 ("ruby-rspec" ,ruby-rspec)
7076 ("ruby-test-queue" ,ruby-test-queue)
7077 ("ruby-webmock" ,ruby-webmock-2)
7078 ("ruby-yard" ,ruby-yard)))
7079 (propagated-inputs
7080 `(("ruby-parallel" ,ruby-parallel)
7081 ("ruby-parser" ,ruby-parser)
7082 ("ruby-rainbow" ,ruby-rainbow)
7083 ("ruby-regexp-parser" ,ruby-regexp-parser)
7084 ("ruby-rexml" ,ruby-rexml)
7085 ("ruby-rubocop-ast" ,ruby-rubocop-ast)
7086 ("ruby-progressbar" ,ruby-progressbar)
7087 ("ruby-unicode-display-width" ,ruby-unicode-display-width)))
7088 (synopsis "Ruby code style checking tool")
7089 (description
7090 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
7091 the community-driven Ruby Style Guide.")
7092 (home-page "https://github.com/rubocop-hq/rubocop")
7093 (license license:expat)))
7094
7095 (define-public ruby-contest
7096 (package
7097 (name "ruby-contest")
7098 (version "0.1.3")
7099 (source
7100 (origin
7101 (method url-fetch)
7102 (uri (rubygems-uri "contest" version))
7103 (sha256
7104 (base32
7105 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
7106 (build-system ruby-build-system)
7107 (synopsis "Write declarative tests using nested contexts")
7108 (description
7109 "Contest allows writing declarative @code{Test::Unit} tests using nested
7110 contexts without performance penalties.")
7111 (home-page "https://github.com/citrusbyte/contest")
7112 (license license:expat)))
7113
7114 (define-public ruby-creole
7115 (package
7116 (name "ruby-creole")
7117 (version "0.5.0")
7118 (source
7119 (origin
7120 (method url-fetch)
7121 (uri (rubygems-uri "creole" version))
7122 (sha256
7123 (base32
7124 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
7125 (build-system ruby-build-system)
7126 (native-inputs
7127 `(("ruby-bacon" ,ruby-bacon)))
7128 (synopsis "Creole markup language converter")
7129 (description
7130 "Creole is a lightweight markup language and this library for converting
7131 creole to @code{HTML}.")
7132 (home-page "https://github.com/minad/creole")
7133 (license license:ruby)))
7134
7135 (define-public ruby-docile
7136 (package
7137 (name "ruby-docile")
7138 (version "1.1.5")
7139 (source
7140 (origin
7141 (method url-fetch)
7142 (uri (rubygems-uri "docile" version))
7143 (sha256
7144 (base32
7145 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
7146 (build-system ruby-build-system)
7147 (arguments
7148 '(#:tests? #f)) ; needs github-markup, among others
7149 (synopsis "Ruby EDSL helper library")
7150 (description "Docile is a Ruby library that provides an interface for
7151 creating embedded domain specific languages (EDSLs) that manipulate existing
7152 Ruby classes.")
7153 (home-page "https://ms-ati.github.io/docile/")
7154 (license license:expat)))
7155
7156 (define-public ruby-middleware
7157 (package
7158 (name "ruby-middleware")
7159 (version "0.1.0")
7160 (source
7161 (origin
7162 (method url-fetch)
7163 (uri (rubygems-uri "middleware" version))
7164 (sha256
7165 (base32
7166 "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl"))))
7167 (build-system ruby-build-system)
7168 (arguments '(#:tests? #f)) ;no test suite
7169 (synopsis "Implementation of a middleware abstraction for Ruby")
7170 (description "Middleware is a generalized implementation of a middleware
7171 abstraction for Ruby.")
7172 (home-page "https://github.com/mitchellh/middleware")
7173 (license license:expat)))
7174
7175 (define-public ruby-benchmark-ips
7176 (package
7177 (name "ruby-benchmark-ips")
7178 (version "2.8.2")
7179 (source
7180 (origin
7181 (method url-fetch)
7182 (uri (rubygems-uri "benchmark-ips" version))
7183 (sha256
7184 (base32
7185 "1n9397j7kh4vvikfann1467qgksc679imlr50hax3lk1q3af8kdw"))))
7186 (build-system ruby-build-system)
7187 (native-inputs
7188 `(("ruby-hoe" ,ruby-hoe)))
7189 (synopsis "Iterations per second enhancement for the Ruby Benchmark module")
7190 (description "Benchmark-ips enhances the Ruby Benchmark module with the
7191 iterations per second count. For short snippets of code, it can automatically
7192 figure out how many times to run the code to get interesting data.")
7193 (home-page "https://github.com/evanphx/benchmark-ips")
7194 (license license:expat)))
7195
7196 (define-public ruby-ffi-rzmq-core
7197 (package
7198 (name "ruby-ffi-rzmq-core")
7199 (version "1.0.7")
7200 (source
7201 (origin
7202 (method url-fetch)
7203 (uri (rubygems-uri "ffi-rzmq-core" version))
7204 (sha256
7205 (base32
7206 "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5"))))
7207 (build-system ruby-build-system)
7208 (arguments
7209 `(#:phases
7210 (modify-phases %standard-phases
7211 (add-after 'unpack 'patch-libzmq-search-path
7212 (lambda* (#:key inputs #:allow-other-keys)
7213 (let ((zeromq (assoc-ref inputs "zeromq")))
7214 (substitute* "lib/ffi-rzmq-core/libzmq.rb"
7215 (("/usr/local/lib")
7216 (string-append zeromq "/lib")))
7217 #t)))
7218 (replace 'check
7219 (lambda _
7220 (invoke "rspec"))))))
7221 (native-inputs
7222 `(("ruby-rspec" ,ruby-rspec)))
7223 (inputs
7224 `(("zeromq" ,zeromq)))
7225 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
7226 (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library")
7227 (description "This library only provides the FFI wrapper for the ZeroMQ
7228 networking library. It can be used to implement a Ruby API for the ZeroMQ
7229 library.")
7230 (home-page "https://github.com/chuckremes/ffi-rzmq-core")
7231 (license license:expat)))
7232
7233 (define-public ruby-ffi-rzmq
7234 (package
7235 (name "ruby-ffi-rzmq")
7236 (version "2.0.7")
7237 (source
7238 (origin
7239 (method url-fetch)
7240 (uri (rubygems-uri "ffi-rzmq" version))
7241 (sha256
7242 (base32
7243 "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg"))))
7244 (build-system ruby-build-system)
7245 (arguments '(#:tests? #t
7246 #:phases (modify-phases %standard-phases
7247 (replace 'check
7248 (lambda _
7249 (invoke "rspec"))))))
7250 (native-inputs
7251 `(("ruby-rspec" ,ruby-rspec)))
7252 (propagated-inputs
7253 `(("ruby-ffi-rzmq-core" ,ruby-ffi-rzmq-core)))
7254 (synopsis "High-level Ruby wrapper for the ZeroMQ networking library")
7255 (description "This library provides a high-level API that wraps the ZeroMQ
7256 networking library using the Ruby foreign function interface (FFI). It is a
7257 pure Ruby wrapper, hence is compatible with any Ruby runtime that has support
7258 for FFI.")
7259 (home-page "https://github.com/chuckremes/ffi-rzmq")
7260 (license license:expat)))
7261
7262 (define-public ruby-sawyer
7263 (package
7264 (name "ruby-sawyer")
7265 (version "0.8.2")
7266 (source
7267 (origin
7268 (method url-fetch)
7269 (uri (rubygems-uri "sawyer" version))
7270 (sha256
7271 (base32
7272 "0yrdchs3psh583rjapkv33mljdivggqn99wkydkjdckcjn43j3cz"))))
7273 (build-system ruby-build-system)
7274 (propagated-inputs
7275 `(("ruby-addressable" ,ruby-addressable)
7276 ("ruby-faraday" ,ruby-faraday)))
7277 (synopsis "Experimental hypermedia agent for Ruby")
7278 (description "Sawyer is an experimental hypermedia agent for Ruby built on
7279 top of Faraday.")
7280 (home-page "https://github.com/lostisland/sawyer")
7281 (license license:expat)))
7282
7283 (define-public ruby-octokit
7284 (package
7285 (name "ruby-octokit")
7286 (version "4.18.0")
7287 (source
7288 (origin
7289 (method url-fetch)
7290 (uri (rubygems-uri "octokit" version))
7291 (sha256
7292 (base32
7293 "0zvfr9njmj5svi39fcsi2b0g7pcxb0vamw9dlyas8bg814jlzhi6"))))
7294 (build-system ruby-build-system)
7295 (arguments '(#:tests? #f)) ;no test suite in the gem release
7296 (propagated-inputs
7297 `(("ruby-faraday" ,ruby-faraday)
7298 ("ruby-sawyer" ,ruby-sawyer)))
7299 (synopsis "Ruby toolkit for the GitHub API")
7300 (description "Octokit wraps the GitHub API in a flat API client that
7301 follows Ruby conventions and requires little knowledge of REST.")
7302 (home-page "https://github.com/octokit/octokit.rb")
7303 (license license:expat)))
7304
7305 (define-public ruby-chandler
7306 (package
7307 (name "ruby-chandler")
7308 (version "0.9.0")
7309 (source
7310 (origin
7311 (method url-fetch)
7312 (uri (rubygems-uri "chandler" version))
7313 (sha256
7314 (base32
7315 "1n8a4mr2jkcz5vaaps45g2rxa2pzy1wb7cylgw85xmmyyp14lnrr"))))
7316 (build-system ruby-build-system)
7317 (native-inputs
7318 `(("ruby-rubocop" ,ruby-rubocop)))
7319 (propagated-inputs
7320 `(("ruby-netrc" ,ruby-netrc)
7321 ("ruby-octokit" ,ruby-octokit)))
7322 (synopsis "Sync CHANGELOG entries to GitHub's release notes")
7323 (description "Chandler syncs a project's CHANGELOG file entries to
7324 GitHub's release notes to remove the need of manually entering release
7325 notes.")
7326 (home-page "https://github.com/mattbrictson/chandler")
7327 (license license:expat)))
7328
7329 (define-public ruby-pry-byebug
7330 (package
7331 (name "ruby-pry-byebug")
7332 (version "3.9.0")
7333 (source
7334 (origin
7335 (method git-fetch)
7336 (uri (git-reference
7337 (url "https://github.com/deivid-rodriguez/pry-byebug")
7338 (commit (string-append "v" version))))
7339 (file-name (git-file-name name version))
7340 (sha256
7341 (base32
7342 "1kchrwccai92068p50zyd6mh524ywqnm0jw5g3lks7iwmf0xkmgc"))))
7343 (build-system ruby-build-system)
7344 (arguments
7345 `(#:phases (modify-phases %standard-phases
7346 (add-before 'check 'set-home
7347 (lambda _
7348 (setenv "HOME" (getcwd))
7349 #t)))))
7350 (native-inputs
7351 `(("ruby-chandler" ,ruby-chandler)
7352 ("ruby-rubocop" ,ruby-rubocop)
7353 ("ruby-simplecov" ,ruby-simplecov)))
7354 (propagated-inputs
7355 `(("ruby-byebug" ,ruby-byebug-11)
7356 ("ruby-pry" ,ruby-pry)))
7357 (synopsis "Step-by-step debugging and stack navigation in Pry")
7358 (description "This package adds step-by-step debugging and stack
7359 navigation capabilities to @code{pry}, using @code{byebug}.")
7360 (home-page "https://github.com/deivid-rodriguez/pry-byebug")
7361 (license license:expat)))
7362
7363 (define-public ruby-binding-of-caller
7364 (package
7365 (name "ruby-binding-of-caller")
7366 (version "0.8.0")
7367 (source
7368 (origin
7369 (method url-fetch)
7370 (uri (rubygems-uri "binding_of_caller" version))
7371 (sha256
7372 (base32
7373 "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g"))))
7374 (build-system ruby-build-system)
7375 ;; Attempting to run the test suite fails with a rake deprecation error
7376 ;; (see: https://github.com/banister/binding_of_caller/issues/76).
7377 (arguments '(#:tests? #f))
7378 (propagated-inputs
7379 `(("ruby-debug-inspector" ,ruby-debug-inspector)))
7380 (synopsis "Retrieve the binding of a method's caller")
7381 (description "The @code{binding_of_caller} module provides the
7382 @code{Binding#of_caller} method. It allows accessing bindings from upper
7383 frames in the call stack and can evaluate code in that context.")
7384 (home-page "https://github.com/banister/binding_of_caller")
7385 (license license:expat)))
7386
7387 (define-public ruby-pry-stack-explorer
7388 (package
7389 (name "ruby-pry-stack-explorer")
7390 (version "0.5.1")
7391 (source
7392 (origin
7393 (method url-fetch)
7394 (uri (rubygems-uri "pry-stack_explorer" version))
7395 (sha256
7396 (base32
7397 "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0"))))
7398 (build-system ruby-build-system)
7399 (arguments '(#:tests? #f)) ;no test suite in gem release
7400 (propagated-inputs
7401 `(("ruby-binding-of-caller" ,ruby-binding-of-caller)
7402 ("ruby-pry" ,ruby-pry)))
7403 (synopsis "Call-stack navigation plugin for the Pry REPL")
7404 (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that
7405 add support to navigate the call-stack.")
7406 (home-page "https://github.com/pry/pry-stack_explorer")
7407 (license license:expat)))
7408
7409 (define-public ruby-varint
7410 (package
7411 (name "ruby-varint")
7412 (version "0.1.1")
7413 (source
7414 (origin
7415 (method url-fetch)
7416 (uri (rubygems-uri "varint" version))
7417 (sha256
7418 (base32
7419 "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac"))))
7420 (build-system ruby-build-system)
7421 (arguments '(#:tests? #f)) ;no test suite
7422 (synopsis "Variable length integers (varint) C extension for Ruby")
7423 (description "This package provides a small C extension to speed up
7424 variable length integers (varint) in Ruby Protocol Buffers.")
7425 (home-page "https://github.com/liquidm/varint")
7426 (license license:bsd-3)))
7427
7428 (define-public ruby-ruby-prof
7429 (package
7430 (name "ruby-ruby-prof")
7431 (version "1.4.1")
7432 (source
7433 (origin
7434 (method url-fetch)
7435 (uri (rubygems-uri "ruby-prof" version))
7436 (sha256
7437 (base32
7438 "12cd91m08ih0imfpy4k87618hd4mhyz291a6bx2hcskza4nf6d27"))))
7439 (build-system ruby-build-system)
7440 (arguments
7441 `(#:phases
7442 (modify-phases %standard-phases
7443 (add-after 'unpack 'patch-rakefile
7444 ;; This fixes the following error: "NameError: uninitialized
7445 ;; constant Bundler::GemHelper" (see:
7446 ;; https://github.com/ruby-prof/ruby-prof/issues/274).
7447 (lambda _
7448 (substitute* "Rakefile"
7449 ((".*require \"bundler/setup\".*" all)
7450 (string-append all " require 'bundler/gem_tasks'\n")))
7451 #t))
7452 ;; The LineNumbersTest test fails non-deterministically (see:
7453 ;; https://github.com/ruby-prof/ruby-prof/issues/276).
7454 (add-after 'extract-gemspec 'delete-flaky-test
7455 (lambda _
7456 (delete-file "test/line_number_test.rb")
7457 (substitute* "ruby-prof.gemspec"
7458 (("\"test/line_number_test\\.rb\"\\.freeze, ") ""))
7459 #t))
7460 (add-before 'check 'compile
7461 (lambda _
7462 (invoke "rake" "compile"))))))
7463 (native-inputs
7464 `(("bundler" ,bundler)
7465 ("ruby-minitest" ,ruby-minitest)
7466 ("ruby-rake-compiler" ,ruby-rake-compiler)
7467 ("ruby-rdoc" ,ruby-rdoc)))
7468 (synopsis "Fast code profiler for Ruby")
7469 (description "RubyProf is a fast code profiler for Ruby. Its features
7470 include:
7471 @table @asis
7472 @item Speed
7473 Being a C extension, it is many times faster than the standard Ruby profiler.
7474 @item Measurement Modes
7475 It can measure program wall time, process time, object allocations and memory
7476 usage.
7477 @item Reports
7478 A variety of text and cross-referenced HTML reports can be generated.
7479 @item Threads
7480 Profiling multiple threads simultaneously is supported.
7481 @end table")
7482 (home-page "https://github.com/ruby-prof/ruby-prof")
7483 (license license:bsd-2)))
7484
7485 (define-public ruby-cucumber-messages
7486 (package
7487 (name "ruby-cucumber-messages")
7488 (version "12.2.0")
7489 (source (origin
7490 (method git-fetch)
7491 (uri (git-reference
7492 (url "https://github.com/cucumber/messages-ruby")
7493 (commit "12cd07eac87bce7843fd1bb0bf64bc4da09f097c")))
7494 (file-name (git-file-name name version))
7495 (sha256
7496 (base32
7497 "16wwqfpsq7crvxc3q08lphgyh12cl2d83p1c79p312q4jmy9cn5a"))))
7498 (build-system ruby-build-system)
7499 (arguments
7500 `(#:phases (modify-phases %standard-phases
7501 (add-after 'unpack 'patch-protobuf.rb
7502 (lambda _
7503 (substitute* "rake/protobuf.rb"
7504 (("load 'protobuf/tasks/compile.rake'")
7505 "require 'protobuf/tasks'"))
7506 #t))
7507 (add-before 'build 'compile
7508 (lambda _
7509 (substitute* "Makefile"
7510 (("bundle exec ") "")
7511 (("include default.mk.*" all)
7512 (string-append "#" all)))
7513 (invoke "make")))
7514 (replace 'check
7515 (lambda _
7516 (invoke "rspec"))))))
7517 (propagated-inputs
7518 `(("ruby-protobuf" ,ruby-protobuf-cucumber)))
7519 (native-inputs
7520 `(("ruby-rspec" ,ruby-rspec)))
7521 (home-page "https://github.com/cucumber/messages-ruby")
7522 (synopsis "Cucumber Messages for Ruby (Protocol Buffers)")
7523 (description "Cucumber Messages for Ruby is a library which allows
7524 serialization and deserialization of the protocol buffer messages used in
7525 Cucumber.")
7526 (license license:expat)))
7527
7528 (define-public ruby-gherkin
7529 (package
7530 (name "ruby-gherkin")
7531 (version "14.0.1")
7532 (source (origin
7533 (method git-fetch)
7534 (uri (git-reference
7535 (url "https://github.com/cucumber/gherkin-ruby")
7536 (commit (string-append "v" version))))
7537 (file-name (git-file-name name version))
7538 (sha256
7539 (base32
7540 "1dwa8632nc6kijv8p257jl64rsjmc0fimlaqvxlkdi2h9n1nympb"))))
7541 (build-system ruby-build-system)
7542 (native-inputs
7543 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
7544 ("ruby-rspec" ,ruby-rspec)))
7545 (arguments
7546 `(#:test-target "spec"))
7547 (synopsis "Gherkin parser for Ruby")
7548 (description "Gherkin is a parser and compiler for the Gherkin language.
7549 It is intended be used by all Cucumber implementations to parse
7550 @file{.feature} files.")
7551 (home-page "https://github.com/cucumber/gherkin-ruby")
7552 (license license:expat)))
7553
7554 (define-public ruby-gherkin-ruby
7555 (package
7556 (name "ruby-gherkin-ruby")
7557 (version "0.3.2")
7558 (home-page "https://github.com/codegram/gherkin-ruby")
7559 (source (origin
7560 (method url-fetch)
7561 (uri (rubygems-uri "gherkin-ruby" version))
7562 (sha256
7563 (base32
7564 "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1"))))
7565 (build-system ruby-build-system)
7566 (synopsis "Pure Ruby Gherkin parser")
7567 (description
7568 "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than
7569 200 lines of code.")
7570 ;; XXX: No license information anywhere but Readme.md.
7571 (license license:expat)))
7572
7573 (define-public ruby-aruba
7574 (package
7575 (name "ruby-aruba")
7576 (version "0.14.14")
7577 (source
7578 (origin
7579 (method url-fetch)
7580 (uri (rubygems-uri "aruba" version))
7581 (sha256
7582 (base32
7583 "0l2mfpdxc03gdrbwc2hv4vdhjhqhfcdp6d02j05j64ncpi9srlqn"))))
7584 (build-system ruby-build-system)
7585 (arguments
7586 '(#:test-target "spec"
7587 #:phases
7588 (modify-phases %standard-phases
7589 (add-after 'unpack 'patch
7590 (lambda _
7591 (substitute* "spec/aruba/api_spec.rb"
7592 ;; This resolves some errors in the specs
7593 ;;
7594 ;; undefined method `parse' for Time:Class
7595 (("require 'spec_helper'")
7596 "require 'spec_helper'\nrequire 'time'"))
7597 ;; Avoid shebang issues in this spec file
7598 (substitute* "spec/aruba/matchers/command_spec.rb"
7599 (("/usr/bin/env bash")
7600 (which "bash")))
7601 #t))
7602 (add-before 'check 'remove-unnecessary-dependencies
7603 (lambda _
7604 (substitute* "Gemfile"
7605 ((".*byebug.*") "\n")
7606 ((".*pry.*") "\n")
7607 ((".*yaml.*") "\n")
7608 ((".*bcat.*") "\n")
7609 ((".*kramdown.*") "\n")
7610 ((".*rubocop.*") "\n")
7611 ((".*cucumber-pro.*") "\n")
7612 ((".*cucumber.*") "\n")
7613 ((".*license_finder.*") "\n")
7614 ((".*rake.*") "gem 'rake'\n")
7615 ((".*relish.*") "\n"))
7616 (substitute* "aruba.gemspec"
7617 (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
7618 "spec.add_runtime_dependency 'cucumber'"))
7619 #t))
7620 (add-before 'check 'set-home
7621 (lambda _ (setenv "HOME" "/tmp") #t)))))
7622 (native-inputs
7623 `(("bundler" ,bundler)
7624 ("ruby-rspec" ,ruby-rspec)
7625 ("ruby-fuubar" ,ruby-fuubar)
7626 ("ruby-simplecov" ,ruby-simplecov)))
7627 (propagated-inputs
7628 `(("ruby-childprocess" ,ruby-childprocess)
7629 ("ruby-contracts" ,ruby-contracts)
7630 ("ruby-cucumber" ,ruby-cucumber)
7631 ("ruby-ffi" ,ruby-ffi)
7632 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
7633 ("ruby-thor" ,ruby-thor)
7634 ("ruby-yard" ,ruby-yard)))
7635 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
7636 (description
7637 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
7638 command-line applications. It supports applications written in any
7639 language.")
7640 (home-page "https://github.com/cucumber/aruba")
7641 (license license:expat)))
7642
7643 ;; A version of ruby-aruba without tests run so that circular dependencies can
7644 ;; be avoided.
7645 (define ruby-aruba-without-tests
7646 (package
7647 (inherit ruby-aruba)
7648 (arguments '(#:tests? #f))
7649 (propagated-inputs
7650 `(("ruby-cucumber" ,ruby-cucumber-without-tests)
7651 ,@(alist-delete "ruby-cucumber"
7652 (package-propagated-inputs ruby-aruba))))
7653 (native-inputs '())))
7654
7655 (define-public ruby-sys-uname
7656 (package
7657 (name "ruby-sys-uname")
7658 (version "1.2.1")
7659 (source
7660 (origin
7661 (method url-fetch)
7662 (uri (rubygems-uri "sys-uname" version))
7663 (sha256
7664 (base32
7665 "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0"))))
7666 (build-system ruby-build-system)
7667 (arguments
7668 `(#:test-target "spec"))
7669 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
7670 (native-inputs `(("ruby-rspec" ,ruby-rspec)))
7671 (synopsis "Ruby interface for gathering system information")
7672 (description "The sys-uname library provides an interface for gathering
7673 information about your current platform. It allows retrieving information
7674 such as the OS name, OS version, system name, etc.")
7675 (home-page "https://github.com/djberg96/sys-uname")
7676 (license license:asl2.0)))
7677
7678 (define-public ruby-cucumber-create-meta
7679 (package
7680 (name "ruby-cucumber-create-meta")
7681 (version "1.0.0")
7682 (source
7683 (origin
7684 (method url-fetch)
7685 (uri (rubygems-uri "cucumber-create-meta" version))
7686 (sha256
7687 (base32
7688 "0i0i3arymjrnjk72mg79w1a11607x4d0lrqafm9sz2gq9l52zasw"))))
7689 (build-system ruby-build-system)
7690 (arguments
7691 `(#:phases (modify-phases %standard-phases
7692 (add-after 'extract-gemspec 'relax-version-requirements
7693 (lambda _
7694 (substitute* ".gemspec"
7695 ((" 12\\.2")
7696 " 12.1"))
7697 #t))
7698 (replace 'check
7699 (lambda _
7700 (invoke "rspec"))))))
7701 (native-inputs
7702 `(("ruby-rspec" ,ruby-rspec)))
7703 (propagated-inputs
7704 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
7705 ("ruby-sys-uname" ,ruby-sys-uname)))
7706 (synopsis "Function to create @code{Meta} messages for Cucumber Ruby")
7707 (description "The @code{createMeta} utility function allows generating
7708 system-specific @code{Meta} messages for Cucumber Ruby.")
7709 (home-page "https://github.com/cucumber/cucumber/tree/master/create-meta/ruby")
7710 (license license:expat)))
7711
7712 (define-public ruby-cucumber-html-formatter
7713 (package
7714 (name "ruby-cucumber-html-formatter")
7715 (version "7.0.0")
7716 (source
7717 (origin
7718 (method url-fetch)
7719 (uri (rubygems-uri "cucumber-html-formatter" version))
7720 (sha256
7721 (base32
7722 "0lshj4sw9jw7687wrhknyb9kffblai3l843zgrznyqij3ga0bc62"))))
7723 (build-system ruby-build-system)
7724 (arguments
7725 `(#:phases (modify-phases %standard-phases
7726 (replace 'check
7727 (lambda _
7728 (invoke "rspec"))))))
7729 (native-inputs
7730 `(("ruby-rspec" ,ruby-rspec)))
7731 (propagated-inputs
7732 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)))
7733 (synopsis "HTML formatter for Cucumber")
7734 (description "Cucumber HTML Formatter produces a HTML report for Cucumber
7735 runs. It is built on top of cucumber-react and works with any Cucumber
7736 implementation with a protocol buffer formatter that outputs Cucumber
7737 messages.")
7738 (home-page "https://github.com/cucumber/cucumber/tree/\
7739 master/html-formatter/ruby")
7740 (license license:expat)))
7741
7742 (define-public ruby-cucumber
7743 (package
7744 (name "ruby-cucumber")
7745 (version "4.1.0")
7746 (source
7747 (origin
7748 (method git-fetch)
7749 (uri (git-reference
7750 (url "https://github.com/cucumber/cucumber-ruby")
7751 (commit (string-append "v" version))))
7752 (file-name (git-file-name name version))
7753 (sha256
7754 (base32
7755 "0g9rqfslbzkkrq2kvl14fgknrhfbji3bjjpjxff5nc9wzd3hd549"))))
7756 (build-system ruby-build-system)
7757 (arguments
7758 '(#:test-target "default"
7759 #:phases
7760 (modify-phases %standard-phases
7761 (add-after 'unpack 'disable-rubocop
7762 ;; Rubocop lint check fails with our more recent version.
7763 (lambda _
7764 (substitute* "Rakefile"
7765 (("spec cucumber rubocop")
7766 "spec cucumber"))
7767 #t))
7768 (add-after 'extract-gemspec 'strip-version-requirements
7769 (lambda _
7770 (delete-file "Gemfile") ;do not use Bundler
7771 (substitute* "cucumber.gemspec"
7772 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
7773 (string-append stripped "\n")))
7774 #t))
7775 (add-before 'check 'set-home
7776 (lambda _
7777 (setenv "HOME" (getcwd))
7778 #t)))))
7779 (propagated-inputs
7780 `(("ruby-builder" ,ruby-builder)
7781 ("ruby-cucumber-core" ,ruby-cucumber-core)
7782 ("ruby-cucumber-create-meta" ,ruby-cucumber-create-meta)
7783 ("ruby-cucumber-html-formatter" ,ruby-cucumber-html-formatter)
7784 ("ruby-cucumber-messages" ,ruby-cucumber-messages)
7785 ("ruby-cucumber-wire" ,ruby-cucumber-wire)
7786 ("ruby-diff-lcs" ,ruby-diff-lcs)
7787 ("ruby-gherkin" ,ruby-gherkin)
7788 ("ruby-multi-json" ,ruby-multi-json)
7789 ("ruby-multi-test" ,ruby-multi-test)))
7790 (native-inputs
7791 `(;; Use a untested version of aruba, to avoid a circular dependency, as
7792 ;; ruby-aruba depends on ruby-cucumber.
7793 ("ruby-aruba", ruby-aruba-without-tests)
7794 ("ruby-rspec" ,ruby-rspec)
7795 ("ruby-pry" ,ruby-pry)
7796 ("ruby-nokogiri" ,ruby-nokogiri)
7797 ("ruby-rubocop" ,ruby-rubocop)))
7798 (synopsis "Describe automated tests in plain language")
7799 (description "Cucumber is a tool for running automated tests written in
7800 plain language. It's designed to support a Behaviour Driven Development (BDD)
7801 software development workflow.")
7802 (home-page "https://cucumber.io/")
7803 (license license:expat)))
7804
7805 (define ruby-cucumber-without-tests
7806 (package (inherit ruby-cucumber)
7807 (arguments
7808 '(#:tests? #f))
7809 (native-inputs
7810 '())))
7811
7812 (define-public ruby-coveralls
7813 (package
7814 (name "ruby-coveralls")
7815 (version "0.8.23")
7816 (source
7817 (origin
7818 (method url-fetch)
7819 (uri (rubygems-uri "coveralls" version))
7820 (sha256
7821 (base32
7822 "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc"))))
7823 (build-system ruby-build-system)
7824 ;; The test suite depends on ruby-vcr, which cannot be included in Guix
7825 ;; because of its nonfree, Hippocratic-derived license.
7826 (arguments
7827 `(#:tests? #f
7828 #:phases (modify-phases %standard-phases
7829 (add-after 'extract-gemspec 'strip-version-requirements
7830 ;; Keeping strict version requirements can cause problems
7831 ;; to users of the library, such as: Gem::ConflictError:
7832 ;; Unable to activate coveralls-0.8.23, because
7833 ;; simplecov-0.17.1 conflicts with simplecov (~> 0.16.1).
7834 (lambda _
7835 (substitute* "coveralls-ruby.gemspec"
7836 (("(.*add_.*dependency\\([^,]+), .*" _ stripped)
7837 (string-append stripped ")\n")))
7838 #t)))))
7839 (propagated-inputs
7840 `(("ruby-json" ,ruby-json)
7841 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
7842 ("ruby-thor" ,ruby-thor)
7843 ("ruby-tins" ,ruby-tins)))
7844 (synopsis "Ruby implementation of the Coveralls API")
7845 (description "This package provides a Ruby implementation of the Coveralls
7846 API.")
7847 (home-page "https://coveralls.io")
7848 (license license:expat)))
7849
7850 (define-public ruby-unindent
7851 (package
7852 (name "ruby-unindent")
7853 (version "1.0")
7854 (source
7855 (origin
7856 (method url-fetch)
7857 (uri (rubygems-uri "unindent" version))
7858 (sha256
7859 (base32
7860 "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd"))))
7861 (build-system ruby-build-system)
7862 (synopsis "Ruby method to unindent strings")
7863 (description "This module provides a @code{String#unindent} Ruby method to
7864 unindent strings, which can be useful to unindent multiline strings embedded
7865 in already-indented code.")
7866 (home-page "https://github.com/mynyml/unindent")
7867 (license license:expat)))
7868
7869 (define-public ruby-cucumber-core
7870 (package
7871 (name "ruby-cucumber-core")
7872 (version "7.1.0")
7873 (source
7874 (origin
7875 (method git-fetch)
7876 (uri (git-reference
7877 (url "https://github.com/cucumber/cucumber-ruby-core")
7878 (commit (string-append "v" version))))
7879 (file-name (git-file-name name version))
7880 (sha256
7881 (base32
7882 "1p5wb6wbggbw37ariyag4kxpiczznvgm3c8cnz1744dmbj79q1rn"))))
7883 (build-system ruby-build-system)
7884 (arguments
7885 `(#:test-target "spec"
7886 #:phases
7887 (modify-phases %standard-phases
7888 (add-after 'extract-gemspec 'relax-version-requirements
7889 (lambda _
7890 (substitute* "cucumber-core.gemspec"
7891 (("'cucumber-tag-expressions',.*")
7892 "'cucumber-tag-expressions', '>=2.0.0'\n"))
7893 #t)))))
7894 (native-inputs
7895 `(("ruby-rspec" ,ruby-rspec)
7896 ("ruby-coveralls" ,ruby-coveralls)
7897 ("ruby-rubocop" ,ruby-rubocop)
7898 ("ruby-simplecov" ,ruby-simplecov)
7899 ("ruby-unindent" ,ruby-unindent)))
7900 (propagated-inputs
7901 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
7902 ("ruby-gherkin" ,ruby-gherkin)
7903 ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
7904 (synopsis "Core library for the Cucumber BDD app")
7905 (description "Cucumber is a tool for running automated tests
7906 written in plain language. Because they're written in plain language,
7907 they can be read by anyone on your team. Because they can be read by
7908 anyone, you can use them to help improve communication, collaboration
7909 and trust on your team.")
7910 (home-page "https://cucumber.io/")
7911 (license license:expat)))
7912
7913 (define-public ruby-cucumber-expressions
7914 (package
7915 (name "ruby-cucumber-expressions")
7916 (version "10.2.0")
7917 (source
7918 (origin
7919 (method git-fetch)
7920 (uri (git-reference
7921 (url "https://github.com/cucumber/cucumber-expressions-ruby")
7922 (commit (string-append "v" version))))
7923 (file-name (git-file-name name version))
7924 (sha256
7925 (base32
7926 "1aivhcpjrmbvp9bg0y7g6zxh2swfvylvg0sapq5jc4i1y74k8npd"))))
7927 (build-system ruby-build-system)
7928 (arguments
7929 '(#:test-target "spec"))
7930 (native-inputs
7931 `(("ruby-rspec" ,ruby-rspec)
7932 ("ruby-simplecov" ,ruby-simplecov)))
7933 (synopsis "Simpler alternative to Regular Expressions")
7934 (description "Cucumber Expressions offer similar functionality to Regular
7935 Expressions, with a syntax that is easier to read and write. Cucumber
7936 Expressions are extensible with parameter types.")
7937 (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
7938 (license license:expat)))
7939
7940 (define-public ruby-cucumber-wire
7941 (package
7942 (name "ruby-cucumber-wire")
7943 (version "3.1.0")
7944 (source
7945 (origin
7946 (method url-fetch)
7947 (uri (rubygems-uri "cucumber-wire" version))
7948 (sha256
7949 (base32
7950 "0z1n13lqv70zb2lcrvs2263lm0gsb3gz8gbv890kxzwp8cvd433k"))))
7951 (build-system ruby-build-system)
7952 (arguments
7953 '(#:tests? #f ;tests use cucumber, causing a cycle
7954 #:phases
7955 (modify-phases %standard-phases
7956 (add-after 'extract-gemspec 'relax-version-requirements
7957 (lambda _
7958 (substitute* ".gemspec"
7959 ((" 10\\.1") " 10.2"))
7960 #t)))))
7961 (propagated-inputs
7962 `(("ruby-cucumber-core" ,ruby-cucumber-core)
7963 ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
7964 ("ruby-cucumber-messages" ,ruby-cucumber-messages)))
7965 (synopsis "Cucumber wire protocol plugin")
7966 (description "Cucumber's wire protocol allows step definitions to be
7967 implemented and invoked on any platform.")
7968 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
7969 (license license:expat)))
7970
7971 (define-public ruby-cucumber-tag-expressions
7972 (package
7973 (name "ruby-cucumber-tag-expressions")
7974 (version "3.0.0")
7975 (source
7976 (origin
7977 (method git-fetch)
7978 (uri (git-reference
7979 (url "https://github.com/cucumber/tag-expressions-ruby")
7980 (commit (string-append "v" version))))
7981 (file-name (git-file-name name version))
7982 (sha256
7983 (base32
7984 "15dw4w0npd4m6aw7zhqkjxxzngp42kswrkwfygxkxcxnhy5zl1vx"))))
7985 (build-system ruby-build-system)
7986 (arguments
7987 `(#:test-target "spec"))
7988 (native-inputs
7989 `(("ruby-rspec" ,ruby-rspec)))
7990 (synopsis "Cucumber tag expressions for Ruby")
7991 (description "Cucumber tag expression parser for Ruby. A tag expression
7992 is an infix boolean expression used by Cucumber.")
7993 (home-page "https://github.com/cucumber/tag-expressions-ruby")
7994 (license license:expat)))
7995
7996 (define-public ruby-bindex
7997 (package
7998 (name "ruby-bindex")
7999 (version "0.5.0")
8000 (source
8001 (origin
8002 (method url-fetch)
8003 (uri (rubygems-uri "bindex" version))
8004 (sha256
8005 (base32
8006 "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
8007 (build-system ruby-build-system)
8008 (arguments
8009 '(#:test-target "default"))
8010 (native-inputs
8011 `(("bundler" ,bundler)
8012 ("ruby-rake-compiler" ,ruby-rake-compiler)))
8013 (synopsis "Provides access for bindings relating to Ruby exceptions")
8014 (description
8015 "@code{bindex} provides a way to access the bindings that relate to
8016 exceptions in Ruby, providing more information about the context in which the
8017 exception occurred.")
8018 (home-page "https://github.com/gsamokovarov/bindex")
8019 (license license:expat)))
8020
8021 (define-public ruby-bio-logger
8022 (package
8023 (name "ruby-bio-logger")
8024 (version "1.0.1")
8025 (source
8026 (origin
8027 (method url-fetch)
8028 (uri (rubygems-uri "bio-logger" version))
8029 (sha256
8030 (base32
8031 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
8032 (build-system ruby-build-system)
8033 (arguments
8034 `(#:tests? #f)) ; rake errors, missing shoulda
8035 (propagated-inputs
8036 `(("ruby-log4r" ,ruby-log4r)))
8037 (synopsis "Log4r wrapper for Ruby")
8038 (description "Bio-logger is a wrapper around Log4r adding extra logging
8039 features such as filtering and fine grained logging.")
8040 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
8041 (license license:expat)))
8042
8043 (define-public ruby-yajl-ruby
8044 (package
8045 (name "ruby-yajl-ruby")
8046 (version "1.4.1")
8047 (source
8048 (origin
8049 (method url-fetch)
8050 (uri (rubygems-uri "yajl-ruby" version))
8051 (sha256
8052 (base32
8053 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
8054 (build-system ruby-build-system)
8055 (arguments
8056 '(#:test-target "spec"
8057 #:phases
8058 (modify-phases %standard-phases
8059 (add-before 'check 'patch-test-to-update-load-path
8060 (lambda _
8061 (substitute* "spec/parsing/large_number_spec.rb"
8062 (("require \"yajl\"")
8063 "$LOAD_PATH << 'lib'; require 'yajl'"))
8064 #t)))))
8065 (native-inputs
8066 `(("ruby-rake-compiler" ,ruby-rake-compiler)
8067 ("ruby-rspec" ,ruby-rspec)))
8068 (synopsis "Streaming JSON parsing and encoding library for Ruby")
8069 (description
8070 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
8071 is compatible with the JSON gem, so yajl-ruby can act as a drop in
8072 replacement.
8073
8074 A modified copy of yajl is used, and included in the package.")
8075 (home-page "https://github.com/brianmario/yajl-ruby")
8076 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
8077 license:bsd-3)))) ; Included, modified copy of yajl
8078
8079 (define-public ruby-yard
8080 (package
8081 (name "ruby-yard")
8082 (version "0.9.25")
8083 (source
8084 (origin
8085 (method git-fetch)
8086 ;; Tests do not pass if we build from the distributed gem.
8087 (uri (git-reference
8088 (url "https://github.com/lsegal/yard")
8089 (commit (string-append "v" version))))
8090 (file-name (git-file-name name version))
8091 (sha256
8092 (base32
8093 "1x7y4s557hrnq439lih7nqg1y7ximardw75jx9i92x3yzpviqqwa"))))
8094 (build-system ruby-build-system)
8095 (arguments
8096 ;; Note: Tests are willfully disabled to alleviate dependency cycle
8097 ;; problems.
8098 `(#:tests? #f
8099 #:phases (modify-phases %standard-phases
8100 (add-after 'unpack 'do-not-set-date-in-gemspec
8101 ;; Fix a reproducibility issue (see:
8102 ;; https://github.com/lsegal/yard/issues/1343).
8103 (lambda _
8104 (substitute* "yard.gemspec"
8105 ((".*s\\.date.*") ""))
8106 #t)))))
8107 (synopsis "Documentation generation tool for Ruby")
8108 (description "YARD is a documentation generation tool for the Ruby
8109 programming language. It enables the user to generate consistent, usable
8110 documentation that can be exported to a number of formats very easily, and
8111 also supports extending for custom Ruby constructs such as custom class level
8112 definitions.")
8113 (home-page "https://yardoc.org")
8114 (license license:expat)))
8115
8116 (define-public ruby-yard-with-tests
8117 (package
8118 (inherit ruby-yard)
8119 (name "ruby-yard-with-tests")
8120 (arguments
8121 (substitute-keyword-arguments (package-arguments ruby-yard)
8122 ((#:tests? _ #t) #t)
8123 ((#:test-target _ "default") "default")
8124 ((#:phases phases '%standard-phases)
8125 `(modify-phases ,phases
8126 (add-before 'check 'prepare-for-tests
8127 (lambda* (#:key tests? #:allow-other-keys)
8128 (when tests?
8129 (substitute* "Rakefile"
8130 ((".*[Ss]amus.*") ""))
8131 ;; Delete the Gemfile to avoid errors relating to it.
8132 (delete-file "Gemfile")
8133 ;; $HOME needs to be set to somewhere writeable for tests to
8134 ;; run.
8135 (setenv "HOME" "/tmp"))
8136 #t))))))
8137 (native-inputs
8138 `(("ruby-rspec" ,ruby-rspec)
8139 ("ruby-rack" ,ruby-rack)
8140 ("ruby-redcloth" ,ruby-redcloth)
8141 ("ruby-asciidoc" ,ruby-asciidoctor)))))
8142
8143 (define-public ruby-spectroscope
8144 (package
8145 (name "ruby-spectroscope")
8146 (version "0.1.0")
8147 (source
8148 (origin
8149 (method url-fetch)
8150 (uri (rubygems-uri "spectroscope" version))
8151 (sha256
8152 (base32
8153 "0iiid9sm110qhx0i1zkds710cvsnmhd308wbqa7slkzbq2akrb3y"))))
8154 (build-system ruby-build-system)
8155 (arguments
8156 `(#:phases
8157 (modify-phases %standard-phases
8158 (replace 'check
8159 (lambda _
8160 (with-output-to-file ".test"
8161 (lambda _
8162 (display
8163 "\
8164 require 'ae/should'
8165 require 'rspec'
8166
8167 include RSpec
8168
8169 Test.run :default do |run|
8170 run.files << 'spec/*_spec.rb'
8171 end")))
8172 (invoke "ruby" "-Ilib" "-rrubytest" ".test"))))))
8173 (native-inputs
8174 `(("ruby-ae" ,ruby-ae)
8175 ("ruby-rspec" ,ruby-rspec)))
8176 (propagated-inputs
8177 `(("ruby-rubytest" ,ruby-rubytest)))
8178 (synopsis "Behavior-Driven Development (BDD) framework built on RubyTest")
8179 (description "Spectroscope is a Behavior-Driven Development (BDD)
8180 framework built on RubyTest, designed to emulate RSpec in most respects. It
8181 is assertion framework independent so any number of assertion systems can be
8182 used, such as Assay or AE.")
8183 (home-page "http://rubyworks.github.com/spectroscope/")
8184 (license license:bsd-2)))
8185
8186 (define-public ruby-tomparse
8187 (package
8188 (name "ruby-tomparse")
8189 (version "0.4.2")
8190 (source
8191 (origin
8192 (method url-fetch)
8193 (uri (rubygems-uri "tomparse" version))
8194 (sha256
8195 (base32
8196 "06xakk41f1kgj6j1ahkwn4r6cvidixvm4phhlrvmwb7c3pr8ygc8"))))
8197 (build-system ruby-build-system)
8198 ;; TODO: Tests require citron and rulebow, not yet packaged.
8199 (arguments '(#:tests? #f))
8200 (synopsis "TomDoc parser for Ruby")
8201 (description "TomParse is a TomDoc parser for Ruby. It takes a code
8202 comment as input and parses it into a convenient object-oriented structure in
8203 accordance with the TomDoc standard. See
8204 @url{https://github.com/mojombo/tomdoc, TomDoc} for more information about the
8205 TomDoc format.")
8206 (home-page "http://rubyworks.github.com/tomparse/")
8207 (license license:bsd-2)))
8208
8209 (define-public ruby-yard-tomdoc
8210 (package
8211 (name "ruby-yard-tomdoc")
8212 (version "0.7.1")
8213 (source
8214 (origin
8215 (method url-fetch)
8216 (uri (rubygems-uri "yard-tomdoc" version))
8217 (sha256
8218 (base32
8219 "1725gs8b8klpwhrvnf2wwp7dw3zxs9vz2la983l2d8c4r4fn1j2z"))))
8220 (build-system ruby-build-system)
8221 (arguments
8222 `(#:phases (modify-phases %standard-phases
8223 (replace 'check
8224 (lambda _
8225 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
8226 (native-inputs
8227 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
8228 ("ruby-spectroscope" ,ruby-spectroscope)
8229 ("ruby-ae" ,ruby-ae)))
8230 (propagated-inputs
8231 `(("ruby-tomparse" ,ruby-tomparse)
8232 ("ruby-yard" ,ruby-yard)))
8233 (synopsis "TomDoc syntax for YARD")
8234 (description "This module adds support for the TomDoc documentation format
8235 to YARD, a documentation generation tool for Ruby.")
8236 (home-page "http://rubyworks.github.com/yard-tomdoc/")
8237 (license license:expat)))
8238
8239 (define-public ruby-clap
8240 (package
8241 (name "ruby-clap")
8242 (version "1.0.0")
8243 (source (origin
8244 (method url-fetch)
8245 (uri (rubygems-uri "clap" version))
8246 (sha256
8247 (base32
8248 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
8249 (build-system ruby-build-system)
8250 ;; Clap needs cutest for running tests, but cutest needs clap.
8251 (arguments `(#:tests? #f))
8252 (synopsis "Command line argument parsing for simple applications")
8253 (description
8254 "Clap provides command line argument parsing features. It covers the
8255 simple case of executing code based on the flags or parameters passed.")
8256 (home-page "https://github.com/djanowski/cutest")
8257 (license license:expat)))
8258
8259 (define-public ruby-cutest
8260 (package
8261 (name "ruby-cutest")
8262 (version "1.2.2")
8263 (source (origin
8264 (method url-fetch)
8265 (uri (rubygems-uri "cutest" version))
8266 (sha256
8267 (base32
8268 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
8269 (build-system ruby-build-system)
8270 (propagated-inputs
8271 `(("ruby-clap" ,ruby-clap)))
8272 (synopsis "Run tests in separate processes")
8273 (description
8274 "Cutest runs tests in separate processes to avoid shared state.")
8275 (home-page "https://github.com/djanowski/cutest")
8276 (license license:expat)))
8277
8278 (define-public ruby-pygmentize
8279 (package
8280 (name "ruby-pygmentize")
8281 (version "0.0.3")
8282 (source (origin
8283 (method url-fetch)
8284 (uri (rubygems-uri "pygmentize" version))
8285 (sha256
8286 (base32
8287 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
8288 (build-system ruby-build-system)
8289 (arguments
8290 `(#:phases
8291 (modify-phases %standard-phases
8292 (add-after 'unpack 'fix-pygmentize-path
8293 (lambda _
8294 (substitute* "lib/pygmentize.rb"
8295 (("\"/usr/bin/env python.*")
8296 (string-append "\"" (which "pygmentize") "\"\n")))
8297 #t))
8298 (add-after 'build 'do-not-use-vendor-directory
8299 (lambda _
8300 ;; Remove bundled pygments sources
8301 ;; FIXME: ruby-build-system does not support snippets.
8302 (delete-file-recursively "vendor")
8303 (substitute* "pygmentize.gemspec"
8304 (("\"vendor/\\*\\*/\\*\",") ""))
8305 #t)))))
8306 (inputs
8307 `(("pygments" ,python-pygments)))
8308 (native-inputs
8309 `(("ruby-cutest" ,ruby-cutest)
8310 ("ruby-nokogiri" ,ruby-nokogiri)))
8311 (synopsis "Thin Ruby wrapper around pygmentize")
8312 (description
8313 "Pygmentize provides a simple way to call pygmentize from within a Ruby
8314 application.")
8315 (home-page "https://github.com/djanowski/pygmentize")
8316 (license license:expat)))
8317
8318 (define-public ruby-eventmachine
8319 (package
8320 (name "ruby-eventmachine")
8321 (version "1.2.7")
8322 (source
8323 (origin
8324 (method url-fetch)
8325 (uri (rubygems-uri "eventmachine" version))
8326 (sha256
8327 (base32
8328 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
8329 (build-system ruby-build-system)
8330 (arguments
8331 '(#:tests? #f)) ; test suite tries to connect to google.com
8332 (native-inputs
8333 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
8334 (synopsis "Single-threaded network event framework for Ruby")
8335 (description
8336 "EventMachine implements a single-threaded engine for arbitrary network
8337 communications. EventMachine wraps all interactions with sockets, allowing
8338 programs to concentrate on the implementation of network protocols. It can be
8339 used to create both network servers and clients.")
8340 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
8341 (home-page "https://github.com/eventmachine/eventmachine")
8342 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
8343
8344 (define-public ruby-ruby-engine
8345 (package
8346 (name "ruby-ruby-engine")
8347 (version "2.0.0")
8348 (source
8349 (origin
8350 (method url-fetch)
8351 (uri (rubygems-uri "ruby_engine" version))
8352 (sha256
8353 (base32
8354 "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm"))))
8355 (build-system ruby-build-system)
8356 (arguments
8357 `(#:phases
8358 (modify-phases %standard-phases
8359 (add-after 'extract-gemspec 'clean-up
8360 (lambda _
8361 (delete-file "Gemfile.lock")
8362 (substitute* "ruby_engine.gemspec"
8363 ;; Remove unnecessary imports that would entail further
8364 ;; dependencies.
8365 ((".*<rdoc.*") "")
8366 ((".*<rubygems-tasks.*") "")
8367 ;; Remove extraneous .gem file
8368 (("\"pkg/ruby_engine-[0-9.]+\\.gem\".freeze, ") "")
8369 (("\"Gemfile.lock\".freeze, ") "")
8370 ;; Soften rake dependency
8371 (("%q<rake>.freeze, \\[\"~> 10.0\"\\]")
8372 "%q<rake>.freeze, [\">= 10.0\"]")
8373 ;; Soften the rspec dependency
8374 (("%q<rspec>.freeze, \\[\"~> 2.4\"\\]")
8375 "%q<rspec>.freeze, [\">= 2.4\"]"))
8376 (substitute* "Rakefile"
8377 (("require 'rubygems/tasks'") "")
8378 (("Gem::Tasks.new") ""))
8379 ;; Remove extraneous .gem file that otherwise gets installed.
8380 (delete-file-recursively "pkg")
8381 #t)))))
8382 (native-inputs
8383 `(("bundler" ,bundler)
8384 ("ruby-rake" ,ruby-rake)
8385 ("ruby-rspec" ,ruby-rspec)))
8386 (synopsis "Simplifies checking for Ruby implementation")
8387 (description
8388 "@code{ruby_engine} provides an RubyEngine class that can be used to
8389 check which implementation of Ruby is in use. It can provide the interpreter
8390 name and provides query methods such as @{RubyEngine.mri?}.")
8391 (home-page "https://github.com/janlelis/ruby_engine")
8392 (license license:expat)))
8393
8394 (define-public ruby-turn
8395 (package
8396 (name "ruby-turn")
8397 (version "0.9.7")
8398 (source
8399 (origin
8400 (method url-fetch)
8401 (uri (rubygems-uri "turn" version))
8402 (sha256
8403 (base32
8404 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
8405 (build-system ruby-build-system)
8406 (arguments
8407 `(#:phases
8408 (modify-phases %standard-phases
8409 ;; Tests fail because turn changes its environment so can no longer
8410 ;; find test/unit. Instead simply test if the executable runs
8411 ;; without issue.
8412 (replace 'check
8413 (lambda _
8414 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
8415 (propagated-inputs
8416 `(("ruby-ansi" ,ruby-ansi)
8417 ("ruby-minitest" ,ruby-minitest-4)))
8418 (synopsis "Alternate set of alternative runners for MiniTest")
8419 (description
8420 "TURN provides a set of alternative runners for MiniTest which are both
8421 colorful and informative. TURN displays each test on a separate line with
8422 failures being displayed immediately instead of at the end of the tests. Note
8423 that TURN is no longer being maintained.")
8424 (home-page "https://rubygems.org/gems/turn")
8425 (license license:expat)))
8426
8427 (define-public ruby-mimemagic
8428 (package
8429 (name "ruby-mimemagic")
8430 (version "0.3.3")
8431 (source
8432 (origin
8433 (method url-fetch)
8434 (uri (rubygems-uri "mimemagic" version))
8435 (sha256
8436 (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw"))))
8437 (build-system ruby-build-system)
8438 (arguments
8439 '(#:phases
8440 (modify-phases %standard-phases
8441 ;; This phase breaks the tests, as it patches some of the test data.
8442 (delete 'patch-source-shebangs))))
8443 (native-inputs
8444 `(("ruby-bacon" ,ruby-bacon)))
8445 (synopsis "Ruby library for MIME detection by extension or content")
8446 (description
8447 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
8448 extension or content, using the freedesktop.org.xml shared-mime-info
8449 database.")
8450 (home-page "https://github.com/minad/mimemagic")
8451 (license license:expat)))
8452
8453 (define-public ruby-mime-types-data
8454 (package
8455 (name "ruby-mime-types-data")
8456 (version "3.2016.0521")
8457 (source
8458 (origin
8459 (method url-fetch)
8460 (uri (rubygems-uri "mime-types-data" version))
8461 (sha256
8462 (base32
8463 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
8464 (build-system ruby-build-system)
8465 (native-inputs
8466 `(("ruby-hoe" ,ruby-hoe)))
8467 (synopsis "Registry for information about MIME media type definitions")
8468 (description
8469 "@code{mime-types-data} provides a registry for information about
8470 Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
8471 be used with the Ruby mime-types library or other software to determine
8472 defined filename extensions for MIME types, or to use filename extensions to
8473 look up the likely MIME type definitions.")
8474 (home-page "https://github.com/mime-types/mime-types-data/")
8475 (license license:expat)))
8476
8477 (define-public ruby-mime-types
8478 (package
8479 (name "ruby-mime-types")
8480 (version "3.1")
8481 (source
8482 (origin
8483 (method url-fetch)
8484 (uri (rubygems-uri "mime-types" version))
8485 (sha256
8486 (base32
8487 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
8488 (build-system ruby-build-system)
8489 (propagated-inputs
8490 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
8491 (native-inputs
8492 `(("ruby-hoe" ,ruby-hoe)
8493 ("ruby-fivemat" ,ruby-fivemat)
8494 ("ruby-minitest-focus" ,ruby-minitest-focus)
8495 ("ruby-minitest-rg" ,ruby-minitest-rg)
8496 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
8497 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
8498 (synopsis "Library and registry for MIME content type definitions")
8499 (description "The mime-types library provides a library and registry for
8500 information about Multipurpose Internet Mail Extensions (MIME) content type
8501 definitions. It can be used to determine defined filename extensions for MIME
8502 types, or to use filename extensions to look up the likely MIME type
8503 definitions.")
8504 (home-page "https://github.com/mime-types/ruby-mime-types")
8505 (license license:expat)))
8506
8507 (define-public ruby-fivemat
8508 (package
8509 (name "ruby-fivemat")
8510 (version "1.3.7")
8511 (source
8512 (origin
8513 (method url-fetch)
8514 (uri (rubygems-uri "fivemat" version))
8515 (sha256
8516 (base32
8517 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
8518 (build-system ruby-build-system)
8519 (arguments
8520 `(#:tests? #f)) ; no tests
8521 (synopsis "Each test file given its own line of dots")
8522 (description
8523 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
8524 its own line of dots during testing. It aims to provide test output that is
8525 neither too verbose nor too minimal.")
8526 (home-page "https://github.com/tpope/fivemat")
8527 (license license:expat)))
8528
8529 (define-public ruby-sqlite3
8530 (package
8531 (name "ruby-sqlite3")
8532 (version "1.4.2")
8533 (source
8534 (origin
8535 (method url-fetch)
8536 (uri (rubygems-uri "sqlite3" version))
8537 (sha256
8538 (base32
8539 "0lja01cp9xd5m6vmx99zwn4r7s97r1w5cb76gqd8xhbm1wxyzf78"))))
8540 (build-system ruby-build-system)
8541 (arguments
8542 `(#:phases
8543 (modify-phases %standard-phases
8544 (add-before 'check 'add-gemtest-file
8545 ;; This file exists in the repository but is not distributed.
8546 (lambda _ (invoke "touch" ".gemtest"))))))
8547 (inputs
8548 `(("sqlite" ,sqlite)))
8549 (native-inputs
8550 `(("ruby-hoe" ,ruby-hoe)
8551 ("ruby-rake-compiler" ,ruby-rake-compiler)
8552 ("ruby-mini-portile" ,ruby-mini-portile)))
8553 (synopsis "Interface with SQLite3 databases")
8554 (description
8555 "This module allows Ruby programs to interface with the SQLite3 database
8556 engine.")
8557 (home-page
8558 "https://github.com/sparklemotion/sqlite3-ruby")
8559 (license license:bsd-3)))
8560
8561 (define-public ruby-shoulda-context
8562 (package
8563 (name "ruby-shoulda-context")
8564 (version "1.2.2")
8565 (source
8566 (origin
8567 (method url-fetch)
8568 (uri (rubygems-uri "shoulda-context" version))
8569 (sha256
8570 (base32
8571 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
8572 (build-system ruby-build-system)
8573 (arguments
8574 `(#:phases
8575 (modify-phases %standard-phases
8576 (replace 'check
8577 (lambda _
8578 ;; Do not run tests to avoid circular dependence with rails.
8579 ;; Instead just import the library to test.
8580 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
8581 (synopsis "Test::Unit context framework extracted from Shoulda")
8582 (description
8583 "@code{shoulda-context} is the context framework extracted from Shoulda.
8584 Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
8585 context, setup, and should blocks combine to produce natural test method
8586 names.")
8587 (home-page "https://github.com/thoughtbot/shoulda-context")
8588 (license license:expat)))
8589
8590 (define-public ruby-shoulda-matchers
8591 (package
8592 (name "ruby-shoulda-matchers")
8593 (version "3.1.2")
8594 (source
8595 (origin
8596 (method url-fetch)
8597 (uri (rubygems-uri "shoulda-matchers" version))
8598 (sha256
8599 (base32
8600 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
8601 (build-system ruby-build-system)
8602 (arguments
8603 `(#:phases
8604 (modify-phases %standard-phases
8605 (replace 'check
8606 (lambda _
8607 ;; Do not run tests to avoid circular dependence with rails. Instead
8608 ;; just import the library to test.
8609 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
8610 (propagated-inputs
8611 `(("ruby-activesupport" ,ruby-activesupport)))
8612 (synopsis "Collection of testing matchers extracted from Shoulda")
8613 (description
8614 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
8615 test common Rails functionality. These tests would otherwise be much longer,
8616 more complex, and error-prone.")
8617 (home-page "https://github.com/thoughtbot/shoulda-matchers")
8618 (license license:expat)))
8619
8620 (define-public ruby-shoulda-matchers-2
8621 (package
8622 (inherit ruby-shoulda-matchers)
8623 (version "2.8.0")
8624 (source (origin
8625 (method url-fetch)
8626 (uri (rubygems-uri "shoulda-matchers" version))
8627 (sha256
8628 (base32
8629 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
8630
8631 (define-public ruby-shoulda
8632 (package
8633 (name "ruby-shoulda")
8634 (version "3.5.0")
8635 (source
8636 (origin
8637 (method url-fetch)
8638 (uri (rubygems-uri "shoulda" version))
8639 (sha256
8640 (base32
8641 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
8642 (build-system ruby-build-system)
8643 (arguments
8644 `(#:phases
8645 (modify-phases %standard-phases
8646 (replace 'check
8647 ;; Don't run tests to avoid circular dependence with rails. Instead
8648 ;; just import the library to test.
8649 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
8650 (propagated-inputs
8651 `(("ruby-shoulda-context" ,ruby-shoulda-context)
8652 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
8653 (synopsis "Context framework and matchers for testing")
8654 (description
8655 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
8656 @code{shoulda-matchers} providing tools for writing tests.")
8657 (home-page "https://github.com/thoughtbot/shoulda")
8658 (license license:expat)))
8659
8660 (define-public ruby-unf
8661 (package
8662 (name "ruby-unf")
8663 (version "0.1.4")
8664 (source
8665 (origin
8666 (method url-fetch)
8667 (uri (rubygems-uri "unf" version))
8668 (sha256
8669 (base32
8670 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
8671 (build-system ruby-build-system)
8672 (arguments
8673 `(#:phases
8674 (modify-phases %standard-phases
8675 (add-before 'check 'add-dependency-to-bundler
8676 (lambda _
8677 ;; test-unit is required but not provided by the bundler
8678 ;; environment. This is fixed in the upstream repository but fix
8679 ;; has not been released.
8680 (substitute* "Gemfile"
8681 (("^gemspec") "gem 'test-unit'\ngemspec"))
8682 #t)))))
8683 (propagated-inputs
8684 `(("ruby-unf-ext" ,ruby-unf-ext)))
8685 (native-inputs
8686 `(("ruby-shoulda" ,ruby-shoulda)
8687 ("bundler" ,bundler)
8688 ("ruby-test-unit" ,ruby-test-unit)))
8689 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
8690 (description
8691 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
8692 support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
8693 @code{java.text.Normalizer} on JRuby.")
8694 (home-page "https://github.com/knu/ruby-unf")
8695 (license license:bsd-2)))
8696
8697 (define-public ruby-warden
8698 (package
8699 (name "ruby-warden")
8700 (version "1.2.8")
8701 (source
8702 (origin
8703 (method url-fetch)
8704 (uri (rubygems-uri "warden" version))
8705 (sha256
8706 (base32
8707 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
8708 (build-system ruby-build-system)
8709 (arguments
8710 '(#:tests? #f)) ; No included tests
8711 (propagated-inputs
8712 `(("ruby-rack" ,ruby-rack)))
8713 (synopsis "Rack middleware providing authentication")
8714 (description
8715 "Warden is a Rack-based middleware that provides a mechanism for
8716 authentication in Ruby web applications.")
8717 (home-page "https://github.com/wardencommunity/warden")
8718 (license license:expat)))
8719
8720 (define-public ruby-warden-oauth2
8721 (package
8722 (name "ruby-warden-oauth2")
8723 (version "0.0.1")
8724 (source
8725 (origin
8726 (method url-fetch)
8727 (uri (rubygems-uri "warden-oauth2" version))
8728 (sha256
8729 (base32
8730 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
8731 (build-system ruby-build-system)
8732 (arguments
8733 '(#:test-target "spec"
8734 #:phases
8735 (modify-phases %standard-phases
8736 (add-after 'unpack 'remove-unnecessary-dependencies
8737 (lambda _
8738 (substitute* "Gemfile"
8739 ;; All of these gems relate to development, and are unnecessary
8740 ;; when running the tests
8741 (("gem 'guard-bundler'") "")
8742 (("gem 'guard'") "")
8743 (("gem 'guard-rspec'") "")
8744 (("gem 'rb-fsevent'") "")
8745 (("gem 'pry'") "")
8746 (("gem 'growl'") ""))
8747 #t))
8748 ;; The test suite doesn't work with rspec@2, and this is incompatible
8749 ;; with the current version of Rake, so invoke Rspec directly
8750 (replace 'check
8751 (lambda* (#:key tests? #:allow-other-keys)
8752 (when tests?
8753 (invoke "bundle" "exec" "rspec"))
8754 #t)))))
8755 (propagated-inputs
8756 `(("ruby-warden" ,ruby-warden)))
8757 (native-inputs
8758 `(("bundler" ,bundler)
8759 ("ruby-rspec" ,ruby-rspec-2)
8760 ("ruby-rack-test" ,ruby-rack-test)))
8761 (synopsis "OAuth 2.0 strategies for Warden")
8762 (description
8763 "This library extends Warden to support OAuth 2.0 authorized API
8764 requests.")
8765 (home-page "https://github.com/opperator/warden-oauth2")
8766 (license license:expat)))
8767
8768 (define-public ruby-webmock-2
8769 (package
8770 (name "ruby-webmock")
8771 (version "2.3.2")
8772 (source
8773 (origin
8774 (method url-fetch)
8775 (uri (rubygems-uri "webmock" version))
8776 (sha256
8777 (base32
8778 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))
8779 (build-system ruby-build-system)
8780 (native-inputs
8781 `(("bundler" ,bundler)
8782 ("ruby-rspec" ,ruby-rspec)))
8783 (propagated-inputs
8784 `(("ruby-addressable" ,ruby-addressable)
8785 ("ruby-crack" ,ruby-crack)
8786 ("ruby-hashdiff" ,ruby-hashdiff)))
8787 (synopsis "Allows stubbing and setting expectations on HTTP requests")
8788 (description
8789 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
8790 requests. This is useful when testing software.")
8791 (home-page "https://github.com/bblimke/webmock")
8792 (license license:expat)))
8793
8794 (define-public ruby-unicode-display-width
8795 (package
8796 (name "ruby-unicode-display-width")
8797 (version "1.6.0")
8798 (source
8799 (origin
8800 (method url-fetch)
8801 (uri (rubygems-uri "unicode-display_width" version))
8802 (sha256
8803 (base32
8804 "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w"))))
8805 (build-system ruby-build-system)
8806 (arguments
8807 '(;; Test data not included.
8808 #:tests? #f))
8809 (synopsis "Determine the monospace display width of Ruby strings")
8810 (description
8811 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
8812 display width of strings in Ruby.")
8813 (home-page "https://github.com/janlelis/unicode-display_width")
8814 (license license:expat)))
8815
8816 ;; There is another gem called 'ruby-version' so we use an underscore in this
8817 ;; name
8818 (define-public ruby_version
8819 (package
8820 (name "ruby_version")
8821 (version "1.0.2")
8822 (source
8823 (origin
8824 (method url-fetch)
8825 (uri (rubygems-uri "ruby_version" version))
8826 (sha256
8827 (base32
8828 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
8829 (build-system ruby-build-system)
8830 (arguments
8831 `(#:phases
8832 (modify-phases %standard-phases
8833 (add-before 'check 'fix-dependencies
8834 (lambda _
8835 ;; Remove the Gemfile.lock, as we want to use Guix packages at
8836 ;; whatever versions.
8837 (delete-file "Gemfile.lock")
8838 ;; Remove the included gem files as they unnecessary.
8839 (delete-file-recursively "pkg/")
8840 ;; Accept any version of rake, rdoc and rspec
8841 (substitute* "ruby_version.gemspec"
8842 (("%q<rake.*") "%q<rake>)\n")
8843 (("%q<rdoc.*") "%q<rdoc>)\n")
8844 (("%q<rspec.*") "%q<rspec>)\n"))
8845 ;; Do not use bundler.
8846 (substitute* "Rakefile"
8847 (("Bundler\\.setup.*") "nil\n"))
8848 #t)))))
8849 (native-inputs
8850 `(("ruby-rdoc" ,ruby-rdoc)
8851 ("ruby-rspec" ,ruby-rspec)
8852 ("ruby-rubygems-tasks", ruby-rubygems-tasks)))
8853 (synopsis "Ruby library to help check the Ruby version")
8854 (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify
8855 checking for the right Ruby version in software.")
8856 (home-page "https://github.com/janlelis/ruby_version")
8857 (license license:expat)))
8858
8859 (define-public ruby-websocket-driver
8860 (package
8861 (name "ruby-websocket-driver")
8862 (version "0.7.1")
8863 (source
8864 (origin
8865 (method url-fetch)
8866 (uri (rubygems-uri "websocket-driver" version))
8867 (sha256
8868 (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2"))))
8869 (build-system ruby-build-system)
8870 (arguments
8871 '(#:tests? #f)) ; no included tests
8872 (propagated-inputs
8873 `(("ruby-websocket-extensions" ,ruby-websocket-extensions)))
8874 (synopsis "WebSocket protocol handler with pluggable I/O")
8875 (description
8876 "@code{websocket-driver} provides a complete implementation of the
8877 WebSocket protocols that can be hooked up to any TCP library")
8878 (home-page "https://github.com/faye/websocket-driver-ruby")
8879 (license license:expat)))
8880
8881 (define-public ruby-websocket-extensions
8882 (package
8883 (name "ruby-websocket-extensions")
8884 (version "0.1.3")
8885 (source
8886 (origin
8887 (method url-fetch)
8888 (uri (rubygems-uri "websocket-extensions" version))
8889 (sha256
8890 (base32
8891 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
8892 (build-system ruby-build-system)
8893 (arguments
8894 '(;; No included tests
8895 #:tests? #f))
8896 (synopsis "Generic extension manager for WebSocket connections")
8897 (description
8898 "@code{websocket-extensions} provides a container for registering
8899 extension plugins.")
8900 (home-page "https://github.com/faye/websocket-extensions-ruby")
8901 (license license:expat)))
8902
8903 (define-public ruby-domain-name
8904 (package
8905 (name "ruby-domain-name")
8906 (version "0.5.20180417")
8907 (source
8908 (origin
8909 (method url-fetch)
8910 (uri (rubygems-uri "domain_name" version))
8911 (sha256
8912 (base32
8913 "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v"))))
8914 (build-system ruby-build-system)
8915 (arguments
8916 `(#:phases
8917 (modify-phases %standard-phases
8918 (add-before 'check 'fix-versions
8919 (lambda _
8920 ;; Fix NameError that appears to already be fixed upstream.
8921 (substitute* "Rakefile"
8922 (("DomainName::VERSION")
8923 "Bundler::GemHelper.gemspec.version"))
8924 ;; Loosen unnecessarily strict test-unit version specification.
8925 (substitute* "domain_name.gemspec"
8926 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
8927 #t)))))
8928 (propagated-inputs
8929 `(("ruby-unf" ,ruby-unf)))
8930 (native-inputs
8931 `(("ruby-shoulda" ,ruby-shoulda)
8932 ("bundler" ,bundler)
8933 ("ruby-test-unit" ,ruby-test-unit)))
8934 (synopsis "Domain name manipulation library")
8935 (description
8936 "@code{domain_name} is a Domain name manipulation library. It parses a
8937 domain name ready for extracting the registered domain and TLD (Top Level
8938 Domain). It can also be used for cookie domain validation based on the Public
8939 Suffix List.")
8940 (home-page "https://github.com/knu/ruby-domain_name")
8941 (license license:bsd-2)))
8942
8943 (define-public ruby-http-cookie
8944 (package
8945 (name "ruby-http-cookie")
8946 (version "1.0.3")
8947 (source
8948 (origin
8949 (method url-fetch)
8950 (uri (rubygems-uri "http-cookie" version))
8951 (sha256
8952 (base32
8953 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
8954 (build-system ruby-build-system)
8955 (arguments
8956 `(#:phases
8957 (modify-phases %standard-phases
8958 (add-before 'check 'add-dependency-to-bundler
8959 (lambda _
8960 ;; Fix NameError
8961 (substitute* "Rakefile"
8962 (("HTTP::Cookie::VERSION")
8963 "Bundler::GemHelper.gemspec.version"))
8964 #t)))))
8965 (propagated-inputs
8966 `(("ruby-domain-name" ,ruby-domain-name)))
8967 (native-inputs
8968 `(("rubysimplecov" ,ruby-simplecov)
8969 ("bundler" ,bundler)
8970 ("ruby-sqlite3" ,ruby-sqlite3)
8971 ("ruby-test-unit" ,ruby-test-unit)))
8972 (synopsis "Handle HTTP Cookies based on RFC 6265")
8973 (description
8974 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
8975 RFC 6265. It has been designed with security, standards compliance and
8976 compatibility in mind, to behave just the same as today's major web browsers.
8977 It has built-in support for the legacy @code{cookies.txt} and
8978 @code{cookies.sqlite} formats of Mozilla Firefox.")
8979 (home-page "https://github.com/sparklemotion/http-cookie")
8980 (license license:expat)))
8981
8982 (define-public ruby-httpclient
8983 (package
8984 (name "ruby-httpclient")
8985 (version "2.8.3")
8986 (source
8987 (origin
8988 (method url-fetch)
8989 (uri (rubygems-uri "httpclient" version))
8990 (sha256
8991 (base32
8992 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
8993 (build-system ruby-build-system)
8994 (arguments
8995 '(;; TODO: Some tests currently fail
8996 ;; ------
8997 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
8998 ;; 2 omissions, 0 notifications
8999 ;; 91.866% passed
9000 ;; ------
9001 ;; 6.49 tests/s, 22.41 assertions/s
9002 #:tests? #f
9003 #:phases
9004 (modify-phases %standard-phases
9005 (replace 'check
9006 (lambda* (#:key tests? #:allow-other-keys)
9007 (if tests?
9008 (invoke "ruby"
9009 "-Ilib"
9010 "test/runner.rb")
9011 #t))))))
9012 (native-inputs
9013 `(("ruby-rack" ,ruby-rack)))
9014 (synopsis
9015 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
9016 (description
9017 "The @code{httpclient} ruby library provides functionality related to
9018 HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
9019 Cookie, multithreading and authentication (digest, NTLM) support.
9020
9021 Also provided is a @command{httpclient} command, which can perform HTTP
9022 requests either using arguments or with an interactive prompt.")
9023 (home-page "https://github.com/nahi/httpclient")
9024 (license license:ruby)))
9025
9026 (define-public ruby-ansi
9027 (package
9028 (name "ruby-ansi")
9029 (version "1.5.0")
9030 (source
9031 (origin
9032 (method git-fetch)
9033 ;; Fetch from GitHub as the gem does not contain testing code.
9034 (uri (git-reference
9035 (url "https://github.com/rubyworks/ansi")
9036 (commit version)))
9037 (file-name (git-file-name name version))
9038 (sha256
9039 (base32
9040 "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5"))))
9041 (build-system ruby-build-system)
9042 (arguments
9043 `(#:phases
9044 (modify-phases %standard-phases
9045 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
9046 ;; cycle ansi, qed, ansi. Instead simply test that the library can
9047 ;; be require'd.
9048 (replace 'check
9049 (lambda _
9050 (invoke "ruby" "-Ilib" "-r" "ansi")))
9051 (add-before 'validate-runpath 'replace-broken-symlink
9052 (lambda* (#:key outputs #:allow-other-keys)
9053 (let* ((out (assoc-ref outputs "out"))
9054 (file (string-append
9055 out "/lib/ruby/vendor_ruby/gems/ansi-"
9056 ,version "/lib/ansi.yml")))
9057 ;; XXX: This symlink is broken since ruby 2.4.
9058 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
9059 (delete-file file)
9060 (symlink "../.index" file)
9061 #t))))))
9062 (synopsis "ANSI escape code related libraries")
9063 (description
9064 "This package is a collection of ANSI escape code related libraries
9065 enabling ANSI colorization and stylization of console output. Included in the
9066 library are the @code{Code} module, which defines ANSI codes as constants and
9067 methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
9068 @code{ProgressBar}, and a @code{String} subclass. The library also includes a
9069 @code{Terminal} module which provides information about the current output
9070 device.")
9071 (home-page "https://rubyworks.github.io/ansi/")
9072 (license license:bsd-2)))
9073
9074 (define-public ruby-systemu
9075 (package
9076 (name "ruby-systemu")
9077 (version "2.6.5")
9078 (source
9079 (origin
9080 (method url-fetch)
9081 (uri (rubygems-uri "systemu" version))
9082 (sha256
9083 (base32
9084 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
9085 (build-system ruby-build-system)
9086 (arguments
9087 `(#:phases
9088 (modify-phases %standard-phases
9089 (add-before 'check 'set-version
9090 (lambda _
9091 (setenv "VERSION" ,version)
9092 #t)))))
9093 (synopsis "Capture of stdout/stderr and handling of child processes")
9094 (description
9095 "Systemu can be used on any platform to return status, stdout, and stderr
9096 of any command. Unlike other methods like @code{open3} and @code{popen4}
9097 there is no danger of full pipes or threading issues hanging your process or
9098 subprocess.")
9099 (home-page "https://github.com/ahoward/systemu")
9100 (license license:ruby)))
9101
9102 (define-public ruby-bio-commandeer
9103 (package
9104 (name "ruby-bio-commandeer")
9105 (version "0.4.0")
9106 (source
9107 (origin
9108 (method url-fetch)
9109 (uri (rubygems-uri "bio-commandeer" version))
9110 (sha256
9111 (base32
9112 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
9113 (build-system ruby-build-system)
9114 (arguments
9115 `(#:phases
9116 (modify-phases %standard-phases
9117 (replace 'check
9118 ;; Run test without calling 'rake' so that jeweler is
9119 ;; not required as an input.
9120 (lambda _
9121 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
9122 (propagated-inputs
9123 `(("ruby-bio-logger" ,ruby-bio-logger)
9124 ("ruby-systemu" ,ruby-systemu)))
9125 (native-inputs
9126 `(("bundler" ,bundler)
9127 ("ruby-rspec" ,ruby-rspec)))
9128 (synopsis "Simplified running of shell commands from within Ruby")
9129 (description
9130 "Bio-commandeer provides an opinionated method of running shell commands
9131 from within Ruby. The advantage of bio-commandeer over other methods of
9132 running external commands is that when something goes wrong, messages printed
9133 to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
9134 detail to ease debugging.")
9135 (home-page "https://github.com/wwood/bioruby-commandeer")
9136 (license license:expat)))
9137
9138 (define-public ruby-rubytest
9139 (package
9140 (name "ruby-rubytest")
9141 (version "0.8.1")
9142 (source
9143 (origin
9144 (method url-fetch)
9145 (uri (rubygems-uri "rubytest" version))
9146 (sha256
9147 (base32
9148 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
9149 (build-system ruby-build-system)
9150 (arguments
9151 ;; Disable regular testing to break the cycle rubytest, qed, brass,
9152 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
9153 ;; simply test that the library can be require'd.
9154 `(#:phases
9155 (modify-phases %standard-phases
9156 (replace 'check
9157 (lambda _
9158 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
9159 (propagated-inputs
9160 `(("ruby-ansi" ,ruby-ansi)))
9161 (synopsis "Universal test harness for Ruby")
9162 (description
9163 "Rubytest is a testing meta-framework for Ruby. It can handle any
9164 compliant test framework and can run tests from multiple frameworks in a
9165 single pass.")
9166 (home-page "https://rubyworks.github.io/rubytest")
9167 (license license:bsd-2)))
9168
9169 (define-public ruby-brass
9170 (package
9171 (name "ruby-brass")
9172 (version "1.2.1")
9173 (source
9174 (origin
9175 (method url-fetch)
9176 (uri (rubygems-uri "brass" version))
9177 (sha256
9178 (base32
9179 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
9180 (build-system ruby-build-system)
9181 (arguments
9182 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
9183 ;; Instead simply test that the library can be require'd.
9184 `(#:phases
9185 (modify-phases %standard-phases
9186 (replace 'check
9187 (lambda _
9188 (invoke "ruby" "-Ilib" "-r" "brass"))))))
9189 (synopsis "Basic foundational assertions framework")
9190 (description
9191 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
9192 foundational assertions framework for other assertion and test frameworks to
9193 make use of.")
9194 (home-page "https://rubyworks.github.io/brass")
9195 (license license:bsd-2)))
9196
9197 (define-public ruby-qed
9198 (package
9199 (name "ruby-qed")
9200 (version "2.9.2")
9201 (source
9202 (origin
9203 (method url-fetch)
9204 (uri (rubygems-uri "qed" version))
9205 (sha256
9206 (base32
9207 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
9208 (build-system ruby-build-system)
9209 (arguments
9210 ;; Disable testing to break the cycle qed, ansi, qed, among others.
9211 ;; Instead simply test that the executable runs using --copyright.
9212 `(#:phases
9213 (modify-phases %standard-phases
9214 (replace 'check
9215 (lambda _
9216 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
9217 (propagated-inputs
9218 `(("ruby-ansi" ,ruby-ansi)
9219 ("ruby-brass" ,ruby-brass)))
9220 (synopsis "Test framework utilizing literate programming techniques")
9221 (description
9222 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
9223 @dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
9224 Development} (BDD) utilizing Literate Programming techniques. QED sits
9225 somewhere between lower-level testing tools like @code{Test::Unit} and
9226 requirement specifications systems like Cucumber.")
9227 (home-page "https://rubyworks.github.io/qed")
9228 (license license:bsd-2)))
9229
9230 (define-public ruby-que
9231 (package
9232 (name "ruby-que")
9233 (version "1.0.0.beta3")
9234 (source
9235 (origin
9236 (method url-fetch)
9237 (uri (rubygems-uri "que" version))
9238 (sha256
9239 (base32
9240 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
9241 (build-system ruby-build-system)
9242 (arguments
9243 '(#:tests? #f)) ; No included tests
9244 (synopsis "Job queue using PostgreSQL written in Ruby")
9245 (description
9246 "This package provides a job queue that uses PostgreSQL for storing jobs
9247 and locking between worker processes.")
9248 (home-page "https://github.com/chanks/que")
9249 (license license:expat)))
9250
9251 (define-public ruby-ae
9252 (package
9253 (name "ruby-ae")
9254 (version "1.8.2")
9255 (source
9256 (origin
9257 (method git-fetch)
9258 ;; Fetch from github so tests are included.
9259 (uri (git-reference
9260 (url "https://github.com/rubyworks/ae")
9261 (commit version)))
9262 (file-name (git-file-name name version))
9263 (sha256
9264 (base32
9265 "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp"))))
9266 (build-system ruby-build-system)
9267 (arguments
9268 `(#:phases
9269 (modify-phases %standard-phases
9270 (replace 'check
9271 (lambda _ (invoke "qed")))
9272 (add-before 'validate-runpath 'replace-broken-symlink
9273 (lambda* (#:key outputs #:allow-other-keys)
9274 (let* ((out (assoc-ref outputs "out"))
9275 (file (string-append
9276 out "/lib/ruby/vendor_ruby/gems/ae-"
9277 ,version "/lib/ae.yml")))
9278 ;; XXX: This symlink is broken since ruby 2.4.
9279 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
9280 (delete-file file)
9281 (symlink "../.index" file)
9282 #t))))))
9283 (propagated-inputs
9284 `(("ruby-ansi" ,ruby-ansi)))
9285 (native-inputs
9286 `(("ruby-qed" ,ruby-qed)))
9287 (synopsis "Assertions library")
9288 (description
9289 "Assertive Expressive (AE) is an assertions library specifically designed
9290 for reuse by other test frameworks.")
9291 (home-page "https://rubyworks.github.io/ae/")
9292 (license license:bsd-2)))
9293
9294 (define-public ruby-lemon
9295 (package
9296 (name "ruby-lemon")
9297 (version "0.9.1")
9298 (source
9299 (origin
9300 (method url-fetch)
9301 (uri (rubygems-uri "lemon" version))
9302 (sha256
9303 (base32
9304 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
9305 (build-system ruby-build-system)
9306 (arguments
9307 `(#:phases
9308 (modify-phases %standard-phases
9309 (replace 'check (lambda _ (invoke "qed"))))))
9310 (propagated-inputs
9311 `(("ruby-ae" ,ruby-ae)
9312 ("ruby-ansi" ,ruby-ansi)
9313 ("ruby-rubytest" ,ruby-rubytest)))
9314 (native-inputs
9315 `(("ruby-qed" ,ruby-qed)))
9316 (synopsis "Test framework correlating code structure and test unit")
9317 (description
9318 "Lemon is a unit testing framework that enforces highly formal
9319 case-to-class and unit-to-method test construction. This enforcement can help
9320 focus concern on individual units of behavior.")
9321 (home-page "https://rubyworks.github.io/lemon")
9322 (license license:bsd-2)))
9323
9324 (define-public ruby-rubytest-cli
9325 (package
9326 (name "ruby-rubytest-cli")
9327 (version "0.2.0")
9328 (source
9329 (origin
9330 (method url-fetch)
9331 (uri (rubygems-uri "rubytest-cli" version))
9332 (sha256
9333 (base32
9334 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
9335 (build-system ruby-build-system)
9336 (arguments
9337 `(#:tests? #f)) ; no tests
9338 (propagated-inputs
9339 `(("ruby-ansi" ,ruby-ansi)
9340 ("ruby-rubytest" ,ruby-rubytest)))
9341 (synopsis "Command-line interface for rubytest")
9342 (description
9343 "Rubytest CLI is a command-line interface for running tests for
9344 Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
9345 (home-page "https://rubyworks.github.io/rubytest-cli")
9346 (license license:bsd-2)))
9347
9348 (define-public ruby-hashery
9349 (package
9350 (name "ruby-hashery")
9351 (version "2.1.2")
9352 (source
9353 (origin
9354 (method url-fetch)
9355 (uri (rubygems-uri "hashery" version))
9356 (sha256
9357 (base32
9358 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
9359 (build-system ruby-build-system)
9360 (arguments
9361 `(#:phases
9362 (modify-phases %standard-phases
9363 (replace 'check
9364 (lambda _
9365 (invoke "qed")
9366 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
9367 (native-inputs
9368 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
9369 ("ruby-qed" ,ruby-qed)
9370 ("ruby-lemon" ,ruby-lemon)))
9371 (synopsis "Hash-like classes with extra features")
9372 (description
9373 "The Hashery is a tight collection of @code{Hash}-like classes.
9374 Included are the auto-sorting @code{Dictionary} class, the efficient
9375 @code{LRUHash}, the flexible @code{OpenHash} and the convenient
9376 @code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
9377 defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
9378 standard @code{Hash} making it possible to subclass and augment to fit any
9379 specific use case.")
9380 (home-page "https://rubyworks.github.io/hashery")
9381 (license license:bsd-2)))
9382
9383 (define-public ruby-rc4
9384 (package
9385 (name "ruby-rc4")
9386 (version "0.1.5")
9387 (source
9388 (origin
9389 (method url-fetch)
9390 (uri (rubygems-uri "ruby-rc4" version))
9391 (sha256
9392 (base32
9393 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
9394 (build-system ruby-build-system)
9395 (arguments
9396 `(#:phases
9397 (modify-phases %standard-phases
9398 (replace 'check
9399 (lambda _
9400 (invoke "rspec" "spec/rc4_spec.rb"))))))
9401 (native-inputs
9402 `(("ruby-rspec" ,ruby-rspec-2)))
9403 (synopsis "Implementation of the RC4 algorithm")
9404 (description
9405 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
9406 (home-page "https://github.com/caiges/Ruby-RC4")
9407 (license license:expat)))
9408
9409 (define-public ruby-afm
9410 (package
9411 (name "ruby-afm")
9412 (version "0.2.2")
9413 (source
9414 (origin
9415 (method url-fetch)
9416 (uri (rubygems-uri "afm" version))
9417 (sha256
9418 (base32
9419 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
9420 (build-system ruby-build-system)
9421 (native-inputs
9422 `(("bundler" ,bundler)))
9423 (synopsis "Read Adobe Font Metrics (afm) files")
9424 (description
9425 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
9426 files and use the data therein.")
9427 (home-page "https://github.com/halfbyte/afm")
9428 (license license:expat)))
9429
9430 (define-public ruby-ascii85
9431 (package
9432 (name "ruby-ascii85")
9433 (version "1.0.3")
9434 (source
9435 (origin
9436 (method url-fetch)
9437 (uri (rubygems-uri "Ascii85" version))
9438 (sha256
9439 (base32
9440 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
9441 (build-system ruby-build-system)
9442 (native-inputs
9443 `(("bundler" ,bundler)))
9444 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
9445 (description
9446 "This library provides methods to encode and decode Ascii85
9447 binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
9448 @dfn{Portable Document Format} (PDF) file formats.")
9449 (home-page "https://github.com/datawraith/ascii85gem")
9450 (license license:expat)))
9451
9452 (define-public ruby-ttfunk
9453 (package
9454 (name "ruby-ttfunk")
9455 (version "1.6.2.1")
9456 (source
9457 (origin
9458 (method git-fetch)
9459 ;; fetch from github as the gem does not contain testing code
9460 (uri (git-reference
9461 (url "https://github.com/prawnpdf/ttfunk")
9462 (commit version)))
9463 (file-name (git-file-name name version))
9464 (sha256
9465 (base32
9466 "0rsf4j6s97wbcnjbvmmh6xrc7imw4g9lrlcvn945wh400lc8r53z"))))
9467 (build-system ruby-build-system)
9468 (arguments
9469 `(#:test-target "spec"
9470 #:phases
9471 (modify-phases %standard-phases
9472 (add-before 'build 'remove-ssh
9473 (lambda _
9474 ;; remove dependency on an ssh key pair that doesn't exist
9475 (substitute* "ttfunk.gemspec"
9476 (("spec.signing_key.*") ""))
9477 #t))
9478 (add-before 'check 'remove-rubocop
9479 (lambda _
9480 ;; remove rubocop as a dependency as not needed for testing
9481 (substitute* "ttfunk.gemspec"
9482 (("spec.add_development_dependency\\('rubocop'.*") ""))
9483 (substitute* "Rakefile"
9484 (("require 'rubocop/rake_task'") "")
9485 (("RuboCop::RakeTask.new") ""))
9486 #t)))))
9487 (native-inputs
9488 `(("ruby-rspec" ,ruby-rspec)
9489 ("ruby-yard" ,ruby-yard)
9490 ("bundler" ,bundler)))
9491 (synopsis "Font metrics parser for the Prawn PDF generator")
9492 (description
9493 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
9494 part of the Prawn PDF generator.")
9495 (home-page "https://github.com/prawnpdf/ttfunk")
9496 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
9497 ;; for details."
9498 (license %prawn-project-licenses)))
9499
9500 (define-public ruby-puma
9501 (package
9502 (name "ruby-puma")
9503 (version "3.9.1")
9504 (source
9505 (origin
9506 (method git-fetch)
9507 ;; Fetch from GitHub because distributed gem does not contain tests.
9508 (uri (git-reference
9509 (url "https://github.com/puma/puma")
9510 (commit (string-append "v" version))))
9511 (file-name (git-file-name name version))
9512 (sha256
9513 (base32
9514 "1kj75k81iik3aj73pkc9ixj9rwf95ipkyma65n28m64dgw02qi1f"))))
9515 (build-system ruby-build-system)
9516 (arguments
9517 `(#:tests? #f ; Tests require an out-dated version of minitest.
9518 #:phases
9519 (modify-phases %standard-phases
9520 (add-before 'build 'fix-gemspec
9521 (lambda _
9522 (substitute* "puma.gemspec"
9523 (("git ls-files") "find * |sort"))
9524 #t)))))
9525 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
9526 (description
9527 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
9528 for Ruby/Rack applications. Puma is intended for use in both development and
9529 production environments. In order to get the best throughput, it is highly
9530 recommended that you use a Ruby implementation with real threads like Rubinius
9531 or JRuby.")
9532 (home-page "https://puma.io/")
9533 (license license:expat)))
9534
9535 (define-public ruby-hoe-git
9536 (package
9537 (name "ruby-hoe-git")
9538 (version "1.6.0")
9539 (source
9540 (origin
9541 (method url-fetch)
9542 (uri (rubygems-uri "hoe-git" version))
9543 (sha256
9544 (base32
9545 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
9546 (build-system ruby-build-system)
9547 (propagated-inputs
9548 `(("ruby-hoe" ,ruby-hoe)))
9549 (synopsis "Hoe plugins for tighter Git integration")
9550 (description
9551 "This package provides a set of Hoe plugins for tighter Git integration.
9552 It provides tasks to automate release tagging and pushing and changelog
9553 generation.")
9554 (home-page "https://github.com/jbarnette/hoe-git")
9555 (license license:expat)))
9556
9557 (define-public ruby-sequel
9558 (package
9559 (name "ruby-sequel")
9560 (version "4.49.0")
9561 (source
9562 (origin
9563 (method url-fetch)
9564 (uri (rubygems-uri "sequel" version))
9565 (sha256
9566 (base32
9567 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
9568 (build-system ruby-build-system)
9569 (arguments
9570 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
9571 (synopsis "Database toolkit for Ruby")
9572 (description "Sequel provides thread safety, connection pooling and a
9573 concise DSL for constructing SQL queries and table schemas. It includes a
9574 comprehensive ORM layer for mapping records to Ruby objects and handling
9575 associated records.")
9576 (home-page "https://sequel.jeremyevans.net")
9577 (license license:expat)))
9578
9579 (define-public ruby-timecop
9580 (package
9581 (name "ruby-timecop")
9582 (version "0.9.1")
9583 (source
9584 (origin
9585 (method url-fetch)
9586 (uri (rubygems-uri "timecop" version))
9587 (sha256
9588 (base32
9589 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
9590 (build-system ruby-build-system)
9591 (arguments
9592 `(#:phases
9593 (modify-phases %standard-phases
9594 (add-before 'check 'set-check-rubylib
9595 (lambda _
9596 ;; Set RUBYLIB so timecop tests finds its own lib.
9597 (setenv "RUBYLIB" "lib")
9598 #t)))))
9599 (native-inputs
9600 `(("bundler" ,bundler)
9601 ("ruby-minitest-rg" ,ruby-minitest-rg)
9602 ("ruby-mocha" ,ruby-mocha)
9603 ("ruby-activesupport" ,ruby-activesupport)))
9604 (synopsis "Test mocks for time-dependent functions")
9605 (description
9606 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
9607 making it easier to test time-dependent code. It provides a unified method to
9608 mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
9609 call.")
9610 (home-page "https://github.com/travisjeffery/timecop")
9611 (license license:expat)))
9612
9613 (define-public ruby-concurrent
9614 (package
9615 (name "ruby-concurrent")
9616 (version "1.1.5")
9617 (source
9618 (origin
9619 (method git-fetch)
9620 ;; Download from GitHub because the rubygems version does not contain
9621 ;; Rakefile.
9622 (uri (git-reference
9623 (url "https://github.com/ruby-concurrency/concurrent-ruby")
9624 (commit (string-append "v" version))))
9625 (file-name (git-file-name name version))
9626 (sha256
9627 (base32
9628 "193q2k47vk7qdvv9hlhmmdxgy91xl4imapyk1ijdg9vgf46knyzj"))))
9629 (build-system ruby-build-system)
9630 (arguments
9631 `(#:test-target "ci"
9632 #:phases
9633 (modify-phases %standard-phases
9634 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
9635 (lambda _
9636 ;; Delete extra gemspec files so 'first-gemspec' chooses the
9637 ;; correct one.
9638 (delete-file "concurrent-ruby-edge.gemspec")
9639 (delete-file "concurrent-ruby-ext.gemspec")
9640 #t))
9641 (replace 'replace-git-ls-files
9642 (lambda _
9643 ;; XXX: The default substitution made by this phase is not fully
9644 ;; compatible with "git ls-files". The latter produces file names
9645 ;; such as "lib/foo", whereas ruby-build-system uses "find . [...]"
9646 ;; which gives "./lib/foo". That difference in turn breaks the
9647 ;; comparison against a glob pattern in this script.
9648 (substitute* "concurrent-ruby.gemspec"
9649 (("git ls-files") "find * -type f | sort"))
9650 #t))
9651 (add-before 'build 'remove-jar-from-gemspec
9652 (lambda _
9653 ;; The gemspec wants to include a JAR file that we do not build
9654 ;; nor need.
9655 (substitute* "concurrent-ruby.gemspec"
9656 (("'lib/concurrent/concurrent_ruby.jar'")
9657 ""))
9658 #t))
9659 (add-before 'build 'remove-rake_compiler_dock-dependency
9660 (lambda _
9661 ;; This library is only used when building for non-MRI targets.
9662 (substitute* "Rakefile"
9663 (("require 'rake_compiler_dock'")
9664 ""))
9665 #t))
9666 (add-before 'check 'remove-timecop-dependency
9667 ;; Remove timecop-dependent tests as having timecop as a depedency
9668 ;; causes circular depedencies.
9669 (lambda _
9670 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
9671 (delete-file "spec/concurrent/scheduled_task_spec.rb")
9672 #t)))))
9673 (native-inputs
9674 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9675 ("ruby-rspec" ,ruby-rspec)))
9676 (synopsis "Concurrency tools for Ruby")
9677 (description
9678 "This library provides modern concurrency tools including agents,
9679 futures, promises, thread pools, actors, supervisors, and more. It is
9680 inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
9681 patterns.")
9682 (home-page "http://www.concurrent-ruby.com")
9683 (license license:expat)))
9684
9685 (define-public ruby-pkg-config
9686 (package
9687 (name "ruby-pkg-config")
9688 (version "1.2.5")
9689 (source
9690 (origin
9691 (method url-fetch)
9692 (uri (rubygems-uri "pkg-config" version))
9693 (sha256
9694 (base32
9695 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
9696 (build-system ruby-build-system)
9697 (arguments
9698 ;; Tests require extra files not included in the gem.
9699 `(#:tests? #f))
9700 (synopsis "Detect libraries for compiling Ruby native extensions")
9701 (description
9702 "@code{pkg-config} can be used in your extconf.rb to properly detect need
9703 libraries for compiling Ruby native extensions.")
9704 (home-page "https://github.com/ruby-gnome2/pkg-config")
9705 (license license:lgpl2.0+)))
9706
9707 (define-public ruby-net-http-digest-auth
9708 (package
9709 (name "ruby-net-http-digest-auth")
9710 (version "1.4.1")
9711 (source
9712 (origin
9713 (method url-fetch)
9714 (uri (rubygems-uri "net-http-digest_auth" version))
9715 (sha256
9716 (base32
9717 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
9718 (build-system ruby-build-system)
9719 (native-inputs
9720 `(("ruby-hoe" ,ruby-hoe)))
9721 (synopsis "RFC 2617 HTTP digest authentication library")
9722 (description
9723 "This library implements HTTP's digest authentication scheme based on
9724 RFC 2617. This enables the use of the digest authentication scheme instead
9725 of the more insecure basic authentication scheme.")
9726 (home-page "https://github.com/drbrain/net-http-digest_auth")
9727 (license license:expat)))
9728
9729 (define-public ruby-mail
9730 (package
9731 (name "ruby-mail")
9732 (version "2.6.6")
9733 (source
9734 (origin
9735 (method url-fetch)
9736 (uri (rubygems-uri "mail" version))
9737 (sha256
9738 (base32
9739 "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
9740 (build-system ruby-build-system)
9741 (propagated-inputs
9742 `(("ruby-mime-types" ,ruby-mime-types)))
9743 (arguments
9744 ;; Tests require extra gems not included in the Gemfile.
9745 ;; XXX: Try enabling this for the next version with mini_mime.
9746 `(#:tests? #f))
9747 (synopsis "Mail library for Ruby")
9748 (description
9749 "Mail is an internet library for Ruby that is designed to handle email
9750 generation, parsing and sending. The purpose of this library is to provide
9751 a single point of access to handle all email functions, including sending
9752 and receiving emails. All network type actions are done through proxy
9753 methods to @code{Net::SMTP}, @code{Net::POP3} etc.
9754
9755 Mail has been designed with a very simple object oriented system that
9756 really opens up the email messages you are parsing, if you know what you
9757 are doing, you can fiddle with every last bit of your email directly.")
9758 (home-page "https://github.com/mikel/mail")
9759 (license license:expat)))
9760
9761 (define-public ruby-mathn
9762 (package
9763 (name "ruby-mathn")
9764 (version "0.1.0")
9765 (source
9766 (origin
9767 (method url-fetch)
9768 (uri (rubygems-uri "mathn" version))
9769 (sha256
9770 (base32
9771 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
9772 (build-system ruby-build-system)
9773 (native-inputs
9774 `(("bundler" ,bundler)
9775 ("ruby-rake-compiler" ,ruby-rake-compiler)))
9776 (synopsis "Extends math operations for increased precision")
9777 (description
9778 "This gem makes mathematical operations more precise in Ruby and
9779 integrates other mathematical standard libraries. Prior to Ruby 2.5,
9780 @code{mathn} was part of the Ruby standard library.")
9781 (home-page "https://github.com/ruby/mathn")
9782 (license license:bsd-2)))
9783
9784 (define-public ruby-code-statistics
9785 (package
9786 (name "ruby-code-statistics")
9787 (version "0.2.13")
9788 (source
9789 (origin
9790 (method url-fetch)
9791 (uri (rubygems-uri "code_statistics" version))
9792 (sha256
9793 (base32
9794 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
9795 (build-system ruby-build-system)
9796 (arguments
9797 `(#:tests? #f)) ; Not all test code is included in gem.
9798 (synopsis "Port of the rails 'rake stats' method")
9799 (description
9800 "This gem is a port of the rails 'rake stats' method so it can be made
9801 more robust and work for non rails projects.")
9802 (home-page "https://github.com/danmayer/code_statistics")
9803 (license license:expat)))
9804
9805 (define-public ruby-rubypants
9806 (package
9807 (name "ruby-rubypants")
9808 (version "0.6.0")
9809 (source (origin
9810 (method url-fetch)
9811 (uri (rubygems-uri "rubypants" version))
9812 (sha256
9813 (base32
9814 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
9815 (build-system ruby-build-system)
9816 (arguments
9817 '(#:tests? #f)) ; need Codecov
9818 (synopsis "Port of the smart-quotes library SmartyPants")
9819 (description
9820 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
9821 original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
9822 and BBEdit that easily translates plain ASCII punctuation characters into
9823 smart typographic punctuation HTML entities.")
9824 (home-page "https://github.com/jmcnevin/rubypants")
9825 (license license:bsd-2)))
9826
9827 (define-public ruby-org-ruby
9828 (package
9829 (name "ruby-org-ruby")
9830 (version "0.9.12")
9831 (source (origin
9832 (method url-fetch)
9833 (uri (rubygems-uri "org-ruby" version))
9834 (sha256
9835 (base32
9836 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
9837 (build-system ruby-build-system)
9838 (arguments
9839 '(#:tests? #f)) ; no rakefile
9840 (propagated-inputs
9841 `(("ruby-rubypants" ,ruby-rubypants)))
9842 (synopsis "Org-mode parser written in Ruby")
9843 (description
9844 "Org-ruby is an org-mode parser written in Ruby. The most significant
9845 thing this library does today is convert org-mode files to HTML or Textile or
9846 Markdown.")
9847 (home-page "https://github.com/wallyqs/org-ruby")
9848 (license license:expat)))
9849
9850 (define-public ruby-rake
9851 (package
9852 (name "ruby-rake")
9853 (version "13.0.1")
9854 (source
9855 (origin
9856 (method url-fetch)
9857 (uri (rubygems-uri "rake" version))
9858 (sha256
9859 (base32
9860 "0w6qza25bq1s825faaglkx1k6d59aiyjjk3yw3ip5sb463mhhai9"))))
9861 (build-system ruby-build-system)
9862 (native-inputs
9863 `(("bundler" ,bundler)))
9864 (synopsis "Rake is a Make-like program implemented in Ruby")
9865 (description
9866 "Rake is a Make-like program where tasks and dependencies are specified
9867 in standard Ruby syntax.")
9868 (home-page "https://github.com/ruby/rake")
9869 (license license:expat)))
9870
9871 (define-public ruby-childprocess
9872 (package
9873 (name "ruby-childprocess")
9874 (version "3.0.0")
9875 (source
9876 (origin
9877 (method url-fetch)
9878 (uri (rubygems-uri "childprocess" version))
9879 (sha256
9880 (base32
9881 "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5"))))
9882 (build-system ruby-build-system)
9883 (arguments
9884 `(#:tests? #f))
9885 (native-inputs
9886 `(("bundler" ,bundler)
9887 ("ruby-rspec" ,ruby-rspec)))
9888 (propagated-inputs
9889 `(("ruby-ffi" ,ruby-ffi)))
9890 (synopsis "Control external programs running in the background, in Ruby")
9891 (description "@code{childprocess} provides a gem to control external
9892 programs running in the background, in Ruby.")
9893 (home-page "https://github.com/enkessler/childprocess")
9894 (license license:expat)))
9895
9896 (define-public ruby-public-suffix
9897 (package
9898 (name "ruby-public-suffix")
9899 (version "4.0.1")
9900 (source (origin
9901 (method url-fetch)
9902 (uri (rubygems-uri "public_suffix" version))
9903 (sha256
9904 (base32
9905 "0xnfv2j2bqgdpg2yq9i2rxby0w2sc9h5iyjkpaas2xknwrgmhdb0"))))
9906 (build-system ruby-build-system)
9907 (arguments
9908 '(#:phases
9909 (modify-phases %standard-phases
9910 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
9911 ;; including it as an input can lead to circular dependencies.
9912 (add-after 'unpack 'remove-rubocop-from-Rakefile
9913 (lambda _
9914 (substitute* "Rakefile"
9915 (("require \"rubocop/rake\\_task\"") "")
9916 (("RuboCop::RakeTask\\.new") ""))
9917 #t)))))
9918 (native-inputs
9919 `(("bundler" ,bundler)
9920 ("ruby-yard" ,ruby-yard)
9921 ("ruby-mocha" ,ruby-mocha)
9922 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
9923 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
9924 (synopsis "Domain name parser")
9925 (description "The gem @code{public_suffix} is a domain name parser,
9926 written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
9927 is one under which Internet users can (or historically could) directly
9928 register names. Some examples of public suffixes are @code{.com},
9929 @code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
9930 all known public suffixes.")
9931 (license license:expat)))
9932
9933 (define-public ruby-addressable
9934 (package
9935 (name "ruby-addressable")
9936 (version "2.7.0")
9937 (source (origin
9938 (method url-fetch)
9939 (uri (rubygems-uri "addressable" version))
9940 (sha256
9941 (base32
9942 "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy"))))
9943 (build-system ruby-build-system)
9944 (arguments
9945 '(#:test-target "spec"
9946 #:phases
9947 (modify-phases %standard-phases
9948 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
9949 (lambda _
9950 (substitute* "Gemfile"
9951 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
9952 ((".*launchy.*") "")
9953 ((".*rake.*") "gem 'rake'\n")
9954 ((".*redcarpet.*") ""))
9955 #t))
9956 (add-before 'check 'delete-network-dependent-test
9957 (lambda _
9958 (delete-file "spec/addressable/net_http_compat_spec.rb")
9959 #t)))))
9960 (native-inputs
9961 `(("ruby-rspec" ,ruby-rspec)
9962 ("bundler" ,bundler)
9963 ("ruby-idn-ruby" ,ruby-idn-ruby)
9964 ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
9965 ("ruby-rspec-its", ruby-rspec-its-minimal)
9966 ("ruby-yard" ,ruby-yard)
9967 ("ruby-simplecov" ,ruby-simplecov)))
9968 (propagated-inputs
9969 `(("ruby-public-suffix" ,ruby-public-suffix)))
9970 (home-page "https://github.com/sporkmonger/addressable")
9971 (synopsis "Alternative URI implementation")
9972 (description "Addressable is a replacement for the URI implementation that
9973 is part of Ruby's standard library. It more closely conforms to RFC 3986,
9974 RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
9975 (license license:asl2.0)))
9976
9977 (define-public ruby-colorize
9978 (package
9979 (name "ruby-colorize")
9980 (version "0.8.1")
9981 (source (origin
9982 (method url-fetch)
9983 (uri (rubygems-uri "colorize" version))
9984 (sha256
9985 (base32
9986 "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b"))))
9987 (build-system ruby-build-system)
9988 (arguments
9989 '(#:phases (modify-phases %standard-phases
9990 (add-before 'check 'remove-codeclimate-dependency
9991 (lambda _
9992 (substitute* "test/test_colorize.rb"
9993 ;; Do not hook the tests into the online CodeClimate
9994 ;; service which is unnecessary for these tests.
9995 (("require 'codeclimate-test-reporter'")
9996 "")
9997 (("CodeClimate.*") ""))
9998 #t)))))
9999 (synopsis "Add color effects to the @code{String} class")
10000 (description
10001 "This package extends the @code{String} class and adds a
10002 @code{ColorizedString} with methods to set text color, background color,
10003 and text effects.")
10004 (home-page "https://github.com/fazibear/colorize")
10005 (license license:gpl2+)))
10006
10007 (define-public ruby-colorator
10008 (package
10009 (name "ruby-colorator")
10010 (version "1.1.0")
10011 (source (origin
10012 (method url-fetch)
10013 (uri (rubygems-uri "colorator" version))
10014 (sha256
10015 (base32
10016 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
10017 (build-system ruby-build-system)
10018 (arguments
10019 ;; No test target
10020 `(#:tests? #f))
10021 (home-page "http://octopress.org/colorator/")
10022 (synopsis "Terminal color library")
10023 (description "Colorator is a Ruby gem that helps you colorize your text
10024 for the terminal.")
10025 (license license:expat)))
10026
10027 (define-public ruby-command-line-reporter
10028 (package
10029 (name "ruby-command-line-reporter")
10030 (version "4.0.1")
10031 (source (origin
10032 (method url-fetch)
10033 (uri (rubygems-uri "command_line_reporter" version))
10034 (sha256
10035 (base32
10036 "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll"))))
10037 (build-system ruby-build-system)
10038 (arguments
10039 ;; No Rakefile
10040 `(#:tests? #f
10041 #:phases
10042 (modify-phases %standard-phases
10043 (add-before 'build 'fix-dependencies
10044 (lambda _
10045 (substitute* ".gemspec"
10046 ;; colored is unmaintained
10047 (("colored") "colorator")
10048 ;; colorator version
10049 (("= 1.2") "= 1.1"))
10050 #t)))))
10051 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
10052 (home-page "https://github.com/wbailey/command_line_reporter")
10053 (synopsis "Report production while executing Ruby scripts")
10054 (description "This gem provides a DSL that makes it easy to write reports
10055 of various types in ruby. It eliminates the need to litter your source with
10056 puts statements, instead providing a more readable, expressive interface to
10057 your application.")
10058 (license license:asl2.0)))
10059
10060 (define-public ruby-command-line-reporter-3
10061 (package
10062 (inherit ruby-command-line-reporter)
10063 (version "3.3.6")
10064 (source (origin
10065 (method url-fetch)
10066 (uri (rubygems-uri "command_line_reporter" version))
10067 (sha256
10068 (base32
10069 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
10070
10071 (define-public ruby-kpeg
10072 (package
10073 (name "ruby-kpeg")
10074 (version "1.1.0")
10075 (source
10076 (origin
10077 (method url-fetch)
10078 (uri (rubygems-uri "kpeg" version))
10079 (sha256
10080 (base32
10081 "0x2kpfrcagj931masm5y1kwbnc6nxl60cqdcd3lyd1d2hz7kzlia"))))
10082 (build-system ruby-build-system)
10083 (native-inputs
10084 `(("ruby-hoe" ,ruby-hoe)))
10085 (synopsis "PEG library for Ruby")
10086 (description "KPeg is a simple PEG library for Ruby. It provides an API as
10087 well as native grammar to build the grammar. KPeg supports direct left
10088 recursion of rules via the
10089 @uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization}
10090 technique.")
10091 (home-page "https://github.com/evanphx/kpeg")
10092 (license license:expat)))
10093
10094 (define-public ruby-rdoc
10095 (package
10096 (name "ruby-rdoc")
10097 (version "6.2.0")
10098 (source
10099 (origin
10100 (method git-fetch)
10101 (uri (git-reference
10102 (url "https://github.com/ruby/rdoc")
10103 (commit (string-append "v" version))))
10104 (file-name (git-file-name name version))
10105 (sha256
10106 (base32
10107 "0dhk29nidv93b5vnjvlm9gcixgn4i0jcyzrgxdk6pdg019bw4cj6"))))
10108 (build-system ruby-build-system)
10109 (arguments
10110 `(#:phases
10111 (modify-phases %standard-phases
10112 (add-after 'unpack 'patch-gemspec
10113 ;; TODO: Remove after next release is tagged.
10114 (lambda _
10115 (substitute* "rdoc.gemspec"
10116 (("\"lib/rdoc/generator/template/darkfish/js/\
10117 jquery\\.js\", ") ""))
10118 #t))
10119 (add-before 'build 'generate
10120 ;; 'gem build' doesn't honor Rakefile dependencies (see:
10121 ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977).
10122 (lambda _
10123 (invoke "rake" "generate"))))))
10124 (native-inputs
10125 `(("bundler" ,bundler)
10126 ("ruby-kpeg" ,ruby-kpeg)
10127 ("ruby-racc" ,ruby-racc)
10128 ("ruby-rubocop" ,ruby-rubocop)))
10129 (home-page "https://ruby.github.io/rdoc/")
10130 (synopsis "HTML and command-line documentation utility")
10131 (description "RDoc produces HTML and command-line documentation for Ruby
10132 projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
10133 documentation from the command-line.")
10134 (license license:gpl2+)))
10135
10136 (define-public ruby-sass-listen
10137 (package
10138 (name "ruby-sass-listen")
10139 (version "4.0.0")
10140 (source (origin
10141 (method url-fetch)
10142 (uri (rubygems-uri "sass-listen" version))
10143 (sha256
10144 (base32
10145 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
10146 (build-system ruby-build-system)
10147 (arguments
10148 ;; No test target
10149 `(#:tests? #f))
10150 (propagated-inputs
10151 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
10152 ("ruby-rb-inotify" ,ruby-rb-inotify)))
10153 (home-page "https://github.com/sass/listen")
10154 (synopsis "File modification notification library")
10155 (description "The Listen gem listens to file modifications and notifies you
10156 about the changes.")
10157 (license license:expat)))
10158
10159 (define-public ruby-terminfo
10160 (package
10161 (name "ruby-terminfo")
10162 (version "0.1.1")
10163 (source
10164 (origin
10165 (method url-fetch)
10166 (uri (rubygems-uri "ruby-terminfo" version))
10167 (sha256
10168 (base32
10169 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
10170 (build-system ruby-build-system)
10171 (arguments
10172 `(#:test-target "test"
10173 ;; Rakefile requires old packages and would need modification to
10174 ;; work with current software.
10175 #:tests? #f))
10176 (inputs
10177 `(("ncurses" ,ncurses)))
10178 (native-inputs
10179 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
10180 ("ruby-rdoc" ,ruby-rdoc)))
10181 (home-page "http://www.a-k-r.org/ruby-terminfo/")
10182 (synopsis "Terminfo binding for Ruby")
10183 (description "Ruby-terminfo provides terminfo binding for Ruby.")
10184 (license license:bsd-3)))
10185
10186 (define-public ruby-diffy
10187 (package
10188 (name "ruby-diffy")
10189 (version "3.2.1")
10190 (source
10191 (origin
10192 (method url-fetch)
10193 (uri (rubygems-uri "diffy" version))
10194 (sha256
10195 (base32
10196 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
10197 (build-system ruby-build-system)
10198 (arguments
10199 ;; No tests
10200 `(#:tests? #f))
10201 (native-inputs
10202 `(("ruby-rspec" ,ruby-rspec)))
10203 (home-page "https://github.com/samg/diffy")
10204 (synopsis "Convenient diffing in ruby")
10205 (description "Diffy provides a convenient way to generate a diff from two
10206 strings or files.")
10207 (license license:expat)))
10208
10209 (define-public ruby-sass-spec
10210 (package
10211 (name "ruby-sass-spec")
10212 (version "3.5.4")
10213 (source
10214 (origin
10215 (method git-fetch)
10216 (uri (git-reference
10217 (url "https://github.com/sass/sass-spec")
10218 (commit (string-append "v" version))))
10219 (file-name (git-file-name name version))
10220 (sha256
10221 (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
10222 (build-system ruby-build-system)
10223 (propagated-inputs
10224 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
10225 ("ruby-diffy" ,ruby-diffy)
10226 ("ruby-terminfo" ,ruby-terminfo)))
10227 (arguments
10228 `(;; This package contains tests for a sass implementation, and the to
10229 ;; avoid any circular dependencies, the tests are not run here
10230 #:tests? #f
10231 #:phases
10232 (modify-phases %standard-phases
10233 (add-after 'unpack 'patch-test
10234 (lambda _
10235 (delete-file "spec/values/colors/alpha_hex-3.5/error")
10236 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
10237 (("string") "color")))))))
10238 (home-page "https://github.com/sass/sass-spec")
10239 (synopsis "Test suite for Sass")
10240 (description "Sass Spec is a test suite for Sass. Test cases are all in
10241 the @file{spec} directory.")
10242 (license license:expat)))
10243
10244 (define-public ruby-sass
10245 (package
10246 (name "ruby-sass")
10247 (version "3.6.0")
10248 (source (origin
10249 (method url-fetch)
10250 (uri (rubygems-uri "sass" version))
10251 (sha256
10252 (base32
10253 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
10254 (build-system ruby-build-system)
10255 (propagated-inputs
10256 `(("ruby-sass-listen" ,ruby-sass-listen)))
10257 (native-inputs
10258 `(("ruby-sass-spec" ,ruby-sass-spec)
10259 ("ruby-mathn" ,ruby-mathn)))
10260 (home-page "https://sass-lang.com/")
10261 (synopsis "CSS extension language")
10262 (description "Sass is a CSS extension language. It extends CSS with
10263 features that don't exist yet like variables, nesting, mixins and inheritance.")
10264 (license license:expat)))
10265
10266 (define-public ruby-sassc
10267 (package
10268 (name "ruby-sassc")
10269 (version "2.2.1")
10270 (source
10271 (origin
10272 (method url-fetch)
10273 (uri (rubygems-uri "sassc" version))
10274 (sha256
10275 (base32
10276 "09bnid7r5z5hcin5hykvpvv8xig27wbbckxwis60z2aaxq4j9siz"))))
10277 (build-system ruby-build-system)
10278 (arguments
10279 '(#:modules ((guix build ruby-build-system)
10280 (guix build utils)
10281 (ice-9 textual-ports))
10282 #:phases
10283 (modify-phases %standard-phases
10284 ;; TODO: This would be better as a snippet, but the ruby-build-system
10285 ;; doesn't seem to support that
10286 (add-after 'unpack 'remove-libsass
10287 (lambda _
10288 (delete-file-recursively "ext")
10289 (with-atomic-file-replacement "sassc.gemspec"
10290 (lambda (in out)
10291 (let* ((gemspec (get-string-all in))
10292 (index (string-contains gemspec "libsass_dir")))
10293 (display (string-append
10294 (string-take gemspec index)
10295 "\nend\n")
10296 out))))
10297 #t))
10298 (add-after 'unpack 'dont-check-the-libsass-version
10299 (lambda _
10300 (substitute* "test/native_test.rb"
10301 (("assert_equal.*Native\\.version") ""))
10302 #t))
10303 (add-after 'unpack 'remove-git-from-gemspec
10304 (lambda _
10305 (substitute* "sassc.gemspec"
10306 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))
10307 #t))
10308 (add-after 'unpack 'remove-extensions-from-gemspec
10309 (lambda _
10310 (substitute* "sassc.gemspec"
10311 (("\\[\"ext/extconf.rb\"\\]") "[]"))
10312 #t))
10313 (add-after 'unpack 'fix-Rakefile
10314 (lambda _
10315 (substitute* "Rakefile"
10316 (("test: 'compile:libsass'") ":test"))
10317 #t))
10318 (add-after 'unpack 'remove-unnecessary-dependencies
10319 (lambda _
10320 (substitute* "test/test_helper.rb"
10321 (("require \"pry\"") ""))
10322 #t))
10323 (add-before 'build 'patch-native.rb
10324 (lambda* (#:key inputs #:allow-other-keys)
10325 (substitute* "lib/sassc/native.rb"
10326 ((".*gem_root = spec.gem_dir") "")
10327 (("ffi_lib .*\n")
10328 (string-append
10329 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))
10330 #t))
10331 ;; The gemspec still references the libsass files, so just keep the
10332 ;; one in the gem.
10333 (delete 'extract-gemspec))))
10334 (propagated-inputs
10335 `(("ruby-ffi" ,ruby-ffi)
10336 ("ruby-rake" ,ruby-rake)))
10337 (inputs
10338 `(("libsass" ,libsass)))
10339 (native-inputs
10340 `(("bundler" ,bundler)
10341 ("ruby-rake-compiler" ,ruby-rake-compiler)
10342 ("ruby-minitest-around" ,ruby-minitest-around)
10343 ("ruby-test-construct" ,ruby-test-construct)))
10344 (synopsis "Use libsss from Ruby")
10345 (description
10346 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
10347 bindings to the libsass library. This enables rendering
10348 @acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
10349 (home-page "https://github.com/sass/sassc-ruby")
10350 (license license:expat)))
10351
10352 (define-public ruby-jekyll-sass-converter
10353 (package
10354 (name "ruby-jekyll-sass-converter")
10355 (version "1.5.2")
10356 (source (origin
10357 (method url-fetch)
10358 (uri (rubygems-uri "jekyll-sass-converter" version))
10359 (sha256
10360 (base32
10361 "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk"))))
10362 (build-system ruby-build-system)
10363 (propagated-inputs
10364 `(("ruby-sass" ,ruby-sass)))
10365 (arguments
10366 ;; No rakefile
10367 `(#:tests? #f))
10368 (home-page "https://github.com/jekyll/jekyll-sass-converter")
10369 (synopsis "Sass converter for Jekyll")
10370 (description "This gem provide built-in support for the Sass converter
10371 in Jekyll.")
10372 (license license:expat)))
10373
10374 (define-public ruby-jekyll-watch
10375 (package
10376 (name "ruby-jekyll-watch")
10377 (version "2.1.2")
10378 (source (origin
10379 (method url-fetch)
10380 (uri (rubygems-uri "jekyll-watch" version))
10381 (sha256
10382 (base32
10383 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
10384 (build-system ruby-build-system)
10385 (propagated-inputs
10386 `(("ruby-listen" ,ruby-listen)))
10387 (arguments
10388 ;; No rakefile
10389 `(#:tests? #f))
10390 (home-page "https://github.com/jekyll/jekyll-watch")
10391 (synopsis "Jekyll auto-rebuild support")
10392 (description "This gems add the @code{--watch} switch to the jekyll CLI
10393 interface. It allows Jekyll to rebuild your site when a file changes.")
10394 (license license:expat)))
10395
10396 (define-public ruby-parallel
10397 (package
10398 (name "ruby-parallel")
10399 (version "1.13.0")
10400 (source
10401 (origin
10402 (method git-fetch)
10403 (uri (git-reference
10404 (url "https://github.com/grosser/parallel")
10405 (commit (string-append "v" version))))
10406 (file-name (git-file-name name version))
10407 (sha256
10408 (base32
10409 "1isqzbqxz2ndad4i5z3lb9ldrhaijfncj8bmffv04sq44sv87ikv"))))
10410 (build-system ruby-build-system)
10411 (arguments
10412 `(;; TODO 3 test failures
10413 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
10414 ;; open unnecessary pipes
10415 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
10416 ;; SQLite in processes
10417 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
10418 ;; SQLite in threads
10419 #:tests? #f
10420 #:test-target "rspec-rerun:spec"
10421 #:phases
10422 (modify-phases %standard-phases
10423 (add-after 'unpack 'patch-Gemfile
10424 (lambda _
10425 (substitute* "Gemfile"
10426 (("gem 'rspec-legacy_formatters'") "")
10427 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
10428 (add-before 'check 'delete-Gemfile.lock
10429 (lambda _
10430 ;; Bundler isn't being used for fetching dependendencies, so
10431 ;; delete the Gemfile.lock
10432 (delete-file "Gemfile.lock")
10433 #t))
10434 (add-before 'build 'patch-gemspec
10435 (lambda _
10436 (substitute* "parallel.gemspec"
10437 (("git ls-files") "find"))
10438 #t)))))
10439 (native-inputs
10440 `(("ruby-rspec" ,ruby-rspec)
10441 ("ruby-rspec-rerun" ,ruby-rspec-rerun)
10442 ("bundler" ,bundler)
10443 ("ruby-activerecord" ,ruby-activerecord)
10444 ("ruby-progressbar" ,ruby-progressbar)
10445 ("ruby-bump" ,ruby-bump)
10446 ("procps" ,procps)
10447 ("lsof" ,lsof)
10448 ("ruby-mysql2" ,ruby-mysql2)
10449 ("ruby-sqlite3" ,ruby-sqlite3)
10450 ("ruby-i18n" ,ruby-i18n)))
10451 (home-page "https://github.com/grosser/parallel")
10452 (synopsis "Parallel processing in Ruby")
10453 (description "Parallel allows you to run any code in parallel Processes
10454 (to use all CPUs) or Threads(to speedup blocking operations). It is best
10455 suited for map-reduce or e.g. parallel downloads/uploads.")
10456 (license license:expat)))
10457
10458 (define-public ruby-cane
10459 (package
10460 (name "ruby-cane")
10461 (version "3.0.0")
10462 (source (origin
10463 (method url-fetch)
10464 (uri (rubygems-uri "cane" version))
10465 (sha256
10466 (base32
10467 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
10468 (build-system ruby-build-system)
10469 (arguments `(#:tests? #f)); No rakefile
10470 (home-page "https://github.com/square/cane")
10471 (propagated-inputs
10472 `(("ruby-parallel" ,ruby-parallel)))
10473 (synopsis "Code quality threshold checking")
10474 (description "Cane fails your build if code quality thresholds are not met.")
10475 (license license:asl2.0)))
10476
10477 (define-public ruby-morecane
10478 (package
10479 (name "ruby-morecane")
10480 (version "0.2.0")
10481 (source (origin
10482 (method url-fetch)
10483 (uri (rubygems-uri "morecane" version))
10484 (sha256
10485 (base32
10486 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
10487 (build-system ruby-build-system)
10488 (home-page "https://github.com/yob/morecane")
10489 (arguments `(#:tests? #f)); No rakefile
10490 (propagated-inputs
10491 `(("ruby-parallel" ,ruby-parallel)))
10492 (synopsis "Extra checks for cane")
10493 (description "The cane gem provides a great framework for running quality
10494 checks over your ruby project as part of continuous integration build. It
10495 comes with a few checks out of the box, but also provides an API for loading
10496 custom checks. This gem provides a set of additional checks.")
10497 (license license:expat)))
10498
10499 (define-public ruby-pdf-reader
10500 (package
10501 (name "ruby-pdf-reader")
10502 (version "2.4.0")
10503 (source (origin
10504 (method git-fetch) ;no test in distributed gem archive
10505 (uri (git-reference
10506 (url "https://github.com/yob/pdf-reader.git")
10507 (commit (string-append "v" version))))
10508 (file-name (git-file-name name version))
10509 (sha256
10510 (base32
10511 "1yh8yrlssf5ppnkvk4m78vmh5r5vqwdcd0gm3lqipw162llz0rai"))))
10512 (build-system ruby-build-system)
10513 (arguments `(#:test-target "spec"
10514 #:phases (modify-phases %standard-phases
10515 (add-after 'unpack 'do-not-use-bundler
10516 (lambda _
10517 (substitute* "spec/spec_helper.rb"
10518 ((".*[Bb]undler.*") ""))
10519 #t)))))
10520 (native-inputs
10521 `(("ruby-rspec" ,ruby-rspec)
10522 ("ruby-cane" ,ruby-cane)
10523 ("ruby-morecane" ,ruby-morecane)))
10524 (propagated-inputs
10525 `(("ruby-afm" ,ruby-afm)
10526 ("ruby-ascii85" ,ruby-ascii85)
10527 ("ruby-hashery" ,ruby-hashery)
10528 ("ruby-rc4" ,ruby-rc4)
10529 ("ruby-ttfunk" ,ruby-ttfunk)))
10530 (home-page "https://github.com/yob/pdf-reader")
10531 (synopsis "PDF parser in Ruby")
10532 (description "The PDF::Reader library implements a PDF parser conforming as
10533 much as possible to the PDF specification from Adobe. It provides programmatic
10534 access to the contents of a PDF file with a high degree of flexibility.")
10535 (license license:gpl3+)))
10536
10537 (define-public ruby-pdf-inspector
10538 (let ((revision "1")
10539 (commit "00ee4c92ff917118785ebec188e81effc968abeb"))
10540 (package
10541 (name "ruby-pdf-inspector")
10542 (version (git-version "1.3.0" revision commit))
10543 (source (origin
10544 (method git-fetch)
10545 (uri (git-reference
10546 (url "https://github.com/prawnpdf/pdf-inspector.git")
10547 (commit commit)))
10548 (file-name (git-file-name name version))
10549 (sha256
10550 (base32
10551 "0h9w81ddd0gvkh5n2cvny9ddb5qiac1si0dhinkk0xxh5382qs0m"))))
10552 (build-system ruby-build-system)
10553 (arguments
10554 `(#:test-target "spec"
10555 #:phases (modify-phases %standard-phases
10556 (add-before 'build 'drop-signing-key-requirement
10557 (lambda _
10558 (substitute* "pdf-inspector.gemspec"
10559 (("spec.signing_key =.*")
10560 "spec.signing_key = nil"))
10561 #t))
10562 (replace 'check
10563 (lambda _
10564 (substitute* "pdf-inspector.gemspec"
10565 ((".*rubocop.*") "")
10566 ((".*yard.*") ""))
10567 (invoke "rspec"))))))
10568 (native-inputs
10569 `(("ruby-rspec" ,ruby-rspec)))
10570 (propagated-inputs
10571 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
10572 (home-page "https://github.com/prawnpdf/pdf-inspector")
10573 (synopsis "Analysis classes for inspecting PDF output")
10574 (description "This library provides a number of PDF::Reader based tools for
10575 use in testing PDF output. Presently, the primary purpose of this tool is to
10576 support the tests found in Prawn, a pure Ruby PDF generation library.")
10577 (license %prawn-project-licenses))))
10578
10579 (define-public ruby-pdf-core
10580 (package
10581 (name "ruby-pdf-core")
10582 (version "0.8.1")
10583 (source (origin
10584 (method url-fetch)
10585 (uri (rubygems-uri "pdf-core" version))
10586 (sha256
10587 (base32
10588 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
10589 (build-system ruby-build-system)
10590 (arguments
10591 ; No test target
10592 `(#:tests? #f))
10593 (home-page "https://github.com/prawnpdf/pdf-core")
10594 (synopsis "Low level PDF features for Prawn")
10595 (description "This is an experimental gem that extracts low-level PDF
10596 functionality from Prawn.")
10597 (license license:gpl3+)))
10598
10599 (define-public ruby-prawn
10600 ;; There hasn't been a new release since 2017/03/17.
10601 (let ((revision "1")
10602 (commit "d980247be8a00e7c59cd4e5785e3aa98f9856db1"))
10603 (package
10604 (name "ruby-prawn")
10605 (version (git-version "2.2.2" revision commit))
10606 (source (origin
10607 (method git-fetch)
10608 (uri (git-reference
10609 (url "https://github.com/prawnpdf/prawn.git")
10610 (commit commit)))
10611 (file-name (git-file-name name version))
10612 (sha256
10613 (base32
10614 "0mcmvf22h8il93yq48v9f31qpy27pvjxgv9172p0f4x9lqy0imwr"))))
10615 (build-system ruby-build-system)
10616 (arguments
10617 `(#:phases
10618 (modify-phases %standard-phases
10619 (add-before 'build 'drop-signing-key-requirement
10620 (lambda _
10621 (substitute* "prawn.gemspec"
10622 (("spec.signing_key =.*")
10623 "spec.signing_key = nil"))
10624 #t))
10625 (replace 'check
10626 (lambda* (#:key tests? #:allow-other-keys)
10627 (when tests?
10628 ;; The Prawn manual test fails (see:
10629 ;; https://github.com/prawnpdf/prawn/issues/1163), so exclude
10630 ;; it.
10631 (invoke "rspec" "--exclude-pattern" "prawn_manual_spec.rb"))
10632 #t)))))
10633 (propagated-inputs
10634 `(("ruby-pdf-core" ,ruby-pdf-core)
10635 ("ruby-ttfunk" ,ruby-ttfunk)))
10636 (native-inputs
10637 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
10638 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
10639 ("ruby-rspec" ,ruby-rspec)
10640 ("ruby-simplecov" ,ruby-simplecov)
10641 ("ruby-yard" ,ruby-yard)))
10642 (home-page "https://prawnpdf.org/api-docs/2.0/")
10643 (synopsis "PDF generation for Ruby")
10644 (description "Prawn is a pure Ruby PDF generation library.")
10645 (license %prawn-project-licenses))))
10646
10647 (define-public ruby-prawn-table
10648 (package
10649 (name "ruby-prawn-table")
10650 (version "0.2.2")
10651 (source (origin
10652 (method url-fetch)
10653 (uri (rubygems-uri "prawn-table" version))
10654 (sha256
10655 (base32
10656 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
10657 (build-system ruby-build-system)
10658 (propagated-inputs
10659 `(("ruby-prawn" ,ruby-prawn)
10660 ("ruby-pdf-inspector" ,ruby-pdf-inspector)))
10661 (native-inputs
10662 `(("bundler" ,bundler)
10663 ("ruby-yard" ,ruby-yard)
10664 ("ruby-mocha" ,ruby-mocha)
10665 ("ruby-coderay" ,ruby-coderay)
10666 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
10667 ("ruby-simplecov" ,ruby-simplecov)
10668 ("ruby-rspec-2" ,ruby-rspec-2)))
10669 (arguments
10670 '(;; TODO: 1 test fails
10671 ;; Failure/Error: pdf.page_count.should == 1
10672 ;; expected: 1
10673 ;; got: 2 (using ==)
10674 ;; # ./spec/table_spec.rb:1308
10675 ;;
10676 ;; 225 examples, 1 failure
10677 #:tests? #f
10678 #:phases
10679 (modify-phases %standard-phases
10680 (add-before 'check 'patch-gemspec
10681 (lambda _
10682 (substitute* "prawn-table.gemspec"
10683 ;; Loosen the requirement for pdf-inspector
10684 (("~> 1\\.1\\.0") ">= 0")
10685 ;; Loosen the requirement for pdf-reader
10686 (("~> 1\\.2") ">= 0"))))
10687 (replace 'check
10688 (lambda* (#:key tests? #:allow-other-keys)
10689 (when tests?
10690 (invoke "rspec"))
10691 #t)))))
10692 (home-page "https://github.com/prawnpdf/prawn-table")
10693 (synopsis "Tables support for Prawn")
10694 (description "This gem provides tables support for Prawn.")
10695 (license license:gpl3+)))
10696
10697 (define-public ruby-kramdown
10698 (package
10699 (name "ruby-kramdown")
10700 (version "1.17.0")
10701 (source (origin
10702 (method url-fetch)
10703 (uri (rubygems-uri "kramdown" version))
10704 (sha256
10705 (base32
10706 "1n1c4jmrh5ig8iv1rw81s4mw4xsp4v97hvf8zkigv4hn5h542qjq"))))
10707 (build-system ruby-build-system)
10708 (arguments `(#:tests? #f)); FIXME: some test failures
10709 (native-inputs
10710 `(("ruby-prawn" ,ruby-prawn)
10711 ("ruby-prawn-table" ,ruby-prawn-table)))
10712 (home-page "https://kramdown.gettalong.org/")
10713 (synopsis "Markdown parsing and converting library")
10714 (description "Kramdown is a library for parsing and converting a superset
10715 of Markdown. It is completely written in Ruby, supports standard Markdown
10716 (with some minor modifications) and various extensions that have been made
10717 popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
10718 (license license:expat)))
10719
10720 (define-public ruby-http-parser.rb
10721 (package
10722 (name "ruby-http-parser.rb")
10723 (version "0.6.0")
10724 (source
10725 (origin
10726 (method url-fetch)
10727 (uri (rubygems-uri "http_parser.rb" version))
10728 (sha256
10729 (base32
10730 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
10731 (build-system ruby-build-system)
10732 (arguments
10733 ;; No tests
10734 `(#:tests? #f))
10735 (native-inputs
10736 `(("ruby-rake-compiler" ,ruby-rake-compiler)
10737 ("ruby-rspec" ,ruby-rspec)))
10738 (home-page "https://github.com/tmm1/http_parser.rb")
10739 (synopsis "HTTP parser un Ruby")
10740 (description "This gem is a simple callback-based HTTP request/response
10741 parser for writing http servers, clients and proxies.")
10742 (license license:expat)))
10743
10744 (define-public ruby-em-websocket
10745 (package
10746 (name "ruby-em-websocket")
10747 (version "0.5.1")
10748 (source
10749 (origin
10750 (method url-fetch)
10751 (uri (rubygems-uri "em-websocket" version))
10752 (sha256
10753 (base32
10754 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
10755 (build-system ruby-build-system)
10756 (arguments
10757 ;; No tests
10758 `(#:tests? #f))
10759 (propagated-inputs
10760 `(("ruby-eventmachine" ,ruby-eventmachine)
10761 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
10762 (native-inputs
10763 `(("bundler" ,bundler)
10764 ("ruby-rspec" ,ruby-rspec)))
10765 (home-page "https://github.com/igrigorik/em-websocket")
10766 (synopsis "EventMachine based WebSocket server")
10767 (description "Em-websocket is an EventMachine based WebSocket server
10768 implementation.")
10769 (license license:expat)))
10770
10771 (define-public ruby-rouge
10772 (package
10773 (name "ruby-rouge")
10774 (version "3.21.0")
10775 (source (origin
10776 (method url-fetch)
10777 (uri (rubygems-uri "rouge" version))
10778 (sha256
10779 (base32
10780 "1agrrmj88k9jkk36ra1ml2c1jffpp595pkxmcla74ac9ia09vn3s"))))
10781 (build-system ruby-build-system)
10782 (arguments `(#:tests? #f)); No rakefile
10783 (home-page "http://rouge.jneen.net/")
10784 (synopsis "Code highlighter")
10785 (description "Rouge is a code highlighter written in Ruby. It supports more
10786 than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
10787 is compatible with stylesheets designed for pygments.")
10788 (license (list
10789 ;; rouge is licensed under expat
10790 license:expat
10791 ;; pygments is licensed under bsd-2
10792 license:bsd-2))))
10793
10794 (define-public ruby-rouge-2
10795 (package
10796 (inherit ruby-rouge)
10797 (version "2.2.1")
10798 (source (origin
10799 (method url-fetch)
10800 (uri (rubygems-uri "rouge" version))
10801 (sha256
10802 (base32
10803 "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs"))))))
10804
10805 (define-public ruby-hashie
10806 (package
10807 (name "ruby-hashie")
10808 (version "3.6.0")
10809 (source (origin
10810 (method url-fetch)
10811 (uri (rubygems-uri "hashie" version))
10812 (sha256
10813 (base32
10814 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
10815 (build-system ruby-build-system)
10816 (native-inputs
10817 `(("bundler" ,bundler)))
10818 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
10819 (home-page "https://github.com/intridea/hashie")
10820 (synopsis "Extensions to Ruby Hashes")
10821 (description "Hashie is a collection of classes and mixins that make Ruby
10822 hashes more powerful.")
10823 (license license:expat)))
10824
10825 (define-public ruby-heredoc-unindent
10826 (package
10827 (name "ruby-heredoc-unindent")
10828 (version "1.2.0")
10829 (source (origin
10830 (method url-fetch)
10831 (uri (rubygems-uri "heredoc_unindent" version))
10832 (sha256
10833 (base32
10834 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
10835 (build-system ruby-build-system)
10836 (native-inputs
10837 `(("ruby-hoe" ,ruby-hoe)))
10838 (home-page "https://github.com/adrianomitre/heredoc_unindent")
10839 (synopsis "Heredoc indentation cleaner")
10840 (description "This gem removes common margin from indented strings, such
10841 as the ones produced by indented heredocs. In other words, it strips out
10842 leading whitespace chars at the beginning of each line, but only as much as
10843 the line with the smallest margin.
10844
10845 It is acknowledged that many strings defined by heredocs are just code and
10846 fact is that most parsers are insensitive to indentation. If, however, the
10847 strings are to be used otherwise, be it for printing or testing, the extra
10848 indentation will probably be an issue and hence this gem.")
10849 (license license:expat)))
10850
10851 (define-public ruby-safe-yaml
10852 (package
10853 (name "ruby-safe-yaml")
10854 (version "1.0.5")
10855 (source
10856 (origin
10857 (method git-fetch)
10858 (uri (git-reference
10859 (url "https://github.com/dtao/safe_yaml")
10860 (commit version)))
10861 (file-name (git-file-name name version))
10862 (sha256
10863 (base32
10864 "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg"))))
10865 (build-system ruby-build-system)
10866 (native-inputs
10867 `(("ruby-rspec" ,ruby-rspec)
10868 ("ruby-hashie" ,ruby-hashie)
10869 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
10870 (arguments
10871 '(#:test-target "spec"
10872 #:phases
10873 (modify-phases %standard-phases
10874 (add-before 'check 'set-TZ
10875 (lambda _
10876 ;; This test is dependent on the timezone
10877 ;; spec/transform/to_date_spec.rb:35
10878 ;; # SafeYAML::Transform::ToDate converts times to the local
10879 ;; timezone
10880 (setenv "TZ" "UTC-11")
10881 #t)))))
10882 (home-page "https://github.com/dtao/safe_yaml")
10883 (synopsis "YAML parser")
10884 (description "The SafeYAML gem provides an alternative implementation of
10885 YAML.load suitable for accepting user input in Ruby applications.")
10886 (license license:expat)))
10887
10888 (define-public ruby-mercenary
10889 (package
10890 (name "ruby-mercenary")
10891 (version "0.3.6")
10892 (source (origin
10893 (method url-fetch)
10894 (uri (rubygems-uri "mercenary" version))
10895 (sha256
10896 (base32
10897 "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"))))
10898 (build-system ruby-build-system)
10899 (arguments `(#:test-target "spec"))
10900 (native-inputs
10901 `(("bundler" ,bundler)))
10902 (home-page "https://github.com/jekyll/mercenary")
10903 (synopsis "Command-line apps library in Ruby")
10904 (description "Mercenary is a lightweight and flexible library for writing
10905 command-line apps in Ruby.")
10906 (license license:expat)))
10907
10908 (define-public ruby-liquid
10909 (package
10910 (name "ruby-liquid")
10911 (version "4.0.0")
10912 (source (origin
10913 (method url-fetch)
10914 (uri (rubygems-uri "liquid" version))
10915 (sha256
10916 (base32
10917 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
10918 (build-system ruby-build-system)
10919 (arguments `(#:tests? #f)); No rakefile
10920 (home-page "https://shopify.github.io/liquid/")
10921 (synopsis "Template language")
10922 (description "Liquid is a template language written in Ruby. It is used
10923 to load dynamic content on storefronts.")
10924 (license license:expat)))
10925
10926 (define-public ruby-forwardable-extended
10927 (package
10928 (name "ruby-forwardable-extended")
10929 (version "2.6.0")
10930 (source (origin
10931 (method url-fetch)
10932 (uri (rubygems-uri "forwardable-extended" version))
10933 (sha256
10934 (base32
10935 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
10936 (build-system ruby-build-system)
10937 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
10938 (home-page "https://github.com/envygeeks/forwardable-extended")
10939 (synopsis "Delegation to hashes and instance variables in Forwardable")
10940 (description "Forwardable Extended provides more @code{Forwardable}
10941 methods for your source as @code{Forwardable::Extended}.")
10942 (license license:expat)))
10943
10944 (define-public ruby-pathutil
10945 (package
10946 (name "ruby-pathutil")
10947 (version "0.16.2")
10948 (source (origin
10949 (method url-fetch)
10950 (uri (rubygems-uri "pathutil" version))
10951 (sha256
10952 (base32
10953 "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"))))
10954 (build-system ruby-build-system)
10955 (propagated-inputs
10956 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
10957 (native-inputs
10958 `(("bundler" ,bundler)
10959 ("ruby-rspec" ,ruby-rspec)))
10960 ;; Fails with: cannot load such file --
10961 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
10962 (arguments `(#:tests? #f))
10963 (home-page "https://github.com/envygeeks/pathutil")
10964 (synopsis "Extended implementation of Pathname")
10965 (description "Pathutil tries to be a faster pure Ruby implementation of
10966 Pathname.")
10967 (license license:expat)))
10968
10969 (define-public jekyll
10970 (package
10971 (name "jekyll")
10972 (version "3.8.6")
10973 (source (origin
10974 (method url-fetch)
10975 (uri (rubygems-uri "jekyll" version))
10976 (sha256
10977 (base32
10978 "1ph1jjjl25vmzif7bvxzviq7azjm384pm7ba4k24cah94285bzhz"))))
10979 (build-system ruby-build-system)
10980 (arguments
10981 ;; No rakefile, but a test subdirectory.
10982 `(#:tests? #f
10983 #:phases
10984 (modify-phases %standard-phases
10985 (add-before 'build 'fix-i18n
10986 (lambda _
10987 (substitute* ".gemspec"
10988 (("~> 0.7") ">= 0.7"))
10989 #t)))))
10990 (propagated-inputs
10991 `(("ruby-addressable" ,ruby-addressable)
10992 ("ruby-colorator" ,ruby-colorator)
10993 ("ruby-em-websocket" ,ruby-em-websocket)
10994 ("ruby-i18n" ,ruby-i18n)
10995 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
10996 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
10997 ("ruby-kramdown" ,ruby-kramdown)
10998 ("ruby-liquid" ,ruby-liquid)
10999 ("ruby-mercenary" ,ruby-mercenary)
11000 ("ruby-pathutil" ,ruby-pathutil)
11001 ("ruby-rouge" ,ruby-rouge-2)
11002 ("ruby-safe-yaml" ,ruby-safe-yaml)))
11003 (home-page "https://jekyllrb.com/")
11004 (synopsis "Static site generator")
11005 (description "Jekyll is a simple, blog aware, static site generator.")
11006 (license license:expat)))
11007
11008 (define-public ruby-jekyll-paginate-v2
11009 (package
11010 (name "ruby-jekyll-paginate-v2")
11011 (version "2.0.0")
11012 (source (origin
11013 (method url-fetch)
11014 (uri (rubygems-uri "jekyll-paginate-v2" version))
11015 (sha256
11016 (base32
11017 "154bfpyml6abxww9868hhyfvxasl8qhsc5zy2q30c7dxaj0igdib"))))
11018 (build-system ruby-build-system)
11019 (propagated-inputs
11020 `(("jekyll" ,jekyll)))
11021 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
11022 (synopsis "Pagination Generator for Jekyll 3")
11023 (description "The Pagination Generator forms the core of the pagination
11024 logic in Jekyll. It calculates and generates the pagination pages.")
11025 (license license:expat)))
11026
11027 (define-public ruby-faraday
11028 (package
11029 (name "ruby-faraday")
11030 (version "0.15.4")
11031 (source
11032 (origin
11033 (method url-fetch)
11034 (uri (rubygems-uri "faraday" version))
11035 (sha256
11036 (base32
11037 "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0"))))
11038 (build-system ruby-build-system)
11039 (arguments
11040 '(#:tests? #f))
11041 (propagated-inputs
11042 `(("ruby-multipart-post" ,ruby-multipart-post)))
11043 (synopsis "Ruby HTTP/REST API client library")
11044 (description
11045 "Faraday is a HTTP/REST API client library which provides a common
11046 interface over different adapters.")
11047 (home-page "https://github.com/lostisland/faraday")
11048 (license license:expat)))
11049
11050 (define-public ruby-nio4r
11051 (package
11052 (name "ruby-nio4r")
11053 (version "2.5.2")
11054 (source
11055 (origin
11056 (method url-fetch)
11057 (uri (rubygems-uri "nio4r" version))
11058 (sha256
11059 (base32
11060 "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c"))))
11061 (build-system ruby-build-system)
11062 (arguments
11063 '(#:phases
11064 (modify-phases %standard-phases
11065 (add-after 'unpack 'remove-unnecessary-dependencies
11066 (lambda _
11067 (substitute* "spec/spec_helper.rb"
11068 ;; Coveralls is for uploading test coverage information to an
11069 ;; online service, and thus unnecessary for building the Guix
11070 ;; package
11071 (("require \"coveralls\"") "")
11072 (("Coveralls\\.wear!") "")
11073 ;; Remove rspec/retry as we are not retrying the tests
11074 (("require \"rspec/retry\"") "")
11075 (("config\\.display_try_failure_messages = true") "")
11076 (("config\\.verbose_retry = true") ""))
11077 #t))
11078 (add-before 'check 'compile
11079 (lambda _
11080 (invoke "rake" "compile")
11081 #t))
11082 (replace 'check
11083 (lambda* (#:key tests? #:allow-other-keys)
11084 (when tests?
11085 (invoke "rspec"))
11086 #t)))))
11087 (native-inputs
11088 `(("bundler" ,bundler)
11089 ("ruby-rake-compiler" ,ruby-rake-compiler)
11090 ("ruby-rspec" ,ruby-rspec)
11091 ("ruby-rubocop" ,ruby-rubocop)))
11092 (synopsis "New I/O for Ruby")
11093 (description
11094 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
11095 for scalable network clients and servers.")
11096 (home-page "https://github.com/socketry/nio4r")
11097 (license license:expat)))
11098
11099 (define-public ruby-globalid
11100 (package
11101 (name "ruby-globalid")
11102 (version "0.4.2")
11103 (source
11104 (origin
11105 (method url-fetch)
11106 (uri (rubygems-uri "globalid" version))
11107 (sha256
11108 (base32
11109 "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"))))
11110 (build-system ruby-build-system)
11111 (arguments
11112 '(;; No included tests
11113 #:tests? #f))
11114 (propagated-inputs
11115 `(("ruby-activesupport" ,ruby-activesupport)))
11116 (synopsis "Generate URIs idenfitying model instances in Ruby")
11117 (description
11118 "@code{GlobalID} provides a way to generate URIs from a model in Ruby that
11119 uniquely identify it.")
11120 (home-page "https://rubyonrails.org/")
11121 (license license:expat)))
11122
11123 (define-public ruby-sprockets
11124 (package
11125 (name "ruby-sprockets")
11126 (version "3.7.2")
11127 (source
11128 (origin
11129 (method url-fetch)
11130 (uri (rubygems-uri "sprockets" version))
11131 (sha256
11132 (base32
11133 "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"))))
11134 (build-system ruby-build-system)
11135 (arguments
11136 '(;; No included tests
11137 #:tests? #f))
11138 (propagated-inputs
11139 `(("ruby-concurrent" ,ruby-concurrent)
11140 ("ruby-rack" ,ruby-rack)))
11141 (synopsis "Sprockets is a Rack-based asset packaging system")
11142 (description
11143 "Sprockets is a Rack-based asset packaging system that concatenates and
11144 serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
11145 (home-page "https://github.com/rails/sprockets")
11146 (license license:expat)))
11147
11148 (define-public ruby-mustermann
11149 (package
11150 (name "ruby-mustermann")
11151 (version "1.0.3")
11152 (source
11153 (origin
11154 (method url-fetch)
11155 (uri (rubygems-uri "mustermann" version))
11156 (sha256
11157 (base32
11158 "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1"))))
11159 (build-system ruby-build-system)
11160 (arguments
11161 ;; No tests.
11162 '(#:tests? #f))
11163 (synopsis "Library implementing patterns that behave like regular expressions")
11164 (description "Given a string pattern, Mustermann will turn it into an
11165 object that behaves like a regular expression and has comparable performance
11166 characteristics.")
11167 (home-page "https://github.com/sinatra/mustermann")
11168 (license license:expat)))
11169
11170 (define-public ruby-htmlentities
11171 (package
11172 (name "ruby-htmlentities")
11173 (version "4.3.4")
11174 (source
11175 (origin
11176 (method url-fetch)
11177 (uri (rubygems-uri "htmlentities" version))
11178 (sha256
11179 (base32
11180 "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"))))
11181 (build-system ruby-build-system)
11182 (arguments
11183 `(#:phases
11184 (modify-phases %standard-phases
11185 (replace 'check
11186 (lambda _
11187 (map (lambda (file)
11188 (invoke "ruby" "-Itest" file))
11189 (find-files "./test" ".*_test\\.rb")))))))
11190 (synopsis "Encode and decode (X)HTML entities")
11191 (description
11192 "This package provides a module for encoding and decoding (X)HTML
11193 entities.")
11194 (home-page "https://github.com/threedaymonk/htmlentities")
11195 (license license:expat)))
11196
11197 (define-public ruby-sinatra
11198 (package
11199 (name "ruby-sinatra")
11200 (version "2.0.8.1")
11201 (source
11202 (origin
11203 (method url-fetch)
11204 (uri (rubygems-uri "sinatra" version))
11205 (sha256
11206 (base32
11207 "0riy3hwjab1mr73jcqx3brmbmwspnw3d193j06a5f0fy1w35z15q"))))
11208 (build-system ruby-build-system)
11209 (arguments
11210 `(#:phases
11211 (modify-phases %standard-phases
11212 ;; See: https://github.com/sinatra/sinatra/issues/1578.
11213 (add-after 'extract-gemspec 'fix-slow-doc-generation
11214 (lambda _
11215 (substitute* "sinatra.gemspec"
11216 (("\"README.rdoc\"\\.freeze," all)
11217 (string-append all " \"--exclude=.*\\.md\".freeze,")))
11218 #t)))))
11219 (propagated-inputs
11220 `(("ruby-mustermann" ,ruby-mustermann)
11221 ("ruby-rack" ,ruby-rack)
11222 ("ruby-rack-protection" ,ruby-rack-protection)
11223 ("ruby-tilt" ,ruby-tilt)))
11224 (synopsis "DSL for quick web applications creation in Ruby")
11225 (description
11226 "Sinatra is a DSL for quickly creating web applications in Ruby with
11227 minimal effort.")
11228 (home-page "http://sinatrarb.com/")
11229 (license license:expat)))
11230
11231 (define-public ruby-thin
11232 (package
11233 (name "ruby-thin")
11234 (version "1.7.2")
11235 (source
11236 (origin
11237 (method url-fetch)
11238 (uri (rubygems-uri "thin" version))
11239 (sha256
11240 (base32
11241 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
11242 (build-system ruby-build-system)
11243 (arguments
11244 ;; No tests.
11245 '(#:tests? #f))
11246 (propagated-inputs
11247 `(("ruby-daemons" ,ruby-daemons)
11248 ("ruby-eventmachine" ,ruby-eventmachine)
11249 ("ruby-rack" ,ruby-rack)))
11250 (synopsis "Thin and fast web server for Ruby")
11251 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
11252 @itemize
11253 @item the Mongrel parser,
11254 @item Event Machine, a network I/O library with high scalability, performance
11255 and stability,
11256 @item Rack, a minimal interface between webservers and Ruby frameworks.
11257 @end itemize\n")
11258 (home-page "https://github.com/macournoyer/thin")
11259 (license license:ruby)))
11260
11261 (define-public ruby-skinny
11262 (package
11263 (name "ruby-skinny")
11264 (version "0.2.4")
11265 (source
11266 (origin
11267 (method url-fetch)
11268 (uri (rubygems-uri "skinny" version))
11269 (sha256
11270 (base32
11271 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
11272 (build-system ruby-build-system)
11273 (arguments
11274 '(#:tests? #f ; No included tests
11275 #:phases
11276 (modify-phases %standard-phases
11277 (add-before 'build 'patch-gemspec
11278 (lambda _
11279 (substitute* ".gemspec"
11280 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
11281 "<eventmachine>, [\">= 1.0.0\"")
11282 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, ["))
11283 #t)))))
11284 (propagated-inputs
11285 `(("ruby-eventmachine" ,ruby-eventmachine)
11286 ("ruby-thin" ,ruby-thin)))
11287 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
11288 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
11289 the Thin library.")
11290 (home-page "https://github.com/sj26/skinny")
11291 (license license:expat)))
11292
11293 (define-public ruby-sys-filesystem
11294 (package
11295 (name "ruby-sys-filesystem")
11296 (version "1.3.4")
11297 (source (origin
11298 (method url-fetch)
11299 (uri (rubygems-uri "sys-filesystem" version))
11300 (sha256
11301 (base32
11302 "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01"))))
11303 (build-system ruby-build-system)
11304 (arguments
11305 '(#:phases (modify-phases %standard-phases
11306 (add-before 'check 'set-HOME
11307 (lambda _
11308 ;; Some tests attempt to stat $HOME. Let them.
11309 (setenv "HOME" "/tmp")
11310 #t)))))
11311 (propagated-inputs
11312 `(("ruby-ffi" ,ruby-ffi)))
11313 (native-inputs
11314 `(("ruby-mkmf-lite" ,ruby-mkmf-lite)))
11315 (synopsis "Gather file system information")
11316 (description
11317 "The @code{sys-filesystem} library provides a cross-platform interface
11318 for gathering file system information, such as disk space and mount points.")
11319 (home-page "https://github.com/djberg96/sys-filesystem")
11320 (license license:asl2.0)))
11321
11322 (define-public mailcatcher
11323 (package
11324 (name "mailcatcher")
11325 (version "0.7.1")
11326 (source
11327 (origin
11328 (method url-fetch)
11329 (uri (rubygems-uri "mailcatcher" version))
11330 (sha256
11331 (base32
11332 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
11333 (build-system ruby-build-system)
11334 (arguments
11335 ;; Tests require web/assets which is not included in the output. We
11336 ;; might be able to fix this by adding the Git repository to the GEM_PATH
11337 ;; of the tests. See ruby-mysql2.
11338 '(#:tests? #f
11339 #:phases
11340 (modify-phases %standard-phases
11341 (add-before 'build 'patch-gemspec
11342 (lambda _
11343 (substitute* ".gemspec"
11344 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
11345 "<eventmachine>, [\">= 1.0.9.1")
11346 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
11347 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
11348 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))
11349 #t))
11350 (add-before 'build 'loosen-dependency-contraint
11351 (lambda _
11352 (substitute* "lib/mail_catcher.rb"
11353 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
11354 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
11355 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
11356 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))
11357 #t)))))
11358 (inputs
11359 `(("ruby-eventmachine" ,ruby-eventmachine)
11360 ("ruby-mail" ,ruby-mail)
11361 ("ruby-rack" ,ruby-rack)
11362 ("ruby-sinatra" ,ruby-sinatra)
11363 ("ruby-skinny" ,ruby-skinny)
11364 ("ruby-sqlite3" ,ruby-sqlite3)
11365 ("ruby-thin" ,ruby-thin)))
11366 (synopsis "SMTP server which catches messages to display them a browser")
11367 (description
11368 "MailCatcher runs a super simple SMTP server which catches any message
11369 sent to it to display in a web interface. Run mailcatcher, set your favourite
11370 app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
11371 then check out http://127.0.0.1:1080 to see the mail.")
11372 (home-page "https://mailcatcher.me")
11373 (license license:expat)))
11374
11375 (define-public ruby-backport
11376 (package
11377 (name "ruby-backport")
11378 (version "1.1.2")
11379 (source
11380 (origin
11381 ;; The gem does not include test code, so fetch from the Git repository.
11382 (method git-fetch)
11383 (uri (git-reference
11384 (url "https://github.com/castwide/backport")
11385 (commit (string-append "v" version))))
11386 (file-name (git-file-name name version))
11387 (sha256
11388 (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2"))))
11389 (build-system ruby-build-system)
11390 (arguments
11391 `(#:test-target "spec"))
11392 (native-inputs
11393 `(("bundler" ,bundler)
11394 ("ruby-rspec" ,ruby-rspec)))
11395 (inputs
11396 `(("ruby-simplecov" ,ruby-simplecov)))
11397 (synopsis "Pure Ruby library for event-driven IO")
11398 (description
11399 "This package provides a pure Ruby library for event-driven IO.")
11400 (home-page "https://github.com/castwide/backport")
11401 (license license:expat)))
11402
11403 (define-public ruby-json-schema
11404 (package
11405 (name "ruby-json-schema")
11406 (version "2.8.1")
11407 (source
11408 (origin
11409 (method url-fetch)
11410 (uri (rubygems-uri "json-schema" version))
11411 (sha256
11412 (base32
11413 "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5"))))
11414 (build-system ruby-build-system)
11415 (arguments
11416 `(#:tests? #f ; no tests
11417 #:phases
11418 (modify-phases %standard-phases
11419 (replace 'build
11420 (lambda _
11421 (invoke "gem" "build" ".gemspec"))))))
11422 (propagated-inputs
11423 `(("ruby-addressable" ,ruby-addressable)))
11424 (synopsis "Ruby JSON Schema Validator")
11425 (description "This library provides Ruby with an interface for validating
11426 JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy
11427 support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1
11428 is also included.")
11429 (home-page "https://github.com/ruby-json-schema/json-schema")
11430 (license license:expat)))
11431
11432 (define-public swagger-diff
11433 (package
11434 (name "swagger-diff")
11435 (version "1.1.2")
11436 (source
11437 (origin
11438 (method url-fetch)
11439 (uri (rubygems-uri "swagger-diff" version))
11440 (sha256
11441 (base32
11442 "1hxx50nga1bqn254iqjcdwkc9c72364ks9lyjyw10ajz0l0ly7sn"))))
11443 (build-system ruby-build-system)
11444 (arguments
11445 `(#:test-target "spec"
11446 #:phases
11447 (modify-phases %standard-phases
11448 ;; Don't run or require rubocop, the code linting tool, as this is a
11449 ;; bit unnecessary.
11450 (add-after 'unpack 'dont-run-rubocop
11451 (lambda _
11452 (substitute* "Rakefile"
11453 ((".*rubocop.*") "")
11454 ((".*RuboCop.*") ""))
11455 #t)))))
11456 (propagated-inputs
11457 `(("ruby-json-schema" ,ruby-json-schema)))
11458 (native-inputs
11459 `(("bundler" ,bundler)
11460 ("ruby-rspec-core" ,ruby-rspec-core)
11461 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
11462 (synopsis
11463 "Compare Open API Initiative specification files")
11464 (description
11465 "Swagger::Diff is a utility for comparing two different Open API
11466 Initiative (OAI) specifications (formerly known as Swagger specifications).
11467 It is intended to determine whether a newer API specification is
11468 backwards-compatible with an older API specification.")
11469 (home-page "https://github.com/civisanalytics/swagger-diff")
11470 (license license:bsd-3)))
11471
11472 (define-public ruby-reverse-markdown
11473 (package
11474 (name "ruby-reverse-markdown")
11475 (version "1.1.0")
11476 (source
11477 (origin
11478 (method url-fetch)
11479 (uri (rubygems-uri "reverse_markdown" version))
11480 (sha256
11481 (base32
11482 "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg"))))
11483 (build-system ruby-build-system)
11484 (propagated-inputs
11485 `(("ruby-nokogiri" ,ruby-nokogiri)))
11486 (native-inputs
11487 `(("bundler" ,bundler)
11488 ("ruby-rspec" ,ruby-rspec)
11489 ("ruby-kramdown" ,ruby-kramdown)
11490 ("ruby-simplecov" ,ruby-simplecov)))
11491 (arguments
11492 `(#:phases
11493 (modify-phases %standard-phases
11494 (replace 'check
11495 (lambda* (#:key tests? #:allow-other-keys)
11496 (when tests?
11497 (invoke "rspec"))
11498 #t)))))
11499 (synopsis "Convert HTML into Markdown")
11500 (description
11501 "This Ruby module allows you to map simple HTML back into
11502 Markdown---e.g., if you want to import existing HTML data in your
11503 application.")
11504 (home-page "https://github.com/xijo/reverse_markdown")
11505 (license license:wtfpl2)))
11506
11507 (define-public ruby-solargraph
11508 (package
11509 (name "ruby-solargraph")
11510 (version "0.36.0")
11511 (source
11512 (origin
11513 (method url-fetch)
11514 (uri (rubygems-uri "solargraph" version))
11515 (sha256
11516 (base32
11517 "0b93xzkgd1h06da9gdnwivj1mzbil8lc072y2838dy6i7bxgpy9i"))))
11518 (build-system ruby-build-system)
11519 (propagated-inputs
11520 `(("ruby-backport" ,ruby-backport)
11521 ("bundler" ,bundler)
11522 ("ruby-htmlentities" ,ruby-htmlentities)
11523 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
11524 ("ruby-maruku" ,ruby-maruku)
11525 ("ruby-nokogiri" ,ruby-nokogiri)
11526 ("ruby-parser" ,ruby-parser)
11527 ("ruby-reverse-markdown" ,ruby-reverse-markdown)
11528 ("ruby-rubocop" ,ruby-rubocop)
11529 ("ruby-thor" ,ruby-thor)
11530 ("ruby-tilt" ,ruby-tilt)
11531 ("ruby-yard" ,ruby-yard)))
11532 (native-inputs
11533 `(("ruby-rspec" ,ruby-rspec)
11534 ("ruby-pry" ,ruby-pry)
11535 ("ruby-simplecov" ,ruby-simplecov)
11536 ("ruby-webmock" ,ruby-webmock-2)))
11537 ;; FIXME: can't figure out how to run the tests properly:
11538
11539 ;; An error occurred while loading spec_helper.
11540 ;; Failure/Error: return gem_original_require(path)
11541 ;; LoadError:
11542 ;; cannot load such file -- spec_helper
11543 (arguments
11544 '(#:tests? #f
11545 #:phases
11546 (modify-phases %standard-phases
11547 (replace 'check
11548 (lambda* (#:key tests? #:allow-other-keys)
11549 (when tests?
11550 (invoke "rspec"))
11551 #t)))))
11552 (synopsis
11553 "IDE tools for code completion, inline documentation, and static analysis")
11554 (description
11555 "Solargraph provides a comprehensive suite of tools for Ruby
11556 programming: intellisense, diagnostics, inline documentation, and type
11557 checking.")
11558 (home-page "https://solargraph.org/")
11559 (license license:expat)))
11560
11561 (define-public ruby-wayback-machine-downloader
11562 (package
11563 (name "ruby-wayback-machine-downloader")
11564 (version "2.2.1")
11565 (source
11566 (origin
11567 (method url-fetch)
11568 (uri (rubygems-uri
11569 "wayback_machine_downloader"
11570 version))
11571 (sha256
11572 (base32
11573 "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2"))))
11574 (build-system ruby-build-system)
11575 (arguments
11576 '(#:tests? #f)) ; no tests
11577 (synopsis "Download archived websites from the Wayback Machine")
11578 (description
11579 "Wayback Machine Downloader is a command line tool for downloading
11580 websites from the Internet Archive's Wayback Machine (archive.org).
11581 It allows fine grained control over what to download by specifying
11582 which snapshots to consider and what files to include.")
11583 (home-page
11584 "https://github.com/hartator/wayback-machine-downloader")
11585 (license license:expat)))
11586
11587 (define-public ruby-wwtd
11588 (package
11589 (name "ruby-wwtd")
11590 (version "1.4.1")
11591 (home-page "https://github.com/grosser/wwtd")
11592 (source (origin
11593 (method git-fetch)
11594 (uri (git-reference
11595 (url home-page)
11596 (commit (string-append "v" version))))
11597 (file-name (git-file-name name version))
11598 (sha256
11599 (base32
11600 "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2"))
11601 (modules '((guix build utils)))
11602 (snippet
11603 '(begin
11604 ;; Remove bundled library.
11605 (delete-file "spec/rake-12.3.0.gem")
11606 #t))))
11607 (build-system ruby-build-system)
11608 (arguments
11609 '(;; XXX: Tests need multiple versions of ruby, wants to run
11610 ;; `bundle install`, etc.
11611 #:tests? #f
11612 #:phases (modify-phases %standard-phases
11613 (replace 'replace-git-ls-files
11614 (lambda _
11615 (substitute* "wwtd.gemspec"
11616 (("git ls-files lib/ bin/`")
11617 "find lib/ bin/ -type f |sort`"))
11618 #t))
11619 (add-before 'check 'remove-version-constraints
11620 (lambda _
11621 (delete-file "Gemfile.lock")
11622 #t))
11623 (replace 'check
11624 (lambda* (#:key tests? #:allow-other-keys)
11625 (if tests?
11626 (invoke "rspec" "spec/")
11627 (format #t "test suite not run~%"))
11628 #t)))))
11629 (native-inputs
11630 `(("ruby-bump" ,ruby-bump)
11631 ("ruby-rspec" ,ruby-rspec)))
11632 (synopsis "Run @file{.travis.yml} files locally")
11633 (description
11634 "WWTD is a @dfn{Travis Simulator} that lets you run test matrices
11635 defined in @file{.travis.yml} on your local machine, using @code{rvm},
11636 @code{rbenv}, or @code{chruby} to test different versions of Ruby.")
11637 (license license:expat)))