gnu: celluloid: Update to 0.21.
[jackhill/guix/guix.git] / gnu / packages / ruby.scm
... / ...
CommitLineData
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, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
11;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
12;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
13;;; Copyright © 2017, 2018, 2019 Christopher Baines <mail@cbaines.net>
14;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
15;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
16;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
17;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com>
18;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
19;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
20;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca>
21;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de>
22;;; Copyright © 2019 Brett Gilio <brettg@posteo.de>
23;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
24;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
25;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
26;;; Copyright © 2020 Holgr Peters <holger.peters@posteo.de>
27;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
28;;; Copyright © 2021 EuAndreh <eu@euandre.org>
29;;; Copyright © 2020 Tomás Ortín Fernández <tomasortin@mailbox.org>
30;;;
31;;; This file is part of GNU Guix.
32;;;
33;;; GNU Guix is free software; you can redistribute it and/or modify it
34;;; under the terms of the GNU General Public License as published by
35;;; the Free Software Foundation; either version 3 of the License, or (at
36;;; your option) any later version.
37;;;
38;;; GNU Guix is distributed in the hope that it will be useful, but
39;;; WITHOUT ANY WARRANTY; without even the implied warranty of
40;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
41;;; GNU General Public License for more details.
42;;;
43;;; You should have received a copy of the GNU General Public License
44;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
45
46(define-module (gnu packages ruby)
47 #:use-module ((guix licenses) #:prefix license:)
48 #:use-module (gnu packages)
49 #:use-module (gnu packages bison)
50 #:use-module (gnu packages c)
51 #:use-module (gnu packages check)
52 #:use-module (gnu packages compression)
53 #:use-module (gnu packages crypto)
54 #:use-module (gnu packages curl)
55 #:use-module (gnu packages databases)
56 #:use-module (gnu packages dbm)
57 #:use-module (gnu packages rails)
58 #:use-module (gnu packages readline)
59 #:use-module (gnu packages autotools)
60 #:use-module (gnu packages haskell-xyz)
61 #:use-module (gnu packages java)
62 #:use-module (gnu packages libffi)
63 #:use-module (gnu packages libidn)
64 #:use-module (gnu packages linux)
65 #:use-module (gnu packages lsof)
66 #:use-module (gnu packages maths)
67 #:use-module (gnu packages ncurses)
68 #:use-module (gnu packages networking)
69 #:use-module (gnu packages node)
70 #:use-module (gnu packages protobuf)
71 #:use-module (gnu packages python)
72 #:use-module (gnu packages python-xyz)
73 #:use-module (gnu packages ragel)
74 #:use-module (gnu packages rsync)
75 #:use-module (gnu packages sqlite)
76 #:use-module (gnu packages tls)
77 #:use-module (gnu packages version-control)
78 #:use-module (guix packages)
79 #:use-module (guix download)
80 #:use-module (guix git-download)
81 #:use-module (guix gexp)
82 #:use-module (guix utils)
83 #:use-module (guix build-system gnu)
84 #:use-module (gnu packages xml)
85 #:use-module (gnu packages web)
86 #:use-module (guix build-system ruby)
87 #:use-module ((srfi srfi-1) #:select (alist-delete)))
88
89(define %prawn-project-licenses
90 ;; This set of licenses applies to most (all?) components of the Prawn
91 ;; project (it is triple licensed).
92 (list license:ruby
93 license:gpl2+
94 license:gpl3+))
95
96(define-public ruby
97 (package
98 (name "ruby")
99 (version "2.6.5")
100 (source
101 (origin
102 (method url-fetch)
103 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
104 (version-major+minor version)
105 "/ruby-" version ".tar.xz"))
106 (sha256
107 (base32
108 "0qhsw2mr04f3lqinkh557msr35pb5rdaqy4vdxcj91flgxqxmmnm"))
109 (modules '((guix build utils)))
110 (snippet `(begin
111 ;; Remove bundled libffi
112 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
113 #t))))
114 (build-system gnu-build-system)
115 (arguments
116 `(#:test-target "test"
117 #:configure-flags '("--enable-shared") ; dynamic linking
118 #:phases
119 (modify-phases %standard-phases
120 (add-before 'configure 'replace-bin-sh-and-remove-libffi
121 (lambda _
122 (substitute* '("Makefile.in"
123 "ext/pty/pty.c"
124 "io.c"
125 "lib/mkmf.rb"
126 "process.c"
127 "test/rubygems/test_gem_ext_configure_builder.rb"
128 "test/rdoc/test_rdoc_parser.rb"
129 "test/ruby/test_rubyoptions.rb"
130 "test/ruby/test_process.rb"
131 "test/ruby/test_system.rb"
132 "tool/rbinstall.rb")
133 (("/bin/sh") (which "sh")))
134 #t)))))
135 (inputs
136 `(("readline" ,readline)
137 ("openssl" ,openssl)
138 ("libffi" ,libffi)
139 ("gdbm" ,gdbm)))
140 (propagated-inputs
141 `(("zlib" ,zlib)))
142 (native-search-paths
143 (list (search-path-specification
144 (variable "GEM_PATH")
145 (files (list (string-append "lib/ruby/vendor_ruby"))))))
146 (synopsis "Programming language interpreter")
147 (description "Ruby is a dynamic object-oriented programming language with
148a focus on simplicity and productivity.")
149 (home-page "https://www.ruby-lang.org")
150 (license license:ruby)))
151
152(define-public ruby-2.7
153 (package
154 (inherit ruby)
155 (version "2.7.2")
156 (source
157 (origin
158 (method url-fetch)
159 (uri (string-append "https://cache.ruby-lang.org/pub/ruby/"
160 (version-major+minor version)
161 "/ruby-" version ".tar.gz"))
162 (sha256
163 (base32
164 "1m63461mxi3fg4y3bspbgmb0ckbbb1ldgf9xi0piwkpfsk80cmvf"))
165 (modules '((guix build utils)))
166 (snippet `(begin
167 ;; Remove bundled libffi
168 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
169 #t))))
170 (arguments
171 `(#:test-target "test"
172 #:configure-flags '("--enable-shared") ; dynamic linking
173 #:phases
174 (modify-phases %standard-phases
175 (add-before 'configure 'replace-bin-sh-and-remove-libffi
176 (lambda _
177 (substitute* '("configure.ac"
178 "template/Makefile.in"
179 "lib/rubygems/installer.rb"
180 "ext/pty/pty.c"
181 "io.c"
182 "lib/mkmf.rb"
183 "process.c"
184 "test/rubygems/test_gem_ext_configure_builder.rb"
185 "test/rdoc/test_rdoc_parser.rb"
186 "test/ruby/test_rubyoptions.rb"
187 "test/ruby/test_process.rb"
188 "test/ruby/test_system.rb"
189 "tool/rbinstall.rb")
190 (("/bin/sh") (which "sh")))
191 #t)))))
192 (native-inputs
193 `(("autoconf" ,autoconf)))))
194
195(define-public ruby-3.0
196 (package
197 (inherit ruby-2.7)
198 (version "3.0.0")
199 (source
200 (origin
201 (method url-fetch)
202 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
203 (version-major+minor version)
204 "/ruby-" version ".tar.xz"))
205 (sha256
206 (base32
207 "1cbcixwnr0y8q0lg67wjgplp06kjd6p6hjjh680csv3v0bpsxgv8"))))))
208
209(define-public ruby-2.5
210 (package
211 (inherit ruby)
212 (version "2.5.8")
213 (source
214 (origin
215 (method url-fetch)
216 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
217 (version-major+minor version)
218 "/ruby-" version ".tar.xz"))
219 (sha256
220 (base32
221 "0vad5ah1lrdhxsyqr5iqc8c7r7qczpmm76cz8rsf4crimpzv5483"))
222 (modules '((guix build utils)))
223 (snippet `(begin
224 ;; Remove bundled libffi
225 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
226 #t))))))
227
228(define-public ruby-2.4
229 (package
230 (inherit ruby)
231 (version "2.4.10")
232 (source
233 (origin
234 (method url-fetch)
235 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
236 (version-major+minor version)
237 "/ruby-" version ".tar.xz"))
238 (sha256
239 (base32
240 "1prhqlgik1zmw9lakl6hkriqslspw48pvhxff17h7ns42p8qwrnm"))
241 (modules '((guix build utils)))
242 (snippet `(begin
243 ;; Remove bundled libffi
244 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
245 #t))))))
246
247(define-public mruby
248 (package
249 (name "mruby")
250 (version "2.1.2")
251 (source
252 (origin
253 (method git-fetch)
254 (uri (git-reference
255 (url "https://github.com/mruby/mruby")
256 (commit version)))
257 (file-name (git-file-name name version))
258 (sha256
259 (base32
260 "0fhfv8pi7i8jn2vgk2n2rjnbnfa12nhj514v8i4k353n7q4pmkh3"))))
261 (build-system gnu-build-system)
262 (arguments
263 `(#:test-target "test"
264 #:phases
265 (modify-phases %standard-phases
266 (delete 'configure)
267 (add-after 'unpack 'enable-verbose-tests
268 (lambda _
269 (substitute* "Makefile"
270 (("ruby ./minirake" m)
271 (string-append m " --verbose")))
272 #t))
273 (add-after 'unpack 'disable-broken-tests
274 (lambda _
275 (substitute* "mrbgems/mruby-io/test/io.rb"
276 (("assert\\('IO.popen.+$" m)
277 (string-append m "skip \"Hangs in the Guix build environment\"\n"))
278 (("assert\\('IO#isatty.+$" m)
279 (string-append m "skip \"Disable for Guix; there is no /dev/tty\"\n"))
280 ;; This one is really weird. The *expected* output is all wrong.
281 (("assert\\('`cmd`.*" m)
282 (string-append m "skip \"Disable for Guix\"\n"))
283 (("echo foo")
284 (string-append (which "echo") " foo")))
285 #t))
286 ;; There is no install target
287 (replace 'install
288 (lambda* (#:key outputs #:allow-other-keys)
289 (let* ((out (assoc-ref outputs "out"))
290 (bin (string-append out "/bin"))
291 (lib (string-append out "/lib")))
292 (mkdir-p bin)
293 (copy-recursively "build/host/bin" bin)
294 (mkdir-p lib)
295 (copy-recursively "build/host/lib" lib))
296 #t)))))
297 (native-inputs
298 `(("ruby" ,ruby)
299 ("bison" ,bison)))
300 (home-page "https://github.com/mruby/mruby")
301 (synopsis "Lightweight Ruby")
302 (description "mruby is the lightweight implementation of the Ruby
303language. Its syntax is Ruby 1.9 compatible. mruby can be linked and
304embedded within your application.")
305 (license license:expat)))
306
307(define-public ruby-commander
308 (package
309 (name "ruby-commander")
310 (version "4.4.7")
311 (source
312 (origin
313 (method url-fetch)
314 (uri (rubygems-uri "commander" version))
315 (sha256
316 (base32
317 "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg"))))
318 (build-system ruby-build-system)
319 (arguments
320 `(#:test-target "spec"
321 #:phases
322 (modify-phases %standard-phases
323 ;; Don't run or require rubocop, the code linting tool, as this is a
324 ;; bit unnecessary.
325 (add-after 'unpack 'dont-run-rubocop
326 (lambda _
327 (substitute* "Rakefile"
328 ((".*rubocop.*") "")
329 ((".*RuboCop.*") ""))
330 #t)))))
331 (propagated-inputs
332 `(("ruby-highline" ,ruby-highline)))
333 (native-inputs
334 `(("bundler" ,bundler)
335 ("ruby-rspec-core" ,ruby-rspec-core)
336 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
337 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
338 ("ruby-simplecov" ,ruby-simplecov)))
339 (home-page "https://github.com/commander-rb/commander")
340 (synopsis "Library for building Ruby command-line executables")
341 (description
342 "Commander aims to be a complete solution for Ruby command-line
343executables. Commander bridges the gap between other terminal related
344libraries (OptionParser, HighLine), while providing many new features, and an
345elegant API.")
346 (license license:expat)))
347
348(define-public ruby-highline
349 (package
350 (name "ruby-highline")
351 (version "2.0.1")
352 (source
353 (origin
354 (method url-fetch)
355 (uri (rubygems-uri "highline" version))
356 (sha256
357 (base32
358 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
359 (build-system ruby-build-system)
360 (arguments
361 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
362 (native-inputs
363 `(("bundler" ,bundler)
364 ("ruby-code-statistics" ,ruby-code-statistics)))
365 (synopsis
366 "HighLine helps you build command-line interfaces")
367 (description
368 "HighLine provides a high-level IO library that provides validation,
369type conversion, and more for command-line interfaces. HighLine also includes
370a menu system for providing multiple options to the user.")
371 (home-page "https://github.com/JEG2/highline")
372 (license (list license:gpl2 license:ruby))))
373
374(define-public ruby-hoe
375 (package
376 (name "ruby-hoe")
377 (version "3.21.0")
378 (source (origin
379 (method url-fetch)
380 (uri (rubygems-uri "hoe" version))
381 (sha256
382 (base32
383 "0qid0n56mgsjvq5ksxajv0gb92akky8imwgvw22ajms5g4fd6nf4"))))
384 (build-system ruby-build-system)
385 (arguments
386 '(#:phases
387 (modify-phases %standard-phases
388 ;; One of the tests fails if the SOURCE_DATE_EPOCH environment
389 ;; variable is set, so unset it for the duration of the tests.
390 ;;
391 ;; TestHoe#test_possibly_better
392 ;; [/tmp/guix-build-ruby-hoe-3.20.0.drv-0/gem/test/test_hoe.rb:250]:
393 ;; Expected: 2019-11-12 00:00:00 UTC
394 ;; Actual: 1970-01-01 00:00:00 UTC
395 (add-before 'check 'unset-SOURCE-DATE-EPOCH
396 (lambda _
397 (unsetenv "SOURCE_DATE_EPOCH")
398 #t))
399 (add-after 'check 'set-SOURCE-DATE-EPOCH-again
400 (lambda _
401 (setenv "SOURCE_DATE_EPOCH" "1")
402 #t)))))
403 (synopsis "Ruby project management helper")
404 (description
405 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
406maintain, and release projects and includes a dynamic plug-in system allowing
407for easy extensibility. Hoe ships with plug-ins for all the usual project
408tasks including rdoc generation, testing, packaging, deployment, and
409announcement.")
410 (home-page "https://www.zenspider.com/projects/hoe.html")
411 (license license:expat)))
412
413(define-public ruby-rake-compiler
414 (package
415 (name "ruby-rake-compiler")
416 (version "1.1.1")
417 (source (origin
418 (method url-fetch)
419 (uri (rubygems-uri "rake-compiler" version))
420 (sha256
421 (base32
422 "11sxgw10jrd6a4irb51jjwam9wikixn5kss11pw4b80cmh32yvpf"))))
423 (build-system ruby-build-system)
424 (arguments
425 '(#:tests? #f)) ; needs cucumber
426 (synopsis "Building and packaging helper for Ruby native extensions")
427 (description "Rake-compiler provides a framework for building and
428packaging native C and Java extensions in Ruby.")
429 (home-page "https://github.com/rake-compiler/rake-compiler")
430 (license license:expat)))
431
432(define-public ruby-rsync
433 (package
434 (name "ruby-rsync")
435 (version "1.0.9")
436 (source
437 (origin
438 (method url-fetch)
439 (uri (rubygems-uri "rsync" version))
440 (sha256
441 (base32
442 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
443 (build-system ruby-build-system)
444 (arguments
445 '(#:test-target "spec"
446 #:phases
447 (modify-phases %standard-phases
448 (add-after 'unpack 'remove-coveralls-requirement
449 (lambda _
450 (substitute* "spec/spec_helper.rb"
451 (("require 'coveralls'") "")
452 (("Coveralls.wear!") ""))
453 #t)))))
454 (native-inputs
455 `(("bundler" ,bundler)
456 ("rsync" ,rsync)
457 ("ruby-rspec-core" ,ruby-rspec-core)
458 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
459 ("ruby-rspec-mocks" ,ruby-rspec-mocks)))
460 (home-page "https://github.com/jbussdieker/ruby-rsync")
461 (synopsis "Ruby wrapper around rsync")
462 (description
463 "Ruby Rsync is a Ruby library that can synchronize files between remote
464hosts by wrapping the @file{rsync} binary.")
465 (license license:expat)))
466
467(define-public ruby-i18n
468 (package
469 (name "ruby-i18n")
470 (version "1.7.0")
471 (source (origin
472 (method url-fetch)
473 (uri (rubygems-uri "i18n" version))
474 (sha256
475 (base32
476 "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl"))))
477 (build-system ruby-build-system)
478 (arguments
479 '(#:tests? #f)) ; no tests
480 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
481 (synopsis "Internationalization library for Ruby")
482 (description "Ruby i18n is an internationalization and localization
483solution for Ruby programs. It features translation and localization,
484interpolation of values to translations, pluralization, customizable
485transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
486translation data, custom key/scope separator, custom exception handlers, and
487an extensible architecture with a swappable backend.")
488 (home-page "https://github.com/ruby-i18n/i18n")
489 (license license:expat)))
490
491(define-public ruby-iruby
492 (package
493 (name "ruby-iruby")
494 (version "0.3")
495 (source
496 (origin
497 (method url-fetch)
498 (uri (rubygems-uri "iruby" version))
499 (sha256
500 (base32
501 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
502 (build-system ruby-build-system)
503 (arguments
504 ;; TODO: Tests currently fail.
505 ;;
506 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
507 ;;
508 ;; 1) Failure:
509 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
510 ;; In [ expected
511 ;;
512 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
513 '(#:tests? #f
514 #:phases
515 (modify-phases %standard-phases
516 (add-after 'unpack 'patch-ipython
517 (lambda* (#:key inputs #:allow-other-keys)
518 (substitute* "lib/iruby/command.rb"
519 (("version = `")
520 (string-append
521 "version = `"
522 (assoc-ref inputs "python-ipython")
523 "/bin/"))
524 (("Kernel\\.exec\\('")
525 (string-append
526 "Kernel.exec('"
527 (assoc-ref inputs "python-ipython")
528 "/bin/")))
529 #t)))))
530 (inputs
531 `(("python-ipython" ,python-ipython)))
532 (propagated-inputs
533 `(("ruby-bond" ,ruby-bond)
534 ("ruby-data_uri" ,ruby-data_uri)
535 ("ruby-mimemagic" ,ruby-mimemagic)
536 ("ruby-multi-json" ,ruby-multi-json)
537 ("ruby-cztop" ,ruby-cztop)
538 ;; Optional inputs
539 ("ruby-pry" ,ruby-pry)))
540 (synopsis "Ruby kernel for Jupyter/IPython")
541 (description
542 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
543notebook).")
544 (home-page "https://github.com/SciRuby/iruby")
545 (license license:expat)))
546
547;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
548;; dependencies use RSpec for their test suites! To avoid these circular
549;; dependencies, we disable tests for all of the RSpec-related packages.
550(define-public ruby-rspec-support
551 (package
552 (name "ruby-rspec-support")
553 (version "3.8.0")
554 (source (origin
555 (method url-fetch)
556 (uri (rubygems-uri "rspec-support" version))
557 (sha256
558 (base32
559 "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609"))))
560 (build-system ruby-build-system)
561 (arguments
562 '(#:tests? #f)) ; avoid dependency cycles
563 (synopsis "RSpec support library")
564 (description "Support utilities for RSpec gems.")
565 (home-page "https://github.com/rspec/rspec-support")
566 (license license:expat)))
567
568(define-public ruby-rspec-core
569 (package
570 (name "ruby-rspec-core")
571 (version "3.8.0")
572 (source (origin
573 (method url-fetch)
574 (uri (rubygems-uri "rspec-core" version))
575 (sha256
576 (base32
577 "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p"))))
578 (build-system ruby-build-system)
579 (arguments
580 '(#:tests? #f)) ; avoid dependency cycles
581 (propagated-inputs
582 `(("ruby-rspec-support" ,ruby-rspec-support)))
583 (synopsis "RSpec core library")
584 (description "Rspec-core provides the RSpec test runner and example
585groups.")
586 (home-page "https://github.com/rspec/rspec-core")
587 (license license:expat)))
588
589(define-public ruby-rspec-core-2
590 (package (inherit ruby-rspec-core)
591 (version "2.14.8")
592 (source (origin
593 (method url-fetch)
594 (uri (rubygems-uri "rspec-core" version))
595 (sha256
596 (base32
597 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
598 (propagated-inputs `())))
599
600(define-public ruby-diff-lcs
601 (package
602 (name "ruby-diff-lcs")
603 (version "1.3")
604 (source (origin
605 (method url-fetch)
606 (uri (rubygems-uri "diff-lcs" version))
607 (sha256
608 (base32
609 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
610 (build-system ruby-build-system)
611 (arguments
612 '(#:tests? #f)) ; avoid dependency cycles
613 (synopsis "Compute the difference between two Enumerable sequences")
614 (description "Diff::LCS computes the difference between two Enumerable
615sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
616It includes utilities to create a simple HTML diff output format and a
617standard diff-like tool.")
618 (home-page "https://github.com/halostatue/diff-lcs")
619 (license license:expat)))
620
621(define-public ruby-rspec-expectations
622 (package
623 (name "ruby-rspec-expectations")
624 (version "3.8.2")
625 (source (origin
626 (method url-fetch)
627 (uri (rubygems-uri "rspec-expectations" version))
628 (sha256
629 (base32
630 "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm"))))
631 (build-system ruby-build-system)
632 (arguments
633 '(#:tests? #f)) ; avoid dependency cycles
634 (propagated-inputs
635 `(("ruby-rspec-support" ,ruby-rspec-support)
636 ("ruby-diff-lcs" ,ruby-diff-lcs)))
637 (synopsis "RSpec expectations library")
638 (description "Rspec-expectations provides a simple API to express expected
639outcomes of a code example.")
640 (home-page "https://github.com/rspec/rspec-expectations")
641 (license license:expat)))
642
643(define-public ruby-rspec-expectations-2
644 (package (inherit ruby-rspec-expectations)
645 (version "2.14.5")
646 (source (origin
647 (method url-fetch)
648 (uri (rubygems-uri "rspec-expectations" version))
649 (sha256
650 (base32
651 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
652 (propagated-inputs
653 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
654
655(define-public ruby-sorcerer
656 (package
657 (name "ruby-sorcerer")
658 (version "2.0.1")
659 (source
660 (origin
661 (method url-fetch)
662 (uri (rubygems-uri "sorcerer" version))
663 (sha256
664 (base32
665 "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h"))))
666 (build-system ruby-build-system)
667 (synopsis "Ripper-style abstract syntax tree to Ruby source generator")
668 (description "Sorcerer generates Ruby code from a Ripper-like abstract
669syntax tree (i.e. S-Expressions). Sorcerer is targeted mainly at small
670snippets of Ruby code, expressible in a single line. Longer examples may be
671re-sourced, but they will be rendered in a single-line format.")
672 (home-page "https://github.com/rspec-given/sorcerer")
673 (license license:expat)))
674
675(define-public ruby-given-core
676 (package
677 (name "ruby-given-core")
678 (version "3.8.0")
679 (source
680 (origin
681 (method url-fetch)
682 (uri (rubygems-uri "given_core" version))
683 (sha256
684 (base32
685 "1lzyqllbbv6as3qgwz2007mvy7wy247bgkch9adnmh1zfa73bkrg"))))
686 (build-system ruby-build-system)
687 (arguments '(#:tests? #f)) ;no test suite for the core package
688 (propagated-inputs
689 `(("ruby-sorcerer" ,ruby-sorcerer)))
690 (synopsis "Core abstractions used by rspec-given and minitest-given")
691 (description "Given_core is the basic functionality behind rspec-given and
692minitest-given, extensions that allow the use of Given/When/Then terminology
693when defining specifications.")
694 (home-page "https://github.com/rspec-given/rspec-given")
695 (license license:expat)))
696
697(define-public ruby-rspec-given
698 (package
699 (name "ruby-rspec-given")
700 (version "3.8.0")
701 (source
702 (origin
703 (method url-fetch)
704 (uri (rubygems-uri "rspec-given" version))
705 (sha256
706 (base32
707 "1783bazja10kbha8hk15khvybsq88siyax02cpkk688604h54nji"))))
708 (build-system ruby-build-system)
709 (arguments
710 `(#:test-target "rs"
711 #:phases
712 (modify-phases %standard-phases
713 (add-after 'unpack 'fix-rakefile
714 (lambda _
715 (substitute* '("Rakefile" "rakelib/gemspec.rake")
716 (("require '\\./lib/given/.*") "")
717 (("Given::VERSION") (format #f "~s" ,version))
718 ;; Fix the error: "cannot load such file -- example_helper"
719 (("sh \"rspec")
720 "sh \"rspec -Ilib:examples"))
721 #t))
722 (add-after 'extract-gemspec 'delete-failing-tests
723 ;; See: https://github.com/jimweirich/rspec-given/issues/57.
724 (lambda _
725 (substitute* ".gemspec"
726 (("\"spec/lib/given/natural_assertion_spec.rb\".freeze, ")
727 "")
728 (("\"examples/integration/failing_messages_spec.rb\".freeze, ")
729 ""))
730 (delete-file "spec/lib/given/natural_assertion_spec.rb")
731 (delete-file "examples/integration/failing_messages_spec.rb")
732 #t)))))
733 (native-inputs
734 `(("ruby-rspec" ,ruby-rspec)
735 ("ruby-minitest" ,ruby-minitest)))
736 (propagated-inputs
737 `(("ruby-given-core" ,ruby-given-core)
738 ("ruby-rspec" ,ruby-rspec)))
739 (synopsis "Given/When/Then for RSpec and Minitest")
740 (description "Given is an RSpec extension that allows the use of
741Given/When/Then terminology when defining specifications, in a way similar to
742the Cucumber Gherkin language.")
743 (home-page "https://github.com/rspec-given/rspec-given")
744 (license license:expat)))
745
746(define-public ruby-rspec-its
747 (package
748 (name "ruby-rspec-its")
749 (version "1.3.0")
750 (source
751 (origin
752 (method git-fetch)
753 (uri (git-reference
754 (url "https://github.com/rspec/rspec-its")
755 (commit (string-append "v" version))))
756 (file-name (git-file-name name version))
757 (sha256
758 (base32
759 "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p"))))
760 (build-system ruby-build-system)
761 (arguments
762 `(#:test-target "spec"
763 #:phases
764 (modify-phases %standard-phases
765 (add-after 'unpack 'dont-install-gems-from-gemfile
766 (lambda _
767 (substitute* "Gemfile"
768 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
769 ""))
770 #t))
771 (add-before 'build 'loosen-ffi-requirement
772 (lambda _
773 ;; Accept any version of ruby-ffi.
774 (substitute* "Gemfile"
775 ((" gem 'ffi', '~> 1\\.9\\.25'")
776 " gem 'ffi'"))
777 #t))
778 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
779 (lambda _
780 (substitute* "rspec-its.gemspec"
781 (("rake.*") "rake'\n")
782 (("spec.add_development_dependency 'cucumber'.*")
783 "spec.add_development_dependency 'cucumber'\n")
784 (("bundler.*") "bundler'\n")
785 (("\"aruba.*") "'aruba'\n"))
786 #t)))))
787 (propagated-inputs
788 `(("ruby-rspec-core" ,ruby-rspec-core)
789 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
790 (native-inputs
791 `(("bundler" ,bundler)
792 ("ruby-cucumber" ,ruby-cucumber)
793 ("ruby-ffi" ,ruby-ffi)
794 ("ruby-aruba" ,ruby-aruba)))
795 (synopsis "RSpec extension that provides the @code{its} method")
796 (description
797 "RSpec::Its provides the its method as a short-hand to specify the expected
798value of an attribute. For example, one can use @code{its(:size)\\{should
799eq(1)\\}}.")
800 (home-page "https://github.com/rspec/rspec-its")
801 (license license:expat)))
802
803;;; This variant is used to break a cycle with ruby-protobuf.
804(define-public ruby-rspec-its-minimal
805 (hidden-package
806 (package
807 (inherit ruby-rspec-its)
808 (arguments
809 (substitute-keyword-arguments (package-arguments ruby-rspec-its)
810 ((#:tests? _ #f) #f)))
811 (native-inputs '()))))
812
813(define-public ruby-rspec-mocks
814 (package
815 (name "ruby-rspec-mocks")
816 (version "3.8.0")
817 (source (origin
818 (method url-fetch)
819 (uri (rubygems-uri "rspec-mocks" version))
820 (sha256
821 (base32
822 "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp"))))
823 (build-system ruby-build-system)
824 (arguments
825 '(#:tests? #f)) ; avoid dependency cycles
826 (propagated-inputs
827 `(("ruby-rspec-support" ,ruby-rspec-support)
828 ("ruby-diff-lcs" ,ruby-diff-lcs)))
829 (synopsis "RSpec stubbing and mocking library")
830 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
831support for stubbing and mocking.")
832 (home-page "https://github.com/rspec/rspec-mocks")
833 (license license:expat)))
834
835(define-public ruby-rspec-mocks-2
836 (package (inherit ruby-rspec-mocks)
837 (version "2.14.6")
838 (source (origin
839 (method url-fetch)
840 (uri (rubygems-uri "rspec-mocks" version))
841 (sha256
842 (base32
843 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
844 (propagated-inputs
845 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
846
847(define-public ruby-rspec-rerun
848 (package
849 (name "ruby-rspec-rerun")
850 (version "1.1.0")
851 (source
852 (origin
853 (method url-fetch)
854 (uri (rubygems-uri "rspec-rerun" version))
855 (sha256
856 (base32
857 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
858 (build-system ruby-build-system)
859 (arguments
860 '(;; No included tests
861 #:tests? #f))
862 (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
863 (synopsis "Track failed RSpec tests to re-run them")
864 (description
865 "This package provides an automated way to track, and then re-run failed
866RSpec tests.")
867 (home-page "https://github.com/dblock/rspec-rerun")
868 (license license:expat)))
869
870(define-public ruby-rspec-wait
871 (package
872 (name "ruby-rspec-wait")
873 (version "0.0.9")
874 (source
875 (origin
876 (method url-fetch)
877 (uri (rubygems-uri "rspec-wait" version))
878 (sha256
879 (base32
880 "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
881 (build-system ruby-build-system)
882 (arguments
883 '(#:phases
884 (modify-phases %standard-phases
885 (replace 'check
886 (lambda _
887 (invoke "rake" "spec"))))))
888 (native-inputs
889 `(("bundler" ,bundler)))
890 (propagated-inputs
891 `(("ruby-rspec" ,ruby-rspec)))
892 (home-page "https://github.com/laserlemon/rspec-wait")
893 (synopsis "Wait for conditions in RSpec")
894 (description
895 "RSpec::Wait strives to make it easier to test asynchronous or slow
896interactions.")
897 (license license:expat)))
898
899(define-public ruby-rspec
900 (package
901 (name "ruby-rspec")
902 (version "3.8.0")
903 (source (origin
904 (method url-fetch)
905 (uri (rubygems-uri "rspec" version))
906 (sha256
907 (base32
908 "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3"))))
909 (build-system ruby-build-system)
910 (arguments
911 '(#:tests? #f)) ; avoid dependency cycles
912 (propagated-inputs
913 `(("ruby-rspec-core" ,ruby-rspec-core)
914 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
915 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
916 (synopsis "Behavior-driven development framework for Ruby")
917 (description "RSpec is a behavior-driven development (BDD) framework for
918Ruby. This meta-package includes the RSpec test runner, along with the
919expectations and mocks frameworks.")
920 (home-page "https://rspec.info/")
921 (license license:expat)))
922
923(define-public ruby-rspec-2
924 (package (inherit ruby-rspec)
925 (version "2.14.1")
926 (source (origin
927 (method url-fetch)
928 (uri (rubygems-uri "rspec" version))
929 (sha256
930 (base32
931 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
932 (propagated-inputs
933 `(("ruby-rspec-core" ,ruby-rspec-core-2)
934 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
935 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
936
937;; Bundler is yet another source of circular dependencies, so we must disable
938;; its test suite as well.
939(define-public bundler
940 (package
941 (name "bundler")
942 (version "2.1.4")
943 (source (origin
944 (method url-fetch)
945 (uri (rubygems-uri "bundler" version))
946 (sha256
947 (base32
948 "12glbb1357x91fvd004jgkw7ihlkpc9dwr349pd7j83isqhls0ah"))))
949 (build-system ruby-build-system)
950 (arguments
951 '(#:tests? #f)) ; avoid dependency cycles
952 (synopsis "Ruby gem bundler")
953 (description "Bundler automatically downloads and installs a list of gems
954specified in a \"Gemfile\", as well as their dependencies.")
955 (home-page "https://bundler.io/")
956 (license license:expat)))
957
958(define-public ruby-builder
959 (package
960 (name "ruby-builder")
961 (version "3.2.4")
962 (source (origin
963 (method url-fetch)
964 (uri (rubygems-uri "builder" version))
965 (sha256
966 (base32
967 "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr"))))
968 (build-system ruby-build-system)
969 (arguments
970 `(#:phases
971 (modify-phases %standard-phases
972 (add-after 'unpack 'do-not-use-rvm
973 (lambda _
974 (substitute* "rakelib/tags.rake"
975 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
976 #t)))))
977 (synopsis "Ruby library to create structured data")
978 (description "Builder provides a number of builder objects that make it
979easy to create structured data. Currently the following builder objects are
980supported: XML Markup and XML Events.")
981 (home-page "https://github.com/jimweirich/builder")
982 (license license:expat)))
983
984(define-public ruby-bump
985 (package
986 (name "ruby-bump")
987 (version "0.7.0")
988 (source
989 (origin
990 (method url-fetch)
991 (uri (rubygems-uri "bump" version))
992 (sha256
993 (base32
994 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
995 (build-system ruby-build-system)
996 (arguments
997 '(;; No included tests
998 #:tests? #f))
999 (synopsis "Tool for working with Rubygems")
1000 (description
1001 "Bump provides commands to manage Rubygem versioning, updating to the
1002next patch version for example.")
1003 (home-page "https://github.com/gregorym/bump")
1004 (license license:expat)))
1005
1006(define-public ruby-rjb
1007 (package
1008 (name "ruby-rjb")
1009 (version "1.5.5")
1010 (source (origin
1011 (method url-fetch)
1012 (uri (rubygems-uri "rjb" version))
1013 (sha256
1014 (base32
1015 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
1016 (build-system ruby-build-system)
1017 (arguments
1018 `(#:tests? #f ; no rakefile
1019 #:phases
1020 (modify-phases %standard-phases
1021 (add-before 'build 'set-java-home
1022 (lambda* (#:key inputs #:allow-other-keys)
1023 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
1024 #t)))))
1025 (native-inputs
1026 `(("jdk" ,icedtea "jdk")))
1027 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
1028 (description "RJB is a bridge program that connects Ruby and Java via the
1029Java Native Interface.")
1030 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
1031 (license license:lgpl2.1+)))
1032
1033(define-public ruby-log4r
1034 (package
1035 (name "ruby-log4r")
1036 (version "1.1.10")
1037 (source
1038 (origin
1039 (method url-fetch)
1040 (uri (rubygems-uri "log4r" version))
1041 (sha256
1042 (base32
1043 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
1044 (build-system ruby-build-system)
1045 (arguments
1046 '(#:tests? #f)) ; no Rakefile in gem
1047 (synopsis "Flexible logging library for Ruby")
1048 (description "Comprehensive and flexible logging library written
1049in Ruby for use in Ruby programs. It features a hierarchical logging
1050system of any number of levels, custom level names, logger
1051inheritance, multiple output destinations per log event, execution
1052tracing, custom formatting, thread safteyness, XML and YAML
1053configuration, and more.")
1054 (home-page "http://log4r.rubyforge.org/")
1055 (license license:bsd-3)))
1056
1057(define-public ruby-atoulme-antwrap
1058 (package
1059 (name "ruby-atoulme-antwrap")
1060 (version "0.7.5")
1061 (source (origin
1062 (method url-fetch)
1063 (uri (rubygems-uri "atoulme-Antwrap" version))
1064 (sha256
1065 (base32
1066 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
1067 (build-system ruby-build-system)
1068 ;; Test data required for most of the tests are not included.
1069 (arguments `(#:tests? #f))
1070 (native-inputs
1071 `(("ruby-hoe" ,ruby-hoe)))
1072 (inputs
1073 `(("ruby-rjb" ,ruby-rjb)))
1074 (synopsis "Ruby wrapper for the Ant build tool")
1075 (description "Antwrap is a Ruby module that wraps the Apache Ant build
1076tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
1077script.")
1078 (home-page "http://rubyforge.org/projects/antwrap/")
1079 (license license:expat)))
1080
1081(define-public ruby-atoulme-saikuro
1082 (package
1083 (name "ruby-atoulme-saikuro")
1084 (version "1.2.1")
1085 (source (origin
1086 (method url-fetch)
1087 (uri (rubygems-uri "atoulme-Saikuro" version))
1088 (sha256
1089 (base32
1090 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
1091 (build-system ruby-build-system)
1092 ;; FIXME: There are no unit tests. The tests are demonstrations of the
1093 ;; "saikuro" tool.
1094 (arguments `(#:tests? #f))
1095 (synopsis "Cyclomatic complexity analyzer")
1096 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
1097given Ruby source code Saikuro will generate a report listing the cyclomatic
1098complexity of each method found. In addition, Saikuro counts the number of
1099lines per method and can generate a listing of the number of tokens on each
1100line of code.")
1101 (home-page "http://www.github.com/atoulme/Saikuro")
1102 ;; File headers contain the BSD-3 license and the README.rdoc says that
1103 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
1104 ;; of the Expat license.
1105 (license license:bsd-3)))
1106
1107(define-public ruby-awesome-print
1108 (package
1109 (name "ruby-awesome-print")
1110 (version "1.8.0")
1111 (source
1112 (origin
1113 (method url-fetch)
1114 (uri (rubygems-uri "awesome_print" version))
1115 (sha256
1116 (base32
1117 "14arh1ixfsd6j5md0agyzvksm5svfkvchb90fp32nn7y3avcmc2h"))))
1118 (build-system ruby-build-system)
1119 (arguments
1120 `(#:phases
1121 (modify-phases %standard-phases
1122 (replace 'check
1123 (lambda _
1124 ;; Remove failing test.
1125 (for-each delete-file
1126 '("spec/ext/nokogiri_spec.rb"
1127 "spec/colors_spec.rb"
1128 "spec/formats_spec.rb"
1129 "spec/methods_spec.rb"
1130 "spec/misc_spec.rb"
1131 "spec/objects_spec.rb"))
1132 (invoke "rspec" "-c" "spec"))))))
1133 (native-inputs
1134 `(("ruby-nokogiri" ,ruby-nokogiri)
1135 ("ruby-rspec" ,ruby-rspec)
1136 ("ruby-simplecov" ,ruby-simplecov)))
1137 (synopsis "Pretty print Ruby objects to visualize their structure")
1138 (description
1139 "Ruby dubugging companion: pretty print Ruby objects to visualize their
1140structure. Supports custom object formatting via plugins.")
1141 (home-page "https://github.com/awesome-print/awesome_print")
1142 (license license:expat)))
1143
1144(define-public ruby-pandoc-ruby
1145 (package
1146 (name "ruby-pandoc-ruby")
1147 (version "2.1.4")
1148 (source
1149 (origin
1150 (method git-fetch) ;the gem lacks many test files
1151 (uri (git-reference
1152 (url "https://github.com/xwmx/pandoc-ruby")
1153 (commit version)))
1154 (file-name (git-file-name name version))
1155 (sha256
1156 (base32
1157 "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935"))))
1158 (build-system ruby-build-system)
1159 (arguments
1160 `(#:phases
1161 (modify-phases %standard-phases
1162 (add-after 'unpack 'disable-failing-tests
1163 ;; TODO: Remove this phase after ghc-pandoc gets upgraded to 2.9.2+
1164 ;; (see: https://github.com/xwmx/pandoc-ruby/issues/39).
1165 (lambda _
1166 (substitute* "test/test_conversions.rb"
1167 (("next if from == to.*" all)
1168 (string-append
1169 all
1170 " next if ['plain', 'beamer'].include? to\n")))
1171 #t))
1172 (add-after 'unpack 'patch-pandoc-path
1173 (lambda* (#:key inputs #:allow-other-keys)
1174 (let ((pandoc (string-append (assoc-ref inputs "pandoc")
1175 "/bin/pandoc")))
1176 (substitute* "lib/pandoc-ruby.rb"
1177 (("@@pandoc_path = 'pandoc'")
1178 (format #f "@@pandoc_path = '~a'" pandoc)))
1179 (substitute* "test/test_pandoc_ruby.rb"
1180 (("('|\")pandoc" _ quote)
1181 (string-append quote pandoc))
1182 (("\\^pandoc")
1183 ".*pandoc"))
1184 #t)))
1185 (add-after 'extract-gemspec 'remove-Gemfile.lock
1186 (lambda _
1187 (delete-file "Gemfile.lock")
1188 (substitute* "pandoc-ruby.gemspec"
1189 (("Gemfile\\.lock") ""))
1190 #t)))))
1191 (native-inputs
1192 `(("ruby-mocha" ,ruby-mocha)))
1193 (inputs
1194 `(("pandoc" ,pandoc)))
1195 (synopsis "Ruby wrapper for Pandoc")
1196 (description "PandocRuby is a wrapper for Pandoc, a Haskell library with
1197command line tools for converting one markup format to another. Pandoc can
1198convert documents from a variety of formats including markdown,
1199reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a
1200variety of other formats, including markdown, reStructuredText, HTML, LaTeX,
1201ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki
1202markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and
1203more.")
1204 (home-page "https://github.com/xwmx/pandoc-ruby")
1205 (license license:expat)))
1206
1207(define-public ruby-patron
1208 (package
1209 (name "ruby-patron")
1210 (version "0.13.3")
1211 (source
1212 (origin
1213 (method url-fetch)
1214 (uri (rubygems-uri "patron" version))
1215 (sha256
1216 (base32
1217 "0523gddx88zql2mq6655k60gy2ac8vybpzkcf90lmd9nx7wl3fi9"))))
1218 (build-system ruby-build-system)
1219 (inputs
1220 `(("curl" ,curl)))
1221 (arguments
1222 `(#:tests? #f)) ; no included tests
1223 (synopsis "Ruby HTTP client library based on @code{libcurl}")
1224 (description
1225 "Patron is a Ruby HTTP client library based on @code{libcurl}. It does
1226not try to expose the full power (read complexity) of @code{libcurl} but
1227instead tries to provide a sane API while taking advantage of @code{libcurl}
1228under the hood.")
1229 (home-page "https://github.com/toland/patron")
1230 (license license:expat)))
1231
1232(define-public ruby-slim
1233 (package
1234 (name "ruby-slim")
1235 (version "4.1.0")
1236 (source
1237 (origin
1238 (method url-fetch)
1239 (uri (rubygems-uri "slim" version))
1240 (sha256
1241 (base32
1242 "0gjx30g84c82qzg32bd7giscvb4206v7mvg56kc839w9wjagn36n"))))
1243 (build-system ruby-build-system)
1244 (arguments
1245 `(#:phases
1246 (modify-phases %standard-phases
1247 ;; See: https://github.com/slim-template/slim/issues/857 and
1248 ;; https://github.com/slim-template/slim/issues/858.
1249 (add-after 'unpack 'skip-broken-tests
1250 (lambda _
1251 (substitute* "test/core/test_embedded_engines.rb"
1252 (("def test_render_with_markdown")
1253 "def skipped_test_render_with_markdown"))
1254 (substitute* "test/translator/test_translator.rb"
1255 (("raise (\"Missing test for.*)" _ tail)
1256 (string-append "print " tail)))
1257 #t))
1258 ;; See: https://salsa.debian.org/ruby-team/ruby-slim/-/commit/
1259 ;; 824862bd99d1675bc699d8fc71ba965a785c1f44.
1260 (add-after 'unpack 'prevent-bundler-interference
1261 (lambda _
1262 (substitute* "Rakefile"
1263 (("require 'bundler/setup'") "nil")
1264 (("Bundler::GemHelper\\.install_tasks") "nil"))
1265 #t)))))
1266 (native-inputs
1267 `(("ruby-rack-test" ,ruby-rack-test)
1268 ("ruby-sinatra" ,ruby-sinatra)))
1269 (propagated-inputs
1270 `(("ruby-temple" ,ruby-temple)
1271 ("ruby-tilt" ,ruby-tilt)))
1272 (synopsis "Minimalist template language for Ruby")
1273 (description "Slim is a template language for Ruby that aims to reduce the
1274syntax to the minimum while remaining clear.")
1275 (home-page "http://slim-lang.com/")
1276 (license license:expat)))
1277
1278(define-public ruby-asciidoctor
1279 (package
1280 (name "ruby-asciidoctor")
1281 (version "2.0.10")
1282 (source
1283 (origin
1284 (method git-fetch) ;the gem release lacks a Rakefile
1285 (uri (git-reference
1286 (url "https://github.com/asciidoctor/asciidoctor")
1287 (commit (string-append "v" version))))
1288 (file-name (git-file-name name version))
1289 (sha256
1290 (base32
1291 "0jaxpnsdnx3qyjw5p2lsx1swny12q1i2vxw2kgdp4vlsyjv95z95"))))
1292 (build-system ruby-build-system)
1293 (arguments
1294 `(#:test-target "test:all"
1295 #:phases
1296 (modify-phases %standard-phases
1297 (replace 'replace-git-ls-files
1298 (lambda _
1299 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1300 ;; git ls-files output is merged in ruby-build-system.
1301 (substitute* "asciidoctor.gemspec"
1302 (("`git ls-files -z`")
1303 "`find . -type f -print0 |sort -z|cut -zc3-`"))
1304 #t))
1305 (add-after 'extract-gemspec 'strip-version-requirements
1306 (lambda _
1307 (delete-file "Gemfile")
1308 (substitute* "asciidoctor.gemspec"
1309 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1310 (string-append stripped "\n")))
1311 #t)))))
1312 (native-inputs
1313 `(("ruby-erubis" ,ruby-erubis)
1314 ("ruby-minitest" ,ruby-minitest)
1315 ("ruby-nokogiri" ,ruby-nokogiri)
1316 ("ruby-asciimath" ,ruby-asciimath)
1317 ("ruby-coderay" ,ruby-coderay)
1318 ("ruby-cucumber" ,ruby-cucumber)
1319 ("ruby-haml" ,ruby-haml)
1320 ("ruby-rouge" ,ruby-rouge)
1321 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
1322 ("ruby-simplecov" ,ruby-simplecov)
1323 ("ruby-slim" ,ruby-slim)
1324 ("ruby-tilt" ,ruby-tilt)))
1325 (synopsis "Converter from AsciiDoc content to other formats")
1326 (description "Asciidoctor is a text processor and publishing toolchain for
1327converting AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other
1328formats.")
1329 (home-page "https://asciidoctor.org")
1330 (license license:expat)))
1331
1332(define-public ruby-prawn-icon
1333 (package
1334 (name "ruby-prawn-icon")
1335 (version "2.5.0")
1336 (source
1337 (origin
1338 (method url-fetch)
1339 (uri (rubygems-uri "prawn-icon" version))
1340 (sha256
1341 (base32
1342 "1ivkdf8rdf92hhy97vbmc2a4w97vcvqd58jcj4z9hz3hfsb1526w"))))
1343 (build-system ruby-build-system)
1344 (arguments
1345 `(#:test-target "spec"
1346 #:phases (modify-phases %standard-phases
1347 (add-after 'unpack 'remove-unnecessary-dependencies
1348 (lambda _
1349 (substitute* '("Rakefile" "spec/spec_helper.rb")
1350 ((".*[Bb]undler.*") "")
1351 (("^require 'rubocop.*") "")
1352 (("^RuboCop.*") ""))
1353 #t)))))
1354 (native-inputs
1355 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
1356 ("ruby-pdf-reader" ,ruby-pdf-reader)
1357 ("ruby-rspec" ,ruby-rspec)
1358 ("ruby-simplecov" ,ruby-simplecov)))
1359 (propagated-inputs
1360 `(("ruby-prawn" ,ruby-prawn)))
1361 (synopsis "Icon fonts for use with the Prawn PDF toolkit")
1362 (description "@code{Prawn::Icon} provides various icon fonts including
1363FontAwesome, PaymentFont and Foundation Icons for use with the Prawn PDF
1364toolkit.")
1365 (home-page "https://github.com/jessedoyle/prawn-icon/")
1366 (license %prawn-project-licenses)))
1367
1368(define-public ruby-css-parser
1369 (package
1370 (name "ruby-css-parser")
1371 (version "1.7.1")
1372 (source
1373 (origin
1374 (method url-fetch)
1375 (uri (rubygems-uri "css_parser" version))
1376 (sha256
1377 (base32
1378 "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw"))))
1379 (build-system ruby-build-system)
1380 (arguments `(#:tests? #f)) ;gem doesn't ship with test suite
1381 (propagated-inputs
1382 `(("ruby-addressable" ,ruby-addressable)))
1383 (synopsis "Ruby Cascading Style Sheets (CSS) parser")
1384 (description "This package allows loading, parsing and cascading Cascading
1385Style Sheets (CSS) rule sets in Ruby.")
1386 (home-page "https://github.com/premailer/css_parser")
1387 (license license:expat)))
1388
1389(define-public ruby-prawn-svg
1390 (package
1391 (name "ruby-prawn-svg")
1392 (version "0.30.0")
1393 (source
1394 (origin
1395 (method url-fetch)
1396 (uri (rubygems-uri "prawn-svg" version))
1397 (sha256
1398 (base32
1399 "0df3l49cy3xpwi0b73hmi2ykbjg9kjwrvhk0k3z7qhh5ghmmrn77"))))
1400 (build-system ruby-build-system)
1401 (arguments
1402 `(#:phases (modify-phases %standard-phases
1403 (add-after 'unpack 'do-not-use-bundler
1404 (lambda _
1405 (substitute* "spec/spec_helper.rb"
1406 ((".*[Bb]undler.*") ""))
1407 #t))
1408 (replace 'check
1409 (lambda* (#:key tests? #:allow-other-keys)
1410 (when tests?
1411 (invoke "rspec" "-Ilib" "-rprawn-svg"))
1412 #t)))))
1413 (native-inputs
1414 `(("ruby-rspec" ,ruby-rspec)))
1415 (propagated-inputs
1416 `(("ruby-css-parser" ,ruby-css-parser)
1417 ("ruby-prawn" ,ruby-prawn)))
1418 (synopsis "SVG renderer for the Prawn PDF library")
1419 (description "This library allows rendering Scalable Vector Graphics (SVG)
1420graphics directly into a Portable Document Format (PDF) document using the
1421Prawn module.")
1422 (home-page "https://github.com/mogest/prawn-svg")
1423 (license license:expat)))
1424
1425(define-public ruby-prawn-templates
1426 (package
1427 (name "ruby-prawn-templates")
1428 (version "0.1.2")
1429 (source
1430 (origin
1431 (method git-fetch)
1432 (uri (git-reference
1433 (url "https://github.com/prawnpdf/prawn-templates")
1434 (commit version)))
1435 (file-name (git-file-name name version))
1436 (sha256
1437 (base32
1438 "0wll54wxxwixpwazfn4ffbqvqbfrl01cfsv8y11vnlzy7isx5xvl"))))
1439 (build-system ruby-build-system)
1440 (arguments
1441 `(#:phases (modify-phases %standard-phases
1442 (add-after 'unpack 'do-not-use-bundler
1443 (lambda _
1444 (substitute* "spec/spec_helper.rb"
1445 ((".*[Bb]undler.*") ""))
1446 #t))
1447 (replace 'check
1448 (lambda* (#:key tests? #:allow-other-keys)
1449 (when tests?
1450 (invoke "rspec"))
1451 #t)))))
1452 (native-inputs
1453 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
1454 ("ruby-rspec" ,ruby-rspec)))
1455 (propagated-inputs
1456 `(("ruby-pdf-reader" ,ruby-pdf-reader)
1457 ("ruby-prawn" ,ruby-prawn)))
1458 (synopsis "Prawn extension to include or combine PDF documents")
1459 (description "This @strong{unmaintained} package provides a Prawn
1460extension that allows including other Portable Document Format (PDF) documents
1461as background or combining several PDF documents into one. This functionality
1462used to be part of Prawn itself, but was extracted from Prawn 0.15.0 because
1463of its many longstanding issues.")
1464 (home-page "https://github.com/prawnpdf/prawn-templates")
1465 (license %prawn-project-licenses)))
1466
1467(define-public ruby-polyglot
1468 (package
1469 (name "ruby-polyglot")
1470 (version "0.3.5")
1471 (source
1472 (origin
1473 (method url-fetch)
1474 (uri (rubygems-uri "polyglot" version))
1475 (sha256
1476 (base32
1477 "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr"))))
1478 (build-system ruby-build-system)
1479 (arguments `(#:tests? #f)) ;no test suite
1480 (synopsis "Augment @code{require} to load non-Ruby file types")
1481 (description "The Polyglot library allows a Ruby module to register a
1482loader for the file type associated with a filename extension, and it augments
1483@code{require} to find and load matching files.")
1484 (home-page "https://github.com/cjheath/polyglot")
1485 (license license:expat)))
1486
1487(define-public ruby-treetop
1488 (package
1489 (name "ruby-treetop")
1490 (version "1.6.10")
1491 (source
1492 (origin
1493 (method git-fetch) ;no test suite in distributed gem
1494 (uri (git-reference
1495 (url "https://github.com/cjheath/treetop")
1496 (commit (string-append "v" version))))
1497 (file-name (git-file-name name version))
1498 (sha256
1499 (base32
1500 "1dmk94z6ivhrz5hsq68vl5vgydhkz89n394rha1ymddw3rymbfcv"))))
1501 (build-system ruby-build-system)
1502 (arguments
1503 `(#:test-target "spec"
1504 #:phases
1505 (modify-phases %standard-phases
1506 (replace 'replace-git-ls-files
1507 (lambda _
1508 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1509 ;; git ls-files output is merged in ruby-build-system.
1510 (substitute* "treetop.gemspec"
1511 (("`git ls-files -z`")
1512 "`find . -type f -print0 |sort -z|cut -zc3-`"))
1513 #t)))))
1514 (native-inputs
1515 `(("ruby-activesupport" ,ruby-activesupport)
1516 ("ruby-rr" ,ruby-rr)
1517 ("ruby-rspec" ,ruby-rspec)))
1518 (propagated-inputs
1519 `(("ruby-polyglot" ,ruby-polyglot)))
1520 (synopsis "Ruby-based parsing DSL based on parsing expression grammars")
1521 (description "This package provides a Ruby-based Parsing Expression
1522Grammar (PEG) parser generator Domain Specific Language (DSL).")
1523 (home-page "https://github.com/cjheath/treetop")
1524 (license license:expat)))
1525
1526(define-public ruby-typhoeus
1527 (package
1528 (name "ruby-typhoeus")
1529 (version "1.4.0")
1530 (source
1531 (origin
1532 (method url-fetch)
1533 (uri (rubygems-uri "typhoeus" version))
1534 (sha256
1535 (base32
1536 "1m22yrkmbj81rzhlny81j427qdvz57yk5wbcf3km0nf3bl6qiygz"))))
1537 (build-system ruby-build-system)
1538 (arguments
1539 `(#:tests? #f)) ; no included tests
1540 (propagated-inputs
1541 `(("ruby-ethon" ,ruby-ethon)))
1542 (synopsis "@code{libcurl} wrapper in Ruby")
1543 (description
1544 "Like a modern code version of the mythical beast with 100 serpent heads,
1545Typhoeus runs HTTP requests in parallel while cleanly encapsulating handling
1546logic.")
1547 (home-page "https://github.com/typhoeus/typhoeus")
1548 (license license:expat)))
1549
1550(define-public ruby-rubocop-rspec
1551 (package
1552 (name "ruby-rubocop-rspec")
1553 (version "2.2.0")
1554 (source
1555 (origin
1556 (method git-fetch)
1557 (uri (git-reference
1558 (url "https://github.com/rubocop-hq/rubocop-rspec")
1559 (commit (string-append "v" version))))
1560 (file-name (git-file-name name version))
1561 (sha256
1562 (base32
1563 "0gdpjpympb6qc77bang759z7z6lckf14ghkx8v6614agxg8l3g5y"))))
1564 (build-system ruby-build-system)
1565 (arguments
1566 '(#:test-target "internal_investigation"
1567 #:phases
1568 (modify-phases %standard-phases
1569 (add-before 'check 'set-HOME
1570 (lambda _
1571 (setenv "HOME" "/tmp")
1572 #t)))))
1573 (propagated-inputs
1574 `(("ruby-rubocop" ,ruby-rubocop)
1575 ("ruby-rubocop-ast" ,ruby-rubocop-ast)))
1576 (native-inputs
1577 `(("ruby-rack" ,ruby-rack)
1578 ("ruby-rspec" ,ruby-rspec)
1579 ("ruby-rubocop-performance" ,ruby-rubocop-performance)
1580 ("ruby-simplecov" ,ruby-simplecov)
1581 ("ruby-yard" ,ruby-yard)))
1582 (synopsis "Code style checking for RSpec files")
1583 (description "This package provides a plugin for the RuboCop code style
1584enforcing & linting tool.")
1585 (home-page "https://github.com/rubocop-hq/rubocop-rspec")
1586 (license license:expat)))
1587
1588(define-public ruby-rubocop-rspec-minimal
1589 (hidden-package
1590 (package
1591 (inherit ruby-rubocop-rspec)
1592 (arguments
1593 (substitute-keyword-arguments (package-arguments ruby-rubocop-rspec)
1594 ((#:tests? _ #f) #f)))
1595 (propagated-inputs '())
1596 (native-inputs '()))))
1597
1598(define-public ruby-rubocop-performance
1599 (package
1600 (name "ruby-rubocop-performance")
1601 (version "1.9.2")
1602 (source
1603 (origin
1604 (method git-fetch)
1605 (uri (git-reference
1606 (url "https://github.com/rubocop-hq/rubocop-performance")
1607 (commit (string-append "v" version))))
1608 (file-name (git-file-name name version))
1609 (sha256
1610 (base32
1611 "04lmkmz6c0ccs5miikrww7lakp7y6xz00g7b47ay7rn7sx5j6qyf"))))
1612 (build-system ruby-build-system)
1613 (arguments
1614 `(#:tests? #f ; tests require a git checkout of rubocop's source code.
1615 #:phases
1616 (modify-phases %standard-phases
1617 (replace 'replace-git-ls-files
1618 (lambda _
1619 (substitute* "rubocop-performance.gemspec"
1620 (("`git ls-files -z config lib LICENSE.txt README.md`")
1621 "`find config lib LICENSE.txt README.md -type f -print0 |sort -z`"))
1622 #t))
1623 (add-before 'check 'set-HOME
1624 (lambda _
1625 (setenv "HOME" "/tmp")
1626 #t)))))
1627 (propagated-inputs
1628 `(("ruby-rubocop" ,ruby-rubocop)
1629 ("ruby-rubocop-ast" ,ruby-rubocop-ast)))
1630 (native-inputs
1631 `(("ruby-bump" ,ruby-bump)
1632 ("ruby-yard" ,ruby-yard)))
1633 (synopsis "Performance optimizations checkers for Ruby code")
1634 (description "This package provides a collection of RuboCop cops to check
1635for performance optimizations in Ruby code.")
1636 (home-page "https://docs.rubocop.org/rubocop-performance/")
1637 (license license:expat)))
1638
1639(define-public ruby-rubocop-performance-minimal
1640 (hidden-package
1641 (package
1642 (inherit ruby-rubocop-performance)
1643 (arguments
1644 (substitute-keyword-arguments (package-arguments ruby-rubocop-performance)
1645 ((#:tests? _ #f) #f)))
1646 (propagated-inputs '())
1647 (native-inputs '()))))
1648
1649(define-public ruby-gimme
1650 (let ((revision "1")
1651 (commit "4e71f0236f1271871916dd403261d26533db34c0"))
1652 (package
1653 (name "ruby-gimme")
1654 (version (git-version "0.5.0" revision commit))
1655 (source
1656 (origin
1657 (method git-fetch)
1658 (uri (git-reference
1659 (url "https://github.com/searls/gimme")
1660 (commit commit)))
1661 (file-name (git-file-name name version))
1662 (sha256
1663 (base32
1664 "0hrd32ygvf3i7h47ak8f623cz8ns9q7g60nnnvvlnywbggjaz3h6"))))
1665 (build-system ruby-build-system)
1666 (native-inputs
1667 `(("ruby-coveralls" ,ruby-coveralls)
1668 ("ruby-cucumber" ,ruby-cucumber)
1669 ("ruby-pry" ,ruby-pry)
1670 ("ruby-simplecov" ,ruby-simplecov)
1671 ("ruby-rspec-given" ,ruby-rspec-given)))
1672 (arguments
1673 `(;; The cucumber task fails with error: "index 3 out of matches
1674 ;; (IndexError)", apparently due to our newer Cucumber version.
1675 ;; TODO: Try the "default" task with a future release.
1676 #:test-target "spec"
1677 #:phases
1678 (modify-phases %standard-phases
1679 (add-after 'extract-gemspec 'prepare-for-tests
1680 (lambda _
1681 ;; Delete failing tests (possibly due to our newer rspec
1682 ;; version).
1683 (delete-file "spec/gimme/gives_class_methods_spec.rb")
1684 (delete-file "spec/gimme/rspec_adapter_spec.rb")
1685 (delete-file "spec/gimme/verifies_class_methods_spec.rb")
1686 ;; Fix duplicate version requirements and de-register files.
1687 (delete-file "Gemfile")
1688 (delete-file "Gemfile.lock")
1689 (substitute* "gimme.gemspec"
1690 ((".*\"Gemfile\".*") "")
1691 ((".*\"Gemfile\\.lock\",.*") "")
1692 ((".*(rspec|cucumber).*\">= 0\".*") "")
1693 (("\"spec/gimme/gives_class_methods_spec.rb\",") "")
1694 (("\"spec/gimme/rspec_adapter_spec.rb\",") "")
1695 (("\"spec/gimme/verifies_class_methods_spec.rb\",") "")
1696 ;; All of these gems relate to development, and are
1697 ;; unnecessary when running the tests.
1698 ((".*(add|gem).*guard-.*") "")
1699 ((".*(add|gem).*jeweler.*") "")
1700 ((".*(add|gem).*pry.*") "")
1701 ((".*(add|gem).*growl.*") "")
1702 ((".*(add|gem).*rb-fsevent.*") ""))
1703 #t)))))
1704 (synopsis "Lightweight test double library for Ruby")
1705 (description "Gimme is a very lightweight test double library for Ruby,
1706based on Mockito (a mocking framework for Java). It is an opinionated (but
1707not noisy) means to facilitate test-driving by enabling the authors to specify
1708only what they care about.")
1709 (home-page "https://github.com/searls/gimme")
1710 (license license:expat))))
1711
1712(define-public ruby-standard
1713 (package
1714 (name "ruby-standard")
1715 (version "0.4.7")
1716 (source
1717 (origin
1718 (method git-fetch) ;no test suite in distributed gem
1719 (uri (git-reference
1720 (url "https://github.com/testdouble/standard")
1721 (commit (string-append "v" version))))
1722 (file-name (git-file-name name version))
1723 (sha256
1724 (base32
1725 "0ylx0lm2pbbgr5h7fban592w96bl3wxmvfcpcdfrhkxnpg5kiwgv"))))
1726 (build-system ruby-build-system)
1727 (arguments
1728 ;; TODO: the tests are currently broken due to using a newer Rubocop.
1729 `(#:tests? #f
1730 #:phases
1731 (modify-phases %standard-phases
1732 (add-after 'unpack 'relax-version-requiremens
1733 (lambda _
1734 (delete-file "Gemfile")
1735 (delete-file "Gemfile.lock")
1736 #t))
1737 (replace 'replace-git-ls-files
1738 (lambda _
1739 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1740 ;; git ls-files output is merged in ruby-build-system.
1741 (substitute* "standard.gemspec"
1742 (("`git ls-files -z`")
1743 "`find . -type f -not -regex '.*\\.gem$' -print0 \
1744|sort -z|cut -zc3-`"))
1745 #t)))))
1746 (native-inputs
1747 `(("ruby-gimme" ,ruby-gimme)
1748 ("ruby-pry" ,ruby-pry)
1749 ("ruby-simplecov" ,ruby-simplecov)))
1750 (propagated-inputs
1751 `(("ruby-rubocop" ,ruby-rubocop)
1752 ("ruby-rubocop-performance" ,ruby-rubocop-performance)))
1753 (synopsis "Ruby Style Guide, with linter & automatic code fixer")
1754 (description "Standard is a port of StandardJS. Like StandardJS, it aims
1755to save time in the following ways:
1756@itemize
1757@item No configuration.
1758@item Automatically format code.
1759@item Catch style issues and programmer errors early.
1760@end itemize")
1761 (home-page "https://github.com/testdouble/standard")
1762 (license license:expat)))
1763
1764(define-public ruby-chunky-png
1765 (package
1766 (name "ruby-chunky-png")
1767 (version "1.3.14")
1768 (source
1769 (origin
1770 (method git-fetch)
1771 (uri (git-reference
1772 (url "https://github.com/wvanbergen/chunky_png")
1773 (commit (string-append "v" version))))
1774 (file-name (git-file-name name version))
1775 (sha256
1776 (base32 "1m7y11ix38h5a2pj5v81qdmvqh980ql9hp62hk2dxwkwsa4nh22h"))))
1777 (build-system ruby-build-system)
1778 (arguments
1779 `(#:test-target "spec"
1780 #:phases
1781 (modify-phases %standard-phases
1782 (add-after 'unpack 'disable-bundler
1783 (lambda _
1784 (substitute* (find-files "." "\\.rb$")
1785 (("require.*bundler/setup.*") ""))
1786 #t))
1787 (replace 'replace-git-ls-files
1788 (lambda _
1789 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1790 ;; git ls-files output is merged in ruby-build-system.
1791 (substitute* "chunky_png.gemspec"
1792 (("`git ls-files`")
1793 "`find . -type f -not -regex '.*\\.gem$' |sort |cut -c3-`"))
1794 #t)))))
1795 (native-inputs
1796 `(("bundler" ,bundler)
1797 ("ruby-rspec" ,ruby-rspec)
1798 ("ruby-standard" ,ruby-standard)
1799 ("ruby-yard" ,ruby-yard)))
1800 (synopsis "Ruby library to handle PNG images")
1801 (description "ChunkyPNG is a pure Ruby library that can read and write
1802Portable Network Graphics (PNG) images without depending on an external image
1803library. It tries to be memory efficient and reasonably fast. It has
1804features such as:
1805@itemize
1806@item
1807Decoding support for any image that the PNG standard allows. This includes all
1808standard color modes, all bit depths, all transparency, and interlacing and
1809filtering options.
1810@item
1811Encoding support for images of all color modes (true color, grayscale, and
1812indexed) and transparency for all these color modes. The best color mode is
1813chosen automatically, based on the amount of used colors.
1814@item Read/write access to the image's pixels.
1815@item Read/write access to all image metadata that is stored in chunks.
1816@item
1817Memory efficiency: @code{fixnum} are used, i.e. 4 or 8 bytes of memory per
1818pixel, depending on the hardware).
1819@item
1820Performance: ChunkyPNG is reasonably fast for Ruby standards, by only using
1821integer math and a highly optimized saving routine.
1822@item Interoperability with RMagick.
1823@end itemize
1824
1825ChunkyPNG is vulnerable to decompression bombs and can run out of memory when
1826loading a specifically crafted PNG file. This is hard to fix in pure Ruby.
1827Deal with untrusted images in a separate process, e.g., by using @code{fork}
1828or a background processing library.")
1829 (home-page "https://github.com/wvanbergen/chunky_png/wiki")
1830 (license license:expat)))
1831
1832(define-public ruby-text-hyphen
1833 (package
1834 (name "ruby-text-hyphen")
1835 (version "1.4.1")
1836 (source
1837 (origin
1838 (method url-fetch)
1839 (uri (rubygems-uri "text-hyphen" version))
1840 (sha256
1841 (base32
1842 "1gj4awvs9ryf960m0iawg43jyjmfwcqgfwrbcfp890a57b9ag7q1"))))
1843 (build-system ruby-build-system)
1844 (native-inputs
1845 `(("ruby-hoe" ,ruby-hoe)))
1846 (synopsis "Ruby library to hyphenate words in various languages")
1847 (description "Text::Hyphen is a Ruby library to hyphenate words in various
1848languages using Ruby-fied versions of TeX hyphenation patterns. It will
1849properly hyphenate various words according to the rules of the language the
1850word is written in. The algorithm is based on that of the TeX typesetting
1851system by Donald E. Knuth.")
1852 (home-page "https://github.com/halostatue/text-hyphen")
1853 ;; The whole is licensed under the Expat license, but parts use various
1854 ;; versions of the LaTeX Project Public License.
1855 (license license:expat)))
1856
1857(define-public ruby-open-uri-cached
1858 (package
1859 (name "ruby-open-uri-cached")
1860 (version "0.0.5")
1861 (source
1862 (origin
1863 (method url-fetch)
1864 (uri (rubygems-uri "open-uri-cached" version))
1865 (sha256
1866 (base32
1867 "13xy2vhrgz9mdxhklw5fszhamsdxh8ysf3l40g92hqm4hm288wap"))))
1868 (build-system ruby-build-system)
1869 (arguments
1870 `(#:tests? #f)) ;no test suite
1871 (synopsis "OpenURI with transparent disk caching")
1872 (description "OpenURI with transparent disk caching, which is
1873useful to avoid making excessive queries, for example when scraping
1874web pages.")
1875 (home-page "https://github.com/tigris/open-uri-cached")
1876 (license license:expat)))
1877
1878(define-public ruby-asciidoctor-pdf
1879 ;; Use the latest commit, as the last tag doesn't build with the
1880 ;; latest Ruby dependencies in Guix.
1881 (let ((revision "1")
1882 (commit "d257440df895d1595a3825ef58b32e4b290ba1c3"))
1883 (package
1884 (name "ruby-asciidoctor-pdf")
1885 (version (git-version "1.5.3" revision commit))
1886 (source
1887 (origin
1888 (method git-fetch) ;no test suite in the distributed gem
1889 (uri (git-reference
1890 (url "https://github.com/asciidoctor/asciidoctor-pdf")
1891 (commit commit)))
1892 (file-name (git-file-name name version))
1893 (sha256
1894 (base32
1895 "1563d11ghzsrsg4inwfwj6b9hb5sk5b429f49fwq5qg3sq76kgjj"))))
1896 (build-system ruby-build-system)
1897 (arguments
1898 `(#:test-target "spec"
1899 #:phases
1900 (modify-phases %standard-phases
1901 (add-after 'unpack 'remove-failing-tests
1902 ;; Two tests module fail for unknown reasons, *only* when
1903 ;; ran in the build container (see:
1904 ;; https://github.com/asciidoctor/asciidoctor-pdf/issues/1725#issuecomment-658777965).
1905 (lambda _
1906 (delete-file "spec/audio_spec.rb")
1907 (delete-file "spec/video_spec.rb")
1908 #t))
1909 (add-after 'extract-gemspec 'strip-version-requirements
1910 (lambda _
1911 (substitute* "asciidoctor-pdf.gemspec"
1912 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1913 (string-append stripped "\n")))
1914 #t))
1915 (replace 'replace-git-ls-files
1916 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1917 ;; git ls-files output is merged in ruby-build-system.
1918 (lambda _
1919 (substitute* "asciidoctor-pdf.gemspec"
1920 (("`git ls-files -z`")
1921 "`find . -type f -not -regex '.*\\.gem$' -print0 \
1922|sort -z|cut -zc3-`"))
1923 #t))
1924 ;; The tests rely on the Gem being installed, so move the check phase
1925 ;; after the install phase.
1926 (delete 'check)
1927 (add-after 'install 'check
1928 (lambda* (#:key outputs tests? #:allow-other-keys)
1929 (let ((new-gem (string-append (assoc-ref outputs "out")
1930 "/lib/ruby/vendor_ruby")))
1931 (setenv "GEM_PATH"
1932 (string-append (getenv "GEM_PATH") ":" new-gem))
1933 (when tests?
1934 (invoke "rspec" "-t" "~visual" "-t" "~cli" "-t" "~network"))
1935 #t))))))
1936 (native-inputs
1937 `(("ruby-chunky-png" ,ruby-chunky-png)
1938 ("ruby-coderay" ,ruby-coderay)
1939 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
1940 ("ruby-rouge" ,ruby-rouge)
1941 ("ruby-rspec" ,ruby-rspec)))
1942 (propagated-inputs
1943 `(("ruby-asciidoctor" ,ruby-asciidoctor)
1944 ("ruby-concurrent-ruby" ,ruby-concurrent)
1945 ("ruby-open-uri-cached" ,ruby-open-uri-cached)
1946 ("ruby-prawn" ,ruby-prawn)
1947 ("ruby-prawn-icon" ,ruby-prawn-icon)
1948 ("ruby-prawn-svg" ,ruby-prawn-svg)
1949 ("ruby-prawn-table" ,ruby-prawn-table)
1950 ("ruby-prawn-templates" ,ruby-prawn-templates)
1951 ("ruby-safe-yaml" ,ruby-safe-yaml)
1952 ("ruby-text-hyphen" ,ruby-text-hyphen)
1953 ("ruby-thread-safe" ,ruby-thread-safe)
1954 ("ruby-treetop" ,ruby-treetop)
1955 ("ruby-ttfunk" ,ruby-ttfunk)))
1956 (synopsis"AsciiDoc to Portable Document Format (PDF)} converter")
1957 (description "Asciidoctor PDF is an extension for Asciidoctor that
1958converts AsciiDoc documents to Portable Document Format (PDF) using the Prawn
1959PDF library. It has features such as:
1960@itemize
1961@item Direct AsciiDoc to PDF conversion
1962@item Configuration-driven theme (style and layout)
1963@item Scalable Vector Graphics (SVG) support
1964@item PDF document outline (i.e., bookmarks)
1965@item Table of contents page(s)
1966@item Document metadata (title, authors, subject, keywords, etc.)
1967@item Internal cross reference links
1968@item Syntax highlighting with Rouge, Pygments, or CodeRay
1969@item Page numbering
1970@item Customizable running content (header and footer)
1971@item
1972“Keep together” blocks (i.e., page breaks avoided in certain block content)
1973@item Orphaned section titles avoided
1974@item Autofit verbatim blocks (as permitted by base_font_size_min setting)
1975@item Table border settings honored
1976@item Font-based icons
1977@item Custom TrueType (TTF) fonts
1978@item Double-sided printing mode (margins alternate on recto and verso pages)
1979@end itemize")
1980 (home-page "https://asciidoctor.org/docs/asciidoctor-pdf")
1981 (license license:expat))))
1982
1983(define-public ruby-ast
1984 (package
1985 (name "ruby-ast")
1986 (version "2.4.1")
1987 (source
1988 (origin
1989 (method git-fetch) ;no test included in gem from v2.4.1
1990 (uri (git-reference
1991 (url "https://github.com/whitequark/ast")
1992 (commit (string-append "v" version))))
1993 (file-name (git-file-name name version))
1994 (sha256
1995 (base32
1996 "0k8vya256chimy473g818gim06m5rjgh6mz5sc5g8xz3csh3rysi"))))
1997 (build-system ruby-build-system)
1998 (arguments
1999 '(#:phases
2000 (modify-phases %standard-phases
2001 (add-after 'unpack 'remove-coveralls-requirement
2002 (lambda _
2003 (substitute* "test/helper.rb"
2004 (("require 'coveralls'") "")
2005 (("Coveralls::SimpleCov::Formatter") ""))
2006 #t))
2007 (add-after 'extract-gemspec 'remove-unnecessary-requirements
2008 (lambda _
2009 (substitute* "ast.gemspec"
2010 ((".*coveralls.*") "\n")
2011 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
2012 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
2013 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n"))
2014 #t)))))
2015 (native-inputs
2016 `(("bundler" ,bundler)
2017 ("ruby-simplecov" ,ruby-simplecov)
2018 ("ruby-json-pure" ,ruby-json-pure)
2019 ("ruby-mime-times" ,ruby-mime-types)
2020 ("ruby-yard" ,ruby-yard)
2021 ("ruby-kramdown" ,ruby-kramdown)
2022 ("ruby-rest-client" ,ruby-rest-client)
2023 ("ruby-bacon" ,ruby-bacon)
2024 ("ruby-bacon-colored-output" ,ruby-bacon-colored-output)
2025 ("ruby-racc" ,ruby-racc)))
2026 (synopsis "Library for working with Abstract Syntax Trees")
2027 (description
2028 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
2029It does this through immutable data structures.")
2030 (home-page "https://whitequark.github.io/ast/")
2031 (license license:expat)))
2032
2033(define-public ruby-sporkmonger-rack-mount
2034 ;; Testing the addressable gem requires a newer commit than that released, so
2035 ;; use an up to date version.
2036 (let ((revision "1")
2037 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
2038 (package
2039 (name "ruby-sporkmonger-rack-mount")
2040 (version (git-version "0.8.3" revision commit))
2041 (source (origin
2042 (method git-fetch)
2043 (uri (git-reference
2044 (url "https://github.com/sporkmonger/rack-mount")
2045 (commit commit)))
2046 (file-name (git-file-name name version))
2047 (sha256
2048 (base32
2049 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
2050 (build-system ruby-build-system)
2051 (arguments
2052 ;; Tests currently fail so disable them.
2053 ;; https://github.com/sporkmonger/rack-mount/pull/1
2054 `(#:tests? #f))
2055 (propagated-inputs `(("ruby-rack" ,ruby-rack)))
2056 (synopsis "Stackable dynamic tree based Rack router")
2057 (description
2058 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
2059continue trying routes if the response returns pass. This allows multiple
2060routes to be nested or stacked on top of each other.")
2061 (home-page "https://github.com/sporkmonger/rack-mount")
2062 (license license:expat))))
2063
2064(define-public ruby-ci-reporter
2065 (package
2066 (name "ruby-ci-reporter")
2067 (version "2.0.0")
2068 (source (origin
2069 (method url-fetch)
2070 (uri (rubygems-uri "ci_reporter" version))
2071 (sha256
2072 (base32
2073 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
2074 (build-system ruby-build-system)
2075 (arguments
2076 `(#:test-target "rspec"))
2077 (propagated-inputs
2078 `(("ruby-builder" ,ruby-builder)))
2079 (native-inputs
2080 `(("bundler" ,bundler)
2081 ("ruby-rspec" ,ruby-rspec)))
2082 (synopsis "Generate XML reports of runs test")
2083 (description
2084 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
2085you to generate XML reports of your test runs. The resulting files can be
2086read by a continuous integration system that understands Ant's JUnit report
2087format.")
2088 (home-page "https://github.com/nicksieger/ci_reporter")
2089 (license license:expat)))
2090
2091(define-public ruby-contracts
2092 (package
2093 (name "ruby-contracts")
2094 (version "0.16.0")
2095 (source
2096 (origin
2097 (method url-fetch)
2098 (uri (rubygems-uri "contracts" version))
2099 (sha256
2100 (base32
2101 "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"))))
2102 (build-system ruby-build-system)
2103 (arguments
2104 '(#:test-target "spec"
2105 #:phases
2106 (modify-phases %standard-phases
2107 ;; Don't run or require rubocop, the code linting tool, as this is a
2108 ;; bit unnecessary.
2109 (add-after 'unpack 'dont-run-rubocop
2110 (lambda _
2111 (substitute* "Rakefile"
2112 ((".*rubocop.*") "")
2113 ((".*RuboCop.*") ""))
2114 #t)))))
2115 (native-inputs
2116 `(("ruby-rspec" ,ruby-rspec)))
2117 (synopsis "Method contracts for Ruby")
2118 (description
2119 "This library provides contracts for Ruby. A contract describes the
2120correct inputs and output for a method, and will raise an error if a incorrect
2121value is found.")
2122 (home-page "https://github.com/egonSchiele/contracts.ruby")
2123 (license license:bsd-2)))
2124
2125(define-public ruby-crack
2126 (package
2127 (name "ruby-crack")
2128 (version "0.4.5")
2129 (source
2130 (origin
2131 (method url-fetch)
2132 (uri (rubygems-uri "crack" version))
2133 (sha256
2134 (base32
2135 "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r"))))
2136 (build-system ruby-build-system)
2137 (arguments
2138 `(#:phases
2139 (modify-phases %standard-phases
2140 (replace 'check
2141 (lambda* (#:key tests? #:allow-other-keys)
2142 (when tests?
2143 (for-each (lambda (file)
2144 (display file)(display "\n")
2145 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
2146 (find-files "test" ".*rb$")))
2147 #t)))))
2148 (propagated-inputs
2149 `(("ruby-rexml" ,ruby-rexml)))
2150 (synopsis "Simple JSON and XML parsing for Ruby")
2151 (description
2152 "@code{crack} provides really simple JSON and XML parsing, extracted from
2153code in Merb and Rails.")
2154 (home-page "https://github.com/jnunemaker/crack")
2155 (license license:expat)))
2156
2157(define-public ruby-cliver
2158 (package
2159 (name "ruby-cliver")
2160 (version "0.3.2")
2161 (source
2162 (origin
2163 (method url-fetch)
2164 (uri (rubygems-uri "cliver" version))
2165 (sha256
2166 (base32
2167 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
2168 (build-system ruby-build-system)
2169 (arguments
2170 '(#:phases
2171 (modify-phases %standard-phases
2172 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
2173 ;; would be nice, but the tests look to be incompatible:
2174 ;;
2175 ;; NoMethodError: undefined method `last_comment'
2176 (replace 'check
2177 (lambda* (#:key tests? #:allow-other-keys)
2178 (when tests?
2179 (invoke "rspec"))
2180 #t)))))
2181 (native-inputs
2182 `(("bundler" ,bundler)
2183 ("ruby-rspec" ,ruby-rspec-2)))
2184 (synopsis "Assertions for command-line dependencies in Ruby")
2185 (description
2186 "@code{cliver} provides a way to detect missing command-line
2187dependencies, including versions.")
2188 (home-page "https://github.com/yaauie/cliver")
2189 (license license:expat)))
2190
2191(define-public ruby-czmq-ffi-gen
2192 (package
2193 (name "ruby-czmq-ffi-gen")
2194 (version "0.13.0")
2195 (source
2196 (origin
2197 (method url-fetch)
2198 (uri (rubygems-uri "czmq-ffi-gen" version))
2199 (sha256
2200 (base32
2201 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
2202 (build-system ruby-build-system)
2203 (arguments
2204 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
2205 #:phases
2206 (modify-phases %standard-phases
2207 (add-after 'unpack 'patch-lib_dirs
2208 (lambda* (#:key inputs #:allow-other-keys)
2209 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
2210 (("lib\\_dirs = \\[.*\\]")
2211 (string-append "lib_dirs = ['"
2212 (assoc-ref inputs "czmq") "/lib"
2213 "']")))
2214 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
2215 (("lib\\_dirs = \\[.*\\]")
2216 (string-append "lib_dirs = ['"
2217 (assoc-ref inputs "zeromq") "/lib"
2218 "']"))))))))
2219 (inputs
2220 `(("zeromq" ,zeromq)
2221 ("czmq" ,czmq)))
2222 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
2223 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
2224 (description
2225 "These Ruby bindings are not intended to be directly used, but rather
2226used by higher level bindings like those provided by CZTop.")
2227 (home-page
2228 "https://github.com/paddor/czmq-ffi-gen")
2229 (license license:isc)))
2230
2231(define-public ruby-cztop
2232 (package
2233 (name "ruby-cztop")
2234 (version "0.12.2")
2235 (source
2236 (origin
2237 (method url-fetch)
2238 (uri (rubygems-uri "cztop" version))
2239 (sha256
2240 (base32
2241 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
2242 (build-system ruby-build-system)
2243 (arguments
2244 '(#:test-target "spec"
2245 #:phases
2246 (modify-phases %standard-phases
2247 (add-after 'unpack 'patch-lib_paths
2248 (lambda* (#:key inputs #:allow-other-keys)
2249 (substitute* "lib/cztop/poller/zmq.rb"
2250 (("lib\\_paths = \\[.*\\]")
2251 (string-append "lib_paths = ['"
2252 (assoc-ref inputs "zeromq") "/lib"
2253 "']"))))))))
2254 (native-inputs
2255 `(("bundler" ,bundler)
2256 ("ruby-rspec" ,ruby-rspec)))
2257 (inputs
2258 `(("zeromq" ,zeromq)))
2259 (propagated-inputs
2260 `(("ruby-czmq-ffi-gen" ,ruby-czmq-ffi-gen)))
2261 (synopsis "CZMQ Ruby bindings")
2262 (description
2263 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
2264CZMQ. The focus of of CZTop is on being easy to use and providing first class
2265support for security mechanisms.")
2266 (home-page "https://github.com/paddor/cztop")
2267 (license license:isc)))
2268
2269(define-public ruby-saikuro-treemap
2270 (package
2271 (name "ruby-saikuro-treemap")
2272 (version "0.2.0")
2273 (source (origin
2274 (method url-fetch)
2275 (uri (rubygems-uri "saikuro_treemap" version))
2276 (sha256
2277 (base32
2278 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
2279 (build-system ruby-build-system)
2280 ;; Some of the tests fail because the generated JSON has keys in a
2281 ;; different order. This is a problem with the test suite rather than any
2282 ;; of the involved libraries.
2283 (arguments `(#:tests? #f))
2284 (propagated-inputs
2285 `(("ruby-json-pure" ,ruby-json-pure)
2286 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
2287 (synopsis "Generate complexity treemap based on saikuro analysis")
2288 (description
2289 "This gem generates a treemap showing the complexity of Ruby code on
2290which it is run. It uses Saikuro under the covers to analyze Ruby code
2291complexity.")
2292 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
2293 (license license:expat)))
2294
2295(define-public ruby-oauth2
2296 (package
2297 (name "ruby-oauth2")
2298 (version "1.4.2")
2299 (source
2300 (origin
2301 (method url-fetch)
2302 (uri (rubygems-uri "oauth2" version))
2303 (sha256
2304 (base32 "15i9z4j5pcjkr30lkcd79xzbr4kpmy0bqgwa436fqyqk646fv036"))))
2305 (build-system ruby-build-system)
2306 (arguments
2307 '(#:tests? #f)) ; no included tests
2308 (propagated-inputs
2309 `(("ruby-faraday" ,ruby-faraday)
2310 ("ruby-jwt" ,ruby-jwt)
2311 ("ruby-multi-json" ,ruby-multi-json)
2312 ("ruby-multi-xml" ,ruby-multi-xml)
2313 ("ruby-rack" ,ruby-rack)))
2314 (synopsis "Ruby wrapper for the OAuth 2.0")
2315 (description
2316 "This package provides a Ruby wrapper for the OAuth 2.0 protocol built
2317with a similar style to the original OAuth spec.")
2318 (home-page "https://github.com/oauth-xx/oauth2")
2319 (license license:expat)))
2320
2321(define-public ruby-omniauth
2322 (package
2323 (name "ruby-omniauth")
2324 (version "2.0.3")
2325 (source
2326 (origin
2327 (method url-fetch)
2328 (uri (rubygems-uri "omniauth" version))
2329 (sha256
2330 (base32 "105mzgvmn2kjaacxw01h4wqv33r7hfn5z8fxlkk3jcjar14j71bh"))))
2331 (build-system ruby-build-system)
2332 (propagated-inputs
2333 `(("ruby-hashie" ,ruby-hashie)
2334 ("ruby-rack" ,ruby-rack)
2335 ("ruby-rack-protection" ,ruby-rack-protection)))
2336 (native-inputs
2337 `(("ruby-rspec" ,ruby-rspec)))
2338 (synopsis "Generalized Rack framework for multiple-provider authentication")
2339 (description
2340 "This package provides a generalized Rack framework for multiple-provider
2341authentication.")
2342 (home-page "https://github.com/omniauth/omniauth")
2343 (license license:expat)))
2344
2345(define-public ruby-omniauth-oauth2
2346 (package
2347 (name "ruby-omniauth-oauth2")
2348 (version "1.7.1")
2349 (source
2350 (origin
2351 (method url-fetch)
2352 (uri (rubygems-uri "omniauth-oauth2" version))
2353 (sha256
2354 (base32
2355 "10fr2b58sp7l6nfdvxpbi67374hkrvsf507cvda89jjs0jacy319"))))
2356 (build-system ruby-build-system)
2357 (arguments
2358 '(#:phases
2359 (modify-phases %standard-phases
2360 (add-after 'unpack 'remove-unnecessary-dependencies
2361 (lambda _
2362 ;; The coveralls gem submits coverage information to an online
2363 ;; service, and is unnecessary when running the tests
2364 (substitute* "Gemfile"
2365 ((".*coveralls\"") ""))
2366 (substitute* "spec/helper.rb"
2367 (("require \"coveralls\"") "")
2368 (("Coveralls::SimpleCov::Formatter") ""))
2369 #t)))))
2370 (propagated-inputs
2371 `(("ruby-oauth2" ,ruby-oauth2)
2372 ("ruby-omniauth" ,ruby-omniauth)))
2373 (native-inputs
2374 `(("bundler" ,bundler)
2375 ("ruby-rspec" ,ruby-rspec)
2376 ("ruby-simplecov" ,ruby-simplecov)
2377 ("ruby-rack-test" ,ruby-rack-test)
2378 ("ruby-webmock" ,ruby-webmock)))
2379 (synopsis "Abstract OAuth2 strategy for OmniAuth")
2380 (description
2381 "This library provides a generic OAuth2 strategy for OmniAuth. It
2382doesn't provide a way to gather user information, so should be used as a
2383building block for authentication strategies.")
2384 (home-page "https://github.com/omniauth/omniauth-oauth2")
2385 (license license:expat)))
2386
2387(define-public ruby-open4
2388 (package
2389 (name "ruby-open4")
2390 (version "1.3.4")
2391 (source
2392 (origin
2393 (method url-fetch)
2394 (uri (rubygems-uri "open4" version))
2395 (sha256
2396 (base32
2397 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
2398 (build-system ruby-build-system)
2399 (arguments
2400 '(#:phases
2401 (modify-phases %standard-phases
2402 (add-after 'unpack 'patch
2403 (lambda _
2404 (substitute* "rakefile"
2405 ;; Update the Rakefile so it works
2406 (("-rubygems") "-rrubygems")
2407 (("Config") "RbConfig"))
2408 #t))
2409 (add-before 'check 'set-LIB
2410 (lambda _
2411 ;; This is used in the rakefile when running the tests
2412 (setenv "LIB" "open4")
2413 #t)))))
2414 (synopsis "Open child processes from Ruby and manage them easily")
2415 (description
2416 "@code{Open4} is a Ruby library to run child processes and manage their
2417input and output.")
2418 (home-page "https://github.com/ahoward/open4")
2419 (license license:ruby)))
2420
2421(define-public ruby-options
2422 (package
2423 (name "ruby-options")
2424 (version "2.3.2")
2425 (source
2426 (origin
2427 (method url-fetch)
2428 (uri (rubygems-uri "options" version))
2429 (sha256
2430 (base32
2431 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
2432 (build-system ruby-build-system)
2433 (arguments
2434 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
2435 #:phases
2436 (modify-phases %standard-phases
2437 (add-before 'check 'set-LIB
2438 (lambda _
2439 ;; This is used in the Rakefile, and setting it avoids an issue
2440 ;; with running the tests.
2441 (setenv "LIB" "options")
2442 #t)))))
2443 (synopsis "Ruby library to parse options from *args cleanly")
2444 (description
2445 "The @code{options} library helps with parsing keyword options in Ruby
2446functions.")
2447 (home-page "https://github.com/ahoward/options")
2448 (license license:ruby)))
2449
2450(define-public ruby-erubi
2451 (package
2452 (name "ruby-erubi")
2453 (version "1.8.0")
2454 (source
2455 (origin
2456 (method url-fetch)
2457 (uri (rubygems-uri "erubi" version))
2458 (sha256
2459 (base32
2460 "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1"))))
2461 (build-system ruby-build-system)
2462 (synopsis "ERB template engine for Ruby")
2463 (description
2464 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
2465Erubis")
2466 (home-page "https://github.com/jeremyevans/erubi")
2467 (license license:expat)))
2468
2469(define-public ruby-erubis
2470 (package
2471 (name "ruby-erubis")
2472 (version "2.7.0")
2473 (source
2474 (origin
2475 (method url-fetch)
2476 (uri (rubygems-uri "erubis" version))
2477 (sha256
2478 (base32
2479 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
2480 (build-system ruby-build-system)
2481 (arguments
2482 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
2483 (synopsis "Implementation of embedded Ruby (eRuby)")
2484 (description
2485 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
2486features such as multi-language support, auto escaping, auto trimming spaces
2487around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
2488support.")
2489 (home-page "http://www.kuwata-lab.com/erubis/")
2490 (license license:expat)))
2491
2492(define-public ruby-ethon
2493 (package
2494 (name "ruby-ethon")
2495 (version "0.12.0")
2496 (source
2497 (origin
2498 (method url-fetch)
2499 (uri (rubygems-uri "ethon" version))
2500 (sha256
2501 (base32
2502 "0gggrgkcq839mamx7a8jbnp2h7x2ykfn34ixwskwb0lzx2ak17g9"))))
2503 (build-system ruby-build-system)
2504 (arguments
2505 `(#:tests? #f)) ; no included tests
2506 (inputs
2507 `(("curl" ,curl)))
2508 (propagated-inputs
2509 `(("ruby-ffi" ,ruby-ffi)))
2510 (synopsis "Very lightweight @code{libcurl} wrapper")
2511 (description
2512 "Ethon is a very basic @code{libcurl} wrapper using ffi.")
2513 (home-page "https://github.com/typhoeus/ethon")
2514 (license license:expat)))
2515
2516(define-public ruby-execjs
2517 (package
2518 (name "ruby-execjs")
2519 (version "2.7.0")
2520 (source
2521 (origin
2522 ;; fetch from github as the gem does not contain testing code
2523 (method git-fetch)
2524 (uri (git-reference
2525 (url "https://github.com/rails/execjs")
2526 (commit (string-append "v" version))))
2527 (file-name (git-file-name name version))
2528 (sha256
2529 (base32
2530 "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
2531 (build-system ruby-build-system)
2532 (native-inputs
2533 `(("bundler" ,bundler)
2534 ;; The test suite tests all the available backends. Currenly, this just
2535 ;; means the node backend.
2536 ;;
2537 ;; PASSED: test:node
2538 ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
2539 ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
2540 ("node" ,node)))
2541 (synopsis "Run JavaScript code from Ruby")
2542 (description
2543 "ExecJS lets you run JavaScript code from Ruby. It automatically picks a
2544runtime to evaluate your JavaScript program, then returns the result to you as
2545a Ruby object.")
2546 (home-page "https://github.com/rails/execjs")
2547 (license license:expat)))
2548
2549(define-public ruby-fakefs
2550 (package
2551 (name "ruby-fakefs")
2552 (version "1.2.2")
2553 (home-page "https://github.com/fakefs/fakefs")
2554 (source (origin
2555 ;; The Rubygems release does not contain tests.
2556 (method git-fetch)
2557 (uri (git-reference
2558 (url home-page)
2559 (commit (string-append "v" version))))
2560 (file-name (git-file-name name version))
2561 (sha256
2562 (base32
2563 "008dq9knyip2bfbl0mrk8b8r7bv0k3bf128wcfqsgy1rqal4mgwk"))))
2564 (build-system ruby-build-system)
2565 (arguments
2566 '(#:phases (modify-phases %standard-phases
2567 (replace 'replace-git-ls-files
2568 (lambda _
2569 (substitute* "fakefs.gemspec"
2570 (("`git ls-files lib README.md LICENSE`")
2571 "`find lib README.md LICENSE -type f | sort`"))
2572 #t))
2573 (add-before 'check 'remove-version-constraints
2574 (lambda _
2575 ;; Drop hard version requirements for test dependencies.
2576 (substitute* "fakefs.gemspec"
2577 (("(.*add_development_dependency .*), .*" _ dep)
2578 (string-append dep "\n")))
2579 #t)))))
2580 (native-inputs
2581 `(("ruby-bump" ,ruby-bump)
2582 ("ruby-maxitest" ,ruby-maxitest)
2583 ("ruby-rubocop" ,ruby-rubocop)
2584 ("ruby-rspec" ,ruby-rspec)))
2585 (synopsis "Fake file system for Ruby")
2586 (description
2587 "This package provides a fake file system for use in test suites. It
2588avoids the need for manually creating temporary directories, or dealing
2589with platform intricacies in @code{File} and @code{FileUtils}.")
2590 (license license:expat)))
2591
2592(define-public ruby-orderedhash
2593 (package
2594 (name "ruby-orderedhash")
2595 (version "0.0.6")
2596 (source (origin
2597 (method url-fetch)
2598 (uri (rubygems-uri "orderedhash" version))
2599 (sha256
2600 (base32
2601 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
2602 (build-system ruby-build-system)
2603 (arguments
2604 '(#:tests? #f)) ; no test suite
2605 (synopsis "Ruby library providing an order-preserving hash")
2606 (description "Orderedhash is a Ruby library providing a hash
2607implementation that preserves the order of items and features some array-like
2608extensions.")
2609 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
2610 (license license:public-domain)))
2611
2612(define-public ruby-libxml
2613 (package
2614 (name "ruby-libxml")
2615 (version "3.0.0")
2616 (source
2617 (origin
2618 (method url-fetch)
2619 (uri (rubygems-uri "libxml-ruby" version))
2620 (sha256
2621 (base32
2622 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
2623 (build-system ruby-build-system)
2624 (inputs
2625 `(("zlib" ,zlib)
2626 ("libxml2" ,libxml2)))
2627 (arguments
2628 '(#:tests? #f ; test suite hangs for unknown reason
2629 #:gem-flags
2630 (list "--no-document" ; TODO: Re-enable when documentation
2631 ; generation works
2632 "--"
2633 (string-append "--with-xml2-include="
2634 (assoc-ref %build-inputs "libxml2")
2635 "/include/libxml2" ))))
2636 (synopsis "Ruby bindings for GNOME Libxml2")
2637 (description "The Libxml-Ruby project provides Ruby language bindings for
2638the GNOME Libxml2 XML toolkit.")
2639 (home-page "https://xml4r.github.com/libxml-ruby")
2640 (license license:expat)))
2641
2642(define-public ruby-lino
2643 (package
2644 (name "ruby-lino")
2645 (version "1.1.0")
2646 (source
2647 (origin
2648 (method url-fetch)
2649 (uri (rubygems-uri "lino" version))
2650 (sha256
2651 (base32
2652 "11d29g0fk372b9fcpyr0k6hxm2b4j4igpysmi542hgbbgqgp9cd3"))))
2653 (build-system ruby-build-system)
2654 (arguments
2655 '(#:tests? #f)) ; No included tests
2656 (propagated-inputs
2657 `(("ruby-hamster" ,ruby-hamster)
2658 ("ruby-open4" ,ruby-open4)))
2659 (synopsis "Build and execute commands in Ruby")
2660 (description
2661 "@code{Lino} provides an interface to run external commands. It provides
2662an interface to add options as well as managing the standard input, output and
2663error streams.")
2664 (home-page "https://github.com/tobyclemson/lino")
2665 (license license:expat)))
2666
2667(define-public ruby-xml-simple
2668 (package
2669 (name "ruby-xml-simple")
2670 (version "1.1.5")
2671 (source (origin
2672 (method url-fetch)
2673 (uri (rubygems-uri "xml-simple" version))
2674 (sha256
2675 (base32
2676 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
2677 (build-system ruby-build-system)
2678 (arguments
2679 '(#:tests? #f)) ; no test suite
2680 (synopsis "Simple Ruby library for XML processing")
2681 (description "This library provides a simple API for XML processing in
2682Ruby.")
2683 (home-page "https://github.com/maik/xml-simple")
2684 (license license:ruby)))
2685
2686(define-public ruby-thor
2687 (package
2688 (name "ruby-thor")
2689 (version "1.0.1")
2690 (source (origin
2691 ;; Pull from git because the gem has no tests.
2692 (method git-fetch)
2693 (uri (git-reference
2694 (url "https://github.com/erikhuda/thor")
2695 (commit (string-append "v" version))))
2696 (file-name (git-file-name name version))
2697 (sha256
2698 (base32
2699 "1anrx5vynk57hn5c8ig5pgkmcsbj9q5mvckd5rviw1jid7n89k57"))))
2700 (build-system ruby-build-system)
2701 (arguments
2702 '(#:phases (modify-phases %standard-phases
2703 (add-after 'unpack 'fix-readline-tests
2704 (lambda _
2705 ;; Ensure Readline is initialized before running the
2706 ;; test to avoid a type clash with the mock ::Readline.
2707 ;; See <https://github.com/erikhuda/thor/pull/717>.
2708 (substitute* "spec/line_editor/readline_spec.rb"
2709 (("unless defined\\? ::Readline" all)
2710 (string-append "Thor::LineEditor::Readline.available?\n"
2711 all)))
2712 #t))
2713 (add-after 'unpack 'remove-coveralls-dependency
2714 (lambda _
2715 ;; Do not hook the test suite into the online
2716 ;; coveralls service.
2717 (substitute* "Gemfile"
2718 ((".*coveralls.*") ""))
2719 (substitute* "spec/helper.rb"
2720 (("require \"coveralls\"") "")
2721 (("Coveralls::SimpleCov::Formatter") "")
2722 ;; Also drop the WebMock dependency which is only
2723 ;; present to allow a coveralls.io connection, and
2724 ;; would otherwise introduce a circular dependency.
2725 (("require \"webmock/rspec\"") "")
2726 (("WebMock\\.disable_net_connect.*") ""))
2727 #t))
2728 (add-after 'unpack 'disable-network-tests
2729 (lambda _
2730 ;; These tests attempt to look up example.com.
2731 (substitute* "spec/actions/file_manipulation_spec.rb"
2732 (("it \"accepts (https?) remote sources" _ proto)
2733 (string-append "xit \"accepts " proto " remote sources")))
2734 #t))
2735 (add-after 'unpack 'disable-quality-tests
2736 (lambda _
2737 ;; These tests attempt to check the git repository for
2738 ;; tabs vs spaces, double vs single quotes, etc, and
2739 ;; depend on the git checkout.
2740 (delete-file "spec/quality_spec.rb")
2741 #t))
2742 (add-before 'check 'make-files-writable
2743 (lambda _
2744 ;; The tests needs rw access to the test suite.
2745 (for-each make-file-writable (find-files "spec"))
2746 #t))
2747 (replace 'check
2748 (lambda _
2749 (invoke "rspec" "spec"))))))
2750 (native-inputs
2751 `(("ruby-rspec" ,ruby-rspec)
2752 ("ruby-simplecov" ,ruby-simplecov)))
2753 (synopsis "Ruby toolkit for building command-line interfaces")
2754 (description "Thor is a toolkit for building powerful command-line
2755interfaces.")
2756 (home-page "http://whatisthor.com/")
2757 (license license:expat)))
2758
2759(define-public ruby-lumberjack
2760 (package
2761 (name "ruby-lumberjack")
2762 (version "1.0.13")
2763 (source (origin
2764 (method url-fetch)
2765 (uri (rubygems-uri "lumberjack" version))
2766 (sha256
2767 (base32
2768 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
2769 (build-system ruby-build-system)
2770 (native-inputs
2771 `(("ruby-rspec" ,ruby-rspec)
2772 ("ruby-timecop" ,ruby-timecop)))
2773 (synopsis "Logging utility library for Ruby")
2774 (description "Lumberjack is a simple logging utility that can be a drop in
2775replacement for Logger or ActiveSupport::BufferedLogger. It provides support
2776for automatically rolling log files even with multiple processes writing the
2777same log file.")
2778 (home-page "https://github.com/bdurand/lumberjack")
2779 (license license:expat)))
2780
2781(define-public ruby-rbnacl
2782 (package
2783 (name "ruby-rbnacl")
2784 (version "6.0.1")
2785 (source
2786 (origin
2787 (method url-fetch)
2788 (uri (rubygems-uri "rbnacl" version))
2789 (sha256
2790 (base32
2791 "0ajxy5kj2jw09wdsla3jmha8w07vj5l14288xr9djpl327g3lzhn"))))
2792 (build-system ruby-build-system)
2793 (arguments
2794 `(#:phases
2795 (modify-phases %standard-phases
2796 (add-after 'unpack 'remove-unnecessary-dependencies
2797 (lambda _
2798 ;; Coveralls relates to a network service, and Rubocop to code
2799 ;; linting and both are unnecessary to run the tests
2800 (substitute* "Gemfile"
2801 ((".*rubocop.*") "\n")
2802 ((".*guard-rspec.*") "\n")
2803 ((".*coveralls.*") "\n"))
2804 (substitute* "spec/spec_helper.rb"
2805 (("require \"coveralls\"") "")
2806 (("Coveralls.wear!") ""))
2807 #t))
2808 (add-after 'unpack 'use-libsodium-from-store
2809 (lambda* (#:key inputs #:allow-other-keys)
2810 (substitute* '("lib/rbnacl/init.rb"
2811 "lib/rbnacl/sodium.rb")
2812 (("ffi_lib \\[.+\\]")
2813 (string-append "ffi_lib [\""
2814 (assoc-ref inputs "libsodium") "/lib/libsodium.so"
2815 "\"]")))
2816 #t))
2817 ;; Run Rspec directly to avoid the Rubocop dependency in the Rakefile
2818 (replace 'check
2819 (lambda* (#:key tests? #:allow-other-keys)
2820 (when tests?
2821 (invoke "rspec"))
2822 #t)))))
2823 (propagated-inputs
2824 `(("ruby-ffi" ,ruby-ffi)))
2825 (inputs
2826 `(("libsodium" ,libsodium)))
2827 (native-inputs
2828 `(("bundler" ,bundler)
2829 ("ruby-rspec" ,ruby-rspec)))
2830 (synopsis "Ruby FFI binding to libsodium")
2831 (description
2832 "This package provides Ruby FFI bindings to the Networking and
2833Cryptography (NaCl) library, also known as libsodium. This provides a
2834high-level toolkit for building cryptographic systems and protocols.")
2835 (home-page "https://github.com/crypto-rb/rbnacl")
2836 (license license:expat)))
2837
2838(define-public ruby-nenv
2839 (package
2840 (name "ruby-nenv")
2841 (version "0.3.0")
2842 (source (origin
2843 (method url-fetch)
2844 (uri (rubygems-uri "nenv" version))
2845 (sha256
2846 (base32
2847 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
2848 (build-system ruby-build-system)
2849 (arguments
2850 `(#:tests? #f)) ; no tests included
2851 (native-inputs
2852 `(("ruby-rspec" ,ruby-rspec)
2853 ("bundler" ,bundler)))
2854 (synopsis "Ruby interface for modifying the environment")
2855 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
2856and inspect the environment.")
2857 (home-page "https://github.com/e2/nenv")
2858 (license license:expat)))
2859
2860(define-public ruby-ptools
2861 (package
2862 (name "ruby-ptools")
2863 (version "1.3.5")
2864 (source (origin
2865 (method url-fetch)
2866 (uri (rubygems-uri "ptools" version))
2867 (sha256
2868 (base32
2869 "1jb1h1nsk9zwykpniw8filbsk26kjsdlpk5wz6w0zyamcd41h87j"))))
2870 (build-system ruby-build-system)
2871 (arguments
2872 '(#:phases (modify-phases %standard-phases
2873 (add-after 'unpack 'patch-/bin/ls
2874 (lambda _
2875 (substitute* "test/test_binary.rb"
2876 (("/bin/ls")
2877 (which "ls")))
2878 #t))
2879 (add-before 'install 'create-gem
2880 (lambda _
2881 ;; Do not attempt to sign the gem.
2882 (substitute* "Rakefile"
2883 (("spec\\.signing_key = .*")
2884 ""))
2885 (invoke "rake" "gem:create"))))))
2886 (synopsis "Extra methods for Ruby's @code{File} class")
2887 (description
2888 "The @dfn{ptools} (power tools) library extends Ruby's core @code{File}
2889class with many additional methods modelled after common POSIX tools, such as
2890@code{File.which} for finding executables, @code{File.tail} to print the last
2891lines of a file, @code{File.wc} to count words, and so on.")
2892 (home-page "https://github.com/djberg96/ptools")
2893 (license license:artistic2.0)))
2894
2895(define-public ruby-permutation
2896 (package
2897 (name "ruby-permutation")
2898 (version "0.1.8")
2899 (source (origin
2900 (method url-fetch)
2901 (uri (rubygems-uri "permutation" version))
2902 (sha256
2903 (base32
2904 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
2905 (build-system ruby-build-system)
2906 (arguments
2907 `(#:phases
2908 (modify-phases %standard-phases
2909 (add-after 'unpack 'fix-rakefile
2910 (lambda _
2911 (substitute* "Rakefile"
2912 (("require 'rake/gempackagetask'")
2913 "require 'rubygems/package_task'")
2914 (("include Config") ""))
2915 #t))
2916 (replace 'check
2917 (lambda _
2918 (invoke "ruby" "-Ilib" "test/test.rb"))))))
2919 (synopsis "Library to perform operations with sequence permutations")
2920 (description "This package provides a Ruby library to perform different
2921operations with permutations of sequences, such as strings and arrays.")
2922 (home-page "https://flori.github.io/permutation")
2923 (license license:gpl2))) ; GPL 2 only
2924
2925(define-public ruby-shellany
2926 (package
2927 (name "ruby-shellany")
2928 (version "0.0.1")
2929 (source (origin
2930 (method url-fetch)
2931 (uri (rubygems-uri "shellany" version))
2932 (sha256
2933 (base32
2934 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
2935 (build-system ruby-build-system)
2936 (arguments
2937 `(#:test-target "default"
2938 #:phases
2939 (modify-phases %standard-phases
2940 (add-after 'unpack 'fix-version-test
2941 (lambda _
2942 (substitute* "spec/shellany_spec.rb"
2943 (("^RSpec") "require \"shellany\"\nRSpec"))
2944 #t)))))
2945 (native-inputs
2946 `(("ruby-rspec" ,ruby-rspec)
2947 ("ruby-nenv" ,ruby-nenv)
2948 ("bundler" ,bundler)))
2949 (synopsis "Capture command output")
2950 (description "Shellany is a Ruby library providing functions to capture
2951the output produced by running shell commands.")
2952 (home-page "https://rubygems.org/gems/shellany")
2953 (license license:expat)))
2954
2955(define-public ruby-notiffany
2956 (package
2957 (name "ruby-notiffany")
2958 (version "0.1.3")
2959 (source (origin
2960 (method url-fetch)
2961 (uri (rubygems-uri "notiffany" version))
2962 (sha256
2963 (base32
2964 "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk"))))
2965 (build-system ruby-build-system)
2966 ;; Tests are not included in the gem.
2967 (arguments `(#:tests? #f))
2968 (propagated-inputs
2969 `(("ruby-shellany" ,ruby-shellany)
2970 ("ruby-nenv" ,ruby-nenv)))
2971 (native-inputs
2972 `(("bundler" ,bundler)))
2973 (synopsis "Wrapper library for notification libraries")
2974 (description "Notiffany is a Ruby wrapper library for notification
2975libraries such as Libnotify.")
2976 (home-page "https://github.com/guard/notiffany")
2977 (license license:expat)))
2978
2979(define-public ruby-forking-test-runner
2980 (package
2981 (name "ruby-forking-test-runner")
2982 (version "1.6.0")
2983 (home-page "https://github.com/grosser/forking_test_runner")
2984 (source (origin
2985 (method git-fetch)
2986 (uri (git-reference (url home-page)
2987 (commit (string-append "v" version))))
2988 (file-name (git-file-name name version))
2989 (sha256
2990 (base32
2991 "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m"))))
2992 (build-system ruby-build-system)
2993 (arguments
2994 '(#:test-target "spec"
2995 ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has
2996 ;; 1.4.1, which in turn breaks the tests that use ActiveRecord.
2997 #:tests? #f
2998 #:phases (modify-phases %standard-phases
2999 (replace 'replace-git-ls-files
3000 (lambda _
3001 (substitute* "forking_test_runner.gemspec"
3002 (("`git ls-files lib/ bin/ MIT-LICENSE`")
3003 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
3004 #t))
3005 (add-before 'check 'remove-version-constraints
3006 (lambda _
3007 ;; Ignore hard coded version constraints for the tests.
3008 (delete-file "Gemfile.lock")
3009 #t))
3010 (add-before 'check 'set-HOME
3011 (lambda _
3012 ;; Many tests invoke Bundler, and fails when Bundler
3013 ;; warns that /homeless-shelter does not exist.
3014 (setenv "HOME" "/tmp")
3015 #t)))))
3016 (native-inputs
3017 `(("ruby-activerecord" ,ruby-activerecord)
3018 ("ruby-bump" ,ruby-bump)
3019 ("ruby-rspec" ,ruby-rspec)
3020 ("ruby-sqlite3" ,ruby-sqlite3)
3021 ("ruby-wwtd" ,ruby-wwtd)))
3022 (propagated-inputs
3023 `(("ruby-parallel-tests" ,ruby-parallel-tests)))
3024 (synopsis "Run every test in a fork")
3025 (description
3026 "This package is a wrapper around @code{parallel_tests} that runs every
3027test in a fork to avoid pollution and get clean output per test.")
3028 (license license:expat)))
3029
3030(define-public ruby-formatador
3031 (package
3032 (name "ruby-formatador")
3033 (version "0.2.5")
3034 (source (origin
3035 (method url-fetch)
3036 (uri (rubygems-uri "formatador" version))
3037 (sha256
3038 (base32
3039 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
3040 (build-system ruby-build-system)
3041 ;; Circular dependency: Tests require ruby-shindo, which requires
3042 ;; ruby-formatador at runtime.
3043 (arguments `(#:tests? #f))
3044 (synopsis "Ruby library to format text on stdout")
3045 (description "Formatador is a Ruby library to format text printed to the
3046standard output stream.")
3047 (home-page "https://github.com/geemus/formatador")
3048 (license license:expat)))
3049
3050(define-public ruby-fuubar
3051 (package
3052 (name "ruby-fuubar")
3053 (version "2.3.2")
3054 (source
3055 (origin
3056 ;; Fetch from the git repository, as the gem package doesn't include
3057 ;; the tests.
3058 (method git-fetch)
3059 (uri (git-reference
3060 (url "https://github.com/thekompanee/fuubar")
3061 (commit (string-append "releases/v" version))))
3062 (file-name (git-file-name name version))
3063 (sha256
3064 (base32
3065 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
3066 (build-system ruby-build-system)
3067 (arguments
3068 '(;; TODO: Some tests fail, unsure why.
3069 ;; 21 examples, 7 failures
3070 #:tests? #f
3071 #:phases
3072 (modify-phases %standard-phases
3073 (add-before 'build 'delete-certificate
3074 (lambda _
3075 ;; Remove 's.cert_chain' as we do not build with a private key
3076 (substitute* "fuubar.gemspec"
3077 ((".*cert_chain.*") "")
3078 ((".*signing_key.*") ""))
3079 #t))
3080 (replace 'check
3081 (lambda* (#:key tests? #:allow-other-keys)
3082 (when tests?
3083 (invoke "rspec"))
3084 #t)))))
3085 (native-inputs
3086 `(("bundler" ,bundler)))
3087 (propagated-inputs
3088 `(("ruby-rspec-core" ,ruby-rspec-core)
3089 ("ruby-progressbar" ,ruby-progressbar)))
3090 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
3091 (description
3092 "Fuubar is an RSpec formatter that uses a progress bar instead of a
3093string of letters and dots as feedback. It also stops on the first test
3094failure.")
3095 (home-page "https://github.com/thekompanee/fuubar")
3096 (license license:expat)))
3097
3098(define-public ruby-haml
3099 (package
3100 (name "ruby-haml")
3101 (version "5.0.4")
3102 (source
3103 (origin
3104 (method url-fetch)
3105 (uri (rubygems-uri "haml" version))
3106 (sha256
3107 (base32
3108 "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"))))
3109 (build-system ruby-build-system)
3110 (arguments
3111 '(#:tests? #f)) ; No included tests
3112 (propagated-inputs
3113 `(("ruby-tilt" ,ruby-tilt)
3114 ("ruby-temple" ,ruby-temple)))
3115 (synopsis "Haml is a Ruby library to generate HTML documents")
3116 (description
3117 "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of
3118HTML or XML that is designed to express the structure of documents using
3119indentation rather than closing tags. It was originally envisioned as a
3120plugin for Ruby on Rails, but it can function as a stand-alone templating
3121engine.")
3122 (home-page "https://haml.info/")
3123 (license license:expat)))
3124
3125(define-public ruby-hamster
3126 (package
3127 (name "ruby-hamster")
3128 (version "3.0.0")
3129 (source
3130 (origin
3131 (method url-fetch)
3132 (uri (rubygems-uri "hamster" version))
3133 (sha256
3134 (base32
3135 "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
3136 (build-system ruby-build-system)
3137 (arguments
3138 '(#:phases
3139 (modify-phases %standard-phases
3140 (add-after 'unpack 'remove-unnecessary-dependencies
3141 (lambda _
3142 ;; pry is a debugging tool, and is unnecessary when running the
3143 ;; tests
3144 (substitute* "spec/lib/hamster/vector/insert_spec.rb"
3145 (("require 'pry'") ""))
3146 (substitute* "spec/spec_helper.rb"
3147 (("require \"pry\"") "")
3148 ;; CodeClimate is an online service, and is unnecessary for
3149 ;; running the tests
3150 (("require \"codeclimate-test-reporter\"") "")
3151 (("CodeClimate.*\n") ""))
3152 #t))
3153 ;; No Rakefile is included, so run rspec directly.
3154 (replace 'check
3155 (lambda* (#:key tests? #:allow-other-keys)
3156 (when tests?
3157 (invoke "rspec"))
3158 #t)))))
3159 (propagated-inputs
3160 `(("ruby-concurrent" ,ruby-concurrent)))
3161 (native-inputs
3162 `(("ruby-rspec" ,ruby-rspec)))
3163 (synopsis "Efficient, immutable, thread-safe collection classes for Ruby")
3164 (description
3165 "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector},
3166@code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an
3167immutable queue or stack).")
3168 (home-page "https://github.com/hamstergem/hamster")
3169 (license license:expat)))
3170
3171(define-public ruby-hashdiff
3172 (package
3173 (name "ruby-hashdiff")
3174 (version "1.0.1")
3175 (source
3176 (origin
3177 (method url-fetch)
3178 (uri (rubygems-uri "hashdiff" version))
3179 (sha256
3180 (base32
3181 "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c"))))
3182 (build-system ruby-build-system)
3183 (arguments
3184 '(#:phases
3185 (modify-phases %standard-phases
3186 ;; Run tests directly via rspec to avoid depending on rubocop.
3187 (replace 'check
3188 (lambda* (#:key tests? #:allow-other-keys)
3189 (when tests?
3190 (invoke "rspec"))
3191 #t)))))
3192 (native-inputs
3193 `(("bundler" ,bundler)
3194 ("ruby-rspec" ,ruby-rspec-2)))
3195 (synopsis "HashDiff computes the smallest difference between two hashes")
3196 (description
3197 "HashDiff is a Ruby library to compute the smallest difference between
3198two hashes.")
3199 (home-page "https://github.com/liufengyun/hashdiff")
3200 (license license:expat)))
3201
3202(define-public ruby-hydra
3203 ;; No releases yet.
3204 (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
3205 (revision "0"))
3206 (package
3207 (name "ruby-hydra")
3208 (version (git-version "0.0" revision commit))
3209 (home-page "https://github.com/hyphenation/hydra")
3210 (source (origin
3211 (method git-fetch)
3212 (uri (git-reference (url home-page) (commit commit)))
3213 (file-name (git-file-name name version))
3214 (sha256
3215 (base32
3216 "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
3217 (build-system ruby-build-system)
3218 (arguments
3219 '(#:phases (modify-phases %standard-phases
3220 (add-after 'unpack 'make-files-writable
3221 (lambda _
3222 (for-each make-file-writable (find-files "."))
3223 #t))
3224 (replace 'check
3225 (lambda _
3226 (invoke "rspec"))))))
3227 (native-inputs
3228 `(("ruby-rspec" ,ruby-rspec)))
3229 (propagated-inputs
3230 `(("ruby-byebug" ,ruby-byebug)))
3231 (synopsis "Ruby hyphenation patterns")
3232 (description
3233 "ruby-hydra is a Ruby library for working with hyphenation patterns.")
3234 (license license:expat))))
3235
3236(define-public ruby-shindo
3237 (package
3238 (name "ruby-shindo")
3239 (version "0.3.8")
3240 (source (origin
3241 (method url-fetch)
3242 (uri (rubygems-uri "shindo" version))
3243 (sha256
3244 (base32
3245 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
3246 (build-system ruby-build-system)
3247 (arguments
3248 `(#:test-target "shindo_tests"
3249 #:phases
3250 (modify-phases %standard-phases
3251 (add-after 'unpack 'fix-tests
3252 (lambda _
3253 (substitute* "tests/tests_helper.rb"
3254 (("-rubygems") ""))
3255 (substitute* "Rakefile"
3256 (("system \"shindo") "system \"./bin/shindo")
3257 ;; This test doesn't work, so we disable it.
3258 (("fail \"The build_error test should fail") "#")
3259 ((" -rubygems") ""))
3260 #t)))))
3261 (propagated-inputs
3262 `(("ruby-formatador" ,ruby-formatador)))
3263 (synopsis "Simple depth first Ruby testing")
3264 (description "Shindo is a simple depth first testing library for Ruby.")
3265 (home-page "https://github.com/geemus/shindo")
3266 (license license:expat)))
3267
3268(define-public ruby-rubygems-tasks
3269 (package
3270 (name "ruby-rubygems-tasks")
3271 (version "0.2.5")
3272 (source (origin
3273 (method url-fetch)
3274 (uri (rubygems-uri "rubygems-tasks" version))
3275 (sha256
3276 (base32
3277 "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx"))))
3278 (build-system ruby-build-system)
3279 ;; Tests need Internet access.
3280 (arguments `(#:tests? #f))
3281 (native-inputs
3282 `(("ruby-rspec" ,ruby-rspec)
3283 ("ruby-yard" ,ruby-yard)))
3284 (synopsis "Rake tasks for managing and releasing Ruby Gems")
3285 (description "Rubygems-task provides Rake tasks for managing and releasing
3286Ruby Gems.")
3287 (home-page "https://github.com/postmodern/rubygems-tasks")
3288 (license license:expat)))
3289
3290(define-public ruby-rubyzip
3291 (package
3292 (name "ruby-rubyzip")
3293 (version "1.2.1")
3294 (source
3295 (origin
3296 (method url-fetch)
3297 (uri (rubygems-uri "rubyzip" version))
3298 (sha256
3299 (base32
3300 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
3301 (build-system ruby-build-system)
3302 (arguments
3303 '(#:phases
3304 (modify-phases %standard-phases
3305 (add-before 'check 'patch-tests
3306 (lambda* (#:key inputs #:allow-other-keys)
3307 (substitute* "test/gentestfiles.rb"
3308 (("/usr/bin/zip")
3309 (string-append
3310 (assoc-ref inputs "zip") "/bin/zip")))
3311 (substitute* "test/input_stream_test.rb"
3312 (("/usr/bin/env ruby") (which "ruby")))
3313 #t)))))
3314 (native-inputs
3315 `(("bundler" ,bundler)
3316 ("ruby-simplecov" ,ruby-simplecov)
3317 ("zip" ,zip)
3318 ("unzip" ,unzip)))
3319 (synopsis "Ruby module is for reading and writing zip files")
3320 (description
3321 "The rubyzip module provides ways to read from and create zip files.")
3322 (home-page "https://github.com/rubyzip/rubyzip")
3323 (license license:bsd-2)))
3324
3325(define-public ruby-simplecov-html
3326 (package
3327 (name "ruby-simplecov-html")
3328 (version "0.10.2")
3329 (source (origin
3330 (method url-fetch)
3331 (uri (rubygems-uri "simplecov-html" version))
3332 (sha256
3333 (base32
3334 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
3335 (build-system ruby-build-system)
3336 (arguments `(#:tests? #f)) ; there are no tests
3337 (native-inputs
3338 `(("bundler" ,bundler)))
3339 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
3340 (description "This package provides the default HTML formatter for
3341the SimpleCov code coverage tool for Ruby version 1.9 and above.")
3342 (home-page "https://github.com/colszowka/simplecov-html")
3343 (license license:expat)))
3344
3345(define-public ruby-simplecov
3346 (package
3347 (name "ruby-simplecov")
3348 (version "0.17.1")
3349 (source (origin
3350 (method url-fetch)
3351 (uri (rubygems-uri "simplecov" version))
3352 (sha256
3353 (base32
3354 "1135k46nik05sdab30yxb8264lqiz01c8v000g16cl9pjc4mxrdw"))))
3355 (build-system ruby-build-system)
3356 ;; Simplecov depends on rubocop for code style checking at build time.
3357 ;; Rubocop needs simplecov at build time.
3358 (arguments `(#:tests? #f))
3359 (propagated-inputs
3360 `(("ruby-json" ,ruby-json)
3361 ("ruby-docile" ,ruby-docile)
3362 ("ruby-simplecov-html" ,ruby-simplecov-html)))
3363 (native-inputs
3364 `(("bundler" ,bundler)))
3365 (synopsis "Code coverage framework for Ruby")
3366 (description "SimpleCov is a code coverage framework for Ruby with a
3367powerful configuration library and automatic merging of coverage across test
3368suites.")
3369 (home-page "https://github.com/colszowka/simplecov")
3370 (license license:expat)))
3371
3372(define-public ruby-useragent
3373 (package
3374 (name "ruby-useragent")
3375 (version "0.16.10")
3376 (source (origin
3377 (method url-fetch)
3378 (uri (rubygems-uri "useragent" version))
3379 (sha256
3380 (base32
3381 "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p"))))
3382 (build-system ruby-build-system)
3383 (arguments
3384 '(#:tests? #f)) ; no test suite
3385 (synopsis "HTTP user agent parser for Ruby")
3386 (description "UserAgent is a Ruby library that parses and compares HTTP
3387User Agents.")
3388 (home-page "https://github.com/gshutler/useragent")
3389 (license license:expat)))
3390
3391(define-public ruby-backports
3392 (package
3393 (name "ruby-backports")
3394 (version "3.11.4")
3395 (source
3396 (origin
3397 (method url-fetch)
3398 (uri (rubygems-uri "backports" version))
3399 (sha256
3400 (base32
3401 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
3402 (build-system ruby-build-system)
3403 (arguments
3404 '(;; TODO: This should be default, but there is one test failure
3405 #:test-target "all_spec"))
3406 (native-inputs
3407 `(("ruby-mspec" ,ruby-mspec)
3408 ("ruby-activesupport" ,ruby-activesupport)))
3409 (synopsis "Backports of the features in newer Ruby versions")
3410 (description
3411 "Backports enables more compatibility across Ruby versions by providing
3412backports of some features.")
3413 (home-page "https://github.com/marcandre/backports")
3414 (license license:expat)))
3415
3416(define-public ruby-bacon
3417 (package
3418 (name "ruby-bacon")
3419 (version "1.2.0")
3420 (source (origin
3421 (method url-fetch)
3422 (uri (rubygems-uri "bacon" version))
3423 (sha256
3424 (base32
3425 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
3426 (build-system ruby-build-system)
3427 (synopsis "Small RSpec clone")
3428 (description "Bacon is a small RSpec clone providing all essential
3429features.")
3430 (home-page "https://github.com/chneukirchen/bacon")
3431 (license license:expat)))
3432
3433(define-public ruby-bacon-bits
3434 (package
3435 (name "ruby-bacon-bits")
3436 (version "0.1.0")
3437 (source
3438 (origin
3439 (method url-fetch)
3440 (uri (rubygems-uri "bacon-bits" version))
3441 (sha256
3442 (base32
3443 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
3444 (build-system ruby-build-system)
3445 (arguments
3446 ;; No tests
3447 '(#:tests? #f))
3448 (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
3449 (synopsis "Extensions to Bacon, for disabling tests, before and after
3450blocks and more")
3451 (description
3452 "This extends the bacon testing framework with useful extensions to
3453disable tests, have before and after blocks that run once and more.")
3454 (home-page "https://github.com/cldwalker/bacon-bits")
3455 (license license:expat)))
3456
3457(define-public ruby-bacon-colored-output
3458 (package
3459 (name "ruby-bacon-colored-output")
3460 (version "1.1.1")
3461 (source
3462 (origin
3463 (method url-fetch)
3464 (uri (rubygems-uri "bacon-colored_output" version))
3465 (sha256
3466 (base32
3467 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
3468 (build-system ruby-build-system)
3469 (arguments
3470 '(;; No included tests
3471 #:tests? #f))
3472 (propagated-inputs
3473 `(("ruby-bacon" ,ruby-bacon)))
3474 (synopsis "Colored output for Bacon test framework")
3475 (description
3476 "This package adds color through ANSI escape codes to Bacon test
3477output.")
3478 (home-page "https://github.com/whitequark/bacon-colored_output")
3479 (license license:expat)))
3480
3481(define-public ruby-connection-pool
3482 (package
3483 (name "ruby-connection-pool")
3484 (version "2.2.2")
3485 (source (origin
3486 (method url-fetch)
3487 (uri (rubygems-uri "connection_pool" version))
3488 (sha256
3489 (base32
3490 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
3491 (build-system ruby-build-system)
3492 (native-inputs
3493 `(("bundler" ,bundler)))
3494 (synopsis "Generic connection pool for Ruby")
3495 (description "Connection_pool provides a generic connection pooling
3496interface for Ruby programs.")
3497 (home-page "https://github.com/mperham/connection_pool")
3498 (license license:expat)))
3499
3500(define-public ruby-fast-gettext
3501 (package
3502 (name "ruby-fast-gettext")
3503 (version "2.0.3")
3504 (home-page "https://github.com/grosser/fast_gettext")
3505 (source (origin
3506 (method git-fetch)
3507 (uri (git-reference (url home-page)
3508 (commit (string-append "v" version))))
3509 (file-name (git-file-name name version))
3510 (sha256
3511 (base32
3512 "1dg14apq5sfjshhcq0idphhs7aq9ikzswhqmn689p1h76mxqr1v6"))))
3513 (build-system ruby-build-system)
3514 (arguments
3515 '(#:test-target "spec"
3516 #:phases (modify-phases %standard-phases
3517 (add-before 'check 'remove-version-constraints
3518 (lambda _
3519 (delete-file "Gemfile.lock")
3520 #t))
3521 (add-before 'check 'remove-activerecord-test
3522 (lambda _
3523 ;; FIXME: This test fails because ActiveRecord depends on
3524 ;; a different version of ruby-sqlite than the currently
3525 ;; available one.
3526 (delete-file
3527 "spec/fast_gettext/translation_repository/db_spec.rb")
3528 #t))
3529 (add-before 'check 'disable-i18n-test
3530 (lambda _
3531 ;; XXX: This test checks i18n intricasies with Rails 3 and
3532 ;; automatically disables itself for Rails 4.0, but does
3533 ;; not know about newer versions as it has not been updated
3534 ;; since 2014. Disable for later versions of Rails too.
3535 (substitute* "spec/fast_gettext/vendor/string_spec.rb"
3536 (((string-append "ActiveRecord::VERSION::MAJOR == 4 and "
3537 "ActiveRecord::VERSION::MINOR == 0"))
3538 "ActiveRecord::VERSION::MAJOR >= 4"))
3539 #t)))))
3540 (native-inputs
3541 `(;; For tests.
3542 ("ruby-activerecord" ,ruby-activerecord)
3543 ("ruby-activesupport" ,ruby-activesupport)
3544 ("ruby-bump" ,ruby-bump)
3545 ("ruby-forking-test-runner" ,ruby-forking-test-runner)
3546 ("ruby-i18n" ,ruby-i18n)
3547 ("ruby-rubocop" ,ruby-rubocop)
3548 ("ruby-rspec" ,ruby-rspec)
3549 ("ruby-single-cov" ,ruby-single-cov)
3550 ("ruby-sqlite3" ,ruby-sqlite3)
3551 ("ruby-wwtd" ,ruby-wwtd)))
3552 (synopsis "Fast implementation of @code{GetText}")
3553 (description
3554 "This package provides an alternative implementation of the Ruby
3555@code{GetText} library that is approximately 12x faster yet thread safe.")
3556 ;; Some parts are covered by the Ruby license, see file headers.
3557 (license (list license:expat license:ruby))))
3558
3559(define-public ruby-net-http-persistent
3560 (package
3561 (name "ruby-net-http-persistent")
3562 (version "3.0.0")
3563 (source (origin
3564 (method url-fetch)
3565 (uri (rubygems-uri "net-http-persistent" version))
3566 (sha256
3567 (base32
3568 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
3569 (build-system ruby-build-system)
3570 (native-inputs
3571 `(("ruby-connection-pool" ,ruby-connection-pool)
3572 ("ruby-hoe" ,ruby-hoe)))
3573 (synopsis "Persistent HTTP connection manager")
3574 (description "Net::HTTP::Persistent manages persistent HTTP connections
3575using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
3576 (home-page "https://github.com/drbrain/net-http-persistent")
3577 (license license:expat)))
3578
3579(define-public ruby-power-assert
3580 (package
3581 (name "ruby-power-assert")
3582 (version "1.1.5")
3583 (source (origin
3584 (method url-fetch)
3585 (uri (rubygems-uri "power_assert" version))
3586 (sha256
3587 (base32
3588 "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s"))))
3589 (build-system ruby-build-system)
3590 (arguments
3591 '(#:tests? #f)) ; No included tests
3592 (native-inputs
3593 `(("bundler" ,bundler)))
3594 (synopsis "Assert library with descriptive assertion messages")
3595 (description "Power-assert is an assertion library providing descriptive
3596assertion messages for tests.")
3597 (home-page "https://github.com/k-tsj/power_assert")
3598 (license (list license:bsd-2 license:ruby))))
3599
3600(define-public ruby-powerpack
3601 (package
3602 (name "ruby-powerpack")
3603 (version "0.1.2")
3604 (source
3605 (origin
3606 (method url-fetch)
3607 (uri (rubygems-uri "powerpack" version))
3608 (sha256
3609 (base32
3610 "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
3611 (build-system ruby-build-system)
3612 (arguments
3613 '(#:test-target "spec"))
3614 (native-inputs
3615 `(("bundler" ,bundler)
3616 ("ruby-rspec" ,ruby-rspec)
3617 ("ruby-yard" ,ruby-yard)))
3618 (synopsis "Useful extensions to core Ruby classes")
3619 (description
3620 "This package provides a few useful extensions to core Ruby classes,
3621including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
3622@code{String}.")
3623 (home-page "https://github.com/bbatsov/powerpack")
3624 (license license:expat)))
3625
3626(define-public ruby-locale
3627 (package
3628 (name "ruby-locale")
3629 (version "2.1.2")
3630 (source (origin
3631 (method url-fetch)
3632 (uri (rubygems-uri "locale" version))
3633 (sha256
3634 (base32
3635 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
3636 (build-system ruby-build-system)
3637 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
3638 ;; which needs ruby-gettext, which needs ruby-locale. To break the
3639 ;; dependency cycle we disable tests.
3640 (arguments `(#:tests? #f))
3641 (native-inputs
3642 `(("bundler" ,bundler)
3643 ("ruby-yard" ,ruby-yard)))
3644 (synopsis "Ruby library providing basic localization APIs")
3645 (description
3646 "Ruby-Locale is the pure ruby library which provides basic APIs for
3647localization.")
3648 (home-page "https://github.com/ruby-gettext/locale")
3649 (license (list license:lgpl3+ license:ruby))))
3650
3651(define-public ruby-temple
3652 (package
3653 (name "ruby-temple")
3654 (version "0.8.2")
3655 (source
3656 (origin
3657 (method url-fetch)
3658 (uri (rubygems-uri "temple" version))
3659 (sha256
3660 (base32
3661 "060zzj7c2kicdfk6cpnn40n9yjnhfrr13d0rsbdhdij68chp2861"))))
3662 (build-system ruby-build-system)
3663 (native-inputs
3664 `(("ruby-tilt" ,ruby-tilt)
3665 ("ruby-bacon" ,ruby-bacon)
3666 ("ruby-erubis" ,ruby-erubis)))
3667 (synopsis "Template compilation framework in Ruby")
3668 (description
3669 "Temple is an abstraction and framework for compiling templates to pure
3670Ruby.")
3671 (home-page "https://github.com/judofyr/temple")
3672 (license license:expat)))
3673
3674(define-public ruby-text
3675 (package
3676 (name "ruby-text")
3677 (version "1.3.1")
3678 (source (origin
3679 (method url-fetch)
3680 (uri (rubygems-uri "text" version))
3681 (sha256
3682 (base32
3683 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
3684 (build-system ruby-build-system)
3685 (synopsis "Collection of text algorithms for Ruby")
3686 (description
3687 "This package provides a collection of text algorithms: Levenshtein,
3688Soundex, Metaphone, Double Metaphone, Porter Stemming.")
3689 (home-page "https://github.com/threedaymonk/text")
3690 (license license:expat)))
3691
3692(define-public ruby-gettext
3693 (package
3694 (name "ruby-gettext")
3695 (version "3.1.7")
3696 (source (origin
3697 (method url-fetch)
3698 (uri (rubygems-uri "gettext" version))
3699 (sha256
3700 (base32
3701 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
3702 (build-system ruby-build-system)
3703 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
3704 ;; which needs ruby-gettext. To break the dependency cycle we disable
3705 ;; tests.
3706 (arguments `(#:tests? #f))
3707 (propagated-inputs
3708 `(("ruby-locale" ,ruby-locale)
3709 ("ruby-text" ,ruby-text)))
3710 (native-inputs
3711 `(("bundler" ,bundler)
3712 ("ruby-yard" ,ruby-yard)))
3713 (synopsis "GNU gettext-like program for Ruby")
3714 (description
3715 "Gettext is a GNU gettext-like program for Ruby. The catalog
3716file (po-file) used is the same as that used by GNU gettext, allowing you to
3717use GNU gettext tools for maintenance.")
3718 (home-page "https://ruby-gettext.github.com/")
3719 (license (list license:lgpl3+ license:ruby))))
3720
3721(define-public ruby-packnga
3722 (package
3723 (name "ruby-packnga")
3724 (version "1.0.4")
3725 (source (origin
3726 (method url-fetch)
3727 (uri (rubygems-uri "packnga" version))
3728 (sha256
3729 (base32
3730 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
3731 (build-system ruby-build-system)
3732 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
3733 ;; To break the dependency cycle we disable tests.
3734 (arguments `(#:tests? #f))
3735 (propagated-inputs
3736 `(("ruby-gettext" ,ruby-gettext)
3737 ("ruby-yard" ,ruby-yard)))
3738 (native-inputs
3739 `(("bundler" ,bundler)))
3740 (synopsis "Utility library to package internationalized libraries")
3741 (description
3742 "Packnga is a library to translate to many languages using YARD.")
3743 (home-page "http://ranguba.org/packnga/")
3744 (license license:lgpl2.0+)))
3745
3746(define-public ruby-test-construct
3747 (package
3748 (name "ruby-test-construct")
3749 (version "2.0.1")
3750 (source
3751 (origin
3752 (method url-fetch)
3753 (uri (rubygems-uri "test_construct" version))
3754 (sha256
3755 (base32
3756 "1a2ym3l068d0pxzzr95kvqx87zpdsarxslz9ygd4qfm9frrz0kgj"))))
3757 (build-system ruby-build-system)
3758 (native-inputs
3759 `(("bundler" ,bundler)
3760 ("ruby-mocha" ,ruby-mocha)
3761 ("ruby-rspec" ,ruby-rspec)))
3762 (synopsis "Creates temporary files and directories for testing")
3763 (description
3764 "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
3765temporary files and directories during tests.")
3766 (home-page "https://github.com/bhb/test_construct")
3767 (license license:expat)))
3768
3769(define-public ruby-test-unit
3770 (package
3771 (name "ruby-test-unit")
3772 (version "3.2.5")
3773 (source (origin
3774 (method url-fetch)
3775 (uri (rubygems-uri "test-unit" version))
3776 (sha256
3777 (base32
3778 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
3779 (build-system ruby-build-system)
3780 (propagated-inputs
3781 `(("ruby-power-assert" ,ruby-power-assert)))
3782 (native-inputs
3783 `(("bundler" ,bundler)
3784 ("ruby-packnga" ,ruby-packnga)
3785 ("ruby-yard" ,ruby-yard)))
3786 (synopsis "Unit testing framework for Ruby")
3787 (description "@code{Test::Unit} is unit testing framework for Ruby, based
3788on xUnit principles. These were originally designed by Kent Beck, creator of
3789extreme programming software development methodology, for Smalltalk's SUnit.
3790It allows writing tests, checking results and automated testing in Ruby.")
3791 (home-page "https://test-unit.github.io/")
3792 (license (list license:psfl license:ruby))))
3793
3794(define-public ruby-markaby
3795 (package
3796 (name "ruby-markaby")
3797 (version "0.9.0")
3798 (source
3799 (origin
3800 (method url-fetch)
3801 (uri (rubygems-uri "markaby" version))
3802 (sha256
3803 (base32
3804 "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
3805 (build-system ruby-build-system)
3806 (arguments
3807 '(#:phases
3808 (modify-phases %standard-phases
3809 ;; Run rspec manually without using the Rakefile, as the versions of
3810 ;; Rake and RSpec 2 are incompatible:
3811 ;;
3812 ;; NoMethodError: undefined method `last_comment'
3813 (replace 'check
3814 (lambda* (#:key tests? #:allow-other-keys)
3815 (when tests?
3816 (invoke "rspec"))
3817 #t)))))
3818 (propagated-inputs
3819 `(("ruby-builder" ,ruby-builder)))
3820 (native-inputs
3821 `(("bundler" ,bundler)
3822 ("ruby-rspec" ,ruby-rspec-2)))
3823 (synopsis "Write HTML pages in pure Ruby")
3824 (description
3825 "Markaby allows writing HTML packages in pure Ruby. This is similar to
3826the functionality provided by @acronym{ERB, Embedded Ruby}, but without the
3827mixture of HTML and additional ERB syntax.")
3828 (home-page "https://markaby.github.io/")
3829 (license license:expat)))
3830
3831(define-public ruby-maruku
3832 (package
3833 (name "ruby-maruku")
3834 (version "0.7.3")
3835 (source
3836 (origin
3837 (method url-fetch)
3838 (uri (rubygems-uri "maruku" version))
3839 (sha256
3840 (base32
3841 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
3842 (build-system ruby-build-system)
3843 (arguments
3844 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
3845 #:tests? #f
3846 #:phases
3847 (modify-phases %standard-phases
3848 (replace 'check
3849 (lambda* (#:key tests? #:allow-other-keys)
3850 (when tests?
3851 (invoke "rspec"))
3852 #t)))))
3853 (native-inputs
3854 `(("ruby-rspec" ,ruby-rspec)
3855 ("ruby-simplecov" ,ruby-simplecov)
3856 ("ruby-nokogiri-diff" ,ruby-nokogiri-diff)))
3857 (synopsis "Markdown interpreter in Ruby")
3858 (description
3859 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
3860HTML, and PDF through LaTeX.")
3861 (home-page "https://github.com/bhollis/maruku")
3862 (license license:expat)))
3863
3864(define-public ruby-metaclass
3865 (package
3866 (name "ruby-metaclass")
3867 (version "0.0.4")
3868 (source (origin
3869 (method url-fetch)
3870 (uri (rubygems-uri "metaclass" version))
3871 (sha256
3872 (base32
3873 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
3874 (build-system ruby-build-system)
3875 (arguments
3876 `(#:phases
3877 (modify-phases %standard-phases
3878 (add-after 'unpack 'add-test-unit-to-search-path
3879 (lambda* (#:key inputs #:allow-other-keys)
3880 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
3881 (substitute* "Rakefile"
3882 (("t\\.libs << \"test\"" line)
3883 (string-append line "; t.libs << \""
3884 test-unit "/lib/ruby/vendor_ruby"
3885 "/gems/test-unit-"
3886 ,(package-version ruby-test-unit)
3887 "/lib\""))))
3888 #t)))))
3889 (native-inputs
3890 `(("bundler" ,bundler)
3891 ("ruby-test-unit" ,ruby-test-unit)))
3892 (synopsis "Ruby library adding metaclass method to all objects")
3893 (description
3894 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
3895objects.")
3896 (home-page "https://github.com/floehopper/metaclass")
3897 (license license:expat)))
3898
3899(define-public ruby-mkmf-lite
3900 (package
3901 (name "ruby-mkmf-lite")
3902 (version "0.3.2")
3903 (source (origin
3904 (method url-fetch)
3905 (uri (rubygems-uri "mkmf-lite" version))
3906 (sha256
3907 (base32
3908 "0br9k6zijj1zc25n8p7f2j1mwl58nfgdknf3q13h9k156jvrir06"))))
3909 (build-system ruby-build-system)
3910 (propagated-inputs
3911 `(("ruby-ptools" ,ruby-ptools)))
3912 (synopsis "Lightweight alternative to @code{mkmf}")
3913 (description
3914 "@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed
3915for use as a library. It does not create packages, builds, or log files of
3916any kind. Instead, it provides mixin methods that you can use in FFI or tests
3917to check for the presence of header files, constants, and so on.")
3918 (home-page "https://github.com/djberg96/mkmf-lite")
3919 (license license:asl2.0)))
3920
3921(define-public ruby-mspec
3922 (package
3923 (name "ruby-mspec")
3924 (version "1.9.1")
3925 (source
3926 (origin
3927 (method url-fetch)
3928 (uri (rubygems-uri "mspec" version))
3929 (sha256
3930 (base32
3931 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
3932 (build-system ruby-build-system)
3933 (arguments
3934 '(;; TODO: 3 test failures
3935 ;; ./spec/mocks/mock_spec.rb:82
3936 ;; ./spec/utils/name_map_spec.rb:151
3937 ;; ./spec/utils/name_map_spec.rb:155
3938 #:tests? #f
3939 #:phases
3940 (modify-phases %standard-phases
3941 (add-after 'extract-gemspec 'change-dependency-constraints
3942 (lambda _
3943 (substitute* "mspec.gemspec"
3944 (("rake.*") "rake>)\n")
3945 (("rspec.*") "rspec>)\n"))
3946 #t))
3947 (replace 'check
3948 (lambda* (#:key tests? #:allow-other-keys)
3949 (when tests?
3950 (invoke "rspec" "spec"))
3951 #t)))))
3952 (native-inputs
3953 `(("bundler" ,bundler)
3954 ("ruby-rake" ,ruby-rake)
3955 ("ruby-rspec" ,ruby-rspec)))
3956 (synopsis "MSpec is a specialized framework for RubySpec")
3957 (description
3958 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
3959for basic features. MSpec contains additional features that assist in writing
3960specs for Ruby implementations in ruby/spec.")
3961 (home-page "http://rubyspec.org")
3962 (license license:expat)))
3963
3964(define-public ruby-mysql2
3965 (package
3966 (name "ruby-mysql2")
3967 (version "0.5.2")
3968 (source
3969 (origin
3970 (method git-fetch)
3971 (uri (git-reference
3972 (url "https://github.com/brianmario/mysql2")
3973 (commit version)))
3974 (file-name (git-file-name name version))
3975 (sha256
3976 (base32
3977 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
3978 (build-system ruby-build-system)
3979 (arguments
3980 '(;; TODO: Tests require a running MySQL/MariaDB service
3981 #:tests? #f
3982 #:phases
3983 (modify-phases %standard-phases
3984 (replace 'replace-git-ls-files
3985 (lambda _
3986 (substitute* "mysql2.gemspec"
3987 (("git ls-files .*`") "find . -type f |sort`"))
3988 #t))
3989 (add-before 'install 'set-MAKEFLAGS
3990 (lambda* (#:key outputs #:allow-other-keys)
3991 (setenv "MAKEFLAGS"
3992 (string-append
3993 "V=1 "
3994 "prefix=" (assoc-ref outputs "out")))
3995 #t))
3996 ;; Move the 'check phase to after 'install, as then you can test
3997 ;; using the installed mysql2 gem in the store.
3998 (delete 'check)
3999 (add-after 'install 'check
4000 (lambda* (#:key outputs tests? #:allow-other-keys)
4001 (setenv "GEM_PATH"
4002 (string-append
4003 (getenv "GEM_PATH")
4004 ":"
4005 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
4006 (when tests?
4007 (invoke "rspec"))
4008 #t)))))
4009 (inputs
4010 `(("mariadb-dev" ,mariadb "dev")
4011 ("zlib" ,zlib)))
4012 (native-inputs
4013 `(("ruby-rspec" ,ruby-rspec)
4014 ("ruby-rake-compiler" ,ruby-rake-compiler)))
4015 (synopsis "MySQL library for Ruby, binding to libmysql")
4016 (description
4017 "This package provides a simple, fast MySQL library for Ruby, binding to
4018libmysql.")
4019 (home-page "https://github.com/brianmario/mysql2")
4020 (license license:expat)))
4021
4022(define-public ruby-blankslate
4023 (package
4024 (name "ruby-blankslate")
4025 (version "3.1.3")
4026 (source (origin
4027 (method url-fetch)
4028 (uri (rubygems-uri "blankslate" version))
4029 (sha256
4030 (base32
4031 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
4032 (build-system ruby-build-system)
4033 (arguments
4034 `(#:phases
4035 (modify-phases %standard-phases
4036 (replace 'check
4037 (lambda _ (invoke "rspec" "spec/"))))))
4038 (native-inputs
4039 `(("bundler" ,bundler)
4040 ("ruby-rspec" ,ruby-rspec)))
4041 (synopsis "Abstract base class with no predefined methods")
4042 (description
4043 "BlankSlate provides an abstract base class with no predefined
4044methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
4045as a base class when writing classes that depend upon
4046@code{method_missing} (e.g. dynamic proxies).")
4047 (home-page "https://github.com/masover/blankslate")
4048 (license license:expat)))
4049
4050(define-public ruby-bond
4051 (package
4052 (name "ruby-bond")
4053 (version "0.5.1")
4054 (source
4055 (origin
4056 (method url-fetch)
4057 (uri (rubygems-uri "bond" version))
4058 (sha256
4059 (base32
4060 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
4061 (build-system ruby-build-system)
4062 (arguments
4063 ;; The test suite fails (see:
4064 ;; https://github.com/cldwalker/bond/issues/46).
4065 `(#:tests? #f))
4066 (native-inputs
4067 `(("ruby-bacon" ,ruby-bacon)
4068 ("ruby-bacon-bits" ,ruby-bacon-bits)
4069 ("ruby-mocha-on-bacon" ,ruby-mocha-on-bacon)))
4070 (synopsis "Bond can provide custom autocompletion for arguments, methods
4071and more")
4072 (description
4073 "Bond can autocomplete argument(s) to methods, uniquely completing per
4074module, per method and per argument. Bond provides a configuration system and
4075a DSL for creating custom completions and completion rules. Bond can also
4076load completions that ship with gems. Bond is able to offer more than irb's
4077completion since it uses the full line of input when completing as opposed to
4078irb's last-word approach.")
4079 (home-page "http://tagaholic.me/bond/")
4080 (license license:expat)))
4081
4082(define-public ruby-idn-ruby
4083 (package
4084 (name "ruby-idn-ruby")
4085 (version "0.1.0")
4086 (source
4087 (origin
4088 (method url-fetch)
4089 (uri (rubygems-uri "idn-ruby" version))
4090 (sha256
4091 (base32
4092 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
4093 (build-system ruby-build-system)
4094 (arguments
4095 '(#:phases
4096 (modify-phases %standard-phases
4097 (delete 'check)
4098 (add-after 'install 'check
4099 (lambda* (#:key tests? outputs #:allow-other-keys)
4100 (when tests?
4101 (let* ((gem-file (cadr (find-files "." "\\.gem")))
4102 (name-and-version (basename gem-file ".gem")))
4103 (apply invoke
4104 "ruby" "--verbose"
4105 (string-append "-I"
4106 (assoc-ref outputs "out")
4107 "/lib/ruby/vendor_ruby/gems/"
4108 name-and-version
4109 "/lib")
4110 (find-files "./test" ".*\\.rb"))))
4111 #t)))))
4112 (inputs
4113 `(("libidn" ,libidn)))
4114 (synopsis "Ruby Bindings for the GNU LibIDN library")
4115 (description
4116 "Ruby Bindings for the GNU LibIDN library, an implementation of the
4117Stringprep, Punycode and IDNA specifications. These are used to encode and
4118decode internationalized domain + names according to the IDNA2003
4119specifications.
4120
4121Included are the most important parts of the Stringprep, Punycode and IDNA
4122APIs like performing Stringprep processings, encoding to and decoding from
4123Punycode strings and converting entire domain names to and from the ACE
4124encoded form.")
4125 (home-page "https://github.com/deepfryed/idn-ruby")
4126 (license license:asl2.0)))
4127
4128(define-public ruby-instantiator
4129 (package
4130 (name "ruby-instantiator")
4131 (version "0.0.7")
4132 (source (origin
4133 (method url-fetch)
4134 (uri (rubygems-uri "instantiator" version))
4135 (sha256
4136 (base32
4137 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
4138 (build-system ruby-build-system)
4139 (arguments
4140 `(#:phases
4141 (modify-phases %standard-phases
4142 (add-after 'unpack 'add-test-unit-to-search-path
4143 (lambda* (#:key inputs #:allow-other-keys)
4144 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
4145 (substitute* "Rakefile"
4146 (("t\\.libs << \"test\"" line)
4147 (string-append line "; t.libs << \""
4148 test-unit "/lib/ruby/vendor_ruby"
4149 "/gems/test-unit-"
4150 ,(package-version ruby-test-unit)
4151 "/lib\""))))
4152 #t)))))
4153 (propagated-inputs
4154 `(("ruby-blankslate" ,ruby-blankslate)))
4155 (native-inputs
4156 `(("bundler" ,bundler)
4157 ("ruby-test-unit" ,ruby-test-unit)))
4158 (synopsis "Instantiate an arbitrary Ruby class")
4159 (description
4160 "Instantiator lets you instantiate an arbitrary Ruby class without
4161knowing anything about the constructor.")
4162 (home-page "https://github.com/floehopper/instantiator")
4163 (license license:expat)))
4164
4165(define-public ruby-introspection
4166 (package
4167 (name "ruby-introspection")
4168 (version "0.0.4")
4169 (source (origin
4170 (method url-fetch)
4171 (uri (rubygems-uri "introspection" version))
4172 (sha256
4173 (base32
4174 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
4175 (build-system ruby-build-system)
4176 (arguments
4177 `(#:phases
4178 (modify-phases %standard-phases
4179 (add-after 'unpack 'add-test-unit-to-search-path
4180 (lambda* (#:key inputs #:allow-other-keys)
4181 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
4182 (substitute* "Rakefile"
4183 (("t\\.libs << \"test\"" line)
4184 (string-append line "; t.libs << \""
4185 test-unit "/lib/ruby/vendor_ruby"
4186 "/gems/test-unit-"
4187 ,(package-version ruby-test-unit)
4188 "/lib\""))))
4189 #t)))))
4190 (propagated-inputs
4191 `(("ruby-instantiator" ,ruby-instantiator)
4192 ("ruby-metaclass" ,ruby-metaclass)))
4193 (native-inputs
4194 `(("bundler" ,bundler)
4195 ("ruby-blankslate" ,ruby-blankslate)
4196 ("ruby-test-unit" ,ruby-test-unit)))
4197 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
4198 (description
4199 "Introspection provides tools to inspect the hierarchy of method
4200definitions on a Ruby object.")
4201 (home-page "https://github.com/floehopper/introspection")
4202 (license license:expat)))
4203
4204(define-public ruby-redcarpet
4205 (package
4206 (name "ruby-redcarpet")
4207 (version "3.5.0")
4208 (source (origin
4209 (method url-fetch)
4210 (uri (rubygems-uri "redcarpet" version))
4211 (sha256
4212 (base32
4213 "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k"))))
4214 (build-system ruby-build-system)
4215 (arguments
4216 `(#:phases
4217 (modify-phases %standard-phases
4218 ;; The gem archive does not include the conformance tests.
4219 (add-after 'unpack 'disable-conformance-tests
4220 (lambda _
4221 (substitute* "Rakefile"
4222 (("task :test => %w\\[test:unit test:conformance\\]")
4223 "task :test => %w[test:unit]"))
4224 #t)))))
4225 (native-inputs
4226 `(("bundler" ,bundler)
4227 ("ruby-test-unit" ,ruby-test-unit)
4228 ("ruby-rake-compiler" ,ruby-rake-compiler)))
4229 (synopsis "Extensible Markdown to (X)HTML converter")
4230 (description
4231 "Redcarpet is an extensible Ruby library for Markdown processing and
4232conversion to (X)HTML.")
4233 (home-page "https://github.com/vmg/redcarpet")
4234 (license license:expat)))
4235
4236(define-public ruby-rerun
4237 (package
4238 (name "ruby-rerun")
4239 (version "0.13.0")
4240 (source
4241 (origin
4242 (method url-fetch)
4243 (uri (rubygems-uri "rerun" version))
4244 (sha256
4245 (base32
4246 "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
4247 (build-system ruby-build-system)
4248 (arguments
4249 '(#:tests? #f)) ; No included tests
4250 (propagated-inputs
4251 `(("ruby-listen" ,ruby-listen)))
4252 (synopsis "Run a process, and restart when some monitored files change")
4253 (description
4254 "Rerun is a tool to launch programs, then monitor the file system, and
4255restart the program when any of the monitored files change. It's written in
4256Ruby, but can be used for all programs.")
4257 (home-page "https://github.com/alexch/rerun/")
4258 (license license:expat)))
4259
4260(define-public ruby-maxitest
4261 (package
4262 (name "ruby-maxitest")
4263 (version "3.6.0")
4264 (home-page "https://github.com/grosser/maxitest")
4265 (source (origin
4266 ;; Pull from git because the gem does not contain tests.
4267 (method git-fetch)
4268 (uri (git-reference
4269 (url home-page)
4270 (commit (string-append "v" version))))
4271 (file-name (git-file-name name version))
4272 (sha256
4273 (base32
4274 "07b3j0bv3dx5j42jlvpvl07aaxplyi6wq688y3jl8y528ww2hjz8"))))
4275 (build-system ruby-build-system)
4276 (arguments
4277 '(#:test-target "default"
4278 #:phases (modify-phases %standard-phases
4279 (replace 'replace-git-ls-files
4280 (lambda _
4281 (substitute* "maxitest.gemspec"
4282 (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
4283 "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))
4284 #t))
4285 (add-before 'check 'remove-version-constraints
4286 (lambda _
4287 ;; Don't use specific versions of dependencies, instead
4288 ;; take whatever is available in Guix.
4289 (delete-file "Gemfile.lock")
4290 #t))
4291 (add-before 'check 'add-mtest-on-PATH
4292 (lambda _
4293 ;; Tests use 'mtest' which is not automatically added on
4294 ;; PATH.
4295 (setenv "PATH" (string-append (getcwd) "/bin:"
4296 (getenv "PATH")))
4297 #t)))))
4298 (native-inputs
4299 `(("ps" ,procps)
4300 ("ruby-bump" ,ruby-bump)
4301 ("ruby-byebug" ,ruby-byebug)
4302 ("ruby-rspec" ,ruby-rspec)
4303 ("ruby-wwtd" ,ruby-wwtd)))
4304 (propagated-inputs
4305 `(("ruby-minitest" ,ruby-minitest)))
4306 (synopsis "Minitest with extra features")
4307 (description
4308 "Maxitest is a wrapper around Minitest with extra functionality such
4309as timeouts, an @command{mtest} executable that can run tests by line
4310number, support for interrupted tests, better backtraces, and more.")
4311 (license license:expat)))
4312
4313(define-public ruby-mocha
4314 (package
4315 (name "ruby-mocha")
4316 (version "1.11.2")
4317 (source (origin
4318 (method url-fetch)
4319 (uri (rubygems-uri "mocha" version))
4320 (sha256
4321 (base32
4322 "0hxmkm8qxd04vwj8mqnpyrf2dwy7g1k9zipdfhl4y71cw7ijm9n4"))))
4323 (build-system ruby-build-system)
4324 (arguments
4325 `(#:phases
4326 (modify-phases %standard-phases
4327 (add-before 'check 'remove-rubocop-dependency
4328 (lambda _
4329 ;; Disable dependency on Rubocop, which is just a linter,
4330 ;; and would introduce a circular dependency.
4331 (substitute* "mocha.gemspec"
4332 ((".*rubocop.*")
4333 "true\n"))
4334 #t)))))
4335 (native-inputs
4336 `(("ruby-introspection" ,ruby-introspection)))
4337 (synopsis "Mocking and stubbing library for Ruby")
4338 (description
4339 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
4340allows mocking and stubbing of methods on real (non-mock) classes.")
4341 (home-page "http://gofreerange.com/mocha/docs")
4342 ;; Mocha can be used with either license at the users choice.
4343 (license (list license:expat license:ruby))))
4344
4345(define-public ruby-mocha-on-bacon
4346 (package
4347 (name "ruby-mocha-on-bacon")
4348 (version "0.2.3")
4349 (source
4350 (origin
4351 (method url-fetch)
4352 (uri (rubygems-uri "mocha-on-bacon" version))
4353 (sha256
4354 (base32
4355 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
4356 (build-system ruby-build-system)
4357 (arguments
4358 ;; rubygems.org release missing tests
4359 '(#:tests? #f))
4360 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
4361 (synopsis "Mocha adapter for Bacon")
4362 (description
4363 "This package provides a Mocha adapter for Bacon, allowing you to use the
4364Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
4365 (home-page
4366 "https://github.com/alloy/mocha-on-bacon")
4367 (license license:expat)))
4368
4369(define-public ruby-net-ssh
4370 (package
4371 (name "ruby-net-ssh")
4372 (version "4.2.0")
4373 (source (origin
4374 (method url-fetch)
4375 (uri (rubygems-uri "net-ssh" version))
4376 (sha256
4377 (base32
4378 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
4379 (build-system ruby-build-system)
4380 (native-inputs
4381 `(("bundler" ,bundler)
4382 ("ruby-mocha" ,ruby-mocha)
4383 ("ruby-test-unit" ,ruby-test-unit)))
4384 (synopsis "Ruby implementation of the SSH2 client protocol")
4385 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
4386client protocol. It allows you to write programs that invoke and interact
4387with processes on remote servers, via SSH2.")
4388 (home-page "https://github.com/net-ssh/net-ssh")
4389 (license license:expat)))
4390
4391(define-public ruby-net-scp
4392 (package
4393 (name "ruby-net-scp")
4394 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
4395 (version "1.2.2.rc2")
4396 (source
4397 (origin
4398 (method git-fetch)
4399 (uri (git-reference
4400 (url "https://github.com/net-ssh/net-scp")
4401 (commit (string-append "v" version))))
4402 (file-name (git-file-name name version))
4403 (sha256
4404 (base32 "1nyn17sy71fn7zs3y6wbgcn35318c10flqgc0582409095x4h0sx"))))
4405 (build-system ruby-build-system)
4406 (native-inputs
4407 `(("bundler" ,bundler)
4408 ("ruby-test-unit" ,ruby-test-unit)
4409 ("ruby-mocha" ,ruby-mocha)))
4410 (propagated-inputs
4411 `(("ruby-net-ssh" ,ruby-net-ssh)))
4412 (synopsis "Pure-Ruby SCP client library")
4413 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
4414client protocol.")
4415 (home-page "https://github.com/net-ssh/net-scp")
4416 (license license:expat)))
4417
4418(define-public ruby-minitest
4419 (package
4420 (name "ruby-minitest")
4421 (version "5.12.2")
4422 (source (origin
4423 (method url-fetch)
4424 (uri (rubygems-uri "minitest" version))
4425 (sha256
4426 (base32
4427 "0zjm24aiz42i9n37mcw8lydd7n0y7wfk27by06jx77ypcld3qvkw"))))
4428 (build-system ruby-build-system)
4429 (native-inputs
4430 `(("ruby-hoe" ,ruby-hoe)))
4431 (synopsis "Small test suite library for Ruby")
4432 (description "Minitest provides a complete suite of Ruby testing
4433facilities supporting TDD, BDD, mocking, and benchmarking.")
4434 (home-page "https://github.com/seattlerb/minitest")
4435 (license license:expat)))
4436
4437;; This is the last release of Minitest 4, which is used by some packages.
4438(define-public ruby-minitest-4
4439 (package (inherit ruby-minitest)
4440 (version "4.7.5")
4441 (source (origin
4442 (method url-fetch)
4443 (uri (rubygems-uri "minitest" version))
4444 (sha256
4445 (base32
4446 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
4447 (arguments
4448 `(#:phases
4449 (modify-phases %standard-phases
4450 (add-after 'unpack 'remove-unsupported-method
4451 (lambda _
4452 (substitute* "Rakefile"
4453 (("self\\.rubyforge_name = .*") ""))
4454 #t))
4455 (add-after 'build 'exclude-failing-tests
4456 (lambda _
4457 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
4458 ;; Fixnum.
4459 (delete-file "test/minitest/test_minitest_spec.rb")
4460 #t)))))))
4461
4462(define-public ruby-minitest-around
4463 (package
4464 (name "ruby-minitest-around")
4465 (version "0.5.0")
4466 (source
4467 (origin
4468 (method url-fetch)
4469 (uri (rubygems-uri "minitest-around" version))
4470 (sha256
4471 (base32
4472 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
4473 (build-system ruby-build-system)
4474 (arguments
4475 '(#:phases
4476 (modify-phases %standard-phases
4477 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
4478 (lambda _
4479 (substitute* "minitest-around.gemspec"
4480 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n"))
4481 #t)))))
4482 (propagated-inputs
4483 `(("ruby-minitest" ,ruby-minitest)))
4484 (native-inputs
4485 `(("bundler" ,bundler)
4486 ("ruby-cucumber" ,ruby-cucumber)
4487 ("ruby-bump" ,ruby-bump)
4488 ("ruby-test-construct" ,ruby-test-construct)))
4489 (synopsis "Run code around tests in Minitest")
4490 (description
4491 "This library provides a way to run code around tests in Minitest,
4492written using either the unit test or spec style.")
4493 (home-page "https://github.com/splattael/minitest-around")
4494 (license license:expat)))
4495
4496(define-public ruby-minitest-sprint
4497 (package
4498 (name "ruby-minitest-sprint")
4499 (version "1.1.0")
4500 (source (origin
4501 (method url-fetch)
4502 (uri (rubygems-uri "minitest-sprint" version))
4503 (sha256
4504 (base32
4505 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
4506 (build-system ruby-build-system)
4507 (native-inputs
4508 `(("ruby-hoe" ,ruby-hoe)
4509 ("ruby-minitest" ,ruby-minitest)))
4510 (synopsis "Fast test suite runner for minitest")
4511 (description "Minitest-sprint is a test runner for minitest that makes it
4512easier to re-run individual failing tests.")
4513 (home-page "https://github.com/seattlerb/minitest-sprint")
4514 (license license:expat)))
4515
4516(define-public ruby-minitest-bacon
4517 (package
4518 (name "ruby-minitest-bacon")
4519 (version "1.0.3")
4520 (source (origin
4521 (method url-fetch)
4522 (uri (rubygems-uri "minitest-bacon" version))
4523 (sha256
4524 (base32
4525 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
4526 (build-system ruby-build-system)
4527 (native-inputs
4528 `(("ruby-hoe" ,ruby-hoe)))
4529 (inputs
4530 `(("ruby-minitest" ,ruby-minitest)))
4531 (synopsis "Bacon compatibility library for minitest")
4532 (description "Minitest-bacon extends minitest with bacon-like
4533functionality, making it easier to migrate test suites from bacon to minitest.")
4534 (home-page "https://github.com/seattlerb/minitest-bacon")
4535 (license license:expat)))
4536
4537(define-public ruby-minitest-focus
4538 (package
4539 (name "ruby-minitest-focus")
4540 (version "1.1.2")
4541 (source
4542 (origin
4543 (method url-fetch)
4544 (uri (rubygems-uri "minitest-focus" version))
4545 (sha256
4546 (base32
4547 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
4548 (build-system ruby-build-system)
4549 (propagated-inputs
4550 `(("ruby-minitest" ,ruby-minitest)))
4551 (native-inputs
4552 `(("ruby-hoe" ,ruby-hoe)))
4553 (synopsis "Allows a few specific tests to be focused on")
4554 (description
4555 "@code{minitest-focus} gives the ability focus on a few tests with ease
4556without having to use command-line arguments. It introduces a @code{focus}
4557class method for use in testing classes, specifying that the next defined test
4558is to be run.")
4559 (home-page "https://github.com/seattlerb/minitest-focus")
4560 (license license:expat)))
4561
4562(define-public ruby-minitest-pretty-diff
4563 ;; Use git reference because gem is out of date and does not contain testing
4564 ;; script. There are no releases on GitHub.
4565 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
4566 (package
4567 (name "ruby-minitest-pretty-diff")
4568 (version (string-append "0.1-1." (string-take commit 8)))
4569 (source (origin
4570 (method git-fetch)
4571 (uri (git-reference
4572 (url "https://github.com/adammck/minitest-pretty_diff")
4573 (commit commit)))
4574 (file-name (string-append name "-" version "-checkout"))
4575 (sha256
4576 (base32
4577 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
4578 (build-system ruby-build-system)
4579 (arguments
4580 `(#:phases
4581 (modify-phases %standard-phases
4582 (replace 'check
4583 (lambda _
4584 (invoke "script/test"))))))
4585 (native-inputs
4586 `(("bundler" ,bundler)
4587 ("ruby-turn" ,ruby-turn)))
4588 (synopsis "Pretty-print hashes and arrays in MiniTest")
4589 (description
4590 "@code{minitest-pretty_diff} monkey-patches
4591@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
4592diffing them. This makes it easier to spot differences between nested
4593structures when tests fail.")
4594 (home-page "https://github.com/adammck/minitest-pretty_diff")
4595 (license license:expat))))
4596
4597(define-public ruby-minitest-moar
4598 (package
4599 (name "ruby-minitest-moar")
4600 (version "0.0.4")
4601 (source
4602 (origin
4603 (method url-fetch)
4604 (uri (rubygems-uri "minitest-moar" version))
4605 (sha256
4606 (base32
4607 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
4608 (build-system ruby-build-system)
4609 (arguments
4610 `(#:phases
4611 (modify-phases %standard-phases
4612 (add-before 'check 'clean-dependencies
4613 (lambda _
4614 ;; Remove all gems defined in the Gemfile because these are not
4615 ;; truly needed.
4616 (substitute* "Gemfile"
4617 (("gem .*") ""))
4618 ;; Remove byebug as not needed to run tests.
4619 (substitute* "test/test_helper.rb"
4620 (("require 'byebug'") ""))
4621 #t)))))
4622 (native-inputs
4623 `(("bundler" ,bundler)
4624 ("ruby-minitest" ,ruby-minitest)))
4625 (synopsis "Extra features and changes to MiniTest")
4626 (description "@code{MiniTest Moar} add some additional features and
4627changes some default behaviours in MiniTest. For instance, Moar replaces the
4628MiniTest @code{Object#stub} with a global @code{stub} method.")
4629 (home-page "https://github.com/dockyard/minitest-moar")
4630 (license license:expat)))
4631
4632(define-public ruby-minitest-bonus-assertions
4633 (package
4634 (name "ruby-minitest-bonus-assertions")
4635 (version "3.0")
4636 (source
4637 (origin
4638 (method url-fetch)
4639 (uri (rubygems-uri "minitest-bonus-assertions" version))
4640 (sha256
4641 (base32
4642 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
4643 (build-system ruby-build-system)
4644 (arguments
4645 `(#:phases
4646 (modify-phases %standard-phases
4647 (add-before 'check 'clean-dependencies
4648 (lambda _
4649 ;; Remove unneeded require statement that would entail another
4650 ;; dependency.
4651 (substitute* "test/minitest_config.rb"
4652 (("require 'minitest/bisect'") ""))
4653 #t)))))
4654 (native-inputs
4655 `(("ruby-hoe" ,ruby-hoe)
4656 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
4657 ("ruby-minitest-focus" ,ruby-minitest-focus)
4658 ("ruby-minitest-moar" ,ruby-minitest-moar)))
4659 (synopsis "Bonus assertions for @code{Minitest}")
4660 (description
4661 "Minitest bonus assertions provides extra MiniTest assertions. For
4662instance, it provides @code{assert_true}, @code{assert_false} and
4663@code{assert_set_equal}.")
4664 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
4665 (license license:expat)))
4666
4667(define-public ruby-minitest-reporters
4668 (package
4669 (name "ruby-minitest-reporters")
4670 (version "1.3.6")
4671 (source
4672 (origin
4673 (method url-fetch)
4674 (uri (rubygems-uri "minitest-reporters" version))
4675 (sha256
4676 (base32
4677 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
4678 (build-system ruby-build-system)
4679 (arguments
4680 '(#:phases
4681 (modify-phases %standard-phases
4682 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
4683 ;; including it as an input can lead to circular dependencies.
4684 (add-after 'unpack 'remove-rubocop-from-Rakefile
4685 (lambda _
4686 (substitute* "Rakefile"
4687 (("require 'rubocop/rake\\_task'") "")
4688 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
4689 #t))
4690 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
4691 (lambda _
4692 (substitute* "minitest-reporters.gemspec"
4693 ((".*%q<rubocop>.*") "\n"))
4694 #t)))))
4695 (propagated-inputs
4696 `(("ruby-ansi" ,ruby-ansi)
4697 ("ruby-builder" ,ruby-builder)
4698 ("ruby-minitest" ,ruby-minitest)
4699 ("ruby-progressbar" ,ruby-progressbar)))
4700 (native-inputs
4701 `(("bundler" ,bundler)
4702 ("ruby-maruku" ,ruby-maruku)))
4703 (synopsis "Enhanced reporting for Minitest tests")
4704 (description
4705 "@code{minitest/reporters} provides a custom Minitest runner to improve
4706how the test state is reported. A number of different reporters are
4707available, including a spec reporter, progress bar reporter, a HTML
4708reporter.")
4709 (home-page "https://github.com/kern/minitest-reporters")
4710 (license license:expat)))
4711
4712(define-public ruby-minitest-rg
4713 (package
4714 (name "ruby-minitest-rg")
4715 (version "5.2.0")
4716 (source
4717 (origin
4718 (method url-fetch)
4719 (uri (rubygems-uri "minitest-rg" version))
4720 (sha256
4721 (base32
4722 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
4723 (build-system ruby-build-system)
4724 (arguments
4725 ;; Some tests fail even outside Guix, so disable tests.
4726 ;; https://github.com/blowmage/minitest-rg/issues/12
4727 ;; https://github.com/blowmage/minitest-rg/pull/13
4728 `(#:tests? #f))
4729 (propagated-inputs
4730 `(("ruby-minitest" ,ruby-minitest)))
4731 (synopsis "Coloured output for Minitest")
4732 (description
4733 "@code{minitest-rg} changes the colour of the output from Minitest.")
4734 (home-page "https://blowmage.com/minitest-rg/")
4735 (license license:expat)))
4736
4737(define-public ruby-minitest-global-expectations
4738 (package
4739 (name "ruby-minitest-global-expectations")
4740 (version "1.0.1")
4741 (source
4742 (origin
4743 (method url-fetch)
4744 (uri (rubygems-uri "minitest-global_expectations"
4745 version))
4746 (sha256
4747 (base32
4748 "1pp3k2608spj4kvqy2y16hs18an917g6vwgvphrfhjviac83090x"))))
4749 (build-system ruby-build-system)
4750 (propagated-inputs
4751 `(("ruby-minitest" ,ruby-minitest)))
4752 (synopsis "Adjust minitest behaviour for calling expectation methods")
4753 (description
4754 "Minitest-global_expectations allows continued use of expectation methods
4755on all objects. Calling expectation methods on all objects was deprecated in
4756minitest 5.12, and is planned to be removed from minitest 6.")
4757 (home-page "https://github.com/jeremyevans/minitest-global_expectations")
4758 (license license:expat)))
4759
4760(define-public ruby-minitest-hooks
4761 (package
4762 (name "ruby-minitest-hooks")
4763 (version "1.4.2")
4764 (source
4765 (origin
4766 (method url-fetch)
4767 (uri (rubygems-uri "minitest-hooks" version))
4768 (sha256
4769 (base32
4770 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
4771 (build-system ruby-build-system)
4772 (arguments
4773 '(#:test-target "spec"))
4774 (native-inputs
4775 `(("ruby-sequel" ,ruby-sequel)
4776 ("ruby-sqlite3" ,ruby-sqlite3)))
4777 (synopsis "Hooks for the minitest framework")
4778 (description
4779 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
4780@code{around_all} hooks for Minitest. This allows, for instance, running each
4781suite of specs inside a database transaction, running each spec inside its own
4782savepoint inside that transaction. This can significantly speed up testing
4783for specs that share expensive database setup code.")
4784 (home-page "https://github.com/jeremyevans/minitest-hooks")
4785 (license license:expat)))
4786
4787(define-public ruby-daemons
4788 (package
4789 (name "ruby-daemons")
4790 (version "1.2.5")
4791 (source (origin
4792 (method url-fetch)
4793 (uri (rubygems-uri "daemons" version))
4794 (sha256
4795 (base32
4796 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
4797 (build-system ruby-build-system)
4798 (arguments
4799 `(#:tests? #f)) ; no test suite
4800 (synopsis "Daemonize Ruby programs")
4801 (description "Daemons provides a way to wrap existing Ruby scripts to be
4802run as a daemon and to be controlled by simple start/stop/restart commands.")
4803 (home-page "https://github.com/thuehlinger/daemons")
4804 (license license:expat)))
4805
4806(define-public ruby-data_uri
4807 (package
4808 (name "ruby-data_uri")
4809 (version "0.1.0")
4810 (source
4811 (origin
4812 (method url-fetch)
4813 (uri (rubygems-uri "data_uri" version))
4814 (sha256
4815 (base32
4816 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
4817 (build-system ruby-build-system)
4818 (synopsis "URI class for parsing data URIs")
4819 (description
4820 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
4821embedded inside a URI. The URI::Data class provides support for parsing these
4822URIs using the normal URI.parse method.")
4823 (home-page "https://github.com/dball/data_uri")
4824 (license license:expat)))
4825
4826(define-public ruby-deep-merge
4827 (package
4828 (name "ruby-deep-merge")
4829 (version "1.2.1")
4830 (home-page "https://github.com/danielsdeleo/deep_merge")
4831 ;; The Rubygem source does not contain the gemspec required for tests.
4832 (source (origin
4833 (method git-fetch)
4834 (uri (git-reference (url home-page) (commit version)))
4835 (file-name (git-file-name name version))
4836 (sha256
4837 (base32
4838 "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931"))))
4839 (build-system ruby-build-system)
4840 (native-inputs
4841 `(("ruby-minitest" ,ruby-minitest)))
4842 (synopsis "Recursively merge hashes")
4843 (description
4844 "Deep Merge is a set of utility functions for @code{Hash}. It permits
4845you to merge elements inside a hash together recursively.")
4846 (license license:expat)))
4847
4848(define-public ruby-git
4849 (package
4850 (name "ruby-git")
4851 (version "1.3.0")
4852 (source (origin
4853 (method url-fetch)
4854 (uri (rubygems-uri "git" version))
4855 (sha256
4856 (base32
4857 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
4858 (build-system ruby-build-system)
4859 (arguments
4860 `(#:tests? #f ; no tests
4861 #:phases (modify-phases %standard-phases
4862 (add-after 'install 'patch-git-binary
4863 (lambda* (#:key inputs outputs #:allow-other-keys)
4864 ;; Make the default git binary an absolute path to the
4865 ;; store.
4866 (let ((git (string-append (assoc-ref inputs "git")
4867 "/bin/git"))
4868 (config (string-append
4869 (assoc-ref outputs "out")
4870 "/lib/ruby/vendor_ruby/gems/git-"
4871 ,version "/lib/git/config.rb")))
4872 (substitute* (list config)
4873 (("'git'")
4874 (string-append "'" git "'")))
4875 #t))))))
4876 (inputs
4877 `(("git" ,git)))
4878 (synopsis "Ruby wrappers for Git")
4879 (description "Ruby/Git is a Ruby library that can be used to create, read
4880and manipulate Git repositories by wrapping system calls to the git binary.")
4881 (home-page "https://github.com/schacon/ruby-git")
4882 (license license:expat)))
4883
4884(define-public ruby-hocon
4885 (package
4886 (name "ruby-hocon")
4887 (version "1.3.1")
4888 (home-page "https://github.com/puppetlabs/ruby-hocon")
4889 (source (origin
4890 (method git-fetch)
4891 (uri (git-reference (url home-page) (commit version)))
4892 (file-name (git-file-name name version))
4893 (sha256
4894 (base32
4895 "172hh2zr0n9nnszv0qvlgwszgkrq84yahrg053m68asy79zpmbqr"))))
4896 (build-system ruby-build-system)
4897 (arguments
4898 '(#:phases (modify-phases %standard-phases
4899 (replace 'check
4900 (lambda* (#:key tests? #:allow-other-keys)
4901 (if tests?
4902 (invoke "rspec")
4903 (format #t "test suite not run~%"))
4904 #t)))))
4905 (native-inputs
4906 `(("bundler" ,bundler)
4907 ("ruby-rspec" ,ruby-rspec)))
4908 (synopsis "HOCON config library")
4909 (description
4910 "This package provides Ruby support for the @acronym{HOCON,
4911Human-Optimized Config Object Notation} configuration file format. It
4912supports parsing and modifying HOCON and JSON files, and rendering parsed
4913objects back to a @code{String}.")
4914 (license license:asl2.0)))
4915
4916(define-public ruby-slop
4917 (package
4918 (name "ruby-slop")
4919 (version "4.5.0")
4920 (source (origin
4921 (method url-fetch)
4922 (uri (rubygems-uri "slop" version))
4923 (sha256
4924 (base32
4925 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
4926 (build-system ruby-build-system)
4927 (native-inputs
4928 `(("ruby-minitest" ,ruby-minitest)))
4929 (synopsis "Ruby command line option parser")
4930 (description "Slop provides a Ruby domain specific language for gathering
4931options and parsing command line flags.")
4932 (home-page "https://github.com/leejarvis/slop")
4933 (license license:expat)))
4934
4935(define-public ruby-slop-3
4936 (package (inherit ruby-slop)
4937 (version "3.6.0")
4938 (source (origin
4939 (method url-fetch)
4940 (uri (rubygems-uri "slop" version))
4941 (sha256
4942 (base32
4943 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
4944
4945(define-public ruby-multi-xml
4946 (package
4947 (name "ruby-multi-xml")
4948 (version "0.6.0")
4949 (source
4950 (origin
4951 (method url-fetch)
4952 (uri (rubygems-uri "multi_xml" version))
4953 (sha256
4954 (base32
4955 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
4956 (build-system ruby-build-system)
4957 (arguments
4958 '(#:tests? #f)) ; No included tests
4959 (synopsis "Swappable XML backends for Ruby")
4960 (description
4961 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
4962Nokogiri, Ox, or REXML.")
4963 (home-page "https://github.com/sferik/multi_xml")
4964 (license license:expat)))
4965
4966(define-public ruby-multipart-post
4967 (package
4968 (name "ruby-multipart-post")
4969 (version "2.0.0")
4970 (source (origin
4971 (method url-fetch)
4972 (uri (rubygems-uri "multipart-post" version))
4973 (sha256
4974 (base32
4975 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
4976 (build-system ruby-build-system)
4977 (native-inputs
4978 `(("bundler" ,bundler)))
4979 (synopsis "Multipart POST library for Ruby")
4980 (description "Multipart-Post Adds multipart POST capability to Ruby's
4981net/http library.")
4982 (home-page "https://github.com/nicksieger/multipart-post")
4983 (license license:expat)))
4984
4985(define-public ruby-multi-json
4986 (package
4987 (name "ruby-multi-json")
4988 (version "1.13.1")
4989 (source
4990 (origin
4991 (method git-fetch)
4992 ;; Tests are not distributed at rubygems.org so download from GitHub
4993 ;; instead.
4994 (uri (git-reference
4995 (url "https://github.com/intridea/multi_json")
4996 (commit (string-append "v" version))))
4997 (file-name (git-file-name name version))
4998 (sha256
4999 (base32
5000 "18wpb6p01rrkl4v33byh70vxj2a5jxkfxzv3pz8z6pssy4ymwkm4"))))
5001 (build-system ruby-build-system)
5002 (arguments
5003 `(#:phases
5004 (modify-phases %standard-phases
5005 (add-after 'unpack 'remove-signing-key-reference
5006 (lambda _
5007 (substitute* "multi_json.gemspec"
5008 ((".*spec.signing_key.*") ""))
5009 #t)))))
5010 (native-inputs
5011 `(("bundler" ,bundler)
5012 ("ruby-rspec" ,ruby-rspec)
5013 ("ruby-yard" ,ruby-yard)
5014 ("ruby-json-pure" ,ruby-json-pure)
5015 ("ruby-oj" ,ruby-oj)
5016 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
5017 (synopsis "Common interface to multiple JSON libraries for Ruby")
5018 (description
5019 "This package provides a common interface to multiple JSON libraries,
5020including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
5021NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
5022 (home-page "https://github.com/intridea/multi_json")
5023 (license license:expat)))
5024
5025(define-public ruby-multi-test
5026 (package
5027 (name "ruby-multi-test")
5028 (version "0.1.2")
5029 (source
5030 (origin
5031 (method url-fetch)
5032 (uri (rubygems-uri "multi_test" version))
5033 (sha256
5034 (base32
5035 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
5036 (build-system ruby-build-system)
5037 (arguments
5038 '(;; Tests require different sets of specific gem versions to be available,
5039 ;; and there is no gemfile that specifies the newest versions of
5040 ;; dependencies to be tested.
5041 #:tests? #f))
5042 (synopsis
5043 "Interface to testing libraries loaded into a running Ruby process")
5044 (description
5045 "@code{multi_test} provides a uniform interface onto whatever testing
5046libraries that have been loaded into a running Ruby process to help control
5047rogue test/unit/autorun requires.")
5048 (home-page "https://github.com/cucumber/multi_test")
5049 (license license:expat)))
5050
5051(define-public ruby-arel
5052 (package
5053 (name "ruby-arel")
5054 (version "9.0.0")
5055 (source (origin
5056 (method url-fetch)
5057 (uri (rubygems-uri "arel" version))
5058 (sha256
5059 (base32
5060 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
5061 (build-system ruby-build-system)
5062 (arguments '(#:tests? #f)) ; no tests
5063 (home-page "https://github.com/rails/arel")
5064 (synopsis "SQL AST manager for Ruby")
5065 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
5066Ruby. It simplifies the generation of complex SQL queries and adapts to
5067various relational database implementations.")
5068 (license license:expat)))
5069
5070(define-public ruby-marcel
5071 (package
5072 (name "ruby-marcel")
5073 (version "0.3.3")
5074 (source
5075 (origin
5076 (method url-fetch)
5077 (uri (rubygems-uri "marcel" version))
5078 (sha256
5079 (base32
5080 "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
5081 (build-system ruby-build-system)
5082 (arguments
5083 '(;; No included tests
5084 #:tests? #f))
5085 (propagated-inputs
5086 `(("ruby-mimemagic" ,ruby-mimemagic)))
5087 (synopsis "MIME type detection using magic numbers, filenames and extensions")
5088 (description
5089 "@code{marcel} provides @acronym{MIME, Multipurpose Internet Mail
5090Extensions} type detection using magic numbers, filenames, and extensions")
5091 (home-page "https://github.com/basecamp/marcel")
5092 (license license:expat)))
5093
5094(define-public ruby-minitar
5095 ;; We package from the GitHub source to fix the security issue reported at
5096 ;; https://github.com/halostatue/minitar/issues/16.
5097 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
5098 (package
5099 (name "ruby-minitar")
5100 (version (string-append "0.5.4-1." (string-take commit 8)))
5101 (source
5102 (origin
5103 (method git-fetch)
5104 (uri (git-reference
5105 (url "https://github.com/halostatue/minitar")
5106 (commit commit)))
5107 (file-name (string-append name "-" version "-checkout"))
5108 (sha256
5109 (base32
5110 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
5111 (build-system ruby-build-system)
5112 (arguments
5113 '(#:tests? #f)) ; missing a gemspec
5114 (synopsis "Ruby library and utility for handling tar archives")
5115 (description
5116 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
5117that provides the ability to deal with POSIX tar archive files.")
5118 (home-page "http://www.github.com/atoulme/minitar")
5119 (license (list license:gpl2+ license:ruby)))))
5120
5121(define-public ruby-mini-portile
5122 (package
5123 (name "ruby-mini-portile")
5124 (version "0.6.2")
5125 (source
5126 (origin
5127 (method url-fetch)
5128 (uri (rubygems-uri "mini_portile" version))
5129 (sha256
5130 (base32
5131 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
5132 (build-system ruby-build-system)
5133 (arguments
5134 '(#:tests? #f)) ; tests require network access
5135 (synopsis "Ports system for Ruby developers")
5136 (description "Mini-portile is a port/recipe system for Ruby developers.
5137It provides a standard way to compile against specific versions of libraries
5138to reproduce user environments.")
5139 (home-page "https://github.com/flavorjones/mini_portile")
5140 (license license:expat)))
5141
5142(define-public ruby-mini-portile-2
5143 (package (inherit ruby-mini-portile)
5144 (version "2.4.0")
5145 (source (origin
5146 (method url-fetch)
5147 (uri (rubygems-uri "mini_portile2" version))
5148 (sha256
5149 (base32
5150 "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"))))))
5151
5152(define-public ruby-nokogiri
5153 (package
5154 (name "ruby-nokogiri")
5155 (version "1.10.9")
5156 (source (origin
5157 (method url-fetch)
5158 (uri (rubygems-uri "nokogiri" version))
5159 (sha256
5160 (base32
5161 "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm"))))
5162 (build-system ruby-build-system)
5163 (arguments
5164 ;; Tests fail because Nokogiri can only test with an installed extension,
5165 ;; and also because many test framework dependencies are missing.
5166 `(#:tests? #f
5167 #:gem-flags (list "--" "--use-system-libraries"
5168 (string-append "--with-xml2-include="
5169 (assoc-ref %build-inputs "libxml2")
5170 "/include/libxml2" ))
5171 #:phases
5172 (modify-phases %standard-phases
5173 (add-before 'build 'patch-extconf
5174 ;; 'pkg-config' is not included in the GEM_PATH during
5175 ;; installation, so we add it directly to the load path.
5176 (lambda* (#:key inputs #:allow-other-keys)
5177 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
5178 (substitute* "ext/nokogiri/extconf.rb"
5179 (("gem 'pkg-config'.*")
5180 (string-append "$:.unshift '"
5181 pkg-config "/lib/ruby/vendor_ruby"
5182 "/gems/pkg-config-"
5183 ,(package-version ruby-pkg-config)
5184 "/lib'\n"))))
5185 #t)))))
5186 (native-inputs
5187 `(("ruby-hoe" ,ruby-hoe)))
5188 (inputs
5189 `(("zlib" ,zlib)
5190 ("libxml2" ,libxml2)
5191 ("libxslt" ,libxslt)))
5192 (propagated-inputs
5193 `(("ruby-mini-portile" ,ruby-mini-portile-2)
5194 ("ruby-pkg-config" ,ruby-pkg-config)))
5195 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
5196 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
5197both CSS3 selector and XPath 1.0 support.")
5198 (home-page "http://www.nokogiri.org/")
5199 (license license:expat)))
5200
5201(define-public ruby-method-source
5202 (package
5203 (name "ruby-method-source")
5204 (version "1.0.0")
5205 (source
5206 (origin
5207 (method url-fetch)
5208 (uri (rubygems-uri "method_source" version))
5209 (sha256
5210 (base32
5211 "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"))))
5212 (build-system ruby-build-system)
5213 (arguments
5214 `(#:test-target "spec"
5215 #:phases
5216 (modify-phases %standard-phases
5217 (add-after 'unpack 'remove-git-ls-files
5218 (lambda* (#:key outputs #:allow-other-keys)
5219 (substitute* "Rakefile"
5220 (("git ls-files") "find . -type f"))
5221 #t)))))
5222 (native-inputs
5223 `(("ruby-rspec" ,ruby-rspec)))
5224 (synopsis "Retrieve the source code for Ruby methods")
5225 (description "Method_source retrieves the source code for Ruby methods.
5226Additionally, it can extract source code from Proc and Lambda objects or just
5227extract comments.")
5228 (home-page "https://github.com/banister/method_source")
5229 (license license:expat)))
5230
5231(define-public ruby-coderay
5232 (package
5233 (name "ruby-coderay")
5234 (version "1.1.2")
5235 (source
5236 (origin
5237 (method url-fetch)
5238 (uri (rubygems-uri "coderay" version))
5239 (sha256
5240 (base32
5241 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
5242 (build-system ruby-build-system)
5243 (arguments
5244 '(#:tests? #f)) ; missing test files
5245 (synopsis "Ruby syntax highlighting library")
5246 (description "Coderay is a Ruby library that provides syntax highlighting
5247for select languages.")
5248 (home-page "http://coderay.rubychan.de")
5249 (license license:expat)))
5250
5251(define-public ruby-cuke-modeler
5252 (package
5253 (name "ruby-cuke-modeler")
5254 (version "3.1.0")
5255 (source
5256 (origin
5257 (method url-fetch)
5258 (uri (rubygems-uri "cuke_modeler" version))
5259 (sha256
5260 (base32
5261 "19smj3g3wvz0203l549sadpcxgh0ir350a6k78gq0bmlv9cchmjb"))))
5262 (build-system ruby-build-system)
5263 (arguments `(#:tests? #f)) ;no test suite in gem
5264 (propagated-inputs
5265 `(("ruby-gherkin" ,ruby-gherkin)))
5266 (synopsis "Gherkin test suite analysis tool")
5267 (description "CukeModeler facilitates modeling a test suite that is
5268written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by
5269providing an abstraction layer on top of the Abstract Syntax Tree (AST) that
5270the @code{cucumber-gherkin} generates when parsing features, as well as
5271providing models for feature files and directories in order to be able to have
5272a fully traversable model tree of a test suite's structure. These models can
5273then be analyzed or manipulated more easily than the underlying AST layer.")
5274 (home-page "https://github.com/enkessler/cuke_modeler")
5275 (license license:expat)))
5276
5277(define-public ruby-parallel-tests
5278 (package
5279 (name "ruby-parallel-tests")
5280 (version "3.0.0")
5281 (home-page "https://github.com/grosser/parallel_tests")
5282 (source (origin
5283 (method git-fetch)
5284 (uri (git-reference
5285 (url home-page)
5286 (commit (string-append "v" version))))
5287 (file-name (string-append name version))
5288 (sha256
5289 (base32
5290 "08a6ndqn2dqacmc7yg48k0dh2rfrynvhkd5hiay16dl9m1r9q8pz"))))
5291 (build-system ruby-build-system)
5292 (arguments
5293 '(#:test-target "default"
5294 #:phases (modify-phases %standard-phases
5295 (add-after 'patch-source-shebangs 'patch-shell-invokations
5296 (lambda _
5297 (substitute* '("lib/parallel_tests/tasks.rb"
5298 "spec/parallel_tests/tasks_spec.rb")
5299 (("/bin/sh") (which "sh"))
5300 (("/bin/bash") (which "bash")))
5301 #t))
5302 (add-before 'check 'remove-version-constraints
5303 (lambda _
5304 ;; Remove hard coded version constraints, instead just
5305 ;; use whatever versions are available in Guix.
5306 (delete-file "Gemfile.lock")
5307 (substitute* "Gemfile"
5308 (("'minitest',.*")
5309 "'minitest'\n")
5310 (("'cucumber',.*")
5311 "'cucumber'\n"))
5312 #t))
5313 (add-before 'check 'disable-rails-test
5314 (lambda _
5315 ;; XXX: This test attempts to download and run the test
5316 ;; suites of multiple Rails versions(!) directly.
5317 (delete-file "spec/rails_spec.rb")
5318 #t))
5319 (add-before 'check 'set-HOME
5320 (lambda _
5321 ;; Some tests check the output of Bundler, and fail when
5322 ;; Bundler warns that /homeless-shelter does not exist.
5323 (setenv "HOME" "/tmp")
5324 #t)))))
5325 (native-inputs
5326 `(("ruby-bump" ,ruby-bump)
5327 ("ruby-cucumber" ,ruby-cucumber)
5328 ("ruby-cuke-modeler" ,ruby-cuke-modeler)
5329 ("ruby-minitest" ,ruby-minitest)
5330 ("ruby-rake" ,ruby-rake)
5331 ("ruby-rspec" ,ruby-rspec)
5332 ("ruby-spinach" ,ruby-spinach)))
5333 (propagated-inputs
5334 `(("ruby-parallel" ,ruby-parallel)))
5335 (synopsis "Run tests in parallel")
5336 (description
5337 "This package can speed up @code{Test::Unit}, @code{RSpec},
5338@code{Cucumber}, and @code{Spinach} tests by running them concurrently
5339across multiple CPU cores.")
5340 (license license:expat)))
5341
5342(define-public ruby-parser
5343 (package
5344 (name "ruby-parser")
5345 (version "3.0.0.0")
5346 (source
5347 (origin
5348 (method url-fetch)
5349 (uri (rubygems-uri "parser" version))
5350 (sha256
5351 (base32
5352 "1jixakyzmy0j5c1rb0fjrrdhgnyryvrr6vgcybs14jfw09akv5ml"))))
5353 (build-system ruby-build-system)
5354 (arguments
5355 '(#:tests? #f)) ; tests not included in gem
5356 (native-inputs
5357 `(("bundler" ,bundler)
5358 ("ruby-cliver" ,ruby-cliver)
5359 ("ruby-simplecov" ,ruby-simplecov)
5360 ("ruby-racc" ,ruby-racc)))
5361 (inputs
5362 `(("ragel" ,ragel)))
5363 (propagated-inputs
5364 `(("ruby-ast" ,ruby-ast)))
5365 (synopsis "Ruby parser written in pure Ruby")
5366 (description
5367 "This package provides a Ruby parser written in pure Ruby.")
5368 (home-page "https://github.com/whitequark/parser")
5369 (license license:expat)))
5370
5371(define-public ruby-sexp-processor
5372 (package
5373 (name "ruby-sexp-processor")
5374 (version "4.15.0")
5375 (source
5376 (origin
5377 (method url-fetch)
5378 (uri (rubygems-uri "sexp_processor" version))
5379 (sha256
5380 (base32
5381 "0d1vks77xnd0m3s94a58f9bkdwlaml5qdkmprx279m2s0pc2gv55"))))
5382 (build-system ruby-build-system)
5383 (native-inputs
5384 ;; TODO: Add ruby-minitest-proveit once available.
5385 `(("hoe" ,ruby-hoe)))
5386 (synopsis "ParseTree fork which includes generic S-exp processing tools")
5387 (description "The sexp_processor package is derived from ParseTree, but
5388contrary to ParseTree, it includes all the generic S-exp processing tools.
5389Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and
5390@code{Environment}")
5391 (home-page "https://github.com/seattlerb/sexp_processor")
5392 (license license:expat)))
5393
5394(define-public ruby-ruby-parser
5395 (package
5396 (name "ruby-ruby-parser")
5397 (version "3.14.2")
5398 (source
5399 (origin
5400 (method url-fetch)
5401 (uri (rubygems-uri "ruby_parser" version))
5402 (sha256
5403 (base32
5404 "09qcdyjjw3p7g6cjm5m9swkms1xnv35ndiy7yw24cas16qrhha6c"))))
5405 (build-system ruby-build-system)
5406 (native-inputs
5407 `(("hoe" ,ruby-hoe)
5408 ("racc" ,ruby-racc)
5409 ("unifdef" ,unifdef)))
5410 (propagated-inputs
5411 `(("ruby-sexp-processor" ,ruby-sexp-processor)))
5412 (home-page "https://github.com/seattlerb/ruby_parser/")
5413 (synopsis "Ruby parser written in pure Ruby")
5414 (description "The ruby_parser (RP) package provides a Ruby parser written
5415in pure Ruby. It outputs S-expressions which can be manipulated and converted
5416back to Ruby via the @code{ruby2ruby} library.")
5417 (license license:expat)))
5418
5419(define-public ruby-prawn-manual-builder
5420 (package
5421 (name "ruby-prawn-manual-builder")
5422 (version "0.3.1")
5423 (source
5424 (origin
5425 (method url-fetch)
5426 (uri (rubygems-uri "prawn-manual_builder" version))
5427 (sha256
5428 (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs"))))
5429 (build-system ruby-build-system)
5430 (arguments
5431 '(#:tests? #f ; no included tests
5432 #:phases
5433 (modify-phases %standard-phases
5434 (add-after 'extract-gemspec 'patch-gemspec
5435 (lambda _
5436 (substitute* ".gemspec"
5437 ;; Loosen the requirement for pdf-inspector
5438 (("~> 1\\.0\\.7") ">= 0")))))))
5439 (propagated-inputs
5440 `(("ruby-coderay" ,ruby-coderay)))
5441 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
5442 (description
5443 "This package provides a tool for writing manuals for Prawn and Prawn
5444accessories")
5445 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
5446 (license %prawn-project-licenses)))
5447
5448(define-public ruby-progress_bar
5449 (package
5450 (name "ruby-progress_bar")
5451 (version "1.1.0")
5452 (source
5453 (origin
5454 (method url-fetch)
5455 (uri (rubygems-uri "progress_bar" version))
5456 (sha256
5457 (base32
5458 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
5459 (build-system ruby-build-system)
5460 (arguments
5461 '(#:test-target "spec"))
5462 (propagated-inputs
5463 `(("ruby-highline" ,ruby-highline)
5464 ("ruby-options" ,ruby-options)))
5465 (native-inputs
5466 `(("bundler" ,bundler)
5467 ("ruby-rspec" ,ruby-rspec)
5468 ("ruby-timecop" ,ruby-timecop)))
5469 (synopsis
5470 "Ruby library for displaying progress bars")
5471 (description
5472 "ProgressBar is a simple library for displaying progress bars. The
5473maximum value is configurable, and additional information can be displayed
5474like the percentage completion, estimated time remaining, elapsed time and
5475rate.")
5476 (home-page "https://github.com/paul/progress_bar")
5477 (license license:wtfpl2)))
5478
5479(define-public ruby-dep
5480 (package
5481 (name "ruby-dep")
5482 (version "1.5.0")
5483 (source
5484 (origin
5485 (method url-fetch)
5486 (uri (rubygems-uri "ruby_dep" version))
5487 (sha256
5488 (base32
5489 "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
5490 (build-system ruby-build-system)
5491 (arguments
5492 '(#:tests? #f)) ; No included tests
5493 (synopsis "Creates a version constraint of supported Rubies")
5494 (description
5495 "This package helps create a version constraint of supported Rubies,
5496suitable for a gemspec file.")
5497 (home-page "https://github.com/e2/ruby_dep")
5498 (license license:expat)))
5499
5500(define-public ruby-progressbar
5501 (package
5502 (name "ruby-progressbar")
5503 (version "1.10.1")
5504 (source
5505 (origin
5506 (method url-fetch)
5507 (uri (rubygems-uri "ruby-progressbar" version))
5508 (sha256
5509 (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf"))))
5510 (build-system ruby-build-system)
5511 (arguments
5512 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
5513 #:tests? #f))
5514 (synopsis "Text progress bar library for Ruby")
5515 (description
5516 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
5517The output can be customized with a formatting system.")
5518 (home-page "https://github.com/jfelchner/ruby-progressbar")
5519 (license license:expat)))
5520
5521(define-public ruby-pry
5522 (package
5523 (name "ruby-pry")
5524 (version "0.13.1")
5525 (source
5526 (origin
5527 (method url-fetch)
5528 (uri (rubygems-uri "pry" version))
5529 (sha256
5530 (base32
5531 "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk"))))
5532 (build-system ruby-build-system)
5533 (arguments
5534 '(#:tests? #f)) ; no tests
5535 (propagated-inputs
5536 `(("ruby-coderay" ,ruby-coderay)
5537 ("ruby-method-source" ,ruby-method-source)))
5538 (synopsis "Ruby REPL")
5539 (description "Pry is an IRB alternative and runtime developer console for
5540Ruby. It features syntax highlighting, a plugin architecture, runtime
5541invocation, and source and documentation browsing.")
5542 (home-page "https://cobaltbluemedia.com/pryrepl/")
5543 (license license:expat)))
5544
5545(define-public ruby-single-cov
5546 (package
5547 (name "ruby-single-cov")
5548 (version "1.3.2")
5549 (home-page "https://github.com/grosser/single_cov")
5550 (source (origin
5551 (method git-fetch)
5552 (uri (git-reference (url home-page)
5553 (commit (string-append "v" version))))
5554 (file-name (git-file-name name version))
5555 (sha256
5556 (base32
5557 "05qdzpcai1p23a120gb9bxkfl4y73k9hicx34ch2lsk31lgi9bl7"))))
5558 (build-system ruby-build-system)
5559 (arguments
5560 '(#:test-target "default"
5561 #:phases (modify-phases %standard-phases
5562 (replace 'replace-git-ls-files
5563 (lambda _
5564 (substitute* "single_cov.gemspec"
5565 (("`git ls-files lib/ bin/ MIT-LICENSE`")
5566 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
5567 #t))
5568 (add-before 'check 'remove-version-constraints
5569 (lambda _
5570 (delete-file "Gemfile.lock")
5571 #t))
5572 (add-before 'check 'make-files-writable
5573 (lambda _
5574 ;; Tests need to create local directories and open files
5575 ;; with write permissions.
5576 (for-each make-file-writable
5577 (find-files "specs" #:directories? #t))
5578 #t))
5579 (add-before 'check 'disable-failing-test
5580 (lambda _
5581 ;; XXX: This test copies assets from minitest, but can
5582 ;; not cope with the files being read-only. Just skip
5583 ;; it for now.
5584 (substitute* "specs/single_cov_spec.rb"
5585 (("it \"complains when coverage is bad\"")
5586 "xit \"complains when coverage is bad\""))
5587 #t)))))
5588 (native-inputs
5589 `(("ruby-bump" ,ruby-bump)
5590 ("ruby-minitest" ,ruby-minitest)
5591 ("ruby-rspec" ,ruby-rspec)
5592 ("ruby-simplecov" ,ruby-simplecov)))
5593 (synopsis "Code coverage reporting tool")
5594 (description
5595 "This package provides actionable code coverage reports for Ruby
5596projects. It has very little overhead and can be easily integrated with
5597development tools to catch coverage problems early.")
5598 (license license:expat)))
5599
5600(define-public ruby-oedipus-lex
5601 (package
5602 (name "ruby-oedipus-lex")
5603 (version "2.5.2")
5604 (source
5605 (origin
5606 (method url-fetch)
5607 (uri (rubygems-uri "oedipus_lex" version))
5608 (sha256
5609 (base32
5610 "1v1rk78khwq87ar300lwll570zxpkq9rjnpgc9mgsyd6mm9qjz4w"))))
5611 (build-system ruby-build-system)
5612 (native-inputs
5613 `(("ruby-hoe" ,ruby-hoe)))
5614 (synopsis "Ruby lexer")
5615 (description
5616 "Oedipus Lex is a lexer generator in the same family as Rexical and Rex.
5617It is based primarily on generating code much like you would a hand-written
5618lexer. It uses StrScanner within a multi-level case statement. As such,
5619Oedipus matches on the first match, not the longest.")
5620 (home-page "https://github.com/seattlerb/oedipus_lex")
5621 (license license:expat)))
5622
5623(define-public ruby-guard
5624 (package
5625 (name "ruby-guard")
5626 (version "2.13.0")
5627 (source (origin
5628 (method git-fetch)
5629 ;; The gem does not include a Rakefile, nor does it contain a
5630 ;; gemspec file, nor does it come with the tests. This is why
5631 ;; we fetch the tarball from Github.
5632 (uri (git-reference
5633 (url "https://github.com/guard/guard")
5634 (commit (string-append "v" version))))
5635 (file-name (git-file-name name version))
5636 (sha256
5637 (base32
5638 "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs"))))
5639 (build-system ruby-build-system)
5640 (arguments
5641 `(#:tests? #f ; tests require cucumber
5642 #:phases
5643 (modify-phases %standard-phases
5644 (add-after 'unpack 'remove-git-ls-files
5645 (lambda* (#:key outputs #:allow-other-keys)
5646 (substitute* "guard.gemspec"
5647 (("git ls-files -z") "find . -type f -print0"))
5648 #t))
5649 (replace 'build
5650 (lambda _
5651 (invoke "gem" "build" "guard.gemspec"))))))
5652 (propagated-inputs
5653 `(("ruby-formatador" ,ruby-formatador)
5654 ("ruby-listen" ,ruby-listen)
5655 ("ruby-lumberjack" ,ruby-lumberjack)
5656 ("ruby-nenv" ,ruby-nenv)
5657 ("ruby-notiffany" ,ruby-notiffany)
5658 ("ruby-pry" ,ruby-pry)
5659 ("ruby-shellany" ,ruby-shellany)
5660 ("ruby-thor" ,ruby-thor)))
5661 (native-inputs
5662 `(("bundler" ,bundler)
5663 ("ruby-rspec" ,ruby-rspec)))
5664 (synopsis "Tool to handle events on file system modifications")
5665 (description
5666 "Guard is a command line tool to easily handle events on file system
5667modifications. Guard automates various tasks by running custom rules whenever
5668file or directories are modified.")
5669 (home-page "https://guardgem.org/")
5670 (license license:expat)))
5671
5672(define-public ruby-spinach
5673 (package
5674 (name "ruby-spinach")
5675 (version "0.11.0")
5676 (home-page "https://github.com/codegram/spinach")
5677 (source (origin
5678 (method url-fetch)
5679 (uri (rubygems-uri "spinach" version))
5680 (sha256
5681 (base32
5682 "1mv053mqz9c8ngqa6wp1ymk2fax6j0yqzax6918akrdr7c3fx3c6"))))
5683 (build-system ruby-build-system)
5684 (arguments
5685 ;; FIXME: Disable tests altogether because they depend on 'capybara'
5686 ;; which in turn depends on many other unpackaged gems. Enable once
5687 ;; capybara is available.
5688 '(#:tests? #f))
5689 (propagated-inputs
5690 `(("ruby-colorize" ,ruby-colorize)
5691 ("ruby-gherkin-ruby" ,ruby-gherkin-ruby)
5692 ("ruby-json" ,ruby-json)))
5693 (synopsis "Gherkin-based BDD framework")
5694 (description
5695 "Spinach is a high-level @acronym{BDD, Behavior-driven development}
5696framework that leverages the expressive @code{Gherkin} language to help you
5697define executable specifications of your code.")
5698 (license license:expat)))
5699
5700(define-public ruby-tilt
5701 (package
5702 (name "ruby-tilt")
5703 (version "2.0.10")
5704 (source
5705 (origin
5706 (method git-fetch) ;the distributed gem lacks tests
5707 (uri (git-reference
5708 (url "https://github.com/rtomayko/tilt")
5709 (commit (string-append "v" version))))
5710 (file-name (git-file-name name version))
5711 (sha256
5712 (base32
5713 "0adb7fg7925n2rd9a8kkqz3mgylw2skp9hkh9qc1rnph72mqsm6r"))))
5714 (build-system ruby-build-system)
5715 (arguments
5716 '(#:phases
5717 (modify-phases %standard-phases
5718 (add-after 'unpack 'remove-some-dependencies
5719 (lambda _
5720 (substitute* "Gemfile"
5721 ;; TODO ronn is used for generating the manual
5722 (("gem 'ronn'.*") "\n")
5723 ;; ruby-haml has a runtime dependency on ruby-tilt, so don't
5724 ;; pass it in as a native-input
5725 (("gem 'haml'.*") "\n")
5726 ;; TODO Not all of these gems are packaged for Guix yet:
5727 ;; less, coffee-script, livescript, babel-transpiler,
5728 ;; typescript-node
5729 (("if can_execjs") "if false")
5730 ;; Disable the secondary group to reduce the number of
5731 ;; dependencies. None of the normal approaches work, so patch
5732 ;; the Gemfile instead.
5733 (("group :secondary") "[].each"))
5734 #t)))))
5735 (propagated-inputs
5736 `(("ruby-pandoc-ruby" ,ruby-pandoc-ruby)
5737 ("ruby-sassc" ,ruby-sassc)))
5738 (native-inputs
5739 `(("bundler" ,bundler)
5740 ("ruby-yard" ,ruby-yard)
5741 ("ruby-builder" ,ruby-builder)
5742 ("ruby-erubis" ,ruby-erubis)
5743 ("ruby-markaby" ,ruby-markaby)))
5744 (synopsis "Generic interface to multiple Ruby template engines")
5745 (description
5746 "Tilt is a thin interface over a number of different Ruby template
5747engines in an attempt to make their usage as generic as possible.")
5748 (home-page "https://github.com/rtomayko/tilt/")
5749 (license license:expat)))
5750
5751(define-public ruby-thread-safe
5752 (package
5753 (name "ruby-thread-safe")
5754 (version "0.3.6")
5755 (source
5756 (origin
5757 (method url-fetch)
5758 (uri (rubygems-uri "thread_safe" version))
5759 (sha256
5760 (base32
5761 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
5762 (build-system ruby-build-system)
5763 (arguments
5764 '(#:tests? #f)) ; needs simplecov, among others
5765 (synopsis "Thread-safe utilities for Ruby")
5766 (description "The thread_safe library provides thread-safe collections and
5767utilities for Ruby.")
5768 (home-page "https://github.com/ruby-concurrency/thread_safe")
5769 (license license:asl2.0)))
5770
5771(define-public ruby-tzinfo
5772 (package
5773 (name "ruby-tzinfo")
5774 (version "2.0.4")
5775 (source
5776 (origin
5777 (method git-fetch)
5778 (uri (git-reference
5779 ;; Pull from git because the gem has no tests.
5780 (url "https://github.com/tzinfo/tzinfo")
5781 (commit (string-append "v" version))))
5782 (file-name (git-file-name name version))
5783 (sha256
5784 (base32
5785 "0jaq1givdaz5jxz47xngyj3j315n872rk97mnpm5njwm48wy45yh"))))
5786 (build-system ruby-build-system)
5787 (arguments
5788 '(#:phases
5789 (modify-phases %standard-phases
5790 (add-after 'unpack 'skip-safe-tests
5791 (lambda _
5792 (substitute* "test/test_utils.rb"
5793 (("def safe_test\\(options = \\{\\}\\)")
5794 "def safe_test(options = {})
5795 skip('The Guix build environment has an unsafe load path')"))
5796 #t))
5797 (add-before 'check 'pre-check
5798 (lambda _
5799 (setenv "HOME" (getcwd))
5800 (substitute* "Gemfile"
5801 (("simplecov.*") "simplecov'\n"))
5802 #t))
5803 (replace 'check
5804 (lambda* (#:key tests? test-target #:allow-other-keys)
5805 (when tests?
5806 (invoke "bundler" "exec" "rake" test-target))
5807 #t)))))
5808 (propagated-inputs
5809 `(("ruby-concurrent-ruby" ,ruby-concurrent)))
5810 (native-inputs
5811 `(("ruby-simplecov" ,ruby-simplecov)))
5812 (synopsis "Time zone library for Ruby")
5813 (description "TZInfo is a Ruby library that provides daylight savings
5814aware transformations between times in different time zones.")
5815 (home-page "https://tzinfo.github.io")
5816 (license license:expat)))
5817
5818(define-public ruby-tzinfo-data
5819 (package
5820 (name "ruby-tzinfo-data")
5821 (version "1.2021.1")
5822 (source
5823 (origin
5824 (method git-fetch)
5825 ;; Download from GitHub because the rubygems version does not contain
5826 ;; Rakefile or tests.
5827 (uri (git-reference
5828 (url "https://github.com/tzinfo/tzinfo-data")
5829 (commit (string-append "v" version))))
5830 (file-name (git-file-name name version))
5831 (sha256
5832 (base32
5833 "0yzyr3rf8qaw6kxfc0gwpxsb7gl3rhfpx9g1c2z15vapyminhi60"))))
5834 (build-system ruby-build-system)
5835 (arguments
5836 `(#:phases
5837 (modify-phases %standard-phases
5838 (add-after 'unpack 'patch-source
5839 (lambda* (#:key inputs #:allow-other-keys)
5840 (substitute* "Rakefile"
5841 (("https://data.iana.org/time-zones/releases")
5842 (assoc-ref inputs "tzdata")))
5843 #t))
5844 (add-before 'check 'pre-check
5845 (lambda _
5846 (setenv "HOME" (getcwd))
5847 (substitute* "Rakefile"
5848 ;; Don't need gpg, and it may break after a time.
5849 (("gpg ") "echo ")
5850 ((" sh\\(\\\"make -C" text)
5851 (string-append " sh(\"sed -i 's@/bin/sh@sh@' #{tzdb_combined_path}/Makefile \")\n"
5852 " sh(\"sed -i 's@cc=@cc?=@' #{tzdb_combined_path}/Makefile \")\n" text)))
5853 (setenv "cc" ,(cc-for-target))
5854 #t)))))
5855 (propagated-inputs
5856 `(("ruby-tzinfo" ,ruby-tzinfo)))
5857 (native-inputs
5858 `(("tzdata"
5859 ,(file-union "tzdata-for-ruby-tzdata-info"
5860 `(("tzdata2021a.tar.gz"
5861 ,(origin
5862 (method url-fetch)
5863 (uri "https://data.iana.org/time-zones/releases/tzdata2021a.tar.gz")
5864 (sha256
5865 (base32
5866 "022fn6gkmp7pamlgab04x0dm5hnyn2m2fcnyr3pvm36612xd5rrr"))))
5867 ("tzdata2021a.tar.gz.asc"
5868 ,(origin
5869 (method url-fetch)
5870 (uri "https://data.iana.org/time-zones/releases/tzdata2021a.tar.gz.asc")
5871 (sha256
5872 (base32
5873 "0n7h2w8ji1lrxpk0d44wyfshlhr7c9jmwj6lqbxlyvqnfi3gbicx"))))
5874 ("tzcode2021a.tar.gz"
5875 ,(origin
5876 (method url-fetch)
5877 (uri "https://data.iana.org/time-zones/releases/tzcode2021a.tar.gz")
5878 (sha256
5879 (base32
5880 "1l02b0jiwp3fl0xd6227i69d26rmx3yrnq0ssq9vvdmm4jhvyipb"))))
5881 ("tzcode2021a.tar.gz.asc"
5882 ,(origin
5883 (method url-fetch)
5884 (uri "https://data.iana.org/time-zones/releases/tzcode2021a.tar.gz.asc")
5885 (sha256
5886 (base32
5887 "1qhlj4lr810s47s1lwcvv1sgvg2sflf98w4sbg1lc8wzv5qxxv7g")))))))))
5888 (synopsis "Data from the IANA Time Zone database")
5889 (description
5890 "This library provides @code{TZInfo::Data}, which contains data from the
5891IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
5892 (home-page "https://tzinfo.github.io")
5893 (license license:expat)))
5894
5895(define-public ruby-rb-inotify
5896 (package
5897 (name "ruby-rb-inotify")
5898 (version "0.9.10")
5899 (source
5900 (origin
5901 (method url-fetch)
5902 (uri (rubygems-uri "rb-inotify" version))
5903 (sha256
5904 (base32
5905 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
5906 (build-system ruby-build-system)
5907 (arguments
5908 '(#:tests? #f ; there are no tests
5909 #:phases
5910 (modify-phases %standard-phases
5911 ;; Building the gemspec with rake is not working here since it is
5912 ;; generated with Jeweler. It is also unnecessary because the
5913 ;; existing gemspec does not use any development tools to generate a
5914 ;; list of files.
5915 (replace 'build
5916 (lambda _
5917 (invoke "gem" "build" "rb-inotify.gemspec"))))))
5918 (propagated-inputs
5919 `(("ruby-ffi" ,ruby-ffi)))
5920 (native-inputs
5921 `(("ruby-yard" ,ruby-yard)))
5922 (synopsis "Ruby wrapper for Linux's inotify")
5923 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
5924kernel subsystem for monitoring changes to files and directories.")
5925 (home-page "https://github.com/nex3/rb-inotify")
5926 (license license:expat)))
5927
5928(define-public ruby-pry-editline
5929 (package
5930 (name "ruby-pry-editline")
5931 (version "1.1.2")
5932 (source (origin
5933 (method url-fetch)
5934 (uri (rubygems-uri "pry-editline" version))
5935 (sha256
5936 (base32
5937 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
5938 (build-system ruby-build-system)
5939 (arguments `(#:tests? #f)) ; no tests included
5940 (native-inputs
5941 `(("bundler" ,bundler)))
5942 (synopsis "Open the current REPL line in an editor")
5943 (description
5944 "This gem provides a plugin for the Ruby REPL to enable opening the
5945current line in an external editor.")
5946 (home-page "https://github.com/tpope/pry-editline")
5947 (license license:expat)))
5948
5949(define-public ruby-sdoc
5950 (package
5951 (name "ruby-sdoc")
5952 (version "1.1.0")
5953 (source (origin
5954 (method url-fetch)
5955 (uri (rubygems-uri "sdoc" version))
5956 (sha256
5957 (base32
5958 "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd"))))
5959 (build-system ruby-build-system)
5960 (arguments
5961 `(#:phases
5962 (modify-phases %standard-phases
5963 (add-before 'check 'set-rubylib-and-patch-gemfile
5964 (lambda _
5965 (setenv "RUBYLIB" "lib")
5966 (substitute* "sdoc.gemspec"
5967 (("s.add_runtime_dependency.*") "\n")
5968 (("s.add_dependency.*") "\n"))
5969 (substitute* "Gemfile"
5970 (("gem \"rake\".*")
5971 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
5972 #t)))))
5973 (propagated-inputs
5974 `(("ruby-json" ,ruby-json)))
5975 (native-inputs
5976 `(("bundler" ,bundler)
5977 ("ruby-minitest" ,ruby-minitest)
5978 ("ruby-hoe" ,ruby-hoe)))
5979 (synopsis "Generate searchable RDoc documentation")
5980 (description
5981 "SDoc is an RDoc documentation generator to build searchable HTML
5982documentation for Ruby code.")
5983 (home-page "https://github.com/voloko/sdoc")
5984 (license license:expat)))
5985
5986(define-public ruby-tins
5987 (package
5988 (name "ruby-tins")
5989 (version "1.15.0")
5990 (source (origin
5991 (method url-fetch)
5992 (uri (rubygems-uri "tins" version))
5993 (sha256
5994 (base32
5995 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
5996 (build-system ruby-build-system)
5997 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
5998 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
5999 ;; the gemspec.
6000 (arguments
6001 `(#:tests? #f ; there are no tests
6002 #:phases
6003 (modify-phases %standard-phases
6004 (replace 'build
6005 (lambda _
6006 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
6007 ;; causes an error.
6008 (substitute* "tins.gemspec"
6009 (("\"lib/spruz\", ") ""))
6010 (invoke "gem" "build" "tins.gemspec"))))))
6011 (synopsis "Assorted tools for Ruby")
6012 (description "Tins is a Ruby library providing assorted tools.")
6013 (home-page "https://github.com/flori/tins")
6014 (license license:expat)))
6015
6016(define-public ruby-gem-hadar
6017 (package
6018 (name "ruby-gem-hadar")
6019 (version "1.11.0")
6020 (source (origin
6021 (method url-fetch)
6022 (uri (rubygems-uri "gem_hadar" version))
6023 (sha256
6024 (base32
6025 "160abb3l4n3gkhd86f22n981bhqxkbf5ym6fhsk796pix6696pd5"))))
6026 (build-system ruby-build-system)
6027 ;; This gem needs itself at development time. We disable rebuilding of the
6028 ;; gemspec to avoid this loop.
6029 (arguments
6030 `(#:tests? #f ; there are no tests
6031 #:phases
6032 (modify-phases %standard-phases
6033 (replace 'build
6034 (lambda _
6035 (invoke "gem" "build" "gem_hadar.gemspec"))))))
6036 (propagated-inputs
6037 `(("git" ,git)
6038 ("ruby-tins" ,ruby-tins)
6039 ("ruby-yard" ,ruby-yard)))
6040 (synopsis "Library for the development of Ruby gems")
6041 (description
6042 "This library contains some useful functionality to support the
6043development of Ruby gems.")
6044 (home-page "https://github.com/flori/gem_hadar")
6045 (license license:expat)))
6046
6047(define-public ruby-minitest-tu-shim
6048 (package
6049 (name "ruby-minitest-tu-shim")
6050 (version "1.3.3")
6051 (source (origin
6052 (method url-fetch)
6053 (uri (rubygems-uri "minitest_tu_shim" version))
6054 (sha256
6055 (base32
6056 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
6057 (build-system ruby-build-system)
6058 (arguments
6059 `(#:phases
6060 (modify-phases %standard-phases
6061 (add-after 'unpack 'fix-test-include-path
6062 (lambda* (#:key inputs #:allow-other-keys)
6063 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
6064 (substitute* "Rakefile"
6065 (("Hoe\\.add_include_dirs .*")
6066 (string-append "Hoe.add_include_dirs \""
6067 minitest "/lib/ruby/vendor_ruby"
6068 "/gems/minitest-"
6069 ,(package-version ruby-minitest-4)
6070 "/lib" "\""))))
6071 #t))
6072 (add-before 'check 'fix-test-assumptions
6073 (lambda _
6074 ;; The test output includes the file name, so a couple of tests
6075 ;; fail. Changing the regular expressions slightly fixes this
6076 ;; problem.
6077 (substitute* "test/test_mini_test.rb"
6078 (("output.sub!\\(.*, 'FILE:LINE'\\)")
6079 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
6080 (("gsub\\(/.*, 'FILE:LINE'\\)")
6081 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
6082 #t)))))
6083 (propagated-inputs
6084 `(("ruby-minitest-4" ,ruby-minitest-4)))
6085 (native-inputs
6086 `(("ruby-hoe" ,ruby-hoe)))
6087 (synopsis "Adapter library between minitest and test/unit")
6088 (description
6089 "This library bridges the gap between the small and fast minitest and
6090Ruby's large and slower test/unit.")
6091 (home-page "https://rubygems.org/gems/minitest_tu_shim")
6092 (license license:expat)))
6093
6094(define-public ruby-term-ansicolor
6095 (package
6096 (name "ruby-term-ansicolor")
6097 (version "1.6.0")
6098 (source (origin
6099 (method url-fetch)
6100 (uri (rubygems-uri "term-ansicolor" version))
6101 (sha256
6102 (base32
6103 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
6104 (build-system ruby-build-system)
6105 ;; Rebuilding the gemspec seems to require git, even though this is not a
6106 ;; git repository, so we just build the gem from the existing gemspec.
6107 (arguments
6108 `(#:phases
6109 (modify-phases %standard-phases
6110 (add-after 'unpack 'fix-test
6111 (lambda -
6112 (substitute* "tests/hsl_triple_test.rb"
6113 (("0\\\\\\.0%")
6114 "0\\.?0?%"))))
6115 (replace 'build
6116 (lambda _
6117 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
6118 (propagated-inputs
6119 `(("ruby-tins" ,ruby-tins)))
6120 (native-inputs
6121 `(("ruby-gem-hadar" ,ruby-gem-hadar)
6122 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
6123 (synopsis "Ruby library to control the attributes of terminal output")
6124 (description
6125 "This Ruby library uses ANSI escape sequences to control the attributes
6126of terminal output.")
6127 (home-page "https://flori.github.io/term-ansicolor/")
6128 ;; There is no mention of the "or later" clause.
6129 (license license:gpl2)))
6130
6131(define-public ruby-terraform
6132 (package
6133 (name "ruby-terraform")
6134 (version "0.22.0")
6135 (source
6136 (origin
6137 (method url-fetch)
6138 (uri (rubygems-uri "ruby-terraform" version))
6139 (sha256
6140 (base32
6141 "13zjkp71cd19j2ds2h9rqwcfr1zdg5nsh63p89l6qcsc9z39z324"))))
6142 (build-system ruby-build-system)
6143 (arguments
6144 '(#:tests? #f)) ; No included tests
6145 (propagated-inputs
6146 `(("ruby-lino" ,ruby-lino)))
6147 (synopsis "Ruby wrapper around the Terraform command line interface")
6148 (description
6149 "This package provides a Ruby wrapper around the Terraform command line
6150interface so that Terraform can be more easily invoked from Ruby code.")
6151 (home-page "https://github.com/infrablocks/ruby_terraform")
6152 (license license:expat)))
6153
6154(define-public ruby-pstree
6155 (package
6156 (name "ruby-pstree")
6157 (version "0.3.0")
6158 (source (origin
6159 (method url-fetch)
6160 (uri (rubygems-uri "pstree" version))
6161 (sha256
6162 (base32
6163 "0ld3ng37y92kv9vqnachw1l3n07hsc8hrnjs9d840liw0mysf1vp"))))
6164 (build-system ruby-build-system)
6165 (native-inputs
6166 `(("ruby-gem-hadar" ,ruby-gem-hadar)
6167 ("bundler" ,bundler)))
6168 (synopsis "Create a process tree data structure")
6169 (description
6170 "This library uses the output of the @code{ps} command to create a
6171process tree data structure for the current host.")
6172 (home-page "https://github.com/flori/pstree")
6173 ;; There is no mention of the "or later" clause.
6174 (license license:gpl2)))
6175
6176(define-public ruby-utils
6177 (package
6178 (name "ruby-utils")
6179 (version "0.9.0")
6180 (source (origin
6181 (method url-fetch)
6182 (uri (rubygems-uri "utils" version))
6183 (sha256
6184 (base32
6185 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
6186 (build-system ruby-build-system)
6187 (propagated-inputs
6188 `(("ruby-tins" ,ruby-tins)
6189 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
6190 ("ruby-pstree" ,ruby-pstree)
6191 ("ruby-pry-editline" ,ruby-pry-editline)))
6192 (native-inputs
6193 `(("ruby-gem-hadar" ,ruby-gem-hadar)
6194 ("bundler" ,bundler)))
6195 (synopsis "Command line tools for working with Ruby")
6196 (description
6197 "This package provides assorted command line tools that may be useful
6198when working with Ruby code.")
6199 (home-page "https://github.com/flori/utils")
6200 ;; There is no mention of the "or later" clause.
6201 (license license:gpl2)))
6202
6203(define-public ruby-jaro-winkler
6204 (package
6205 (name "ruby-jaro-winkler")
6206 (version "1.5.4")
6207 (source
6208 (origin
6209 (method url-fetch)
6210 (uri (rubygems-uri "jaro_winkler" version))
6211 (sha256
6212 (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh"))))
6213 (build-system ruby-build-system)
6214 (arguments
6215 '(#:tests? #f)) ; no included tests
6216 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
6217 (description
6218 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
6219algorithm. It is written as a C extension and will fallback to a pure Ruby
6220implementation on platforms where this is unsupported.")
6221 (home-page "https://github.com/tonytonyjan/jaro_winkler")
6222 (license license:expat)))
6223
6224(define-public ruby-json
6225 (package
6226 (name "ruby-json")
6227 (version "2.1.0")
6228 (source
6229 (origin
6230 (method url-fetch)
6231 (uri (rubygems-uri "json" version))
6232 (sha256
6233 (base32
6234 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
6235 (build-system ruby-build-system)
6236 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
6237 (synopsis "JSON library for Ruby")
6238 (description "This Ruby library provides a JSON implementation written as
6239a native C extension.")
6240 (home-page "http://json-jruby.rubyforge.org/")
6241 (license (list license:ruby license:gpl2)))) ; GPL2 only
6242
6243(define-public ruby-json-pure
6244 (package
6245 (name "ruby-json-pure")
6246 (version "2.2.0")
6247 (source (origin
6248 (method url-fetch)
6249 (uri (rubygems-uri "json_pure" version))
6250 (sha256
6251 (base32
6252 "0m0j1mfwv0mvw72kzqisb26xjl236ivqypw1741dkis7s63b8439"))))
6253 (build-system ruby-build-system)
6254 (arguments
6255 `(#:phases
6256 (modify-phases %standard-phases
6257 (add-after 'unpack 'fix-rakefile
6258 (lambda _
6259 (substitute* "Rakefile"
6260 ;; Since this is not a git repository, do not call 'git'.
6261 (("`git ls-files`") "`find . -type f |sort`")
6262 ;; Loosen dependency constraint.
6263 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
6264 #t))
6265 (add-after 'replace-git-ls-files 'regenerate-gemspec
6266 (lambda _
6267 ;; Regenerate gemspec so loosened dependency constraints are
6268 ;; propagated.
6269 (invoke "rake" "gemspec")))
6270 (add-after 'regenerate-gemspec 'fix-json-java.gemspec
6271 (lambda _
6272 ;; This gemspec doesn't look to be generated by the above
6273 ;; command, so patch it separately.
6274 (substitute* "json-java.gemspec"
6275 (("%q<test-unit>\\.freeze, \\[\"~> 2\\.0\"\\]")
6276 "%q<test-unit>.freeze, [\">= 2.0\"]"))
6277 #t)))))
6278 (native-inputs
6279 `(("bundler" ,bundler)
6280 ("ragel" ,ragel)
6281 ("ruby-simplecov" ,ruby-simplecov)
6282 ("ruby-test-unit" ,ruby-test-unit)))
6283 (synopsis "JSON implementation in pure Ruby")
6284 (description
6285 "This package provides a JSON implementation written in pure Ruby.")
6286 (home-page "https://flori.github.com/json/")
6287 (license license:ruby)))
6288
6289(define-public ruby-jwt
6290 (package
6291 (name "ruby-jwt")
6292 (version "2.1.0")
6293 (source
6294 (origin
6295 (method url-fetch)
6296 (uri (rubygems-uri "jwt" version))
6297 (sha256
6298 (base32
6299 "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky"))))
6300 (build-system ruby-build-system)
6301 (arguments
6302 '(#:test-target "test"
6303 #:phases
6304 (modify-phases %standard-phases
6305 (add-after 'unpack 'remove-unnecessary-dependencies
6306 (lambda _
6307 (substitute* "spec/spec_helper.rb"
6308 (("require 'simplecov.*") "\n")
6309 ;; Use [].each to disable running the SimpleCov configuration
6310 ;; block
6311 (("SimpleCov\\.configure") "[].each")
6312 (("require 'codeclimate-test-reporter'") "")
6313 (("require 'codacy-coverage'") "")
6314 (("Codacy::Reporter\\.start") ""))
6315 #t)))))
6316 (native-inputs
6317 `(("bundler" ,bundler)
6318 ("ruby-rspec" ,ruby-rspec)
6319 ("ruby-rbnacl" ,ruby-rbnacl)))
6320 (synopsis "Ruby implementation of the JSON Web Token standard")
6321 (description
6322 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
6323@acronym{JWT, JSON Web Token} standard.")
6324 (home-page "https://github.com/jwt/ruby-jwt")
6325 (license license:expat)))
6326
6327;; Even though this package only provides bindings for a Mac OSX API it is
6328;; required by "ruby-listen" at runtime.
6329(define-public ruby-rb-fsevent
6330 (package
6331 (name "ruby-rb-fsevent")
6332 (version "0.10.3")
6333 (source (origin
6334 (method url-fetch)
6335 (uri (rubygems-uri "rb-fsevent" version))
6336 (sha256
6337 (base32
6338 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
6339 (build-system ruby-build-system)
6340 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
6341 ;; "listen", which needs "rb-fsevent" at runtime.
6342 (arguments `(#:tests? #f))
6343 (synopsis "FSEvents API with signals catching")
6344 (description
6345 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
6346 (home-page "https://rubygems.org/gems/rb-fsevent")
6347 (license license:expat)))
6348
6349(define-public ruby-listen
6350 (package
6351 (name "ruby-listen")
6352 (version "3.2.0")
6353 (source
6354 (origin
6355 ;; The gem does not include a Rakefile, so fetch from the Git
6356 ;; repository.
6357 (method git-fetch)
6358 (uri (git-reference
6359 (url "https://github.com/guard/listen")
6360 (commit (string-append "v" version))))
6361 (file-name (git-file-name name version))
6362 (sha256
6363 (base32
6364 "1hkp1g6hk5clsmbd001gkc12ma6s459x820piajyasv61m87if24"))))
6365 (build-system ruby-build-system)
6366 (arguments
6367 `(#:test-target "spec"
6368 #:phases
6369 (modify-phases %standard-phases
6370 (add-after 'unpack 'fix-files-in-gemspec
6371 (lambda _
6372 (substitute* "listen.gemspec"
6373 (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
6374 #t))
6375 (add-before 'check 'remove-unnecessary-dependencies'
6376 (lambda _
6377 (substitute* "Rakefile"
6378 ;; Rubocop is for code linting, and is unnecessary for running
6379 ;; the tests.
6380 ((".*rubocop.*") ""))
6381 #t)))))
6382 (native-inputs
6383 `(("bundler" ,bundler)
6384 ("ruby-rspec" ,ruby-rspec)))
6385 (inputs
6386 `(;; ruby-thor is used for the command line interface, and is referenced
6387 ;; in the wrapper, and therefore just needs to be an input.
6388 ("ruby-thor" ,ruby-thor)))
6389 (propagated-inputs
6390 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
6391 ("ruby-rb-inotify" ,ruby-rb-inotify)
6392 ("ruby-dep" ,ruby-dep)))
6393 (synopsis "Listen to file modifications")
6394 (description "The Listen gem listens to file modifications and notifies
6395you about the changes.")
6396 (home-page "https://github.com/guard/listen")
6397 (license license:expat)))
6398
6399(define-public ruby-loofah
6400 (package
6401 (name "ruby-loofah")
6402 (version "2.3.1")
6403 (source
6404 (origin
6405 (method url-fetch)
6406 (uri (rubygems-uri "loofah" version))
6407 (sha256
6408 (base32
6409 "0npqav026zd7r4qdidq9x5nxcp2dzg71bnp421xxx7sngbxf2xbd"))))
6410 (build-system ruby-build-system)
6411 (arguments
6412 '(#:phases
6413 (modify-phases %standard-phases
6414 (add-after 'unpack 'remove-unnecessary-dependencies
6415 (lambda _
6416 ;; concourse is a development tool which is unused, so remove it
6417 ;; so it's not required.
6418 (substitute* "Rakefile"
6419 (("require \"concourse\"") "")
6420 (("Concourse\\.new.*") "task :concourse do\n"))
6421 #t)))))
6422 (native-inputs
6423 `(("ruby-hoe" ,ruby-hoe)
6424 ("ruby-rr" ,ruby-rr)))
6425 (propagated-inputs
6426 `(("ruby-nokogiri" ,ruby-nokogiri)
6427 ("ruby-crass" ,ruby-crass)))
6428 (synopsis "Ruby library for manipulating and transforming HTML/XML")
6429 (description
6430 "Loofah is a general library for manipulating and transforming HTML/XML
6431documents and fragments. It's built on top of Nokogiri and libxml2.")
6432 (home-page "https://github.com/flavorjones/loofah")
6433 (license license:expat)))
6434
6435(define-public ruby-activesupport
6436 (package
6437 (name "ruby-activesupport")
6438 (version "6.1.3")
6439 (source
6440 (origin
6441 (method url-fetch)
6442 (uri (rubygems-uri "activesupport" version))
6443 (sha256
6444 (base32
6445 "00a4db64g8w5yyk6hzak2nqrmdfvyh5zc9cvnm9gglwbi87ss28h"))))
6446 (build-system ruby-build-system)
6447 (arguments
6448 `(#:phases
6449 (modify-phases %standard-phases
6450 (replace 'check
6451 (lambda _
6452 ;; There are no tests, instead attempt to load the library.
6453 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
6454 (propagated-inputs
6455 `(("ruby-concurrent" ,ruby-concurrent)
6456 ("ruby-i18n" ,ruby-i18n)
6457 ("ruby-minitest" ,ruby-minitest)
6458 ("ruby-tzinfo" ,ruby-tzinfo)
6459 ("ruby-tzinfo-data" ,ruby-tzinfo-data)
6460 ("ruby-zeitwerk" ,ruby-zeitwerk)))
6461 (synopsis "Ruby on Rails utility library")
6462 (description "ActiveSupport is a toolkit of support libraries and Ruby
6463core extensions extracted from the Rails framework. It includes support for
6464multibyte strings, internationalization, time zones, and testing.")
6465 (home-page "https://www.rubyonrails.org")
6466 (license license:expat)))
6467
6468(define-public ruby-crass
6469 (package
6470 (name "ruby-crass")
6471 (version "1.0.6")
6472 (home-page "https://github.com/rgrove/crass")
6473 (source (origin
6474 ;; The gem does not contain tests, so pull from git.
6475 (method git-fetch)
6476 (uri (git-reference
6477 (url home-page)
6478 (commit (string-append "v" version))))
6479 (file-name (git-file-name name version))
6480 (sha256
6481 (base32
6482 "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40"))))
6483 (build-system ruby-build-system)
6484 (synopsis "Pure Ruby CSS parser")
6485 (description
6486 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
6487 (license license:expat)))
6488
6489(define-public ruby-nokogumbo
6490 (package
6491 (name "ruby-nokogumbo")
6492 (version "2.0.2")
6493 (source (origin
6494 ;; We use the git reference, because there's no Rakefile in the
6495 ;; published gem and the tarball on Github is outdated.
6496 (method git-fetch)
6497 (uri (git-reference
6498 (url "https://github.com/rubys/nokogumbo")
6499 (commit (string-append "v" version))))
6500 (file-name (string-append name "-" version "-checkout"))
6501 (sha256
6502 (base32
6503 "1qg0iyw450lw6d0j1ghzg79a6l60nm1m4qmrzwzybi585861jxcx"))))
6504 (build-system ruby-build-system)
6505 (native-inputs
6506 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
6507 (inputs
6508 `(("gumbo-parser" ,gumbo-parser)))
6509 (propagated-inputs
6510 `(("ruby-nokogiri" ,ruby-nokogiri)))
6511 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
6512 (description
6513 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
6514access the result as a Nokogiri parsed document.")
6515 (home-page "https://github.com/rubys/nokogumbo/")
6516 (license license:asl2.0)))
6517
6518(define-public ruby-sanitize
6519 (package
6520 (name "ruby-sanitize")
6521 (version "5.1.0")
6522 (home-page "https://github.com/rgrove/sanitize")
6523 (source (origin
6524 (method git-fetch)
6525 ;; The gem does not include the Rakefile, so we download the
6526 ;; source from Github.
6527 (uri (git-reference
6528 (url home-page)
6529 (commit (string-append "v" version))))
6530 (file-name (git-file-name name version))
6531 (patches (search-patches "ruby-sanitize-system-libxml.patch"))
6532 (sha256
6533 (base32
6534 "0lj0q9yhjp0q0in5majkshnki07mw8m2vxgndx4m5na6232aszl0"))))
6535 (build-system ruby-build-system)
6536 (propagated-inputs
6537 `(("ruby-crass" ,ruby-crass)
6538 ("ruby-nokogiri" ,ruby-nokogiri)
6539 ("ruby-nokogumbo" ,ruby-nokogumbo)))
6540 (native-inputs
6541 `(("ruby-minitest" ,ruby-minitest)))
6542 (synopsis "Whitelist-based HTML and CSS sanitizer")
6543 (description
6544 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
6545acceptable elements, attributes, and CSS properties, Sanitize will remove all
6546unacceptable HTML and/or CSS from a string.")
6547 (license license:expat)))
6548
6549(define-public ruby-oj
6550 (package
6551 (name "ruby-oj")
6552 (version "3.10.1")
6553 (source
6554 (origin
6555 (method git-fetch)
6556 ;; Version on rubygems.org does not contain Rakefile, so download from
6557 ;; GitHub instead.
6558 (uri (git-reference
6559 (url "https://github.com/ohler55/oj")
6560 (commit (string-append "v" version))))
6561 (file-name (git-file-name name version))
6562 (sha256
6563 (base32
6564 "0i5xjx4sh816zx2c1a4d1q67k7vllg5jnnc4jy6zhbmwi1dvp5vw"))))
6565 (build-system ruby-build-system)
6566 (arguments
6567 '(#:test-target "test_all"
6568 #:phases
6569 (modify-phases %standard-phases
6570 (add-before 'check 'disable-bundler
6571 (lambda _
6572 (substitute* "Rakefile"
6573 (("Bundler\\.with_clean_env") "1.times")
6574 (("bundle exec ") "")))))))
6575 (native-inputs
6576 `(("bundler" ,bundler)
6577 ("ruby-rspec" ,ruby-rspec)
6578 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6579 (synopsis "JSON parser for Ruby optimized for speed")
6580 (description
6581 "Oj is a JSON parser and generator for Ruby, where the encoding and
6582decoding of JSON is implemented as a C extension to Ruby.")
6583 (home-page "http://www.ohler.com/oj/")
6584 (license (list license:expat ; Ruby code
6585 license:bsd-3)))) ; extension code
6586
6587(define-public ruby-ox
6588 (package
6589 (name "ruby-ox")
6590 (version "2.6.0")
6591 (source
6592 (origin
6593 (method url-fetch)
6594 (uri (rubygems-uri "ox" version))
6595 (sha256
6596 (base32
6597 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
6598 (build-system ruby-build-system)
6599 (arguments
6600 '(#:tests? #f)) ; no tests
6601 (synopsis "Optimized XML library for Ruby")
6602 (description
6603 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
6604written as a native C extension. It was designed to be an alternative to
6605Nokogiri and other Ruby XML parsers for generic XML parsing and as an
6606alternative to Marshal for Object serialization. ")
6607 (home-page "http://www.ohler.com/ox")
6608 (license license:expat)))
6609
6610(define-public ruby-redcloth
6611 (package
6612 (name "ruby-redcloth")
6613 (version "4.3.2")
6614 (source (origin
6615 (method url-fetch)
6616 (uri (rubygems-uri "RedCloth" version))
6617 (sha256
6618 (base32
6619 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
6620 (build-system ruby-build-system)
6621 (arguments
6622 `(#:tests? #f ; no tests
6623 #:phases
6624 (modify-phases %standard-phases
6625 ;; Redcloth has complicated rake tasks to build various versions for
6626 ;; multiple targets using RVM. We don't want this so we just use the
6627 ;; existing gemspec.
6628 (replace 'build
6629 (lambda _
6630 (invoke "gem" "build" "redcloth.gemspec"))))))
6631 (native-inputs
6632 `(("bundler" ,bundler)
6633 ("ruby-diff-lcs" ,ruby-diff-lcs)
6634 ("ruby-rspec-2" ,ruby-rspec-2)))
6635 (synopsis "Textile markup language parser for Ruby")
6636 (description
6637 "RedCloth is a Ruby parser for the Textile markup language.")
6638 (home-page "http://redcloth.org")
6639 (license license:expat)))
6640
6641(define-public ruby-pg
6642 (package
6643 (name "ruby-pg")
6644 (version "1.2.3")
6645 (source
6646 (origin
6647 (method url-fetch)
6648 (uri (rubygems-uri "pg" version))
6649 (sha256
6650 (base32
6651 "13mfrysrdrh8cka1d96zm0lnfs59i5x2g6ps49r2kz5p3q81xrzj"))))
6652 (build-system ruby-build-system)
6653 (arguments
6654 '(#:test-target "spec"))
6655 (native-inputs
6656 `(("ruby-rake-compiler" ,ruby-rake-compiler)
6657 ("ruby-hoe" ,ruby-hoe)
6658 ("ruby-rspec" ,ruby-rspec)))
6659 (inputs
6660 `(("postgresql" ,postgresql)))
6661 (synopsis "Ruby interface to PostgreSQL")
6662 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
6663with PostgreSQL 9.0 and later.")
6664 (home-page "https://bitbucket.org/ged/ruby-pg")
6665 (license license:ruby)))
6666
6667(define-public ruby-byebug
6668 (package
6669 (name "ruby-byebug")
6670 (version "9.0.6")
6671 (source
6672 (origin
6673 (method url-fetch)
6674 (uri (rubygems-uri "byebug" version))
6675 (sha256
6676 (base32
6677 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
6678 (build-system ruby-build-system)
6679 (arguments
6680 '(#:tests? #f)) ; no tests
6681 (synopsis "Debugger for Ruby 2")
6682 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
6683TracePoint C API for execution control and the Debug Inspector C API for call
6684stack navigation. The core component provides support that front-ends can
6685build on. It provides breakpoint handling and bindings for stack frames among
6686other things and it comes with a command line interface.")
6687 (home-page "https://github.com/deivid-rodriguez/byebug")
6688 (license license:bsd-2)))
6689
6690;;; TODO: Make it the default byebug in core-updates.
6691(define-public ruby-byebug-11
6692 (package
6693 (inherit ruby-byebug)
6694 (name "ruby-byebug")
6695 (version "11.1.3")
6696 (source
6697 (origin
6698 (method git-fetch)
6699 (uri (git-reference
6700 (url "https://github.com/deivid-rodriguez/byebug")
6701 (commit (string-append "v" version))))
6702 (file-name (git-file-name name version))
6703 (sha256
6704 (base32
6705 "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij"))
6706 (modules '((guix build utils)))
6707 (snippet
6708 '(begin
6709 ;; Remove wrappers that try to setup a bundle environment.
6710 (with-directory-excursion "bin"
6711 (for-each delete-file '("bundle" "rake" "rubocop"))
6712 ;; ruby-minitest doesn't come with a launcher, so fix the one
6713 ;; provided.
6714 (substitute* "minitest"
6715 (("load File\\.expand_path\\(\"bundle\".*") "")
6716 (("require \"bundler/setup\".*") "")))
6717 #t))))
6718 (arguments
6719 `(#:tests? #t
6720 #:phases
6721 (modify-phases %standard-phases
6722 (add-after 'unpack 'skip-tmp-path-sensitive-test
6723 (lambda _
6724 (substitute* "test/commands/where_test.rb"
6725 (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
6726 "unless true\n"))
6727 #t))
6728 (add-before 'build 'compile
6729 (lambda _
6730 (invoke "rake" "compile")))
6731 (add-before 'check 'set-home
6732 (lambda _
6733 (setenv "HOME" (getcwd))
6734 #t)))))
6735 (native-inputs
6736 `(("bundler" ,bundler)
6737 ("ruby-chandler" ,ruby-chandler)
6738 ("ruby-minitest" ,ruby-minitest)
6739 ("ruby-pry" ,ruby-pry)
6740 ("ruby-rake-compiler" ,ruby-rake-compiler)
6741 ("ruby-rubocop" ,ruby-rubocop)
6742 ("ruby-yard" ,ruby-yard)))))
6743
6744(define-public ruby-netrc
6745 (package
6746 (name "ruby-netrc")
6747 (version "0.11.0")
6748 (source (origin
6749 (method url-fetch)
6750 (uri (rubygems-uri "netrc" version))
6751 (sha256
6752 (base32
6753 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
6754 (build-system ruby-build-system)
6755 (arguments
6756 `(#:phases
6757 (modify-phases %standard-phases
6758 (replace 'check
6759 ;; There is no Rakefile and minitest can only run one file at once,
6760 ;; so we have to iterate over all test files.
6761 (lambda _
6762 (for-each (lambda (file)
6763 (invoke "ruby" "-Itest" file))
6764 (find-files "./test" "test_.*\\.rb"))
6765 #t)))))
6766 (native-inputs
6767 `(("ruby-minitest" ,ruby-minitest)))
6768 (synopsis "Library to read and update netrc files")
6769 (description
6770 "This library can read and update netrc files, preserving formatting
6771including comments and whitespace.")
6772 (home-page "https://github.com/geemus/netrc")
6773 (license license:expat)))
6774
6775(define-public ruby-unf-ext
6776 (package
6777 (name "ruby-unf-ext")
6778 (version "0.0.7.6")
6779 (source (origin
6780 (method url-fetch)
6781 (uri (rubygems-uri "unf_ext" version))
6782 (sha256
6783 (base32
6784 "1ll6w64ibh81qwvjx19h8nj7mngxgffg7aigjx11klvf5k2g4nxf"))))
6785 (build-system ruby-build-system)
6786 (arguments
6787 `(#:phases
6788 (modify-phases %standard-phases
6789 (add-after 'build 'build-ext
6790 (lambda _ (invoke "rake" "compile:unf_ext")))
6791 (add-before 'check 'lose-rake-compiler-dock-dependency
6792 (lambda _
6793 ;; rake-compiler-dock is listed in the gemspec, but only
6794 ;; required when cross-compiling.
6795 (substitute* "unf_ext.gemspec"
6796 ((".*rake-compiler-dock.*") ""))
6797 #t)))))
6798 (native-inputs
6799 `(("bundler" ,bundler)
6800 ("ruby-rake-compiler" ,ruby-rake-compiler)
6801 ("ruby-test-unit" ,ruby-test-unit)))
6802 (synopsis "Unicode normalization form support library")
6803 (description
6804 "This package provides unicode normalization form support for Ruby.")
6805 (home-page "https://github.com/knu/ruby-unf_ext")
6806 (license license:expat)))
6807
6808(define-public ruby-tdiff
6809 ;; Use a newer than released snapshot so that rspec-2 is not required.
6810 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
6811 (package
6812 (name "ruby-tdiff")
6813 (version (string-append "0.3.3-1." (string-take commit 8)))
6814 (source (origin
6815 (method git-fetch)
6816 (uri (git-reference
6817 (url "https://github.com/postmodern/tdiff")
6818 (commit commit)))
6819 (file-name (string-append name "-" version "-checkout"))
6820 (sha256
6821 (base32
6822 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
6823 (build-system ruby-build-system)
6824 (native-inputs
6825 `(("ruby-rspec" ,ruby-rspec)
6826 ("ruby-yard" ,ruby-yard)
6827 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
6828 (synopsis "Calculate the differences between two tree-like structures")
6829 (description
6830 "This library provides functions to calculate the differences between two
6831tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
6832 (home-page "https://github.com/postmodern/tdiff")
6833 (license license:expat))))
6834
6835(define-public ruby-nokogiri-diff
6836 ;; Use a newer than released snapshot so that rspec-2 is not required.
6837 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
6838 (package
6839 (name "ruby-nokogiri-diff")
6840 (version (string-append "0.2.0-1." (string-take commit 8)))
6841 (source (origin
6842 (method git-fetch)
6843 (uri (git-reference
6844 (url "https://github.com/postmodern/nokogiri-diff")
6845 (commit commit)))
6846 (file-name (string-append name "-" version "-checkout"))
6847 (sha256
6848 (base32
6849 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
6850 (build-system ruby-build-system)
6851 (propagated-inputs
6852 `(("ruby-tdiff" ,ruby-tdiff)
6853 ("ruby-nokogiri" ,ruby-nokogiri)))
6854 (native-inputs
6855 `(("ruby-rspec" ,ruby-rspec)
6856 ("ruby-yard" ,ruby-yard)
6857 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
6858 (synopsis "Calculate the differences between two XML/HTML documents")
6859 (description
6860 "@code{Nokogiri::Diff} adds the ability to calculate the
6861differences (added or removed nodes) between two XML/HTML documents.")
6862 (home-page "https://github.com/postmodern/nokogiri-diff")
6863 (license license:expat))))
6864
6865(define-public ruby-racc
6866 (package
6867 (name "ruby-racc")
6868 (version "1.4.14")
6869 (source
6870 (origin
6871 (method url-fetch)
6872 (uri (rubygems-uri "racc" version))
6873 (sha256
6874 (base32
6875 "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
6876 (build-system ruby-build-system)
6877 (native-inputs
6878 `(("ruby-hoe" ,ruby-hoe)
6879 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6880 (synopsis "LALR(1) parser generator for Ruby")
6881 (description
6882 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
6883generates Ruby program.")
6884 (home-page "https://i.loveruby.net/en/projects/racc/")
6885 (license (list
6886 ;; Generally licensed under the LGPL2.1, and some files also
6887 ;; available under the same license as Ruby.
6888 license:lgpl2.1
6889 license:ruby))))
6890
6891(define-public ruby-rack
6892 (package
6893 (name "ruby-rack")
6894 (version "2.2.3")
6895 (source
6896 (origin
6897 (method git-fetch)
6898 ;; Download from GitHub so that the snippet can be applied and tests run.
6899 (uri (git-reference
6900 (url "https://github.com/rack/rack")
6901 (commit version)))
6902 (file-name (git-file-name name version))
6903 (sha256
6904 (base32
6905 "1qrm5z5v586738bnkr9188dvz0s25nryw6sgvx18jjlkizayw1g4"))
6906 ;; Ignore test which fails inside the build environment but works
6907 ;; outside.
6908 (modules '((guix build utils)))
6909 (snippet
6910 '(begin (substitute* "test/spec_files.rb"
6911 (("res.body.must_equal expected_body") ""))
6912 #t))))
6913 (build-system ruby-build-system)
6914 (arguments
6915 '(#:phases
6916 (modify-phases %standard-phases
6917 (add-before 'check 'fix-tests
6918 (lambda _
6919 ;; A few of the tests use the length of a file on disk for
6920 ;; Content-Length and Content-Range headers. However, this file
6921 ;; has a shebang in it which an earlier phase patches, growing
6922 ;; the file size from 193 to 239 bytes when the store prefix is
6923 ;; "/gnu/store".
6924 (let ((size-diff (- (string-length (which "ruby"))
6925 (string-length "/usr/bin/env ruby"))))
6926 (substitute* '("test/spec_files.rb")
6927 (("208" bytes)
6928 (number->string (+ (string->number bytes) size-diff)))
6929 (("bytes(.)22-33" all delimiter)
6930 (string-append "bytes"
6931 delimiter
6932 (number->string (+ 22 size-diff))
6933 "-"
6934 (number->string (+ 33 size-diff))))))
6935 #t)))))
6936 (native-inputs
6937 `(("ruby-minitest" ,ruby-minitest)
6938 ("ruby-minitest-global-expectations" ,ruby-minitest-global-expectations)))
6939 (synopsis "Unified web application interface for Ruby")
6940 (description "Rack provides a minimal, modular and adaptable interface for
6941developing web applications in Ruby. By wrapping HTTP requests and responses,
6942it unifies the API for web servers, web frameworks, and software in between
6943into a single method call.")
6944 (home-page "https://rack.github.io/")
6945 (license license:expat)))
6946
6947(define-public ruby-rack-test
6948 (package
6949 (name "ruby-rack-test")
6950 (version "0.8.3")
6951 (source
6952 (origin
6953 (method url-fetch)
6954 (uri (rubygems-uri "rack-test" version))
6955 (sha256
6956 (base32
6957 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
6958 (build-system ruby-build-system)
6959 (arguments
6960 ;; Disable tests because of circular dependencies: requires sinatra,
6961 ;; which requires rack-protection, which requires rack-test. Instead
6962 ;; simply require the library.
6963 `(#:phases
6964 (modify-phases %standard-phases
6965 (replace 'check
6966 (lambda _
6967 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
6968 (propagated-inputs
6969 `(("ruby-rack" ,ruby-rack)))
6970 (synopsis "Testing API for Rack applications")
6971 (description
6972 "Rack::Test is a small, simple testing API for Rack applications. It can
6973be used on its own or as a reusable starting point for Web frameworks and
6974testing libraries to build on.")
6975 (home-page "https://github.com/rack-test/rack-test")
6976 (license license:expat)))
6977
6978(define-public ruby-rack-protection
6979 (package
6980 (name "ruby-rack-protection")
6981 (version "2.0.8.1")
6982 (source
6983 (origin
6984 (method url-fetch)
6985 (uri (rubygems-uri "rack-protection" version))
6986 (sha256
6987 (base32
6988 "1zyj97bfr1shfgwk4ddmdbw0mdkm4qdyh9s1hl0k7accf3kxx1yi"))))
6989 (build-system ruby-build-system)
6990 (arguments
6991 '(;; Tests missing from the gem.
6992 #:tests? #f))
6993 (propagated-inputs
6994 `(("ruby-rack" ,ruby-rack)))
6995 (native-inputs
6996 `(("bundler" ,bundler)
6997 ("ruby-rspec" ,ruby-rspec-2)
6998 ("ruby-rack-test" ,ruby-rack-test)))
6999 (synopsis "Rack middleware that protects against typical web attacks")
7000 (description "Rack middleware that can be used to protect against typical
7001web attacks. It can protect all Rack apps, including Rails. For instance, it
7002protects against cross site request forgery, cross site scripting,
7003clickjacking, directory traversal, session hijacking and IP spoofing.")
7004 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
7005 (license license:expat)))
7006
7007(define-public ruby-rainbow
7008 (package
7009 (name "ruby-rainbow")
7010 (version "3.0.0")
7011 (source
7012 (origin
7013 (method url-fetch)
7014 (uri (rubygems-uri "rainbow" version))
7015 (sha256
7016 (base32
7017 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
7018 (build-system ruby-build-system)
7019 (arguments
7020 '(#:phases
7021 (modify-phases %standard-phases
7022 ;; Run rspec directly, to avoid requiring Rubocop which is used from
7023 ;; the Rakefile.
7024 (replace 'check
7025 (lambda* (#:key tests? #:allow-other-keys)
7026 (when tests?
7027 (invoke "rspec"))
7028 #t)))))
7029 (native-inputs
7030 `(("bundler" ,bundler)
7031 ("ruby-rspec" ,ruby-rspec)))
7032 (synopsis "Colorize printed text on ANSI terminals")
7033 (description
7034 "@code{rainbow} provides a string presenter object to colorize strings by
7035wrapping them in ANSI escape codes.")
7036 (home-page "https://github.com/sickill/rainbow")
7037 (license license:expat)))
7038
7039(define-public ruby-rr
7040 (package
7041 (name "ruby-rr")
7042 (version "1.2.1")
7043 (source
7044 (origin
7045 (method url-fetch)
7046 (uri (rubygems-uri "rr" version))
7047 (sha256
7048 (base32
7049 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
7050 (build-system ruby-build-system)
7051 (arguments
7052 '(#:tests? #f)) ; test files not included
7053 (native-inputs
7054 `(("bundler" ,bundler)
7055 ("ruby-rspec" ,ruby-rspec)))
7056 (synopsis "Ruby test double framework")
7057 (description
7058 "RR is a test double framework that features a rich selection of double
7059techniques and a terse syntax.")
7060 (home-page "https://rr.github.io/rr/")
7061 (license license:expat)))
7062
7063(define-public ruby-rest-client
7064 (package
7065 (name "ruby-rest-client")
7066 (version "2.0.2")
7067 (source
7068 (origin
7069 (method url-fetch)
7070 (uri (rubygems-uri "rest-client" version))
7071 (sha256
7072 (base32
7073 "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
7074 (build-system ruby-build-system)
7075 (arguments
7076 '(#:phases
7077 (modify-phases %standard-phases
7078 (add-before 'check 'remove-unnecessary-development-dependencies
7079 (lambda _
7080 (substitute* "rest-client.gemspec"
7081 ;; Remove rubocop as it's unused. Rubocop also indirectly
7082 ;; depends on this package through ruby-parser and ruby-ast so
7083 ;; this avoids a dependency loop.
7084 ((".*rubocop.*") "\n")
7085 ;; Remove pry as it's unused, it's a debugging tool
7086 ((".*pry.*") "\n")
7087 ;; Remove an unnecessarily strict rdoc dependency
7088 ((".*rdoc.*") "\n"))
7089 #t))
7090 (add-before 'check 'delete-network-dependent-tests
7091 (lambda _
7092 (delete-file "spec/integration/request_spec.rb")
7093 (delete-file "spec/integration/httpbin_spec.rb")
7094 #t)))))
7095 (propagated-inputs
7096 `(("ruby-http-cookie" ,ruby-http-cookie)
7097 ("ruby-mime-types" ,ruby-mime-types)
7098 ("ruby-netrc" ,ruby-netrc)))
7099 (native-inputs
7100 `(("bundler" ,bundler)
7101 ("ruby-webmock" ,ruby-webmock-2)
7102 ("ruby-rspec" ,ruby-rspec)))
7103 (synopsis "Simple HTTP and REST client for Ruby")
7104 (description
7105 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
7106inspired by the Sinatra microframework style of specifying actions:
7107@code{get}, @code{put}, @code{post}, @code{delete}.")
7108 (home-page "https://github.com/rest-client/rest-client")
7109 (license license:expat)))
7110
7111(define-public ruby-rubocop-ast
7112 (package
7113 (name "ruby-rubocop-ast")
7114 (version "1.4.1")
7115 (source
7116 (origin
7117 (method git-fetch) ;no test suite in distributed gem
7118 (uri (git-reference
7119 (url "https://github.com/rubocop-hq/rubocop-ast")
7120 (commit (string-append "v" version))))
7121 (file-name (git-file-name name version))
7122 (sha256
7123 (base32
7124 "1x2m7k4bn4zvvwmj7imzmv0dav6xnrbcvssad1m5lkprx7h5lzkq"))))
7125 (build-system ruby-build-system)
7126 (arguments
7127 `(#:test-target "spec"
7128 #:phases (modify-phases %standard-phases
7129 (add-before 'build 'generate-lexer
7130 (lambda _
7131 (setenv "RUBOCOP_VERSION" "none")
7132 (invoke "rake" "generate")))
7133 (replace 'replace-git-ls-files
7134 (lambda _
7135 (substitute* "rubocop-ast.gemspec"
7136 (("`git ls-files(.*)`" _ files)
7137 (format #f "`find ~a -type f| sort`" files)))
7138 #t)))))
7139 (native-inputs
7140 `(("ruby-bump" ,ruby-bump)
7141 ("ruby-oedipus-lex" ,ruby-oedipus-lex)
7142 ("ruby-pry" ,ruby-pry)
7143 ("ruby-racc" ,ruby-racc)
7144 ("ruby-rake" ,ruby-rake)
7145 ("ruby-rspec" ,ruby-rspec)
7146 ("ruby-simplecov" ,ruby-simplecov)))
7147 (propagated-inputs
7148 `(("ruby-parser" ,ruby-parser)))
7149 (synopsis "RuboCop's AST extensions and NodePattern functionality")
7150 (description "Rubocop::AST extends @code{ruby-parser} with classes used
7151by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular:
7152@itemize
7153@item @code{RuboCop::AST::Node}
7154@item @code{RuboCop::AST::NodePattern}
7155@end itemize")
7156 (home-page "https://rubocop.org/")
7157 (license license:expat)))
7158
7159(define-public ruby-rexml
7160 (package
7161 (name "ruby-rexml")
7162 (version "3.2.4")
7163 (source
7164 (origin
7165 (method git-fetch) ;no tests in distributed gem
7166 (uri (git-reference
7167 (url "https://github.com/ruby/rexml")
7168 (commit (string-append "v" version))))
7169 (file-name (git-file-name name version))
7170 (sha256
7171 (base32
7172 "0rhjjbkaq2f2cs8hyr2i4yjqpcyl8m0wmr2cypa401m3fvz4221i"))))
7173 (build-system ruby-build-system)
7174 (synopsis "XML toolkit for Ruby")
7175 (description "Inspired by Electric XML library for Java, REXML aims to be
7176easy-to-use API, small and fast. It supports both tree and stream document
7177parsing.")
7178 (home-page "https://github.com/ruby/rexml")
7179 (license license:bsd-2)))
7180
7181(define-public ruby-character-set
7182 (package
7183 (name "ruby-character-set")
7184 (version "1.4.0")
7185 (source
7186 (origin
7187 (method url-fetch)
7188 (uri (rubygems-uri "character_set" version))
7189 (sha256
7190 (base32
7191 "0affq9n77vwy897ri2zhmfinfagf37hcwwimrccy1bcxan9mj3h3"))))
7192 (build-system ruby-build-system)
7193 (arguments '(#:tests? #f)) ;avoid a cycle with ruby-regexp-parser
7194 (synopsis "Ruby library to manipulate Unicode")
7195 (description "CharacterSet is a C-extended Ruby library to work with sets
7196of Unicode code points. It can read and write these sets in various formats
7197and implements the @code{stdlib} @code{Set} interface for them. It also
7198offers an alternate paradigm of @code{String} processing which grants much
7199better performance than @code{Regexp} and @code{String} methods from the
7200@code{stdlib} where applicable. Many parts can be used independently, e.g.:
7201@itemize
7202@item @code{CharacterSet::Character}
7203@item @code{CharacterSet::Parser}
7204@item @code{CharacterSet::Writer}
7205@item @code{RangeCompressor}
7206@end itemize")
7207 (home-page "https://github.com/jaynetics/character_set")
7208 (license license:expat)))
7209
7210(define-public ruby-range-compressor
7211 (package
7212 (name "ruby-range-compressor")
7213 (version "1.0.0")
7214 (source
7215 (origin
7216 (method git-fetch)
7217 (uri (git-reference
7218 (url "https://github.com/janosch-x/range_compressor")
7219 (commit (string-append "v" version))))
7220 (file-name (git-file-name name version))
7221 (sha256
7222 (base32
7223 "0y8slri2msyyg2szgwgriqd6qw9hkxycssdrcl5lk2dbcq5zvn54"))))
7224 (build-system ruby-build-system)
7225 (arguments
7226 `(#:test-target "spec"
7227 #:phases (modify-phases %standard-phases
7228 (add-after 'extract-gemspec 'strip-version-requirements
7229 (lambda _
7230 (substitute* "range_compressor.gemspec"
7231 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
7232 (string-append stripped "\n")))
7233 #t)))))
7234 (native-inputs
7235 `(("ruby-rspec" ,ruby-rspec)))
7236 (synopsis "Simple arrays of objects to arrays of ranges compressor")
7237 (description "RangeCompresses is a tiny library that allows compressing
7238arrays of objects into arrays of ranges. For example, it can turn the
7239following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.")
7240 (home-page "https://github.com/janosch-x/range_compressor")
7241 (license license:expat)))
7242
7243(define-public ruby-regexp-property-values
7244 (package
7245 (name "ruby-regexp-property-values")
7246 (version "1.0.0")
7247 (source
7248 (origin
7249 (method git-fetch)
7250 (uri (git-reference ;no test suite in distributed gem
7251 (url "https://github.com/jaynetics/regexp_property_values")
7252 (commit (string-append "v" version))))
7253 (file-name (git-file-name name version))
7254 (sha256
7255 (base32
7256 "0l3fjmscg1wxn7kc6bl022cc6k5d91pwb7daq1b5w36kvsx52w1j"))))
7257 (build-system ruby-build-system)
7258 (arguments
7259 '(#:test-target "default"))
7260 (native-inputs
7261 `(("ruby-character-set" ,ruby-character-set)
7262 ("ruby-rake-compiler" ,ruby-rake-compiler)
7263 ("ruby-range-compressor" ,ruby-range-compressor)
7264 ("ruby-rspec" ,ruby-rspec)))
7265 (synopsis "Inspect Ruby's regex engine property values")
7266 (description "This small library lets you see which property values are
7267supported by the regular expression engine of the Ruby version you are running
7268and can directly read out their code point ranges. In other words, it
7269determines all supported values for @code{\\p{value}} expressions and what
7270they match.")
7271 (home-page "https://github.com/jaynetics/regexp_property_values")
7272 (license license:expat)))
7273
7274(define-public ruby-regexp-parser
7275 (package
7276 (name "ruby-regexp-parser")
7277 (version "2.0.0")
7278 (source
7279 (origin
7280 (method git-fetch) ;bin/test missing from gem
7281 (uri (git-reference
7282 (url "https://github.com/ammar/regexp_parser")
7283 (commit (string-append "v" version))))
7284 (file-name (git-file-name name version))
7285 (sha256
7286 (base32
7287 "09ddxdwlml30q6j4rqf06bbjj1mwx00rs0bksnyblhv85anrqz3k"))))
7288 (build-system ruby-build-system)
7289 (arguments
7290 '(#:test-target "default"
7291 #:phases (modify-phases %standard-phases
7292 (add-before 'build 'compile-scanner.rb
7293 (lambda _
7294 (invoke "rake" "build")
7295 ;; XXX: This is needed otherwise the install
7296 ;; phase fails to delete the installed cached
7297 ;; gem file.
7298 (delete-file-recursively "pkg")
7299 #t)))))
7300 (native-inputs
7301 `(("ragel" ,ragel)
7302 ("ruby-regexp-property-values" ,ruby-regexp-property-values)
7303 ("ruby-rspec" ,ruby-rspec)))
7304 (synopsis "A regular expression parser library for Ruby ")
7305 (description "A Ruby gem for tokenizing, parsing, and transforming regular
7306expressions. It comprises the following components:
7307@itemize
7308@item A scanner/tokenizer based on Ragel,
7309@item A lexer that produces a stream of token objects,
7310@item A parser that produces a tree of Expression objects.
7311@end itemize")
7312 (home-page "https://github.com/ammar/regexp_parser")
7313 (license license:expat)))
7314
7315(define-public ruby-test-queue
7316 (package
7317 (name "ruby-test-queue")
7318 (version "0.4.2")
7319 (source
7320 (origin
7321 (method url-fetch)
7322 (uri (rubygems-uri "test-queue" version))
7323 (sha256
7324 (base32
7325 "0hvm3n1qrqxqilhqk4rjivw3gcrd08zz1i6am9qzg1ppjxv6f36f"))))
7326 (build-system ruby-build-system)
7327 (arguments
7328 '(#:phases
7329 (modify-phases %standard-phases
7330 (replace 'check
7331 (lambda* (#:key tests? #:allow-other-keys)
7332 (when tests?
7333 (invoke "rspec"))
7334 #t)))))
7335 (native-inputs
7336 `(("ruby-rspec" ,ruby-rspec)))
7337 (synopsis "Minitest/RSpec parallel test runner for CI environments")
7338 (description "The test-queue module is a parallel test runner,
7339built using a centralized queue to ensure optimal distribution of
7340tests between workers. It is specifically optimized for Continuous
7341Integration (CI) environments: build statistics from each run are
7342stored locally and used to sort the queue at the beginning of the next
7343run.")
7344 (home-page "https://github.com/tmm1/test-queue")
7345 (license license:expat)))
7346
7347(define-public ruby-rubocop
7348 (package
7349 (name "ruby-rubocop")
7350 (version "1.10.0")
7351 (source
7352 (origin
7353 (method git-fetch) ;no tests in distributed gem
7354 (uri (git-reference
7355 (url "https://github.com/rubocop-hq/rubocop")
7356 (commit (string-append "v" version))))
7357 (file-name (git-file-name name version))
7358 (sha256
7359 (base32
7360 "0wjw9vpzr4f3nf1zf010bag71w4hdi0haybdn7r5rlmw45pmim29"))))
7361 (build-system ruby-build-system)
7362 (arguments
7363 '(#:test-target "default"
7364 #:phases
7365 (modify-phases %standard-phases
7366 (add-before 'check 'set-home
7367 (lambda _
7368 (setenv "HOME" (getcwd))
7369 #t))
7370 ;; Rubocop depends on itself for tests, directly and indirectly. By
7371 ;; regenerating the TODO list we test rubocop against itself and
7372 ;; forgo adjusting the test suite to our environment each release.
7373 (replace 'check
7374 (lambda* (#:key tests? #:allow-other-keys)
7375 (when tests?
7376 (make-file-writable ".rubocop_todo.yml")
7377 (invoke "./exe/rubocop" "--auto-gen-config"))
7378 #t))
7379 (add-before 'check 'make-adoc-files-writable
7380 (lambda _
7381 (let ((adoc-files (find-files "docs/modules/ROOT/pages"
7382 "\\.adoc$")))
7383 (for-each make-file-writable adoc-files))
7384 #t)))))
7385 (native-inputs
7386 `(("ruby-bump" ,ruby-bump)
7387 ("ruby-pry" ,ruby-pry)
7388 ("ruby-rake" ,ruby-rake)
7389 ("ruby-rspec" ,ruby-rspec)
7390 ("ruby-rubocop-minimal" ,ruby-rubocop-minimal)
7391 ("ruby-rubocop-performance-minimal" ,ruby-rubocop-performance-minimal)
7392 ("ruby-rubocop-rspec-minimal" ,ruby-rubocop-rspec-minimal)
7393 ("ruby-simplecov" ,ruby-simplecov)
7394 ("ruby-stackprof" ,ruby-stackprof)
7395 ("ruby-test-queue" ,ruby-test-queue)
7396 ("ruby-webmock" ,ruby-webmock)
7397 ("ruby-yard" ,ruby-yard)))
7398 (propagated-inputs
7399 `(("ruby-parallel" ,ruby-parallel)
7400 ("ruby-parser" ,ruby-parser)
7401 ("ruby-rainbow" ,ruby-rainbow)
7402 ("ruby-regexp-parser" ,ruby-regexp-parser)
7403 ("ruby-rexml" ,ruby-rexml)
7404 ("ruby-rubocop-ast" ,ruby-rubocop-ast)
7405 ("ruby-progressbar" ,ruby-progressbar)
7406 ("ruby-unicode-display-width" ,ruby-unicode-display-width)))
7407 (synopsis "Ruby code style checking tool")
7408 (description
7409 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
7410the community-driven Ruby Style Guide.")
7411 (home-page "https://github.com/rubocop-hq/rubocop")
7412 (license license:expat)))
7413
7414(define-public ruby-rubocop-minimal
7415 (hidden-package
7416 (package
7417 (inherit ruby-rubocop)
7418 (arguments
7419 (substitute-keyword-arguments (package-arguments ruby-rubocop)
7420 ((#:tests? _ #f) #f)))
7421 (propagated-inputs '())
7422 (native-inputs '()))))
7423
7424(define-public ruby-contest
7425 (package
7426 (name "ruby-contest")
7427 (version "0.1.3")
7428 (source
7429 (origin
7430 (method url-fetch)
7431 (uri (rubygems-uri "contest" version))
7432 (sha256
7433 (base32
7434 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
7435 (build-system ruby-build-system)
7436 (synopsis "Write declarative tests using nested contexts")
7437 (description
7438 "Contest allows writing declarative @code{Test::Unit} tests using nested
7439contexts without performance penalties.")
7440 (home-page "https://github.com/citrusbyte/contest")
7441 (license license:expat)))
7442
7443(define-public ruby-creole
7444 (package
7445 (name "ruby-creole")
7446 (version "0.5.0")
7447 (source
7448 (origin
7449 (method url-fetch)
7450 (uri (rubygems-uri "creole" version))
7451 (sha256
7452 (base32
7453 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
7454 (build-system ruby-build-system)
7455 (native-inputs
7456 `(("ruby-bacon" ,ruby-bacon)))
7457 (synopsis "Creole markup language converter")
7458 (description
7459 "Creole is a lightweight markup language and this library for converting
7460creole to @code{HTML}.")
7461 (home-page "https://github.com/minad/creole")
7462 (license license:ruby)))
7463
7464(define-public ruby-docile
7465 (package
7466 (name "ruby-docile")
7467 (version "1.1.5")
7468 (source
7469 (origin
7470 (method url-fetch)
7471 (uri (rubygems-uri "docile" version))
7472 (sha256
7473 (base32
7474 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
7475 (build-system ruby-build-system)
7476 (arguments
7477 '(#:tests? #f)) ; needs github-markup, among others
7478 (synopsis "Ruby EDSL helper library")
7479 (description "Docile is a Ruby library that provides an interface for
7480creating embedded domain specific languages (EDSLs) that manipulate existing
7481Ruby classes.")
7482 (home-page "https://ms-ati.github.io/docile/")
7483 (license license:expat)))
7484
7485(define-public ruby-middleware
7486 (package
7487 (name "ruby-middleware")
7488 (version "0.1.0")
7489 (source
7490 (origin
7491 (method url-fetch)
7492 (uri (rubygems-uri "middleware" version))
7493 (sha256
7494 (base32
7495 "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl"))))
7496 (build-system ruby-build-system)
7497 (arguments '(#:tests? #f)) ;no test suite
7498 (synopsis "Implementation of a middleware abstraction for Ruby")
7499 (description "Middleware is a generalized implementation of a middleware
7500abstraction for Ruby.")
7501 (home-page "https://github.com/mitchellh/middleware")
7502 (license license:expat)))
7503
7504(define-public ruby-benchmark-ips
7505 (package
7506 (name "ruby-benchmark-ips")
7507 (version "2.8.2")
7508 (source
7509 (origin
7510 (method url-fetch)
7511 (uri (rubygems-uri "benchmark-ips" version))
7512 (sha256
7513 (base32
7514 "1n9397j7kh4vvikfann1467qgksc679imlr50hax3lk1q3af8kdw"))))
7515 (build-system ruby-build-system)
7516 (native-inputs
7517 `(("ruby-hoe" ,ruby-hoe)))
7518 (synopsis "Iterations per second enhancement for the Ruby Benchmark module")
7519 (description "Benchmark-ips enhances the Ruby Benchmark module with the
7520iterations per second count. For short snippets of code, it can automatically
7521figure out how many times to run the code to get interesting data.")
7522 (home-page "https://github.com/evanphx/benchmark-ips")
7523 (license license:expat)))
7524
7525(define-public ruby-ffi-rzmq-core
7526 (package
7527 (name "ruby-ffi-rzmq-core")
7528 (version "1.0.7")
7529 (source
7530 (origin
7531 (method url-fetch)
7532 (uri (rubygems-uri "ffi-rzmq-core" version))
7533 (sha256
7534 (base32
7535 "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5"))))
7536 (build-system ruby-build-system)
7537 (arguments
7538 `(#:phases
7539 (modify-phases %standard-phases
7540 (add-after 'unpack 'patch-libzmq-search-path
7541 (lambda* (#:key inputs #:allow-other-keys)
7542 (let ((zeromq (assoc-ref inputs "zeromq")))
7543 (substitute* "lib/ffi-rzmq-core/libzmq.rb"
7544 (("/usr/local/lib")
7545 (string-append zeromq "/lib")))
7546 #t)))
7547 (replace 'check
7548 (lambda _
7549 (invoke "rspec"))))))
7550 (native-inputs
7551 `(("ruby-rspec" ,ruby-rspec)))
7552 (inputs
7553 `(("zeromq" ,zeromq)))
7554 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
7555 (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library")
7556 (description "This library only provides the FFI wrapper for the ZeroMQ
7557networking library. It can be used to implement a Ruby API for the ZeroMQ
7558library.")
7559 (home-page "https://github.com/chuckremes/ffi-rzmq-core")
7560 (license license:expat)))
7561
7562(define-public ruby-ffi-rzmq
7563 (package
7564 (name "ruby-ffi-rzmq")
7565 (version "2.0.7")
7566 (source
7567 (origin
7568 (method url-fetch)
7569 (uri (rubygems-uri "ffi-rzmq" version))
7570 (sha256
7571 (base32
7572 "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg"))))
7573 (build-system ruby-build-system)
7574 (arguments '(#:tests? #t
7575 #:phases (modify-phases %standard-phases
7576 (replace 'check
7577 (lambda _
7578 (invoke "rspec"))))))
7579 (native-inputs
7580 `(("ruby-rspec" ,ruby-rspec)))
7581 (propagated-inputs
7582 `(("ruby-ffi-rzmq-core" ,ruby-ffi-rzmq-core)))
7583 (synopsis "High-level Ruby wrapper for the ZeroMQ networking library")
7584 (description "This library provides a high-level API that wraps the ZeroMQ
7585networking library using the Ruby foreign function interface (FFI). It is a
7586pure Ruby wrapper, hence is compatible with any Ruby runtime that has support
7587for FFI.")
7588 (home-page "https://github.com/chuckremes/ffi-rzmq")
7589 (license license:expat)))
7590
7591(define-public ruby-sawyer
7592 (package
7593 (name "ruby-sawyer")
7594 (version "0.8.2")
7595 (source
7596 (origin
7597 (method url-fetch)
7598 (uri (rubygems-uri "sawyer" version))
7599 (sha256
7600 (base32
7601 "0yrdchs3psh583rjapkv33mljdivggqn99wkydkjdckcjn43j3cz"))))
7602 (build-system ruby-build-system)
7603 (propagated-inputs
7604 `(("ruby-addressable" ,ruby-addressable)
7605 ("ruby-faraday" ,ruby-faraday)))
7606 (synopsis "Experimental hypermedia agent for Ruby")
7607 (description "Sawyer is an experimental hypermedia agent for Ruby built on
7608top of Faraday.")
7609 (home-page "https://github.com/lostisland/sawyer")
7610 (license license:expat)))
7611
7612(define-public ruby-octokit
7613 (package
7614 (name "ruby-octokit")
7615 (version "4.18.0")
7616 (source
7617 (origin
7618 (method url-fetch)
7619 (uri (rubygems-uri "octokit" version))
7620 (sha256
7621 (base32
7622 "0zvfr9njmj5svi39fcsi2b0g7pcxb0vamw9dlyas8bg814jlzhi6"))))
7623 (build-system ruby-build-system)
7624 (arguments '(#:tests? #f)) ;no test suite in the gem release
7625 (propagated-inputs
7626 `(("ruby-faraday" ,ruby-faraday)
7627 ("ruby-sawyer" ,ruby-sawyer)))
7628 (synopsis "Ruby toolkit for the GitHub API")
7629 (description "Octokit wraps the GitHub API in a flat API client that
7630follows Ruby conventions and requires little knowledge of REST.")
7631 (home-page "https://github.com/octokit/octokit.rb")
7632 (license license:expat)))
7633
7634(define-public ruby-chandler
7635 (package
7636 (name "ruby-chandler")
7637 (version "0.9.0")
7638 (source
7639 (origin
7640 (method url-fetch)
7641 (uri (rubygems-uri "chandler" version))
7642 (sha256
7643 (base32
7644 "1n8a4mr2jkcz5vaaps45g2rxa2pzy1wb7cylgw85xmmyyp14lnrr"))))
7645 (build-system ruby-build-system)
7646 (native-inputs
7647 `(("ruby-rubocop" ,ruby-rubocop)))
7648 (propagated-inputs
7649 `(("ruby-netrc" ,ruby-netrc)
7650 ("ruby-octokit" ,ruby-octokit)))
7651 (synopsis "Sync CHANGELOG entries to GitHub's release notes")
7652 (description "Chandler syncs a project's CHANGELOG file entries to
7653GitHub's release notes to remove the need of manually entering release
7654notes.")
7655 (home-page "https://github.com/mattbrictson/chandler")
7656 (license license:expat)))
7657
7658(define-public ruby-pry-byebug
7659 (package
7660 (name "ruby-pry-byebug")
7661 (version "3.9.0")
7662 (source
7663 (origin
7664 (method git-fetch)
7665 (uri (git-reference
7666 (url "https://github.com/deivid-rodriguez/pry-byebug")
7667 (commit (string-append "v" version))))
7668 (file-name (git-file-name name version))
7669 (sha256
7670 (base32
7671 "1kchrwccai92068p50zyd6mh524ywqnm0jw5g3lks7iwmf0xkmgc"))))
7672 (build-system ruby-build-system)
7673 (arguments
7674 `(#:phases (modify-phases %standard-phases
7675 (add-before 'check 'set-home
7676 (lambda _
7677 (setenv "HOME" (getcwd))
7678 #t)))))
7679 (native-inputs
7680 `(("ruby-chandler" ,ruby-chandler)
7681 ("ruby-rubocop" ,ruby-rubocop)
7682 ("ruby-simplecov" ,ruby-simplecov)))
7683 (propagated-inputs
7684 `(("ruby-byebug" ,ruby-byebug-11)
7685 ("ruby-pry" ,ruby-pry)))
7686 (synopsis "Step-by-step debugging and stack navigation in Pry")
7687 (description "This package adds step-by-step debugging and stack
7688navigation capabilities to @code{pry}, using @code{byebug}.")
7689 (home-page "https://github.com/deivid-rodriguez/pry-byebug")
7690 (license license:expat)))
7691
7692(define-public ruby-stackprof
7693 (package
7694 (name "ruby-stackprof")
7695 (version "0.2.16")
7696 (source
7697 (origin
7698 (method url-fetch)
7699 (uri (rubygems-uri "stackprof" version))
7700 (sha256
7701 (base32
7702 "147rb66p3n062vc433afqhkd99iazvkrqnghxgh871r62yhha93f"))))
7703 (build-system ruby-build-system)
7704 (native-inputs
7705 `(("ruby-mocha" ,ruby-mocha)
7706 ("ruby-rake-compiler" ,ruby-rake-compiler)))
7707 (synopsis "Sampling profiler for Ruby code")
7708 (description
7709 "@code{stackprof} is a fast sampling profiler for Ruby code, with cpu,
7710wallclock and object allocation samplers.")
7711 (home-page "https://github.com/tmm1/stackprof")
7712 (license license:expat)))
7713
7714(define-public ruby-binding-of-caller
7715 (package
7716 (name "ruby-binding-of-caller")
7717 (version "0.8.0")
7718 (source
7719 (origin
7720 (method url-fetch)
7721 (uri (rubygems-uri "binding_of_caller" version))
7722 (sha256
7723 (base32
7724 "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g"))))
7725 (build-system ruby-build-system)
7726 ;; Attempting to run the test suite fails with a rake deprecation error
7727 ;; (see: https://github.com/banister/binding_of_caller/issues/76).
7728 (arguments '(#:tests? #f))
7729 (propagated-inputs
7730 `(("ruby-debug-inspector" ,ruby-debug-inspector)))
7731 (synopsis "Retrieve the binding of a method's caller")
7732 (description "The @code{binding_of_caller} module provides the
7733@code{Binding#of_caller} method. It allows accessing bindings from upper
7734frames in the call stack and can evaluate code in that context.")
7735 (home-page "https://github.com/banister/binding_of_caller")
7736 (license license:expat)))
7737
7738(define-public ruby-pry-stack-explorer
7739 (package
7740 (name "ruby-pry-stack-explorer")
7741 (version "0.5.1")
7742 (source
7743 (origin
7744 (method url-fetch)
7745 (uri (rubygems-uri "pry-stack_explorer" version))
7746 (sha256
7747 (base32
7748 "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0"))))
7749 (build-system ruby-build-system)
7750 (arguments '(#:tests? #f)) ;no test suite in gem release
7751 (propagated-inputs
7752 `(("ruby-binding-of-caller" ,ruby-binding-of-caller)
7753 ("ruby-pry" ,ruby-pry)))
7754 (synopsis "Call-stack navigation plugin for the Pry REPL")
7755 (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that
7756add support to navigate the call-stack.")
7757 (home-page "https://github.com/pry/pry-stack_explorer")
7758 (license license:expat)))
7759
7760(define-public ruby-varint
7761 (package
7762 (name "ruby-varint")
7763 (version "0.1.1")
7764 (source
7765 (origin
7766 (method url-fetch)
7767 (uri (rubygems-uri "varint" version))
7768 (sha256
7769 (base32
7770 "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac"))))
7771 (build-system ruby-build-system)
7772 (arguments '(#:tests? #f)) ;no test suite
7773 (synopsis "Variable length integers (varint) C extension for Ruby")
7774 (description "This package provides a small C extension to speed up
7775variable length integers (varint) in Ruby Protocol Buffers.")
7776 (home-page "https://github.com/liquidm/varint")
7777 (license license:bsd-3)))
7778
7779(define-public ruby-ruby-prof
7780 (package
7781 (name "ruby-ruby-prof")
7782 (version "1.4.1")
7783 (source
7784 (origin
7785 (method url-fetch)
7786 (uri (rubygems-uri "ruby-prof" version))
7787 (sha256
7788 (base32
7789 "12cd91m08ih0imfpy4k87618hd4mhyz291a6bx2hcskza4nf6d27"))))
7790 (build-system ruby-build-system)
7791 (arguments
7792 `(#:phases
7793 (modify-phases %standard-phases
7794 (add-after 'unpack 'patch-rakefile
7795 ;; This fixes the following error: "NameError: uninitialized
7796 ;; constant Bundler::GemHelper" (see:
7797 ;; https://github.com/ruby-prof/ruby-prof/issues/274).
7798 (lambda _
7799 (substitute* "Rakefile"
7800 ((".*require \"bundler/setup\".*" all)
7801 (string-append all " require 'bundler/gem_tasks'\n")))
7802 #t))
7803 ;; The LineNumbersTest test fails non-deterministically (see:
7804 ;; https://github.com/ruby-prof/ruby-prof/issues/276).
7805 (add-after 'extract-gemspec 'delete-flaky-test
7806 (lambda _
7807 (delete-file "test/line_number_test.rb")
7808 (substitute* "ruby-prof.gemspec"
7809 (("\"test/line_number_test\\.rb\"\\.freeze, ") ""))
7810 #t))
7811 (add-before 'check 'compile
7812 (lambda _
7813 (invoke "rake" "compile"))))))
7814 (native-inputs
7815 `(("bundler" ,bundler)
7816 ("ruby-minitest" ,ruby-minitest)
7817 ("ruby-rake-compiler" ,ruby-rake-compiler)
7818 ("ruby-rdoc" ,ruby-rdoc)))
7819 (synopsis "Fast code profiler for Ruby")
7820 (description "RubyProf is a fast code profiler for Ruby. Its features
7821include:
7822@table @asis
7823@item Speed
7824Being a C extension, it is many times faster than the standard Ruby profiler.
7825@item Measurement Modes
7826It can measure program wall time, process time, object allocations and memory
7827usage.
7828@item Reports
7829A variety of text and cross-referenced HTML reports can be generated.
7830@item Threads
7831Profiling multiple threads simultaneously is supported.
7832@end table")
7833 (home-page "https://github.com/ruby-prof/ruby-prof")
7834 (license license:bsd-2)))
7835
7836(define-public ruby-memory-profiler
7837 (package
7838 (name "ruby-memory-profiler")
7839 (version "1.0.0")
7840 (source
7841 (origin
7842 (method git-fetch)
7843 (uri (git-reference
7844 (url "https://github.com/SamSaffron/memory_profiler")
7845 (commit (string-append "v" version))))
7846 (file-name (git-file-name name version))
7847 (sha256
7848 (base32
7849 "07yqv11q68xg2fqkrhs6ysngryk8b9zq6qzh24rgx9xqv6qfnj0w"))))
7850 (build-system ruby-build-system)
7851 (synopsis "Memory profiling routines for Ruby")
7852 (description
7853 "This package provides memory profiling routines for Ruby.")
7854 (home-page "https://github.com/SamSaffron/memory_profiler")
7855 (license license:expat)))
7856
7857(define-public ruby-cucumber-messages
7858 (package
7859 (name "ruby-cucumber-messages")
7860 (version "12.2.0")
7861 (source (origin
7862 (method git-fetch)
7863 (uri (git-reference
7864 (url "https://github.com/cucumber/messages-ruby")
7865 (commit "12cd07eac87bce7843fd1bb0bf64bc4da09f097c")))
7866 (file-name (git-file-name name version))
7867 (sha256
7868 (base32
7869 "16wwqfpsq7crvxc3q08lphgyh12cl2d83p1c79p312q4jmy9cn5a"))))
7870 (build-system ruby-build-system)
7871 (arguments
7872 `(#:phases (modify-phases %standard-phases
7873 (add-after 'unpack 'patch-protobuf.rb
7874 (lambda _
7875 (substitute* "rake/protobuf.rb"
7876 (("load 'protobuf/tasks/compile.rake'")
7877 "require 'protobuf/tasks'"))
7878 #t))
7879 (add-before 'build 'compile
7880 (lambda _
7881 (substitute* "Makefile"
7882 (("bundle exec ") "")
7883 (("include default.mk.*" all)
7884 (string-append "#" all)))
7885 (invoke "make")))
7886 (replace 'check
7887 (lambda _
7888 (invoke "rspec"))))))
7889 (propagated-inputs
7890 `(("ruby-protobuf" ,ruby-protobuf-cucumber)))
7891 (native-inputs
7892 `(("ruby-rspec" ,ruby-rspec)))
7893 (home-page "https://github.com/cucumber/messages-ruby")
7894 (synopsis "Cucumber Messages for Ruby (Protocol Buffers)")
7895 (description "Cucumber Messages for Ruby is a library which allows
7896serialization and deserialization of the protocol buffer messages used in
7897Cucumber.")
7898 (license license:expat)))
7899
7900(define-public ruby-gherkin
7901 (package
7902 (name "ruby-gherkin")
7903 (version "14.0.1")
7904 (source (origin
7905 (method git-fetch)
7906 (uri (git-reference
7907 (url "https://github.com/cucumber/gherkin-ruby")
7908 (commit (string-append "v" version))))
7909 (file-name (git-file-name name version))
7910 (sha256
7911 (base32
7912 "1dwa8632nc6kijv8p257jl64rsjmc0fimlaqvxlkdi2h9n1nympb"))))
7913 (build-system ruby-build-system)
7914 (native-inputs
7915 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
7916 ("ruby-rspec" ,ruby-rspec)))
7917 (arguments
7918 `(#:test-target "spec"))
7919 (synopsis "Gherkin parser for Ruby")
7920 (description "Gherkin is a parser and compiler for the Gherkin language.
7921It is intended be used by all Cucumber implementations to parse
7922@file{.feature} files.")
7923 (home-page "https://github.com/cucumber/gherkin-ruby")
7924 (license license:expat)))
7925
7926(define-public ruby-gherkin-ruby
7927 (package
7928 (name "ruby-gherkin-ruby")
7929 (version "0.3.2")
7930 (home-page "https://github.com/codegram/gherkin-ruby")
7931 (source (origin
7932 (method url-fetch)
7933 (uri (rubygems-uri "gherkin-ruby" version))
7934 (sha256
7935 (base32
7936 "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1"))))
7937 (build-system ruby-build-system)
7938 (synopsis "Pure Ruby Gherkin parser")
7939 (description
7940 "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than
7941200 lines of code.")
7942 ;; XXX: No license information anywhere but Readme.md.
7943 (license license:expat)))
7944
7945(define-public ruby-aruba
7946 (package
7947 (name "ruby-aruba")
7948 (version "0.14.14")
7949 (source
7950 (origin
7951 (method url-fetch)
7952 (uri (rubygems-uri "aruba" version))
7953 (sha256
7954 (base32
7955 "0l2mfpdxc03gdrbwc2hv4vdhjhqhfcdp6d02j05j64ncpi9srlqn"))))
7956 (build-system ruby-build-system)
7957 (arguments
7958 '(#:test-target "spec"
7959 #:phases
7960 (modify-phases %standard-phases
7961 (add-after 'unpack 'patch
7962 (lambda _
7963 (substitute* "spec/aruba/api_spec.rb"
7964 ;; This resolves some errors in the specs
7965 ;;
7966 ;; undefined method `parse' for Time:Class
7967 (("require 'spec_helper'")
7968 "require 'spec_helper'\nrequire 'time'"))
7969 ;; Avoid shebang issues in this spec file
7970 (substitute* "spec/aruba/matchers/command_spec.rb"
7971 (("/usr/bin/env bash")
7972 (which "bash")))
7973 #t))
7974 (add-before 'check 'remove-unnecessary-dependencies
7975 (lambda _
7976 (substitute* "Gemfile"
7977 ((".*byebug.*") "\n")
7978 ((".*pry.*") "\n")
7979 ((".*yaml.*") "\n")
7980 ((".*bcat.*") "\n")
7981 ((".*kramdown.*") "\n")
7982 ((".*rubocop.*") "\n")
7983 ((".*cucumber-pro.*") "\n")
7984 ((".*cucumber.*") "\n")
7985 ((".*license_finder.*") "\n")
7986 ((".*rake.*") "gem 'rake'\n")
7987 ((".*relish.*") "\n"))
7988 (substitute* "aruba.gemspec"
7989 (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
7990 "spec.add_runtime_dependency 'cucumber'"))
7991 #t))
7992 (add-before 'check 'set-home
7993 (lambda _ (setenv "HOME" "/tmp") #t)))))
7994 (native-inputs
7995 `(("bundler" ,bundler)
7996 ("ruby-rspec" ,ruby-rspec)
7997 ("ruby-fuubar" ,ruby-fuubar)
7998 ("ruby-simplecov" ,ruby-simplecov)))
7999 (propagated-inputs
8000 `(("ruby-childprocess" ,ruby-childprocess)
8001 ("ruby-contracts" ,ruby-contracts)
8002 ("ruby-cucumber" ,ruby-cucumber)
8003 ("ruby-ffi" ,ruby-ffi)
8004 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
8005 ("ruby-thor" ,ruby-thor)
8006 ("ruby-yard" ,ruby-yard)))
8007 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
8008 (description
8009 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
8010command-line applications. It supports applications written in any
8011language.")
8012 (home-page "https://github.com/cucumber/aruba")
8013 (license license:expat)))
8014
8015;; A version of ruby-aruba without tests run so that circular dependencies can
8016;; be avoided.
8017(define ruby-aruba-without-tests
8018 (package
8019 (inherit ruby-aruba)
8020 (arguments '(#:tests? #f))
8021 (propagated-inputs
8022 `(("ruby-cucumber" ,ruby-cucumber-without-tests)
8023 ,@(alist-delete "ruby-cucumber"
8024 (package-propagated-inputs ruby-aruba))))
8025 (native-inputs '())))
8026
8027(define-public ruby-sys-uname
8028 (package
8029 (name "ruby-sys-uname")
8030 (version "1.2.1")
8031 (source
8032 (origin
8033 (method url-fetch)
8034 (uri (rubygems-uri "sys-uname" version))
8035 (sha256
8036 (base32
8037 "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0"))))
8038 (build-system ruby-build-system)
8039 (arguments
8040 `(#:test-target "spec"))
8041 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
8042 (native-inputs `(("ruby-rspec" ,ruby-rspec)))
8043 (synopsis "Ruby interface for gathering system information")
8044 (description "The sys-uname library provides an interface for gathering
8045information about your current platform. It allows retrieving information
8046such as the OS name, OS version, system name, etc.")
8047 (home-page "https://github.com/djberg96/sys-uname")
8048 (license license:asl2.0)))
8049
8050(define-public ruby-cucumber-create-meta
8051 (package
8052 (name "ruby-cucumber-create-meta")
8053 (version "1.0.0")
8054 (source
8055 (origin
8056 (method url-fetch)
8057 (uri (rubygems-uri "cucumber-create-meta" version))
8058 (sha256
8059 (base32
8060 "0i0i3arymjrnjk72mg79w1a11607x4d0lrqafm9sz2gq9l52zasw"))))
8061 (build-system ruby-build-system)
8062 (arguments
8063 `(#:phases (modify-phases %standard-phases
8064 (add-after 'extract-gemspec 'relax-version-requirements
8065 (lambda _
8066 (substitute* ".gemspec"
8067 ((" 12\\.2")
8068 " 12.1"))
8069 #t))
8070 (replace 'check
8071 (lambda _
8072 (invoke "rspec"))))))
8073 (native-inputs
8074 `(("ruby-rspec" ,ruby-rspec)))
8075 (propagated-inputs
8076 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
8077 ("ruby-sys-uname" ,ruby-sys-uname)))
8078 (synopsis "Function to create @code{Meta} messages for Cucumber Ruby")
8079 (description "The @code{createMeta} utility function allows generating
8080system-specific @code{Meta} messages for Cucumber Ruby.")
8081 (home-page "https://github.com/cucumber/cucumber/tree/master/create-meta/ruby")
8082 (license license:expat)))
8083
8084(define-public ruby-cucumber-html-formatter
8085 (package
8086 (name "ruby-cucumber-html-formatter")
8087 (version "7.0.0")
8088 (source
8089 (origin
8090 (method url-fetch)
8091 (uri (rubygems-uri "cucumber-html-formatter" version))
8092 (sha256
8093 (base32
8094 "0lshj4sw9jw7687wrhknyb9kffblai3l843zgrznyqij3ga0bc62"))))
8095 (build-system ruby-build-system)
8096 (arguments
8097 `(#:phases (modify-phases %standard-phases
8098 (replace 'check
8099 (lambda _
8100 (invoke "rspec"))))))
8101 (native-inputs
8102 `(("ruby-rspec" ,ruby-rspec)))
8103 (propagated-inputs
8104 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)))
8105 (synopsis "HTML formatter for Cucumber")
8106 (description "Cucumber HTML Formatter produces a HTML report for Cucumber
8107runs. It is built on top of cucumber-react and works with any Cucumber
8108implementation with a protocol buffer formatter that outputs Cucumber
8109messages.")
8110 (home-page "https://github.com/cucumber/cucumber/tree/\
8111master/html-formatter/ruby")
8112 (license license:expat)))
8113
8114(define-public ruby-cucumber
8115 (package
8116 (name "ruby-cucumber")
8117 (version "4.1.0")
8118 (source
8119 (origin
8120 (method git-fetch)
8121 (uri (git-reference
8122 (url "https://github.com/cucumber/cucumber-ruby")
8123 (commit (string-append "v" version))))
8124 (file-name (git-file-name name version))
8125 (sha256
8126 (base32
8127 "0g9rqfslbzkkrq2kvl14fgknrhfbji3bjjpjxff5nc9wzd3hd549"))))
8128 (build-system ruby-build-system)
8129 (arguments
8130 '(#:test-target "default"
8131 #:phases
8132 (modify-phases %standard-phases
8133 (add-after 'unpack 'disable-rubocop
8134 ;; Rubocop lint check fails with our more recent version.
8135 (lambda _
8136 (substitute* "Rakefile"
8137 (("spec cucumber rubocop")
8138 "spec cucumber"))
8139 #t))
8140 (add-after 'extract-gemspec 'strip-version-requirements
8141 (lambda _
8142 (delete-file "Gemfile") ;do not use Bundler
8143 (substitute* "cucumber.gemspec"
8144 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
8145 (string-append stripped "\n")))
8146 #t))
8147 (add-before 'check 'set-home
8148 (lambda _
8149 (setenv "HOME" (getcwd))
8150 #t)))))
8151 (propagated-inputs
8152 `(("ruby-builder" ,ruby-builder)
8153 ("ruby-cucumber-core" ,ruby-cucumber-core)
8154 ("ruby-cucumber-create-meta" ,ruby-cucumber-create-meta)
8155 ("ruby-cucumber-html-formatter" ,ruby-cucumber-html-formatter)
8156 ("ruby-cucumber-messages" ,ruby-cucumber-messages)
8157 ("ruby-cucumber-wire" ,ruby-cucumber-wire)
8158 ("ruby-diff-lcs" ,ruby-diff-lcs)
8159 ("ruby-gherkin" ,ruby-gherkin)
8160 ("ruby-multi-json" ,ruby-multi-json)
8161 ("ruby-multi-test" ,ruby-multi-test)))
8162 (native-inputs
8163 `(;; Use a untested version of aruba, to avoid a circular dependency, as
8164 ;; ruby-aruba depends on ruby-cucumber.
8165 ("ruby-aruba" ,ruby-aruba-without-tests)
8166 ("ruby-rspec" ,ruby-rspec)
8167 ("ruby-pry" ,ruby-pry)
8168 ("ruby-nokogiri" ,ruby-nokogiri)
8169 ("ruby-rubocop" ,ruby-rubocop)))
8170 (synopsis "Describe automated tests in plain language")
8171 (description "Cucumber is a tool for running automated tests written in
8172plain language. It's designed to support a Behaviour Driven Development (BDD)
8173software development workflow.")
8174 (home-page "https://cucumber.io/")
8175 (license license:expat)))
8176
8177(define ruby-cucumber-without-tests
8178 (package (inherit ruby-cucumber)
8179 (arguments
8180 '(#:tests? #f))
8181 (native-inputs
8182 '())))
8183
8184(define-public ruby-coveralls
8185 (package
8186 (name "ruby-coveralls")
8187 (version "0.8.23")
8188 (source
8189 (origin
8190 (method url-fetch)
8191 (uri (rubygems-uri "coveralls" version))
8192 (sha256
8193 (base32
8194 "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc"))))
8195 (build-system ruby-build-system)
8196 ;; The test suite depends on ruby-vcr, which cannot be included in Guix
8197 ;; because of its nonfree, Hippocratic-derived license.
8198 (arguments
8199 `(#:tests? #f
8200 #:phases (modify-phases %standard-phases
8201 (add-after 'extract-gemspec 'strip-version-requirements
8202 ;; Keeping strict version requirements can cause problems
8203 ;; to users of the library, such as: Gem::ConflictError:
8204 ;; Unable to activate coveralls-0.8.23, because
8205 ;; simplecov-0.17.1 conflicts with simplecov (~> 0.16.1).
8206 (lambda _
8207 (substitute* "coveralls-ruby.gemspec"
8208 (("(.*add_.*dependency\\([^,]+), .*" _ stripped)
8209 (string-append stripped ")\n")))
8210 #t)))))
8211 (propagated-inputs
8212 `(("ruby-json" ,ruby-json)
8213 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
8214 ("ruby-thor" ,ruby-thor)
8215 ("ruby-tins" ,ruby-tins)))
8216 (synopsis "Ruby implementation of the Coveralls API")
8217 (description "This package provides a Ruby implementation of the Coveralls
8218API.")
8219 (home-page "https://coveralls.io")
8220 (license license:expat)))
8221
8222(define-public ruby-unindent
8223 (package
8224 (name "ruby-unindent")
8225 (version "1.0")
8226 (source
8227 (origin
8228 (method url-fetch)
8229 (uri (rubygems-uri "unindent" version))
8230 (sha256
8231 (base32
8232 "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd"))))
8233 (build-system ruby-build-system)
8234 (synopsis "Ruby method to unindent strings")
8235 (description "This module provides a @code{String#unindent} Ruby method to
8236unindent strings, which can be useful to unindent multiline strings embedded
8237in already-indented code.")
8238 (home-page "https://github.com/mynyml/unindent")
8239 (license license:expat)))
8240
8241(define-public ruby-cucumber-core
8242 (package
8243 (name "ruby-cucumber-core")
8244 (version "7.1.0")
8245 (source
8246 (origin
8247 (method git-fetch)
8248 (uri (git-reference
8249 (url "https://github.com/cucumber/cucumber-ruby-core")
8250 (commit (string-append "v" version))))
8251 (file-name (git-file-name name version))
8252 (sha256
8253 (base32
8254 "1p5wb6wbggbw37ariyag4kxpiczznvgm3c8cnz1744dmbj79q1rn"))))
8255 (build-system ruby-build-system)
8256 (arguments
8257 `(#:test-target "spec"
8258 #:phases
8259 (modify-phases %standard-phases
8260 (add-after 'extract-gemspec 'relax-version-requirements
8261 (lambda _
8262 (substitute* "cucumber-core.gemspec"
8263 (("'cucumber-tag-expressions',.*")
8264 "'cucumber-tag-expressions', '>=2.0.0'\n"))
8265 #t)))))
8266 (native-inputs
8267 `(("ruby-rspec" ,ruby-rspec)
8268 ("ruby-coveralls" ,ruby-coveralls)
8269 ("ruby-rubocop" ,ruby-rubocop)
8270 ("ruby-simplecov" ,ruby-simplecov)
8271 ("ruby-unindent" ,ruby-unindent)))
8272 (propagated-inputs
8273 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
8274 ("ruby-gherkin" ,ruby-gherkin)
8275 ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
8276 (synopsis "Core library for the Cucumber BDD app")
8277 (description "Cucumber is a tool for running automated tests
8278written in plain language. Because they're written in plain language,
8279they can be read by anyone on your team. Because they can be read by
8280anyone, you can use them to help improve communication, collaboration
8281and trust on your team.")
8282 (home-page "https://cucumber.io/")
8283 (license license:expat)))
8284
8285(define-public ruby-cucumber-expressions
8286 (package
8287 (name "ruby-cucumber-expressions")
8288 (version "10.2.0")
8289 (source
8290 (origin
8291 (method git-fetch)
8292 (uri (git-reference
8293 (url "https://github.com/cucumber/cucumber-expressions-ruby")
8294 (commit (string-append "v" version))))
8295 (file-name (git-file-name name version))
8296 (sha256
8297 (base32
8298 "1aivhcpjrmbvp9bg0y7g6zxh2swfvylvg0sapq5jc4i1y74k8npd"))))
8299 (build-system ruby-build-system)
8300 (arguments
8301 '(#:test-target "spec"))
8302 (native-inputs
8303 `(("ruby-rspec" ,ruby-rspec)
8304 ("ruby-simplecov" ,ruby-simplecov)))
8305 (synopsis "Simpler alternative to Regular Expressions")
8306 (description "Cucumber Expressions offer similar functionality to Regular
8307Expressions, with a syntax that is easier to read and write. Cucumber
8308Expressions are extensible with parameter types.")
8309 (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
8310 (license license:expat)))
8311
8312(define-public ruby-cucumber-wire
8313 (package
8314 (name "ruby-cucumber-wire")
8315 (version "3.1.0")
8316 (source
8317 (origin
8318 (method url-fetch)
8319 (uri (rubygems-uri "cucumber-wire" version))
8320 (sha256
8321 (base32
8322 "0z1n13lqv70zb2lcrvs2263lm0gsb3gz8gbv890kxzwp8cvd433k"))))
8323 (build-system ruby-build-system)
8324 (arguments
8325 '(#:tests? #f ;tests use cucumber, causing a cycle
8326 #:phases
8327 (modify-phases %standard-phases
8328 (add-after 'extract-gemspec 'relax-version-requirements
8329 (lambda _
8330 (substitute* ".gemspec"
8331 ((" 10\\.1") " 10.2"))
8332 #t)))))
8333 (propagated-inputs
8334 `(("ruby-cucumber-core" ,ruby-cucumber-core)
8335 ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
8336 ("ruby-cucumber-messages" ,ruby-cucumber-messages)))
8337 (synopsis "Cucumber wire protocol plugin")
8338 (description "Cucumber's wire protocol allows step definitions to be
8339implemented and invoked on any platform.")
8340 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
8341 (license license:expat)))
8342
8343(define-public ruby-cucumber-tag-expressions
8344 (package
8345 (name "ruby-cucumber-tag-expressions")
8346 (version "3.0.0")
8347 (source
8348 (origin
8349 (method git-fetch)
8350 (uri (git-reference
8351 (url "https://github.com/cucumber/tag-expressions-ruby")
8352 (commit (string-append "v" version))))
8353 (file-name (git-file-name name version))
8354 (sha256
8355 (base32
8356 "15dw4w0npd4m6aw7zhqkjxxzngp42kswrkwfygxkxcxnhy5zl1vx"))))
8357 (build-system ruby-build-system)
8358 (arguments
8359 `(#:test-target "spec"))
8360 (native-inputs
8361 `(("ruby-rspec" ,ruby-rspec)))
8362 (synopsis "Cucumber tag expressions for Ruby")
8363 (description "Cucumber tag expression parser for Ruby. A tag expression
8364is an infix boolean expression used by Cucumber.")
8365 (home-page "https://github.com/cucumber/tag-expressions-ruby")
8366 (license license:expat)))
8367
8368(define-public ruby-bindex
8369 (package
8370 (name "ruby-bindex")
8371 (version "0.5.0")
8372 (source
8373 (origin
8374 (method url-fetch)
8375 (uri (rubygems-uri "bindex" version))
8376 (sha256
8377 (base32
8378 "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
8379 (build-system ruby-build-system)
8380 (arguments
8381 '(#:test-target "default"))
8382 (native-inputs
8383 `(("bundler" ,bundler)
8384 ("ruby-rake-compiler" ,ruby-rake-compiler)))
8385 (synopsis "Provides access for bindings relating to Ruby exceptions")
8386 (description
8387 "@code{bindex} provides a way to access the bindings that relate to
8388exceptions in Ruby, providing more information about the context in which the
8389exception occurred.")
8390 (home-page "https://github.com/gsamokovarov/bindex")
8391 (license license:expat)))
8392
8393(define-public ruby-bio-logger
8394 (package
8395 (name "ruby-bio-logger")
8396 (version "1.0.1")
8397 (source
8398 (origin
8399 (method url-fetch)
8400 (uri (rubygems-uri "bio-logger" version))
8401 (sha256
8402 (base32
8403 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
8404 (build-system ruby-build-system)
8405 (arguments
8406 `(#:tests? #f)) ; rake errors, missing shoulda
8407 (propagated-inputs
8408 `(("ruby-log4r" ,ruby-log4r)))
8409 (synopsis "Log4r wrapper for Ruby")
8410 (description "Bio-logger is a wrapper around Log4r adding extra logging
8411features such as filtering and fine grained logging.")
8412 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
8413 (license license:expat)))
8414
8415(define-public ruby-yajl-ruby
8416 (package
8417 (name "ruby-yajl-ruby")
8418 (version "1.4.1")
8419 (source
8420 (origin
8421 (method url-fetch)
8422 (uri (rubygems-uri "yajl-ruby" version))
8423 (sha256
8424 (base32
8425 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
8426 (build-system ruby-build-system)
8427 (arguments
8428 '(#:test-target "spec"
8429 #:phases
8430 (modify-phases %standard-phases
8431 (add-before 'check 'patch-test-to-update-load-path
8432 (lambda _
8433 (substitute* "spec/parsing/large_number_spec.rb"
8434 (("require \"yajl\"")
8435 "$LOAD_PATH << 'lib'; require 'yajl'"))
8436 #t)))))
8437 (native-inputs
8438 `(("ruby-rake-compiler" ,ruby-rake-compiler)
8439 ("ruby-rspec" ,ruby-rspec)))
8440 (synopsis "Streaming JSON parsing and encoding library for Ruby")
8441 (description
8442 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
8443is compatible with the JSON gem, so yajl-ruby can act as a drop in
8444replacement.
8445
8446A modified copy of yajl is used, and included in the package.")
8447 (home-page "https://github.com/brianmario/yajl-ruby")
8448 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
8449 license:bsd-3)))) ; Included, modified copy of yajl
8450
8451(define-public ruby-yard
8452 (package
8453 (name "ruby-yard")
8454 (version "0.9.25")
8455 (source
8456 (origin
8457 (method git-fetch)
8458 ;; Tests do not pass if we build from the distributed gem.
8459 (uri (git-reference
8460 (url "https://github.com/lsegal/yard")
8461 (commit (string-append "v" version))))
8462 (file-name (git-file-name name version))
8463 (sha256
8464 (base32
8465 "1x7y4s557hrnq439lih7nqg1y7ximardw75jx9i92x3yzpviqqwa"))))
8466 (build-system ruby-build-system)
8467 (arguments
8468 ;; Note: Tests are willfully disabled to alleviate dependency cycle
8469 ;; problems.
8470 `(#:tests? #f
8471 #:phases (modify-phases %standard-phases
8472 (add-after 'unpack 'do-not-set-date-in-gemspec
8473 ;; Fix a reproducibility issue (see:
8474 ;; https://github.com/lsegal/yard/issues/1343).
8475 (lambda _
8476 (substitute* "yard.gemspec"
8477 ((".*s\\.date.*") ""))
8478 #t)))))
8479 (synopsis "Documentation generation tool for Ruby")
8480 (description "YARD is a documentation generation tool for the Ruby
8481programming language. It enables the user to generate consistent, usable
8482documentation that can be exported to a number of formats very easily, and
8483also supports extending for custom Ruby constructs such as custom class level
8484definitions.")
8485 (home-page "https://yardoc.org")
8486 (license license:expat)))
8487
8488(define-public ruby-yard-with-tests
8489 (package
8490 (inherit ruby-yard)
8491 (name "ruby-yard-with-tests")
8492 (arguments
8493 (substitute-keyword-arguments (package-arguments ruby-yard)
8494 ((#:tests? _ #t) #t)
8495 ((#:test-target _ "default") "default")
8496 ((#:phases phases '%standard-phases)
8497 `(modify-phases ,phases
8498 (add-before 'check 'prepare-for-tests
8499 (lambda* (#:key tests? #:allow-other-keys)
8500 (when tests?
8501 (substitute* "Rakefile"
8502 ((".*[Ss]amus.*") ""))
8503 ;; Delete the Gemfile to avoid errors relating to it.
8504 (delete-file "Gemfile")
8505 ;; $HOME needs to be set to somewhere writeable for tests to
8506 ;; run.
8507 (setenv "HOME" "/tmp"))
8508 #t))))))
8509 (native-inputs
8510 `(("ruby-rspec" ,ruby-rspec)
8511 ("ruby-rack" ,ruby-rack)
8512 ("ruby-redcloth" ,ruby-redcloth)
8513 ("ruby-asciidoc" ,ruby-asciidoctor)))))
8514
8515(define-public ruby-spectroscope
8516 (package
8517 (name "ruby-spectroscope")
8518 (version "0.1.0")
8519 (source
8520 (origin
8521 (method url-fetch)
8522 (uri (rubygems-uri "spectroscope" version))
8523 (sha256
8524 (base32
8525 "0iiid9sm110qhx0i1zkds710cvsnmhd308wbqa7slkzbq2akrb3y"))))
8526 (build-system ruby-build-system)
8527 (arguments
8528 `(#:phases
8529 (modify-phases %standard-phases
8530 (replace 'check
8531 (lambda _
8532 (with-output-to-file ".test"
8533 (lambda _
8534 (display
8535 "\
8536require 'ae/should'
8537require 'rspec'
8538
8539include RSpec
8540
8541Test.run :default do |run|
8542 run.files << 'spec/*_spec.rb'
8543end")))
8544 (invoke "ruby" "-Ilib" "-rrubytest" ".test"))))))
8545 (native-inputs
8546 `(("ruby-ae" ,ruby-ae)
8547 ("ruby-rspec" ,ruby-rspec)))
8548 (propagated-inputs
8549 `(("ruby-rubytest" ,ruby-rubytest)))
8550 (synopsis "Behavior-Driven Development (BDD) framework built on RubyTest")
8551 (description "Spectroscope is a Behavior-Driven Development (BDD)
8552framework built on RubyTest, designed to emulate RSpec in most respects. It
8553is assertion framework independent so any number of assertion systems can be
8554used, such as Assay or AE.")
8555 (home-page "http://rubyworks.github.com/spectroscope/")
8556 (license license:bsd-2)))
8557
8558(define-public ruby-tomparse
8559 (package
8560 (name "ruby-tomparse")
8561 (version "0.4.2")
8562 (source
8563 (origin
8564 (method url-fetch)
8565 (uri (rubygems-uri "tomparse" version))
8566 (sha256
8567 (base32
8568 "06xakk41f1kgj6j1ahkwn4r6cvidixvm4phhlrvmwb7c3pr8ygc8"))))
8569 (build-system ruby-build-system)
8570 ;; TODO: Tests require citron and rulebow, not yet packaged.
8571 (arguments '(#:tests? #f))
8572 (synopsis "TomDoc parser for Ruby")
8573 (description "TomParse is a TomDoc parser for Ruby. It takes a code
8574comment as input and parses it into a convenient object-oriented structure in
8575accordance with the TomDoc standard. See
8576@url{https://github.com/mojombo/tomdoc, TomDoc} for more information about the
8577TomDoc format.")
8578 (home-page "http://rubyworks.github.com/tomparse/")
8579 (license license:bsd-2)))
8580
8581(define-public ruby-yard-tomdoc
8582 (package
8583 (name "ruby-yard-tomdoc")
8584 (version "0.7.1")
8585 (source
8586 (origin
8587 (method url-fetch)
8588 (uri (rubygems-uri "yard-tomdoc" version))
8589 (sha256
8590 (base32
8591 "1725gs8b8klpwhrvnf2wwp7dw3zxs9vz2la983l2d8c4r4fn1j2z"))))
8592 (build-system ruby-build-system)
8593 (arguments
8594 `(#:phases (modify-phases %standard-phases
8595 (replace 'check
8596 (lambda _
8597 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
8598 (native-inputs
8599 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
8600 ("ruby-spectroscope" ,ruby-spectroscope)
8601 ("ruby-ae" ,ruby-ae)))
8602 (propagated-inputs
8603 `(("ruby-tomparse" ,ruby-tomparse)
8604 ("ruby-yard" ,ruby-yard)))
8605 (synopsis "TomDoc syntax for YARD")
8606 (description "This module adds support for the TomDoc documentation format
8607to YARD, a documentation generation tool for Ruby.")
8608 (home-page "http://rubyworks.github.com/yard-tomdoc/")
8609 (license license:expat)))
8610
8611(define-public ruby-clap
8612 (package
8613 (name "ruby-clap")
8614 (version "1.0.0")
8615 (source (origin
8616 (method url-fetch)
8617 (uri (rubygems-uri "clap" version))
8618 (sha256
8619 (base32
8620 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
8621 (build-system ruby-build-system)
8622 ;; Clap needs cutest for running tests, but cutest needs clap.
8623 (arguments `(#:tests? #f))
8624 (synopsis "Command line argument parsing for simple applications")
8625 (description
8626 "Clap provides command line argument parsing features. It covers the
8627simple case of executing code based on the flags or parameters passed.")
8628 (home-page "https://github.com/djanowski/cutest")
8629 (license license:expat)))
8630
8631(define-public ruby-cutest
8632 (package
8633 (name "ruby-cutest")
8634 (version "1.2.2")
8635 (source (origin
8636 (method url-fetch)
8637 (uri (rubygems-uri "cutest" version))
8638 (sha256
8639 (base32
8640 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
8641 (build-system ruby-build-system)
8642 (propagated-inputs
8643 `(("ruby-clap" ,ruby-clap)))
8644 (synopsis "Run tests in separate processes")
8645 (description
8646 "Cutest runs tests in separate processes to avoid shared state.")
8647 (home-page "https://github.com/djanowski/cutest")
8648 (license license:expat)))
8649
8650(define-public ruby-pygmentize
8651 (package
8652 (name "ruby-pygmentize")
8653 (version "0.0.3")
8654 (source (origin
8655 (method url-fetch)
8656 (uri (rubygems-uri "pygmentize" version))
8657 (sha256
8658 (base32
8659 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
8660 (build-system ruby-build-system)
8661 (arguments
8662 `(#:phases
8663 (modify-phases %standard-phases
8664 (add-after 'unpack 'fix-pygmentize-path
8665 (lambda _
8666 (substitute* "lib/pygmentize.rb"
8667 (("\"/usr/bin/env python.*")
8668 (string-append "\"" (which "pygmentize") "\"\n")))
8669 #t))
8670 (add-after 'build 'do-not-use-vendor-directory
8671 (lambda _
8672 ;; Remove bundled pygments sources
8673 ;; FIXME: ruby-build-system does not support snippets.
8674 (delete-file-recursively "vendor")
8675 (substitute* "pygmentize.gemspec"
8676 (("\"vendor/\\*\\*/\\*\",") ""))
8677 #t)))))
8678 (inputs
8679 `(("pygments" ,python-pygments)))
8680 (native-inputs
8681 `(("ruby-cutest" ,ruby-cutest)
8682 ("ruby-nokogiri" ,ruby-nokogiri)))
8683 (synopsis "Thin Ruby wrapper around pygmentize")
8684 (description
8685 "Pygmentize provides a simple way to call pygmentize from within a Ruby
8686application.")
8687 (home-page "https://github.com/djanowski/pygmentize")
8688 (license license:expat)))
8689
8690(define-public ruby-eventmachine
8691 (package
8692 (name "ruby-eventmachine")
8693 (version "1.2.7")
8694 (source
8695 (origin
8696 (method url-fetch)
8697 (uri (rubygems-uri "eventmachine" version))
8698 (sha256
8699 (base32
8700 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
8701 (build-system ruby-build-system)
8702 (arguments
8703 '(#:tests? #f)) ; test suite tries to connect to google.com
8704 (native-inputs
8705 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
8706 (synopsis "Single-threaded network event framework for Ruby")
8707 (description
8708 "EventMachine implements a single-threaded engine for arbitrary network
8709communications. EventMachine wraps all interactions with sockets, allowing
8710programs to concentrate on the implementation of network protocols. It can be
8711used to create both network servers and clients.")
8712 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
8713 (home-page "https://github.com/eventmachine/eventmachine")
8714 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
8715
8716(define-public ruby-ruby-engine
8717 (package
8718 (name "ruby-ruby-engine")
8719 (version "2.0.0")
8720 (source
8721 (origin
8722 (method url-fetch)
8723 (uri (rubygems-uri "ruby_engine" version))
8724 (sha256
8725 (base32
8726 "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm"))))
8727 (build-system ruby-build-system)
8728 (arguments
8729 `(#:phases
8730 (modify-phases %standard-phases
8731 (add-after 'extract-gemspec 'clean-up
8732 (lambda _
8733 (delete-file "Gemfile.lock")
8734 (substitute* "ruby_engine.gemspec"
8735 ;; Remove unnecessary imports that would entail further
8736 ;; dependencies.
8737 ((".*<rdoc.*") "")
8738 ((".*<rubygems-tasks.*") "")
8739 ;; Remove extraneous .gem file
8740 (("\"pkg/ruby_engine-[0-9.]+\\.gem\".freeze, ") "")
8741 (("\"Gemfile.lock\".freeze, ") "")
8742 ;; Soften rake dependency
8743 (("%q<rake>.freeze, \\[\"~> 10.0\"\\]")
8744 "%q<rake>.freeze, [\">= 10.0\"]")
8745 ;; Soften the rspec dependency
8746 (("%q<rspec>.freeze, \\[\"~> 2.4\"\\]")
8747 "%q<rspec>.freeze, [\">= 2.4\"]"))
8748 (substitute* "Rakefile"
8749 (("require 'rubygems/tasks'") "")
8750 (("Gem::Tasks.new") ""))
8751 ;; Remove extraneous .gem file that otherwise gets installed.
8752 (delete-file-recursively "pkg")
8753 #t)))))
8754 (native-inputs
8755 `(("bundler" ,bundler)
8756 ("ruby-rake" ,ruby-rake)
8757 ("ruby-rspec" ,ruby-rspec)))
8758 (synopsis "Simplifies checking for Ruby implementation")
8759 (description
8760 "@code{ruby_engine} provides an RubyEngine class that can be used to
8761check which implementation of Ruby is in use. It can provide the interpreter
8762name and provides query methods such as @{RubyEngine.mri?}.")
8763 (home-page "https://github.com/janlelis/ruby_engine")
8764 (license license:expat)))
8765
8766(define-public ruby-turn
8767 (package
8768 (name "ruby-turn")
8769 (version "0.9.7")
8770 (source
8771 (origin
8772 (method url-fetch)
8773 (uri (rubygems-uri "turn" version))
8774 (sha256
8775 (base32
8776 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
8777 (build-system ruby-build-system)
8778 (arguments
8779 `(#:phases
8780 (modify-phases %standard-phases
8781 ;; Tests fail because turn changes its environment so can no longer
8782 ;; find test/unit. Instead simply test if the executable runs
8783 ;; without issue.
8784 (replace 'check
8785 (lambda _
8786 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
8787 (propagated-inputs
8788 `(("ruby-ansi" ,ruby-ansi)
8789 ("ruby-minitest" ,ruby-minitest-4)))
8790 (synopsis "Alternate set of alternative runners for MiniTest")
8791 (description
8792 "TURN provides a set of alternative runners for MiniTest which are both
8793colorful and informative. TURN displays each test on a separate line with
8794failures being displayed immediately instead of at the end of the tests. Note
8795that TURN is no longer being maintained.")
8796 (home-page "https://rubygems.org/gems/turn")
8797 (license license:expat)))
8798
8799(define-public ruby-mimemagic
8800 (package
8801 (name "ruby-mimemagic")
8802 (version "0.3.3")
8803 (source
8804 (origin
8805 (method url-fetch)
8806 (uri (rubygems-uri "mimemagic" version))
8807 (sha256
8808 (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw"))))
8809 (build-system ruby-build-system)
8810 (arguments
8811 '(#:phases
8812 (modify-phases %standard-phases
8813 ;; This phase breaks the tests, as it patches some of the test data.
8814 (delete 'patch-source-shebangs))))
8815 (native-inputs
8816 `(("ruby-bacon" ,ruby-bacon)))
8817 (synopsis "Ruby library for MIME detection by extension or content")
8818 (description
8819 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
8820extension or content, using the freedesktop.org.xml shared-mime-info
8821database.")
8822 (home-page "https://github.com/minad/mimemagic")
8823 (license license:expat)))
8824
8825(define-public ruby-mime-types-data
8826 (package
8827 (name "ruby-mime-types-data")
8828 (version "3.2016.0521")
8829 (source
8830 (origin
8831 (method url-fetch)
8832 (uri (rubygems-uri "mime-types-data" version))
8833 (sha256
8834 (base32
8835 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
8836 (build-system ruby-build-system)
8837 (native-inputs
8838 `(("ruby-hoe" ,ruby-hoe)))
8839 (synopsis "Registry for information about MIME media type definitions")
8840 (description
8841 "@code{mime-types-data} provides a registry for information about
8842Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
8843be used with the Ruby mime-types library or other software to determine
8844defined filename extensions for MIME types, or to use filename extensions to
8845look up the likely MIME type definitions.")
8846 (home-page "https://github.com/mime-types/mime-types-data/")
8847 (license license:expat)))
8848
8849(define-public ruby-mime-types
8850 (package
8851 (name "ruby-mime-types")
8852 (version "3.1")
8853 (source
8854 (origin
8855 (method url-fetch)
8856 (uri (rubygems-uri "mime-types" version))
8857 (sha256
8858 (base32
8859 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
8860 (build-system ruby-build-system)
8861 (propagated-inputs
8862 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
8863 (native-inputs
8864 `(("ruby-hoe" ,ruby-hoe)
8865 ("ruby-fivemat" ,ruby-fivemat)
8866 ("ruby-minitest-focus" ,ruby-minitest-focus)
8867 ("ruby-minitest-rg" ,ruby-minitest-rg)
8868 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
8869 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
8870 (synopsis "Library and registry for MIME content type definitions")
8871 (description "The mime-types library provides a library and registry for
8872information about Multipurpose Internet Mail Extensions (MIME) content type
8873definitions. It can be used to determine defined filename extensions for MIME
8874types, or to use filename extensions to look up the likely MIME type
8875definitions.")
8876 (home-page "https://github.com/mime-types/ruby-mime-types")
8877 (license license:expat)))
8878
8879(define-public ruby-mini-mime
8880 (package
8881 (name "ruby-mini-mime")
8882 (version "1.0.2")
8883 (source
8884 (origin
8885 (method url-fetch)
8886 (uri (rubygems-uri "mini_mime" version))
8887 (sha256
8888 (base32
8889 "1axm0rxyx3ss93wbmfkm78a6x03l8y4qy60rhkkiq0aza0vwq3ha"))))
8890 (build-system ruby-build-system)
8891 (synopsis "Lightweight mime type lookup toy")
8892 (description "This package provides a lightweight mime type lookup toy.")
8893 (home-page "https://github.com/discourse/mini_mime")
8894 (license license:expat)))
8895
8896(define-public ruby-fivemat
8897 (package
8898 (name "ruby-fivemat")
8899 (version "1.3.7")
8900 (source
8901 (origin
8902 (method url-fetch)
8903 (uri (rubygems-uri "fivemat" version))
8904 (sha256
8905 (base32
8906 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
8907 (build-system ruby-build-system)
8908 (arguments
8909 `(#:tests? #f)) ; no tests
8910 (synopsis "Each test file given its own line of dots")
8911 (description
8912 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
8913its own line of dots during testing. It aims to provide test output that is
8914neither too verbose nor too minimal.")
8915 (home-page "https://github.com/tpope/fivemat")
8916 (license license:expat)))
8917
8918(define-public ruby-sqlite3
8919 (package
8920 (name "ruby-sqlite3")
8921 (version "1.4.2")
8922 (source
8923 (origin
8924 (method url-fetch)
8925 (uri (rubygems-uri "sqlite3" version))
8926 (sha256
8927 (base32
8928 "0lja01cp9xd5m6vmx99zwn4r7s97r1w5cb76gqd8xhbm1wxyzf78"))))
8929 (build-system ruby-build-system)
8930 (arguments
8931 `(#:phases
8932 (modify-phases %standard-phases
8933 (add-before 'check 'add-gemtest-file
8934 ;; This file exists in the repository but is not distributed.
8935 (lambda _ (invoke "touch" ".gemtest"))))))
8936 (inputs
8937 `(("sqlite" ,sqlite)))
8938 (native-inputs
8939 `(("ruby-hoe" ,ruby-hoe)
8940 ("ruby-rake-compiler" ,ruby-rake-compiler)
8941 ("ruby-mini-portile" ,ruby-mini-portile)))
8942 (synopsis "Interface with SQLite3 databases")
8943 (description
8944 "This module allows Ruby programs to interface with the SQLite3 database
8945engine.")
8946 (home-page
8947 "https://github.com/sparklemotion/sqlite3-ruby")
8948 (license license:bsd-3)))
8949
8950(define-public ruby-shoulda-context
8951 (package
8952 (name "ruby-shoulda-context")
8953 (version "1.2.2")
8954 (source
8955 (origin
8956 (method url-fetch)
8957 (uri (rubygems-uri "shoulda-context" version))
8958 (sha256
8959 (base32
8960 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
8961 (build-system ruby-build-system)
8962 (arguments
8963 `(#:phases
8964 (modify-phases %standard-phases
8965 (replace 'check
8966 (lambda _
8967 ;; Do not run tests to avoid circular dependence with rails.
8968 ;; Instead just import the library to test.
8969 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
8970 (synopsis "Test::Unit context framework extracted from Shoulda")
8971 (description
8972 "@code{shoulda-context} is the context framework extracted from Shoulda.
8973Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
8974context, setup, and should blocks combine to produce natural test method
8975names.")
8976 (home-page "https://github.com/thoughtbot/shoulda-context")
8977 (license license:expat)))
8978
8979(define-public ruby-shoulda-matchers
8980 (package
8981 (name "ruby-shoulda-matchers")
8982 (version "3.1.2")
8983 (source
8984 (origin
8985 (method url-fetch)
8986 (uri (rubygems-uri "shoulda-matchers" version))
8987 (sha256
8988 (base32
8989 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
8990 (build-system ruby-build-system)
8991 (arguments
8992 `(#:phases
8993 (modify-phases %standard-phases
8994 (replace 'check
8995 (lambda _
8996 ;; Do not run tests to avoid circular dependence with rails. Instead
8997 ;; just import the library to test.
8998 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
8999 (propagated-inputs
9000 `(("ruby-activesupport" ,ruby-activesupport)))
9001 (synopsis "Collection of testing matchers extracted from Shoulda")
9002 (description
9003 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
9004test common Rails functionality. These tests would otherwise be much longer,
9005more complex, and error-prone.")
9006 (home-page "https://github.com/thoughtbot/shoulda-matchers")
9007 (license license:expat)))
9008
9009(define-public ruby-shoulda-matchers-2
9010 (package
9011 (inherit ruby-shoulda-matchers)
9012 (version "2.8.0")
9013 (source (origin
9014 (method url-fetch)
9015 (uri (rubygems-uri "shoulda-matchers" version))
9016 (sha256
9017 (base32
9018 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
9019
9020(define-public ruby-shoulda
9021 (package
9022 (name "ruby-shoulda")
9023 (version "3.5.0")
9024 (source
9025 (origin
9026 (method url-fetch)
9027 (uri (rubygems-uri "shoulda" version))
9028 (sha256
9029 (base32
9030 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
9031 (build-system ruby-build-system)
9032 (arguments
9033 `(#:phases
9034 (modify-phases %standard-phases
9035 (replace 'check
9036 ;; Don't run tests to avoid circular dependence with rails. Instead
9037 ;; just import the library to test.
9038 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
9039 (propagated-inputs
9040 `(("ruby-shoulda-context" ,ruby-shoulda-context)
9041 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
9042 (synopsis "Context framework and matchers for testing")
9043 (description
9044 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
9045@code{shoulda-matchers} providing tools for writing tests.")
9046 (home-page "https://github.com/thoughtbot/shoulda")
9047 (license license:expat)))
9048
9049(define-public ruby-unf
9050 (package
9051 (name "ruby-unf")
9052 (version "0.1.4")
9053 (source
9054 (origin
9055 (method url-fetch)
9056 (uri (rubygems-uri "unf" version))
9057 (sha256
9058 (base32
9059 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
9060 (build-system ruby-build-system)
9061 (arguments
9062 `(#:phases
9063 (modify-phases %standard-phases
9064 (add-before 'check 'add-dependency-to-bundler
9065 (lambda _
9066 ;; test-unit is required but not provided by the bundler
9067 ;; environment. This is fixed in the upstream repository but fix
9068 ;; has not been released.
9069 (substitute* "Gemfile"
9070 (("^gemspec") "gem 'test-unit'\ngemspec"))
9071 #t)))))
9072 (propagated-inputs
9073 `(("ruby-unf-ext" ,ruby-unf-ext)))
9074 (native-inputs
9075 `(("ruby-shoulda" ,ruby-shoulda)
9076 ("bundler" ,bundler)
9077 ("ruby-test-unit" ,ruby-test-unit)))
9078 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
9079 (description
9080 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
9081support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
9082@code{java.text.Normalizer} on JRuby.")
9083 (home-page "https://github.com/knu/ruby-unf")
9084 (license license:bsd-2)))
9085
9086(define-public ruby-warden
9087 (package
9088 (name "ruby-warden")
9089 (version "1.2.8")
9090 (source
9091 (origin
9092 (method url-fetch)
9093 (uri (rubygems-uri "warden" version))
9094 (sha256
9095 (base32
9096 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
9097 (build-system ruby-build-system)
9098 (arguments
9099 '(#:tests? #f)) ; No included tests
9100 (propagated-inputs
9101 `(("ruby-rack" ,ruby-rack)))
9102 (synopsis "Rack middleware providing authentication")
9103 (description
9104 "Warden is a Rack-based middleware that provides a mechanism for
9105authentication in Ruby web applications.")
9106 (home-page "https://github.com/wardencommunity/warden")
9107 (license license:expat)))
9108
9109(define-public ruby-warden-oauth2
9110 (package
9111 (name "ruby-warden-oauth2")
9112 (version "0.0.1")
9113 (source
9114 (origin
9115 (method url-fetch)
9116 (uri (rubygems-uri "warden-oauth2" version))
9117 (sha256
9118 (base32
9119 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
9120 (build-system ruby-build-system)
9121 (arguments
9122 '(#:test-target "spec"
9123 #:phases
9124 (modify-phases %standard-phases
9125 (add-after 'unpack 'remove-unnecessary-dependencies
9126 (lambda _
9127 (substitute* "Gemfile"
9128 ;; All of these gems relate to development, and are unnecessary
9129 ;; when running the tests
9130 (("gem 'guard-bundler'") "")
9131 (("gem 'guard'") "")
9132 (("gem 'guard-rspec'") "")
9133 (("gem 'rb-fsevent'") "")
9134 (("gem 'pry'") "")
9135 (("gem 'growl'") ""))
9136 #t))
9137 ;; The test suite doesn't work with rspec@2, and this is incompatible
9138 ;; with the current version of Rake, so invoke Rspec directly
9139 (replace 'check
9140 (lambda* (#:key tests? #:allow-other-keys)
9141 (when tests?
9142 (invoke "bundle" "exec" "rspec"))
9143 #t)))))
9144 (propagated-inputs
9145 `(("ruby-warden" ,ruby-warden)))
9146 (native-inputs
9147 `(("bundler" ,bundler)
9148 ("ruby-rspec" ,ruby-rspec-2)
9149 ("ruby-rack-test" ,ruby-rack-test)))
9150 (synopsis "OAuth 2.0 strategies for Warden")
9151 (description
9152 "This library extends Warden to support OAuth 2.0 authorized API
9153requests.")
9154 (home-page "https://github.com/opperator/warden-oauth2")
9155 (license license:expat)))
9156
9157(define-public ruby-webmock
9158 (package
9159 (name "ruby-webmock")
9160 (version "3.11.2")
9161 (source
9162 (origin
9163 (method url-fetch)
9164 (uri (rubygems-uri "webmock" version))
9165 (sha256
9166 (base32
9167 "1hdlbvfw316lkz251qnfk79drmaay7l51kidvicz41nhvw12xz8v"))))
9168 (build-system ruby-build-system)
9169 (native-inputs
9170 `(("bundler" ,bundler)
9171 ("ruby-rspec" ,ruby-rspec)))
9172 (propagated-inputs
9173 `(("ruby-addressable" ,ruby-addressable)
9174 ("ruby-crack" ,ruby-crack)
9175 ("ruby-hashdiff" ,ruby-hashdiff)))
9176 (synopsis "Allows stubbing and setting expectations on HTTP requests")
9177 (description
9178 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
9179requests. This is useful when testing software.")
9180 (home-page "https://github.com/bblimke/webmock")
9181 (license license:expat)))
9182
9183(define-public ruby-webmock-2
9184 (package
9185 (inherit ruby-webmock)
9186 (name "ruby-webmock")
9187 (version "2.3.2")
9188 (source
9189 (origin
9190 (method url-fetch)
9191 (uri (rubygems-uri "webmock" version))
9192 (sha256
9193 (base32
9194 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))))
9195
9196(define-public ruby-unicode-display-width
9197 (package
9198 (name "ruby-unicode-display-width")
9199 (version "1.6.0")
9200 (source
9201 (origin
9202 (method url-fetch)
9203 (uri (rubygems-uri "unicode-display_width" version))
9204 (sha256
9205 (base32
9206 "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w"))))
9207 (build-system ruby-build-system)
9208 (arguments
9209 '(;; Test data not included.
9210 #:tests? #f))
9211 (synopsis "Determine the monospace display width of Ruby strings")
9212 (description
9213 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
9214display width of strings in Ruby.")
9215 (home-page "https://github.com/janlelis/unicode-display_width")
9216 (license license:expat)))
9217
9218;; There is another gem called 'ruby-version' so we use an underscore in this
9219;; name
9220(define-public ruby_version
9221 (package
9222 (name "ruby_version")
9223 (version "1.0.2")
9224 (source
9225 (origin
9226 (method url-fetch)
9227 (uri (rubygems-uri "ruby_version" version))
9228 (sha256
9229 (base32
9230 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
9231 (build-system ruby-build-system)
9232 (arguments
9233 `(#:phases
9234 (modify-phases %standard-phases
9235 (add-before 'check 'fix-dependencies
9236 (lambda _
9237 ;; Remove the Gemfile.lock, as we want to use Guix packages at
9238 ;; whatever versions.
9239 (delete-file "Gemfile.lock")
9240 ;; Remove the included gem files as they unnecessary.
9241 (delete-file-recursively "pkg/")
9242 ;; Accept any version of rake, rdoc and rspec
9243 (substitute* "ruby_version.gemspec"
9244 (("%q<rake.*") "%q<rake>)\n")
9245 (("%q<rdoc.*") "%q<rdoc>)\n")
9246 (("%q<rspec.*") "%q<rspec>)\n"))
9247 ;; Do not use bundler.
9248 (substitute* "Rakefile"
9249 (("Bundler\\.setup.*") "nil\n"))
9250 #t)))))
9251 (native-inputs
9252 `(("ruby-rdoc" ,ruby-rdoc)
9253 ("ruby-rspec" ,ruby-rspec)
9254 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
9255 (synopsis "Ruby library to help check the Ruby version")
9256 (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify
9257checking for the right Ruby version in software.")
9258 (home-page "https://github.com/janlelis/ruby_version")
9259 (license license:expat)))
9260
9261(define-public ruby-websocket-driver
9262 (package
9263 (name "ruby-websocket-driver")
9264 (version "0.7.1")
9265 (source
9266 (origin
9267 (method url-fetch)
9268 (uri (rubygems-uri "websocket-driver" version))
9269 (sha256
9270 (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2"))))
9271 (build-system ruby-build-system)
9272 (arguments
9273 '(#:tests? #f)) ; no included tests
9274 (propagated-inputs
9275 `(("ruby-websocket-extensions" ,ruby-websocket-extensions)))
9276 (synopsis "WebSocket protocol handler with pluggable I/O")
9277 (description
9278 "@code{websocket-driver} provides a complete implementation of the
9279WebSocket protocols that can be hooked up to any TCP library")
9280 (home-page "https://github.com/faye/websocket-driver-ruby")
9281 (license license:expat)))
9282
9283(define-public ruby-websocket-extensions
9284 (package
9285 (name "ruby-websocket-extensions")
9286 (version "0.1.3")
9287 (source
9288 (origin
9289 (method url-fetch)
9290 (uri (rubygems-uri "websocket-extensions" version))
9291 (sha256
9292 (base32
9293 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
9294 (build-system ruby-build-system)
9295 (arguments
9296 '(;; No included tests
9297 #:tests? #f))
9298 (synopsis "Generic extension manager for WebSocket connections")
9299 (description
9300 "@code{websocket-extensions} provides a container for registering
9301extension plugins.")
9302 (home-page "https://github.com/faye/websocket-extensions-ruby")
9303 (license license:expat)))
9304
9305(define-public ruby-domain-name
9306 (package
9307 (name "ruby-domain-name")
9308 (version "0.5.20190701")
9309 (source
9310 (origin
9311 (method url-fetch)
9312 (uri (rubygems-uri "domain_name" version))
9313 (sha256
9314 (base32 "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0"))))
9315 (build-system ruby-build-system)
9316 (arguments
9317 `(#:phases
9318 (modify-phases %standard-phases
9319 (add-before 'check 'fix-versions
9320 (lambda _
9321 ;; Fix NameError that appears to already be fixed upstream.
9322 (substitute* "Rakefile"
9323 (("DomainName::VERSION")
9324 "Bundler::GemHelper.gemspec.version"))
9325 ;; Loosen unnecessarily strict test-unit version specification.
9326 (substitute* "domain_name.gemspec"
9327 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
9328 #t)))))
9329 (propagated-inputs
9330 `(("ruby-unf" ,ruby-unf)))
9331 (native-inputs
9332 `(("ruby-shoulda" ,ruby-shoulda)
9333 ("bundler" ,bundler)
9334 ("ruby-test-unit" ,ruby-test-unit)))
9335 (synopsis "Domain name manipulation library")
9336 (description
9337 "@code{domain_name} is a Domain name manipulation library. It parses a
9338domain name ready for extracting the registered domain and TLD (Top Level
9339Domain). It can also be used for cookie domain validation based on the Public
9340Suffix List.")
9341 (home-page "https://github.com/knu/ruby-domain_name")
9342 (license license:bsd-2)))
9343
9344(define-public ruby-http-cookie
9345 (package
9346 (name "ruby-http-cookie")
9347 (version "1.0.3")
9348 (source
9349 (origin
9350 (method url-fetch)
9351 (uri (rubygems-uri "http-cookie" version))
9352 (sha256
9353 (base32
9354 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
9355 (build-system ruby-build-system)
9356 (arguments
9357 `(#:phases
9358 (modify-phases %standard-phases
9359 (add-before 'check 'add-dependency-to-bundler
9360 (lambda _
9361 ;; Fix NameError
9362 (substitute* "Rakefile"
9363 (("HTTP::Cookie::VERSION")
9364 "Bundler::GemHelper.gemspec.version"))
9365 #t)))))
9366 (propagated-inputs
9367 `(("ruby-domain-name" ,ruby-domain-name)))
9368 (native-inputs
9369 `(("rubysimplecov" ,ruby-simplecov)
9370 ("bundler" ,bundler)
9371 ("ruby-sqlite3" ,ruby-sqlite3)
9372 ("ruby-test-unit" ,ruby-test-unit)))
9373 (synopsis "Handle HTTP Cookies based on RFC 6265")
9374 (description
9375 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
9376RFC 6265. It has been designed with security, standards compliance and
9377compatibility in mind, to behave just the same as today's major web browsers.
9378It has built-in support for the legacy @code{cookies.txt} and
9379@code{cookies.sqlite} formats of Mozilla Firefox.")
9380 (home-page "https://github.com/sparklemotion/http-cookie")
9381 (license license:expat)))
9382
9383(define-public ruby-httpclient
9384 (package
9385 (name "ruby-httpclient")
9386 (version "2.8.3")
9387 (source
9388 (origin
9389 (method url-fetch)
9390 (uri (rubygems-uri "httpclient" version))
9391 (sha256
9392 (base32
9393 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
9394 (build-system ruby-build-system)
9395 (arguments
9396 '(;; TODO: Some tests currently fail
9397 ;; ------
9398 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
9399 ;; 2 omissions, 0 notifications
9400 ;; 91.866% passed
9401 ;; ------
9402 ;; 6.49 tests/s, 22.41 assertions/s
9403 #:tests? #f
9404 #:phases
9405 (modify-phases %standard-phases
9406 (replace 'check
9407 (lambda* (#:key tests? #:allow-other-keys)
9408 (if tests?
9409 (invoke "ruby"
9410 "-Ilib"
9411 "test/runner.rb")
9412 #t))))))
9413 (native-inputs
9414 `(("ruby-rack" ,ruby-rack)))
9415 (synopsis
9416 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
9417 (description
9418 "The @code{httpclient} ruby library provides functionality related to
9419HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
9420Cookie, multithreading and authentication (digest, NTLM) support.
9421
9422Also provided is a @command{httpclient} command, which can perform HTTP
9423requests either using arguments or with an interactive prompt.")
9424 (home-page "https://github.com/nahi/httpclient")
9425 (license license:ruby)))
9426
9427(define-public ruby-ansi
9428 (package
9429 (name "ruby-ansi")
9430 (version "1.5.0")
9431 (source
9432 (origin
9433 (method git-fetch)
9434 ;; Fetch from GitHub as the gem does not contain testing code.
9435 (uri (git-reference
9436 (url "https://github.com/rubyworks/ansi")
9437 (commit version)))
9438 (file-name (git-file-name name version))
9439 (sha256
9440 (base32
9441 "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5"))))
9442 (build-system ruby-build-system)
9443 (arguments
9444 `(#:phases
9445 (modify-phases %standard-phases
9446 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
9447 ;; cycle ansi, qed, ansi. Instead simply test that the library can
9448 ;; be require'd.
9449 (replace 'check
9450 (lambda _
9451 (invoke "ruby" "-Ilib" "-r" "ansi")))
9452 (add-before 'validate-runpath 'replace-broken-symlink
9453 (lambda* (#:key outputs #:allow-other-keys)
9454 (let* ((out (assoc-ref outputs "out"))
9455 (file (string-append
9456 out "/lib/ruby/vendor_ruby/gems/ansi-"
9457 ,version "/lib/ansi.yml")))
9458 ;; XXX: This symlink is broken since ruby 2.4.
9459 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
9460 (delete-file file)
9461 (symlink "../.index" file)
9462 #t))))))
9463 (synopsis "ANSI escape code related libraries")
9464 (description
9465 "This package is a collection of ANSI escape code related libraries
9466enabling ANSI colorization and stylization of console output. Included in the
9467library are the @code{Code} module, which defines ANSI codes as constants and
9468methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
9469@code{ProgressBar}, and a @code{String} subclass. The library also includes a
9470@code{Terminal} module which provides information about the current output
9471device.")
9472 (home-page "https://rubyworks.github.io/ansi/")
9473 (license license:bsd-2)))
9474
9475(define-public ruby-systemu
9476 (package
9477 (name "ruby-systemu")
9478 (version "2.6.5")
9479 (source
9480 (origin
9481 (method url-fetch)
9482 (uri (rubygems-uri "systemu" version))
9483 (sha256
9484 (base32
9485 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
9486 (build-system ruby-build-system)
9487 (arguments
9488 `(#:phases
9489 (modify-phases %standard-phases
9490 (add-before 'check 'set-version
9491 (lambda _
9492 (setenv "VERSION" ,version)
9493 #t)))))
9494 (synopsis "Capture of stdout/stderr and handling of child processes")
9495 (description
9496 "Systemu can be used on any platform to return status, stdout, and stderr
9497of any command. Unlike other methods like @code{open3} and @code{popen4}
9498there is no danger of full pipes or threading issues hanging your process or
9499subprocess.")
9500 (home-page "https://github.com/ahoward/systemu")
9501 (license license:ruby)))
9502
9503(define-public ruby-bio-commandeer
9504 (package
9505 (name "ruby-bio-commandeer")
9506 (version "0.4.0")
9507 (source
9508 (origin
9509 (method url-fetch)
9510 (uri (rubygems-uri "bio-commandeer" version))
9511 (sha256
9512 (base32
9513 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
9514 (build-system ruby-build-system)
9515 (arguments
9516 `(#:phases
9517 (modify-phases %standard-phases
9518 (replace 'check
9519 ;; Run test without calling 'rake' so that jeweler is
9520 ;; not required as an input.
9521 (lambda _
9522 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
9523 (propagated-inputs
9524 `(("ruby-bio-logger" ,ruby-bio-logger)
9525 ("ruby-systemu" ,ruby-systemu)))
9526 (native-inputs
9527 `(("bundler" ,bundler)
9528 ("ruby-rspec" ,ruby-rspec)))
9529 (synopsis "Simplified running of shell commands from within Ruby")
9530 (description
9531 "Bio-commandeer provides an opinionated method of running shell commands
9532from within Ruby. The advantage of bio-commandeer over other methods of
9533running external commands is that when something goes wrong, messages printed
9534to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
9535detail to ease debugging.")
9536 (home-page "https://github.com/wwood/bioruby-commandeer")
9537 (license license:expat)))
9538
9539(define-public ruby-rubytest
9540 (package
9541 (name "ruby-rubytest")
9542 (version "0.8.1")
9543 (source
9544 (origin
9545 (method url-fetch)
9546 (uri (rubygems-uri "rubytest" version))
9547 (sha256
9548 (base32
9549 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
9550 (build-system ruby-build-system)
9551 (arguments
9552 ;; Disable regular testing to break the cycle rubytest, qed, brass,
9553 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
9554 ;; simply test that the library can be require'd.
9555 `(#:phases
9556 (modify-phases %standard-phases
9557 (replace 'check
9558 (lambda _
9559 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
9560 (propagated-inputs
9561 `(("ruby-ansi" ,ruby-ansi)))
9562 (synopsis "Universal test harness for Ruby")
9563 (description
9564 "Rubytest is a testing meta-framework for Ruby. It can handle any
9565compliant test framework and can run tests from multiple frameworks in a
9566single pass.")
9567 (home-page "https://rubyworks.github.io/rubytest")
9568 (license license:bsd-2)))
9569
9570(define-public ruby-brass
9571 (package
9572 (name "ruby-brass")
9573 (version "1.2.1")
9574 (source
9575 (origin
9576 (method url-fetch)
9577 (uri (rubygems-uri "brass" version))
9578 (sha256
9579 (base32
9580 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
9581 (build-system ruby-build-system)
9582 (arguments
9583 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
9584 ;; Instead simply test that the library can be require'd.
9585 `(#:phases
9586 (modify-phases %standard-phases
9587 (replace 'check
9588 (lambda _
9589 (invoke "ruby" "-Ilib" "-r" "brass"))))))
9590 (synopsis "Basic foundational assertions framework")
9591 (description
9592 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
9593foundational assertions framework for other assertion and test frameworks to
9594make use of.")
9595 (home-page "https://rubyworks.github.io/brass")
9596 (license license:bsd-2)))
9597
9598(define-public ruby-qed
9599 (package
9600 (name "ruby-qed")
9601 (version "2.9.2")
9602 (source
9603 (origin
9604 (method url-fetch)
9605 (uri (rubygems-uri "qed" version))
9606 (sha256
9607 (base32
9608 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
9609 (build-system ruby-build-system)
9610 (arguments
9611 ;; Disable testing to break the cycle qed, ansi, qed, among others.
9612 ;; Instead simply test that the executable runs using --copyright.
9613 `(#:phases
9614 (modify-phases %standard-phases
9615 (replace 'check
9616 (lambda _
9617 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
9618 (propagated-inputs
9619 `(("ruby-ansi" ,ruby-ansi)
9620 ("ruby-brass" ,ruby-brass)))
9621 (synopsis "Test framework utilizing literate programming techniques")
9622 (description
9623 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
9624@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
9625Development} (BDD) utilizing Literate Programming techniques. QED sits
9626somewhere between lower-level testing tools like @code{Test::Unit} and
9627requirement specifications systems like Cucumber.")
9628 (home-page "https://rubyworks.github.io/qed")
9629 (license license:bsd-2)))
9630
9631(define-public ruby-que
9632 (package
9633 (name "ruby-que")
9634 (version "1.0.0.beta3")
9635 (source
9636 (origin
9637 (method url-fetch)
9638 (uri (rubygems-uri "que" version))
9639 (sha256
9640 (base32
9641 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
9642 (build-system ruby-build-system)
9643 (arguments
9644 '(#:tests? #f)) ; No included tests
9645 (synopsis "Job queue using PostgreSQL written in Ruby")
9646 (description
9647 "This package provides a job queue that uses PostgreSQL for storing jobs
9648and locking between worker processes.")
9649 (home-page "https://github.com/chanks/que")
9650 (license license:expat)))
9651
9652(define-public ruby-ae
9653 (package
9654 (name "ruby-ae")
9655 (version "1.8.2")
9656 (source
9657 (origin
9658 (method git-fetch)
9659 ;; Fetch from github so tests are included.
9660 (uri (git-reference
9661 (url "https://github.com/rubyworks/ae")
9662 (commit version)))
9663 (file-name (git-file-name name version))
9664 (sha256
9665 (base32
9666 "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp"))))
9667 (build-system ruby-build-system)
9668 (arguments
9669 `(#:phases
9670 (modify-phases %standard-phases
9671 (replace 'check
9672 (lambda _ (invoke "qed")))
9673 (add-before 'validate-runpath 'replace-broken-symlink
9674 (lambda* (#:key outputs #:allow-other-keys)
9675 (let* ((out (assoc-ref outputs "out"))
9676 (file (string-append
9677 out "/lib/ruby/vendor_ruby/gems/ae-"
9678 ,version "/lib/ae.yml")))
9679 ;; XXX: This symlink is broken since ruby 2.4.
9680 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
9681 (delete-file file)
9682 (symlink "../.index" file)
9683 #t))))))
9684 (propagated-inputs
9685 `(("ruby-ansi" ,ruby-ansi)))
9686 (native-inputs
9687 `(("ruby-qed" ,ruby-qed)))
9688 (synopsis "Assertions library")
9689 (description
9690 "Assertive Expressive (AE) is an assertions library specifically designed
9691for reuse by other test frameworks.")
9692 (home-page "https://rubyworks.github.io/ae/")
9693 (license license:bsd-2)))
9694
9695(define-public ruby-lemon
9696 (package
9697 (name "ruby-lemon")
9698 (version "0.9.1")
9699 (source
9700 (origin
9701 (method url-fetch)
9702 (uri (rubygems-uri "lemon" version))
9703 (sha256
9704 (base32
9705 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
9706 (build-system ruby-build-system)
9707 (arguments
9708 `(#:phases
9709 (modify-phases %standard-phases
9710 (replace 'check (lambda _ (invoke "qed"))))))
9711 (propagated-inputs
9712 `(("ruby-ae" ,ruby-ae)
9713 ("ruby-ansi" ,ruby-ansi)
9714 ("ruby-rubytest" ,ruby-rubytest)))
9715 (native-inputs
9716 `(("ruby-qed" ,ruby-qed)))
9717 (synopsis "Test framework correlating code structure and test unit")
9718 (description
9719 "Lemon is a unit testing framework that enforces highly formal
9720case-to-class and unit-to-method test construction. This enforcement can help
9721focus concern on individual units of behavior.")
9722 (home-page "https://rubyworks.github.io/lemon")
9723 (license license:bsd-2)))
9724
9725(define-public ruby-rubytest-cli
9726 (package
9727 (name "ruby-rubytest-cli")
9728 (version "0.2.0")
9729 (source
9730 (origin
9731 (method url-fetch)
9732 (uri (rubygems-uri "rubytest-cli" version))
9733 (sha256
9734 (base32
9735 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
9736 (build-system ruby-build-system)
9737 (arguments
9738 `(#:tests? #f)) ; no tests
9739 (propagated-inputs
9740 `(("ruby-ansi" ,ruby-ansi)
9741 ("ruby-rubytest" ,ruby-rubytest)))
9742 (synopsis "Command-line interface for rubytest")
9743 (description
9744 "Rubytest CLI is a command-line interface for running tests for
9745Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
9746 (home-page "https://rubyworks.github.io/rubytest-cli")
9747 (license license:bsd-2)))
9748
9749(define-public ruby-hashery
9750 (package
9751 (name "ruby-hashery")
9752 (version "2.1.2")
9753 (source
9754 (origin
9755 (method url-fetch)
9756 (uri (rubygems-uri "hashery" version))
9757 (sha256
9758 (base32
9759 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
9760 (build-system ruby-build-system)
9761 (arguments
9762 `(#:phases
9763 (modify-phases %standard-phases
9764 (replace 'check
9765 (lambda _
9766 (invoke "qed")
9767 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
9768 (native-inputs
9769 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
9770 ("ruby-qed" ,ruby-qed)
9771 ("ruby-lemon" ,ruby-lemon)))
9772 (synopsis "Hash-like classes with extra features")
9773 (description
9774 "The Hashery is a tight collection of @code{Hash}-like classes.
9775Included are the auto-sorting @code{Dictionary} class, the efficient
9776@code{LRUHash}, the flexible @code{OpenHash} and the convenient
9777@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
9778defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
9779standard @code{Hash} making it possible to subclass and augment to fit any
9780specific use case.")
9781 (home-page "https://rubyworks.github.io/hashery")
9782 (license license:bsd-2)))
9783
9784(define-public ruby-rc4
9785 (package
9786 (name "ruby-rc4")
9787 (version "0.1.5")
9788 (source
9789 (origin
9790 (method url-fetch)
9791 (uri (rubygems-uri "ruby-rc4" version))
9792 (sha256
9793 (base32
9794 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
9795 (build-system ruby-build-system)
9796 (arguments
9797 `(#:phases
9798 (modify-phases %standard-phases
9799 (replace 'check
9800 (lambda _
9801 (invoke "rspec" "spec/rc4_spec.rb"))))))
9802 (native-inputs
9803 `(("ruby-rspec" ,ruby-rspec-2)))
9804 (synopsis "Implementation of the RC4 algorithm")
9805 (description
9806 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
9807 (home-page "https://github.com/caiges/Ruby-RC4")
9808 (license license:expat)))
9809
9810(define-public ruby-afm
9811 (package
9812 (name "ruby-afm")
9813 (version "0.2.2")
9814 (source
9815 (origin
9816 (method url-fetch)
9817 (uri (rubygems-uri "afm" version))
9818 (sha256
9819 (base32
9820 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
9821 (build-system ruby-build-system)
9822 (native-inputs
9823 `(("bundler" ,bundler)))
9824 (synopsis "Read Adobe Font Metrics (afm) files")
9825 (description
9826 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
9827files and use the data therein.")
9828 (home-page "https://github.com/halfbyte/afm")
9829 (license license:expat)))
9830
9831(define-public ruby-ascii85
9832 (package
9833 (name "ruby-ascii85")
9834 (version "1.0.3")
9835 (source
9836 (origin
9837 (method url-fetch)
9838 (uri (rubygems-uri "Ascii85" version))
9839 (sha256
9840 (base32
9841 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
9842 (build-system ruby-build-system)
9843 (native-inputs
9844 `(("bundler" ,bundler)))
9845 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
9846 (description
9847 "This library provides methods to encode and decode Ascii85
9848binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
9849@dfn{Portable Document Format} (PDF) file formats.")
9850 (home-page "https://github.com/datawraith/ascii85gem")
9851 (license license:expat)))
9852
9853(define-public ruby-ttfunk
9854 (package
9855 (name "ruby-ttfunk")
9856 (version "1.6.2.1")
9857 (source
9858 (origin
9859 (method git-fetch)
9860 ;; fetch from github as the gem does not contain testing code
9861 (uri (git-reference
9862 (url "https://github.com/prawnpdf/ttfunk")
9863 (commit version)))
9864 (file-name (git-file-name name version))
9865 (sha256
9866 (base32
9867 "0rsf4j6s97wbcnjbvmmh6xrc7imw4g9lrlcvn945wh400lc8r53z"))))
9868 (build-system ruby-build-system)
9869 (arguments
9870 `(#:test-target "spec"
9871 #:phases
9872 (modify-phases %standard-phases
9873 (add-before 'build 'remove-ssh
9874 (lambda _
9875 ;; remove dependency on an ssh key pair that doesn't exist
9876 (substitute* "ttfunk.gemspec"
9877 (("spec.signing_key.*") ""))
9878 #t))
9879 (add-before 'check 'remove-rubocop
9880 (lambda _
9881 ;; remove rubocop as a dependency as not needed for testing
9882 (substitute* "ttfunk.gemspec"
9883 (("spec.add_development_dependency\\('rubocop'.*") ""))
9884 (substitute* "Rakefile"
9885 (("require 'rubocop/rake_task'") "")
9886 (("RuboCop::RakeTask.new") ""))
9887 #t)))))
9888 (native-inputs
9889 `(("ruby-rspec" ,ruby-rspec)
9890 ("ruby-yard" ,ruby-yard)
9891 ("bundler" ,bundler)))
9892 (synopsis "Font metrics parser for the Prawn PDF generator")
9893 (description
9894 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
9895part of the Prawn PDF generator.")
9896 (home-page "https://github.com/prawnpdf/ttfunk")
9897 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
9898 ;; for details."
9899 (license %prawn-project-licenses)))
9900
9901(define-public ruby-puma
9902 (package
9903 (name "ruby-puma")
9904 (version "3.9.1")
9905 (source
9906 (origin
9907 (method git-fetch)
9908 ;; Fetch from GitHub because distributed gem does not contain tests.
9909 (uri (git-reference
9910 (url "https://github.com/puma/puma")
9911 (commit (string-append "v" version))))
9912 (file-name (git-file-name name version))
9913 (sha256
9914 (base32
9915 "1kj75k81iik3aj73pkc9ixj9rwf95ipkyma65n28m64dgw02qi1f"))))
9916 (build-system ruby-build-system)
9917 (arguments
9918 `(#:tests? #f ; Tests require an out-dated version of minitest.
9919 #:phases
9920 (modify-phases %standard-phases
9921 (add-before 'build 'fix-gemspec
9922 (lambda _
9923 (substitute* "puma.gemspec"
9924 (("git ls-files") "find * |sort"))
9925 #t)))))
9926 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
9927 (description
9928 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
9929for Ruby/Rack applications. Puma is intended for use in both development and
9930production environments. In order to get the best throughput, it is highly
9931recommended that you use a Ruby implementation with real threads like Rubinius
9932or JRuby.")
9933 (home-page "https://puma.io/")
9934 (license license:expat)))
9935
9936(define-public ruby-hoe-git
9937 (package
9938 (name "ruby-hoe-git")
9939 (version "1.6.0")
9940 (source
9941 (origin
9942 (method url-fetch)
9943 (uri (rubygems-uri "hoe-git" version))
9944 (sha256
9945 (base32
9946 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
9947 (build-system ruby-build-system)
9948 (propagated-inputs
9949 `(("ruby-hoe" ,ruby-hoe)))
9950 (synopsis "Hoe plugins for tighter Git integration")
9951 (description
9952 "This package provides a set of Hoe plugins for tighter Git integration.
9953It provides tasks to automate release tagging and pushing and changelog
9954generation.")
9955 (home-page "https://github.com/jbarnette/hoe-git")
9956 (license license:expat)))
9957
9958(define-public ruby-sequel
9959 (package
9960 (name "ruby-sequel")
9961 (version "4.49.0")
9962 (source
9963 (origin
9964 (method url-fetch)
9965 (uri (rubygems-uri "sequel" version))
9966 (sha256
9967 (base32
9968 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
9969 (build-system ruby-build-system)
9970 (arguments
9971 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
9972 (synopsis "Database toolkit for Ruby")
9973 (description "Sequel provides thread safety, connection pooling and a
9974concise DSL for constructing SQL queries and table schemas. It includes a
9975comprehensive ORM layer for mapping records to Ruby objects and handling
9976associated records.")
9977 (home-page "https://sequel.jeremyevans.net")
9978 (license license:expat)))
9979
9980(define-public ruby-timecop
9981 (package
9982 (name "ruby-timecop")
9983 (version "0.9.1")
9984 (source
9985 (origin
9986 (method url-fetch)
9987 (uri (rubygems-uri "timecop" version))
9988 (sha256
9989 (base32
9990 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
9991 (build-system ruby-build-system)
9992 (arguments
9993 `(#:phases
9994 (modify-phases %standard-phases
9995 (add-before 'check 'set-check-rubylib
9996 (lambda _
9997 ;; Set RUBYLIB so timecop tests finds its own lib.
9998 (setenv "RUBYLIB" "lib")
9999 #t)))))
10000 (native-inputs
10001 `(("bundler" ,bundler)
10002 ("ruby-minitest-rg" ,ruby-minitest-rg)
10003 ("ruby-mocha" ,ruby-mocha)
10004 ("ruby-activesupport" ,ruby-activesupport)))
10005 (synopsis "Test mocks for time-dependent functions")
10006 (description
10007 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
10008making it easier to test time-dependent code. It provides a unified method to
10009mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
10010call.")
10011 (home-page "https://github.com/travisjeffery/timecop")
10012 (license license:expat)))
10013
10014(define-public ruby-concurrent
10015 (package
10016 (name "ruby-concurrent")
10017 (version "1.1.5")
10018 (source
10019 (origin
10020 (method git-fetch)
10021 ;; Download from GitHub because the rubygems version does not contain
10022 ;; Rakefile.
10023 (uri (git-reference
10024 (url "https://github.com/ruby-concurrency/concurrent-ruby")
10025 (commit (string-append "v" version))))
10026 (file-name (git-file-name name version))
10027 (sha256
10028 (base32
10029 "193q2k47vk7qdvv9hlhmmdxgy91xl4imapyk1ijdg9vgf46knyzj"))))
10030 (build-system ruby-build-system)
10031 (arguments
10032 `(#:test-target "ci"
10033 #:phases
10034 (modify-phases %standard-phases
10035 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
10036 (lambda _
10037 ;; Delete extra gemspec files so 'first-gemspec' chooses the
10038 ;; correct one.
10039 (delete-file "concurrent-ruby-edge.gemspec")
10040 (delete-file "concurrent-ruby-ext.gemspec")
10041 #t))
10042 (replace 'replace-git-ls-files
10043 (lambda _
10044 ;; XXX: The default substitution made by this phase is not fully
10045 ;; compatible with "git ls-files". The latter produces file names
10046 ;; such as "lib/foo", whereas ruby-build-system uses "find . [...]"
10047 ;; which gives "./lib/foo". That difference in turn breaks the
10048 ;; comparison against a glob pattern in this script.
10049 (substitute* "concurrent-ruby.gemspec"
10050 (("git ls-files") "find * -type f | sort"))
10051 #t))
10052 (add-before 'build 'remove-jar-from-gemspec
10053 (lambda _
10054 ;; The gemspec wants to include a JAR file that we do not build
10055 ;; nor need.
10056 (substitute* "concurrent-ruby.gemspec"
10057 (("'lib/concurrent/concurrent_ruby.jar'")
10058 ""))
10059 #t))
10060 (add-before 'build 'remove-rake_compiler_dock-dependency
10061 (lambda _
10062 ;; This library is only used when building for non-MRI targets.
10063 (substitute* "Rakefile"
10064 (("require 'rake_compiler_dock'")
10065 ""))
10066 #t))
10067 (add-before 'check 'remove-timecop-dependency
10068 ;; Remove timecop-dependent tests as having timecop as a depedency
10069 ;; causes circular depedencies.
10070 (lambda _
10071 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
10072 (delete-file "spec/concurrent/scheduled_task_spec.rb")
10073 #t)))))
10074 (native-inputs
10075 `(("ruby-rake-compiler" ,ruby-rake-compiler)
10076 ("ruby-rspec" ,ruby-rspec)))
10077 (synopsis "Concurrency tools for Ruby")
10078 (description
10079 "This library provides modern concurrency tools including agents,
10080futures, promises, thread pools, actors, supervisors, and more. It is
10081inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
10082patterns.")
10083 (home-page "http://www.concurrent-ruby.com")
10084 (license license:expat)))
10085
10086(define-public ruby-pkg-config
10087 (package
10088 (name "ruby-pkg-config")
10089 (version "1.2.5")
10090 (source
10091 (origin
10092 (method url-fetch)
10093 (uri (rubygems-uri "pkg-config" version))
10094 (sha256
10095 (base32
10096 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
10097 (build-system ruby-build-system)
10098 (arguments
10099 ;; Tests require extra files not included in the gem.
10100 `(#:tests? #f))
10101 (synopsis "Detect libraries for compiling Ruby native extensions")
10102 (description
10103 "@code{pkg-config} can be used in your extconf.rb to properly detect need
10104libraries for compiling Ruby native extensions.")
10105 (home-page "https://github.com/ruby-gnome2/pkg-config")
10106 (license license:lgpl2.0+)))
10107
10108(define-public ruby-net-http-digest-auth
10109 (package
10110 (name "ruby-net-http-digest-auth")
10111 (version "1.4.1")
10112 (source
10113 (origin
10114 (method url-fetch)
10115 (uri (rubygems-uri "net-http-digest_auth" version))
10116 (sha256
10117 (base32
10118 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
10119 (build-system ruby-build-system)
10120 (native-inputs
10121 `(("ruby-hoe" ,ruby-hoe)))
10122 (synopsis "RFC 2617 HTTP digest authentication library")
10123 (description
10124 "This library implements HTTP's digest authentication scheme based on
10125RFC 2617. This enables the use of the digest authentication scheme instead
10126of the more insecure basic authentication scheme.")
10127 (home-page "https://github.com/drbrain/net-http-digest_auth")
10128 (license license:expat)))
10129
10130(define-public ruby-mail
10131 (package
10132 (name "ruby-mail")
10133 (version "2.7.1")
10134 (source
10135 (origin
10136 (method url-fetch)
10137 (uri (rubygems-uri "mail" version))
10138 (sha256
10139 (base32
10140 "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc"))))
10141 (build-system ruby-build-system)
10142 (propagated-inputs
10143 `(("ruby-mini-mime" ,ruby-mini-mime)))
10144 (arguments
10145 '(#:tests? #f)) ; no rakefile
10146 (synopsis "Mail library for Ruby")
10147 (description
10148 "Mail is an internet library for Ruby that is designed to handle email
10149generation, parsing and sending. The purpose of this library is to provide
10150a single point of access to handle all email functions, including sending
10151and receiving emails. All network type actions are done through proxy
10152methods to @code{Net::SMTP}, @code{Net::POP3} etc.
10153
10154Mail has been designed with a very simple object oriented system that
10155really opens up the email messages you are parsing, if you know what you
10156are doing, you can fiddle with every last bit of your email directly.")
10157 (home-page "https://github.com/mikel/mail")
10158 (license license:expat)))
10159
10160(define-public ruby-mathn
10161 (package
10162 (name "ruby-mathn")
10163 (version "0.1.0")
10164 (source
10165 (origin
10166 (method url-fetch)
10167 (uri (rubygems-uri "mathn" version))
10168 (sha256
10169 (base32
10170 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
10171 (build-system ruby-build-system)
10172 (native-inputs
10173 `(("bundler" ,bundler)
10174 ("ruby-rake-compiler" ,ruby-rake-compiler)))
10175 (synopsis "Extends math operations for increased precision")
10176 (description
10177 "This gem makes mathematical operations more precise in Ruby and
10178integrates other mathematical standard libraries. Prior to Ruby 2.5,
10179@code{mathn} was part of the Ruby standard library.")
10180 (home-page "https://github.com/ruby/mathn")
10181 (license license:bsd-2)))
10182
10183(define-public ruby-code-statistics
10184 (package
10185 (name "ruby-code-statistics")
10186 (version "0.2.13")
10187 (source
10188 (origin
10189 (method url-fetch)
10190 (uri (rubygems-uri "code_statistics" version))
10191 (sha256
10192 (base32
10193 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
10194 (build-system ruby-build-system)
10195 (arguments
10196 `(#:tests? #f)) ; Not all test code is included in gem.
10197 (synopsis "Port of the rails 'rake stats' method")
10198 (description
10199 "This gem is a port of the rails 'rake stats' method so it can be made
10200more robust and work for non rails projects.")
10201 (home-page "https://github.com/danmayer/code_statistics")
10202 (license license:expat)))
10203
10204(define-public ruby-rubypants
10205 (package
10206 (name "ruby-rubypants")
10207 (version "0.6.0")
10208 (source (origin
10209 (method url-fetch)
10210 (uri (rubygems-uri "rubypants" version))
10211 (sha256
10212 (base32
10213 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
10214 (build-system ruby-build-system)
10215 (arguments
10216 '(#:tests? #f)) ; need Codecov
10217 (synopsis "Port of the smart-quotes library SmartyPants")
10218 (description
10219 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
10220original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
10221and BBEdit that easily translates plain ASCII punctuation characters into
10222smart typographic punctuation HTML entities.")
10223 (home-page "https://github.com/jmcnevin/rubypants")
10224 (license license:bsd-2)))
10225
10226(define-public ruby-org-ruby
10227 (package
10228 (name "ruby-org-ruby")
10229 (version "0.9.12")
10230 (source (origin
10231 (method url-fetch)
10232 (uri (rubygems-uri "org-ruby" version))
10233 (sha256
10234 (base32
10235 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
10236 (build-system ruby-build-system)
10237 (arguments
10238 '(#:tests? #f)) ; no rakefile
10239 (propagated-inputs
10240 `(("ruby-rubypants" ,ruby-rubypants)))
10241 (synopsis "Org-mode parser written in Ruby")
10242 (description
10243 "Org-ruby is an org-mode parser written in Ruby. The most significant
10244thing this library does today is convert org-mode files to HTML or Textile or
10245Markdown.")
10246 (home-page "https://github.com/wallyqs/org-ruby")
10247 (license license:expat)))
10248
10249(define-public ruby-rake
10250 (package
10251 (name "ruby-rake")
10252 (version "13.0.1")
10253 (source
10254 (origin
10255 (method url-fetch)
10256 (uri (rubygems-uri "rake" version))
10257 (sha256
10258 (base32
10259 "0w6qza25bq1s825faaglkx1k6d59aiyjjk3yw3ip5sb463mhhai9"))))
10260 (build-system ruby-build-system)
10261 (native-inputs
10262 `(("bundler" ,bundler)))
10263 (synopsis "Rake is a Make-like program implemented in Ruby")
10264 (description
10265 "Rake is a Make-like program where tasks and dependencies are specified
10266in standard Ruby syntax.")
10267 (home-page "https://github.com/ruby/rake")
10268 (license license:expat)))
10269
10270(define-public ruby-childprocess
10271 (package
10272 (name "ruby-childprocess")
10273 (version "3.0.0")
10274 (source
10275 (origin
10276 (method url-fetch)
10277 (uri (rubygems-uri "childprocess" version))
10278 (sha256
10279 (base32
10280 "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5"))))
10281 (build-system ruby-build-system)
10282 (arguments
10283 `(#:tests? #f))
10284 (native-inputs
10285 `(("bundler" ,bundler)
10286 ("ruby-rspec" ,ruby-rspec)))
10287 (propagated-inputs
10288 `(("ruby-ffi" ,ruby-ffi)))
10289 (synopsis "Control external programs running in the background, in Ruby")
10290 (description "@code{childprocess} provides a gem to control external
10291programs running in the background, in Ruby.")
10292 (home-page "https://github.com/enkessler/childprocess")
10293 (license license:expat)))
10294
10295(define-public ruby-public-suffix
10296 (package
10297 (name "ruby-public-suffix")
10298 (version "4.0.5")
10299 (source (origin
10300 (method url-fetch)
10301 (uri (rubygems-uri "public_suffix" version))
10302 (sha256
10303 (base32
10304 "0vywld400fzi17cszwrchrzcqys4qm6sshbv73wy5mwcixmrgg7g"))))
10305 (build-system ruby-build-system)
10306 (arguments
10307 '(#:phases
10308 (modify-phases %standard-phases
10309 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
10310 ;; including it as an input can lead to circular dependencies.
10311 (add-after 'unpack 'remove-rubocop-from-Rakefile
10312 (lambda _
10313 (substitute* "Rakefile"
10314 (("require \"rubocop/rake\\_task\"") "")
10315 (("RuboCop::RakeTask\\.new") ""))
10316 #t)))))
10317 (native-inputs
10318 `(("bundler" ,bundler)
10319 ("ruby-yard" ,ruby-yard)
10320 ("ruby-mocha" ,ruby-mocha)
10321 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
10322 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
10323 (synopsis "Domain name parser")
10324 (description "The gem @code{public_suffix} is a domain name parser,
10325written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
10326is one under which Internet users can (or historically could) directly
10327register names. Some examples of public suffixes are @code{.com},
10328@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
10329all known public suffixes.")
10330 (license license:expat)))
10331
10332(define-public ruby-addressable
10333 (package
10334 (name "ruby-addressable")
10335 (version "2.7.0")
10336 (source (origin
10337 (method url-fetch)
10338 (uri (rubygems-uri "addressable" version))
10339 (sha256
10340 (base32
10341 "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy"))))
10342 (build-system ruby-build-system)
10343 (arguments
10344 '(#:test-target "spec"
10345 #:phases
10346 (modify-phases %standard-phases
10347 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
10348 (lambda _
10349 (substitute* "Gemfile"
10350 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
10351 ((".*launchy.*") "")
10352 ((".*rake.*") "gem 'rake'\n")
10353 ((".*redcarpet.*") ""))
10354 #t))
10355 (add-before 'check 'delete-network-dependent-test
10356 (lambda _
10357 (delete-file "spec/addressable/net_http_compat_spec.rb")
10358 #t)))))
10359 (native-inputs
10360 `(("ruby-rspec" ,ruby-rspec)
10361 ("bundler" ,bundler)
10362 ("ruby-idn-ruby" ,ruby-idn-ruby)
10363 ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
10364 ("ruby-rspec-its" ,ruby-rspec-its-minimal)
10365 ("ruby-yard" ,ruby-yard)
10366 ("ruby-simplecov" ,ruby-simplecov)))
10367 (propagated-inputs
10368 `(("ruby-public-suffix" ,ruby-public-suffix)))
10369 (home-page "https://github.com/sporkmonger/addressable")
10370 (synopsis "Alternative URI implementation")
10371 (description "Addressable is a replacement for the URI implementation that
10372is part of Ruby's standard library. It more closely conforms to RFC 3986,
10373RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
10374 (license license:asl2.0)))
10375
10376(define-public ruby-colorize
10377 (package
10378 (name "ruby-colorize")
10379 (version "0.8.1")
10380 (source (origin
10381 (method url-fetch)
10382 (uri (rubygems-uri "colorize" version))
10383 (sha256
10384 (base32
10385 "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b"))))
10386 (build-system ruby-build-system)
10387 (arguments
10388 '(#:phases (modify-phases %standard-phases
10389 (add-before 'check 'remove-codeclimate-dependency
10390 (lambda _
10391 (substitute* "test/test_colorize.rb"
10392 ;; Do not hook the tests into the online CodeClimate
10393 ;; service which is unnecessary for these tests.
10394 (("require 'codeclimate-test-reporter'")
10395 "")
10396 (("CodeClimate.*") ""))
10397 #t)))))
10398 (synopsis "Add color effects to the @code{String} class")
10399 (description
10400 "This package extends the @code{String} class and adds a
10401@code{ColorizedString} with methods to set text color, background color,
10402and text effects.")
10403 (home-page "https://github.com/fazibear/colorize")
10404 (license license:gpl2+)))
10405
10406(define-public ruby-colorator
10407 (package
10408 (name "ruby-colorator")
10409 (version "1.1.0")
10410 (source (origin
10411 (method url-fetch)
10412 (uri (rubygems-uri "colorator" version))
10413 (sha256
10414 (base32
10415 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
10416 (build-system ruby-build-system)
10417 (arguments
10418 ;; No test target
10419 `(#:tests? #f))
10420 (home-page "http://octopress.org/colorator/")
10421 (synopsis "Terminal color library")
10422 (description "Colorator is a Ruby gem that helps you colorize your text
10423for the terminal.")
10424 (license license:expat)))
10425
10426(define-public ruby-command-line-reporter
10427 (package
10428 (name "ruby-command-line-reporter")
10429 (version "4.0.1")
10430 (source (origin
10431 (method url-fetch)
10432 (uri (rubygems-uri "command_line_reporter" version))
10433 (sha256
10434 (base32
10435 "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll"))))
10436 (build-system ruby-build-system)
10437 (arguments
10438 ;; No Rakefile
10439 `(#:tests? #f
10440 #:phases
10441 (modify-phases %standard-phases
10442 (add-before 'build 'fix-dependencies
10443 (lambda _
10444 (substitute* ".gemspec"
10445 ;; colored is unmaintained
10446 (("colored") "colorator")
10447 ;; colorator version
10448 (("= 1.2") "= 1.1"))
10449 #t)))))
10450 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
10451 (home-page "https://github.com/wbailey/command_line_reporter")
10452 (synopsis "Report production while executing Ruby scripts")
10453 (description "This gem provides a DSL that makes it easy to write reports
10454of various types in ruby. It eliminates the need to litter your source with
10455puts statements, instead providing a more readable, expressive interface to
10456your application.")
10457 (license license:asl2.0)))
10458
10459(define-public ruby-command-line-reporter-3
10460 (package
10461 (inherit ruby-command-line-reporter)
10462 (version "3.3.6")
10463 (source (origin
10464 (method url-fetch)
10465 (uri (rubygems-uri "command_line_reporter" version))
10466 (sha256
10467 (base32
10468 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
10469
10470(define-public ruby-kpeg
10471 (package
10472 (name "ruby-kpeg")
10473 (version "1.1.0")
10474 (source
10475 (origin
10476 (method url-fetch)
10477 (uri (rubygems-uri "kpeg" version))
10478 (sha256
10479 (base32
10480 "0x2kpfrcagj931masm5y1kwbnc6nxl60cqdcd3lyd1d2hz7kzlia"))))
10481 (build-system ruby-build-system)
10482 (native-inputs
10483 `(("ruby-hoe" ,ruby-hoe)))
10484 (synopsis "PEG library for Ruby")
10485 (description "KPeg is a simple PEG library for Ruby. It provides an API as
10486well as native grammar to build the grammar. KPeg supports direct left
10487recursion of rules via the
10488@uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization}
10489technique.")
10490 (home-page "https://github.com/evanphx/kpeg")
10491 (license license:expat)))
10492
10493(define-public ruby-rdoc
10494 (package
10495 (name "ruby-rdoc")
10496 (version "6.2.0")
10497 (source
10498 (origin
10499 (method git-fetch)
10500 (uri (git-reference
10501 (url "https://github.com/ruby/rdoc")
10502 (commit (string-append "v" version))))
10503 (file-name (git-file-name name version))
10504 (sha256
10505 (base32
10506 "0dhk29nidv93b5vnjvlm9gcixgn4i0jcyzrgxdk6pdg019bw4cj6"))))
10507 (build-system ruby-build-system)
10508 (arguments
10509 `(#:phases
10510 (modify-phases %standard-phases
10511 (add-after 'unpack 'patch-gemspec
10512 ;; TODO: Remove after next release is tagged.
10513 (lambda _
10514 (substitute* "rdoc.gemspec"
10515 (("\"lib/rdoc/generator/template/darkfish/js/\
10516jquery\\.js\", ") ""))
10517 #t))
10518 (add-before 'build 'generate
10519 ;; 'gem build' doesn't honor Rakefile dependencies (see:
10520 ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977).
10521 (lambda _
10522 (invoke "rake" "generate"))))))
10523 (native-inputs
10524 `(("bundler" ,bundler)
10525 ("ruby-kpeg" ,ruby-kpeg)
10526 ("ruby-racc" ,ruby-racc)
10527 ("ruby-rubocop" ,ruby-rubocop)))
10528 (home-page "https://ruby.github.io/rdoc/")
10529 (synopsis "HTML and command-line documentation utility")
10530 (description "RDoc produces HTML and command-line documentation for Ruby
10531projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
10532documentation from the command-line.")
10533 (license license:gpl2+)))
10534
10535(define-public ruby-sass-listen
10536 (package
10537 (name "ruby-sass-listen")
10538 (version "4.0.0")
10539 (source (origin
10540 (method url-fetch)
10541 (uri (rubygems-uri "sass-listen" version))
10542 (sha256
10543 (base32
10544 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
10545 (build-system ruby-build-system)
10546 (arguments
10547 ;; No test target
10548 `(#:tests? #f))
10549 (propagated-inputs
10550 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
10551 ("ruby-rb-inotify" ,ruby-rb-inotify)))
10552 (home-page "https://github.com/sass/listen")
10553 (synopsis "File modification notification library")
10554 (description "The Listen gem listens to file modifications and notifies you
10555about the changes.")
10556 (license license:expat)))
10557
10558(define-public ruby-terminfo
10559 (package
10560 (name "ruby-terminfo")
10561 (version "0.1.1")
10562 (source
10563 (origin
10564 (method url-fetch)
10565 (uri (rubygems-uri "ruby-terminfo" version))
10566 (sha256
10567 (base32
10568 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
10569 (build-system ruby-build-system)
10570 (arguments
10571 `(#:test-target "test"
10572 ;; Rakefile requires old packages and would need modification to
10573 ;; work with current software.
10574 #:tests? #f))
10575 (inputs
10576 `(("ncurses" ,ncurses)))
10577 (native-inputs
10578 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
10579 ("ruby-rdoc" ,ruby-rdoc)))
10580 (home-page "http://www.a-k-r.org/ruby-terminfo/")
10581 (synopsis "Terminfo binding for Ruby")
10582 (description "Ruby-terminfo provides terminfo binding for Ruby.")
10583 (license license:bsd-3)))
10584
10585(define-public ruby-diffy
10586 (package
10587 (name "ruby-diffy")
10588 (version "3.2.1")
10589 (source
10590 (origin
10591 (method url-fetch)
10592 (uri (rubygems-uri "diffy" version))
10593 (sha256
10594 (base32
10595 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
10596 (build-system ruby-build-system)
10597 (arguments
10598 ;; No tests
10599 `(#:tests? #f))
10600 (native-inputs
10601 `(("ruby-rspec" ,ruby-rspec)))
10602 (home-page "https://github.com/samg/diffy")
10603 (synopsis "Convenient diffing in ruby")
10604 (description "Diffy provides a convenient way to generate a diff from two
10605strings or files.")
10606 (license license:expat)))
10607
10608(define-public ruby-sass-spec
10609 (package
10610 (name "ruby-sass-spec")
10611 (version "3.5.4")
10612 (source
10613 (origin
10614 (method git-fetch)
10615 (uri (git-reference
10616 (url "https://github.com/sass/sass-spec")
10617 (commit (string-append "v" version))))
10618 (file-name (git-file-name name version))
10619 (sha256
10620 (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
10621 (build-system ruby-build-system)
10622 (propagated-inputs
10623 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
10624 ("ruby-diffy" ,ruby-diffy)
10625 ("ruby-terminfo" ,ruby-terminfo)))
10626 (arguments
10627 `(;; This package contains tests for a sass implementation, and the to
10628 ;; avoid any circular dependencies, the tests are not run here
10629 #:tests? #f
10630 #:phases
10631 (modify-phases %standard-phases
10632 (add-after 'unpack 'patch-test
10633 (lambda _
10634 (delete-file "spec/values/colors/alpha_hex-3.5/error")
10635 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
10636 (("string") "color")))))))
10637 (home-page "https://github.com/sass/sass-spec")
10638 (synopsis "Test suite for Sass")
10639 (description "Sass Spec is a test suite for Sass. Test cases are all in
10640the @file{spec} directory.")
10641 (license license:expat)))
10642
10643(define-public ruby-sass
10644 (package
10645 (name "ruby-sass")
10646 (version "3.6.0")
10647 (source (origin
10648 (method url-fetch)
10649 (uri (rubygems-uri "sass" version))
10650 (sha256
10651 (base32
10652 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
10653 (build-system ruby-build-system)
10654 (propagated-inputs
10655 `(("ruby-sass-listen" ,ruby-sass-listen)))
10656 (native-inputs
10657 `(("ruby-sass-spec" ,ruby-sass-spec)
10658 ("ruby-mathn" ,ruby-mathn)))
10659 (home-page "https://sass-lang.com/")
10660 (synopsis "CSS extension language")
10661 (description "Sass is a CSS extension language. It extends CSS with
10662features that don't exist yet like variables, nesting, mixins and inheritance.")
10663 (license license:expat)))
10664
10665(define-public ruby-sassc
10666 (package
10667 (name "ruby-sassc")
10668 (version "2.4.0")
10669 (source
10670 (origin
10671 (method url-fetch)
10672 (uri (rubygems-uri "sassc" version))
10673 (sha256
10674 (base32
10675 "0gpqv48xhl8mb8qqhcifcp0pixn206a7imc07g48armklfqa4q2c"))))
10676 (build-system ruby-build-system)
10677 (arguments
10678 '(#:modules ((guix build ruby-build-system)
10679 (guix build utils)
10680 (ice-9 textual-ports))
10681 #:phases
10682 (modify-phases %standard-phases
10683 ;; TODO: This would be better as a snippet, but the ruby-build-system
10684 ;; doesn't seem to support that
10685 (add-after 'unpack 'remove-libsass
10686 (lambda _
10687 (delete-file-recursively "ext")
10688 (with-atomic-file-replacement "sassc.gemspec"
10689 (lambda (in out)
10690 (let* ((gemspec (get-string-all in))
10691 (index (string-contains gemspec "libsass_dir")))
10692 (display (string-append
10693 (string-take gemspec index)
10694 "\nend\n")
10695 out))))
10696 #t))
10697 (add-after 'unpack 'dont-check-the-libsass-version
10698 (lambda _
10699 (substitute* "test/native_test.rb"
10700 (("assert_equal.*Native\\.version") ""))
10701 #t))
10702 (add-after 'unpack 'remove-git-from-gemspec
10703 (lambda _
10704 (substitute* "sassc.gemspec"
10705 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))
10706 #t))
10707 (add-after 'unpack 'remove-extensions-from-gemspec
10708 (lambda _
10709 (substitute* "sassc.gemspec"
10710 (("\\[\"ext/extconf.rb\"\\]") "[]"))
10711 #t))
10712 (add-after 'unpack 'fix-Rakefile
10713 (lambda _
10714 (substitute* "Rakefile"
10715 (("test: 'compile:libsass'") ":test"))
10716 #t))
10717 (add-after 'unpack 'remove-unnecessary-dependencies
10718 (lambda _
10719 (substitute* "test/test_helper.rb"
10720 (("require \"pry\"") ""))
10721 #t))
10722 (add-before 'build 'patch-native.rb
10723 (lambda* (#:key inputs #:allow-other-keys)
10724 (substitute* "lib/sassc/native.rb"
10725 ((".*gem_root = spec.gem_dir") "")
10726 (("ffi_lib .*\n")
10727 (string-append
10728 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))
10729 #t))
10730 ;; The gemspec still references the libsass files, so just keep the
10731 ;; one in the gem.
10732 (delete 'extract-gemspec))))
10733 (propagated-inputs
10734 `(("ruby-ffi" ,ruby-ffi)
10735 ("ruby-rake" ,ruby-rake)))
10736 (inputs
10737 `(("libsass" ,libsass)))
10738 (native-inputs
10739 `(("bundler" ,bundler)
10740 ("ruby-rake-compiler" ,ruby-rake-compiler)
10741 ("ruby-minitest-around" ,ruby-minitest-around)
10742 ("ruby-test-construct" ,ruby-test-construct)))
10743 (synopsis "Use libsss from Ruby")
10744 (description
10745 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
10746bindings to the libsass library. This enables rendering
10747@acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
10748 (home-page "https://github.com/sass/sassc-ruby")
10749 (license license:expat)))
10750
10751(define-public ruby-jekyll-sass-converter
10752 (package
10753 (name "ruby-jekyll-sass-converter")
10754 (version "2.1.0")
10755 (source (origin
10756 (method url-fetch)
10757 (uri (rubygems-uri "jekyll-sass-converter" version))
10758 (sha256
10759 (base32
10760 "04ncr44wrilz26ayqwlg7379yjnkb29mvx4j04i62b7czmdrc9dv"))))
10761 (build-system ruby-build-system)
10762 (propagated-inputs
10763 `(("ruby-sass" ,ruby-sass)))
10764 (arguments
10765 ;; No rakefile
10766 `(#:tests? #f))
10767 (home-page "https://github.com/jekyll/jekyll-sass-converter")
10768 (synopsis "Sass converter for Jekyll")
10769 (description "This gem provide built-in support for the Sass converter
10770in Jekyll.")
10771 (license license:expat)))
10772
10773(define-public ruby-jekyll-watch
10774 (package
10775 (name "ruby-jekyll-watch")
10776 (version "2.1.2")
10777 (source (origin
10778 (method url-fetch)
10779 (uri (rubygems-uri "jekyll-watch" version))
10780 (sha256
10781 (base32
10782 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
10783 (build-system ruby-build-system)
10784 (propagated-inputs
10785 `(("ruby-listen" ,ruby-listen)))
10786 (arguments
10787 ;; No rakefile
10788 `(#:tests? #f))
10789 (home-page "https://github.com/jekyll/jekyll-watch")
10790 (synopsis "Jekyll auto-rebuild support")
10791 (description "This gems add the @code{--watch} switch to the jekyll CLI
10792interface. It allows Jekyll to rebuild your site when a file changes.")
10793 (license license:expat)))
10794
10795(define-public ruby-parallel
10796 (package
10797 (name "ruby-parallel")
10798 (version "1.13.0")
10799 (source
10800 (origin
10801 (method git-fetch)
10802 (uri (git-reference
10803 (url "https://github.com/grosser/parallel")
10804 (commit (string-append "v" version))))
10805 (file-name (git-file-name name version))
10806 (sha256
10807 (base32
10808 "1isqzbqxz2ndad4i5z3lb9ldrhaijfncj8bmffv04sq44sv87ikv"))))
10809 (build-system ruby-build-system)
10810 (arguments
10811 `(;; TODO 3 test failures
10812 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
10813 ;; open unnecessary pipes
10814 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
10815 ;; SQLite in processes
10816 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
10817 ;; SQLite in threads
10818 #:tests? #f
10819 #:test-target "rspec-rerun:spec"
10820 #:phases
10821 (modify-phases %standard-phases
10822 (add-after 'unpack 'patch-Gemfile
10823 (lambda _
10824 (substitute* "Gemfile"
10825 (("gem 'rspec-legacy_formatters'") "")
10826 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
10827 (add-before 'check 'delete-Gemfile.lock
10828 (lambda _
10829 ;; Bundler isn't being used for fetching dependendencies, so
10830 ;; delete the Gemfile.lock
10831 (delete-file "Gemfile.lock")
10832 #t))
10833 (add-before 'build 'patch-gemspec
10834 (lambda _
10835 (substitute* "parallel.gemspec"
10836 (("git ls-files") "find"))
10837 #t)))))
10838 (native-inputs
10839 `(("ruby-rspec" ,ruby-rspec)
10840 ("ruby-rspec-rerun" ,ruby-rspec-rerun)
10841 ("bundler" ,bundler)
10842 ("ruby-activerecord" ,ruby-activerecord)
10843 ("ruby-progressbar" ,ruby-progressbar)
10844 ("ruby-bump" ,ruby-bump)
10845 ("procps" ,procps)
10846 ("lsof" ,lsof)
10847 ("ruby-mysql2" ,ruby-mysql2)
10848 ("ruby-sqlite3" ,ruby-sqlite3)
10849 ("ruby-i18n" ,ruby-i18n)))
10850 (home-page "https://github.com/grosser/parallel")
10851 (synopsis "Parallel processing in Ruby")
10852 (description "Parallel allows you to run any code in parallel Processes
10853(to use all CPUs) or Threads(to speedup blocking operations). It is best
10854suited for map-reduce or e.g. parallel downloads/uploads.")
10855 (license license:expat)))
10856
10857(define-public ruby-cane
10858 (package
10859 (name "ruby-cane")
10860 (version "3.0.0")
10861 (source (origin
10862 (method url-fetch)
10863 (uri (rubygems-uri "cane" version))
10864 (sha256
10865 (base32
10866 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
10867 (build-system ruby-build-system)
10868 (arguments `(#:tests? #f)); No rakefile
10869 (home-page "https://github.com/square/cane")
10870 (propagated-inputs
10871 `(("ruby-parallel" ,ruby-parallel)))
10872 (synopsis "Code quality threshold checking")
10873 (description "Cane fails your build if code quality thresholds are not met.")
10874 (license license:asl2.0)))
10875
10876(define-public ruby-morecane
10877 (package
10878 (name "ruby-morecane")
10879 (version "0.2.0")
10880 (source (origin
10881 (method url-fetch)
10882 (uri (rubygems-uri "morecane" version))
10883 (sha256
10884 (base32
10885 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
10886 (build-system ruby-build-system)
10887 (home-page "https://github.com/yob/morecane")
10888 (arguments `(#:tests? #f)); No rakefile
10889 (propagated-inputs
10890 `(("ruby-parallel" ,ruby-parallel)))
10891 (synopsis "Extra checks for cane")
10892 (description "The cane gem provides a great framework for running quality
10893checks over your ruby project as part of continuous integration build. It
10894comes with a few checks out of the box, but also provides an API for loading
10895custom checks. This gem provides a set of additional checks.")
10896 (license license:expat)))
10897
10898(define-public ruby-pdf-reader
10899 (package
10900 (name "ruby-pdf-reader")
10901 (version "2.4.0")
10902 (source (origin
10903 (method git-fetch) ;no test in distributed gem archive
10904 (uri (git-reference
10905 (url "https://github.com/yob/pdf-reader")
10906 (commit (string-append "v" version))))
10907 (file-name (git-file-name name version))
10908 (sha256
10909 (base32
10910 "1yh8yrlssf5ppnkvk4m78vmh5r5vqwdcd0gm3lqipw162llz0rai"))))
10911 (build-system ruby-build-system)
10912 (arguments `(#:test-target "spec"
10913 #:phases (modify-phases %standard-phases
10914 (add-after 'unpack 'do-not-use-bundler
10915 (lambda _
10916 (substitute* "spec/spec_helper.rb"
10917 ((".*[Bb]undler.*") ""))
10918 #t)))))
10919 (native-inputs
10920 `(("ruby-rspec" ,ruby-rspec)
10921 ("ruby-cane" ,ruby-cane)
10922 ("ruby-morecane" ,ruby-morecane)))
10923 (propagated-inputs
10924 `(("ruby-afm" ,ruby-afm)
10925 ("ruby-ascii85" ,ruby-ascii85)
10926 ("ruby-hashery" ,ruby-hashery)
10927 ("ruby-rc4" ,ruby-rc4)
10928 ("ruby-ttfunk" ,ruby-ttfunk)))
10929 (home-page "https://github.com/yob/pdf-reader")
10930 (synopsis "PDF parser in Ruby")
10931 (description "The PDF::Reader library implements a PDF parser conforming as
10932much as possible to the PDF specification from Adobe. It provides programmatic
10933access to the contents of a PDF file with a high degree of flexibility.")
10934 (license license:gpl3+)))
10935
10936(define-public ruby-pdf-inspector
10937 (let ((revision "1")
10938 (commit "00ee4c92ff917118785ebec188e81effc968abeb"))
10939 (package
10940 (name "ruby-pdf-inspector")
10941 (version (git-version "1.3.0" revision commit))
10942 (source (origin
10943 (method git-fetch)
10944 (uri (git-reference
10945 (url "https://github.com/prawnpdf/pdf-inspector")
10946 (commit commit)))
10947 (file-name (git-file-name name version))
10948 (sha256
10949 (base32
10950 "0h9w81ddd0gvkh5n2cvny9ddb5qiac1si0dhinkk0xxh5382qs0m"))))
10951 (build-system ruby-build-system)
10952 (arguments
10953 `(#:test-target "spec"
10954 #:phases (modify-phases %standard-phases
10955 (add-before 'build 'drop-signing-key-requirement
10956 (lambda _
10957 (substitute* "pdf-inspector.gemspec"
10958 (("spec.signing_key =.*")
10959 "spec.signing_key = nil"))
10960 #t))
10961 (replace 'check
10962 (lambda _
10963 (substitute* "pdf-inspector.gemspec"
10964 ((".*rubocop.*") "")
10965 ((".*yard.*") ""))
10966 (invoke "rspec"))))))
10967 (native-inputs
10968 `(("ruby-rspec" ,ruby-rspec)))
10969 (propagated-inputs
10970 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
10971 (home-page "https://github.com/prawnpdf/pdf-inspector")
10972 (synopsis "Analysis classes for inspecting PDF output")
10973 (description "This library provides a number of PDF::Reader based tools for
10974use in testing PDF output. Presently, the primary purpose of this tool is to
10975support the tests found in Prawn, a pure Ruby PDF generation library.")
10976 (license %prawn-project-licenses))))
10977
10978(define-public ruby-pdf-core
10979 (package
10980 (name "ruby-pdf-core")
10981 (version "0.8.1")
10982 (source (origin
10983 (method url-fetch)
10984 (uri (rubygems-uri "pdf-core" version))
10985 (sha256
10986 (base32
10987 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
10988 (build-system ruby-build-system)
10989 (arguments
10990 ; No test target
10991 `(#:tests? #f))
10992 (home-page "https://github.com/prawnpdf/pdf-core")
10993 (synopsis "Low level PDF features for Prawn")
10994 (description "This is an experimental gem that extracts low-level PDF
10995functionality from Prawn.")
10996 (license license:gpl3+)))
10997
10998(define-public ruby-prawn
10999 ;; There hasn't been a new release since 2017/03/17.
11000 (let ((revision "1")
11001 (commit "d980247be8a00e7c59cd4e5785e3aa98f9856db1"))
11002 (package
11003 (name "ruby-prawn")
11004 (version (git-version "2.2.2" revision commit))
11005 (source (origin
11006 (method git-fetch)
11007 (uri (git-reference
11008 (url "https://github.com/prawnpdf/prawn")
11009 (commit commit)))
11010 (file-name (git-file-name name version))
11011 (sha256
11012 (base32
11013 "0mcmvf22h8il93yq48v9f31qpy27pvjxgv9172p0f4x9lqy0imwr"))))
11014 (build-system ruby-build-system)
11015 (arguments
11016 `(#:phases
11017 (modify-phases %standard-phases
11018 (add-before 'build 'drop-signing-key-requirement
11019 (lambda _
11020 (substitute* "prawn.gemspec"
11021 (("spec.signing_key =.*")
11022 "spec.signing_key = nil"))
11023 #t))
11024 (replace 'check
11025 (lambda* (#:key tests? #:allow-other-keys)
11026 (when tests?
11027 ;; The Prawn manual test fails (see:
11028 ;; https://github.com/prawnpdf/prawn/issues/1163), so exclude
11029 ;; it.
11030 (invoke "rspec" "--exclude-pattern" "prawn_manual_spec.rb"))
11031 #t)))))
11032 (propagated-inputs
11033 `(("ruby-pdf-core" ,ruby-pdf-core)
11034 ("ruby-ttfunk" ,ruby-ttfunk)))
11035 (native-inputs
11036 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
11037 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
11038 ("ruby-rspec" ,ruby-rspec)
11039 ("ruby-simplecov" ,ruby-simplecov)
11040 ("ruby-yard" ,ruby-yard)))
11041 (home-page "https://prawnpdf.org/api-docs/2.0/")
11042 (synopsis "PDF generation for Ruby")
11043 (description "Prawn is a pure Ruby PDF generation library.")
11044 (license %prawn-project-licenses))))
11045
11046(define-public ruby-prawn-table
11047 (package
11048 (name "ruby-prawn-table")
11049 (version "0.2.2")
11050 (source (origin
11051 (method url-fetch)
11052 (uri (rubygems-uri "prawn-table" version))
11053 (sha256
11054 (base32
11055 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
11056 (build-system ruby-build-system)
11057 (propagated-inputs
11058 `(("ruby-prawn" ,ruby-prawn)
11059 ("ruby-pdf-inspector" ,ruby-pdf-inspector)))
11060 (native-inputs
11061 `(("bundler" ,bundler)
11062 ("ruby-yard" ,ruby-yard)
11063 ("ruby-mocha" ,ruby-mocha)
11064 ("ruby-coderay" ,ruby-coderay)
11065 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
11066 ("ruby-simplecov" ,ruby-simplecov)
11067 ("ruby-rspec-2" ,ruby-rspec-2)))
11068 (arguments
11069 '(;; TODO: 1 test fails
11070 ;; Failure/Error: pdf.page_count.should == 1
11071 ;; expected: 1
11072 ;; got: 2 (using ==)
11073 ;; # ./spec/table_spec.rb:1308
11074 ;;
11075 ;; 225 examples, 1 failure
11076 #:tests? #f
11077 #:phases
11078 (modify-phases %standard-phases
11079 (add-before 'check 'patch-gemspec
11080 (lambda _
11081 (substitute* "prawn-table.gemspec"
11082 ;; Loosen the requirement for pdf-inspector
11083 (("~> 1\\.1\\.0") ">= 0")
11084 ;; Loosen the requirement for pdf-reader
11085 (("~> 1\\.2") ">= 0"))))
11086 (replace 'check
11087 (lambda* (#:key tests? #:allow-other-keys)
11088 (when tests?
11089 (invoke "rspec"))
11090 #t)))))
11091 (home-page "https://github.com/prawnpdf/prawn-table")
11092 (synopsis "Tables support for Prawn")
11093 (description "This gem provides tables support for Prawn.")
11094 (license license:gpl3+)))
11095
11096(define-public ruby-kramdown
11097 (package
11098 (name "ruby-kramdown")
11099 (version "2.3.1")
11100 (source (origin
11101 (method url-fetch)
11102 (uri (rubygems-uri "kramdown" version))
11103 (sha256
11104 (base32
11105 "0jdbcjv4v7sj888bv3vc6d1dg4ackkh7ywlmn9ln2g9alk7kisar"))))
11106 (build-system ruby-build-system)
11107 (arguments `(#:tests? #f)); FIXME: some test failures
11108 (native-inputs
11109 `(("ruby-prawn" ,ruby-prawn)
11110 ("ruby-prawn-table" ,ruby-prawn-table)))
11111 (home-page "https://kramdown.gettalong.org/")
11112 (synopsis "Markdown parsing and converting library")
11113 (description "Kramdown is a library for parsing and converting a superset
11114of Markdown. It is completely written in Ruby, supports standard Markdown
11115(with some minor modifications) and various extensions that have been made
11116popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
11117 (license license:expat)))
11118
11119(define-public ruby-kramdown-parser-gfm
11120 (package
11121 (name "ruby-kramdown-parser-gfm")
11122 (version "1.1.0")
11123 (source
11124 (origin
11125 (method url-fetch)
11126 (uri (rubygems-uri "kramdown-parser-gfm" version))
11127 (sha256
11128 (base32 "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv"))))
11129 (build-system ruby-build-system)
11130 (arguments
11131 `(#:tests? #f)) ;no rakefile
11132 (propagated-inputs
11133 `(("ruby-kramdown" ,ruby-kramdown)))
11134 (synopsis "Kramdown parser for the GFM dialect of Markdown")
11135 (description
11136 "This is a parser for kramdown that converts Markdown documents in the
11137GFM dialect to HTML.")
11138 (home-page "https://github.com/kramdown/parser-gfm")
11139 (license license:expat)))
11140
11141(define-public ruby-http-parser.rb
11142 (package
11143 (name "ruby-http-parser.rb")
11144 (version "0.6.0")
11145 (source
11146 (origin
11147 (method url-fetch)
11148 (uri (rubygems-uri "http_parser.rb" version))
11149 (sha256
11150 (base32
11151 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
11152 (build-system ruby-build-system)
11153 (arguments
11154 ;; No tests
11155 `(#:tests? #f))
11156 (native-inputs
11157 `(("ruby-rake-compiler" ,ruby-rake-compiler)
11158 ("ruby-rspec" ,ruby-rspec)))
11159 (home-page "https://github.com/tmm1/http_parser.rb")
11160 (synopsis "HTTP parser un Ruby")
11161 (description "This gem is a simple callback-based HTTP request/response
11162parser for writing http servers, clients and proxies.")
11163 (license license:expat)))
11164
11165(define-public ruby-em-websocket
11166 (package
11167 (name "ruby-em-websocket")
11168 (version "0.5.1")
11169 (source
11170 (origin
11171 (method url-fetch)
11172 (uri (rubygems-uri "em-websocket" version))
11173 (sha256
11174 (base32
11175 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
11176 (build-system ruby-build-system)
11177 (arguments
11178 ;; No tests
11179 `(#:tests? #f))
11180 (propagated-inputs
11181 `(("ruby-eventmachine" ,ruby-eventmachine)
11182 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
11183 (native-inputs
11184 `(("bundler" ,bundler)
11185 ("ruby-rspec" ,ruby-rspec)))
11186 (home-page "https://github.com/igrigorik/em-websocket")
11187 (synopsis "EventMachine based WebSocket server")
11188 (description "Em-websocket is an EventMachine based WebSocket server
11189implementation.")
11190 (license license:expat)))
11191
11192(define-public ruby-rouge
11193 (package
11194 (name "ruby-rouge")
11195 (version "3.21.0")
11196 (source (origin
11197 (method url-fetch)
11198 (uri (rubygems-uri "rouge" version))
11199 (sha256
11200 (base32
11201 "1agrrmj88k9jkk36ra1ml2c1jffpp595pkxmcla74ac9ia09vn3s"))))
11202 (build-system ruby-build-system)
11203 (arguments `(#:tests? #f)); No rakefile
11204 (home-page "http://rouge.jneen.net/")
11205 (synopsis "Code highlighter")
11206 (description "Rouge is a code highlighter written in Ruby. It supports more
11207than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
11208is compatible with stylesheets designed for pygments.")
11209 (license (list
11210 ;; rouge is licensed under expat
11211 license:expat
11212 ;; pygments is licensed under bsd-2
11213 license:bsd-2))))
11214
11215(define-public ruby-hashie
11216 (package
11217 (name "ruby-hashie")
11218 (version "3.6.0")
11219 (source (origin
11220 (method url-fetch)
11221 (uri (rubygems-uri "hashie" version))
11222 (sha256
11223 (base32
11224 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
11225 (build-system ruby-build-system)
11226 (native-inputs
11227 `(("bundler" ,bundler)))
11228 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
11229 (home-page "https://github.com/intridea/hashie")
11230 (synopsis "Extensions to Ruby Hashes")
11231 (description "Hashie is a collection of classes and mixins that make Ruby
11232hashes more powerful.")
11233 (license license:expat)))
11234
11235(define-public ruby-heredoc-unindent
11236 (package
11237 (name "ruby-heredoc-unindent")
11238 (version "1.2.0")
11239 (source (origin
11240 (method url-fetch)
11241 (uri (rubygems-uri "heredoc_unindent" version))
11242 (sha256
11243 (base32
11244 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
11245 (build-system ruby-build-system)
11246 (native-inputs
11247 `(("ruby-hoe" ,ruby-hoe)))
11248 (home-page "https://github.com/adrianomitre/heredoc_unindent")
11249 (synopsis "Heredoc indentation cleaner")
11250 (description "This gem removes common margin from indented strings, such
11251as the ones produced by indented heredocs. In other words, it strips out
11252leading whitespace chars at the beginning of each line, but only as much as
11253the line with the smallest margin.
11254
11255It is acknowledged that many strings defined by heredocs are just code and
11256fact is that most parsers are insensitive to indentation. If, however, the
11257strings are to be used otherwise, be it for printing or testing, the extra
11258indentation will probably be an issue and hence this gem.")
11259 (license license:expat)))
11260
11261(define-public ruby-safe-yaml
11262 (package
11263 (name "ruby-safe-yaml")
11264 (version "1.0.5")
11265 (source
11266 (origin
11267 (method git-fetch)
11268 (uri (git-reference
11269 (url "https://github.com/dtao/safe_yaml")
11270 (commit version)))
11271 (file-name (git-file-name name version))
11272 (sha256
11273 (base32
11274 "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg"))))
11275 (build-system ruby-build-system)
11276 (native-inputs
11277 `(("ruby-rspec" ,ruby-rspec)
11278 ("ruby-hashie" ,ruby-hashie)
11279 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
11280 (arguments
11281 '(#:test-target "spec"
11282 #:phases
11283 (modify-phases %standard-phases
11284 (add-before 'check 'set-TZ
11285 (lambda _
11286 ;; This test is dependent on the timezone
11287 ;; spec/transform/to_date_spec.rb:35
11288 ;; # SafeYAML::Transform::ToDate converts times to the local
11289 ;; timezone
11290 (setenv "TZ" "UTC-11")
11291 #t)))))
11292 (home-page "https://github.com/dtao/safe_yaml")
11293 (synopsis "YAML parser")
11294 (description "The SafeYAML gem provides an alternative implementation of
11295YAML.load suitable for accepting user input in Ruby applications.")
11296 (license license:expat)))
11297
11298(define-public ruby-mercenary
11299 (package
11300 (name "ruby-mercenary")
11301 (version "0.4.0")
11302 (source (origin
11303 (method url-fetch)
11304 (uri (rubygems-uri "mercenary" version))
11305 (sha256
11306 (base32
11307 "0f2i827w4lmsizrxixsrv2ssa3gk1b7lmqh8brk8ijmdb551wnmj"))))
11308 (build-system ruby-build-system)
11309 (arguments `(#:test-target "spec"))
11310 (native-inputs
11311 `(("bundler" ,bundler)))
11312 (home-page "https://github.com/jekyll/mercenary")
11313 (synopsis "Command-line apps library in Ruby")
11314 (description "Mercenary is a lightweight and flexible library for writing
11315command-line apps in Ruby.")
11316 (license license:expat)))
11317
11318(define-public ruby-liquid
11319 (package
11320 (name "ruby-liquid")
11321 (version "4.0.0")
11322 (source (origin
11323 (method url-fetch)
11324 (uri (rubygems-uri "liquid" version))
11325 (sha256
11326 (base32
11327 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
11328 (build-system ruby-build-system)
11329 (arguments `(#:tests? #f)); No rakefile
11330 (home-page "https://shopify.github.io/liquid/")
11331 (synopsis "Template language")
11332 (description "Liquid is a template language written in Ruby. It is used
11333to load dynamic content on storefronts.")
11334 (license license:expat)))
11335
11336(define-public ruby-forwardable-extended
11337 (package
11338 (name "ruby-forwardable-extended")
11339 (version "2.6.0")
11340 (source (origin
11341 (method url-fetch)
11342 (uri (rubygems-uri "forwardable-extended" version))
11343 (sha256
11344 (base32
11345 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
11346 (build-system ruby-build-system)
11347 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
11348 (home-page "https://github.com/envygeeks/forwardable-extended")
11349 (synopsis "Delegation to hashes and instance variables in Forwardable")
11350 (description "Forwardable Extended provides more @code{Forwardable}
11351methods for your source as @code{Forwardable::Extended}.")
11352 (license license:expat)))
11353
11354(define-public ruby-pathutil
11355 (package
11356 (name "ruby-pathutil")
11357 (version "0.16.2")
11358 (source (origin
11359 (method url-fetch)
11360 (uri (rubygems-uri "pathutil" version))
11361 (sha256
11362 (base32
11363 "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"))))
11364 (build-system ruby-build-system)
11365 (propagated-inputs
11366 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
11367 (native-inputs
11368 `(("bundler" ,bundler)
11369 ("ruby-rspec" ,ruby-rspec)))
11370 ;; Fails with: cannot load such file --
11371 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
11372 (arguments `(#:tests? #f))
11373 (home-page "https://github.com/envygeeks/pathutil")
11374 (synopsis "Extended implementation of Pathname")
11375 (description "Pathutil tries to be a faster pure Ruby implementation of
11376Pathname.")
11377 (license license:expat)))
11378
11379(define-public ruby-terminal-table
11380 (package
11381 (name "ruby-terminal-table")
11382 (version "2.0.0")
11383 (source
11384 (origin
11385 (method url-fetch)
11386 (uri (rubygems-uri "terminal-table" version))
11387 (sha256
11388 (base32
11389 "18rbrh464ysqbdv53iwj0r8frshn65566kyj044cp3x9c2754jwh"))))
11390 (arguments
11391 '(#:phases
11392 (modify-phases %standard-phases
11393 (add-before 'check 'remove-gemfile-lock
11394 (lambda _
11395 (delete-file "Gemfile.lock")))
11396 (add-before 'check 'remove-unnecessary-dependencies
11397 (lambda _
11398 (substitute* "terminal-table.gemspec"
11399 (("s.add_runtime_dependency.*") "\n")
11400 (("s.add_development_dependency.*") "\n"))
11401 (substitute* "Gemfile"
11402 ((".*tins.*") "\n"))))
11403 (replace 'check
11404 (lambda* (#:key tests? #:allow-other-keys)
11405 (when tests?
11406 (invoke "rspec")))))))
11407 (build-system ruby-build-system)
11408 (propagated-inputs
11409 `(("ruby-unicode-display-width" ,ruby-unicode-display-width)))
11410 (native-inputs
11411 `(("ruby-rspec" ,ruby-rspec)))
11412 (home-page "https://github.com/tj/terminal-table")
11413 (synopsis "Simple, feature rich ASCII table generation library")
11414 (description
11415 "Terminal Table is a fast and simple, yet feature rich
11416table generator written in Ruby. It supports ASCII and
11417Unicode formatted tables.")
11418 (license license:expat)))
11419
11420(define-public jekyll
11421 (package
11422 (name "jekyll")
11423 (version "4.2.0")
11424 (source (origin
11425 (method url-fetch)
11426 (uri (rubygems-uri "jekyll" version))
11427 (sha256
11428 (base32
11429 "0cqkh78jw8scrajyx5nla0vwm9fvp2qql3kdcvvplcq9mazy8snq"))))
11430 (build-system ruby-build-system)
11431 (arguments
11432 ;; No rakefile, but a test subdirectory.
11433 `(#:tests? #f
11434 #:phases
11435 (modify-phases %standard-phases
11436 (add-before 'build 'fix-i18n
11437 (lambda _
11438 (substitute* ".gemspec"
11439 (("~> 0.7") ">= 0.7")
11440 (("~> 1.14") ">= 1.14"))
11441 #t)))))
11442 (propagated-inputs
11443 `(("ruby-addressable" ,ruby-addressable)
11444 ("ruby-colorator" ,ruby-colorator)
11445 ("ruby-em-websocket" ,ruby-em-websocket)
11446 ("ruby-i18n" ,ruby-i18n)
11447 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
11448 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
11449 ("ruby-kramdown" ,ruby-kramdown-parser-gfm)
11450 ("ruby-liquid" ,ruby-liquid)
11451 ("ruby-mercenary" ,ruby-mercenary)
11452 ("ruby-pathutil" ,ruby-pathutil)
11453 ("ruby-rouge" ,ruby-rouge)
11454 ("ruby-safe-yaml" ,ruby-safe-yaml)
11455 ("ruby-sassc" ,ruby-sassc)
11456 ("ruby-terminal-table" ,ruby-terminal-table)))
11457 (home-page "https://jekyllrb.com/")
11458 (synopsis "Static site generator")
11459 (description "Jekyll is a simple, blog aware, static site generator.")
11460 (license license:expat)))
11461
11462(define-public ruby-jekyll-paginate-v2
11463 (package
11464 (name "ruby-jekyll-paginate-v2")
11465 (version "3.0.0")
11466 (source (origin
11467 (method url-fetch)
11468 (uri (rubygems-uri "jekyll-paginate-v2" version))
11469 (sha256
11470 (base32
11471 "1qzlqhpiqz28624fp0ak76hfy7908w6kpx62v7z43aiwjv0yc6q0"))))
11472 (build-system ruby-build-system)
11473 (propagated-inputs
11474 `(("jekyll" ,jekyll)))
11475 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
11476 (synopsis "Pagination Generator for Jekyll 3")
11477 (description "The Pagination Generator forms the core of the pagination
11478logic in Jekyll. It calculates and generates the pagination pages.")
11479 (license license:expat)))
11480
11481(define-public ruby-faraday
11482 (package
11483 (name "ruby-faraday")
11484 (version "0.15.4")
11485 (source
11486 (origin
11487 (method url-fetch)
11488 (uri (rubygems-uri "faraday" version))
11489 (sha256
11490 (base32
11491 "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0"))))
11492 (build-system ruby-build-system)
11493 (arguments
11494 '(#:tests? #f))
11495 (propagated-inputs
11496 `(("ruby-multipart-post" ,ruby-multipart-post)))
11497 (synopsis "Ruby HTTP/REST API client library")
11498 (description
11499 "Faraday is a HTTP/REST API client library which provides a common
11500interface over different adapters.")
11501 (home-page "https://github.com/lostisland/faraday")
11502 (license license:expat)))
11503
11504(define-public ruby-nio4r
11505 (package
11506 (name "ruby-nio4r")
11507 (version "2.5.2")
11508 (source
11509 (origin
11510 (method url-fetch)
11511 (uri (rubygems-uri "nio4r" version))
11512 (sha256
11513 (base32
11514 "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c"))))
11515 (build-system ruby-build-system)
11516 (arguments
11517 '(#:phases
11518 (modify-phases %standard-phases
11519 (add-after 'unpack 'remove-unnecessary-dependencies
11520 (lambda _
11521 (substitute* "spec/spec_helper.rb"
11522 ;; Coveralls is for uploading test coverage information to an
11523 ;; online service, and thus unnecessary for building the Guix
11524 ;; package
11525 (("require \"coveralls\"") "")
11526 (("Coveralls\\.wear!") "")
11527 ;; Remove rspec/retry as we are not retrying the tests
11528 (("require \"rspec/retry\"") "")
11529 (("config\\.display_try_failure_messages = true") "")
11530 (("config\\.verbose_retry = true") ""))
11531 #t))
11532 (add-before 'check 'compile
11533 (lambda _
11534 (invoke "rake" "compile")
11535 #t))
11536 (replace 'check
11537 (lambda* (#:key tests? #:allow-other-keys)
11538 (when tests?
11539 (invoke "rspec"))
11540 #t)))))
11541 (native-inputs
11542 `(("bundler" ,bundler)
11543 ("ruby-rake-compiler" ,ruby-rake-compiler)
11544 ("ruby-rspec" ,ruby-rspec)
11545 ("ruby-rubocop" ,ruby-rubocop)))
11546 (synopsis "New I/O for Ruby")
11547 (description
11548 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
11549for scalable network clients and servers.")
11550 (home-page "https://github.com/socketry/nio4r")
11551 (license license:expat)))
11552
11553(define-public ruby-globalid
11554 (package
11555 (name "ruby-globalid")
11556 (version "0.4.2")
11557 (source
11558 (origin
11559 (method url-fetch)
11560 (uri (rubygems-uri "globalid" version))
11561 (sha256
11562 (base32
11563 "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"))))
11564 (build-system ruby-build-system)
11565 (arguments
11566 '(;; No included tests
11567 #:tests? #f))
11568 (propagated-inputs
11569 `(("ruby-activesupport" ,ruby-activesupport)))
11570 (synopsis "Generate URIs idenfitying model instances in Ruby")
11571 (description
11572 "@code{GlobalID} provides a way to generate URIs from a model in Ruby that
11573uniquely identify it.")
11574 (home-page "https://rubyonrails.org/")
11575 (license license:expat)))
11576
11577(define-public ruby-sprockets
11578 (package
11579 (name "ruby-sprockets")
11580 (version "3.7.2")
11581 (source
11582 (origin
11583 (method url-fetch)
11584 (uri (rubygems-uri "sprockets" version))
11585 (sha256
11586 (base32
11587 "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"))))
11588 (build-system ruby-build-system)
11589 (arguments
11590 '(;; No included tests
11591 #:tests? #f))
11592 (propagated-inputs
11593 `(("ruby-concurrent" ,ruby-concurrent)
11594 ("ruby-rack" ,ruby-rack)))
11595 (synopsis "Sprockets is a Rack-based asset packaging system")
11596 (description
11597 "Sprockets is a Rack-based asset packaging system that concatenates and
11598serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
11599 (home-page "https://github.com/rails/sprockets")
11600 (license license:expat)))
11601
11602(define-public ruby-mustache
11603 (package
11604 (name "ruby-mustache")
11605 (version "1.1.1")
11606 (source
11607 (origin
11608 (method url-fetch)
11609 (uri (rubygems-uri "mustache" version))
11610 (sha256
11611 (base32 "1l0p4wx15mi3wnamfv92ipkia4nsx8qi132c6g51jfdma3fiz2ch"))))
11612 (build-system ruby-build-system)
11613 (native-inputs
11614 `(("ruby-simplecov" ,ruby-simplecov)))
11615 (synopsis "framework-agnostic way to render logic-free views")
11616 (description
11617 "Mustache is a framework-agnostic way to render logic-free views.
11618Think of Mustache as a replacement for your views. Instead of views
11619consisting of ERB or HAML with random helpers and arbitrary logic,
11620your views are broken into two parts: a Ruby class and an HTML
11621template.")
11622 (home-page "https://github.com/mustache/mustache")
11623 (license license:expat)))
11624
11625(define-public ruby-mustermann
11626 (package
11627 (name "ruby-mustermann")
11628 (version "1.0.3")
11629 (source
11630 (origin
11631 (method url-fetch)
11632 (uri (rubygems-uri "mustermann" version))
11633 (sha256
11634 (base32
11635 "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1"))))
11636 (build-system ruby-build-system)
11637 (arguments
11638 ;; No tests.
11639 '(#:tests? #f))
11640 (synopsis "Library implementing patterns that behave like regular expressions")
11641 (description "Given a string pattern, Mustermann will turn it into an
11642object that behaves like a regular expression and has comparable performance
11643characteristics.")
11644 (home-page "https://github.com/sinatra/mustermann")
11645 (license license:expat)))
11646
11647(define-public ruby-html-proofer
11648 (package
11649 (name "ruby-html-proofer")
11650 (version "3.18.5")
11651 (source
11652 (origin
11653 (method git-fetch)
11654 (uri (git-reference
11655 (url "https://github.com/gjtorikian/html-proofer")
11656 (commit (string-append "v" version))))
11657 (file-name (git-file-name name version))
11658 (sha256
11659 (base32
11660 "1pxb0fajb3l3lm7sqj548qwl7vx6sx3jy7n4cns9d4lqx7s9r9xb"))))
11661 (build-system ruby-build-system)
11662 (arguments
11663 `(;; FIXME: Tests depend on rubocop-standard.
11664 #:tests? #f))
11665 (native-inputs
11666 `(("ruby-awesome-print" ,ruby-awesome-print)
11667 ("ruby-redcarpet" ,ruby-redcarpet)
11668 ("ruby-rspec" ,ruby-rspec)
11669 ("ruby-rubocop" ,ruby-rubocop)
11670 ("ruby-rubocop-performance" ,ruby-rubocop-performance)
11671 ("ruby-pry-byebug" ,ruby-pry-byebug)))
11672 (propagated-inputs
11673 `(("ruby-addressable" ,ruby-addressable)
11674 ("ruby-mercenary" ,ruby-mercenary)
11675 ("ruby-nokogumbo" ,ruby-nokogumbo)
11676 ("ruby-parallel" ,ruby-parallel)
11677 ("ruby-rainbow" ,ruby-rainbow)
11678 ("ruby-typhoeus" ,ruby-typhoeus)
11679 ("ruby-yell" ,ruby-yell)))
11680 (synopsis "Test your rendered HTML files to make sure they're accurate")
11681 (description
11682 "HTMLProofer is a set of tests to validate your HTML output. These
11683tests check if your image references are legitimate, if they have alt tags,
11684if your internal links are working, and so on. It's intended to be an
11685all-in-one checker for your output.")
11686 (home-page "https://github.com/gjtorikian/html-proofer")
11687 (license license:expat)))
11688
11689(define-public ruby-htmlentities
11690 (package
11691 (name "ruby-htmlentities")
11692 (version "4.3.4")
11693 (source
11694 (origin
11695 (method url-fetch)
11696 (uri (rubygems-uri "htmlentities" version))
11697 (sha256
11698 (base32
11699 "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"))))
11700 (build-system ruby-build-system)
11701 (arguments
11702 `(#:phases
11703 (modify-phases %standard-phases
11704 (replace 'check
11705 (lambda _
11706 (map (lambda (file)
11707 (invoke "ruby" "-Itest" file))
11708 (find-files "./test" ".*_test\\.rb")))))))
11709 (synopsis "Encode and decode (X)HTML entities")
11710 (description
11711 "This package provides a module for encoding and decoding (X)HTML
11712entities.")
11713 (home-page "https://github.com/threedaymonk/htmlentities")
11714 (license license:expat)))
11715
11716(define-public ruby-sinatra
11717 (package
11718 (name "ruby-sinatra")
11719 (version "2.0.8.1")
11720 (source
11721 (origin
11722 (method url-fetch)
11723 (uri (rubygems-uri "sinatra" version))
11724 (sha256
11725 (base32
11726 "0riy3hwjab1mr73jcqx3brmbmwspnw3d193j06a5f0fy1w35z15q"))))
11727 (build-system ruby-build-system)
11728 (arguments
11729 `(#:phases
11730 (modify-phases %standard-phases
11731 ;; See: https://github.com/sinatra/sinatra/issues/1578.
11732 (add-after 'extract-gemspec 'fix-slow-doc-generation
11733 (lambda _
11734 (substitute* "sinatra.gemspec"
11735 (("\"README.rdoc\"\\.freeze," all)
11736 (string-append all " \"--exclude=.*\\.md\".freeze,")))
11737 #t)))))
11738 (propagated-inputs
11739 `(("ruby-mustermann" ,ruby-mustermann)
11740 ("ruby-rack" ,ruby-rack)
11741 ("ruby-rack-protection" ,ruby-rack-protection)
11742 ("ruby-tilt" ,ruby-tilt)))
11743 (synopsis "DSL for quick web applications creation in Ruby")
11744 (description
11745 "Sinatra is a DSL for quickly creating web applications in Ruby with
11746minimal effort.")
11747 (home-page "http://sinatrarb.com/")
11748 (license license:expat)))
11749
11750(define-public ruby-thin
11751 (package
11752 (name "ruby-thin")
11753 (version "1.7.2")
11754 (source
11755 (origin
11756 (method url-fetch)
11757 (uri (rubygems-uri "thin" version))
11758 (sha256
11759 (base32
11760 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
11761 (build-system ruby-build-system)
11762 (arguments
11763 ;; No tests.
11764 '(#:tests? #f))
11765 (propagated-inputs
11766 `(("ruby-daemons" ,ruby-daemons)
11767 ("ruby-eventmachine" ,ruby-eventmachine)
11768 ("ruby-rack" ,ruby-rack)))
11769 (synopsis "Thin and fast web server for Ruby")
11770 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
11771@itemize
11772@item the Mongrel parser,
11773@item Event Machine, a network I/O library with high scalability, performance
11774and stability,
11775@item Rack, a minimal interface between webservers and Ruby frameworks.
11776@end itemize\n")
11777 (home-page "https://github.com/macournoyer/thin")
11778 (license license:ruby)))
11779
11780(define-public ruby-skinny
11781 (package
11782 (name "ruby-skinny")
11783 (version "0.2.4")
11784 (source
11785 (origin
11786 (method url-fetch)
11787 (uri (rubygems-uri "skinny" version))
11788 (sha256
11789 (base32
11790 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
11791 (build-system ruby-build-system)
11792 (arguments
11793 '(#:tests? #f ; No included tests
11794 #:phases
11795 (modify-phases %standard-phases
11796 (add-before 'build 'patch-gemspec
11797 (lambda _
11798 (substitute* ".gemspec"
11799 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
11800 "<eventmachine>, [\">= 1.0.0\"")
11801 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, ["))
11802 #t)))))
11803 (propagated-inputs
11804 `(("ruby-eventmachine" ,ruby-eventmachine)
11805 ("ruby-thin" ,ruby-thin)))
11806 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
11807 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
11808the Thin library.")
11809 (home-page "https://github.com/sj26/skinny")
11810 (license license:expat)))
11811
11812(define-public ruby-sys-filesystem
11813 (package
11814 (name "ruby-sys-filesystem")
11815 (version "1.3.4")
11816 (source (origin
11817 (method url-fetch)
11818 (uri (rubygems-uri "sys-filesystem" version))
11819 (sha256
11820 (base32
11821 "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01"))))
11822 (build-system ruby-build-system)
11823 (arguments
11824 '(#:phases (modify-phases %standard-phases
11825 (add-before 'check 'set-HOME
11826 (lambda _
11827 ;; Some tests attempt to stat $HOME. Let them.
11828 (setenv "HOME" "/tmp")
11829 #t)))))
11830 (propagated-inputs
11831 `(("ruby-ffi" ,ruby-ffi)))
11832 (native-inputs
11833 `(("ruby-mkmf-lite" ,ruby-mkmf-lite)))
11834 (synopsis "Gather file system information")
11835 (description
11836 "The @code{sys-filesystem} library provides a cross-platform interface
11837for gathering file system information, such as disk space and mount points.")
11838 (home-page "https://github.com/djberg96/sys-filesystem")
11839 (license license:asl2.0)))
11840
11841(define-public mailcatcher
11842 (package
11843 (name "mailcatcher")
11844 (version "0.7.1")
11845 (source
11846 (origin
11847 (method url-fetch)
11848 (uri (rubygems-uri "mailcatcher" version))
11849 (sha256
11850 (base32
11851 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
11852 (build-system ruby-build-system)
11853 (arguments
11854 ;; Tests require web/assets which is not included in the output. We
11855 ;; might be able to fix this by adding the Git repository to the GEM_PATH
11856 ;; of the tests. See ruby-mysql2.
11857 '(#:tests? #f
11858 #:phases
11859 (modify-phases %standard-phases
11860 (add-before 'build 'patch-gemspec
11861 (lambda _
11862 (substitute* ".gemspec"
11863 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
11864 "<eventmachine>, [\">= 1.0.9.1")
11865 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
11866 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
11867 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))
11868 #t))
11869 (add-before 'build 'loosen-dependency-contraint
11870 (lambda _
11871 (substitute* "lib/mail_catcher.rb"
11872 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
11873 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
11874 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
11875 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))
11876 #t)))))
11877 (inputs
11878 `(("ruby-eventmachine" ,ruby-eventmachine)
11879 ("ruby-mail" ,ruby-mail)
11880 ("ruby-rack" ,ruby-rack)
11881 ("ruby-sinatra" ,ruby-sinatra)
11882 ("ruby-skinny" ,ruby-skinny)
11883 ("ruby-sqlite3" ,ruby-sqlite3)
11884 ("ruby-thin" ,ruby-thin)))
11885 (synopsis "SMTP server which catches messages to display them a browser")
11886 (description
11887 "MailCatcher runs a super simple SMTP server which catches any message
11888sent to it to display in a web interface. Run mailcatcher, set your favourite
11889app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
11890then check out http://127.0.0.1:1080 to see the mail.")
11891 (home-page "https://mailcatcher.me")
11892 (license license:expat)))
11893
11894(define-public ruby-backport
11895 (package
11896 (name "ruby-backport")
11897 (version "1.1.2")
11898 (source
11899 (origin
11900 ;; The gem does not include test code, so fetch from the Git repository.
11901 (method git-fetch)
11902 (uri (git-reference
11903 (url "https://github.com/castwide/backport")
11904 (commit (string-append "v" version))))
11905 (file-name (git-file-name name version))
11906 (sha256
11907 (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2"))))
11908 (build-system ruby-build-system)
11909 (arguments
11910 `(#:test-target "spec"))
11911 (native-inputs
11912 `(("bundler" ,bundler)
11913 ("ruby-rspec" ,ruby-rspec)))
11914 (inputs
11915 `(("ruby-simplecov" ,ruby-simplecov)))
11916 (synopsis "Pure Ruby library for event-driven IO")
11917 (description
11918 "This package provides a pure Ruby library for event-driven IO.")
11919 (home-page "https://github.com/castwide/backport")
11920 (license license:expat)))
11921
11922(define-public ruby-json-schema
11923 (package
11924 (name "ruby-json-schema")
11925 (version "2.8.1")
11926 (source
11927 (origin
11928 (method url-fetch)
11929 (uri (rubygems-uri "json-schema" version))
11930 (sha256
11931 (base32
11932 "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5"))))
11933 (build-system ruby-build-system)
11934 (arguments
11935 `(#:tests? #f ; no tests
11936 #:phases
11937 (modify-phases %standard-phases
11938 (replace 'build
11939 (lambda _
11940 (invoke "gem" "build" ".gemspec"))))))
11941 (propagated-inputs
11942 `(("ruby-addressable" ,ruby-addressable)))
11943 (synopsis "Ruby JSON Schema Validator")
11944 (description "This library provides Ruby with an interface for validating
11945JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy
11946support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1
11947is also included.")
11948 (home-page "https://github.com/ruby-json-schema/json-schema")
11949 (license license:expat)))
11950
11951(define-public swagger-diff
11952 (package
11953 (name "swagger-diff")
11954 (version "1.1.2")
11955 (source
11956 (origin
11957 (method url-fetch)
11958 (uri (rubygems-uri "swagger-diff" version))
11959 (sha256
11960 (base32
11961 "1hxx50nga1bqn254iqjcdwkc9c72364ks9lyjyw10ajz0l0ly7sn"))))
11962 (build-system ruby-build-system)
11963 (arguments
11964 `(#:test-target "spec"
11965 #:phases
11966 (modify-phases %standard-phases
11967 ;; Don't run or require rubocop, the code linting tool, as this is a
11968 ;; bit unnecessary.
11969 (add-after 'unpack 'dont-run-rubocop
11970 (lambda _
11971 (substitute* "Rakefile"
11972 ((".*rubocop.*") "")
11973 ((".*RuboCop.*") ""))
11974 #t)))))
11975 (propagated-inputs
11976 `(("ruby-json-schema" ,ruby-json-schema)))
11977 (native-inputs
11978 `(("bundler" ,bundler)
11979 ("ruby-rspec-core" ,ruby-rspec-core)
11980 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
11981 (synopsis
11982 "Compare Open API Initiative specification files")
11983 (description
11984 "Swagger::Diff is a utility for comparing two different Open API
11985Initiative (OAI) specifications (formerly known as Swagger specifications).
11986It is intended to determine whether a newer API specification is
11987backwards-compatible with an older API specification.")
11988 (home-page "https://github.com/civisanalytics/swagger-diff")
11989 (license license:bsd-3)))
11990
11991(define-public ruby-reverse-markdown
11992 (package
11993 (name "ruby-reverse-markdown")
11994 (version "1.1.0")
11995 (source
11996 (origin
11997 (method url-fetch)
11998 (uri (rubygems-uri "reverse_markdown" version))
11999 (sha256
12000 (base32
12001 "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg"))))
12002 (build-system ruby-build-system)
12003 (propagated-inputs
12004 `(("ruby-nokogiri" ,ruby-nokogiri)))
12005 (native-inputs
12006 `(("bundler" ,bundler)
12007 ("ruby-rspec" ,ruby-rspec)
12008 ("ruby-kramdown" ,ruby-kramdown)
12009 ("ruby-simplecov" ,ruby-simplecov)))
12010 (arguments
12011 `(#:phases
12012 (modify-phases %standard-phases
12013 (replace 'check
12014 (lambda* (#:key tests? #:allow-other-keys)
12015 (when tests?
12016 (invoke "rspec"))
12017 #t)))))
12018 (synopsis "Convert HTML into Markdown")
12019 (description
12020 "This Ruby module allows you to map simple HTML back into
12021Markdown---e.g., if you want to import existing HTML data in your
12022application.")
12023 (home-page "https://github.com/xijo/reverse_markdown")
12024 (license license:wtfpl2)))
12025
12026(define-public ruby-solargraph
12027 (package
12028 (name "ruby-solargraph")
12029 (version "0.40.3")
12030 (source
12031 (origin
12032 (method url-fetch)
12033 (uri (rubygems-uri "solargraph" version))
12034 (sha256
12035 (base32
12036 "1gf049rm0yvw4r8r5yyi890idbfg8qh0dikqx5prvkh11srl73bz"))))
12037 (build-system ruby-build-system)
12038 (propagated-inputs
12039 `(("ruby-backport" ,ruby-backport)
12040 ("bundler" ,bundler)
12041 ("ruby-benchmark" ,ruby-benchmark)
12042 ("ruby-e2mmap" ,ruby-e2mmap)
12043 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
12044 ("ruby-kramdown" ,ruby-kramdown)
12045 ("ruby-kramdown-parser-gfm" ,ruby-kramdown-parser-gfm)
12046 ("ruby-maruku" ,ruby-maruku)
12047 ("ruby-nokogiri" ,ruby-nokogiri)
12048 ("ruby-parser" ,ruby-parser)
12049 ("ruby-reverse-markdown" ,ruby-reverse-markdown)
12050 ("ruby-rubocop" ,ruby-rubocop)
12051 ("ruby-thor" ,ruby-thor)
12052 ("ruby-tilt" ,ruby-tilt)
12053 ("ruby-yard" ,ruby-yard)))
12054 (native-inputs
12055 `(("ruby-rspec" ,ruby-rspec)
12056 ("ruby-pry" ,ruby-pry)
12057 ("ruby-simplecov" ,ruby-simplecov)
12058 ("ruby-webmock" ,ruby-webmock)))
12059 ;; FIXME: can't figure out how to run the tests properly:
12060
12061 ;; An error occurred while loading spec_helper.
12062 ;; Failure/Error: return gem_original_require(path)
12063 ;; LoadError:
12064 ;; cannot load such file -- spec_helper
12065 (arguments
12066 '(#:tests? #f
12067 #:phases
12068 (modify-phases %standard-phases
12069 (replace 'check
12070 (lambda* (#:key tests? #:allow-other-keys)
12071 (when tests?
12072 (invoke "rspec"))
12073 #t)))))
12074 (synopsis
12075 "IDE tools for code completion, inline documentation, and static analysis")
12076 (description
12077 "Solargraph provides a comprehensive suite of tools for Ruby
12078programming: intellisense, diagnostics, inline documentation, and type
12079checking.")
12080 (home-page "https://solargraph.org/")
12081 (license license:expat)))
12082
12083(define-public ruby-wayback-machine-downloader
12084 (package
12085 (name "ruby-wayback-machine-downloader")
12086 (version "2.2.1")
12087 (source
12088 (origin
12089 (method url-fetch)
12090 (uri (rubygems-uri
12091 "wayback_machine_downloader"
12092 version))
12093 (sha256
12094 (base32
12095 "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2"))))
12096 (build-system ruby-build-system)
12097 (arguments
12098 '(#:tests? #f)) ; no tests
12099 (synopsis "Download archived websites from the Wayback Machine")
12100 (description
12101 "Wayback Machine Downloader is a command line tool for downloading
12102websites from the Internet Archive's Wayback Machine (archive.org).
12103It allows fine grained control over what to download by specifying
12104which snapshots to consider and what files to include.")
12105 (home-page
12106 "https://github.com/hartator/wayback-machine-downloader")
12107 (license license:expat)))
12108
12109(define-public ruby-zeitwerk
12110 (package
12111 (name "ruby-zeitwerk")
12112 (version "2.4.2")
12113 (source
12114 (origin
12115 (method git-fetch)
12116 (uri (git-reference
12117 ;; No tests in the released gem.
12118 (url "https://github.com/fxn/zeitwerk")
12119 (commit (string-append "v" version))))
12120 (file-name (git-file-name name version))
12121 (sha256
12122 (base32
12123 "119fgdyb57gmss2yvfwfr47wcy8nny38sai72446krpihyavpizw"))))
12124 (build-system ruby-build-system)
12125 (native-inputs
12126 `(("ruby-minitest" ,ruby-minitest)
12127 ("ruby-minitest-focus" ,ruby-minitest-focus)
12128 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
12129 (synopsis "Efficient and thread-safe code loader for Ruby")
12130 (description
12131 "Zeitwerk implements constant autoloading with Ruby semantics. Each gem
12132and application may have their own independent autoloader, with its own
12133configuration, inflector, and logger. Supports autoloading, reloading, and
12134eager loading.")
12135 (home-page "https://github.com/fxn/zeitwerk")
12136 (license license:expat)))
12137
12138(define-public ruby-wwtd
12139 (package
12140 (name "ruby-wwtd")
12141 (version "1.4.1")
12142 (home-page "https://github.com/grosser/wwtd")
12143 (source (origin
12144 (method git-fetch)
12145 (uri (git-reference
12146 (url home-page)
12147 (commit (string-append "v" version))))
12148 (file-name (git-file-name name version))
12149 (sha256
12150 (base32
12151 "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2"))
12152 (modules '((guix build utils)))
12153 (snippet
12154 '(begin
12155 ;; Remove bundled library.
12156 (delete-file "spec/rake-12.3.0.gem")
12157 #t))))
12158 (build-system ruby-build-system)
12159 (arguments
12160 '(;; XXX: Tests need multiple versions of ruby, wants to run
12161 ;; `bundle install`, etc.
12162 #:tests? #f
12163 #:phases (modify-phases %standard-phases
12164 (replace 'replace-git-ls-files
12165 (lambda _
12166 (substitute* "wwtd.gemspec"
12167 (("git ls-files lib/ bin/`")
12168 "find lib/ bin/ -type f |sort`"))
12169 #t))
12170 (add-before 'check 'remove-version-constraints
12171 (lambda _
12172 (delete-file "Gemfile.lock")
12173 #t))
12174 (replace 'check
12175 (lambda* (#:key tests? #:allow-other-keys)
12176 (if tests?
12177 (invoke "rspec" "spec/")
12178 (format #t "test suite not run~%"))
12179 #t)))))
12180 (native-inputs
12181 `(("ruby-bump" ,ruby-bump)
12182 ("ruby-rspec" ,ruby-rspec)))
12183 (synopsis "Run @file{.travis.yml} files locally")
12184 (description
12185 "WWTD is a @dfn{Travis Simulator} that lets you run test matrices
12186defined in @file{.travis.yml} on your local machine, using @code{rvm},
12187@code{rbenv}, or @code{chruby} to test different versions of Ruby.")
12188 (license license:expat)))
12189
12190(define-public ruby-rugged
12191 (package
12192 (name "ruby-rugged")
12193 (version "1.1.0")
12194 (home-page "https://www.rubydoc.info/gems/rugged")
12195 (source
12196 (origin
12197 (method url-fetch)
12198 (uri (rubygems-uri "rugged" version))
12199 (sha256
12200 (base32 "04aq913plcxjw71l5r62qgz3bx3466p0wvgyfqahg5n3nybmcwqy"))))
12201 (build-system ruby-build-system)
12202 (arguments
12203 `(#:tests? #f
12204 #:gem-flags (list "--" "--use-system-libraries")))
12205 (inputs
12206 `(("libgit2" ,libgit2)))
12207 (native-inputs
12208 `(("ruby-minitest" ,ruby-minitest)
12209 ("ruby-pry" ,ruby-pry)
12210 ("ruby-rake-compiler" ,ruby-rake-compiler)))
12211 (synopsis "Ruby bindings to the libgit2 linkable C Git library")
12212 (description "Rugged is a library for accessing libgit2 in Ruby. It gives
12213you the speed and portability of libgit2 with the beauty of the Ruby
12214language.")
12215 (license license:expat)))
12216
12217(define-public ruby-yell
12218 (package
12219 (name "ruby-yell")
12220 (version "2.2.2")
12221 (source
12222 (origin
12223 (method url-fetch)
12224 (uri (rubygems-uri "yell" version))
12225 (sha256
12226 (base32
12227 "1g16kcdhdfvczn7x81jiq6afg3bdxmb73skqjyjlkp5nqcy6y5hx"))))
12228 (build-system ruby-build-system)
12229 (arguments
12230 `(#:phases
12231 (modify-phases %standard-phases
12232 (replace 'check
12233 (lambda _
12234 (invoke "rake" "examples")))))) ; there is no test target.
12235 (synopsis
12236 "Extensible logging library for Ruby")
12237 (description
12238 "Yell is a comprehensive logging replacement for Ruby. It defines
12239multiple adapters, various log level combinations and message formatting
12240options.")
12241 (home-page "https://github.com/rudionrails/yell")
12242 (license license:expat)))
12243
12244(define-public ruby-e2mmap
12245 (package
12246 (name "ruby-e2mmap")
12247 (version "0.1.0")
12248 (source
12249 (origin
12250 (method url-fetch)
12251 (uri (rubygems-uri "e2mmap" version))
12252 (sha256
12253 (base32
12254 "0n8gxjb63dck3vrmsdcqqll7xs7f3wk78mw8w0gdk9wp5nx6pvj5"))))
12255 (build-system ruby-build-system)
12256 (arguments
12257 `(#:tests? #f)) ;; There is a rakefile but no tests
12258 (synopsis
12259 "Module for defining custom exceptions with specific messages")
12260 (description
12261 "Exception2MessageMapper (e2mmap) is a helper module for easily defining
12262exceptions with predefined messages.")
12263 (home-page "https://github.com/ruby/e2mmap")
12264 (license license:bsd-2)))
12265
12266(define-public ruby-benchmark
12267 (package
12268 (name "ruby-benchmark")
12269 (version "0.1.1")
12270 (source
12271 (origin
12272 (method url-fetch)
12273 (uri (rubygems-uri "benchmark" version))
12274 (sha256
12275 (base32
12276 "1jvrl7400fv7v2jjri1r7ilj3sri36hzipwwgpn5psib4c9c59c6"))))
12277 (build-system ruby-build-system)
12278 (synopsis "Performance benchmarking library")
12279 (description "This package provides methods for benchmarking Ruby code,
12280giving detailed reports on the time taken for each task.")
12281 (home-page "https://github.com/ruby/benchmark")
12282 (license license:bsd-2)))
12283
12284(define-public ruby-jekyll-feed
12285 (package
12286 (name "ruby-jekyll-feed")
12287 (version "0.15.1")
12288 (source
12289 (origin
12290 (method url-fetch)
12291 (uri (rubygems-uri "jekyll-feed" version))
12292 (sha256
12293 (base32
12294 "1zxqkrnix0xiw98531h5ga6h69jhzlx2jh9qhvcl67p8nq3sgza9"))))
12295 (build-system ruby-build-system)
12296 (arguments
12297 `(#:tests? #false)) ;there are none
12298 (propagated-inputs
12299 `(("jekyll" ,jekyll)))
12300 (synopsis
12301 "Jekyll plugin to generate an Atom feed of your Jekyll posts")
12302 (description
12303 "This package provides a Jekyll plugin to generate an Atom feed
12304of your Jekyll posts.")
12305 (home-page
12306 "https://github.com/jekyll/jekyll-feed")
12307 (license license:expat)))
12308
12309(define-public ruby-jekyll-sitemap
12310 (package
12311 (name "ruby-jekyll-sitemap")
12312 (version "1.4.0")
12313 (source
12314 (origin
12315 (method url-fetch)
12316 (uri (rubygems-uri "jekyll-sitemap" version))
12317 (sha256
12318 (base32
12319 "0622rwsn5i0m5xcyzdn86l68wgydqwji03lqixdfm1f1xdfqrq0d"))))
12320 (build-system ruby-build-system)
12321 (arguments
12322 `(#:tests? #false)) ;there are none
12323 (propagated-inputs
12324 `(("jekyll" ,jekyll)))
12325 (synopsis
12326 "Automatically generate a sitemap.xml for your Jekyll site")
12327 (description
12328 "This package provides a Jekyll plugin to silently generate
12329a sitemaps.org compliant sitemap for your Jekyll site.")
12330 (home-page
12331 "https://github.com/jekyll/jekyll-sitemap")
12332 (license license:expat)))
12333
12334(define-public ruby-jekyll-seo-tag
12335 (package
12336 (name "ruby-jekyll-seo-tag")
12337 (version "2.7.1")
12338 (source
12339 (origin
12340 (method url-fetch)
12341 (uri (rubygems-uri "jekyll-seo-tag" version))
12342 (sha256
12343 (base32
12344 "0fsi75hymk2wswy216fs224p5ycrzjw1kshw1bsl5czhv42wr2w3"))))
12345 (build-system ruby-build-system)
12346 (arguments
12347 `(#:tests? #false))
12348 (propagated-inputs
12349 `(("jekyll" ,jekyll)))
12350 (synopsis
12351 "Jekyll plugin to add metadata tags for search engines and social networks")
12352 (description
12353 "This package provides a Jekyll plugin to add metadata tags for search engines
12354and social networks to better index and display your site's content.")
12355 (home-page
12356 "https://github.com/jekyll/jekyll-seo-tag")
12357 (license license:expat)))