gnu: ruby-rails: Update to 6.1.3.
[jackhill/guix/guix.git] / gnu / packages / ruby.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
3 ;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
4 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
5 ;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
6 ;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
7 ;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
8 ;;; Copyright © 2017 Nikita <nikita@n0.is>
9 ;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
10 ;;; Copyright © 2017, 2018, 2019, 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 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 ;;;
30 ;;; This file is part of GNU Guix.
31 ;;;
32 ;;; GNU Guix is free software; you can redistribute it and/or modify it
33 ;;; under the terms of the GNU General Public License as published by
34 ;;; the Free Software Foundation; either version 3 of the License, or (at
35 ;;; your option) any later version.
36 ;;;
37 ;;; GNU Guix is distributed in the hope that it will be useful, but
38 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
39 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
40 ;;; GNU General Public License for more details.
41 ;;;
42 ;;; You should have received a copy of the GNU General Public License
43 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
44
45 (define-module (gnu packages ruby)
46 #:use-module ((guix licenses) #:prefix license:)
47 #:use-module (gnu packages)
48 #:use-module (gnu packages bison)
49 #:use-module (gnu packages c)
50 #:use-module (gnu packages check)
51 #:use-module (gnu packages compression)
52 #:use-module (gnu packages crypto)
53 #:use-module (gnu packages curl)
54 #:use-module (gnu packages databases)
55 #:use-module (gnu packages dbm)
56 #:use-module (gnu packages rails)
57 #:use-module (gnu packages readline)
58 #:use-module (gnu packages autotools)
59 #:use-module (gnu packages haskell-xyz)
60 #:use-module (gnu packages java)
61 #:use-module (gnu packages libffi)
62 #:use-module (gnu packages libidn)
63 #:use-module (gnu packages linux)
64 #:use-module (gnu packages lsof)
65 #:use-module (gnu packages maths)
66 #:use-module (gnu packages ncurses)
67 #:use-module (gnu packages networking)
68 #:use-module (gnu packages node)
69 #:use-module (gnu packages protobuf)
70 #:use-module (gnu packages python)
71 #:use-module (gnu packages python-xyz)
72 #:use-module (gnu packages ragel)
73 #:use-module (gnu packages rsync)
74 #:use-module (gnu packages sqlite)
75 #:use-module (gnu packages tls)
76 #:use-module (gnu packages version-control)
77 #:use-module (guix packages)
78 #:use-module (guix download)
79 #:use-module (guix git-download)
80 #:use-module (guix gexp)
81 #:use-module (guix utils)
82 #:use-module (guix build-system gnu)
83 #:use-module (gnu packages xml)
84 #:use-module (gnu packages web)
85 #:use-module (guix build-system ruby)
86 #:use-module ((srfi srfi-1) #:select (alist-delete)))
87
88 (define %prawn-project-licenses
89 ;; This set of licenses applies to most (all?) components of the Prawn
90 ;; project (it is triple licensed).
91 (list license:ruby
92 license:gpl2+
93 license:gpl3+))
94
95 (define-public ruby
96 (package
97 (name "ruby")
98 (version "2.6.5")
99 (source
100 (origin
101 (method url-fetch)
102 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
103 (version-major+minor version)
104 "/ruby-" version ".tar.xz"))
105 (sha256
106 (base32
107 "0qhsw2mr04f3lqinkh557msr35pb5rdaqy4vdxcj91flgxqxmmnm"))
108 (modules '((guix build utils)))
109 (snippet `(begin
110 ;; Remove bundled libffi
111 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
112 #t))))
113 (build-system gnu-build-system)
114 (arguments
115 `(#:test-target "test"
116 #:configure-flags '("--enable-shared") ; dynamic linking
117 #:phases
118 (modify-phases %standard-phases
119 (add-before 'configure 'replace-bin-sh-and-remove-libffi
120 (lambda _
121 (substitute* '("Makefile.in"
122 "ext/pty/pty.c"
123 "io.c"
124 "lib/mkmf.rb"
125 "process.c"
126 "test/rubygems/test_gem_ext_configure_builder.rb"
127 "test/rdoc/test_rdoc_parser.rb"
128 "test/ruby/test_rubyoptions.rb"
129 "test/ruby/test_process.rb"
130 "test/ruby/test_system.rb"
131 "tool/rbinstall.rb")
132 (("/bin/sh") (which "sh")))
133 #t)))))
134 (inputs
135 `(("readline" ,readline)
136 ("openssl" ,openssl)
137 ("libffi" ,libffi)
138 ("gdbm" ,gdbm)))
139 (propagated-inputs
140 `(("zlib" ,zlib)))
141 (native-search-paths
142 (list (search-path-specification
143 (variable "GEM_PATH")
144 (files (list (string-append "lib/ruby/vendor_ruby"))))))
145 (synopsis "Programming language interpreter")
146 (description "Ruby is a dynamic object-oriented programming language with
147 a focus on simplicity and productivity.")
148 (home-page "https://www.ruby-lang.org")
149 (license license:ruby)))
150
151 (define-public ruby-2.7
152 (package
153 (inherit ruby)
154 (version "2.7.2")
155 (source
156 (origin
157 (method url-fetch)
158 (uri (string-append "https://cache.ruby-lang.org/pub/ruby/"
159 (version-major+minor version)
160 "/ruby-" version ".tar.gz"))
161 (sha256
162 (base32
163 "1m63461mxi3fg4y3bspbgmb0ckbbb1ldgf9xi0piwkpfsk80cmvf"))
164 (modules '((guix build utils)))
165 (snippet `(begin
166 ;; Remove bundled libffi
167 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
168 #t))))
169 (arguments
170 `(#:test-target "test"
171 #:configure-flags '("--enable-shared") ; dynamic linking
172 #:phases
173 (modify-phases %standard-phases
174 (add-before 'configure 'replace-bin-sh-and-remove-libffi
175 (lambda _
176 (substitute* '("configure.ac"
177 "template/Makefile.in"
178 "lib/rubygems/installer.rb"
179 "ext/pty/pty.c"
180 "io.c"
181 "lib/mkmf.rb"
182 "process.c"
183 "test/rubygems/test_gem_ext_configure_builder.rb"
184 "test/rdoc/test_rdoc_parser.rb"
185 "test/ruby/test_rubyoptions.rb"
186 "test/ruby/test_process.rb"
187 "test/ruby/test_system.rb"
188 "tool/rbinstall.rb")
189 (("/bin/sh") (which "sh")))
190 #t)))))
191 (native-inputs
192 `(("autoconf" ,autoconf)))))
193
194 (define-public ruby-3.0
195 (package
196 (inherit ruby-2.7)
197 (version "3.0.0")
198 (source
199 (origin
200 (method url-fetch)
201 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
202 (version-major+minor version)
203 "/ruby-" version ".tar.xz"))
204 (sha256
205 (base32
206 "1cbcixwnr0y8q0lg67wjgplp06kjd6p6hjjh680csv3v0bpsxgv8"))))))
207
208 (define-public ruby-2.5
209 (package
210 (inherit ruby)
211 (version "2.5.8")
212 (source
213 (origin
214 (method url-fetch)
215 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
216 (version-major+minor version)
217 "/ruby-" version ".tar.xz"))
218 (sha256
219 (base32
220 "0vad5ah1lrdhxsyqr5iqc8c7r7qczpmm76cz8rsf4crimpzv5483"))
221 (modules '((guix build utils)))
222 (snippet `(begin
223 ;; Remove bundled libffi
224 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
225 #t))))))
226
227 (define-public ruby-2.4
228 (package
229 (inherit ruby)
230 (version "2.4.10")
231 (source
232 (origin
233 (method url-fetch)
234 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
235 (version-major+minor version)
236 "/ruby-" version ".tar.xz"))
237 (sha256
238 (base32
239 "1prhqlgik1zmw9lakl6hkriqslspw48pvhxff17h7ns42p8qwrnm"))
240 (modules '((guix build utils)))
241 (snippet `(begin
242 ;; Remove bundled libffi
243 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
244 #t))))))
245
246 (define-public mruby
247 (package
248 (name "mruby")
249 (version "2.1.2")
250 (source
251 (origin
252 (method git-fetch)
253 (uri (git-reference
254 (url "https://github.com/mruby/mruby")
255 (commit version)))
256 (file-name (git-file-name name version))
257 (sha256
258 (base32
259 "0fhfv8pi7i8jn2vgk2n2rjnbnfa12nhj514v8i4k353n7q4pmkh3"))))
260 (build-system gnu-build-system)
261 (arguments
262 `(#:test-target "test"
263 #:phases
264 (modify-phases %standard-phases
265 (delete 'configure)
266 (add-after 'unpack 'enable-verbose-tests
267 (lambda _
268 (substitute* "Makefile"
269 (("ruby ./minirake" m)
270 (string-append m " --verbose")))
271 #t))
272 (add-after 'unpack 'disable-broken-tests
273 (lambda _
274 (substitute* "mrbgems/mruby-io/test/io.rb"
275 (("assert\\('IO.popen.+$" m)
276 (string-append m "skip \"Hangs in the Guix build environment\"\n"))
277 (("assert\\('IO#isatty.+$" m)
278 (string-append m "skip \"Disable for Guix; there is no /dev/tty\"\n"))
279 ;; This one is really weird. The *expected* output is all wrong.
280 (("assert\\('`cmd`.*" m)
281 (string-append m "skip \"Disable for Guix\"\n"))
282 (("echo foo")
283 (string-append (which "echo") " foo")))
284 #t))
285 ;; There is no install target
286 (replace 'install
287 (lambda* (#:key outputs #:allow-other-keys)
288 (let* ((out (assoc-ref outputs "out"))
289 (bin (string-append out "/bin"))
290 (lib (string-append out "/lib")))
291 (mkdir-p bin)
292 (copy-recursively "build/host/bin" bin)
293 (mkdir-p lib)
294 (copy-recursively "build/host/lib" lib))
295 #t)))))
296 (native-inputs
297 `(("ruby" ,ruby)
298 ("bison" ,bison)))
299 (home-page "https://github.com/mruby/mruby")
300 (synopsis "Lightweight Ruby")
301 (description "mruby is the lightweight implementation of the Ruby
302 language. Its syntax is Ruby 1.9 compatible. mruby can be linked and
303 embedded within your application.")
304 (license license:expat)))
305
306 (define-public ruby-commander
307 (package
308 (name "ruby-commander")
309 (version "4.4.7")
310 (source
311 (origin
312 (method url-fetch)
313 (uri (rubygems-uri "commander" version))
314 (sha256
315 (base32
316 "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg"))))
317 (build-system ruby-build-system)
318 (arguments
319 `(#:test-target "spec"
320 #:phases
321 (modify-phases %standard-phases
322 ;; Don't run or require rubocop, the code linting tool, as this is a
323 ;; bit unnecessary.
324 (add-after 'unpack 'dont-run-rubocop
325 (lambda _
326 (substitute* "Rakefile"
327 ((".*rubocop.*") "")
328 ((".*RuboCop.*") ""))
329 #t)))))
330 (propagated-inputs
331 `(("ruby-highline" ,ruby-highline)))
332 (native-inputs
333 `(("bundler" ,bundler)
334 ("ruby-rspec-core" ,ruby-rspec-core)
335 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
336 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
337 ("ruby-simplecov" ,ruby-simplecov)))
338 (home-page "https://github.com/commander-rb/commander")
339 (synopsis "Library for building Ruby command-line executables")
340 (description
341 "Commander aims to be a complete solution for Ruby command-line
342 executables. Commander bridges the gap between other terminal related
343 libraries (OptionParser, HighLine), while providing many new features, and an
344 elegant API.")
345 (license license:expat)))
346
347 (define-public ruby-highline
348 (package
349 (name "ruby-highline")
350 (version "2.0.1")
351 (source
352 (origin
353 (method url-fetch)
354 (uri (rubygems-uri "highline" version))
355 (sha256
356 (base32
357 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
358 (build-system ruby-build-system)
359 (arguments
360 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
361 (native-inputs
362 `(("bundler" ,bundler)
363 ("ruby-code-statistics" ,ruby-code-statistics)))
364 (synopsis
365 "HighLine helps you build command-line interfaces")
366 (description
367 "HighLine provides a high-level IO library that provides validation,
368 type conversion, and more for command-line interfaces. HighLine also includes
369 a menu system for providing multiple options to the user.")
370 (home-page "https://github.com/JEG2/highline")
371 (license (list license:gpl2 license:ruby))))
372
373 (define-public ruby-hoe
374 (package
375 (name "ruby-hoe")
376 (version "3.21.0")
377 (source (origin
378 (method url-fetch)
379 (uri (rubygems-uri "hoe" version))
380 (sha256
381 (base32
382 "0qid0n56mgsjvq5ksxajv0gb92akky8imwgvw22ajms5g4fd6nf4"))))
383 (build-system ruby-build-system)
384 (arguments
385 '(#:phases
386 (modify-phases %standard-phases
387 ;; One of the tests fails if the SOURCE_DATE_EPOCH environment
388 ;; variable is set, so unset it for the duration of the tests.
389 ;;
390 ;; TestHoe#test_possibly_better
391 ;; [/tmp/guix-build-ruby-hoe-3.20.0.drv-0/gem/test/test_hoe.rb:250]:
392 ;; Expected: 2019-11-12 00:00:00 UTC
393 ;; Actual: 1970-01-01 00:00:00 UTC
394 (add-before 'check 'unset-SOURCE-DATE-EPOCH
395 (lambda _
396 (unsetenv "SOURCE_DATE_EPOCH")
397 #t))
398 (add-after 'check 'set-SOURCE-DATE-EPOCH-again
399 (lambda _
400 (setenv "SOURCE_DATE_EPOCH" "1")
401 #t)))))
402 (synopsis "Ruby project management helper")
403 (description
404 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
405 maintain, and release projects and includes a dynamic plug-in system allowing
406 for easy extensibility. Hoe ships with plug-ins for all the usual project
407 tasks including rdoc generation, testing, packaging, deployment, and
408 announcement.")
409 (home-page "https://www.zenspider.com/projects/hoe.html")
410 (license license:expat)))
411
412 (define-public ruby-rake-compiler
413 (package
414 (name "ruby-rake-compiler")
415 (version "1.1.0")
416 (source (origin
417 (method url-fetch)
418 (uri (rubygems-uri "rake-compiler" version))
419 (sha256
420 (base32
421 "0l4hg21v0phfrfsc2hilgmwvn2imxr0byqh8dv16bya1s5d3km0q"))))
422 (build-system ruby-build-system)
423 (arguments
424 '(#:tests? #f)) ; needs cucumber
425 (synopsis "Building and packaging helper for Ruby native extensions")
426 (description "Rake-compiler provides a framework for building and
427 packaging native C and Java extensions in Ruby.")
428 (home-page "https://github.com/rake-compiler/rake-compiler")
429 (license license:expat)))
430
431 (define-public ruby-rsync
432 (package
433 (name "ruby-rsync")
434 (version "1.0.9")
435 (source
436 (origin
437 (method url-fetch)
438 (uri (rubygems-uri "rsync" version))
439 (sha256
440 (base32
441 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
442 (build-system ruby-build-system)
443 (arguments
444 '(#:test-target "spec"
445 #:phases
446 (modify-phases %standard-phases
447 (add-after 'unpack 'remove-coveralls-requirement
448 (lambda _
449 (substitute* "spec/spec_helper.rb"
450 (("require 'coveralls'") "")
451 (("Coveralls.wear!") ""))
452 #t)))))
453 (native-inputs
454 `(("bundler" ,bundler)
455 ("rsync" ,rsync)
456 ("ruby-rspec-core" ,ruby-rspec-core)
457 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
458 ("ruby-rspec-mocks" ,ruby-rspec-mocks)))
459 (home-page "https://github.com/jbussdieker/ruby-rsync")
460 (synopsis "Ruby wrapper around rsync")
461 (description
462 "Ruby Rsync is a Ruby library that can synchronize files between remote
463 hosts by wrapping the @file{rsync} binary.")
464 (license license:expat)))
465
466 (define-public ruby-i18n
467 (package
468 (name "ruby-i18n")
469 (version "1.7.0")
470 (source (origin
471 (method url-fetch)
472 (uri (rubygems-uri "i18n" version))
473 (sha256
474 (base32
475 "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl"))))
476 (build-system ruby-build-system)
477 (arguments
478 '(#:tests? #f)) ; no tests
479 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
480 (synopsis "Internationalization library for Ruby")
481 (description "Ruby i18n is an internationalization and localization
482 solution for Ruby programs. It features translation and localization,
483 interpolation of values to translations, pluralization, customizable
484 transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
485 translation data, custom key/scope separator, custom exception handlers, and
486 an extensible architecture with a swappable backend.")
487 (home-page "https://github.com/ruby-i18n/i18n")
488 (license license:expat)))
489
490 (define-public ruby-iruby
491 (package
492 (name "ruby-iruby")
493 (version "0.3")
494 (source
495 (origin
496 (method url-fetch)
497 (uri (rubygems-uri "iruby" version))
498 (sha256
499 (base32
500 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
501 (build-system ruby-build-system)
502 (arguments
503 ;; TODO: Tests currently fail.
504 ;;
505 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
506 ;;
507 ;; 1) Failure:
508 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
509 ;; In [ expected
510 ;;
511 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
512 '(#:tests? #f
513 #:phases
514 (modify-phases %standard-phases
515 (add-after 'unpack 'patch-ipython
516 (lambda* (#:key inputs #:allow-other-keys)
517 (substitute* "lib/iruby/command.rb"
518 (("version = `")
519 (string-append
520 "version = `"
521 (assoc-ref inputs "python-ipython")
522 "/bin/"))
523 (("Kernel\\.exec\\('")
524 (string-append
525 "Kernel.exec('"
526 (assoc-ref inputs "python-ipython")
527 "/bin/")))
528 #t)))))
529 (inputs
530 `(("python-ipython" ,python-ipython)))
531 (propagated-inputs
532 `(("ruby-bond" ,ruby-bond)
533 ("ruby-data_uri" ,ruby-data_uri)
534 ("ruby-mimemagic" ,ruby-mimemagic)
535 ("ruby-multi-json" ,ruby-multi-json)
536 ("ruby-cztop" ,ruby-cztop)
537 ;; Optional inputs
538 ("ruby-pry" ,ruby-pry)))
539 (synopsis "Ruby kernel for Jupyter/IPython")
540 (description
541 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
542 notebook).")
543 (home-page "https://github.com/SciRuby/iruby")
544 (license license:expat)))
545
546 ;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
547 ;; dependencies use RSpec for their test suites! To avoid these circular
548 ;; dependencies, we disable tests for all of the RSpec-related packages.
549 (define-public ruby-rspec-support
550 (package
551 (name "ruby-rspec-support")
552 (version "3.8.0")
553 (source (origin
554 (method url-fetch)
555 (uri (rubygems-uri "rspec-support" version))
556 (sha256
557 (base32
558 "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609"))))
559 (build-system ruby-build-system)
560 (arguments
561 '(#:tests? #f)) ; avoid dependency cycles
562 (synopsis "RSpec support library")
563 (description "Support utilities for RSpec gems.")
564 (home-page "https://github.com/rspec/rspec-support")
565 (license license:expat)))
566
567 (define-public ruby-rspec-core
568 (package
569 (name "ruby-rspec-core")
570 (version "3.8.0")
571 (source (origin
572 (method url-fetch)
573 (uri (rubygems-uri "rspec-core" version))
574 (sha256
575 (base32
576 "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p"))))
577 (build-system ruby-build-system)
578 (arguments
579 '(#:tests? #f)) ; avoid dependency cycles
580 (propagated-inputs
581 `(("ruby-rspec-support" ,ruby-rspec-support)))
582 (synopsis "RSpec core library")
583 (description "Rspec-core provides the RSpec test runner and example
584 groups.")
585 (home-page "https://github.com/rspec/rspec-core")
586 (license license:expat)))
587
588 (define-public ruby-rspec-core-2
589 (package (inherit ruby-rspec-core)
590 (version "2.14.8")
591 (source (origin
592 (method url-fetch)
593 (uri (rubygems-uri "rspec-core" version))
594 (sha256
595 (base32
596 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
597 (propagated-inputs `())))
598
599 (define-public ruby-diff-lcs
600 (package
601 (name "ruby-diff-lcs")
602 (version "1.3")
603 (source (origin
604 (method url-fetch)
605 (uri (rubygems-uri "diff-lcs" version))
606 (sha256
607 (base32
608 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
609 (build-system ruby-build-system)
610 (arguments
611 '(#:tests? #f)) ; avoid dependency cycles
612 (synopsis "Compute the difference between two Enumerable sequences")
613 (description "Diff::LCS computes the difference between two Enumerable
614 sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
615 It includes utilities to create a simple HTML diff output format and a
616 standard diff-like tool.")
617 (home-page "https://github.com/halostatue/diff-lcs")
618 (license license:expat)))
619
620 (define-public ruby-rspec-expectations
621 (package
622 (name "ruby-rspec-expectations")
623 (version "3.8.2")
624 (source (origin
625 (method url-fetch)
626 (uri (rubygems-uri "rspec-expectations" version))
627 (sha256
628 (base32
629 "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm"))))
630 (build-system ruby-build-system)
631 (arguments
632 '(#:tests? #f)) ; avoid dependency cycles
633 (propagated-inputs
634 `(("ruby-rspec-support" ,ruby-rspec-support)
635 ("ruby-diff-lcs" ,ruby-diff-lcs)))
636 (synopsis "RSpec expectations library")
637 (description "Rspec-expectations provides a simple API to express expected
638 outcomes of a code example.")
639 (home-page "https://github.com/rspec/rspec-expectations")
640 (license license:expat)))
641
642 (define-public ruby-rspec-expectations-2
643 (package (inherit ruby-rspec-expectations)
644 (version "2.14.5")
645 (source (origin
646 (method url-fetch)
647 (uri (rubygems-uri "rspec-expectations" version))
648 (sha256
649 (base32
650 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
651 (propagated-inputs
652 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
653
654 (define-public ruby-sorcerer
655 (package
656 (name "ruby-sorcerer")
657 (version "2.0.1")
658 (source
659 (origin
660 (method url-fetch)
661 (uri (rubygems-uri "sorcerer" version))
662 (sha256
663 (base32
664 "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h"))))
665 (build-system ruby-build-system)
666 (synopsis "Ripper-style abstract syntax tree to Ruby source generator")
667 (description "Sorcerer generates Ruby code from a Ripper-like abstract
668 syntax tree (i.e. S-Expressions). Sorcerer is targeted mainly at small
669 snippets of Ruby code, expressible in a single line. Longer examples may be
670 re-sourced, but they will be rendered in a single-line format.")
671 (home-page "https://github.com/rspec-given/sorcerer")
672 (license license:expat)))
673
674 (define-public ruby-given-core
675 (package
676 (name "ruby-given-core")
677 (version "3.8.0")
678 (source
679 (origin
680 (method url-fetch)
681 (uri (rubygems-uri "given_core" version))
682 (sha256
683 (base32
684 "1lzyqllbbv6as3qgwz2007mvy7wy247bgkch9adnmh1zfa73bkrg"))))
685 (build-system ruby-build-system)
686 (arguments '(#:tests? #f)) ;no test suite for the core package
687 (propagated-inputs
688 `(("ruby-sorcerer" ,ruby-sorcerer)))
689 (synopsis "Core abstractions used by rspec-given and minitest-given")
690 (description "Given_core is the basic functionality behind rspec-given and
691 minitest-given, extensions that allow the use of Given/When/Then terminology
692 when defining specifications.")
693 (home-page "https://github.com/rspec-given/rspec-given")
694 (license license:expat)))
695
696 (define-public ruby-rspec-given
697 (package
698 (name "ruby-rspec-given")
699 (version "3.8.0")
700 (source
701 (origin
702 (method url-fetch)
703 (uri (rubygems-uri "rspec-given" version))
704 (sha256
705 (base32
706 "1783bazja10kbha8hk15khvybsq88siyax02cpkk688604h54nji"))))
707 (build-system ruby-build-system)
708 (arguments
709 `(#:test-target "rs"
710 #:phases
711 (modify-phases %standard-phases
712 (add-after 'unpack 'fix-rakefile
713 (lambda _
714 (substitute* '("Rakefile" "rakelib/gemspec.rake")
715 (("require '\\./lib/given/.*") "")
716 (("Given::VERSION") (format #f "~s" ,version))
717 ;; Fix the error: "cannot load such file -- example_helper"
718 (("sh \"rspec")
719 "sh \"rspec -Ilib:examples"))
720 #t))
721 (add-after 'extract-gemspec 'delete-failing-tests
722 ;; See: https://github.com/jimweirich/rspec-given/issues/57.
723 (lambda _
724 (substitute* ".gemspec"
725 (("\"spec/lib/given/natural_assertion_spec.rb\".freeze, ")
726 "")
727 (("\"examples/integration/failing_messages_spec.rb\".freeze, ")
728 ""))
729 (delete-file "spec/lib/given/natural_assertion_spec.rb")
730 (delete-file "examples/integration/failing_messages_spec.rb")
731 #t)))))
732 (native-inputs
733 `(("ruby-rspec" ,ruby-rspec)
734 ("ruby-minitest" ,ruby-minitest)))
735 (propagated-inputs
736 `(("ruby-given-core" ,ruby-given-core)
737 ("ruby-rspec" ,ruby-rspec)))
738 (synopsis "Given/When/Then for RSpec and Minitest")
739 (description "Given is an RSpec extension that allows the use of
740 Given/When/Then terminology when defining specifications, in a way similar to
741 the Cucumber Gherkin language.")
742 (home-page "https://github.com/rspec-given/rspec-given")
743 (license license:expat)))
744
745 (define-public ruby-rspec-its
746 (package
747 (name "ruby-rspec-its")
748 (version "1.3.0")
749 (source
750 (origin
751 (method git-fetch)
752 (uri (git-reference
753 (url "https://github.com/rspec/rspec-its")
754 (commit (string-append "v" version))))
755 (file-name (git-file-name name version))
756 (sha256
757 (base32
758 "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p"))))
759 (build-system ruby-build-system)
760 (arguments
761 `(#:test-target "spec"
762 #:phases
763 (modify-phases %standard-phases
764 (add-after 'unpack 'dont-install-gems-from-gemfile
765 (lambda _
766 (substitute* "Gemfile"
767 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
768 ""))
769 #t))
770 (add-before 'build 'loosen-ffi-requirement
771 (lambda _
772 ;; Accept any version of ruby-ffi.
773 (substitute* "Gemfile"
774 ((" gem 'ffi', '~> 1\\.9\\.25'")
775 " gem 'ffi'"))
776 #t))
777 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
778 (lambda _
779 (substitute* "rspec-its.gemspec"
780 (("rake.*") "rake'\n")
781 (("spec.add_development_dependency 'cucumber'.*")
782 "spec.add_development_dependency 'cucumber'\n")
783 (("bundler.*") "bundler'\n")
784 (("\"aruba.*") "'aruba'\n"))
785 #t)))))
786 (propagated-inputs
787 `(("ruby-rspec-core" ,ruby-rspec-core)
788 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
789 (native-inputs
790 `(("bundler" ,bundler)
791 ("ruby-cucumber" ,ruby-cucumber)
792 ("ruby-ffi" ,ruby-ffi)
793 ("ruby-aruba" ,ruby-aruba)))
794 (synopsis "RSpec extension that provides the @code{its} method")
795 (description
796 "RSpec::Its provides the its method as a short-hand to specify the expected
797 value of an attribute. For example, one can use @code{its(:size)\\{should
798 eq(1)\\}}.")
799 (home-page "https://github.com/rspec/rspec-its")
800 (license license:expat)))
801
802 ;;; This variant is used to break a cycle with ruby-protobuf.
803 (define-public ruby-rspec-its-minimal
804 (hidden-package
805 (package
806 (inherit ruby-rspec-its)
807 (arguments
808 (substitute-keyword-arguments (package-arguments ruby-rspec-its)
809 ((#:tests? _ #f) #f)))
810 (native-inputs '()))))
811
812 (define-public ruby-rspec-mocks
813 (package
814 (name "ruby-rspec-mocks")
815 (version "3.8.0")
816 (source (origin
817 (method url-fetch)
818 (uri (rubygems-uri "rspec-mocks" version))
819 (sha256
820 (base32
821 "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp"))))
822 (build-system ruby-build-system)
823 (arguments
824 '(#:tests? #f)) ; avoid dependency cycles
825 (propagated-inputs
826 `(("ruby-rspec-support" ,ruby-rspec-support)
827 ("ruby-diff-lcs" ,ruby-diff-lcs)))
828 (synopsis "RSpec stubbing and mocking library")
829 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
830 support for stubbing and mocking.")
831 (home-page "https://github.com/rspec/rspec-mocks")
832 (license license:expat)))
833
834 (define-public ruby-rspec-mocks-2
835 (package (inherit ruby-rspec-mocks)
836 (version "2.14.6")
837 (source (origin
838 (method url-fetch)
839 (uri (rubygems-uri "rspec-mocks" version))
840 (sha256
841 (base32
842 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
843 (propagated-inputs
844 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
845
846 (define-public ruby-rspec-rerun
847 (package
848 (name "ruby-rspec-rerun")
849 (version "1.1.0")
850 (source
851 (origin
852 (method url-fetch)
853 (uri (rubygems-uri "rspec-rerun" version))
854 (sha256
855 (base32
856 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
857 (build-system ruby-build-system)
858 (arguments
859 '(;; No included tests
860 #:tests? #f))
861 (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
862 (synopsis "Track failed RSpec tests to re-run them")
863 (description
864 "This package provides an automated way to track, and then re-run failed
865 RSpec tests.")
866 (home-page "https://github.com/dblock/rspec-rerun")
867 (license license:expat)))
868
869 (define-public ruby-rspec-wait
870 (package
871 (name "ruby-rspec-wait")
872 (version "0.0.9")
873 (source
874 (origin
875 (method url-fetch)
876 (uri (rubygems-uri "rspec-wait" version))
877 (sha256
878 (base32
879 "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
880 (build-system ruby-build-system)
881 (arguments
882 '(#:phases
883 (modify-phases %standard-phases
884 (replace 'check
885 (lambda _
886 (invoke "rake" "spec"))))))
887 (native-inputs
888 `(("bundler" ,bundler)))
889 (propagated-inputs
890 `(("ruby-rspec" ,ruby-rspec)))
891 (home-page "https://github.com/laserlemon/rspec-wait")
892 (synopsis "Wait for conditions in RSpec")
893 (description
894 "RSpec::Wait strives to make it easier to test asynchronous or slow
895 interactions.")
896 (license license:expat)))
897
898 (define-public ruby-rspec
899 (package
900 (name "ruby-rspec")
901 (version "3.8.0")
902 (source (origin
903 (method url-fetch)
904 (uri (rubygems-uri "rspec" version))
905 (sha256
906 (base32
907 "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3"))))
908 (build-system ruby-build-system)
909 (arguments
910 '(#:tests? #f)) ; avoid dependency cycles
911 (propagated-inputs
912 `(("ruby-rspec-core" ,ruby-rspec-core)
913 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
914 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
915 (synopsis "Behavior-driven development framework for Ruby")
916 (description "RSpec is a behavior-driven development (BDD) framework for
917 Ruby. This meta-package includes the RSpec test runner, along with the
918 expectations and mocks frameworks.")
919 (home-page "https://rspec.info/")
920 (license license:expat)))
921
922 (define-public ruby-rspec-2
923 (package (inherit ruby-rspec)
924 (version "2.14.1")
925 (source (origin
926 (method url-fetch)
927 (uri (rubygems-uri "rspec" version))
928 (sha256
929 (base32
930 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
931 (propagated-inputs
932 `(("ruby-rspec-core" ,ruby-rspec-core-2)
933 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
934 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
935
936 ;; Bundler is yet another source of circular dependencies, so we must disable
937 ;; its test suite as well.
938 (define-public bundler
939 (package
940 (name "bundler")
941 (version "2.1.4")
942 (source (origin
943 (method url-fetch)
944 (uri (rubygems-uri "bundler" version))
945 (sha256
946 (base32
947 "12glbb1357x91fvd004jgkw7ihlkpc9dwr349pd7j83isqhls0ah"))))
948 (build-system ruby-build-system)
949 (arguments
950 '(#:tests? #f)) ; avoid dependency cycles
951 (synopsis "Ruby gem bundler")
952 (description "Bundler automatically downloads and installs a list of gems
953 specified in a \"Gemfile\", as well as their dependencies.")
954 (home-page "https://bundler.io/")
955 (license license:expat)))
956
957 (define-public ruby-builder
958 (package
959 (name "ruby-builder")
960 (version "3.2.3")
961 (source (origin
962 (method url-fetch)
963 (uri (rubygems-uri "builder" version))
964 (sha256
965 (base32
966 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
967 (build-system ruby-build-system)
968 (arguments
969 `(#:phases
970 (modify-phases %standard-phases
971 (add-after 'unpack 'do-not-use-rvm
972 (lambda _
973 (substitute* "rakelib/tags.rake"
974 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
975 #t)))))
976 (synopsis "Ruby library to create structured data")
977 (description "Builder provides a number of builder objects that make it
978 easy to create structured data. Currently the following builder objects are
979 supported: XML Markup and XML Events.")
980 (home-page "https://github.com/jimweirich/builder")
981 (license license:expat)))
982
983 (define-public ruby-bump
984 (package
985 (name "ruby-bump")
986 (version "0.7.0")
987 (source
988 (origin
989 (method url-fetch)
990 (uri (rubygems-uri "bump" version))
991 (sha256
992 (base32
993 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
994 (build-system ruby-build-system)
995 (arguments
996 '(;; No included tests
997 #:tests? #f))
998 (synopsis "Tool for working with Rubygems")
999 (description
1000 "Bump provides commands to manage Rubygem versioning, updating to the
1001 next patch version for example.")
1002 (home-page "https://github.com/gregorym/bump")
1003 (license license:expat)))
1004
1005 (define-public ruby-rjb
1006 (package
1007 (name "ruby-rjb")
1008 (version "1.5.5")
1009 (source (origin
1010 (method url-fetch)
1011 (uri (rubygems-uri "rjb" version))
1012 (sha256
1013 (base32
1014 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
1015 (build-system ruby-build-system)
1016 (arguments
1017 `(#:tests? #f ; no rakefile
1018 #:phases
1019 (modify-phases %standard-phases
1020 (add-before 'build 'set-java-home
1021 (lambda* (#:key inputs #:allow-other-keys)
1022 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
1023 #t)))))
1024 (native-inputs
1025 `(("jdk" ,icedtea "jdk")))
1026 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
1027 (description "RJB is a bridge program that connects Ruby and Java via the
1028 Java Native Interface.")
1029 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
1030 (license license:lgpl2.1+)))
1031
1032 (define-public ruby-log4r
1033 (package
1034 (name "ruby-log4r")
1035 (version "1.1.10")
1036 (source
1037 (origin
1038 (method url-fetch)
1039 (uri (rubygems-uri "log4r" version))
1040 (sha256
1041 (base32
1042 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
1043 (build-system ruby-build-system)
1044 (arguments
1045 '(#:tests? #f)) ; no Rakefile in gem
1046 (synopsis "Flexible logging library for Ruby")
1047 (description "Comprehensive and flexible logging library written
1048 in Ruby for use in Ruby programs. It features a hierarchical logging
1049 system of any number of levels, custom level names, logger
1050 inheritance, multiple output destinations per log event, execution
1051 tracing, custom formatting, thread safteyness, XML and YAML
1052 configuration, and more.")
1053 (home-page "http://log4r.rubyforge.org/")
1054 (license license:bsd-3)))
1055
1056 (define-public ruby-atoulme-antwrap
1057 (package
1058 (name "ruby-atoulme-antwrap")
1059 (version "0.7.5")
1060 (source (origin
1061 (method url-fetch)
1062 (uri (rubygems-uri "atoulme-Antwrap" version))
1063 (sha256
1064 (base32
1065 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
1066 (build-system ruby-build-system)
1067 ;; Test data required for most of the tests are not included.
1068 (arguments `(#:tests? #f))
1069 (native-inputs
1070 `(("ruby-hoe" ,ruby-hoe)))
1071 (inputs
1072 `(("ruby-rjb" ,ruby-rjb)))
1073 (synopsis "Ruby wrapper for the Ant build tool")
1074 (description "Antwrap is a Ruby module that wraps the Apache Ant build
1075 tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
1076 script.")
1077 (home-page "http://rubyforge.org/projects/antwrap/")
1078 (license license:expat)))
1079
1080 (define-public ruby-atoulme-saikuro
1081 (package
1082 (name "ruby-atoulme-saikuro")
1083 (version "1.2.1")
1084 (source (origin
1085 (method url-fetch)
1086 (uri (rubygems-uri "atoulme-Saikuro" version))
1087 (sha256
1088 (base32
1089 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
1090 (build-system ruby-build-system)
1091 ;; FIXME: There are no unit tests. The tests are demonstrations of the
1092 ;; "saikuro" tool.
1093 (arguments `(#:tests? #f))
1094 (synopsis "Cyclomatic complexity analyzer")
1095 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
1096 given Ruby source code Saikuro will generate a report listing the cyclomatic
1097 complexity of each method found. In addition, Saikuro counts the number of
1098 lines per method and can generate a listing of the number of tokens on each
1099 line of code.")
1100 (home-page "http://www.github.com/atoulme/Saikuro")
1101 ;; File headers contain the BSD-3 license and the README.rdoc says that
1102 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
1103 ;; of the Expat license.
1104 (license license:bsd-3)))
1105
1106 (define-public ruby-awesome-print
1107 (package
1108 (name "ruby-awesome-print")
1109 (version "1.8.0")
1110 (source
1111 (origin
1112 (method url-fetch)
1113 (uri (rubygems-uri "awesome_print" version))
1114 (sha256
1115 (base32
1116 "14arh1ixfsd6j5md0agyzvksm5svfkvchb90fp32nn7y3avcmc2h"))))
1117 (build-system ruby-build-system)
1118 (arguments
1119 `(#:phases
1120 (modify-phases %standard-phases
1121 (replace 'check
1122 (lambda _
1123 ;; Remove failing test.
1124 (for-each delete-file
1125 '("spec/ext/nokogiri_spec.rb"
1126 "spec/colors_spec.rb"
1127 "spec/formats_spec.rb"
1128 "spec/methods_spec.rb"
1129 "spec/misc_spec.rb"
1130 "spec/objects_spec.rb"))
1131 (invoke "rspec" "-c" "spec"))))))
1132 (native-inputs
1133 `(("ruby-nokogiri" ,ruby-nokogiri)
1134 ("ruby-rspec" ,ruby-rspec)
1135 ("ruby-simplecov" ,ruby-simplecov)))
1136 (synopsis "Pretty print Ruby objects to visualize their structure")
1137 (description
1138 "Ruby dubugging companion: pretty print Ruby objects to visualize their
1139 structure. Supports custom object formatting via plugins.")
1140 (home-page "https://github.com/awesome-print/awesome_print")
1141 (license license:expat)))
1142
1143 (define-public ruby-pandoc-ruby
1144 (package
1145 (name "ruby-pandoc-ruby")
1146 (version "2.1.4")
1147 (source
1148 (origin
1149 (method git-fetch) ;the gem lacks many test files
1150 (uri (git-reference
1151 (url "https://github.com/xwmx/pandoc-ruby")
1152 (commit version)))
1153 (file-name (git-file-name name version))
1154 (sha256
1155 (base32
1156 "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935"))))
1157 (build-system ruby-build-system)
1158 (arguments
1159 `(#:phases
1160 (modify-phases %standard-phases
1161 (add-after 'unpack 'disable-failing-tests
1162 ;; TODO: Remove this phase after ghc-pandoc gets upgraded to 2.9.2+
1163 ;; (see: https://github.com/xwmx/pandoc-ruby/issues/39).
1164 (lambda _
1165 (substitute* "test/test_conversions.rb"
1166 (("next if from == to.*" all)
1167 (string-append
1168 all
1169 " next if ['plain', 'beamer'].include? to\n")))
1170 #t))
1171 (add-after 'unpack 'patch-pandoc-path
1172 (lambda* (#:key inputs #:allow-other-keys)
1173 (let ((pandoc (string-append (assoc-ref inputs "pandoc")
1174 "/bin/pandoc")))
1175 (substitute* "lib/pandoc-ruby.rb"
1176 (("@@pandoc_path = 'pandoc'")
1177 (format #f "@@pandoc_path = '~a'" pandoc)))
1178 (substitute* "test/test_pandoc_ruby.rb"
1179 (("('|\")pandoc" _ quote)
1180 (string-append quote pandoc))
1181 (("\\^pandoc")
1182 ".*pandoc"))
1183 #t)))
1184 (add-after 'extract-gemspec 'remove-Gemfile.lock
1185 (lambda _
1186 (delete-file "Gemfile.lock")
1187 (substitute* "pandoc-ruby.gemspec"
1188 (("Gemfile\\.lock") ""))
1189 #t)))))
1190 (native-inputs
1191 `(("ruby-mocha" ,ruby-mocha)))
1192 (inputs
1193 `(("pandoc" ,pandoc)))
1194 (synopsis "Ruby wrapper for Pandoc")
1195 (description "PandocRuby is a wrapper for Pandoc, a Haskell library with
1196 command line tools for converting one markup format to another. Pandoc can
1197 convert documents from a variety of formats including markdown,
1198 reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a
1199 variety of other formats, including markdown, reStructuredText, HTML, LaTeX,
1200 ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki
1201 markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and
1202 more.")
1203 (home-page "https://github.com/xwmx/pandoc-ruby")
1204 (license license:expat)))
1205
1206 (define-public ruby-patron
1207 (package
1208 (name "ruby-patron")
1209 (version "0.13.3")
1210 (source
1211 (origin
1212 (method url-fetch)
1213 (uri (rubygems-uri "patron" version))
1214 (sha256
1215 (base32
1216 "0523gddx88zql2mq6655k60gy2ac8vybpzkcf90lmd9nx7wl3fi9"))))
1217 (build-system ruby-build-system)
1218 (inputs
1219 `(("curl" ,curl)))
1220 (arguments
1221 `(#:tests? #f)) ; no included tests
1222 (synopsis "Ruby HTTP client library based on @code{libcurl}")
1223 (description
1224 "Patron is a Ruby HTTP client library based on @code{libcurl}. It does
1225 not try to expose the full power (read complexity) of @code{libcurl} but
1226 instead tries to provide a sane API while taking advantage of @code{libcurl}
1227 under the hood.")
1228 (home-page "https://github.com/toland/patron")
1229 (license license:expat)))
1230
1231 (define-public ruby-slim
1232 (package
1233 (name "ruby-slim")
1234 (version "4.1.0")
1235 (source
1236 (origin
1237 (method url-fetch)
1238 (uri (rubygems-uri "slim" version))
1239 (sha256
1240 (base32
1241 "0gjx30g84c82qzg32bd7giscvb4206v7mvg56kc839w9wjagn36n"))))
1242 (build-system ruby-build-system)
1243 (arguments
1244 `(#:phases
1245 (modify-phases %standard-phases
1246 ;; See: https://github.com/slim-template/slim/issues/857 and
1247 ;; https://github.com/slim-template/slim/issues/858.
1248 (add-after 'unpack 'skip-broken-tests
1249 (lambda _
1250 (substitute* "test/core/test_embedded_engines.rb"
1251 (("def test_render_with_markdown")
1252 "def skipped_test_render_with_markdown"))
1253 (substitute* "test/translator/test_translator.rb"
1254 (("raise (\"Missing test for.*)" _ tail)
1255 (string-append "print " tail)))
1256 #t))
1257 ;; See: https://salsa.debian.org/ruby-team/ruby-slim/-/commit/
1258 ;; 824862bd99d1675bc699d8fc71ba965a785c1f44.
1259 (add-after 'unpack 'prevent-bundler-interference
1260 (lambda _
1261 (substitute* "Rakefile"
1262 (("require 'bundler/setup'") "nil")
1263 (("Bundler::GemHelper\\.install_tasks") "nil"))
1264 #t)))))
1265 (native-inputs
1266 `(("ruby-rack-test" ,ruby-rack-test)
1267 ("ruby-sinatra" ,ruby-sinatra)))
1268 (propagated-inputs
1269 `(("ruby-temple" ,ruby-temple)
1270 ("ruby-tilt" ,ruby-tilt)))
1271 (synopsis "Minimalist template language for Ruby")
1272 (description "Slim is a template language for Ruby that aims to reduce the
1273 syntax to the minimum while remaining clear.")
1274 (home-page "http://slim-lang.com/")
1275 (license license:expat)))
1276
1277 (define-public ruby-asciidoctor
1278 (package
1279 (name "ruby-asciidoctor")
1280 (version "2.0.10")
1281 (source
1282 (origin
1283 (method git-fetch) ;the gem release lacks a Rakefile
1284 (uri (git-reference
1285 (url "https://github.com/asciidoctor/asciidoctor")
1286 (commit (string-append "v" version))))
1287 (file-name (git-file-name name version))
1288 (sha256
1289 (base32
1290 "0jaxpnsdnx3qyjw5p2lsx1swny12q1i2vxw2kgdp4vlsyjv95z95"))))
1291 (build-system ruby-build-system)
1292 (arguments
1293 `(#:test-target "test:all"
1294 #:phases
1295 (modify-phases %standard-phases
1296 (replace 'replace-git-ls-files
1297 (lambda _
1298 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1299 ;; git ls-files output is merged in ruby-build-system.
1300 (substitute* "asciidoctor.gemspec"
1301 (("`git ls-files -z`")
1302 "`find . -type f -print0 |sort -z|cut -zc3-`"))
1303 #t))
1304 (add-after 'extract-gemspec 'strip-version-requirements
1305 (lambda _
1306 (delete-file "Gemfile")
1307 (substitute* "asciidoctor.gemspec"
1308 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1309 (string-append stripped "\n")))
1310 #t)))))
1311 (native-inputs
1312 `(("ruby-erubis" ,ruby-erubis)
1313 ("ruby-minitest" ,ruby-minitest)
1314 ("ruby-nokogiri" ,ruby-nokogiri)
1315 ("ruby-asciimath" ,ruby-asciimath)
1316 ("ruby-coderay" ,ruby-coderay)
1317 ("ruby-cucumber" ,ruby-cucumber)
1318 ("ruby-haml" ,ruby-haml)
1319 ("ruby-rouge" ,ruby-rouge)
1320 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
1321 ("ruby-simplecov" ,ruby-simplecov)
1322 ("ruby-slim" ,ruby-slim)
1323 ("ruby-tilt" ,ruby-tilt)))
1324 (synopsis "Converter from AsciiDoc content to other formats")
1325 (description "Asciidoctor is a text processor and publishing toolchain for
1326 converting AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other
1327 formats.")
1328 (home-page "https://asciidoctor.org")
1329 (license license:expat)))
1330
1331 (define-public ruby-prawn-icon
1332 (package
1333 (name "ruby-prawn-icon")
1334 (version "2.5.0")
1335 (source
1336 (origin
1337 (method url-fetch)
1338 (uri (rubygems-uri "prawn-icon" version))
1339 (sha256
1340 (base32
1341 "1ivkdf8rdf92hhy97vbmc2a4w97vcvqd58jcj4z9hz3hfsb1526w"))))
1342 (build-system ruby-build-system)
1343 (arguments
1344 `(#:test-target "spec"
1345 #:phases (modify-phases %standard-phases
1346 (add-after 'unpack 'remove-unnecessary-dependencies
1347 (lambda _
1348 (substitute* '("Rakefile" "spec/spec_helper.rb")
1349 ((".*[Bb]undler.*") "")
1350 (("^require 'rubocop.*") "")
1351 (("^RuboCop.*") ""))
1352 #t)))))
1353 (native-inputs
1354 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
1355 ("ruby-pdf-reader" ,ruby-pdf-reader)
1356 ("ruby-rspec" ,ruby-rspec)
1357 ("ruby-simplecov" ,ruby-simplecov)))
1358 (propagated-inputs
1359 `(("ruby-prawn" ,ruby-prawn)))
1360 (synopsis "Icon fonts for use with the Prawn PDF toolkit")
1361 (description "@code{Prawn::Icon} provides various icon fonts including
1362 FontAwesome, PaymentFont and Foundation Icons for use with the Prawn PDF
1363 toolkit.")
1364 (home-page "https://github.com/jessedoyle/prawn-icon/")
1365 (license %prawn-project-licenses)))
1366
1367 (define-public ruby-css-parser
1368 (package
1369 (name "ruby-css-parser")
1370 (version "1.7.1")
1371 (source
1372 (origin
1373 (method url-fetch)
1374 (uri (rubygems-uri "css_parser" version))
1375 (sha256
1376 (base32
1377 "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw"))))
1378 (build-system ruby-build-system)
1379 (arguments `(#:tests? #f)) ;gem doesn't ship with test suite
1380 (propagated-inputs
1381 `(("ruby-addressable" ,ruby-addressable)))
1382 (synopsis "Ruby Cascading Style Sheets (CSS) parser")
1383 (description "This package allows loading, parsing and cascading Cascading
1384 Style Sheets (CSS) rule sets in Ruby.")
1385 (home-page "https://github.com/premailer/css_parser")
1386 (license license:expat)))
1387
1388 (define-public ruby-prawn-svg
1389 (package
1390 (name "ruby-prawn-svg")
1391 (version "0.30.0")
1392 (source
1393 (origin
1394 (method url-fetch)
1395 (uri (rubygems-uri "prawn-svg" version))
1396 (sha256
1397 (base32
1398 "0df3l49cy3xpwi0b73hmi2ykbjg9kjwrvhk0k3z7qhh5ghmmrn77"))))
1399 (build-system ruby-build-system)
1400 (arguments
1401 `(#:phases (modify-phases %standard-phases
1402 (add-after 'unpack 'do-not-use-bundler
1403 (lambda _
1404 (substitute* "spec/spec_helper.rb"
1405 ((".*[Bb]undler.*") ""))
1406 #t))
1407 (replace 'check
1408 (lambda* (#:key tests? #:allow-other-keys)
1409 (when tests?
1410 (invoke "rspec" "-Ilib" "-rprawn-svg"))
1411 #t)))))
1412 (native-inputs
1413 `(("ruby-rspec" ,ruby-rspec)))
1414 (propagated-inputs
1415 `(("ruby-css-parser" ,ruby-css-parser)
1416 ("ruby-prawn" ,ruby-prawn)))
1417 (synopsis "SVG renderer for the Prawn PDF library")
1418 (description "This library allows rendering Scalable Vector Graphics (SVG)
1419 graphics directly into a Portable Document Format (PDF) document using the
1420 Prawn module.")
1421 (home-page "https://github.com/mogest/prawn-svg")
1422 (license license:expat)))
1423
1424 (define-public ruby-prawn-templates
1425 (package
1426 (name "ruby-prawn-templates")
1427 (version "0.1.2")
1428 (source
1429 (origin
1430 (method git-fetch)
1431 (uri (git-reference
1432 (url "https://github.com/prawnpdf/prawn-templates")
1433 (commit version)))
1434 (file-name (git-file-name name version))
1435 (sha256
1436 (base32
1437 "0wll54wxxwixpwazfn4ffbqvqbfrl01cfsv8y11vnlzy7isx5xvl"))))
1438 (build-system ruby-build-system)
1439 (arguments
1440 `(#:phases (modify-phases %standard-phases
1441 (add-after 'unpack 'do-not-use-bundler
1442 (lambda _
1443 (substitute* "spec/spec_helper.rb"
1444 ((".*[Bb]undler.*") ""))
1445 #t))
1446 (replace 'check
1447 (lambda* (#:key tests? #:allow-other-keys)
1448 (when tests?
1449 (invoke "rspec"))
1450 #t)))))
1451 (native-inputs
1452 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
1453 ("ruby-rspec" ,ruby-rspec)))
1454 (propagated-inputs
1455 `(("ruby-pdf-reader" ,ruby-pdf-reader)
1456 ("ruby-prawn" ,ruby-prawn)))
1457 (synopsis "Prawn extension to include or combine PDF documents")
1458 (description "This @strong{unmaintained} package provides a Prawn
1459 extension that allows including other Portable Document Format (PDF) documents
1460 as background or combining several PDF documents into one. This functionality
1461 used to be part of Prawn itself, but was extracted from Prawn 0.15.0 because
1462 of its many longstanding issues.")
1463 (home-page "https://github.com/prawnpdf/prawn-templates")
1464 (license %prawn-project-licenses)))
1465
1466 (define-public ruby-polyglot
1467 (package
1468 (name "ruby-polyglot")
1469 (version "0.3.5")
1470 (source
1471 (origin
1472 (method url-fetch)
1473 (uri (rubygems-uri "polyglot" version))
1474 (sha256
1475 (base32
1476 "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr"))))
1477 (build-system ruby-build-system)
1478 (arguments `(#:tests? #f)) ;no test suite
1479 (synopsis "Augment @code{require} to load non-Ruby file types")
1480 (description "The Polyglot library allows a Ruby module to register a
1481 loader for the file type associated with a filename extension, and it augments
1482 @code{require} to find and load matching files.")
1483 (home-page "https://github.com/cjheath/polyglot")
1484 (license license:expat)))
1485
1486 (define-public ruby-treetop
1487 (package
1488 (name "ruby-treetop")
1489 (version "1.6.10")
1490 (source
1491 (origin
1492 (method git-fetch) ;no test suite in distributed gem
1493 (uri (git-reference
1494 (url "https://github.com/cjheath/treetop")
1495 (commit (string-append "v" version))))
1496 (file-name (git-file-name name version))
1497 (sha256
1498 (base32
1499 "1dmk94z6ivhrz5hsq68vl5vgydhkz89n394rha1ymddw3rymbfcv"))))
1500 (build-system ruby-build-system)
1501 (arguments
1502 `(#:test-target "spec"
1503 #:phases
1504 (modify-phases %standard-phases
1505 (replace 'replace-git-ls-files
1506 (lambda _
1507 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1508 ;; git ls-files output is merged in ruby-build-system.
1509 (substitute* "treetop.gemspec"
1510 (("`git ls-files -z`")
1511 "`find . -type f -print0 |sort -z|cut -zc3-`"))
1512 #t)))))
1513 (native-inputs
1514 `(("ruby-activesupport" ,ruby-activesupport)
1515 ("ruby-rr" ,ruby-rr)
1516 ("ruby-rspec" ,ruby-rspec)))
1517 (propagated-inputs
1518 `(("ruby-polyglot" ,ruby-polyglot)))
1519 (synopsis "Ruby-based parsing DSL based on parsing expression grammars")
1520 (description "This package provides a Ruby-based Parsing Expression
1521 Grammar (PEG) parser generator Domain Specific Language (DSL).")
1522 (home-page "https://github.com/cjheath/treetop")
1523 (license license:expat)))
1524
1525 (define-public ruby-typhoeus
1526 (package
1527 (name "ruby-typhoeus")
1528 (version "1.4.0")
1529 (source
1530 (origin
1531 (method url-fetch)
1532 (uri (rubygems-uri "typhoeus" version))
1533 (sha256
1534 (base32
1535 "1m22yrkmbj81rzhlny81j427qdvz57yk5wbcf3km0nf3bl6qiygz"))))
1536 (build-system ruby-build-system)
1537 (arguments
1538 `(#:tests? #f)) ; no included tests
1539 (propagated-inputs
1540 `(("ruby-ethon" ,ruby-ethon)))
1541 (synopsis "@code{libcurl} wrapper in Ruby")
1542 (description
1543 "Like a modern code version of the mythical beast with 100 serpent heads,
1544 Typhoeus runs HTTP requests in parallel while cleanly encapsulating handling
1545 logic.")
1546 (home-page "https://github.com/typhoeus/typhoeus")
1547 (license license:expat)))
1548
1549 (define-public ruby-rubocop-rspec
1550 (package
1551 (name "ruby-rubocop-rspec")
1552 (version "2.2.0")
1553 (source
1554 (origin
1555 (method git-fetch)
1556 (uri (git-reference
1557 (url "https://github.com/rubocop-hq/rubocop-rspec")
1558 (commit (string-append "v" version))))
1559 (file-name (git-file-name name version))
1560 (sha256
1561 (base32
1562 "0gdpjpympb6qc77bang759z7z6lckf14ghkx8v6614agxg8l3g5y"))))
1563 (build-system ruby-build-system)
1564 (arguments
1565 '(#:test-target "internal_investigation"
1566 #:phases
1567 (modify-phases %standard-phases
1568 (add-before 'check 'set-HOME
1569 (lambda _
1570 (setenv "HOME" "/tmp")
1571 #t)))))
1572 (propagated-inputs
1573 `(("ruby-rubocop" ,ruby-rubocop)
1574 ("ruby-rubocop-ast" ,ruby-rubocop-ast)))
1575 (native-inputs
1576 `(("ruby-rack" ,ruby-rack)
1577 ("ruby-rspec" ,ruby-rspec)
1578 ("ruby-rubocop-performance" ,ruby-rubocop-performance)
1579 ("ruby-simplecov" ,ruby-simplecov)
1580 ("ruby-yard" ,ruby-yard)))
1581 (synopsis "Code style checking for RSpec files")
1582 (description "This package provides a plugin for the RuboCop code style
1583 enforcing & linting tool.")
1584 (home-page "https://github.com/rubocop-hq/rubocop-rspec")
1585 (license license:expat)))
1586
1587 (define-public ruby-rubocop-rspec-minimal
1588 (hidden-package
1589 (package
1590 (inherit ruby-rubocop-rspec)
1591 (arguments
1592 (substitute-keyword-arguments (package-arguments ruby-rubocop-rspec)
1593 ((#:tests? _ #f) #f)))
1594 (propagated-inputs '())
1595 (native-inputs '()))))
1596
1597 (define-public ruby-rubocop-performance
1598 (package
1599 (name "ruby-rubocop-performance")
1600 (version "1.9.2")
1601 (source
1602 (origin
1603 (method git-fetch)
1604 (uri (git-reference
1605 (url "https://github.com/rubocop-hq/rubocop-performance")
1606 (commit (string-append "v" version))))
1607 (file-name (git-file-name name version))
1608 (sha256
1609 (base32
1610 "04lmkmz6c0ccs5miikrww7lakp7y6xz00g7b47ay7rn7sx5j6qyf"))))
1611 (build-system ruby-build-system)
1612 (arguments
1613 `(#:tests? #f ; tests require a git checkout of rubocop's source code.
1614 #:phases
1615 (modify-phases %standard-phases
1616 (replace 'replace-git-ls-files
1617 (lambda _
1618 (substitute* "rubocop-performance.gemspec"
1619 (("`git ls-files -z config lib LICENSE.txt README.md`")
1620 "`find config lib LICENSE.txt README.md -type f -print0 |sort -z`"))
1621 #t))
1622 (add-before 'check 'set-HOME
1623 (lambda _
1624 (setenv "HOME" "/tmp")
1625 #t)))))
1626 (propagated-inputs
1627 `(("ruby-rubocop" ,ruby-rubocop)
1628 ("ruby-rubocop-ast" ,ruby-rubocop-ast)))
1629 (native-inputs
1630 `(("ruby-bump" ,ruby-bump)
1631 ("ruby-yard" ,ruby-yard)))
1632 (synopsis "Performance optimizations checkers for Ruby code")
1633 (description "This package provides a collection of RuboCop cops to check
1634 for performance optimizations in Ruby code.")
1635 (home-page "https://docs.rubocop.org/rubocop-performance/")
1636 (license license:expat)))
1637
1638 (define-public ruby-rubocop-performance-minimal
1639 (hidden-package
1640 (package
1641 (inherit ruby-rubocop-performance)
1642 (arguments
1643 (substitute-keyword-arguments (package-arguments ruby-rubocop-performance)
1644 ((#:tests? _ #f) #f)))
1645 (propagated-inputs '())
1646 (native-inputs '()))))
1647
1648 (define-public ruby-gimme
1649 (let ((revision "1")
1650 (commit "4e71f0236f1271871916dd403261d26533db34c0"))
1651 (package
1652 (name "ruby-gimme")
1653 (version (git-version "0.5.0" revision commit))
1654 (source
1655 (origin
1656 (method git-fetch)
1657 (uri (git-reference
1658 (url "https://github.com/searls/gimme")
1659 (commit commit)))
1660 (file-name (git-file-name name version))
1661 (sha256
1662 (base32
1663 "0hrd32ygvf3i7h47ak8f623cz8ns9q7g60nnnvvlnywbggjaz3h6"))))
1664 (build-system ruby-build-system)
1665 (native-inputs
1666 `(("ruby-coveralls" ,ruby-coveralls)
1667 ("ruby-cucumber" ,ruby-cucumber)
1668 ("ruby-pry" ,ruby-pry)
1669 ("ruby-simplecov" ,ruby-simplecov)
1670 ("ruby-rspec-given" ,ruby-rspec-given)))
1671 (arguments
1672 `(;; The cucumber task fails with error: "index 3 out of matches
1673 ;; (IndexError)", apparently due to our newer Cucumber version.
1674 ;; TODO: Try the "default" task with a future release.
1675 #:test-target "spec"
1676 #:phases
1677 (modify-phases %standard-phases
1678 (add-after 'extract-gemspec 'prepare-for-tests
1679 (lambda _
1680 ;; Delete failing tests (possibly due to our newer rspec
1681 ;; version).
1682 (delete-file "spec/gimme/gives_class_methods_spec.rb")
1683 (delete-file "spec/gimme/rspec_adapter_spec.rb")
1684 (delete-file "spec/gimme/verifies_class_methods_spec.rb")
1685 ;; Fix duplicate version requirements and de-register files.
1686 (delete-file "Gemfile")
1687 (delete-file "Gemfile.lock")
1688 (substitute* "gimme.gemspec"
1689 ((".*\"Gemfile\".*") "")
1690 ((".*\"Gemfile\\.lock\",.*") "")
1691 ((".*(rspec|cucumber).*\">= 0\".*") "")
1692 (("\"spec/gimme/gives_class_methods_spec.rb\",") "")
1693 (("\"spec/gimme/rspec_adapter_spec.rb\",") "")
1694 (("\"spec/gimme/verifies_class_methods_spec.rb\",") "")
1695 ;; All of these gems relate to development, and are
1696 ;; unnecessary when running the tests.
1697 ((".*(add|gem).*guard-.*") "")
1698 ((".*(add|gem).*jeweler.*") "")
1699 ((".*(add|gem).*pry.*") "")
1700 ((".*(add|gem).*growl.*") "")
1701 ((".*(add|gem).*rb-fsevent.*") ""))
1702 #t)))))
1703 (synopsis "Lightweight test double library for Ruby")
1704 (description "Gimme is a very lightweight test double library for Ruby,
1705 based on Mockito (a mocking framework for Java). It is an opinionated (but
1706 not noisy) means to facilitate test-driving by enabling the authors to specify
1707 only what they care about.")
1708 (home-page "https://github.com/searls/gimme")
1709 (license license:expat))))
1710
1711 (define-public ruby-standard
1712 (package
1713 (name "ruby-standard")
1714 (version "0.4.7")
1715 (source
1716 (origin
1717 (method git-fetch) ;no test suite in distributed gem
1718 (uri (git-reference
1719 (url "https://github.com/testdouble/standard")
1720 (commit (string-append "v" version))))
1721 (file-name (git-file-name name version))
1722 (sha256
1723 (base32
1724 "0ylx0lm2pbbgr5h7fban592w96bl3wxmvfcpcdfrhkxnpg5kiwgv"))))
1725 (build-system ruby-build-system)
1726 (arguments
1727 ;; TODO: the tests are currently broken due to using a newer Rubocop.
1728 `(#:tests? #f
1729 #:phases
1730 (modify-phases %standard-phases
1731 (add-after 'unpack 'relax-version-requiremens
1732 (lambda _
1733 (delete-file "Gemfile")
1734 (delete-file "Gemfile.lock")
1735 #t))
1736 (replace 'replace-git-ls-files
1737 (lambda _
1738 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1739 ;; git ls-files output is merged in ruby-build-system.
1740 (substitute* "standard.gemspec"
1741 (("`git ls-files -z`")
1742 "`find . -type f -not -regex '.*\\.gem$' -print0 \
1743 |sort -z|cut -zc3-`"))
1744 #t)))))
1745 (native-inputs
1746 `(("ruby-gimme" ,ruby-gimme)
1747 ("ruby-pry" ,ruby-pry)
1748 ("ruby-simplecov" ,ruby-simplecov)))
1749 (propagated-inputs
1750 `(("ruby-rubocop" ,ruby-rubocop)
1751 ("ruby-rubocop-performance" ,ruby-rubocop-performance)))
1752 (synopsis "Ruby Style Guide, with linter & automatic code fixer")
1753 (description "Standard is a port of StandardJS. Like StandardJS, it aims
1754 to save time in the following ways:
1755 @itemize
1756 @item No configuration.
1757 @item Automatically format code.
1758 @item Catch style issues and programmer errors early.
1759 @end itemize")
1760 (home-page "https://github.com/testdouble/standard")
1761 (license license:expat)))
1762
1763 (define-public ruby-chunky-png
1764 (package
1765 (name "ruby-chunky-png")
1766 (version "1.3.14")
1767 (source
1768 (origin
1769 (method git-fetch)
1770 (uri (git-reference
1771 (url "https://github.com/wvanbergen/chunky_png")
1772 (commit (string-append "v" version))))
1773 (file-name (git-file-name name version))
1774 (sha256
1775 (base32 "1m7y11ix38h5a2pj5v81qdmvqh980ql9hp62hk2dxwkwsa4nh22h"))))
1776 (build-system ruby-build-system)
1777 (arguments
1778 `(#:test-target "spec"
1779 #:phases
1780 (modify-phases %standard-phases
1781 (add-after 'unpack 'disable-bundler
1782 (lambda _
1783 (substitute* (find-files "." "\\.rb$")
1784 (("require.*bundler/setup.*") ""))
1785 #t))
1786 (replace 'replace-git-ls-files
1787 (lambda _
1788 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1789 ;; git ls-files output is merged in ruby-build-system.
1790 (substitute* "chunky_png.gemspec"
1791 (("`git ls-files`")
1792 "`find . -type f -not -regex '.*\\.gem$' |sort |cut -c3-`"))
1793 #t)))))
1794 (native-inputs
1795 `(("bundler" ,bundler)
1796 ("ruby-rspec" ,ruby-rspec)
1797 ("ruby-standard" ,ruby-standard)
1798 ("ruby-yard" ,ruby-yard)))
1799 (synopsis "Ruby library to handle PNG images")
1800 (description "ChunkyPNG is a pure Ruby library that can read and write
1801 Portable Network Graphics (PNG) images without depending on an external image
1802 library. It tries to be memory efficient and reasonably fast. It has
1803 features such as:
1804 @itemize
1805 @item
1806 Decoding support for any image that the PNG standard allows. This includes all
1807 standard color modes, all bit depths, all transparency, and interlacing and
1808 filtering options.
1809 @item
1810 Encoding support for images of all color modes (true color, grayscale, and
1811 indexed) and transparency for all these color modes. The best color mode is
1812 chosen automatically, based on the amount of used colors.
1813 @item Read/write access to the image's pixels.
1814 @item Read/write access to all image metadata that is stored in chunks.
1815 @item
1816 Memory efficiency: @code{fixnum} are used, i.e. 4 or 8 bytes of memory per
1817 pixel, depending on the hardware).
1818 @item
1819 Performance: ChunkyPNG is reasonably fast for Ruby standards, by only using
1820 integer math and a highly optimized saving routine.
1821 @item Interoperability with RMagick.
1822 @end itemize
1823
1824 ChunkyPNG is vulnerable to decompression bombs and can run out of memory when
1825 loading a specifically crafted PNG file. This is hard to fix in pure Ruby.
1826 Deal with untrusted images in a separate process, e.g., by using @code{fork}
1827 or a background processing library.")
1828 (home-page "https://github.com/wvanbergen/chunky_png/wiki")
1829 (license license:expat)))
1830
1831 (define-public ruby-text-hyphen
1832 (package
1833 (name "ruby-text-hyphen")
1834 (version "1.4.1")
1835 (source
1836 (origin
1837 (method url-fetch)
1838 (uri (rubygems-uri "text-hyphen" version))
1839 (sha256
1840 (base32
1841 "1gj4awvs9ryf960m0iawg43jyjmfwcqgfwrbcfp890a57b9ag7q1"))))
1842 (build-system ruby-build-system)
1843 (native-inputs
1844 `(("ruby-hoe" ,ruby-hoe)))
1845 (synopsis "Ruby library to hyphenate words in various languages")
1846 (description "Text::Hyphen is a Ruby library to hyphenate words in various
1847 languages using Ruby-fied versions of TeX hyphenation patterns. It will
1848 properly hyphenate various words according to the rules of the language the
1849 word is written in. The algorithm is based on that of the TeX typesetting
1850 system by Donald E. Knuth.")
1851 (home-page "https://github.com/halostatue/text-hyphen")
1852 ;; The whole is licensed under the Expat license, but parts use various
1853 ;; versions of the LaTeX Project Public License.
1854 (license license:expat)))
1855
1856 (define-public ruby-open-uri-cached
1857 (package
1858 (name "ruby-open-uri-cached")
1859 (version "0.0.5")
1860 (source
1861 (origin
1862 (method url-fetch)
1863 (uri (rubygems-uri "open-uri-cached" version))
1864 (sha256
1865 (base32
1866 "13xy2vhrgz9mdxhklw5fszhamsdxh8ysf3l40g92hqm4hm288wap"))))
1867 (build-system ruby-build-system)
1868 (arguments
1869 `(#:tests? #f)) ;no test suite
1870 (synopsis "OpenURI with transparent disk caching")
1871 (description "OpenURI with transparent disk caching, which is
1872 useful to avoid making excessive queries, for example when scraping
1873 web pages.")
1874 (home-page "https://github.com/tigris/open-uri-cached")
1875 (license license:expat)))
1876
1877 (define-public ruby-asciidoctor-pdf
1878 ;; Use the latest commit, as the last tag doesn't build with the
1879 ;; latest Ruby dependencies in Guix.
1880 (let ((revision "1")
1881 (commit "d257440df895d1595a3825ef58b32e4b290ba1c3"))
1882 (package
1883 (name "ruby-asciidoctor-pdf")
1884 (version (git-version "1.5.3" revision commit))
1885 (source
1886 (origin
1887 (method git-fetch) ;no test suite in the distributed gem
1888 (uri (git-reference
1889 (url "https://github.com/asciidoctor/asciidoctor-pdf")
1890 (commit commit)))
1891 (file-name (git-file-name name version))
1892 (sha256
1893 (base32
1894 "1563d11ghzsrsg4inwfwj6b9hb5sk5b429f49fwq5qg3sq76kgjj"))))
1895 (build-system ruby-build-system)
1896 (arguments
1897 `(#:test-target "spec"
1898 #:phases
1899 (modify-phases %standard-phases
1900 (add-after 'unpack 'remove-failing-tests
1901 ;; Two tests module fail for unknown reasons, *only* when
1902 ;; ran in the build container (see:
1903 ;; https://github.com/asciidoctor/asciidoctor-pdf/issues/1725#issuecomment-658777965).
1904 (lambda _
1905 (delete-file "spec/audio_spec.rb")
1906 (delete-file "spec/video_spec.rb")
1907 #t))
1908 (add-after 'extract-gemspec 'strip-version-requirements
1909 (lambda _
1910 (substitute* "asciidoctor-pdf.gemspec"
1911 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1912 (string-append stripped "\n")))
1913 #t))
1914 (replace 'replace-git-ls-files
1915 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1916 ;; git ls-files output is merged in ruby-build-system.
1917 (lambda _
1918 (substitute* "asciidoctor-pdf.gemspec"
1919 (("`git ls-files -z`")
1920 "`find . -type f -not -regex '.*\\.gem$' -print0 \
1921 |sort -z|cut -zc3-`"))
1922 #t))
1923 ;; The tests rely on the Gem being installed, so move the check phase
1924 ;; after the install phase.
1925 (delete 'check)
1926 (add-after 'install 'check
1927 (lambda* (#:key outputs tests? #:allow-other-keys)
1928 (let ((new-gem (string-append (assoc-ref outputs "out")
1929 "/lib/ruby/vendor_ruby")))
1930 (setenv "GEM_PATH"
1931 (string-append (getenv "GEM_PATH") ":" new-gem))
1932 (when tests?
1933 (invoke "rspec" "-t" "~visual" "-t" "~cli" "-t" "~network"))
1934 #t))))))
1935 (native-inputs
1936 `(("ruby-chunky-png" ,ruby-chunky-png)
1937 ("ruby-coderay" ,ruby-coderay)
1938 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
1939 ("ruby-rouge" ,ruby-rouge)
1940 ("ruby-rspec" ,ruby-rspec)))
1941 (propagated-inputs
1942 `(("ruby-asciidoctor" ,ruby-asciidoctor)
1943 ("ruby-concurrent-ruby" ,ruby-concurrent)
1944 ("ruby-open-uri-cached" ,ruby-open-uri-cached)
1945 ("ruby-prawn" ,ruby-prawn)
1946 ("ruby-prawn-icon" ,ruby-prawn-icon)
1947 ("ruby-prawn-svg" ,ruby-prawn-svg)
1948 ("ruby-prawn-table" ,ruby-prawn-table)
1949 ("ruby-prawn-templates" ,ruby-prawn-templates)
1950 ("ruby-safe-yaml" ,ruby-safe-yaml)
1951 ("ruby-text-hyphen" ,ruby-text-hyphen)
1952 ("ruby-thread-safe" ,ruby-thread-safe)
1953 ("ruby-treetop" ,ruby-treetop)
1954 ("ruby-ttfunk" ,ruby-ttfunk)))
1955 (synopsis"AsciiDoc to Portable Document Format (PDF)} converter")
1956 (description "Asciidoctor PDF is an extension for Asciidoctor that
1957 converts AsciiDoc documents to Portable Document Format (PDF) using the Prawn
1958 PDF library. It has features such as:
1959 @itemize
1960 @item Direct AsciiDoc to PDF conversion
1961 @item Configuration-driven theme (style and layout)
1962 @item Scalable Vector Graphics (SVG) support
1963 @item PDF document outline (i.e., bookmarks)
1964 @item Table of contents page(s)
1965 @item Document metadata (title, authors, subject, keywords, etc.)
1966 @item Internal cross reference links
1967 @item Syntax highlighting with Rouge, Pygments, or CodeRay
1968 @item Page numbering
1969 @item Customizable running content (header and footer)
1970 @item
1971 “Keep together” blocks (i.e., page breaks avoided in certain block content)
1972 @item Orphaned section titles avoided
1973 @item Autofit verbatim blocks (as permitted by base_font_size_min setting)
1974 @item Table border settings honored
1975 @item Font-based icons
1976 @item Custom TrueType (TTF) fonts
1977 @item Double-sided printing mode (margins alternate on recto and verso pages)
1978 @end itemize")
1979 (home-page "https://asciidoctor.org/docs/asciidoctor-pdf")
1980 (license license:expat))))
1981
1982 (define-public ruby-ast
1983 (package
1984 (name "ruby-ast")
1985 (version "2.4.1")
1986 (source
1987 (origin
1988 (method git-fetch) ;no test included in gem from v2.4.1
1989 (uri (git-reference
1990 (url "https://github.com/whitequark/ast")
1991 (commit (string-append "v" version))))
1992 (file-name (git-file-name name version))
1993 (sha256
1994 (base32
1995 "0k8vya256chimy473g818gim06m5rjgh6mz5sc5g8xz3csh3rysi"))))
1996 (build-system ruby-build-system)
1997 (arguments
1998 '(#:phases
1999 (modify-phases %standard-phases
2000 (add-after 'unpack 'remove-coveralls-requirement
2001 (lambda _
2002 (substitute* "test/helper.rb"
2003 (("require 'coveralls'") "")
2004 (("Coveralls::SimpleCov::Formatter") ""))
2005 #t))
2006 (add-after 'extract-gemspec 'remove-unnecessary-requirements
2007 (lambda _
2008 (substitute* "ast.gemspec"
2009 ((".*coveralls.*") "\n")
2010 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
2011 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
2012 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n"))
2013 #t)))))
2014 (native-inputs
2015 `(("bundler" ,bundler)
2016 ("ruby-simplecov" ,ruby-simplecov)
2017 ("ruby-json-pure" ,ruby-json-pure)
2018 ("ruby-mime-times" ,ruby-mime-types)
2019 ("ruby-yard" ,ruby-yard)
2020 ("ruby-kramdown" ,ruby-kramdown)
2021 ("ruby-rest-client" ,ruby-rest-client)
2022 ("ruby-bacon" ,ruby-bacon)
2023 ("ruby-bacon-colored-output" ,ruby-bacon-colored-output)
2024 ("ruby-racc" ,ruby-racc)))
2025 (synopsis "Library for working with Abstract Syntax Trees")
2026 (description
2027 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
2028 It does this through immutable data structures.")
2029 (home-page "https://whitequark.github.io/ast/")
2030 (license license:expat)))
2031
2032 (define-public ruby-sporkmonger-rack-mount
2033 ;; Testing the addressable gem requires a newer commit than that released, so
2034 ;; use an up to date version.
2035 (let ((revision "1")
2036 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
2037 (package
2038 (name "ruby-sporkmonger-rack-mount")
2039 (version (git-version "0.8.3" revision commit))
2040 (source (origin
2041 (method git-fetch)
2042 (uri (git-reference
2043 (url "https://github.com/sporkmonger/rack-mount")
2044 (commit commit)))
2045 (file-name (git-file-name name version))
2046 (sha256
2047 (base32
2048 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
2049 (build-system ruby-build-system)
2050 (arguments
2051 ;; Tests currently fail so disable them.
2052 ;; https://github.com/sporkmonger/rack-mount/pull/1
2053 `(#:tests? #f))
2054 (propagated-inputs `(("ruby-rack" ,ruby-rack)))
2055 (synopsis "Stackable dynamic tree based Rack router")
2056 (description
2057 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
2058 continue trying routes if the response returns pass. This allows multiple
2059 routes to be nested or stacked on top of each other.")
2060 (home-page "https://github.com/sporkmonger/rack-mount")
2061 (license license:expat))))
2062
2063 (define-public ruby-ci-reporter
2064 (package
2065 (name "ruby-ci-reporter")
2066 (version "2.0.0")
2067 (source (origin
2068 (method url-fetch)
2069 (uri (rubygems-uri "ci_reporter" version))
2070 (sha256
2071 (base32
2072 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
2073 (build-system ruby-build-system)
2074 (arguments
2075 `(#:test-target "rspec"))
2076 (propagated-inputs
2077 `(("ruby-builder" ,ruby-builder)))
2078 (native-inputs
2079 `(("bundler" ,bundler)
2080 ("ruby-rspec" ,ruby-rspec)))
2081 (synopsis "Generate XML reports of runs test")
2082 (description
2083 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
2084 you to generate XML reports of your test runs. The resulting files can be
2085 read by a continuous integration system that understands Ant's JUnit report
2086 format.")
2087 (home-page "https://github.com/nicksieger/ci_reporter")
2088 (license license:expat)))
2089
2090 (define-public ruby-contracts
2091 (package
2092 (name "ruby-contracts")
2093 (version "0.16.0")
2094 (source
2095 (origin
2096 (method url-fetch)
2097 (uri (rubygems-uri "contracts" version))
2098 (sha256
2099 (base32
2100 "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"))))
2101 (build-system ruby-build-system)
2102 (arguments
2103 '(#:test-target "spec"
2104 #:phases
2105 (modify-phases %standard-phases
2106 ;; Don't run or require rubocop, the code linting tool, as this is a
2107 ;; bit unnecessary.
2108 (add-after 'unpack 'dont-run-rubocop
2109 (lambda _
2110 (substitute* "Rakefile"
2111 ((".*rubocop.*") "")
2112 ((".*RuboCop.*") ""))
2113 #t)))))
2114 (native-inputs
2115 `(("ruby-rspec" ,ruby-rspec)))
2116 (synopsis "Method contracts for Ruby")
2117 (description
2118 "This library provides contracts for Ruby. A contract describes the
2119 correct inputs and output for a method, and will raise an error if a incorrect
2120 value is found.")
2121 (home-page "https://github.com/egonSchiele/contracts.ruby")
2122 (license license:bsd-2)))
2123
2124 (define-public ruby-crack
2125 (package
2126 (name "ruby-crack")
2127 (version "0.4.5")
2128 (source
2129 (origin
2130 (method url-fetch)
2131 (uri (rubygems-uri "crack" version))
2132 (sha256
2133 (base32
2134 "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r"))))
2135 (build-system ruby-build-system)
2136 (arguments
2137 `(#:phases
2138 (modify-phases %standard-phases
2139 (replace 'check
2140 (lambda* (#:key tests? #:allow-other-keys)
2141 (when tests?
2142 (for-each (lambda (file)
2143 (display file)(display "\n")
2144 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
2145 (find-files "test" ".*rb$")))
2146 #t)))))
2147 (propagated-inputs
2148 `(("ruby-rexml" ,ruby-rexml)))
2149 (synopsis "Simple JSON and XML parsing for Ruby")
2150 (description
2151 "@code{crack} provides really simple JSON and XML parsing, extracted from
2152 code in Merb and Rails.")
2153 (home-page "https://github.com/jnunemaker/crack")
2154 (license license:expat)))
2155
2156 (define-public ruby-cliver
2157 (package
2158 (name "ruby-cliver")
2159 (version "0.3.2")
2160 (source
2161 (origin
2162 (method url-fetch)
2163 (uri (rubygems-uri "cliver" version))
2164 (sha256
2165 (base32
2166 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
2167 (build-system ruby-build-system)
2168 (arguments
2169 '(#:phases
2170 (modify-phases %standard-phases
2171 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
2172 ;; would be nice, but the tests look to be incompatible:
2173 ;;
2174 ;; NoMethodError: undefined method `last_comment'
2175 (replace 'check
2176 (lambda* (#:key tests? #:allow-other-keys)
2177 (when tests?
2178 (invoke "rspec"))
2179 #t)))))
2180 (native-inputs
2181 `(("bundler" ,bundler)
2182 ("ruby-rspec" ,ruby-rspec-2)))
2183 (synopsis "Assertions for command-line dependencies in Ruby")
2184 (description
2185 "@code{cliver} provides a way to detect missing command-line
2186 dependencies, including versions.")
2187 (home-page "https://github.com/yaauie/cliver")
2188 (license license:expat)))
2189
2190 (define-public ruby-czmq-ffi-gen
2191 (package
2192 (name "ruby-czmq-ffi-gen")
2193 (version "0.13.0")
2194 (source
2195 (origin
2196 (method url-fetch)
2197 (uri (rubygems-uri "czmq-ffi-gen" version))
2198 (sha256
2199 (base32
2200 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
2201 (build-system ruby-build-system)
2202 (arguments
2203 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
2204 #:phases
2205 (modify-phases %standard-phases
2206 (add-after 'unpack 'patch-lib_dirs
2207 (lambda* (#:key inputs #:allow-other-keys)
2208 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
2209 (("lib\\_dirs = \\[.*\\]")
2210 (string-append "lib_dirs = ['"
2211 (assoc-ref inputs "czmq") "/lib"
2212 "']")))
2213 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
2214 (("lib\\_dirs = \\[.*\\]")
2215 (string-append "lib_dirs = ['"
2216 (assoc-ref inputs "zeromq") "/lib"
2217 "']"))))))))
2218 (inputs
2219 `(("zeromq" ,zeromq)
2220 ("czmq" ,czmq)))
2221 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
2222 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
2223 (description
2224 "These Ruby bindings are not intended to be directly used, but rather
2225 used by higher level bindings like those provided by CZTop.")
2226 (home-page
2227 "https://github.com/paddor/czmq-ffi-gen")
2228 (license license:isc)))
2229
2230 (define-public ruby-cztop
2231 (package
2232 (name "ruby-cztop")
2233 (version "0.12.2")
2234 (source
2235 (origin
2236 (method url-fetch)
2237 (uri (rubygems-uri "cztop" version))
2238 (sha256
2239 (base32
2240 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
2241 (build-system ruby-build-system)
2242 (arguments
2243 '(#:test-target "spec"
2244 #:phases
2245 (modify-phases %standard-phases
2246 (add-after 'unpack 'patch-lib_paths
2247 (lambda* (#:key inputs #:allow-other-keys)
2248 (substitute* "lib/cztop/poller/zmq.rb"
2249 (("lib\\_paths = \\[.*\\]")
2250 (string-append "lib_paths = ['"
2251 (assoc-ref inputs "zeromq") "/lib"
2252 "']"))))))))
2253 (native-inputs
2254 `(("bundler" ,bundler)
2255 ("ruby-rspec" ,ruby-rspec)))
2256 (inputs
2257 `(("zeromq" ,zeromq)))
2258 (propagated-inputs
2259 `(("ruby-czmq-ffi-gen" ,ruby-czmq-ffi-gen)))
2260 (synopsis "CZMQ Ruby bindings")
2261 (description
2262 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
2263 CZMQ. The focus of of CZTop is on being easy to use and providing first class
2264 support for security mechanisms.")
2265 (home-page "https://github.com/paddor/cztop")
2266 (license license:isc)))
2267
2268 (define-public ruby-saikuro-treemap
2269 (package
2270 (name "ruby-saikuro-treemap")
2271 (version "0.2.0")
2272 (source (origin
2273 (method url-fetch)
2274 (uri (rubygems-uri "saikuro_treemap" version))
2275 (sha256
2276 (base32
2277 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
2278 (build-system ruby-build-system)
2279 ;; Some of the tests fail because the generated JSON has keys in a
2280 ;; different order. This is a problem with the test suite rather than any
2281 ;; of the involved libraries.
2282 (arguments `(#:tests? #f))
2283 (propagated-inputs
2284 `(("ruby-json-pure" ,ruby-json-pure)
2285 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
2286 (synopsis "Generate complexity treemap based on saikuro analysis")
2287 (description
2288 "This gem generates a treemap showing the complexity of Ruby code on
2289 which it is run. It uses Saikuro under the covers to analyze Ruby code
2290 complexity.")
2291 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
2292 (license license:expat)))
2293
2294 (define-public ruby-oauth2
2295 (package
2296 (name "ruby-oauth2")
2297 (version "1.4.2")
2298 (source
2299 (origin
2300 (method url-fetch)
2301 (uri (rubygems-uri "oauth2" version))
2302 (sha256
2303 (base32 "15i9z4j5pcjkr30lkcd79xzbr4kpmy0bqgwa436fqyqk646fv036"))))
2304 (build-system ruby-build-system)
2305 (arguments
2306 '(#:tests? #f)) ; no included tests
2307 (propagated-inputs
2308 `(("ruby-faraday" ,ruby-faraday)
2309 ("ruby-jwt" ,ruby-jwt)
2310 ("ruby-multi-json" ,ruby-multi-json)
2311 ("ruby-multi-xml" ,ruby-multi-xml)
2312 ("ruby-rack" ,ruby-rack)))
2313 (synopsis "Ruby wrapper for the OAuth 2.0")
2314 (description
2315 "This package provides a Ruby wrapper for the OAuth 2.0 protocol built
2316 with a similar style to the original OAuth spec.")
2317 (home-page "https://github.com/oauth-xx/oauth2")
2318 (license license:expat)))
2319
2320 (define-public ruby-omniauth
2321 (package
2322 (name "ruby-omniauth")
2323 (version "2.0.3")
2324 (source
2325 (origin
2326 (method url-fetch)
2327 (uri (rubygems-uri "omniauth" version))
2328 (sha256
2329 (base32 "105mzgvmn2kjaacxw01h4wqv33r7hfn5z8fxlkk3jcjar14j71bh"))))
2330 (build-system ruby-build-system)
2331 (propagated-inputs
2332 `(("ruby-hashie" ,ruby-hashie)
2333 ("ruby-rack" ,ruby-rack)
2334 ("ruby-rack-protection" ,ruby-rack-protection)))
2335 (native-inputs
2336 `(("ruby-rspec" ,ruby-rspec)))
2337 (synopsis "Generalized Rack framework for multiple-provider authentication")
2338 (description
2339 "This package provides a generalized Rack framework for multiple-provider
2340 authentication.")
2341 (home-page "https://github.com/omniauth/omniauth")
2342 (license license:expat)))
2343
2344 (define-public ruby-omniauth-oauth2
2345 (package
2346 (name "ruby-omniauth-oauth2")
2347 (version "1.7.1")
2348 (source
2349 (origin
2350 (method url-fetch)
2351 (uri (rubygems-uri "omniauth-oauth2" version))
2352 (sha256
2353 (base32
2354 "10fr2b58sp7l6nfdvxpbi67374hkrvsf507cvda89jjs0jacy319"))))
2355 (build-system ruby-build-system)
2356 (arguments
2357 '(#:phases
2358 (modify-phases %standard-phases
2359 (add-after 'unpack 'remove-unnecessary-dependencies
2360 (lambda _
2361 ;; The coveralls gem submits coverage information to an online
2362 ;; service, and is unnecessary when running the tests
2363 (substitute* "Gemfile"
2364 ((".*coveralls\"") ""))
2365 (substitute* "spec/helper.rb"
2366 (("require \"coveralls\"") "")
2367 (("Coveralls::SimpleCov::Formatter") ""))
2368 #t)))))
2369 (propagated-inputs
2370 `(("ruby-oauth2" ,ruby-oauth2)
2371 ("ruby-omniauth" ,ruby-omniauth)))
2372 (native-inputs
2373 `(("bundler" ,bundler)
2374 ("ruby-rspec" ,ruby-rspec)
2375 ("ruby-simplecov" ,ruby-simplecov)
2376 ("ruby-rack-test" ,ruby-rack-test)
2377 ("ruby-webmock" ,ruby-webmock)))
2378 (synopsis "Abstract OAuth2 strategy for OmniAuth")
2379 (description
2380 "This library provides a generic OAuth2 strategy for OmniAuth. It
2381 doesn't provide a way to gather user information, so should be used as a
2382 building block for authentication strategies.")
2383 (home-page "https://github.com/omniauth/omniauth-oauth2")
2384 (license license:expat)))
2385
2386 (define-public ruby-open4
2387 (package
2388 (name "ruby-open4")
2389 (version "1.3.4")
2390 (source
2391 (origin
2392 (method url-fetch)
2393 (uri (rubygems-uri "open4" version))
2394 (sha256
2395 (base32
2396 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
2397 (build-system ruby-build-system)
2398 (arguments
2399 '(#:phases
2400 (modify-phases %standard-phases
2401 (add-after 'unpack 'patch
2402 (lambda _
2403 (substitute* "rakefile"
2404 ;; Update the Rakefile so it works
2405 (("-rubygems") "-rrubygems")
2406 (("Config") "RbConfig"))
2407 #t))
2408 (add-before 'check 'set-LIB
2409 (lambda _
2410 ;; This is used in the rakefile when running the tests
2411 (setenv "LIB" "open4")
2412 #t)))))
2413 (synopsis "Open child processes from Ruby and manage them easily")
2414 (description
2415 "@code{Open4} is a Ruby library to run child processes and manage their
2416 input and output.")
2417 (home-page "https://github.com/ahoward/open4")
2418 (license license:ruby)))
2419
2420 (define-public ruby-options
2421 (package
2422 (name "ruby-options")
2423 (version "2.3.2")
2424 (source
2425 (origin
2426 (method url-fetch)
2427 (uri (rubygems-uri "options" version))
2428 (sha256
2429 (base32
2430 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
2431 (build-system ruby-build-system)
2432 (arguments
2433 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
2434 #:phases
2435 (modify-phases %standard-phases
2436 (add-before 'check 'set-LIB
2437 (lambda _
2438 ;; This is used in the Rakefile, and setting it avoids an issue
2439 ;; with running the tests.
2440 (setenv "LIB" "options")
2441 #t)))))
2442 (synopsis "Ruby library to parse options from *args cleanly")
2443 (description
2444 "The @code{options} library helps with parsing keyword options in Ruby
2445 functions.")
2446 (home-page "https://github.com/ahoward/options")
2447 (license license:ruby)))
2448
2449 (define-public ruby-erubi
2450 (package
2451 (name "ruby-erubi")
2452 (version "1.8.0")
2453 (source
2454 (origin
2455 (method url-fetch)
2456 (uri (rubygems-uri "erubi" version))
2457 (sha256
2458 (base32
2459 "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1"))))
2460 (build-system ruby-build-system)
2461 (synopsis "ERB template engine for Ruby")
2462 (description
2463 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
2464 Erubis")
2465 (home-page "https://github.com/jeremyevans/erubi")
2466 (license license:expat)))
2467
2468 (define-public ruby-erubis
2469 (package
2470 (name "ruby-erubis")
2471 (version "2.7.0")
2472 (source
2473 (origin
2474 (method url-fetch)
2475 (uri (rubygems-uri "erubis" version))
2476 (sha256
2477 (base32
2478 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
2479 (build-system ruby-build-system)
2480 (arguments
2481 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
2482 (synopsis "Implementation of embedded Ruby (eRuby)")
2483 (description
2484 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
2485 features such as multi-language support, auto escaping, auto trimming spaces
2486 around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
2487 support.")
2488 (home-page "http://www.kuwata-lab.com/erubis/")
2489 (license license:expat)))
2490
2491 (define-public ruby-ethon
2492 (package
2493 (name "ruby-ethon")
2494 (version "0.12.0")
2495 (source
2496 (origin
2497 (method url-fetch)
2498 (uri (rubygems-uri "ethon" version))
2499 (sha256
2500 (base32
2501 "0gggrgkcq839mamx7a8jbnp2h7x2ykfn34ixwskwb0lzx2ak17g9"))))
2502 (build-system ruby-build-system)
2503 (arguments
2504 `(#:tests? #f)) ; no included tests
2505 (inputs
2506 `(("curl" ,curl)))
2507 (propagated-inputs
2508 `(("ruby-ffi" ,ruby-ffi)))
2509 (synopsis "Very lightweight @code{libcurl} wrapper")
2510 (description
2511 "Ethon is a very basic @code{libcurl} wrapper using ffi.")
2512 (home-page "https://github.com/typhoeus/ethon")
2513 (license license:expat)))
2514
2515 (define-public ruby-execjs
2516 (package
2517 (name "ruby-execjs")
2518 (version "2.7.0")
2519 (source
2520 (origin
2521 ;; fetch from github as the gem does not contain testing code
2522 (method git-fetch)
2523 (uri (git-reference
2524 (url "https://github.com/rails/execjs")
2525 (commit (string-append "v" version))))
2526 (file-name (git-file-name name version))
2527 (sha256
2528 (base32
2529 "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
2530 (build-system ruby-build-system)
2531 (native-inputs
2532 `(("bundler" ,bundler)
2533 ;; The test suite tests all the available backends. Currenly, this just
2534 ;; means the node backend.
2535 ;;
2536 ;; PASSED: test:node
2537 ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
2538 ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
2539 ("node" ,node)))
2540 (synopsis "Run JavaScript code from Ruby")
2541 (description
2542 "ExecJS lets you run JavaScript code from Ruby. It automatically picks a
2543 runtime to evaluate your JavaScript program, then returns the result to you as
2544 a Ruby object.")
2545 (home-page "https://github.com/rails/execjs")
2546 (license license:expat)))
2547
2548 (define-public ruby-fakefs
2549 (package
2550 (name "ruby-fakefs")
2551 (version "1.2.2")
2552 (home-page "https://github.com/fakefs/fakefs")
2553 (source (origin
2554 ;; The Rubygems release does not contain tests.
2555 (method git-fetch)
2556 (uri (git-reference
2557 (url home-page)
2558 (commit (string-append "v" version))))
2559 (file-name (git-file-name name version))
2560 (sha256
2561 (base32
2562 "008dq9knyip2bfbl0mrk8b8r7bv0k3bf128wcfqsgy1rqal4mgwk"))))
2563 (build-system ruby-build-system)
2564 (arguments
2565 '(#:phases (modify-phases %standard-phases
2566 (replace 'replace-git-ls-files
2567 (lambda _
2568 (substitute* "fakefs.gemspec"
2569 (("`git ls-files lib README.md LICENSE`")
2570 "`find lib README.md LICENSE -type f | sort`"))
2571 #t))
2572 (add-before 'check 'remove-version-constraints
2573 (lambda _
2574 ;; Drop hard version requirements for test dependencies.
2575 (substitute* "fakefs.gemspec"
2576 (("(.*add_development_dependency .*), .*" _ dep)
2577 (string-append dep "\n")))
2578 #t)))))
2579 (native-inputs
2580 `(("ruby-bump" ,ruby-bump)
2581 ("ruby-maxitest" ,ruby-maxitest)
2582 ("ruby-rubocop" ,ruby-rubocop)
2583 ("ruby-rspec" ,ruby-rspec)))
2584 (synopsis "Fake file system for Ruby")
2585 (description
2586 "This package provides a fake file system for use in test suites. It
2587 avoids the need for manually creating temporary directories, or dealing
2588 with platform intricacies in @code{File} and @code{FileUtils}.")
2589 (license license:expat)))
2590
2591 (define-public ruby-orderedhash
2592 (package
2593 (name "ruby-orderedhash")
2594 (version "0.0.6")
2595 (source (origin
2596 (method url-fetch)
2597 (uri (rubygems-uri "orderedhash" version))
2598 (sha256
2599 (base32
2600 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
2601 (build-system ruby-build-system)
2602 (arguments
2603 '(#:tests? #f)) ; no test suite
2604 (synopsis "Ruby library providing an order-preserving hash")
2605 (description "Orderedhash is a Ruby library providing a hash
2606 implementation that preserves the order of items and features some array-like
2607 extensions.")
2608 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
2609 (license license:public-domain)))
2610
2611 (define-public ruby-libxml
2612 (package
2613 (name "ruby-libxml")
2614 (version "3.0.0")
2615 (source
2616 (origin
2617 (method url-fetch)
2618 (uri (rubygems-uri "libxml-ruby" version))
2619 (sha256
2620 (base32
2621 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
2622 (build-system ruby-build-system)
2623 (inputs
2624 `(("zlib" ,zlib)
2625 ("libxml2" ,libxml2)))
2626 (arguments
2627 '(#:tests? #f ; test suite hangs for unknown reason
2628 #:gem-flags
2629 (list "--no-document" ; TODO: Re-enable when documentation
2630 ; generation works
2631 "--"
2632 (string-append "--with-xml2-include="
2633 (assoc-ref %build-inputs "libxml2")
2634 "/include/libxml2" ))))
2635 (synopsis "Ruby bindings for GNOME Libxml2")
2636 (description "The Libxml-Ruby project provides Ruby language bindings for
2637 the GNOME Libxml2 XML toolkit.")
2638 (home-page "https://xml4r.github.com/libxml-ruby")
2639 (license license:expat)))
2640
2641 (define-public ruby-lino
2642 (package
2643 (name "ruby-lino")
2644 (version "1.1.0")
2645 (source
2646 (origin
2647 (method url-fetch)
2648 (uri (rubygems-uri "lino" version))
2649 (sha256
2650 (base32
2651 "11d29g0fk372b9fcpyr0k6hxm2b4j4igpysmi542hgbbgqgp9cd3"))))
2652 (build-system ruby-build-system)
2653 (arguments
2654 '(#:tests? #f)) ; No included tests
2655 (propagated-inputs
2656 `(("ruby-hamster" ,ruby-hamster)
2657 ("ruby-open4" ,ruby-open4)))
2658 (synopsis "Build and execute commands in Ruby")
2659 (description
2660 "@code{Lino} provides an interface to run external commands. It provides
2661 an interface to add options as well as managing the standard input, output and
2662 error streams.")
2663 (home-page "https://github.com/tobyclemson/lino")
2664 (license license:expat)))
2665
2666 (define-public ruby-xml-simple
2667 (package
2668 (name "ruby-xml-simple")
2669 (version "1.1.5")
2670 (source (origin
2671 (method url-fetch)
2672 (uri (rubygems-uri "xml-simple" version))
2673 (sha256
2674 (base32
2675 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
2676 (build-system ruby-build-system)
2677 (arguments
2678 '(#:tests? #f)) ; no test suite
2679 (synopsis "Simple Ruby library for XML processing")
2680 (description "This library provides a simple API for XML processing in
2681 Ruby.")
2682 (home-page "https://github.com/maik/xml-simple")
2683 (license license:ruby)))
2684
2685 (define-public ruby-thor
2686 (package
2687 (name "ruby-thor")
2688 (version "1.0.1")
2689 (source (origin
2690 ;; Pull from git because the gem has no tests.
2691 (method git-fetch)
2692 (uri (git-reference
2693 (url "https://github.com/erikhuda/thor")
2694 (commit (string-append "v" version))))
2695 (file-name (git-file-name name version))
2696 (sha256
2697 (base32
2698 "1anrx5vynk57hn5c8ig5pgkmcsbj9q5mvckd5rviw1jid7n89k57"))))
2699 (build-system ruby-build-system)
2700 (arguments
2701 '(#:phases (modify-phases %standard-phases
2702 (add-after 'unpack 'fix-readline-tests
2703 (lambda _
2704 ;; Ensure Readline is initialized before running the
2705 ;; test to avoid a type clash with the mock ::Readline.
2706 ;; See <https://github.com/erikhuda/thor/pull/717>.
2707 (substitute* "spec/line_editor/readline_spec.rb"
2708 (("unless defined\\? ::Readline" all)
2709 (string-append "Thor::LineEditor::Readline.available?\n"
2710 all)))
2711 #t))
2712 (add-after 'unpack 'remove-coveralls-dependency
2713 (lambda _
2714 ;; Do not hook the test suite into the online
2715 ;; coveralls service.
2716 (substitute* "Gemfile"
2717 ((".*coveralls.*") ""))
2718 (substitute* "spec/helper.rb"
2719 (("require \"coveralls\"") "")
2720 (("Coveralls::SimpleCov::Formatter") "")
2721 ;; Also drop the WebMock dependency which is only
2722 ;; present to allow a coveralls.io connection, and
2723 ;; would otherwise introduce a circular dependency.
2724 (("require \"webmock/rspec\"") "")
2725 (("WebMock\\.disable_net_connect.*") ""))
2726 #t))
2727 (add-after 'unpack 'disable-network-tests
2728 (lambda _
2729 ;; These tests attempt to look up example.com.
2730 (substitute* "spec/actions/file_manipulation_spec.rb"
2731 (("it \"accepts (https?) remote sources" _ proto)
2732 (string-append "xit \"accepts " proto " remote sources")))
2733 #t))
2734 (add-after 'unpack 'disable-quality-tests
2735 (lambda _
2736 ;; These tests attempt to check the git repository for
2737 ;; tabs vs spaces, double vs single quotes, etc, and
2738 ;; depend on the git checkout.
2739 (delete-file "spec/quality_spec.rb")
2740 #t))
2741 (add-before 'check 'make-files-writable
2742 (lambda _
2743 ;; The tests needs rw access to the test suite.
2744 (for-each make-file-writable (find-files "spec"))
2745 #t))
2746 (replace 'check
2747 (lambda _
2748 (invoke "rspec" "spec"))))))
2749 (native-inputs
2750 `(("ruby-rspec" ,ruby-rspec)
2751 ("ruby-simplecov" ,ruby-simplecov)))
2752 (synopsis "Ruby toolkit for building command-line interfaces")
2753 (description "Thor is a toolkit for building powerful command-line
2754 interfaces.")
2755 (home-page "http://whatisthor.com/")
2756 (license license:expat)))
2757
2758 (define-public ruby-lumberjack
2759 (package
2760 (name "ruby-lumberjack")
2761 (version "1.0.13")
2762 (source (origin
2763 (method url-fetch)
2764 (uri (rubygems-uri "lumberjack" version))
2765 (sha256
2766 (base32
2767 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
2768 (build-system ruby-build-system)
2769 (native-inputs
2770 `(("ruby-rspec" ,ruby-rspec)
2771 ("ruby-timecop" ,ruby-timecop)))
2772 (synopsis "Logging utility library for Ruby")
2773 (description "Lumberjack is a simple logging utility that can be a drop in
2774 replacement for Logger or ActiveSupport::BufferedLogger. It provides support
2775 for automatically rolling log files even with multiple processes writing the
2776 same log file.")
2777 (home-page "https://github.com/bdurand/lumberjack")
2778 (license license:expat)))
2779
2780 (define-public ruby-rbnacl
2781 (package
2782 (name "ruby-rbnacl")
2783 (version "6.0.1")
2784 (source
2785 (origin
2786 (method url-fetch)
2787 (uri (rubygems-uri "rbnacl" version))
2788 (sha256
2789 (base32
2790 "0ajxy5kj2jw09wdsla3jmha8w07vj5l14288xr9djpl327g3lzhn"))))
2791 (build-system ruby-build-system)
2792 (arguments
2793 `(#:phases
2794 (modify-phases %standard-phases
2795 (add-after 'unpack 'remove-unnecessary-dependencies
2796 (lambda _
2797 ;; Coveralls relates to a network service, and Rubocop to code
2798 ;; linting and both are unnecessary to run the tests
2799 (substitute* "Gemfile"
2800 ((".*rubocop.*") "\n")
2801 ((".*guard-rspec.*") "\n")
2802 ((".*coveralls.*") "\n"))
2803 (substitute* "spec/spec_helper.rb"
2804 (("require \"coveralls\"") "")
2805 (("Coveralls.wear!") ""))
2806 #t))
2807 (add-after 'unpack 'use-libsodium-from-store
2808 (lambda* (#:key inputs #:allow-other-keys)
2809 (substitute* '("lib/rbnacl/init.rb"
2810 "lib/rbnacl/sodium.rb")
2811 (("ffi_lib \\[.+\\]")
2812 (string-append "ffi_lib [\""
2813 (assoc-ref inputs "libsodium") "/lib/libsodium.so"
2814 "\"]")))
2815 #t))
2816 ;; Run Rspec directly to avoid the Rubocop dependency in the Rakefile
2817 (replace 'check
2818 (lambda* (#:key tests? #:allow-other-keys)
2819 (when tests?
2820 (invoke "rspec"))
2821 #t)))))
2822 (propagated-inputs
2823 `(("ruby-ffi" ,ruby-ffi)))
2824 (inputs
2825 `(("libsodium" ,libsodium)))
2826 (native-inputs
2827 `(("bundler" ,bundler)
2828 ("ruby-rspec" ,ruby-rspec)))
2829 (synopsis "Ruby FFI binding to libsodium")
2830 (description
2831 "This package provides Ruby FFI bindings to the Networking and
2832 Cryptography (NaCl) library, also known as libsodium. This provides a
2833 high-level toolkit for building cryptographic systems and protocols.")
2834 (home-page "https://github.com/crypto-rb/rbnacl")
2835 (license license:expat)))
2836
2837 (define-public ruby-nenv
2838 (package
2839 (name "ruby-nenv")
2840 (version "0.3.0")
2841 (source (origin
2842 (method url-fetch)
2843 (uri (rubygems-uri "nenv" version))
2844 (sha256
2845 (base32
2846 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
2847 (build-system ruby-build-system)
2848 (arguments
2849 `(#:tests? #f)) ; no tests included
2850 (native-inputs
2851 `(("ruby-rspec" ,ruby-rspec)
2852 ("bundler" ,bundler)))
2853 (synopsis "Ruby interface for modifying the environment")
2854 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
2855 and inspect the environment.")
2856 (home-page "https://github.com/e2/nenv")
2857 (license license:expat)))
2858
2859 (define-public ruby-ptools
2860 (package
2861 (name "ruby-ptools")
2862 (version "1.3.5")
2863 (source (origin
2864 (method url-fetch)
2865 (uri (rubygems-uri "ptools" version))
2866 (sha256
2867 (base32
2868 "1jb1h1nsk9zwykpniw8filbsk26kjsdlpk5wz6w0zyamcd41h87j"))))
2869 (build-system ruby-build-system)
2870 (arguments
2871 '(#:phases (modify-phases %standard-phases
2872 (add-after 'unpack 'patch-/bin/ls
2873 (lambda _
2874 (substitute* "test/test_binary.rb"
2875 (("/bin/ls")
2876 (which "ls")))
2877 #t))
2878 (add-before 'install 'create-gem
2879 (lambda _
2880 ;; Do not attempt to sign the gem.
2881 (substitute* "Rakefile"
2882 (("spec\\.signing_key = .*")
2883 ""))
2884 (invoke "rake" "gem:create"))))))
2885 (synopsis "Extra methods for Ruby's @code{File} class")
2886 (description
2887 "The @dfn{ptools} (power tools) library extends Ruby's core @code{File}
2888 class with many additional methods modelled after common POSIX tools, such as
2889 @code{File.which} for finding executables, @code{File.tail} to print the last
2890 lines of a file, @code{File.wc} to count words, and so on.")
2891 (home-page "https://github.com/djberg96/ptools")
2892 (license license:artistic2.0)))
2893
2894 (define-public ruby-permutation
2895 (package
2896 (name "ruby-permutation")
2897 (version "0.1.8")
2898 (source (origin
2899 (method url-fetch)
2900 (uri (rubygems-uri "permutation" version))
2901 (sha256
2902 (base32
2903 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
2904 (build-system ruby-build-system)
2905 (arguments
2906 `(#:phases
2907 (modify-phases %standard-phases
2908 (add-after 'unpack 'fix-rakefile
2909 (lambda _
2910 (substitute* "Rakefile"
2911 (("require 'rake/gempackagetask'")
2912 "require 'rubygems/package_task'")
2913 (("include Config") ""))
2914 #t))
2915 (replace 'check
2916 (lambda _
2917 (invoke "ruby" "-Ilib" "test/test.rb"))))))
2918 (synopsis "Library to perform operations with sequence permutations")
2919 (description "This package provides a Ruby library to perform different
2920 operations with permutations of sequences, such as strings and arrays.")
2921 (home-page "https://flori.github.io/permutation")
2922 (license license:gpl2))) ; GPL 2 only
2923
2924 (define-public ruby-shellany
2925 (package
2926 (name "ruby-shellany")
2927 (version "0.0.1")
2928 (source (origin
2929 (method url-fetch)
2930 (uri (rubygems-uri "shellany" version))
2931 (sha256
2932 (base32
2933 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
2934 (build-system ruby-build-system)
2935 (arguments
2936 `(#:test-target "default"
2937 #:phases
2938 (modify-phases %standard-phases
2939 (add-after 'unpack 'fix-version-test
2940 (lambda _
2941 (substitute* "spec/shellany_spec.rb"
2942 (("^RSpec") "require \"shellany\"\nRSpec"))
2943 #t)))))
2944 (native-inputs
2945 `(("ruby-rspec" ,ruby-rspec)
2946 ("ruby-nenv" ,ruby-nenv)
2947 ("bundler" ,bundler)))
2948 (synopsis "Capture command output")
2949 (description "Shellany is a Ruby library providing functions to capture
2950 the output produced by running shell commands.")
2951 (home-page "https://rubygems.org/gems/shellany")
2952 (license license:expat)))
2953
2954 (define-public ruby-notiffany
2955 (package
2956 (name "ruby-notiffany")
2957 (version "0.1.3")
2958 (source (origin
2959 (method url-fetch)
2960 (uri (rubygems-uri "notiffany" version))
2961 (sha256
2962 (base32
2963 "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk"))))
2964 (build-system ruby-build-system)
2965 ;; Tests are not included in the gem.
2966 (arguments `(#:tests? #f))
2967 (propagated-inputs
2968 `(("ruby-shellany" ,ruby-shellany)
2969 ("ruby-nenv" ,ruby-nenv)))
2970 (native-inputs
2971 `(("bundler" ,bundler)))
2972 (synopsis "Wrapper library for notification libraries")
2973 (description "Notiffany is a Ruby wrapper library for notification
2974 libraries such as Libnotify.")
2975 (home-page "https://github.com/guard/notiffany")
2976 (license license:expat)))
2977
2978 (define-public ruby-forking-test-runner
2979 (package
2980 (name "ruby-forking-test-runner")
2981 (version "1.6.0")
2982 (home-page "https://github.com/grosser/forking_test_runner")
2983 (source (origin
2984 (method git-fetch)
2985 (uri (git-reference (url home-page)
2986 (commit (string-append "v" version))))
2987 (file-name (git-file-name name version))
2988 (sha256
2989 (base32
2990 "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m"))))
2991 (build-system ruby-build-system)
2992 (arguments
2993 '(#:test-target "spec"
2994 ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has
2995 ;; 1.4.1, which in turn breaks the tests that use ActiveRecord.
2996 #:tests? #f
2997 #:phases (modify-phases %standard-phases
2998 (replace 'replace-git-ls-files
2999 (lambda _
3000 (substitute* "forking_test_runner.gemspec"
3001 (("`git ls-files lib/ bin/ MIT-LICENSE`")
3002 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
3003 #t))
3004 (add-before 'check 'remove-version-constraints
3005 (lambda _
3006 ;; Ignore hard coded version constraints for the tests.
3007 (delete-file "Gemfile.lock")
3008 #t))
3009 (add-before 'check 'set-HOME
3010 (lambda _
3011 ;; Many tests invoke Bundler, and fails when Bundler
3012 ;; warns that /homeless-shelter does not exist.
3013 (setenv "HOME" "/tmp")
3014 #t)))))
3015 (native-inputs
3016 `(("ruby-activerecord" ,ruby-activerecord)
3017 ("ruby-bump" ,ruby-bump)
3018 ("ruby-rspec" ,ruby-rspec)
3019 ("ruby-sqlite3" ,ruby-sqlite3)
3020 ("ruby-wwtd" ,ruby-wwtd)))
3021 (propagated-inputs
3022 `(("ruby-parallel-tests" ,ruby-parallel-tests)))
3023 (synopsis "Run every test in a fork")
3024 (description
3025 "This package is a wrapper around @code{parallel_tests} that runs every
3026 test in a fork to avoid pollution and get clean output per test.")
3027 (license license:expat)))
3028
3029 (define-public ruby-formatador
3030 (package
3031 (name "ruby-formatador")
3032 (version "0.2.5")
3033 (source (origin
3034 (method url-fetch)
3035 (uri (rubygems-uri "formatador" version))
3036 (sha256
3037 (base32
3038 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
3039 (build-system ruby-build-system)
3040 ;; Circular dependency: Tests require ruby-shindo, which requires
3041 ;; ruby-formatador at runtime.
3042 (arguments `(#:tests? #f))
3043 (synopsis "Ruby library to format text on stdout")
3044 (description "Formatador is a Ruby library to format text printed to the
3045 standard output stream.")
3046 (home-page "https://github.com/geemus/formatador")
3047 (license license:expat)))
3048
3049 (define-public ruby-fuubar
3050 (package
3051 (name "ruby-fuubar")
3052 (version "2.3.2")
3053 (source
3054 (origin
3055 ;; Fetch from the git repository, as the gem package doesn't include
3056 ;; the tests.
3057 (method git-fetch)
3058 (uri (git-reference
3059 (url "https://github.com/thekompanee/fuubar")
3060 (commit (string-append "releases/v" version))))
3061 (file-name (git-file-name name version))
3062 (sha256
3063 (base32
3064 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
3065 (build-system ruby-build-system)
3066 (arguments
3067 '(;; TODO: Some tests fail, unsure why.
3068 ;; 21 examples, 7 failures
3069 #:tests? #f
3070 #:phases
3071 (modify-phases %standard-phases
3072 (add-before 'build 'delete-certificate
3073 (lambda _
3074 ;; Remove 's.cert_chain' as we do not build with a private key
3075 (substitute* "fuubar.gemspec"
3076 ((".*cert_chain.*") "")
3077 ((".*signing_key.*") ""))
3078 #t))
3079 (replace 'check
3080 (lambda* (#:key tests? #:allow-other-keys)
3081 (when tests?
3082 (invoke "rspec"))
3083 #t)))))
3084 (native-inputs
3085 `(("bundler" ,bundler)))
3086 (propagated-inputs
3087 `(("ruby-rspec-core" ,ruby-rspec-core)
3088 ("ruby-progressbar" ,ruby-progressbar)))
3089 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
3090 (description
3091 "Fuubar is an RSpec formatter that uses a progress bar instead of a
3092 string of letters and dots as feedback. It also stops on the first test
3093 failure.")
3094 (home-page "https://github.com/thekompanee/fuubar")
3095 (license license:expat)))
3096
3097 (define-public ruby-haml
3098 (package
3099 (name "ruby-haml")
3100 (version "5.0.4")
3101 (source
3102 (origin
3103 (method url-fetch)
3104 (uri (rubygems-uri "haml" version))
3105 (sha256
3106 (base32
3107 "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"))))
3108 (build-system ruby-build-system)
3109 (arguments
3110 '(#:tests? #f)) ; No included tests
3111 (propagated-inputs
3112 `(("ruby-tilt" ,ruby-tilt)
3113 ("ruby-temple" ,ruby-temple)))
3114 (synopsis "Haml is a Ruby library to generate HTML documents")
3115 (description
3116 "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of
3117 HTML or XML that is designed to express the structure of documents using
3118 indentation rather than closing tags. It was originally envisioned as a
3119 plugin for Ruby on Rails, but it can function as a stand-alone templating
3120 engine.")
3121 (home-page "http://haml.info/")
3122 (license license:expat)))
3123
3124 (define-public ruby-hamster
3125 (package
3126 (name "ruby-hamster")
3127 (version "3.0.0")
3128 (source
3129 (origin
3130 (method url-fetch)
3131 (uri (rubygems-uri "hamster" version))
3132 (sha256
3133 (base32
3134 "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
3135 (build-system ruby-build-system)
3136 (arguments
3137 '(#:phases
3138 (modify-phases %standard-phases
3139 (add-after 'unpack 'remove-unnecessary-dependencies
3140 (lambda _
3141 ;; pry is a debugging tool, and is unnecessary when running the
3142 ;; tests
3143 (substitute* "spec/lib/hamster/vector/insert_spec.rb"
3144 (("require 'pry'") ""))
3145 (substitute* "spec/spec_helper.rb"
3146 (("require \"pry\"") "")
3147 ;; CodeClimate is an online service, and is unnecessary for
3148 ;; running the tests
3149 (("require \"codeclimate-test-reporter\"") "")
3150 (("CodeClimate.*\n") ""))
3151 #t))
3152 ;; No Rakefile is included, so run rspec directly.
3153 (replace 'check
3154 (lambda* (#:key tests? #:allow-other-keys)
3155 (when tests?
3156 (invoke "rspec"))
3157 #t)))))
3158 (propagated-inputs
3159 `(("ruby-concurrent" ,ruby-concurrent)))
3160 (native-inputs
3161 `(("ruby-rspec" ,ruby-rspec)))
3162 (synopsis "Efficient, immutable, thread-safe collection classes for Ruby")
3163 (description
3164 "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector},
3165 @code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an
3166 immutable queue or stack).")
3167 (home-page "https://github.com/hamstergem/hamster")
3168 (license license:expat)))
3169
3170 (define-public ruby-hashdiff
3171 (package
3172 (name "ruby-hashdiff")
3173 (version "1.0.1")
3174 (source
3175 (origin
3176 (method url-fetch)
3177 (uri (rubygems-uri "hashdiff" version))
3178 (sha256
3179 (base32
3180 "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c"))))
3181 (build-system ruby-build-system)
3182 (arguments
3183 '(#:phases
3184 (modify-phases %standard-phases
3185 ;; Run tests directly via rspec to avoid depending on rubocop.
3186 (replace 'check
3187 (lambda* (#:key tests? #:allow-other-keys)
3188 (when tests?
3189 (invoke "rspec"))
3190 #t)))))
3191 (native-inputs
3192 `(("bundler" ,bundler)
3193 ("ruby-rspec" ,ruby-rspec-2)))
3194 (synopsis "HashDiff computes the smallest difference between two hashes")
3195 (description
3196 "HashDiff is a Ruby library to compute the smallest difference between
3197 two hashes.")
3198 (home-page "https://github.com/liufengyun/hashdiff")
3199 (license license:expat)))
3200
3201 (define-public ruby-hydra
3202 ;; No releases yet.
3203 (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
3204 (revision "0"))
3205 (package
3206 (name "ruby-hydra")
3207 (version (git-version "0.0" revision commit))
3208 (home-page "https://github.com/hyphenation/hydra")
3209 (source (origin
3210 (method git-fetch)
3211 (uri (git-reference (url home-page) (commit commit)))
3212 (file-name (git-file-name name version))
3213 (sha256
3214 (base32
3215 "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
3216 (build-system ruby-build-system)
3217 (arguments
3218 '(#:phases (modify-phases %standard-phases
3219 (add-after 'unpack 'make-files-writable
3220 (lambda _
3221 (for-each make-file-writable (find-files "."))
3222 #t))
3223 (replace 'check
3224 (lambda _
3225 (invoke "rspec"))))))
3226 (native-inputs
3227 `(("ruby-rspec" ,ruby-rspec)))
3228 (propagated-inputs
3229 `(("ruby-byebug" ,ruby-byebug)))
3230 (synopsis "Ruby hyphenation patterns")
3231 (description
3232 "ruby-hydra is a Ruby library for working with hyphenation patterns.")
3233 (license license:expat))))
3234
3235 (define-public ruby-shindo
3236 (package
3237 (name "ruby-shindo")
3238 (version "0.3.8")
3239 (source (origin
3240 (method url-fetch)
3241 (uri (rubygems-uri "shindo" version))
3242 (sha256
3243 (base32
3244 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
3245 (build-system ruby-build-system)
3246 (arguments
3247 `(#:test-target "shindo_tests"
3248 #:phases
3249 (modify-phases %standard-phases
3250 (add-after 'unpack 'fix-tests
3251 (lambda _
3252 (substitute* "tests/tests_helper.rb"
3253 (("-rubygems") ""))
3254 (substitute* "Rakefile"
3255 (("system \"shindo") "system \"./bin/shindo")
3256 ;; This test doesn't work, so we disable it.
3257 (("fail \"The build_error test should fail") "#")
3258 ((" -rubygems") ""))
3259 #t)))))
3260 (propagated-inputs
3261 `(("ruby-formatador" ,ruby-formatador)))
3262 (synopsis "Simple depth first Ruby testing")
3263 (description "Shindo is a simple depth first testing library for Ruby.")
3264 (home-page "https://github.com/geemus/shindo")
3265 (license license:expat)))
3266
3267 (define-public ruby-rubygems-tasks
3268 (package
3269 (name "ruby-rubygems-tasks")
3270 (version "0.2.5")
3271 (source (origin
3272 (method url-fetch)
3273 (uri (rubygems-uri "rubygems-tasks" version))
3274 (sha256
3275 (base32
3276 "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx"))))
3277 (build-system ruby-build-system)
3278 ;; Tests need Internet access.
3279 (arguments `(#:tests? #f))
3280 (native-inputs
3281 `(("ruby-rspec" ,ruby-rspec)
3282 ("ruby-yard" ,ruby-yard)))
3283 (synopsis "Rake tasks for managing and releasing Ruby Gems")
3284 (description "Rubygems-task provides Rake tasks for managing and releasing
3285 Ruby Gems.")
3286 (home-page "https://github.com/postmodern/rubygems-tasks")
3287 (license license:expat)))
3288
3289 (define-public ruby-rubyzip
3290 (package
3291 (name "ruby-rubyzip")
3292 (version "1.2.1")
3293 (source
3294 (origin
3295 (method url-fetch)
3296 (uri (rubygems-uri "rubyzip" version))
3297 (sha256
3298 (base32
3299 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
3300 (build-system ruby-build-system)
3301 (arguments
3302 '(#:phases
3303 (modify-phases %standard-phases
3304 (add-before 'check 'patch-tests
3305 (lambda* (#:key inputs #:allow-other-keys)
3306 (substitute* "test/gentestfiles.rb"
3307 (("/usr/bin/zip")
3308 (string-append
3309 (assoc-ref inputs "zip") "/bin/zip")))
3310 (substitute* "test/input_stream_test.rb"
3311 (("/usr/bin/env ruby") (which "ruby")))
3312 #t)))))
3313 (native-inputs
3314 `(("bundler" ,bundler)
3315 ("ruby-simplecov" ,ruby-simplecov)
3316 ("zip" ,zip)
3317 ("unzip" ,unzip)))
3318 (synopsis "Ruby module is for reading and writing zip files")
3319 (description
3320 "The rubyzip module provides ways to read from and create zip files.")
3321 (home-page "https://github.com/rubyzip/rubyzip")
3322 (license license:bsd-2)))
3323
3324 (define-public ruby-simplecov-html
3325 (package
3326 (name "ruby-simplecov-html")
3327 (version "0.10.2")
3328 (source (origin
3329 (method url-fetch)
3330 (uri (rubygems-uri "simplecov-html" version))
3331 (sha256
3332 (base32
3333 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
3334 (build-system ruby-build-system)
3335 (arguments `(#:tests? #f)) ; there are no tests
3336 (native-inputs
3337 `(("bundler" ,bundler)))
3338 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
3339 (description "This package provides the default HTML formatter for
3340 the SimpleCov code coverage tool for Ruby version 1.9 and above.")
3341 (home-page "https://github.com/colszowka/simplecov-html")
3342 (license license:expat)))
3343
3344 (define-public ruby-simplecov
3345 (package
3346 (name "ruby-simplecov")
3347 (version "0.17.1")
3348 (source (origin
3349 (method url-fetch)
3350 (uri (rubygems-uri "simplecov" version))
3351 (sha256
3352 (base32
3353 "1135k46nik05sdab30yxb8264lqiz01c8v000g16cl9pjc4mxrdw"))))
3354 (build-system ruby-build-system)
3355 ;; Simplecov depends on rubocop for code style checking at build time.
3356 ;; Rubocop needs simplecov at build time.
3357 (arguments `(#:tests? #f))
3358 (propagated-inputs
3359 `(("ruby-json" ,ruby-json)
3360 ("ruby-docile" ,ruby-docile)
3361 ("ruby-simplecov-html" ,ruby-simplecov-html)))
3362 (native-inputs
3363 `(("bundler" ,bundler)))
3364 (synopsis "Code coverage framework for Ruby")
3365 (description "SimpleCov is a code coverage framework for Ruby with a
3366 powerful configuration library and automatic merging of coverage across test
3367 suites.")
3368 (home-page "https://github.com/colszowka/simplecov")
3369 (license license:expat)))
3370
3371 (define-public ruby-useragent
3372 (package
3373 (name "ruby-useragent")
3374 (version "0.16.10")
3375 (source (origin
3376 (method url-fetch)
3377 (uri (rubygems-uri "useragent" version))
3378 (sha256
3379 (base32
3380 "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p"))))
3381 (build-system ruby-build-system)
3382 (arguments
3383 '(#:tests? #f)) ; no test suite
3384 (synopsis "HTTP user agent parser for Ruby")
3385 (description "UserAgent is a Ruby library that parses and compares HTTP
3386 User Agents.")
3387 (home-page "https://github.com/gshutler/useragent")
3388 (license license:expat)))
3389
3390 (define-public ruby-backports
3391 (package
3392 (name "ruby-backports")
3393 (version "3.11.4")
3394 (source
3395 (origin
3396 (method url-fetch)
3397 (uri (rubygems-uri "backports" version))
3398 (sha256
3399 (base32
3400 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
3401 (build-system ruby-build-system)
3402 (arguments
3403 '(;; TODO: This should be default, but there is one test failure
3404 #:test-target "all_spec"))
3405 (native-inputs
3406 `(("ruby-mspec" ,ruby-mspec)
3407 ("ruby-activesupport" ,ruby-activesupport)))
3408 (synopsis "Backports of the features in newer Ruby versions")
3409 (description
3410 "Backports enables more compatibility across Ruby versions by providing
3411 backports of some features.")
3412 (home-page "https://github.com/marcandre/backports")
3413 (license license:expat)))
3414
3415 (define-public ruby-bacon
3416 (package
3417 (name "ruby-bacon")
3418 (version "1.2.0")
3419 (source (origin
3420 (method url-fetch)
3421 (uri (rubygems-uri "bacon" version))
3422 (sha256
3423 (base32
3424 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
3425 (build-system ruby-build-system)
3426 (synopsis "Small RSpec clone")
3427 (description "Bacon is a small RSpec clone providing all essential
3428 features.")
3429 (home-page "https://github.com/chneukirchen/bacon")
3430 (license license:expat)))
3431
3432 (define-public ruby-bacon-bits
3433 (package
3434 (name "ruby-bacon-bits")
3435 (version "0.1.0")
3436 (source
3437 (origin
3438 (method url-fetch)
3439 (uri (rubygems-uri "bacon-bits" version))
3440 (sha256
3441 (base32
3442 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
3443 (build-system ruby-build-system)
3444 (arguments
3445 ;; No tests
3446 '(#:tests? #f))
3447 (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
3448 (synopsis "Extensions to Bacon, for disabling tests, before and after
3449 blocks and more")
3450 (description
3451 "This extends the bacon testing framework with useful extensions to
3452 disable tests, have before and after blocks that run once and more.")
3453 (home-page "https://github.com/cldwalker/bacon-bits")
3454 (license license:expat)))
3455
3456 (define-public ruby-bacon-colored-output
3457 (package
3458 (name "ruby-bacon-colored-output")
3459 (version "1.1.1")
3460 (source
3461 (origin
3462 (method url-fetch)
3463 (uri (rubygems-uri "bacon-colored_output" version))
3464 (sha256
3465 (base32
3466 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
3467 (build-system ruby-build-system)
3468 (arguments
3469 '(;; No included tests
3470 #:tests? #f))
3471 (propagated-inputs
3472 `(("ruby-bacon" ,ruby-bacon)))
3473 (synopsis "Colored output for Bacon test framework")
3474 (description
3475 "This package adds color through ANSI escape codes to Bacon test
3476 output.")
3477 (home-page "https://github.com/whitequark/bacon-colored_output")
3478 (license license:expat)))
3479
3480 (define-public ruby-connection-pool
3481 (package
3482 (name "ruby-connection-pool")
3483 (version "2.2.2")
3484 (source (origin
3485 (method url-fetch)
3486 (uri (rubygems-uri "connection_pool" version))
3487 (sha256
3488 (base32
3489 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
3490 (build-system ruby-build-system)
3491 (native-inputs
3492 `(("bundler" ,bundler)))
3493 (synopsis "Generic connection pool for Ruby")
3494 (description "Connection_pool provides a generic connection pooling
3495 interface for Ruby programs.")
3496 (home-page "https://github.com/mperham/connection_pool")
3497 (license license:expat)))
3498
3499 (define-public ruby-fast-gettext
3500 (package
3501 (name "ruby-fast-gettext")
3502 (version "2.0.3")
3503 (home-page "https://github.com/grosser/fast_gettext")
3504 (source (origin
3505 (method git-fetch)
3506 (uri (git-reference (url home-page)
3507 (commit (string-append "v" version))))
3508 (file-name (git-file-name name version))
3509 (sha256
3510 (base32
3511 "1dg14apq5sfjshhcq0idphhs7aq9ikzswhqmn689p1h76mxqr1v6"))))
3512 (build-system ruby-build-system)
3513 (arguments
3514 '(#:test-target "spec"
3515 #:phases (modify-phases %standard-phases
3516 (add-before 'check 'remove-version-constraints
3517 (lambda _
3518 (delete-file "Gemfile.lock")
3519 #t))
3520 (add-before 'check 'remove-activerecord-test
3521 (lambda _
3522 ;; FIXME: This test fails because ActiveRecord depends on
3523 ;; a different version of ruby-sqlite than the currently
3524 ;; available one.
3525 (delete-file
3526 "spec/fast_gettext/translation_repository/db_spec.rb")
3527 #t))
3528 (add-before 'check 'disable-i18n-test
3529 (lambda _
3530 ;; XXX: This test checks i18n intricasies with Rails 3 and
3531 ;; automatically disables itself for Rails 4.0, but does
3532 ;; not know about newer versions as it has not been updated
3533 ;; since 2014. Disable for later versions of Rails too.
3534 (substitute* "spec/fast_gettext/vendor/string_spec.rb"
3535 (((string-append "ActiveRecord::VERSION::MAJOR == 4 and "
3536 "ActiveRecord::VERSION::MINOR == 0"))
3537 "ActiveRecord::VERSION::MAJOR >= 4"))
3538 #t)))))
3539 (native-inputs
3540 `(;; For tests.
3541 ("ruby-activerecord" ,ruby-activerecord)
3542 ("ruby-activesupport" ,ruby-activesupport)
3543 ("ruby-bump" ,ruby-bump)
3544 ("ruby-forking-test-runner" ,ruby-forking-test-runner)
3545 ("ruby-i18n" ,ruby-i18n)
3546 ("ruby-rubocop" ,ruby-rubocop)
3547 ("ruby-rspec" ,ruby-rspec)
3548 ("ruby-single-cov" ,ruby-single-cov)
3549 ("ruby-sqlite3" ,ruby-sqlite3)
3550 ("ruby-wwtd" ,ruby-wwtd)))
3551 (synopsis "Fast implementation of @code{GetText}")
3552 (description
3553 "This package provides an alternative implementation of the Ruby
3554 @code{GetText} library that is approximately 12x faster yet thread safe.")
3555 ;; Some parts are covered by the Ruby license, see file headers.
3556 (license (list license:expat license:ruby))))
3557
3558 (define-public ruby-net-http-persistent
3559 (package
3560 (name "ruby-net-http-persistent")
3561 (version "3.0.0")
3562 (source (origin
3563 (method url-fetch)
3564 (uri (rubygems-uri "net-http-persistent" version))
3565 (sha256
3566 (base32
3567 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
3568 (build-system ruby-build-system)
3569 (native-inputs
3570 `(("ruby-connection-pool" ,ruby-connection-pool)
3571 ("ruby-hoe" ,ruby-hoe)))
3572 (synopsis "Persistent HTTP connection manager")
3573 (description "Net::HTTP::Persistent manages persistent HTTP connections
3574 using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
3575 (home-page "https://github.com/drbrain/net-http-persistent")
3576 (license license:expat)))
3577
3578 (define-public ruby-power-assert
3579 (package
3580 (name "ruby-power-assert")
3581 (version "1.1.5")
3582 (source (origin
3583 (method url-fetch)
3584 (uri (rubygems-uri "power_assert" version))
3585 (sha256
3586 (base32
3587 "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s"))))
3588 (build-system ruby-build-system)
3589 (arguments
3590 '(#:tests? #f)) ; No included tests
3591 (native-inputs
3592 `(("bundler" ,bundler)))
3593 (synopsis "Assert library with descriptive assertion messages")
3594 (description "Power-assert is an assertion library providing descriptive
3595 assertion messages for tests.")
3596 (home-page "https://github.com/k-tsj/power_assert")
3597 (license (list license:bsd-2 license:ruby))))
3598
3599 (define-public ruby-powerpack
3600 (package
3601 (name "ruby-powerpack")
3602 (version "0.1.2")
3603 (source
3604 (origin
3605 (method url-fetch)
3606 (uri (rubygems-uri "powerpack" version))
3607 (sha256
3608 (base32
3609 "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
3610 (build-system ruby-build-system)
3611 (arguments
3612 '(#:test-target "spec"))
3613 (native-inputs
3614 `(("bundler" ,bundler)
3615 ("ruby-rspec" ,ruby-rspec)
3616 ("ruby-yard" ,ruby-yard)))
3617 (synopsis "Useful extensions to core Ruby classes")
3618 (description
3619 "This package provides a few useful extensions to core Ruby classes,
3620 including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
3621 @code{String}.")
3622 (home-page "https://github.com/bbatsov/powerpack")
3623 (license license:expat)))
3624
3625 (define-public ruby-locale
3626 (package
3627 (name "ruby-locale")
3628 (version "2.1.2")
3629 (source (origin
3630 (method url-fetch)
3631 (uri (rubygems-uri "locale" version))
3632 (sha256
3633 (base32
3634 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
3635 (build-system ruby-build-system)
3636 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
3637 ;; which needs ruby-gettext, which needs ruby-locale. To break the
3638 ;; dependency cycle we disable tests.
3639 (arguments `(#:tests? #f))
3640 (native-inputs
3641 `(("bundler" ,bundler)
3642 ("ruby-yard" ,ruby-yard)))
3643 (synopsis "Ruby library providing basic localization APIs")
3644 (description
3645 "Ruby-Locale is the pure ruby library which provides basic APIs for
3646 localization.")
3647 (home-page "https://github.com/ruby-gettext/locale")
3648 (license (list license:lgpl3+ license:ruby))))
3649
3650 (define-public ruby-temple
3651 (package
3652 (name "ruby-temple")
3653 (version "0.8.2")
3654 (source
3655 (origin
3656 (method url-fetch)
3657 (uri (rubygems-uri "temple" version))
3658 (sha256
3659 (base32
3660 "060zzj7c2kicdfk6cpnn40n9yjnhfrr13d0rsbdhdij68chp2861"))))
3661 (build-system ruby-build-system)
3662 (native-inputs
3663 `(("ruby-tilt" ,ruby-tilt)
3664 ("ruby-bacon" ,ruby-bacon)
3665 ("ruby-erubis" ,ruby-erubis)))
3666 (synopsis "Template compilation framework in Ruby")
3667 (description
3668 "Temple is an abstraction and framework for compiling templates to pure
3669 Ruby.")
3670 (home-page "https://github.com/judofyr/temple")
3671 (license license:expat)))
3672
3673 (define-public ruby-text
3674 (package
3675 (name "ruby-text")
3676 (version "1.3.1")
3677 (source (origin
3678 (method url-fetch)
3679 (uri (rubygems-uri "text" version))
3680 (sha256
3681 (base32
3682 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
3683 (build-system ruby-build-system)
3684 (synopsis "Collection of text algorithms for Ruby")
3685 (description
3686 "This package provides a collection of text algorithms: Levenshtein,
3687 Soundex, Metaphone, Double Metaphone, Porter Stemming.")
3688 (home-page "https://github.com/threedaymonk/text")
3689 (license license:expat)))
3690
3691 (define-public ruby-gettext
3692 (package
3693 (name "ruby-gettext")
3694 (version "3.1.7")
3695 (source (origin
3696 (method url-fetch)
3697 (uri (rubygems-uri "gettext" version))
3698 (sha256
3699 (base32
3700 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
3701 (build-system ruby-build-system)
3702 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
3703 ;; which needs ruby-gettext. To break the dependency cycle we disable
3704 ;; tests.
3705 (arguments `(#:tests? #f))
3706 (propagated-inputs
3707 `(("ruby-locale" ,ruby-locale)
3708 ("ruby-text" ,ruby-text)))
3709 (native-inputs
3710 `(("bundler" ,bundler)
3711 ("ruby-yard" ,ruby-yard)))
3712 (synopsis "GNU gettext-like program for Ruby")
3713 (description
3714 "Gettext is a GNU gettext-like program for Ruby. The catalog
3715 file (po-file) used is the same as that used by GNU gettext, allowing you to
3716 use GNU gettext tools for maintenance.")
3717 (home-page "https://ruby-gettext.github.com/")
3718 (license (list license:lgpl3+ license:ruby))))
3719
3720 (define-public ruby-packnga
3721 (package
3722 (name "ruby-packnga")
3723 (version "1.0.4")
3724 (source (origin
3725 (method url-fetch)
3726 (uri (rubygems-uri "packnga" version))
3727 (sha256
3728 (base32
3729 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
3730 (build-system ruby-build-system)
3731 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
3732 ;; To break the dependency cycle we disable tests.
3733 (arguments `(#:tests? #f))
3734 (propagated-inputs
3735 `(("ruby-gettext" ,ruby-gettext)
3736 ("ruby-yard" ,ruby-yard)))
3737 (native-inputs
3738 `(("bundler" ,bundler)))
3739 (synopsis "Utility library to package internationalized libraries")
3740 (description
3741 "Packnga is a library to translate to many languages using YARD.")
3742 (home-page "http://ranguba.org/packnga/")
3743 (license license:lgpl2.0+)))
3744
3745 (define-public ruby-test-construct
3746 (package
3747 (name "ruby-test-construct")
3748 (version "2.0.1")
3749 (source
3750 (origin
3751 (method url-fetch)
3752 (uri (rubygems-uri "test_construct" version))
3753 (sha256
3754 (base32
3755 "1a2ym3l068d0pxzzr95kvqx87zpdsarxslz9ygd4qfm9frrz0kgj"))))
3756 (build-system ruby-build-system)
3757 (native-inputs
3758 `(("bundler" ,bundler)
3759 ("ruby-mocha" ,ruby-mocha)
3760 ("ruby-rspec" ,ruby-rspec)))
3761 (synopsis "Creates temporary files and directories for testing")
3762 (description
3763 "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
3764 temporary files and directories during tests.")
3765 (home-page "https://github.com/bhb/test_construct")
3766 (license license:expat)))
3767
3768 (define-public ruby-test-unit
3769 (package
3770 (name "ruby-test-unit")
3771 (version "3.2.5")
3772 (source (origin
3773 (method url-fetch)
3774 (uri (rubygems-uri "test-unit" version))
3775 (sha256
3776 (base32
3777 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
3778 (build-system ruby-build-system)
3779 (propagated-inputs
3780 `(("ruby-power-assert" ,ruby-power-assert)))
3781 (native-inputs
3782 `(("bundler" ,bundler)
3783 ("ruby-packnga" ,ruby-packnga)
3784 ("ruby-yard" ,ruby-yard)))
3785 (synopsis "Unit testing framework for Ruby")
3786 (description "@code{Test::Unit} is unit testing framework for Ruby, based
3787 on xUnit principles. These were originally designed by Kent Beck, creator of
3788 extreme programming software development methodology, for Smalltalk's SUnit.
3789 It allows writing tests, checking results and automated testing in Ruby.")
3790 (home-page "https://test-unit.github.io/")
3791 (license (list license:psfl license:ruby))))
3792
3793 (define-public ruby-markaby
3794 (package
3795 (name "ruby-markaby")
3796 (version "0.9.0")
3797 (source
3798 (origin
3799 (method url-fetch)
3800 (uri (rubygems-uri "markaby" version))
3801 (sha256
3802 (base32
3803 "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
3804 (build-system ruby-build-system)
3805 (arguments
3806 '(#:phases
3807 (modify-phases %standard-phases
3808 ;; Run rspec manually without using the Rakefile, as the versions of
3809 ;; Rake and RSpec 2 are incompatible:
3810 ;;
3811 ;; NoMethodError: undefined method `last_comment'
3812 (replace 'check
3813 (lambda* (#:key tests? #:allow-other-keys)
3814 (when tests?
3815 (invoke "rspec"))
3816 #t)))))
3817 (propagated-inputs
3818 `(("ruby-builder" ,ruby-builder)))
3819 (native-inputs
3820 `(("bundler" ,bundler)
3821 ("ruby-rspec" ,ruby-rspec-2)))
3822 (synopsis "Write HTML pages in pure Ruby")
3823 (description
3824 "Markaby allows writing HTML packages in pure Ruby. This is similar to
3825 the functionality provided by @acronym{ERB, Embedded Ruby}, but without the
3826 mixture of HTML and additional ERB syntax.")
3827 (home-page "https://markaby.github.io/")
3828 (license license:expat)))
3829
3830 (define-public ruby-maruku
3831 (package
3832 (name "ruby-maruku")
3833 (version "0.7.3")
3834 (source
3835 (origin
3836 (method url-fetch)
3837 (uri (rubygems-uri "maruku" version))
3838 (sha256
3839 (base32
3840 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
3841 (build-system ruby-build-system)
3842 (arguments
3843 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
3844 #:tests? #f
3845 #:phases
3846 (modify-phases %standard-phases
3847 (replace 'check
3848 (lambda* (#:key tests? #:allow-other-keys)
3849 (when tests?
3850 (invoke "rspec"))
3851 #t)))))
3852 (native-inputs
3853 `(("ruby-rspec" ,ruby-rspec)
3854 ("ruby-simplecov" ,ruby-simplecov)
3855 ("ruby-nokogiri-diff" ,ruby-nokogiri-diff)))
3856 (synopsis "Markdown interpreter in Ruby")
3857 (description
3858 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
3859 HTML, and PDF through LaTeX.")
3860 (home-page "https://github.com/bhollis/maruku")
3861 (license license:expat)))
3862
3863 (define-public ruby-metaclass
3864 (package
3865 (name "ruby-metaclass")
3866 (version "0.0.4")
3867 (source (origin
3868 (method url-fetch)
3869 (uri (rubygems-uri "metaclass" version))
3870 (sha256
3871 (base32
3872 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
3873 (build-system ruby-build-system)
3874 (arguments
3875 `(#:phases
3876 (modify-phases %standard-phases
3877 (add-after 'unpack 'add-test-unit-to-search-path
3878 (lambda* (#:key inputs #:allow-other-keys)
3879 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
3880 (substitute* "Rakefile"
3881 (("t\\.libs << \"test\"" line)
3882 (string-append line "; t.libs << \""
3883 test-unit "/lib/ruby/vendor_ruby"
3884 "/gems/test-unit-"
3885 ,(package-version ruby-test-unit)
3886 "/lib\""))))
3887 #t)))))
3888 (native-inputs
3889 `(("bundler" ,bundler)
3890 ("ruby-test-unit" ,ruby-test-unit)))
3891 (synopsis "Ruby library adding metaclass method to all objects")
3892 (description
3893 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
3894 objects.")
3895 (home-page "https://github.com/floehopper/metaclass")
3896 (license license:expat)))
3897
3898 (define-public ruby-mkmf-lite
3899 (package
3900 (name "ruby-mkmf-lite")
3901 (version "0.3.2")
3902 (source (origin
3903 (method url-fetch)
3904 (uri (rubygems-uri "mkmf-lite" version))
3905 (sha256
3906 (base32
3907 "0br9k6zijj1zc25n8p7f2j1mwl58nfgdknf3q13h9k156jvrir06"))))
3908 (build-system ruby-build-system)
3909 (propagated-inputs
3910 `(("ruby-ptools" ,ruby-ptools)))
3911 (synopsis "Lightweight alternative to @code{mkmf}")
3912 (description
3913 "@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed
3914 for use as a library. It does not create packages, builds, or log files of
3915 any kind. Instead, it provides mixin methods that you can use in FFI or tests
3916 to check for the presence of header files, constants, and so on.")
3917 (home-page "https://github.com/djberg96/mkmf-lite")
3918 (license license:asl2.0)))
3919
3920 (define-public ruby-mspec
3921 (package
3922 (name "ruby-mspec")
3923 (version "1.9.1")
3924 (source
3925 (origin
3926 (method url-fetch)
3927 (uri (rubygems-uri "mspec" version))
3928 (sha256
3929 (base32
3930 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
3931 (build-system ruby-build-system)
3932 (arguments
3933 '(;; TODO: 3 test failures
3934 ;; ./spec/mocks/mock_spec.rb:82
3935 ;; ./spec/utils/name_map_spec.rb:151
3936 ;; ./spec/utils/name_map_spec.rb:155
3937 #:tests? #f
3938 #:phases
3939 (modify-phases %standard-phases
3940 (add-after 'extract-gemspec 'change-dependency-constraints
3941 (lambda _
3942 (substitute* "mspec.gemspec"
3943 (("rake.*") "rake>)\n")
3944 (("rspec.*") "rspec>)\n"))
3945 #t))
3946 (replace 'check
3947 (lambda* (#:key tests? #:allow-other-keys)
3948 (when tests?
3949 (invoke "rspec" "spec"))
3950 #t)))))
3951 (native-inputs
3952 `(("bundler" ,bundler)
3953 ("ruby-rake" ,ruby-rake)
3954 ("ruby-rspec" ,ruby-rspec)))
3955 (synopsis "MSpec is a specialized framework for RubySpec")
3956 (description
3957 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
3958 for basic features. MSpec contains additional features that assist in writing
3959 specs for Ruby implementations in ruby/spec.")
3960 (home-page "http://rubyspec.org")
3961 (license license:expat)))
3962
3963 (define-public ruby-mysql2
3964 (package
3965 (name "ruby-mysql2")
3966 (version "0.5.2")
3967 (source
3968 (origin
3969 (method git-fetch)
3970 (uri (git-reference
3971 (url "https://github.com/brianmario/mysql2")
3972 (commit version)))
3973 (file-name (git-file-name name version))
3974 (sha256
3975 (base32
3976 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
3977 (build-system ruby-build-system)
3978 (arguments
3979 '(;; TODO: Tests require a running MySQL/MariaDB service
3980 #:tests? #f
3981 #:phases
3982 (modify-phases %standard-phases
3983 (replace 'replace-git-ls-files
3984 (lambda _
3985 (substitute* "mysql2.gemspec"
3986 (("git ls-files .*`") "find . -type f |sort`"))
3987 #t))
3988 (add-before 'install 'set-MAKEFLAGS
3989 (lambda* (#:key outputs #:allow-other-keys)
3990 (setenv "MAKEFLAGS"
3991 (string-append
3992 "V=1 "
3993 "prefix=" (assoc-ref outputs "out")))
3994 #t))
3995 ;; Move the 'check phase to after 'install, as then you can test
3996 ;; using the installed mysql2 gem in the store.
3997 (delete 'check)
3998 (add-after 'install 'check
3999 (lambda* (#:key outputs tests? #:allow-other-keys)
4000 (setenv "GEM_PATH"
4001 (string-append
4002 (getenv "GEM_PATH")
4003 ":"
4004 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
4005 (when tests?
4006 (invoke "rspec"))
4007 #t)))))
4008 (inputs
4009 `(("mariadb-dev" ,mariadb "dev")
4010 ("zlib" ,zlib)))
4011 (native-inputs
4012 `(("ruby-rspec" ,ruby-rspec)
4013 ("ruby-rake-compiler" ,ruby-rake-compiler)))
4014 (synopsis "MySQL library for Ruby, binding to libmysql")
4015 (description
4016 "This package provides a simple, fast MySQL library for Ruby, binding to
4017 libmysql.")
4018 (home-page "https://github.com/brianmario/mysql2")
4019 (license license:expat)))
4020
4021 (define-public ruby-blankslate
4022 (package
4023 (name "ruby-blankslate")
4024 (version "3.1.3")
4025 (source (origin
4026 (method url-fetch)
4027 (uri (rubygems-uri "blankslate" version))
4028 (sha256
4029 (base32
4030 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
4031 (build-system ruby-build-system)
4032 (arguments
4033 `(#:phases
4034 (modify-phases %standard-phases
4035 (replace 'check
4036 (lambda _ (invoke "rspec" "spec/"))))))
4037 (native-inputs
4038 `(("bundler" ,bundler)
4039 ("ruby-rspec" ,ruby-rspec)))
4040 (synopsis "Abstract base class with no predefined methods")
4041 (description
4042 "BlankSlate provides an abstract base class with no predefined
4043 methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
4044 as a base class when writing classes that depend upon
4045 @code{method_missing} (e.g. dynamic proxies).")
4046 (home-page "https://github.com/masover/blankslate")
4047 (license license:expat)))
4048
4049 (define-public ruby-bond
4050 (package
4051 (name "ruby-bond")
4052 (version "0.5.1")
4053 (source
4054 (origin
4055 (method url-fetch)
4056 (uri (rubygems-uri "bond" version))
4057 (sha256
4058 (base32
4059 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
4060 (build-system ruby-build-system)
4061 (arguments
4062 ;; The test suite fails (see:
4063 ;; https://github.com/cldwalker/bond/issues/46).
4064 `(#:tests? #f))
4065 (native-inputs
4066 `(("ruby-bacon" ,ruby-bacon)
4067 ("ruby-bacon-bits" ,ruby-bacon-bits)
4068 ("ruby-mocha-on-bacon" ,ruby-mocha-on-bacon)))
4069 (synopsis "Bond can provide custom autocompletion for arguments, methods
4070 and more")
4071 (description
4072 "Bond can autocomplete argument(s) to methods, uniquely completing per
4073 module, per method and per argument. Bond provides a configuration system and
4074 a DSL for creating custom completions and completion rules. Bond can also
4075 load completions that ship with gems. Bond is able to offer more than irb's
4076 completion since it uses the full line of input when completing as opposed to
4077 irb's last-word approach.")
4078 (home-page "http://tagaholic.me/bond/")
4079 (license license:expat)))
4080
4081 (define-public ruby-idn-ruby
4082 (package
4083 (name "ruby-idn-ruby")
4084 (version "0.1.0")
4085 (source
4086 (origin
4087 (method url-fetch)
4088 (uri (rubygems-uri "idn-ruby" version))
4089 (sha256
4090 (base32
4091 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
4092 (build-system ruby-build-system)
4093 (arguments
4094 '(#:phases
4095 (modify-phases %standard-phases
4096 (delete 'check)
4097 (add-after 'install 'check
4098 (lambda* (#:key tests? outputs #:allow-other-keys)
4099 (when tests?
4100 (let* ((gem-file (cadr (find-files "." "\\.gem")))
4101 (name-and-version (basename gem-file ".gem")))
4102 (apply invoke
4103 "ruby" "--verbose"
4104 (string-append "-I"
4105 (assoc-ref outputs "out")
4106 "/lib/ruby/vendor_ruby/gems/"
4107 name-and-version
4108 "/lib")
4109 (find-files "./test" ".*\\.rb"))))
4110 #t)))))
4111 (inputs
4112 `(("libidn" ,libidn)))
4113 (synopsis "Ruby Bindings for the GNU LibIDN library")
4114 (description
4115 "Ruby Bindings for the GNU LibIDN library, an implementation of the
4116 Stringprep, Punycode and IDNA specifications. These are used to encode and
4117 decode internationalized domain + names according to the IDNA2003
4118 specifications.
4119
4120 Included are the most important parts of the Stringprep, Punycode and IDNA
4121 APIs like performing Stringprep processings, encoding to and decoding from
4122 Punycode strings and converting entire domain names to and from the ACE
4123 encoded form.")
4124 (home-page "https://github.com/deepfryed/idn-ruby")
4125 (license license:asl2.0)))
4126
4127 (define-public ruby-instantiator
4128 (package
4129 (name "ruby-instantiator")
4130 (version "0.0.7")
4131 (source (origin
4132 (method url-fetch)
4133 (uri (rubygems-uri "instantiator" version))
4134 (sha256
4135 (base32
4136 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
4137 (build-system ruby-build-system)
4138 (arguments
4139 `(#:phases
4140 (modify-phases %standard-phases
4141 (add-after 'unpack 'add-test-unit-to-search-path
4142 (lambda* (#:key inputs #:allow-other-keys)
4143 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
4144 (substitute* "Rakefile"
4145 (("t\\.libs << \"test\"" line)
4146 (string-append line "; t.libs << \""
4147 test-unit "/lib/ruby/vendor_ruby"
4148 "/gems/test-unit-"
4149 ,(package-version ruby-test-unit)
4150 "/lib\""))))
4151 #t)))))
4152 (propagated-inputs
4153 `(("ruby-blankslate" ,ruby-blankslate)))
4154 (native-inputs
4155 `(("bundler" ,bundler)
4156 ("ruby-test-unit" ,ruby-test-unit)))
4157 (synopsis "Instantiate an arbitrary Ruby class")
4158 (description
4159 "Instantiator lets you instantiate an arbitrary Ruby class without
4160 knowing anything about the constructor.")
4161 (home-page "https://github.com/floehopper/instantiator")
4162 (license license:expat)))
4163
4164 (define-public ruby-introspection
4165 (package
4166 (name "ruby-introspection")
4167 (version "0.0.4")
4168 (source (origin
4169 (method url-fetch)
4170 (uri (rubygems-uri "introspection" version))
4171 (sha256
4172 (base32
4173 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
4174 (build-system ruby-build-system)
4175 (arguments
4176 `(#:phases
4177 (modify-phases %standard-phases
4178 (add-after 'unpack 'add-test-unit-to-search-path
4179 (lambda* (#:key inputs #:allow-other-keys)
4180 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
4181 (substitute* "Rakefile"
4182 (("t\\.libs << \"test\"" line)
4183 (string-append line "; t.libs << \""
4184 test-unit "/lib/ruby/vendor_ruby"
4185 "/gems/test-unit-"
4186 ,(package-version ruby-test-unit)
4187 "/lib\""))))
4188 #t)))))
4189 (propagated-inputs
4190 `(("ruby-instantiator" ,ruby-instantiator)
4191 ("ruby-metaclass" ,ruby-metaclass)))
4192 (native-inputs
4193 `(("bundler" ,bundler)
4194 ("ruby-blankslate" ,ruby-blankslate)
4195 ("ruby-test-unit" ,ruby-test-unit)))
4196 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
4197 (description
4198 "Introspection provides tools to inspect the hierarchy of method
4199 definitions on a Ruby object.")
4200 (home-page "https://github.com/floehopper/introspection")
4201 (license license:expat)))
4202
4203 (define-public ruby-redcarpet
4204 (package
4205 (name "ruby-redcarpet")
4206 (version "3.5.0")
4207 (source (origin
4208 (method url-fetch)
4209 (uri (rubygems-uri "redcarpet" version))
4210 (sha256
4211 (base32
4212 "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k"))))
4213 (build-system ruby-build-system)
4214 (arguments
4215 `(#:phases
4216 (modify-phases %standard-phases
4217 ;; The gem archive does not include the conformance tests.
4218 (add-after 'unpack 'disable-conformance-tests
4219 (lambda _
4220 (substitute* "Rakefile"
4221 (("task :test => %w\\[test:unit test:conformance\\]")
4222 "task :test => %w[test:unit]"))
4223 #t)))))
4224 (native-inputs
4225 `(("bundler" ,bundler)
4226 ("ruby-test-unit" ,ruby-test-unit)
4227 ("ruby-rake-compiler" ,ruby-rake-compiler)))
4228 (synopsis "Extensible Markdown to (X)HTML converter")
4229 (description
4230 "Redcarpet is an extensible Ruby library for Markdown processing and
4231 conversion to (X)HTML.")
4232 (home-page "https://github.com/vmg/redcarpet")
4233 (license license:expat)))
4234
4235 (define-public ruby-rerun
4236 (package
4237 (name "ruby-rerun")
4238 (version "0.13.0")
4239 (source
4240 (origin
4241 (method url-fetch)
4242 (uri (rubygems-uri "rerun" version))
4243 (sha256
4244 (base32
4245 "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
4246 (build-system ruby-build-system)
4247 (arguments
4248 '(#:tests? #f)) ; No included tests
4249 (propagated-inputs
4250 `(("ruby-listen" ,ruby-listen)))
4251 (synopsis "Run a process, and restart when some monitored files change")
4252 (description
4253 "Rerun is a tool to launch programs, then monitor the file system, and
4254 restart the program when any of the monitored files change. It's written in
4255 Ruby, but can be used for all programs.")
4256 (home-page "https://github.com/alexch/rerun/")
4257 (license license:expat)))
4258
4259 (define-public ruby-maxitest
4260 (package
4261 (name "ruby-maxitest")
4262 (version "3.6.0")
4263 (home-page "https://github.com/grosser/maxitest")
4264 (source (origin
4265 ;; Pull from git because the gem does not contain tests.
4266 (method git-fetch)
4267 (uri (git-reference
4268 (url home-page)
4269 (commit (string-append "v" version))))
4270 (file-name (git-file-name name version))
4271 (sha256
4272 (base32
4273 "07b3j0bv3dx5j42jlvpvl07aaxplyi6wq688y3jl8y528ww2hjz8"))))
4274 (build-system ruby-build-system)
4275 (arguments
4276 '(#:test-target "default"
4277 #:phases (modify-phases %standard-phases
4278 (replace 'replace-git-ls-files
4279 (lambda _
4280 (substitute* "maxitest.gemspec"
4281 (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
4282 "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))
4283 #t))
4284 (add-before 'check 'remove-version-constraints
4285 (lambda _
4286 ;; Don't use specific versions of dependencies, instead
4287 ;; take whatever is available in Guix.
4288 (delete-file "Gemfile.lock")
4289 #t))
4290 (add-before 'check 'add-mtest-on-PATH
4291 (lambda _
4292 ;; Tests use 'mtest' which is not automatically added on
4293 ;; PATH.
4294 (setenv "PATH" (string-append (getcwd) "/bin:"
4295 (getenv "PATH")))
4296 #t)))))
4297 (native-inputs
4298 `(("ps" ,procps)
4299 ("ruby-bump" ,ruby-bump)
4300 ("ruby-byebug" ,ruby-byebug)
4301 ("ruby-rspec" ,ruby-rspec)
4302 ("ruby-wwtd" ,ruby-wwtd)))
4303 (propagated-inputs
4304 `(("ruby-minitest" ,ruby-minitest)))
4305 (synopsis "Minitest with extra features")
4306 (description
4307 "Maxitest is a wrapper around Minitest with extra functionality such
4308 as timeouts, an @command{mtest} executable that can run tests by line
4309 number, support for interrupted tests, better backtraces, and more.")
4310 (license license:expat)))
4311
4312 (define-public ruby-mocha
4313 (package
4314 (name "ruby-mocha")
4315 (version "1.11.2")
4316 (source (origin
4317 (method url-fetch)
4318 (uri (rubygems-uri "mocha" version))
4319 (sha256
4320 (base32
4321 "0hxmkm8qxd04vwj8mqnpyrf2dwy7g1k9zipdfhl4y71cw7ijm9n4"))))
4322 (build-system ruby-build-system)
4323 (arguments
4324 `(#:phases
4325 (modify-phases %standard-phases
4326 (add-before 'check 'remove-rubocop-dependency
4327 (lambda _
4328 ;; Disable dependency on Rubocop, which is just a linter,
4329 ;; and would introduce a circular dependency.
4330 (substitute* "mocha.gemspec"
4331 ((".*rubocop.*")
4332 "true\n"))
4333 #t)))))
4334 (native-inputs
4335 `(("ruby-introspection" ,ruby-introspection)))
4336 (synopsis "Mocking and stubbing library for Ruby")
4337 (description
4338 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
4339 allows mocking and stubbing of methods on real (non-mock) classes.")
4340 (home-page "http://gofreerange.com/mocha/docs")
4341 ;; Mocha can be used with either license at the users choice.
4342 (license (list license:expat license:ruby))))
4343
4344 (define-public ruby-mocha-on-bacon
4345 (package
4346 (name "ruby-mocha-on-bacon")
4347 (version "0.2.3")
4348 (source
4349 (origin
4350 (method url-fetch)
4351 (uri (rubygems-uri "mocha-on-bacon" version))
4352 (sha256
4353 (base32
4354 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
4355 (build-system ruby-build-system)
4356 (arguments
4357 ;; rubygems.org release missing tests
4358 '(#:tests? #f))
4359 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
4360 (synopsis "Mocha adapter for Bacon")
4361 (description
4362 "This package provides a Mocha adapter for Bacon, allowing you to use the
4363 Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
4364 (home-page
4365 "https://github.com/alloy/mocha-on-bacon")
4366 (license license:expat)))
4367
4368 (define-public ruby-net-ssh
4369 (package
4370 (name "ruby-net-ssh")
4371 (version "4.2.0")
4372 (source (origin
4373 (method url-fetch)
4374 (uri (rubygems-uri "net-ssh" version))
4375 (sha256
4376 (base32
4377 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
4378 (build-system ruby-build-system)
4379 (native-inputs
4380 `(("bundler" ,bundler)
4381 ("ruby-mocha" ,ruby-mocha)
4382 ("ruby-test-unit" ,ruby-test-unit)))
4383 (synopsis "Ruby implementation of the SSH2 client protocol")
4384 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
4385 client protocol. It allows you to write programs that invoke and interact
4386 with processes on remote servers, via SSH2.")
4387 (home-page "https://github.com/net-ssh/net-ssh")
4388 (license license:expat)))
4389
4390 (define-public ruby-net-scp
4391 (package
4392 (name "ruby-net-scp")
4393 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
4394 (version "1.2.2.rc2")
4395 (source
4396 (origin
4397 (method git-fetch)
4398 (uri (git-reference
4399 (url "https://github.com/net-ssh/net-scp")
4400 (commit (string-append "v" version))))
4401 (file-name (git-file-name name version))
4402 (sha256
4403 (base32 "1nyn17sy71fn7zs3y6wbgcn35318c10flqgc0582409095x4h0sx"))))
4404 (build-system ruby-build-system)
4405 (native-inputs
4406 `(("bundler" ,bundler)
4407 ("ruby-test-unit" ,ruby-test-unit)
4408 ("ruby-mocha" ,ruby-mocha)))
4409 (propagated-inputs
4410 `(("ruby-net-ssh" ,ruby-net-ssh)))
4411 (synopsis "Pure-Ruby SCP client library")
4412 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
4413 client protocol.")
4414 (home-page "https://github.com/net-ssh/net-scp")
4415 (license license:expat)))
4416
4417 (define-public ruby-minitest
4418 (package
4419 (name "ruby-minitest")
4420 (version "5.11.3")
4421 (source (origin
4422 (method url-fetch)
4423 (uri (rubygems-uri "minitest" version))
4424 (sha256
4425 (base32
4426 "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"))))
4427 (build-system ruby-build-system)
4428 (native-inputs
4429 `(("ruby-hoe" ,ruby-hoe)))
4430 (synopsis "Small test suite library for Ruby")
4431 (description "Minitest provides a complete suite of Ruby testing
4432 facilities supporting TDD, BDD, mocking, and benchmarking.")
4433 (home-page "https://github.com/seattlerb/minitest")
4434 (license license:expat)))
4435
4436 ;; This is the last release of Minitest 4, which is used by some packages.
4437 (define-public ruby-minitest-4
4438 (package (inherit ruby-minitest)
4439 (version "4.7.5")
4440 (source (origin
4441 (method url-fetch)
4442 (uri (rubygems-uri "minitest" version))
4443 (sha256
4444 (base32
4445 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
4446 (arguments
4447 `(#:phases
4448 (modify-phases %standard-phases
4449 (add-after 'unpack 'remove-unsupported-method
4450 (lambda _
4451 (substitute* "Rakefile"
4452 (("self\\.rubyforge_name = .*") ""))
4453 #t))
4454 (add-after 'build 'exclude-failing-tests
4455 (lambda _
4456 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
4457 ;; Fixnum.
4458 (delete-file "test/minitest/test_minitest_spec.rb")
4459 #t)))))))
4460
4461 (define-public ruby-minitest-around
4462 (package
4463 (name "ruby-minitest-around")
4464 (version "0.5.0")
4465 (source
4466 (origin
4467 (method url-fetch)
4468 (uri (rubygems-uri "minitest-around" version))
4469 (sha256
4470 (base32
4471 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
4472 (build-system ruby-build-system)
4473 (arguments
4474 '(#:phases
4475 (modify-phases %standard-phases
4476 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
4477 (lambda _
4478 (substitute* "minitest-around.gemspec"
4479 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n"))
4480 #t)))))
4481 (propagated-inputs
4482 `(("ruby-minitest" ,ruby-minitest)))
4483 (native-inputs
4484 `(("bundler" ,bundler)
4485 ("ruby-cucumber" ,ruby-cucumber)
4486 ("ruby-bump" ,ruby-bump)
4487 ("ruby-test-construct" ,ruby-test-construct)))
4488 (synopsis "Run code around tests in Minitest")
4489 (description
4490 "This library provides a way to run code around tests in Minitest,
4491 written using either the unit test or spec style.")
4492 (home-page "https://github.com/splattael/minitest-around")
4493 (license license:expat)))
4494
4495 (define-public ruby-minitest-sprint
4496 (package
4497 (name "ruby-minitest-sprint")
4498 (version "1.1.0")
4499 (source (origin
4500 (method url-fetch)
4501 (uri (rubygems-uri "minitest-sprint" version))
4502 (sha256
4503 (base32
4504 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
4505 (build-system ruby-build-system)
4506 (native-inputs
4507 `(("ruby-hoe" ,ruby-hoe)
4508 ("ruby-minitest" ,ruby-minitest)))
4509 (synopsis "Fast test suite runner for minitest")
4510 (description "Minitest-sprint is a test runner for minitest that makes it
4511 easier to re-run individual failing tests.")
4512 (home-page "https://github.com/seattlerb/minitest-sprint")
4513 (license license:expat)))
4514
4515 (define-public ruby-minitest-bacon
4516 (package
4517 (name "ruby-minitest-bacon")
4518 (version "1.0.3")
4519 (source (origin
4520 (method url-fetch)
4521 (uri (rubygems-uri "minitest-bacon" version))
4522 (sha256
4523 (base32
4524 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
4525 (build-system ruby-build-system)
4526 (native-inputs
4527 `(("ruby-hoe" ,ruby-hoe)))
4528 (inputs
4529 `(("ruby-minitest" ,ruby-minitest)))
4530 (synopsis "Bacon compatibility library for minitest")
4531 (description "Minitest-bacon extends minitest with bacon-like
4532 functionality, making it easier to migrate test suites from bacon to minitest.")
4533 (home-page "https://github.com/seattlerb/minitest-bacon")
4534 (license license:expat)))
4535
4536 (define-public ruby-minitest-focus
4537 (package
4538 (name "ruby-minitest-focus")
4539 (version "1.1.2")
4540 (source
4541 (origin
4542 (method url-fetch)
4543 (uri (rubygems-uri "minitest-focus" version))
4544 (sha256
4545 (base32
4546 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
4547 (build-system ruby-build-system)
4548 (propagated-inputs
4549 `(("ruby-minitest" ,ruby-minitest)))
4550 (native-inputs
4551 `(("ruby-hoe" ,ruby-hoe)))
4552 (synopsis "Allows a few specific tests to be focused on")
4553 (description
4554 "@code{minitest-focus} gives the ability focus on a few tests with ease
4555 without having to use command-line arguments. It introduces a @code{focus}
4556 class method for use in testing classes, specifying that the next defined test
4557 is to be run.")
4558 (home-page "https://github.com/seattlerb/minitest-focus")
4559 (license license:expat)))
4560
4561 (define-public ruby-minitest-pretty-diff
4562 ;; Use git reference because gem is out of date and does not contain testing
4563 ;; script. There are no releases on GitHub.
4564 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
4565 (package
4566 (name "ruby-minitest-pretty-diff")
4567 (version (string-append "0.1-1." (string-take commit 8)))
4568 (source (origin
4569 (method git-fetch)
4570 (uri (git-reference
4571 (url "https://github.com/adammck/minitest-pretty_diff")
4572 (commit commit)))
4573 (file-name (string-append name "-" version "-checkout"))
4574 (sha256
4575 (base32
4576 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
4577 (build-system ruby-build-system)
4578 (arguments
4579 `(#:phases
4580 (modify-phases %standard-phases
4581 (replace 'check
4582 (lambda _
4583 (invoke "script/test"))))))
4584 (native-inputs
4585 `(("bundler" ,bundler)
4586 ("ruby-turn" ,ruby-turn)))
4587 (synopsis "Pretty-print hashes and arrays in MiniTest")
4588 (description
4589 "@code{minitest-pretty_diff} monkey-patches
4590 @code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
4591 diffing them. This makes it easier to spot differences between nested
4592 structures when tests fail.")
4593 (home-page "https://github.com/adammck/minitest-pretty_diff")
4594 (license license:expat))))
4595
4596 (define-public ruby-minitest-moar
4597 (package
4598 (name "ruby-minitest-moar")
4599 (version "0.0.4")
4600 (source
4601 (origin
4602 (method url-fetch)
4603 (uri (rubygems-uri "minitest-moar" version))
4604 (sha256
4605 (base32
4606 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
4607 (build-system ruby-build-system)
4608 (arguments
4609 `(#:phases
4610 (modify-phases %standard-phases
4611 (add-before 'check 'clean-dependencies
4612 (lambda _
4613 ;; Remove all gems defined in the Gemfile because these are not
4614 ;; truly needed.
4615 (substitute* "Gemfile"
4616 (("gem .*") ""))
4617 ;; Remove byebug as not needed to run tests.
4618 (substitute* "test/test_helper.rb"
4619 (("require 'byebug'") ""))
4620 #t)))))
4621 (native-inputs
4622 `(("bundler" ,bundler)
4623 ("ruby-minitest" ,ruby-minitest)))
4624 (synopsis "Extra features and changes to MiniTest")
4625 (description "@code{MiniTest Moar} add some additional features and
4626 changes some default behaviours in MiniTest. For instance, Moar replaces the
4627 MiniTest @code{Object#stub} with a global @code{stub} method.")
4628 (home-page "https://github.com/dockyard/minitest-moar")
4629 (license license:expat)))
4630
4631 (define-public ruby-minitest-bonus-assertions
4632 (package
4633 (name "ruby-minitest-bonus-assertions")
4634 (version "3.0")
4635 (source
4636 (origin
4637 (method url-fetch)
4638 (uri (rubygems-uri "minitest-bonus-assertions" version))
4639 (sha256
4640 (base32
4641 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
4642 (build-system ruby-build-system)
4643 (arguments
4644 `(#:phases
4645 (modify-phases %standard-phases
4646 (add-before 'check 'clean-dependencies
4647 (lambda _
4648 ;; Remove unneeded require statement that would entail another
4649 ;; dependency.
4650 (substitute* "test/minitest_config.rb"
4651 (("require 'minitest/bisect'") ""))
4652 #t)))))
4653 (native-inputs
4654 `(("ruby-hoe" ,ruby-hoe)
4655 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
4656 ("ruby-minitest-focus" ,ruby-minitest-focus)
4657 ("ruby-minitest-moar" ,ruby-minitest-moar)))
4658 (synopsis "Bonus assertions for @code{Minitest}")
4659 (description
4660 "Minitest bonus assertions provides extra MiniTest assertions. For
4661 instance, it provides @code{assert_true}, @code{assert_false} and
4662 @code{assert_set_equal}.")
4663 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
4664 (license license:expat)))
4665
4666 (define-public ruby-minitest-reporters
4667 (package
4668 (name "ruby-minitest-reporters")
4669 (version "1.3.6")
4670 (source
4671 (origin
4672 (method url-fetch)
4673 (uri (rubygems-uri "minitest-reporters" version))
4674 (sha256
4675 (base32
4676 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
4677 (build-system ruby-build-system)
4678 (arguments
4679 '(#:phases
4680 (modify-phases %standard-phases
4681 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
4682 ;; including it as an input can lead to circular dependencies.
4683 (add-after 'unpack 'remove-rubocop-from-Rakefile
4684 (lambda _
4685 (substitute* "Rakefile"
4686 (("require 'rubocop/rake\\_task'") "")
4687 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
4688 #t))
4689 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
4690 (lambda _
4691 (substitute* "minitest-reporters.gemspec"
4692 ((".*%q<rubocop>.*") "\n"))
4693 #t)))))
4694 (propagated-inputs
4695 `(("ruby-ansi" ,ruby-ansi)
4696 ("ruby-builder" ,ruby-builder)
4697 ("ruby-minitest" ,ruby-minitest)
4698 ("ruby-progressbar" ,ruby-progressbar)))
4699 (native-inputs
4700 `(("bundler" ,bundler)
4701 ("ruby-maruku" ,ruby-maruku)))
4702 (synopsis "Enhanced reporting for Minitest tests")
4703 (description
4704 "@code{minitest/reporters} provides a custom Minitest runner to improve
4705 how the test state is reported. A number of different reporters are
4706 available, including a spec reporter, progress bar reporter, a HTML
4707 reporter.")
4708 (home-page "https://github.com/kern/minitest-reporters")
4709 (license license:expat)))
4710
4711 (define-public ruby-minitest-rg
4712 (package
4713 (name "ruby-minitest-rg")
4714 (version "5.2.0")
4715 (source
4716 (origin
4717 (method url-fetch)
4718 (uri (rubygems-uri "minitest-rg" version))
4719 (sha256
4720 (base32
4721 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
4722 (build-system ruby-build-system)
4723 (arguments
4724 ;; Some tests fail even outside Guix, so disable tests.
4725 ;; https://github.com/blowmage/minitest-rg/issues/12
4726 ;; https://github.com/blowmage/minitest-rg/pull/13
4727 `(#:tests? #f))
4728 (propagated-inputs
4729 `(("ruby-minitest" ,ruby-minitest)))
4730 (synopsis "Coloured output for Minitest")
4731 (description
4732 "@code{minitest-rg} changes the colour of the output from Minitest.")
4733 (home-page "https://blowmage.com/minitest-rg/")
4734 (license license:expat)))
4735
4736 (define-public ruby-minitest-global-expectations
4737 (package
4738 (name "ruby-minitest-global-expectations")
4739 (version "1.0.1")
4740 (source
4741 (origin
4742 (method url-fetch)
4743 (uri (rubygems-uri "minitest-global_expectations"
4744 version))
4745 (sha256
4746 (base32
4747 "1pp3k2608spj4kvqy2y16hs18an917g6vwgvphrfhjviac83090x"))))
4748 (build-system ruby-build-system)
4749 (propagated-inputs
4750 `(("ruby-minitest" ,ruby-minitest)))
4751 (synopsis "Adjust minitest behaviour for calling expectation methods")
4752 (description
4753 "Minitest-global_expectations allows continued use of expectation methods
4754 on all objects. Calling expectation methods on all objects was deprecated in
4755 minitest 5.12, and is planned to be removed from minitest 6.")
4756 (home-page "https://github.com/jeremyevans/minitest-global_expectations")
4757 (license license:expat)))
4758
4759 (define-public ruby-minitest-hooks
4760 (package
4761 (name "ruby-minitest-hooks")
4762 (version "1.4.2")
4763 (source
4764 (origin
4765 (method url-fetch)
4766 (uri (rubygems-uri "minitest-hooks" version))
4767 (sha256
4768 (base32
4769 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
4770 (build-system ruby-build-system)
4771 (arguments
4772 '(#:test-target "spec"))
4773 (native-inputs
4774 `(("ruby-sequel" ,ruby-sequel)
4775 ("ruby-sqlite3" ,ruby-sqlite3)))
4776 (synopsis "Hooks for the minitest framework")
4777 (description
4778 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
4779 @code{around_all} hooks for Minitest. This allows, for instance, running each
4780 suite of specs inside a database transaction, running each spec inside its own
4781 savepoint inside that transaction. This can significantly speed up testing
4782 for specs that share expensive database setup code.")
4783 (home-page "https://github.com/jeremyevans/minitest-hooks")
4784 (license license:expat)))
4785
4786 (define-public ruby-daemons
4787 (package
4788 (name "ruby-daemons")
4789 (version "1.2.5")
4790 (source (origin
4791 (method url-fetch)
4792 (uri (rubygems-uri "daemons" version))
4793 (sha256
4794 (base32
4795 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
4796 (build-system ruby-build-system)
4797 (arguments
4798 `(#:tests? #f)) ; no test suite
4799 (synopsis "Daemonize Ruby programs")
4800 (description "Daemons provides a way to wrap existing Ruby scripts to be
4801 run as a daemon and to be controlled by simple start/stop/restart commands.")
4802 (home-page "https://github.com/thuehlinger/daemons")
4803 (license license:expat)))
4804
4805 (define-public ruby-data_uri
4806 (package
4807 (name "ruby-data_uri")
4808 (version "0.1.0")
4809 (source
4810 (origin
4811 (method url-fetch)
4812 (uri (rubygems-uri "data_uri" version))
4813 (sha256
4814 (base32
4815 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
4816 (build-system ruby-build-system)
4817 (synopsis "URI class for parsing data URIs")
4818 (description
4819 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
4820 embedded inside a URI. The URI::Data class provides support for parsing these
4821 URIs using the normal URI.parse method.")
4822 (home-page "https://github.com/dball/data_uri")
4823 (license license:expat)))
4824
4825 (define-public ruby-deep-merge
4826 (package
4827 (name "ruby-deep-merge")
4828 (version "1.2.1")
4829 (home-page "https://github.com/danielsdeleo/deep_merge")
4830 ;; The Rubygem source does not contain the gemspec required for tests.
4831 (source (origin
4832 (method git-fetch)
4833 (uri (git-reference (url home-page) (commit version)))
4834 (file-name (git-file-name name version))
4835 (sha256
4836 (base32
4837 "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931"))))
4838 (build-system ruby-build-system)
4839 (native-inputs
4840 `(("ruby-minitest" ,ruby-minitest)))
4841 (synopsis "Recursively merge hashes")
4842 (description
4843 "Deep Merge is a set of utility functions for @code{Hash}. It permits
4844 you to merge elements inside a hash together recursively.")
4845 (license license:expat)))
4846
4847 (define-public ruby-git
4848 (package
4849 (name "ruby-git")
4850 (version "1.3.0")
4851 (source (origin
4852 (method url-fetch)
4853 (uri (rubygems-uri "git" version))
4854 (sha256
4855 (base32
4856 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
4857 (build-system ruby-build-system)
4858 (arguments
4859 `(#:tests? #f ; no tests
4860 #:phases (modify-phases %standard-phases
4861 (add-after 'install 'patch-git-binary
4862 (lambda* (#:key inputs outputs #:allow-other-keys)
4863 ;; Make the default git binary an absolute path to the
4864 ;; store.
4865 (let ((git (string-append (assoc-ref inputs "git")
4866 "/bin/git"))
4867 (config (string-append
4868 (assoc-ref outputs "out")
4869 "/lib/ruby/vendor_ruby/gems/git-"
4870 ,version "/lib/git/config.rb")))
4871 (substitute* (list config)
4872 (("'git'")
4873 (string-append "'" git "'")))
4874 #t))))))
4875 (inputs
4876 `(("git" ,git)))
4877 (synopsis "Ruby wrappers for Git")
4878 (description "Ruby/Git is a Ruby library that can be used to create, read
4879 and manipulate Git repositories by wrapping system calls to the git binary.")
4880 (home-page "https://github.com/schacon/ruby-git")
4881 (license license:expat)))
4882
4883 (define-public ruby-hocon
4884 (package
4885 (name "ruby-hocon")
4886 (version "1.3.1")
4887 (home-page "https://github.com/puppetlabs/ruby-hocon")
4888 (source (origin
4889 (method git-fetch)
4890 (uri (git-reference (url home-page) (commit version)))
4891 (file-name (git-file-name name version))
4892 (sha256
4893 (base32
4894 "172hh2zr0n9nnszv0qvlgwszgkrq84yahrg053m68asy79zpmbqr"))))
4895 (build-system ruby-build-system)
4896 (arguments
4897 '(#:phases (modify-phases %standard-phases
4898 (replace 'check
4899 (lambda* (#:key tests? #:allow-other-keys)
4900 (if tests?
4901 (invoke "rspec")
4902 (format #t "test suite not run~%"))
4903 #t)))))
4904 (native-inputs
4905 `(("bundler" ,bundler)
4906 ("ruby-rspec" ,ruby-rspec)))
4907 (synopsis "HOCON config library")
4908 (description
4909 "This package provides Ruby support for the @acronym{HOCON,
4910 Human-Optimized Config Object Notation} configuration file format. It
4911 supports parsing and modifying HOCON and JSON files, and rendering parsed
4912 objects back to a @code{String}.")
4913 (license license:asl2.0)))
4914
4915 (define-public ruby-slop
4916 (package
4917 (name "ruby-slop")
4918 (version "4.5.0")
4919 (source (origin
4920 (method url-fetch)
4921 (uri (rubygems-uri "slop" version))
4922 (sha256
4923 (base32
4924 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
4925 (build-system ruby-build-system)
4926 (native-inputs
4927 `(("ruby-minitest" ,ruby-minitest)))
4928 (synopsis "Ruby command line option parser")
4929 (description "Slop provides a Ruby domain specific language for gathering
4930 options and parsing command line flags.")
4931 (home-page "https://github.com/leejarvis/slop")
4932 (license license:expat)))
4933
4934 (define-public ruby-slop-3
4935 (package (inherit ruby-slop)
4936 (version "3.6.0")
4937 (source (origin
4938 (method url-fetch)
4939 (uri (rubygems-uri "slop" version))
4940 (sha256
4941 (base32
4942 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
4943
4944 (define-public ruby-multi-xml
4945 (package
4946 (name "ruby-multi-xml")
4947 (version "0.6.0")
4948 (source
4949 (origin
4950 (method url-fetch)
4951 (uri (rubygems-uri "multi_xml" version))
4952 (sha256
4953 (base32
4954 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
4955 (build-system ruby-build-system)
4956 (arguments
4957 '(#:tests? #f)) ; No included tests
4958 (synopsis "Swappable XML backends for Ruby")
4959 (description
4960 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
4961 Nokogiri, Ox, or REXML.")
4962 (home-page "https://github.com/sferik/multi_xml")
4963 (license license:expat)))
4964
4965 (define-public ruby-multipart-post
4966 (package
4967 (name "ruby-multipart-post")
4968 (version "2.0.0")
4969 (source (origin
4970 (method url-fetch)
4971 (uri (rubygems-uri "multipart-post" version))
4972 (sha256
4973 (base32
4974 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
4975 (build-system ruby-build-system)
4976 (native-inputs
4977 `(("bundler" ,bundler)))
4978 (synopsis "Multipart POST library for Ruby")
4979 (description "Multipart-Post Adds multipart POST capability to Ruby's
4980 net/http library.")
4981 (home-page "https://github.com/nicksieger/multipart-post")
4982 (license license:expat)))
4983
4984 (define-public ruby-multi-json
4985 (package
4986 (name "ruby-multi-json")
4987 (version "1.13.1")
4988 (source
4989 (origin
4990 (method git-fetch)
4991 ;; Tests are not distributed at rubygems.org so download from GitHub
4992 ;; instead.
4993 (uri (git-reference
4994 (url "https://github.com/intridea/multi_json")
4995 (commit (string-append "v" version))))
4996 (file-name (git-file-name name version))
4997 (sha256
4998 (base32
4999 "18wpb6p01rrkl4v33byh70vxj2a5jxkfxzv3pz8z6pssy4ymwkm4"))))
5000 (build-system ruby-build-system)
5001 (arguments
5002 `(#:phases
5003 (modify-phases %standard-phases
5004 (add-after 'unpack 'remove-signing-key-reference
5005 (lambda _
5006 (substitute* "multi_json.gemspec"
5007 ((".*spec.signing_key.*") ""))
5008 #t)))))
5009 (native-inputs
5010 `(("bundler" ,bundler)
5011 ("ruby-rspec" ,ruby-rspec)
5012 ("ruby-yard" ,ruby-yard)
5013 ("ruby-json-pure" ,ruby-json-pure)
5014 ("ruby-oj" ,ruby-oj)
5015 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
5016 (synopsis "Common interface to multiple JSON libraries for Ruby")
5017 (description
5018 "This package provides a common interface to multiple JSON libraries,
5019 including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
5020 NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
5021 (home-page "https://github.com/intridea/multi_json")
5022 (license license:expat)))
5023
5024 (define-public ruby-multi-test
5025 (package
5026 (name "ruby-multi-test")
5027 (version "0.1.2")
5028 (source
5029 (origin
5030 (method url-fetch)
5031 (uri (rubygems-uri "multi_test" version))
5032 (sha256
5033 (base32
5034 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
5035 (build-system ruby-build-system)
5036 (arguments
5037 '(;; Tests require different sets of specific gem versions to be available,
5038 ;; and there is no gemfile that specifies the newest versions of
5039 ;; dependencies to be tested.
5040 #:tests? #f))
5041 (synopsis
5042 "Interface to testing libraries loaded into a running Ruby process")
5043 (description
5044 "@code{multi_test} provides a uniform interface onto whatever testing
5045 libraries that have been loaded into a running Ruby process to help control
5046 rogue test/unit/autorun requires.")
5047 (home-page "https://github.com/cucumber/multi_test")
5048 (license license:expat)))
5049
5050 (define-public ruby-arel
5051 (package
5052 (name "ruby-arel")
5053 (version "9.0.0")
5054 (source (origin
5055 (method url-fetch)
5056 (uri (rubygems-uri "arel" version))
5057 (sha256
5058 (base32
5059 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
5060 (build-system ruby-build-system)
5061 (arguments '(#:tests? #f)) ; no tests
5062 (home-page "https://github.com/rails/arel")
5063 (synopsis "SQL AST manager for Ruby")
5064 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
5065 Ruby. It simplifies the generation of complex SQL queries and adapts to
5066 various relational database implementations.")
5067 (license license:expat)))
5068
5069 (define-public ruby-marcel
5070 (package
5071 (name "ruby-marcel")
5072 (version "0.3.3")
5073 (source
5074 (origin
5075 (method url-fetch)
5076 (uri (rubygems-uri "marcel" version))
5077 (sha256
5078 (base32
5079 "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
5080 (build-system ruby-build-system)
5081 (arguments
5082 '(;; No included tests
5083 #:tests? #f))
5084 (propagated-inputs
5085 `(("ruby-mimemagic" ,ruby-mimemagic)))
5086 (synopsis "MIME type detection using magic numbers, filenames and extensions")
5087 (description
5088 "@code{marcel} provides @acronym{MIME, Multipurpose Internet Mail
5089 Extensions} type detection using magic numbers, filenames, and extensions")
5090 (home-page "https://github.com/basecamp/marcel")
5091 (license license:expat)))
5092
5093 (define-public ruby-minitar
5094 ;; We package from the GitHub source to fix the security issue reported at
5095 ;; https://github.com/halostatue/minitar/issues/16.
5096 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
5097 (package
5098 (name "ruby-minitar")
5099 (version (string-append "0.5.4-1." (string-take commit 8)))
5100 (source
5101 (origin
5102 (method git-fetch)
5103 (uri (git-reference
5104 (url "https://github.com/halostatue/minitar")
5105 (commit commit)))
5106 (file-name (string-append name "-" version "-checkout"))
5107 (sha256
5108 (base32
5109 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
5110 (build-system ruby-build-system)
5111 (arguments
5112 '(#:tests? #f)) ; missing a gemspec
5113 (synopsis "Ruby library and utility for handling tar archives")
5114 (description
5115 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
5116 that provides the ability to deal with POSIX tar archive files.")
5117 (home-page "http://www.github.com/atoulme/minitar")
5118 (license (list license:gpl2+ license:ruby)))))
5119
5120 (define-public ruby-mini-portile
5121 (package
5122 (name "ruby-mini-portile")
5123 (version "0.6.2")
5124 (source
5125 (origin
5126 (method url-fetch)
5127 (uri (rubygems-uri "mini_portile" version))
5128 (sha256
5129 (base32
5130 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
5131 (build-system ruby-build-system)
5132 (arguments
5133 '(#:tests? #f)) ; tests require network access
5134 (synopsis "Ports system for Ruby developers")
5135 (description "Mini-portile is a port/recipe system for Ruby developers.
5136 It provides a standard way to compile against specific versions of libraries
5137 to reproduce user environments.")
5138 (home-page "https://github.com/flavorjones/mini_portile")
5139 (license license:expat)))
5140
5141 (define-public ruby-mini-portile-2
5142 (package (inherit ruby-mini-portile)
5143 (version "2.4.0")
5144 (source (origin
5145 (method url-fetch)
5146 (uri (rubygems-uri "mini_portile2" version))
5147 (sha256
5148 (base32
5149 "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"))))))
5150
5151 (define-public ruby-nokogiri
5152 (package
5153 (name "ruby-nokogiri")
5154 (version "1.10.9")
5155 (source (origin
5156 (method url-fetch)
5157 (uri (rubygems-uri "nokogiri" version))
5158 (sha256
5159 (base32
5160 "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm"))))
5161 (build-system ruby-build-system)
5162 (arguments
5163 ;; Tests fail because Nokogiri can only test with an installed extension,
5164 ;; and also because many test framework dependencies are missing.
5165 `(#:tests? #f
5166 #:gem-flags (list "--" "--use-system-libraries"
5167 (string-append "--with-xml2-include="
5168 (assoc-ref %build-inputs "libxml2")
5169 "/include/libxml2" ))
5170 #:phases
5171 (modify-phases %standard-phases
5172 (add-before 'build 'patch-extconf
5173 ;; 'pkg-config' is not included in the GEM_PATH during
5174 ;; installation, so we add it directly to the load path.
5175 (lambda* (#:key inputs #:allow-other-keys)
5176 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
5177 (substitute* "ext/nokogiri/extconf.rb"
5178 (("gem 'pkg-config'.*")
5179 (string-append "$:.unshift '"
5180 pkg-config "/lib/ruby/vendor_ruby"
5181 "/gems/pkg-config-"
5182 ,(package-version ruby-pkg-config)
5183 "/lib'\n"))))
5184 #t)))))
5185 (native-inputs
5186 `(("ruby-hoe" ,ruby-hoe)))
5187 (inputs
5188 `(("zlib" ,zlib)
5189 ("libxml2" ,libxml2)
5190 ("libxslt" ,libxslt)))
5191 (propagated-inputs
5192 `(("ruby-mini-portile" ,ruby-mini-portile-2)
5193 ("ruby-pkg-config" ,ruby-pkg-config)))
5194 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
5195 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
5196 both CSS3 selector and XPath 1.0 support.")
5197 (home-page "http://www.nokogiri.org/")
5198 (license license:expat)))
5199
5200 (define-public ruby-method-source
5201 (package
5202 (name "ruby-method-source")
5203 (version "1.0.0")
5204 (source
5205 (origin
5206 (method url-fetch)
5207 (uri (rubygems-uri "method_source" version))
5208 (sha256
5209 (base32
5210 "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"))))
5211 (build-system ruby-build-system)
5212 (arguments
5213 `(#:test-target "spec"
5214 #:phases
5215 (modify-phases %standard-phases
5216 (add-after 'unpack 'remove-git-ls-files
5217 (lambda* (#:key outputs #:allow-other-keys)
5218 (substitute* "Rakefile"
5219 (("git ls-files") "find . -type f"))
5220 #t)))))
5221 (native-inputs
5222 `(("ruby-rspec" ,ruby-rspec)))
5223 (synopsis "Retrieve the source code for Ruby methods")
5224 (description "Method_source retrieves the source code for Ruby methods.
5225 Additionally, it can extract source code from Proc and Lambda objects or just
5226 extract comments.")
5227 (home-page "https://github.com/banister/method_source")
5228 (license license:expat)))
5229
5230 (define-public ruby-coderay
5231 (package
5232 (name "ruby-coderay")
5233 (version "1.1.2")
5234 (source
5235 (origin
5236 (method url-fetch)
5237 (uri (rubygems-uri "coderay" version))
5238 (sha256
5239 (base32
5240 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
5241 (build-system ruby-build-system)
5242 (arguments
5243 '(#:tests? #f)) ; missing test files
5244 (synopsis "Ruby syntax highlighting library")
5245 (description "Coderay is a Ruby library that provides syntax highlighting
5246 for select languages.")
5247 (home-page "http://coderay.rubychan.de")
5248 (license license:expat)))
5249
5250 (define-public ruby-cuke-modeler
5251 (package
5252 (name "ruby-cuke-modeler")
5253 (version "3.1.0")
5254 (source
5255 (origin
5256 (method url-fetch)
5257 (uri (rubygems-uri "cuke_modeler" version))
5258 (sha256
5259 (base32
5260 "19smj3g3wvz0203l549sadpcxgh0ir350a6k78gq0bmlv9cchmjb"))))
5261 (build-system ruby-build-system)
5262 (arguments `(#:tests? #f)) ;no test suite in gem
5263 (propagated-inputs
5264 `(("ruby-gherkin" ,ruby-gherkin)))
5265 (synopsis "Gherkin test suite analysis tool")
5266 (description "CukeModeler facilitates modeling a test suite that is
5267 written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by
5268 providing an abstraction layer on top of the Abstract Syntax Tree (AST) that
5269 the @code{cucumber-gherkin} generates when parsing features, as well as
5270 providing models for feature files and directories in order to be able to have
5271 a fully traversable model tree of a test suite's structure. These models can
5272 then be analyzed or manipulated more easily than the underlying AST layer.")
5273 (home-page "https://github.com/enkessler/cuke_modeler")
5274 (license license:expat)))
5275
5276 (define-public ruby-parallel-tests
5277 (package
5278 (name "ruby-parallel-tests")
5279 (version "3.0.0")
5280 (home-page "https://github.com/grosser/parallel_tests")
5281 (source (origin
5282 (method git-fetch)
5283 (uri (git-reference
5284 (url home-page)
5285 (commit (string-append "v" version))))
5286 (file-name (string-append name version))
5287 (sha256
5288 (base32
5289 "08a6ndqn2dqacmc7yg48k0dh2rfrynvhkd5hiay16dl9m1r9q8pz"))))
5290 (build-system ruby-build-system)
5291 (arguments
5292 '(#:test-target "default"
5293 #:phases (modify-phases %standard-phases
5294 (add-after 'patch-source-shebangs 'patch-shell-invokations
5295 (lambda _
5296 (substitute* '("lib/parallel_tests/tasks.rb"
5297 "spec/parallel_tests/tasks_spec.rb")
5298 (("/bin/sh") (which "sh"))
5299 (("/bin/bash") (which "bash")))
5300 #t))
5301 (add-before 'check 'remove-version-constraints
5302 (lambda _
5303 ;; Remove hard coded version constraints, instead just
5304 ;; use whatever versions are available in Guix.
5305 (delete-file "Gemfile.lock")
5306 (substitute* "Gemfile"
5307 (("'minitest',.*")
5308 "'minitest'\n")
5309 (("'cucumber',.*")
5310 "'cucumber'\n"))
5311 #t))
5312 (add-before 'check 'disable-rails-test
5313 (lambda _
5314 ;; XXX: This test attempts to download and run the test
5315 ;; suites of multiple Rails versions(!) directly.
5316 (delete-file "spec/rails_spec.rb")
5317 #t))
5318 (add-before 'check 'set-HOME
5319 (lambda _
5320 ;; Some tests check the output of Bundler, and fail when
5321 ;; Bundler warns that /homeless-shelter does not exist.
5322 (setenv "HOME" "/tmp")
5323 #t)))))
5324 (native-inputs
5325 `(("ruby-bump" ,ruby-bump)
5326 ("ruby-cucumber" ,ruby-cucumber)
5327 ("ruby-cuke-modeler" ,ruby-cuke-modeler)
5328 ("ruby-minitest" ,ruby-minitest)
5329 ("ruby-rake" ,ruby-rake)
5330 ("ruby-rspec" ,ruby-rspec)
5331 ("ruby-spinach" ,ruby-spinach)))
5332 (propagated-inputs
5333 `(("ruby-parallel" ,ruby-parallel)))
5334 (synopsis "Run tests in parallel")
5335 (description
5336 "This package can speed up @code{Test::Unit}, @code{RSpec},
5337 @code{Cucumber}, and @code{Spinach} tests by running them concurrently
5338 across multiple CPU cores.")
5339 (license license:expat)))
5340
5341 (define-public ruby-parser
5342 (package
5343 (name "ruby-parser")
5344 (version "3.0.0.0")
5345 (source
5346 (origin
5347 (method url-fetch)
5348 (uri (rubygems-uri "parser" version))
5349 (sha256
5350 (base32
5351 "1jixakyzmy0j5c1rb0fjrrdhgnyryvrr6vgcybs14jfw09akv5ml"))))
5352 (build-system ruby-build-system)
5353 (arguments
5354 '(#:tests? #f)) ; tests not included in gem
5355 (native-inputs
5356 `(("bundler" ,bundler)
5357 ("ruby-cliver" ,ruby-cliver)
5358 ("ruby-simplecov" ,ruby-simplecov)
5359 ("ruby-racc" ,ruby-racc)))
5360 (inputs
5361 `(("ragel" ,ragel)))
5362 (propagated-inputs
5363 `(("ruby-ast" ,ruby-ast)))
5364 (synopsis "Ruby parser written in pure Ruby")
5365 (description
5366 "This package provides a Ruby parser written in pure Ruby.")
5367 (home-page "https://github.com/whitequark/parser")
5368 (license license:expat)))
5369
5370 (define-public ruby-sexp-processor
5371 (package
5372 (name "ruby-sexp-processor")
5373 (version "4.15.0")
5374 (source
5375 (origin
5376 (method url-fetch)
5377 (uri (rubygems-uri "sexp_processor" version))
5378 (sha256
5379 (base32
5380 "0d1vks77xnd0m3s94a58f9bkdwlaml5qdkmprx279m2s0pc2gv55"))))
5381 (build-system ruby-build-system)
5382 (native-inputs
5383 ;; TODO: Add ruby-minitest-proveit once available.
5384 `(("hoe" ,ruby-hoe)))
5385 (synopsis "ParseTree fork which includes generic S-exp processing tools")
5386 (description "The sexp_processor package is derived from ParseTree, but
5387 contrary to ParseTree, it includes all the generic S-exp processing tools.
5388 Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and
5389 @code{Environment}")
5390 (home-page "https://github.com/seattlerb/sexp_processor")
5391 (license license:expat)))
5392
5393 (define-public ruby-ruby-parser
5394 (package
5395 (name "ruby-ruby-parser")
5396 (version "3.14.2")
5397 (source
5398 (origin
5399 (method url-fetch)
5400 (uri (rubygems-uri "ruby_parser" version))
5401 (sha256
5402 (base32
5403 "09qcdyjjw3p7g6cjm5m9swkms1xnv35ndiy7yw24cas16qrhha6c"))))
5404 (build-system ruby-build-system)
5405 (native-inputs
5406 `(("hoe" ,ruby-hoe)
5407 ("racc" ,ruby-racc)
5408 ("unifdef" ,unifdef)))
5409 (propagated-inputs
5410 `(("ruby-sexp-processor" ,ruby-sexp-processor)))
5411 (home-page "https://github.com/seattlerb/ruby_parser/")
5412 (synopsis "Ruby parser written in pure Ruby")
5413 (description "The ruby_parser (RP) package provides a Ruby parser written
5414 in pure Ruby. It outputs S-expressions which can be manipulated and converted
5415 back to Ruby via the @code{ruby2ruby} library.")
5416 (license license:expat)))
5417
5418 (define-public ruby-prawn-manual-builder
5419 (package
5420 (name "ruby-prawn-manual-builder")
5421 (version "0.3.1")
5422 (source
5423 (origin
5424 (method url-fetch)
5425 (uri (rubygems-uri "prawn-manual_builder" version))
5426 (sha256
5427 (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs"))))
5428 (build-system ruby-build-system)
5429 (arguments
5430 '(#:tests? #f ; no included tests
5431 #:phases
5432 (modify-phases %standard-phases
5433 (add-after 'extract-gemspec 'patch-gemspec
5434 (lambda _
5435 (substitute* ".gemspec"
5436 ;; Loosen the requirement for pdf-inspector
5437 (("~> 1\\.0\\.7") ">= 0")))))))
5438 (propagated-inputs
5439 `(("ruby-coderay" ,ruby-coderay)))
5440 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
5441 (description
5442 "This package provides a tool for writing manuals for Prawn and Prawn
5443 accessories")
5444 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
5445 (license %prawn-project-licenses)))
5446
5447 (define-public ruby-progress_bar
5448 (package
5449 (name "ruby-progress_bar")
5450 (version "1.1.0")
5451 (source
5452 (origin
5453 (method url-fetch)
5454 (uri (rubygems-uri "progress_bar" version))
5455 (sha256
5456 (base32
5457 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
5458 (build-system ruby-build-system)
5459 (arguments
5460 '(#:test-target "spec"))
5461 (propagated-inputs
5462 `(("ruby-highline" ,ruby-highline)
5463 ("ruby-options" ,ruby-options)))
5464 (native-inputs
5465 `(("bundler" ,bundler)
5466 ("ruby-rspec" ,ruby-rspec)
5467 ("ruby-timecop" ,ruby-timecop)))
5468 (synopsis
5469 "Ruby library for displaying progress bars")
5470 (description
5471 "ProgressBar is a simple library for displaying progress bars. The
5472 maximum value is configurable, and additional information can be displayed
5473 like the percentage completion, estimated time remaining, elapsed time and
5474 rate.")
5475 (home-page "https://github.com/paul/progress_bar")
5476 (license license:wtfpl2)))
5477
5478 (define-public ruby-dep
5479 (package
5480 (name "ruby-dep")
5481 (version "1.5.0")
5482 (source
5483 (origin
5484 (method url-fetch)
5485 (uri (rubygems-uri "ruby_dep" version))
5486 (sha256
5487 (base32
5488 "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
5489 (build-system ruby-build-system)
5490 (arguments
5491 '(#:tests? #f)) ; No included tests
5492 (synopsis "Creates a version constraint of supported Rubies")
5493 (description
5494 "This package helps create a version constraint of supported Rubies,
5495 suitable for a gemspec file.")
5496 (home-page "https://github.com/e2/ruby_dep")
5497 (license license:expat)))
5498
5499 (define-public ruby-progressbar
5500 (package
5501 (name "ruby-progressbar")
5502 (version "1.10.1")
5503 (source
5504 (origin
5505 (method url-fetch)
5506 (uri (rubygems-uri "ruby-progressbar" version))
5507 (sha256
5508 (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf"))))
5509 (build-system ruby-build-system)
5510 (arguments
5511 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
5512 #:tests? #f))
5513 (synopsis "Text progress bar library for Ruby")
5514 (description
5515 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
5516 The output can be customized with a formatting system.")
5517 (home-page "https://github.com/jfelchner/ruby-progressbar")
5518 (license license:expat)))
5519
5520 (define-public ruby-pry
5521 (package
5522 (name "ruby-pry")
5523 (version "0.13.1")
5524 (source
5525 (origin
5526 (method url-fetch)
5527 (uri (rubygems-uri "pry" version))
5528 (sha256
5529 (base32
5530 "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk"))))
5531 (build-system ruby-build-system)
5532 (arguments
5533 '(#:tests? #f)) ; no tests
5534 (propagated-inputs
5535 `(("ruby-coderay" ,ruby-coderay)
5536 ("ruby-method-source" ,ruby-method-source)))
5537 (synopsis "Ruby REPL")
5538 (description "Pry is an IRB alternative and runtime developer console for
5539 Ruby. It features syntax highlighting, a plugin architecture, runtime
5540 invocation, and source and documentation browsing.")
5541 (home-page "https://cobaltbluemedia.com/pryrepl/")
5542 (license license:expat)))
5543
5544 (define-public ruby-single-cov
5545 (package
5546 (name "ruby-single-cov")
5547 (version "1.3.2")
5548 (home-page "https://github.com/grosser/single_cov")
5549 (source (origin
5550 (method git-fetch)
5551 (uri (git-reference (url home-page)
5552 (commit (string-append "v" version))))
5553 (file-name (git-file-name name version))
5554 (sha256
5555 (base32
5556 "05qdzpcai1p23a120gb9bxkfl4y73k9hicx34ch2lsk31lgi9bl7"))))
5557 (build-system ruby-build-system)
5558 (arguments
5559 '(#:test-target "default"
5560 #:phases (modify-phases %standard-phases
5561 (replace 'replace-git-ls-files
5562 (lambda _
5563 (substitute* "single_cov.gemspec"
5564 (("`git ls-files lib/ bin/ MIT-LICENSE`")
5565 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
5566 #t))
5567 (add-before 'check 'remove-version-constraints
5568 (lambda _
5569 (delete-file "Gemfile.lock")
5570 #t))
5571 (add-before 'check 'make-files-writable
5572 (lambda _
5573 ;; Tests need to create local directories and open files
5574 ;; with write permissions.
5575 (for-each make-file-writable
5576 (find-files "specs" #:directories? #t))
5577 #t))
5578 (add-before 'check 'disable-failing-test
5579 (lambda _
5580 ;; XXX: This test copies assets from minitest, but can
5581 ;; not cope with the files being read-only. Just skip
5582 ;; it for now.
5583 (substitute* "specs/single_cov_spec.rb"
5584 (("it \"complains when coverage is bad\"")
5585 "xit \"complains when coverage is bad\""))
5586 #t)))))
5587 (native-inputs
5588 `(("ruby-bump" ,ruby-bump)
5589 ("ruby-minitest" ,ruby-minitest)
5590 ("ruby-rspec" ,ruby-rspec)
5591 ("ruby-simplecov" ,ruby-simplecov)))
5592 (synopsis "Code coverage reporting tool")
5593 (description
5594 "This package provides actionable code coverage reports for Ruby
5595 projects. It has very little overhead and can be easily integrated with
5596 development tools to catch coverage problems early.")
5597 (license license:expat)))
5598
5599 (define-public ruby-oedipus-lex
5600 (package
5601 (name "ruby-oedipus-lex")
5602 (version "2.5.2")
5603 (source
5604 (origin
5605 (method url-fetch)
5606 (uri (rubygems-uri "oedipus_lex" version))
5607 (sha256
5608 (base32
5609 "1v1rk78khwq87ar300lwll570zxpkq9rjnpgc9mgsyd6mm9qjz4w"))))
5610 (build-system ruby-build-system)
5611 (native-inputs
5612 `(("ruby-hoe" ,ruby-hoe)))
5613 (synopsis "Ruby lexer")
5614 (description
5615 "Oedipus Lex is a lexer generator in the same family as Rexical and Rex.
5616 It is based primarily on generating code much like you would a hand-written
5617 lexer. It uses StrScanner within a multi-level case statement. As such,
5618 Oedipus matches on the first match, not the longest.")
5619 (home-page "https://github.com/seattlerb/oedipus_lex")
5620 (license license:expat)))
5621
5622 (define-public ruby-guard
5623 (package
5624 (name "ruby-guard")
5625 (version "2.13.0")
5626 (source (origin
5627 (method git-fetch)
5628 ;; The gem does not include a Rakefile, nor does it contain a
5629 ;; gemspec file, nor does it come with the tests. This is why
5630 ;; we fetch the tarball from Github.
5631 (uri (git-reference
5632 (url "https://github.com/guard/guard")
5633 (commit (string-append "v" version))))
5634 (file-name (git-file-name name version))
5635 (sha256
5636 (base32
5637 "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs"))))
5638 (build-system ruby-build-system)
5639 (arguments
5640 `(#:tests? #f ; tests require cucumber
5641 #:phases
5642 (modify-phases %standard-phases
5643 (add-after 'unpack 'remove-git-ls-files
5644 (lambda* (#:key outputs #:allow-other-keys)
5645 (substitute* "guard.gemspec"
5646 (("git ls-files -z") "find . -type f -print0"))
5647 #t))
5648 (replace 'build
5649 (lambda _
5650 (invoke "gem" "build" "guard.gemspec"))))))
5651 (propagated-inputs
5652 `(("ruby-formatador" ,ruby-formatador)
5653 ("ruby-listen" ,ruby-listen)
5654 ("ruby-lumberjack" ,ruby-lumberjack)
5655 ("ruby-nenv" ,ruby-nenv)
5656 ("ruby-notiffany" ,ruby-notiffany)
5657 ("ruby-pry" ,ruby-pry)
5658 ("ruby-shellany" ,ruby-shellany)
5659 ("ruby-thor" ,ruby-thor)))
5660 (native-inputs
5661 `(("bundler" ,bundler)
5662 ("ruby-rspec" ,ruby-rspec)))
5663 (synopsis "Tool to handle events on file system modifications")
5664 (description
5665 "Guard is a command line tool to easily handle events on file system
5666 modifications. Guard automates various tasks by running custom rules whenever
5667 file or directories are modified.")
5668 (home-page "https://guardgem.org/")
5669 (license license:expat)))
5670
5671 (define-public ruby-spinach
5672 (package
5673 (name "ruby-spinach")
5674 (version "0.11.0")
5675 (home-page "https://github.com/codegram/spinach")
5676 (source (origin
5677 (method url-fetch)
5678 (uri (rubygems-uri "spinach" version))
5679 (sha256
5680 (base32
5681 "1mv053mqz9c8ngqa6wp1ymk2fax6j0yqzax6918akrdr7c3fx3c6"))))
5682 (build-system ruby-build-system)
5683 (arguments
5684 ;; FIXME: Disable tests altogether because they depend on 'capybara'
5685 ;; which in turn depends on many other unpackaged gems. Enable once
5686 ;; capybara is available.
5687 '(#:tests? #f))
5688 (propagated-inputs
5689 `(("ruby-colorize" ,ruby-colorize)
5690 ("ruby-gherkin-ruby" ,ruby-gherkin-ruby)
5691 ("ruby-json" ,ruby-json)))
5692 (synopsis "Gherkin-based BDD framework")
5693 (description
5694 "Spinach is a high-level @acronym{BDD, Behavior-driven development}
5695 framework that leverages the expressive @code{Gherkin} language to help you
5696 define executable specifications of your code.")
5697 (license license:expat)))
5698
5699 (define-public ruby-tilt
5700 (package
5701 (name "ruby-tilt")
5702 (version "2.0.10")
5703 (source
5704 (origin
5705 (method git-fetch) ;the distributed gem lacks tests
5706 (uri (git-reference
5707 (url "https://github.com/rtomayko/tilt")
5708 (commit (string-append "v" version))))
5709 (file-name (git-file-name name version))
5710 (sha256
5711 (base32
5712 "0adb7fg7925n2rd9a8kkqz3mgylw2skp9hkh9qc1rnph72mqsm6r"))))
5713 (build-system ruby-build-system)
5714 (arguments
5715 '(#:phases
5716 (modify-phases %standard-phases
5717 (add-after 'unpack 'remove-some-dependencies
5718 (lambda _
5719 (substitute* "Gemfile"
5720 ;; TODO ronn is used for generating the manual
5721 (("gem 'ronn'.*") "\n")
5722 ;; ruby-haml has a runtime dependency on ruby-tilt, so don't
5723 ;; pass it in as a native-input
5724 (("gem 'haml'.*") "\n")
5725 ;; TODO Not all of these gems are packaged for Guix yet:
5726 ;; less, coffee-script, livescript, babel-transpiler,
5727 ;; typescript-node
5728 (("if can_execjs") "if false")
5729 ;; Disable the secondary group to reduce the number of
5730 ;; dependencies. None of the normal approaches work, so patch
5731 ;; the Gemfile instead.
5732 (("group :secondary") "[].each"))
5733 #t)))))
5734 (propagated-inputs
5735 `(("ruby-pandoc-ruby" ,ruby-pandoc-ruby)
5736 ("ruby-sassc" ,ruby-sassc)))
5737 (native-inputs
5738 `(("bundler" ,bundler)
5739 ("ruby-yard" ,ruby-yard)
5740 ("ruby-builder" ,ruby-builder)
5741 ("ruby-erubis" ,ruby-erubis)
5742 ("ruby-markaby" ,ruby-markaby)))
5743 (synopsis "Generic interface to multiple Ruby template engines")
5744 (description
5745 "Tilt is a thin interface over a number of different Ruby template
5746 engines in an attempt to make their usage as generic as possible.")
5747 (home-page "https://github.com/rtomayko/tilt/")
5748 (license license:expat)))
5749
5750 (define-public ruby-thread-safe
5751 (package
5752 (name "ruby-thread-safe")
5753 (version "0.3.6")
5754 (source
5755 (origin
5756 (method url-fetch)
5757 (uri (rubygems-uri "thread_safe" version))
5758 (sha256
5759 (base32
5760 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
5761 (build-system ruby-build-system)
5762 (arguments
5763 '(#:tests? #f)) ; needs simplecov, among others
5764 (synopsis "Thread-safe utilities for Ruby")
5765 (description "The thread_safe library provides thread-safe collections and
5766 utilities for Ruby.")
5767 (home-page "https://github.com/ruby-concurrency/thread_safe")
5768 (license license:asl2.0)))
5769
5770 (define-public ruby-tzinfo
5771 (package
5772 (name "ruby-tzinfo")
5773 (version "2.0.4")
5774 (source
5775 (origin
5776 (method git-fetch)
5777 (uri (git-reference
5778 ;; Pull from git because the gem has no tests.
5779 (url "https://github.com/tzinfo/tzinfo")
5780 (commit (string-append "v" version))))
5781 (file-name (git-file-name name version))
5782 (sha256
5783 (base32
5784 "0jaq1givdaz5jxz47xngyj3j315n872rk97mnpm5njwm48wy45yh"))))
5785 (build-system ruby-build-system)
5786 (arguments
5787 '(#:phases
5788 (modify-phases %standard-phases
5789 (add-after 'unpack 'skip-safe-tests
5790 (lambda _
5791 (substitute* "test/test_utils.rb"
5792 (("def safe_test\\(options = \\{\\}\\)")
5793 "def safe_test(options = {})
5794 skip('The Guix build environment has an unsafe load path')"))
5795 #t))
5796 (add-before 'check 'pre-check
5797 (lambda _
5798 (setenv "HOME" (getcwd))
5799 (substitute* "Gemfile"
5800 (("simplecov.*") "simplecov'\n"))
5801 #t))
5802 (replace 'check
5803 (lambda* (#:key tests? test-target #:allow-other-keys)
5804 (when tests?
5805 (invoke "bundler" "exec" "rake" test-target))
5806 #t)))))
5807 (propagated-inputs
5808 `(("ruby-concurrent-ruby" ,ruby-concurrent)))
5809 (native-inputs
5810 `(("ruby-simplecov" ,ruby-simplecov)))
5811 (synopsis "Time zone library for Ruby")
5812 (description "TZInfo is a Ruby library that provides daylight savings
5813 aware transformations between times in different time zones.")
5814 (home-page "https://tzinfo.github.io")
5815 (license license:expat)))
5816
5817 (define-public ruby-tzinfo-data
5818 (package
5819 (name "ruby-tzinfo-data")
5820 (version "1.2021.1")
5821 (source
5822 (origin
5823 (method git-fetch)
5824 ;; Download from GitHub because the rubygems version does not contain
5825 ;; Rakefile or tests.
5826 (uri (git-reference
5827 (url "https://github.com/tzinfo/tzinfo-data")
5828 (commit (string-append "v" version))))
5829 (file-name (git-file-name name version))
5830 (sha256
5831 (base32
5832 "0yzyr3rf8qaw6kxfc0gwpxsb7gl3rhfpx9g1c2z15vapyminhi60"))))
5833 (build-system ruby-build-system)
5834 (arguments
5835 `(#:phases
5836 (modify-phases %standard-phases
5837 (add-after 'unpack 'patch-source
5838 (lambda* (#:key inputs #:allow-other-keys)
5839 (substitute* "Rakefile"
5840 (("https://data.iana.org/time-zones/releases")
5841 (assoc-ref inputs "tzdata")))
5842 #t))
5843 (add-before 'check 'pre-check
5844 (lambda _
5845 (setenv "HOME" (getcwd))
5846 (substitute* "Rakefile"
5847 ;; Don't need gpg, and it may break after a time.
5848 (("gpg ") "echo ")
5849 ((" sh\\(\\\"make -C" text)
5850 (string-append " sh(\"sed -i 's@/bin/sh@sh@' #{tzdb_combined_path}/Makefile \")\n"
5851 " sh(\"sed -i 's@cc=@cc?=@' #{tzdb_combined_path}/Makefile \")\n" text)))
5852 (setenv "cc" ,(cc-for-target))
5853 #t)))))
5854 (propagated-inputs
5855 `(("ruby-tzinfo" ,ruby-tzinfo)))
5856 (native-inputs
5857 `(("tzdata"
5858 ,(file-union "tzdata-for-ruby-tzdata-info"
5859 `(("tzdata2021a.tar.gz"
5860 ,(origin
5861 (method url-fetch)
5862 (uri "https://data.iana.org/time-zones/releases/tzdata2021a.tar.gz")
5863 (sha256
5864 (base32
5865 "022fn6gkmp7pamlgab04x0dm5hnyn2m2fcnyr3pvm36612xd5rrr"))))
5866 ("tzdata2021a.tar.gz.asc"
5867 ,(origin
5868 (method url-fetch)
5869 (uri "https://data.iana.org/time-zones/releases/tzdata2021a.tar.gz.asc")
5870 (sha256
5871 (base32
5872 "0n7h2w8ji1lrxpk0d44wyfshlhr7c9jmwj6lqbxlyvqnfi3gbicx"))))
5873 ("tzcode2021a.tar.gz"
5874 ,(origin
5875 (method url-fetch)
5876 (uri "https://data.iana.org/time-zones/releases/tzcode2021a.tar.gz")
5877 (sha256
5878 (base32
5879 "1l02b0jiwp3fl0xd6227i69d26rmx3yrnq0ssq9vvdmm4jhvyipb"))))
5880 ("tzcode2021a.tar.gz.asc"
5881 ,(origin
5882 (method url-fetch)
5883 (uri "https://data.iana.org/time-zones/releases/tzcode2021a.tar.gz.asc")
5884 (sha256
5885 (base32
5886 "1qhlj4lr810s47s1lwcvv1sgvg2sflf98w4sbg1lc8wzv5qxxv7g")))))))))
5887 (synopsis "Data from the IANA Time Zone database")
5888 (description
5889 "This library provides @code{TZInfo::Data}, which contains data from the
5890 IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
5891 (home-page "https://tzinfo.github.io")
5892 (license license:expat)))
5893
5894 (define-public ruby-rb-inotify
5895 (package
5896 (name "ruby-rb-inotify")
5897 (version "0.9.10")
5898 (source
5899 (origin
5900 (method url-fetch)
5901 (uri (rubygems-uri "rb-inotify" version))
5902 (sha256
5903 (base32
5904 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
5905 (build-system ruby-build-system)
5906 (arguments
5907 '(#:tests? #f ; there are no tests
5908 #:phases
5909 (modify-phases %standard-phases
5910 ;; Building the gemspec with rake is not working here since it is
5911 ;; generated with Jeweler. It is also unnecessary because the
5912 ;; existing gemspec does not use any development tools to generate a
5913 ;; list of files.
5914 (replace 'build
5915 (lambda _
5916 (invoke "gem" "build" "rb-inotify.gemspec"))))))
5917 (propagated-inputs
5918 `(("ruby-ffi" ,ruby-ffi)))
5919 (native-inputs
5920 `(("ruby-yard" ,ruby-yard)))
5921 (synopsis "Ruby wrapper for Linux's inotify")
5922 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
5923 kernel subsystem for monitoring changes to files and directories.")
5924 (home-page "https://github.com/nex3/rb-inotify")
5925 (license license:expat)))
5926
5927 (define-public ruby-pry-editline
5928 (package
5929 (name "ruby-pry-editline")
5930 (version "1.1.2")
5931 (source (origin
5932 (method url-fetch)
5933 (uri (rubygems-uri "pry-editline" version))
5934 (sha256
5935 (base32
5936 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
5937 (build-system ruby-build-system)
5938 (arguments `(#:tests? #f)) ; no tests included
5939 (native-inputs
5940 `(("bundler" ,bundler)))
5941 (synopsis "Open the current REPL line in an editor")
5942 (description
5943 "This gem provides a plugin for the Ruby REPL to enable opening the
5944 current line in an external editor.")
5945 (home-page "https://github.com/tpope/pry-editline")
5946 (license license:expat)))
5947
5948 (define-public ruby-sdoc
5949 (package
5950 (name "ruby-sdoc")
5951 (version "1.1.0")
5952 (source (origin
5953 (method url-fetch)
5954 (uri (rubygems-uri "sdoc" version))
5955 (sha256
5956 (base32
5957 "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd"))))
5958 (build-system ruby-build-system)
5959 (arguments
5960 `(#:phases
5961 (modify-phases %standard-phases
5962 (add-before 'check 'set-rubylib-and-patch-gemfile
5963 (lambda _
5964 (setenv "RUBYLIB" "lib")
5965 (substitute* "sdoc.gemspec"
5966 (("s.add_runtime_dependency.*") "\n")
5967 (("s.add_dependency.*") "\n"))
5968 (substitute* "Gemfile"
5969 (("gem \"rake\".*")
5970 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
5971 #t)))))
5972 (propagated-inputs
5973 `(("ruby-json" ,ruby-json)))
5974 (native-inputs
5975 `(("bundler" ,bundler)
5976 ("ruby-minitest" ,ruby-minitest)
5977 ("ruby-hoe" ,ruby-hoe)))
5978 (synopsis "Generate searchable RDoc documentation")
5979 (description
5980 "SDoc is an RDoc documentation generator to build searchable HTML
5981 documentation for Ruby code.")
5982 (home-page "https://github.com/voloko/sdoc")
5983 (license license:expat)))
5984
5985 (define-public ruby-tins
5986 (package
5987 (name "ruby-tins")
5988 (version "1.15.0")
5989 (source (origin
5990 (method url-fetch)
5991 (uri (rubygems-uri "tins" version))
5992 (sha256
5993 (base32
5994 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
5995 (build-system ruby-build-system)
5996 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
5997 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
5998 ;; the gemspec.
5999 (arguments
6000 `(#:tests? #f ; there are no tests
6001 #:phases
6002 (modify-phases %standard-phases
6003 (replace 'build
6004 (lambda _
6005 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
6006 ;; causes an error.
6007 (substitute* "tins.gemspec"
6008 (("\"lib/spruz\", ") ""))
6009 (invoke "gem" "build" "tins.gemspec"))))))
6010 (synopsis "Assorted tools for Ruby")
6011 (description "Tins is a Ruby library providing assorted tools.")
6012 (home-page "https://github.com/flori/tins")
6013 (license license:expat)))
6014
6015 (define-public ruby-gem-hadar
6016 (package
6017 (name "ruby-gem-hadar")
6018 (version "1.11.0")
6019 (source (origin
6020 (method url-fetch)
6021 (uri (rubygems-uri "gem_hadar" version))
6022 (sha256
6023 (base32
6024 "160abb3l4n3gkhd86f22n981bhqxkbf5ym6fhsk796pix6696pd5"))))
6025 (build-system ruby-build-system)
6026 ;; This gem needs itself at development time. We disable rebuilding of the
6027 ;; gemspec to avoid this loop.
6028 (arguments
6029 `(#:tests? #f ; there are no tests
6030 #:phases
6031 (modify-phases %standard-phases
6032 (replace 'build
6033 (lambda _
6034 (invoke "gem" "build" "gem_hadar.gemspec"))))))
6035 (propagated-inputs
6036 `(("git" ,git)
6037 ("ruby-tins" ,ruby-tins)
6038 ("ruby-yard" ,ruby-yard)))
6039 (synopsis "Library for the development of Ruby gems")
6040 (description
6041 "This library contains some useful functionality to support the
6042 development of Ruby gems.")
6043 (home-page "https://github.com/flori/gem_hadar")
6044 (license license:expat)))
6045
6046 (define-public ruby-minitest-tu-shim
6047 (package
6048 (name "ruby-minitest-tu-shim")
6049 (version "1.3.3")
6050 (source (origin
6051 (method url-fetch)
6052 (uri (rubygems-uri "minitest_tu_shim" version))
6053 (sha256
6054 (base32
6055 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
6056 (build-system ruby-build-system)
6057 (arguments
6058 `(#:phases
6059 (modify-phases %standard-phases
6060 (add-after 'unpack 'fix-test-include-path
6061 (lambda* (#:key inputs #:allow-other-keys)
6062 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
6063 (substitute* "Rakefile"
6064 (("Hoe\\.add_include_dirs .*")
6065 (string-append "Hoe.add_include_dirs \""
6066 minitest "/lib/ruby/vendor_ruby"
6067 "/gems/minitest-"
6068 ,(package-version ruby-minitest-4)
6069 "/lib" "\""))))
6070 #t))
6071 (add-before 'check 'fix-test-assumptions
6072 (lambda _
6073 ;; The test output includes the file name, so a couple of tests
6074 ;; fail. Changing the regular expressions slightly fixes this
6075 ;; problem.
6076 (substitute* "test/test_mini_test.rb"
6077 (("output.sub!\\(.*, 'FILE:LINE'\\)")
6078 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
6079 (("gsub\\(/.*, 'FILE:LINE'\\)")
6080 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
6081 #t)))))
6082 (propagated-inputs
6083 `(("ruby-minitest-4" ,ruby-minitest-4)))
6084 (native-inputs
6085 `(("ruby-hoe" ,ruby-hoe)))
6086 (synopsis "Adapter library between minitest and test/unit")
6087 (description
6088 "This library bridges the gap between the small and fast minitest and
6089 Ruby's large and slower test/unit.")
6090 (home-page "https://rubygems.org/gems/minitest_tu_shim")
6091 (license license:expat)))
6092
6093 (define-public ruby-term-ansicolor
6094 (package
6095 (name "ruby-term-ansicolor")
6096 (version "1.6.0")
6097 (source (origin
6098 (method url-fetch)
6099 (uri (rubygems-uri "term-ansicolor" version))
6100 (sha256
6101 (base32
6102 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
6103 (build-system ruby-build-system)
6104 ;; Rebuilding the gemspec seems to require git, even though this is not a
6105 ;; git repository, so we just build the gem from the existing gemspec.
6106 (arguments
6107 `(#:phases
6108 (modify-phases %standard-phases
6109 (add-after 'unpack 'fix-test
6110 (lambda -
6111 (substitute* "tests/hsl_triple_test.rb"
6112 (("0\\\\\\.0%")
6113 "0\\.?0?%"))))
6114 (replace 'build
6115 (lambda _
6116 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
6117 (propagated-inputs
6118 `(("ruby-tins" ,ruby-tins)))
6119 (native-inputs
6120 `(("ruby-gem-hadar" ,ruby-gem-hadar)
6121 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
6122 (synopsis "Ruby library to control the attributes of terminal output")
6123 (description
6124 "This Ruby library uses ANSI escape sequences to control the attributes
6125 of terminal output.")
6126 (home-page "https://flori.github.io/term-ansicolor/")
6127 ;; There is no mention of the "or later" clause.
6128 (license license:gpl2)))
6129
6130 (define-public ruby-terraform
6131 (package
6132 (name "ruby-terraform")
6133 (version "0.22.0")
6134 (source
6135 (origin
6136 (method url-fetch)
6137 (uri (rubygems-uri "ruby-terraform" version))
6138 (sha256
6139 (base32
6140 "13zjkp71cd19j2ds2h9rqwcfr1zdg5nsh63p89l6qcsc9z39z324"))))
6141 (build-system ruby-build-system)
6142 (arguments
6143 '(#:tests? #f)) ; No included tests
6144 (propagated-inputs
6145 `(("ruby-lino" ,ruby-lino)))
6146 (synopsis "Ruby wrapper around the Terraform command line interface")
6147 (description
6148 "This package provides a Ruby wrapper around the Terraform command line
6149 interface so that Terraform can be more easily invoked from Ruby code.")
6150 (home-page "https://github.com/infrablocks/ruby_terraform")
6151 (license license:expat)))
6152
6153 (define-public ruby-pstree
6154 (package
6155 (name "ruby-pstree")
6156 (version "0.1.0")
6157 (source (origin
6158 (method url-fetch)
6159 (uri (rubygems-uri "pstree" version))
6160 (sha256
6161 (base32
6162 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
6163 (build-system ruby-build-system)
6164 (native-inputs
6165 `(("ruby-gem-hadar" ,ruby-gem-hadar)
6166 ("bundler" ,bundler)))
6167 (synopsis "Create a process tree data structure")
6168 (description
6169 "This library uses the output of the @code{ps} command to create a
6170 process tree data structure for the current host.")
6171 (home-page "https://github.com/flori/pstree")
6172 ;; There is no mention of the "or later" clause.
6173 (license license:gpl2)))
6174
6175 (define-public ruby-utils
6176 (package
6177 (name "ruby-utils")
6178 (version "0.9.0")
6179 (source (origin
6180 (method url-fetch)
6181 (uri (rubygems-uri "utils" version))
6182 (sha256
6183 (base32
6184 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
6185 (build-system ruby-build-system)
6186 (propagated-inputs
6187 `(("ruby-tins" ,ruby-tins)
6188 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
6189 ("ruby-pstree" ,ruby-pstree)
6190 ("ruby-pry-editline" ,ruby-pry-editline)))
6191 (native-inputs
6192 `(("ruby-gem-hadar" ,ruby-gem-hadar)
6193 ("bundler" ,bundler)))
6194 (synopsis "Command line tools for working with Ruby")
6195 (description
6196 "This package provides assorted command line tools that may be useful
6197 when working with Ruby code.")
6198 (home-page "https://github.com/flori/utils")
6199 ;; There is no mention of the "or later" clause.
6200 (license license:gpl2)))
6201
6202 (define-public ruby-jaro-winkler
6203 (package
6204 (name "ruby-jaro-winkler")
6205 (version "1.5.4")
6206 (source
6207 (origin
6208 (method url-fetch)
6209 (uri (rubygems-uri "jaro_winkler" version))
6210 (sha256
6211 (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh"))))
6212 (build-system ruby-build-system)
6213 (arguments
6214 '(#:tests? #f)) ; no included tests
6215 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
6216 (description
6217 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
6218 algorithm. It is written as a C extension and will fallback to a pure Ruby
6219 implementation on platforms where this is unsupported.")
6220 (home-page "https://github.com/tonytonyjan/jaro_winkler")
6221 (license license:expat)))
6222
6223 (define-public ruby-json
6224 (package
6225 (name "ruby-json")
6226 (version "2.1.0")
6227 (source
6228 (origin
6229 (method url-fetch)
6230 (uri (rubygems-uri "json" version))
6231 (sha256
6232 (base32
6233 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
6234 (build-system ruby-build-system)
6235 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
6236 (synopsis "JSON library for Ruby")
6237 (description "This Ruby library provides a JSON implementation written as
6238 a native C extension.")
6239 (home-page "http://json-jruby.rubyforge.org/")
6240 (license (list license:ruby license:gpl2)))) ; GPL2 only
6241
6242 (define-public ruby-json-pure
6243 (package
6244 (name "ruby-json-pure")
6245 (version "2.2.0")
6246 (source (origin
6247 (method url-fetch)
6248 (uri (rubygems-uri "json_pure" version))
6249 (sha256
6250 (base32
6251 "0m0j1mfwv0mvw72kzqisb26xjl236ivqypw1741dkis7s63b8439"))))
6252 (build-system ruby-build-system)
6253 (arguments
6254 `(#:phases
6255 (modify-phases %standard-phases
6256 (add-after 'unpack 'fix-rakefile
6257 (lambda _
6258 (substitute* "Rakefile"
6259 ;; Since this is not a git repository, do not call 'git'.
6260 (("`git ls-files`") "`find . -type f |sort`")
6261 ;; Loosen dependency constraint.
6262 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
6263 #t))
6264 (add-after 'replace-git-ls-files 'regenerate-gemspec
6265 (lambda _
6266 ;; Regenerate gemspec so loosened dependency constraints are
6267 ;; propagated.
6268 (invoke "rake" "gemspec")))
6269 (add-after 'regenerate-gemspec 'fix-json-java.gemspec
6270 (lambda _
6271 ;; This gemspec doesn't look to be generated by the above
6272 ;; command, so patch it separately.
6273 (substitute* "json-java.gemspec"
6274 (("%q<test-unit>\\.freeze, \\[\"~> 2\\.0\"\\]")
6275 "%q<test-unit>.freeze, [\">= 2.0\"]"))
6276 #t)))))
6277 (native-inputs
6278 `(("bundler" ,bundler)
6279 ("ragel" ,ragel)
6280 ("ruby-simplecov" ,ruby-simplecov)
6281 ("ruby-test-unit" ,ruby-test-unit)))
6282 (synopsis "JSON implementation in pure Ruby")
6283 (description
6284 "This package provides a JSON implementation written in pure Ruby.")
6285 (home-page "https://flori.github.com/json/")
6286 (license license:ruby)))
6287
6288 (define-public ruby-jwt
6289 (package
6290 (name "ruby-jwt")
6291 (version "2.1.0")
6292 (source
6293 (origin
6294 (method url-fetch)
6295 (uri (rubygems-uri "jwt" version))
6296 (sha256
6297 (base32
6298 "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky"))))
6299 (build-system ruby-build-system)
6300 (arguments
6301 '(#:test-target "test"
6302 #:phases
6303 (modify-phases %standard-phases
6304 (add-after 'unpack 'remove-unnecessary-dependencies
6305 (lambda _
6306 (substitute* "spec/spec_helper.rb"
6307 (("require 'simplecov.*") "\n")
6308 ;; Use [].each to disable running the SimpleCov configuration
6309 ;; block
6310 (("SimpleCov\\.configure") "[].each")
6311 (("require 'codeclimate-test-reporter'") "")
6312 (("require 'codacy-coverage'") "")
6313 (("Codacy::Reporter\\.start") ""))
6314 #t)))))
6315 (native-inputs
6316 `(("bundler" ,bundler)
6317 ("ruby-rspec" ,ruby-rspec)
6318 ("ruby-rbnacl" ,ruby-rbnacl)))
6319 (synopsis "Ruby implementation of the JSON Web Token standard")
6320 (description
6321 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
6322 @acronym{JWT, JSON Web Token} standard.")
6323 (home-page "https://github.com/jwt/ruby-jwt")
6324 (license license:expat)))
6325
6326 ;; Even though this package only provides bindings for a Mac OSX API it is
6327 ;; required by "ruby-listen" at runtime.
6328 (define-public ruby-rb-fsevent
6329 (package
6330 (name "ruby-rb-fsevent")
6331 (version "0.10.3")
6332 (source (origin
6333 (method url-fetch)
6334 (uri (rubygems-uri "rb-fsevent" version))
6335 (sha256
6336 (base32
6337 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
6338 (build-system ruby-build-system)
6339 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
6340 ;; "listen", which needs "rb-fsevent" at runtime.
6341 (arguments `(#:tests? #f))
6342 (synopsis "FSEvents API with signals catching")
6343 (description
6344 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
6345 (home-page "https://rubygems.org/gems/rb-fsevent")
6346 (license license:expat)))
6347
6348 (define-public ruby-listen
6349 (package
6350 (name "ruby-listen")
6351 (version "3.2.0")
6352 (source
6353 (origin
6354 ;; The gem does not include a Rakefile, so fetch from the Git
6355 ;; repository.
6356 (method git-fetch)
6357 (uri (git-reference
6358 (url "https://github.com/guard/listen")
6359 (commit (string-append "v" version))))
6360 (file-name (git-file-name name version))
6361 (sha256
6362 (base32
6363 "1hkp1g6hk5clsmbd001gkc12ma6s459x820piajyasv61m87if24"))))
6364 (build-system ruby-build-system)
6365 (arguments
6366 `(#:test-target "spec"
6367 #:phases
6368 (modify-phases %standard-phases
6369 (add-after 'unpack 'fix-files-in-gemspec
6370 (lambda _
6371 (substitute* "listen.gemspec"
6372 (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
6373 #t))
6374 (add-before 'check 'remove-unnecessary-dependencies'
6375 (lambda _
6376 (substitute* "Rakefile"
6377 ;; Rubocop is for code linting, and is unnecessary for running
6378 ;; the tests.
6379 ((".*rubocop.*") ""))
6380 #t)))))
6381 (native-inputs
6382 `(("bundler" ,bundler)
6383 ("ruby-rspec" ,ruby-rspec)))
6384 (inputs
6385 `(;; ruby-thor is used for the command line interface, and is referenced
6386 ;; in the wrapper, and therefore just needs to be an input.
6387 ("ruby-thor" ,ruby-thor)))
6388 (propagated-inputs
6389 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
6390 ("ruby-rb-inotify" ,ruby-rb-inotify)
6391 ("ruby-dep" ,ruby-dep)))
6392 (synopsis "Listen to file modifications")
6393 (description "The Listen gem listens to file modifications and notifies
6394 you about the changes.")
6395 (home-page "https://github.com/guard/listen")
6396 (license license:expat)))
6397
6398 (define-public ruby-loofah
6399 (package
6400 (name "ruby-loofah")
6401 (version "2.3.1")
6402 (source
6403 (origin
6404 (method url-fetch)
6405 (uri (rubygems-uri "loofah" version))
6406 (sha256
6407 (base32
6408 "0npqav026zd7r4qdidq9x5nxcp2dzg71bnp421xxx7sngbxf2xbd"))))
6409 (build-system ruby-build-system)
6410 (arguments
6411 '(#:phases
6412 (modify-phases %standard-phases
6413 (add-after 'unpack 'remove-unnecessary-dependencies
6414 (lambda _
6415 ;; concourse is a development tool which is unused, so remove it
6416 ;; so it's not required.
6417 (substitute* "Rakefile"
6418 (("require \"concourse\"") "")
6419 (("Concourse\\.new.*") "task :concourse do\n"))
6420 #t)))))
6421 (native-inputs
6422 `(("ruby-hoe" ,ruby-hoe)
6423 ("ruby-rr" ,ruby-rr)))
6424 (propagated-inputs
6425 `(("ruby-nokogiri" ,ruby-nokogiri)
6426 ("ruby-crass" ,ruby-crass)))
6427 (synopsis "Ruby library for manipulating and transforming HTML/XML")
6428 (description
6429 "Loofah is a general library for manipulating and transforming HTML/XML
6430 documents and fragments. It's built on top of Nokogiri and libxml2.")
6431 (home-page "https://github.com/flavorjones/loofah")
6432 (license license:expat)))
6433
6434 (define-public ruby-activesupport
6435 (package
6436 (name "ruby-activesupport")
6437 (version "6.1.3")
6438 (source
6439 (origin
6440 (method url-fetch)
6441 (uri (rubygems-uri "activesupport" version))
6442 (sha256
6443 (base32
6444 "00a4db64g8w5yyk6hzak2nqrmdfvyh5zc9cvnm9gglwbi87ss28h"))))
6445 (build-system ruby-build-system)
6446 (arguments
6447 `(#:phases
6448 (modify-phases %standard-phases
6449 (replace 'check
6450 (lambda _
6451 ;; There are no tests, instead attempt to load the library.
6452 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
6453 (propagated-inputs
6454 `(("ruby-concurrent" ,ruby-concurrent)
6455 ("ruby-i18n" ,ruby-i18n)
6456 ("ruby-minitest" ,ruby-minitest)
6457 ("ruby-tzinfo" ,ruby-tzinfo)
6458 ("ruby-tzinfo-data" ,ruby-tzinfo-data)
6459 ("ruby-zeitwerk" ,ruby-zeitwerk)))
6460 (synopsis "Ruby on Rails utility library")
6461 (description "ActiveSupport is a toolkit of support libraries and Ruby
6462 core extensions extracted from the Rails framework. It includes support for
6463 multibyte strings, internationalization, time zones, and testing.")
6464 (home-page "https://www.rubyonrails.org")
6465 (license license:expat)))
6466
6467 (define-public ruby-crass
6468 (package
6469 (name "ruby-crass")
6470 (version "1.0.6")
6471 (home-page "https://github.com/rgrove/crass")
6472 (source (origin
6473 ;; The gem does not contain tests, so pull from git.
6474 (method git-fetch)
6475 (uri (git-reference
6476 (url home-page)
6477 (commit (string-append "v" version))))
6478 (file-name (git-file-name name version))
6479 (sha256
6480 (base32
6481 "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40"))))
6482 (build-system ruby-build-system)
6483 (synopsis "Pure Ruby CSS parser")
6484 (description
6485 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
6486 (license license:expat)))
6487
6488 (define-public ruby-nokogumbo
6489 (package
6490 (name "ruby-nokogumbo")
6491 (version "2.0.2")
6492 (source (origin
6493 ;; We use the git reference, because there's no Rakefile in the
6494 ;; published gem and the tarball on Github is outdated.
6495 (method git-fetch)
6496 (uri (git-reference
6497 (url "https://github.com/rubys/nokogumbo")
6498 (commit (string-append "v" version))))
6499 (file-name (string-append name "-" version "-checkout"))
6500 (sha256
6501 (base32
6502 "1qg0iyw450lw6d0j1ghzg79a6l60nm1m4qmrzwzybi585861jxcx"))))
6503 (build-system ruby-build-system)
6504 (native-inputs
6505 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
6506 (inputs
6507 `(("gumbo-parser" ,gumbo-parser)))
6508 (propagated-inputs
6509 `(("ruby-nokogiri" ,ruby-nokogiri)))
6510 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
6511 (description
6512 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
6513 access the result as a Nokogiri parsed document.")
6514 (home-page "https://github.com/rubys/nokogumbo/")
6515 (license license:asl2.0)))
6516
6517 (define-public ruby-sanitize
6518 (package
6519 (name "ruby-sanitize")
6520 (version "5.1.0")
6521 (home-page "https://github.com/rgrove/sanitize")
6522 (source (origin
6523 (method git-fetch)
6524 ;; The gem does not include the Rakefile, so we download the
6525 ;; source from Github.
6526 (uri (git-reference
6527 (url home-page)
6528 (commit (string-append "v" version))))
6529 (file-name (git-file-name name version))
6530 (patches (search-patches "ruby-sanitize-system-libxml.patch"))
6531 (sha256
6532 (base32
6533 "0lj0q9yhjp0q0in5majkshnki07mw8m2vxgndx4m5na6232aszl0"))))
6534 (build-system ruby-build-system)
6535 (propagated-inputs
6536 `(("ruby-crass" ,ruby-crass)
6537 ("ruby-nokogiri" ,ruby-nokogiri)
6538 ("ruby-nokogumbo" ,ruby-nokogumbo)))
6539 (native-inputs
6540 `(("ruby-minitest" ,ruby-minitest)))
6541 (synopsis "Whitelist-based HTML and CSS sanitizer")
6542 (description
6543 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
6544 acceptable elements, attributes, and CSS properties, Sanitize will remove all
6545 unacceptable HTML and/or CSS from a string.")
6546 (license license:expat)))
6547
6548 (define-public ruby-oj
6549 (package
6550 (name "ruby-oj")
6551 (version "3.10.1")
6552 (source
6553 (origin
6554 (method git-fetch)
6555 ;; Version on rubygems.org does not contain Rakefile, so download from
6556 ;; GitHub instead.
6557 (uri (git-reference
6558 (url "https://github.com/ohler55/oj")
6559 (commit (string-append "v" version))))
6560 (file-name (git-file-name name version))
6561 (sha256
6562 (base32
6563 "0i5xjx4sh816zx2c1a4d1q67k7vllg5jnnc4jy6zhbmwi1dvp5vw"))))
6564 (build-system ruby-build-system)
6565 (arguments
6566 '(#:test-target "test_all"
6567 #:phases
6568 (modify-phases %standard-phases
6569 (add-before 'check 'disable-bundler
6570 (lambda _
6571 (substitute* "Rakefile"
6572 (("Bundler\\.with_clean_env") "1.times")
6573 (("bundle exec ") "")))))))
6574 (native-inputs
6575 `(("bundler" ,bundler)
6576 ("ruby-rspec" ,ruby-rspec)
6577 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6578 (synopsis "JSON parser for Ruby optimized for speed")
6579 (description
6580 "Oj is a JSON parser and generator for Ruby, where the encoding and
6581 decoding of JSON is implemented as a C extension to Ruby.")
6582 (home-page "http://www.ohler.com/oj/")
6583 (license (list license:expat ; Ruby code
6584 license:bsd-3)))) ; extension code
6585
6586 (define-public ruby-ox
6587 (package
6588 (name "ruby-ox")
6589 (version "2.6.0")
6590 (source
6591 (origin
6592 (method url-fetch)
6593 (uri (rubygems-uri "ox" version))
6594 (sha256
6595 (base32
6596 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
6597 (build-system ruby-build-system)
6598 (arguments
6599 '(#:tests? #f)) ; no tests
6600 (synopsis "Optimized XML library for Ruby")
6601 (description
6602 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
6603 written as a native C extension. It was designed to be an alternative to
6604 Nokogiri and other Ruby XML parsers for generic XML parsing and as an
6605 alternative to Marshal for Object serialization. ")
6606 (home-page "http://www.ohler.com/ox")
6607 (license license:expat)))
6608
6609 (define-public ruby-redcloth
6610 (package
6611 (name "ruby-redcloth")
6612 (version "4.3.2")
6613 (source (origin
6614 (method url-fetch)
6615 (uri (rubygems-uri "RedCloth" version))
6616 (sha256
6617 (base32
6618 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
6619 (build-system ruby-build-system)
6620 (arguments
6621 `(#:tests? #f ; no tests
6622 #:phases
6623 (modify-phases %standard-phases
6624 ;; Redcloth has complicated rake tasks to build various versions for
6625 ;; multiple targets using RVM. We don't want this so we just use the
6626 ;; existing gemspec.
6627 (replace 'build
6628 (lambda _
6629 (invoke "gem" "build" "redcloth.gemspec"))))))
6630 (native-inputs
6631 `(("bundler" ,bundler)
6632 ("ruby-diff-lcs" ,ruby-diff-lcs)
6633 ("ruby-rspec-2" ,ruby-rspec-2)))
6634 (synopsis "Textile markup language parser for Ruby")
6635 (description
6636 "RedCloth is a Ruby parser for the Textile markup language.")
6637 (home-page "http://redcloth.org")
6638 (license license:expat)))
6639
6640 (define-public ruby-pg
6641 (package
6642 (name "ruby-pg")
6643 (version "1.2.3")
6644 (source
6645 (origin
6646 (method url-fetch)
6647 (uri (rubygems-uri "pg" version))
6648 (sha256
6649 (base32
6650 "13mfrysrdrh8cka1d96zm0lnfs59i5x2g6ps49r2kz5p3q81xrzj"))))
6651 (build-system ruby-build-system)
6652 (arguments
6653 '(#:test-target "spec"))
6654 (native-inputs
6655 `(("ruby-rake-compiler" ,ruby-rake-compiler)
6656 ("ruby-hoe" ,ruby-hoe)
6657 ("ruby-rspec" ,ruby-rspec)))
6658 (inputs
6659 `(("postgresql" ,postgresql)))
6660 (synopsis "Ruby interface to PostgreSQL")
6661 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
6662 with PostgreSQL 9.0 and later.")
6663 (home-page "https://bitbucket.org/ged/ruby-pg")
6664 (license license:ruby)))
6665
6666 (define-public ruby-byebug
6667 (package
6668 (name "ruby-byebug")
6669 (version "9.0.6")
6670 (source
6671 (origin
6672 (method url-fetch)
6673 (uri (rubygems-uri "byebug" version))
6674 (sha256
6675 (base32
6676 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
6677 (build-system ruby-build-system)
6678 (arguments
6679 '(#:tests? #f)) ; no tests
6680 (synopsis "Debugger for Ruby 2")
6681 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
6682 TracePoint C API for execution control and the Debug Inspector C API for call
6683 stack navigation. The core component provides support that front-ends can
6684 build on. It provides breakpoint handling and bindings for stack frames among
6685 other things and it comes with a command line interface.")
6686 (home-page "https://github.com/deivid-rodriguez/byebug")
6687 (license license:bsd-2)))
6688
6689 ;;; TODO: Make it the default byebug in core-updates.
6690 (define-public ruby-byebug-11
6691 (package
6692 (inherit ruby-byebug)
6693 (name "ruby-byebug")
6694 (version "11.1.3")
6695 (source
6696 (origin
6697 (method git-fetch)
6698 (uri (git-reference
6699 (url "https://github.com/deivid-rodriguez/byebug")
6700 (commit (string-append "v" version))))
6701 (file-name (git-file-name name version))
6702 (sha256
6703 (base32
6704 "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij"))
6705 (modules '((guix build utils)))
6706 (snippet
6707 '(begin
6708 ;; Remove wrappers that try to setup a bundle environment.
6709 (with-directory-excursion "bin"
6710 (for-each delete-file '("bundle" "rake" "rubocop"))
6711 ;; ruby-minitest doesn't come with a launcher, so fix the one
6712 ;; provided.
6713 (substitute* "minitest"
6714 (("load File\\.expand_path\\(\"bundle\".*") "")
6715 (("require \"bundler/setup\".*") "")))
6716 #t))))
6717 (arguments
6718 `(#:tests? #t
6719 #:phases
6720 (modify-phases %standard-phases
6721 (add-after 'unpack 'skip-tmp-path-sensitive-test
6722 (lambda _
6723 (substitute* "test/commands/where_test.rb"
6724 (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
6725 "unless true\n"))
6726 #t))
6727 (add-before 'build 'compile
6728 (lambda _
6729 (invoke "rake" "compile")))
6730 (add-before 'check 'set-home
6731 (lambda _
6732 (setenv "HOME" (getcwd))
6733 #t)))))
6734 (native-inputs
6735 `(("bundler" ,bundler)
6736 ("ruby-chandler" ,ruby-chandler)
6737 ("ruby-minitest" ,ruby-minitest)
6738 ("ruby-pry" ,ruby-pry)
6739 ("ruby-rake-compiler" ,ruby-rake-compiler)
6740 ("ruby-rubocop" ,ruby-rubocop)
6741 ("ruby-yard" ,ruby-yard)))))
6742
6743 (define-public ruby-netrc
6744 (package
6745 (name "ruby-netrc")
6746 (version "0.11.0")
6747 (source (origin
6748 (method url-fetch)
6749 (uri (rubygems-uri "netrc" version))
6750 (sha256
6751 (base32
6752 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
6753 (build-system ruby-build-system)
6754 (arguments
6755 `(#:phases
6756 (modify-phases %standard-phases
6757 (replace 'check
6758 ;; There is no Rakefile and minitest can only run one file at once,
6759 ;; so we have to iterate over all test files.
6760 (lambda _
6761 (for-each (lambda (file)
6762 (invoke "ruby" "-Itest" file))
6763 (find-files "./test" "test_.*\\.rb"))
6764 #t)))))
6765 (native-inputs
6766 `(("ruby-minitest" ,ruby-minitest)))
6767 (synopsis "Library to read and update netrc files")
6768 (description
6769 "This library can read and update netrc files, preserving formatting
6770 including comments and whitespace.")
6771 (home-page "https://github.com/geemus/netrc")
6772 (license license:expat)))
6773
6774 (define-public ruby-unf-ext
6775 (package
6776 (name "ruby-unf-ext")
6777 (version "0.0.7.6")
6778 (source (origin
6779 (method url-fetch)
6780 (uri (rubygems-uri "unf_ext" version))
6781 (sha256
6782 (base32
6783 "1ll6w64ibh81qwvjx19h8nj7mngxgffg7aigjx11klvf5k2g4nxf"))))
6784 (build-system ruby-build-system)
6785 (arguments
6786 `(#:phases
6787 (modify-phases %standard-phases
6788 (add-after 'build 'build-ext
6789 (lambda _ (invoke "rake" "compile:unf_ext")))
6790 (add-before 'check 'lose-rake-compiler-dock-dependency
6791 (lambda _
6792 ;; rake-compiler-dock is listed in the gemspec, but only
6793 ;; required when cross-compiling.
6794 (substitute* "unf_ext.gemspec"
6795 ((".*rake-compiler-dock.*") ""))
6796 #t)))))
6797 (native-inputs
6798 `(("bundler" ,bundler)
6799 ("ruby-rake-compiler" ,ruby-rake-compiler)
6800 ("ruby-test-unit" ,ruby-test-unit)))
6801 (synopsis "Unicode normalization form support library")
6802 (description
6803 "This package provides unicode normalization form support for Ruby.")
6804 (home-page "https://github.com/knu/ruby-unf_ext")
6805 (license license:expat)))
6806
6807 (define-public ruby-tdiff
6808 ;; Use a newer than released snapshot so that rspec-2 is not required.
6809 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
6810 (package
6811 (name "ruby-tdiff")
6812 (version (string-append "0.3.3-1." (string-take commit 8)))
6813 (source (origin
6814 (method git-fetch)
6815 (uri (git-reference
6816 (url "https://github.com/postmodern/tdiff")
6817 (commit commit)))
6818 (file-name (string-append name "-" version "-checkout"))
6819 (sha256
6820 (base32
6821 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
6822 (build-system ruby-build-system)
6823 (native-inputs
6824 `(("ruby-rspec" ,ruby-rspec)
6825 ("ruby-yard" ,ruby-yard)
6826 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
6827 (synopsis "Calculate the differences between two tree-like structures")
6828 (description
6829 "This library provides functions to calculate the differences between two
6830 tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
6831 (home-page "https://github.com/postmodern/tdiff")
6832 (license license:expat))))
6833
6834 (define-public ruby-nokogiri-diff
6835 ;; Use a newer than released snapshot so that rspec-2 is not required.
6836 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
6837 (package
6838 (name "ruby-nokogiri-diff")
6839 (version (string-append "0.2.0-1." (string-take commit 8)))
6840 (source (origin
6841 (method git-fetch)
6842 (uri (git-reference
6843 (url "https://github.com/postmodern/nokogiri-diff")
6844 (commit commit)))
6845 (file-name (string-append name "-" version "-checkout"))
6846 (sha256
6847 (base32
6848 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
6849 (build-system ruby-build-system)
6850 (propagated-inputs
6851 `(("ruby-tdiff" ,ruby-tdiff)
6852 ("ruby-nokogiri" ,ruby-nokogiri)))
6853 (native-inputs
6854 `(("ruby-rspec" ,ruby-rspec)
6855 ("ruby-yard" ,ruby-yard)
6856 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
6857 (synopsis "Calculate the differences between two XML/HTML documents")
6858 (description
6859 "@code{Nokogiri::Diff} adds the ability to calculate the
6860 differences (added or removed nodes) between two XML/HTML documents.")
6861 (home-page "https://github.com/postmodern/nokogiri-diff")
6862 (license license:expat))))
6863
6864 (define-public ruby-racc
6865 (package
6866 (name "ruby-racc")
6867 (version "1.4.14")
6868 (source
6869 (origin
6870 (method url-fetch)
6871 (uri (rubygems-uri "racc" version))
6872 (sha256
6873 (base32
6874 "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
6875 (build-system ruby-build-system)
6876 (native-inputs
6877 `(("ruby-hoe" ,ruby-hoe)
6878 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6879 (synopsis "LALR(1) parser generator for Ruby")
6880 (description
6881 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
6882 generates Ruby program.")
6883 (home-page "http://i.loveruby.net/en/projects/racc/")
6884 (license (list
6885 ;; Generally licensed under the LGPL2.1, and some files also
6886 ;; available under the same license as Ruby.
6887 license:lgpl2.1
6888 license:ruby))))
6889
6890 (define-public ruby-rack
6891 (package
6892 (name "ruby-rack")
6893 (version "2.2.3")
6894 (source
6895 (origin
6896 (method git-fetch)
6897 ;; Download from GitHub so that the snippet can be applied and tests run.
6898 (uri (git-reference
6899 (url "https://github.com/rack/rack")
6900 (commit version)))
6901 (file-name (git-file-name name version))
6902 (sha256
6903 (base32
6904 "1qrm5z5v586738bnkr9188dvz0s25nryw6sgvx18jjlkizayw1g4"))
6905 ;; Ignore test which fails inside the build environment but works
6906 ;; outside.
6907 (modules '((guix build utils)))
6908 (snippet
6909 '(begin (substitute* "test/spec_files.rb"
6910 (("res.body.must_equal expected_body") ""))
6911 #t))))
6912 (build-system ruby-build-system)
6913 (arguments
6914 '(#:phases
6915 (modify-phases %standard-phases
6916 (add-before 'check 'fix-tests
6917 (lambda _
6918 ;; A few of the tests use the length of a file on disk for
6919 ;; Content-Length and Content-Range headers. However, this file
6920 ;; has a shebang in it which an earlier phase patches, growing
6921 ;; the file size from 193 to 239 bytes when the store prefix is
6922 ;; "/gnu/store".
6923 (let ((size-diff (- (string-length (which "ruby"))
6924 (string-length "/usr/bin/env ruby"))))
6925 (substitute* '("test/spec_files.rb")
6926 (("208" bytes)
6927 (number->string (+ (string->number bytes) size-diff)))
6928 (("bytes(.)22-33" all delimiter)
6929 (string-append "bytes"
6930 delimiter
6931 (number->string (+ 22 size-diff))
6932 "-"
6933 (number->string (+ 33 size-diff))))))
6934 #t)))))
6935 (native-inputs
6936 `(("ruby-minitest" ,ruby-minitest)
6937 ("ruby-minitest-global-expectations" ,ruby-minitest-global-expectations)))
6938 (synopsis "Unified web application interface for Ruby")
6939 (description "Rack provides a minimal, modular and adaptable interface for
6940 developing web applications in Ruby. By wrapping HTTP requests and responses,
6941 it unifies the API for web servers, web frameworks, and software in between
6942 into a single method call.")
6943 (home-page "https://rack.github.io/")
6944 (license license:expat)))
6945
6946 (define-public ruby-rack-test
6947 (package
6948 (name "ruby-rack-test")
6949 (version "0.8.3")
6950 (source
6951 (origin
6952 (method url-fetch)
6953 (uri (rubygems-uri "rack-test" version))
6954 (sha256
6955 (base32
6956 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
6957 (build-system ruby-build-system)
6958 (arguments
6959 ;; Disable tests because of circular dependencies: requires sinatra,
6960 ;; which requires rack-protection, which requires rack-test. Instead
6961 ;; simply require the library.
6962 `(#:phases
6963 (modify-phases %standard-phases
6964 (replace 'check
6965 (lambda _
6966 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
6967 (propagated-inputs
6968 `(("ruby-rack" ,ruby-rack)))
6969 (synopsis "Testing API for Rack applications")
6970 (description
6971 "Rack::Test is a small, simple testing API for Rack applications. It can
6972 be used on its own or as a reusable starting point for Web frameworks and
6973 testing libraries to build on.")
6974 (home-page "https://github.com/rack-test/rack-test")
6975 (license license:expat)))
6976
6977 (define-public ruby-rack-protection
6978 (package
6979 (name "ruby-rack-protection")
6980 (version "2.0.8.1")
6981 (source
6982 (origin
6983 (method url-fetch)
6984 (uri (rubygems-uri "rack-protection" version))
6985 (sha256
6986 (base32
6987 "1zyj97bfr1shfgwk4ddmdbw0mdkm4qdyh9s1hl0k7accf3kxx1yi"))))
6988 (build-system ruby-build-system)
6989 (arguments
6990 '(;; Tests missing from the gem.
6991 #:tests? #f))
6992 (propagated-inputs
6993 `(("ruby-rack" ,ruby-rack)))
6994 (native-inputs
6995 `(("bundler" ,bundler)
6996 ("ruby-rspec" ,ruby-rspec-2)
6997 ("ruby-rack-test" ,ruby-rack-test)))
6998 (synopsis "Rack middleware that protects against typical web attacks")
6999 (description "Rack middleware that can be used to protect against typical
7000 web attacks. It can protect all Rack apps, including Rails. For instance, it
7001 protects against cross site request forgery, cross site scripting,
7002 clickjacking, directory traversal, session hijacking and IP spoofing.")
7003 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
7004 (license license:expat)))
7005
7006 (define-public ruby-rainbow
7007 (package
7008 (name "ruby-rainbow")
7009 (version "3.0.0")
7010 (source
7011 (origin
7012 (method url-fetch)
7013 (uri (rubygems-uri "rainbow" version))
7014 (sha256
7015 (base32
7016 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
7017 (build-system ruby-build-system)
7018 (arguments
7019 '(#:phases
7020 (modify-phases %standard-phases
7021 ;; Run rspec directly, to avoid requiring Rubocop which is used from
7022 ;; the Rakefile.
7023 (replace 'check
7024 (lambda* (#:key tests? #:allow-other-keys)
7025 (when tests?
7026 (invoke "rspec"))
7027 #t)))))
7028 (native-inputs
7029 `(("bundler" ,bundler)
7030 ("ruby-rspec" ,ruby-rspec)))
7031 (synopsis "Colorize printed text on ANSI terminals")
7032 (description
7033 "@code{rainbow} provides a string presenter object to colorize strings by
7034 wrapping them in ANSI escape codes.")
7035 (home-page "https://github.com/sickill/rainbow")
7036 (license license:expat)))
7037
7038 (define-public ruby-rr
7039 (package
7040 (name "ruby-rr")
7041 (version "1.2.1")
7042 (source
7043 (origin
7044 (method url-fetch)
7045 (uri (rubygems-uri "rr" version))
7046 (sha256
7047 (base32
7048 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
7049 (build-system ruby-build-system)
7050 (arguments
7051 '(#:tests? #f)) ; test files not included
7052 (native-inputs
7053 `(("bundler" ,bundler)
7054 ("ruby-rspec" ,ruby-rspec)))
7055 (synopsis "Ruby test double framework")
7056 (description
7057 "RR is a test double framework that features a rich selection of double
7058 techniques and a terse syntax.")
7059 (home-page "https://rr.github.io/rr/")
7060 (license license:expat)))
7061
7062 (define-public ruby-rest-client
7063 (package
7064 (name "ruby-rest-client")
7065 (version "2.0.2")
7066 (source
7067 (origin
7068 (method url-fetch)
7069 (uri (rubygems-uri "rest-client" version))
7070 (sha256
7071 (base32
7072 "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
7073 (build-system ruby-build-system)
7074 (arguments
7075 '(#:phases
7076 (modify-phases %standard-phases
7077 (add-before 'check 'remove-unnecessary-development-dependencies
7078 (lambda _
7079 (substitute* "rest-client.gemspec"
7080 ;; Remove rubocop as it's unused. Rubocop also indirectly
7081 ;; depends on this package through ruby-parser and ruby-ast so
7082 ;; this avoids a dependency loop.
7083 ((".*rubocop.*") "\n")
7084 ;; Remove pry as it's unused, it's a debugging tool
7085 ((".*pry.*") "\n")
7086 ;; Remove an unnecessarily strict rdoc dependency
7087 ((".*rdoc.*") "\n"))
7088 #t))
7089 (add-before 'check 'delete-network-dependent-tests
7090 (lambda _
7091 (delete-file "spec/integration/request_spec.rb")
7092 (delete-file "spec/integration/httpbin_spec.rb")
7093 #t)))))
7094 (propagated-inputs
7095 `(("ruby-http-cookie" ,ruby-http-cookie)
7096 ("ruby-mime-types" ,ruby-mime-types)
7097 ("ruby-netrc" ,ruby-netrc)))
7098 (native-inputs
7099 `(("bundler" ,bundler)
7100 ("ruby-webmock" ,ruby-webmock-2)
7101 ("ruby-rspec" ,ruby-rspec)))
7102 (synopsis "Simple HTTP and REST client for Ruby")
7103 (description
7104 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
7105 inspired by the Sinatra microframework style of specifying actions:
7106 @code{get}, @code{put}, @code{post}, @code{delete}.")
7107 (home-page "https://github.com/rest-client/rest-client")
7108 (license license:expat)))
7109
7110 (define-public ruby-rubocop-ast
7111 (package
7112 (name "ruby-rubocop-ast")
7113 (version "1.4.1")
7114 (source
7115 (origin
7116 (method git-fetch) ;no test suite in distributed gem
7117 (uri (git-reference
7118 (url "https://github.com/rubocop-hq/rubocop-ast")
7119 (commit (string-append "v" version))))
7120 (file-name (git-file-name name version))
7121 (sha256
7122 (base32
7123 "1x2m7k4bn4zvvwmj7imzmv0dav6xnrbcvssad1m5lkprx7h5lzkq"))))
7124 (build-system ruby-build-system)
7125 (arguments
7126 `(#:test-target "spec"
7127 #:phases (modify-phases %standard-phases
7128 (add-before 'build 'generate-lexer
7129 (lambda _
7130 (setenv "RUBOCOP_VERSION" "none")
7131 (invoke "rake" "generate")))
7132 (replace 'replace-git-ls-files
7133 (lambda _
7134 (substitute* "rubocop-ast.gemspec"
7135 (("`git ls-files(.*)`" _ files)
7136 (format #f "`find ~a -type f| sort`" files)))
7137 #t)))))
7138 (native-inputs
7139 `(("ruby-bump" ,ruby-bump)
7140 ("ruby-oedipus-lex" ,ruby-oedipus-lex)
7141 ("ruby-pry" ,ruby-pry)
7142 ("ruby-racc" ,ruby-racc)
7143 ("ruby-rake" ,ruby-rake)
7144 ("ruby-rspec" ,ruby-rspec)
7145 ("ruby-simplecov" ,ruby-simplecov)))
7146 (propagated-inputs
7147 `(("ruby-parser" ,ruby-parser)))
7148 (synopsis "RuboCop's AST extensions and NodePattern functionality")
7149 (description "Rubocop::AST extends @code{ruby-parser} with classes used
7150 by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular:
7151 @itemize
7152 @item @code{RuboCop::AST::Node}
7153 @item @code{RuboCop::AST::NodePattern}
7154 @end itemize")
7155 (home-page "https://rubocop.org/")
7156 (license license:expat)))
7157
7158 (define-public ruby-rexml
7159 (package
7160 (name "ruby-rexml")
7161 (version "3.2.4")
7162 (source
7163 (origin
7164 (method git-fetch) ;no tests in distributed gem
7165 (uri (git-reference
7166 (url "https://github.com/ruby/rexml")
7167 (commit (string-append "v" version))))
7168 (file-name (git-file-name name version))
7169 (sha256
7170 (base32
7171 "0rhjjbkaq2f2cs8hyr2i4yjqpcyl8m0wmr2cypa401m3fvz4221i"))))
7172 (build-system ruby-build-system)
7173 (synopsis "XML toolkit for Ruby")
7174 (description "Inspired by Electric XML library for Java, REXML aims to be
7175 easy-to-use API, small and fast. It supports both tree and stream document
7176 parsing.")
7177 (home-page "https://github.com/ruby/rexml")
7178 (license license:bsd-2)))
7179
7180 (define-public ruby-character-set
7181 (package
7182 (name "ruby-character-set")
7183 (version "1.4.0")
7184 (source
7185 (origin
7186 (method url-fetch)
7187 (uri (rubygems-uri "character_set" version))
7188 (sha256
7189 (base32
7190 "0affq9n77vwy897ri2zhmfinfagf37hcwwimrccy1bcxan9mj3h3"))))
7191 (build-system ruby-build-system)
7192 (arguments '(#:tests? #f)) ;avoid a cycle with ruby-regexp-parser
7193 (synopsis "Ruby library to manipulate Unicode")
7194 (description "CharacterSet is a C-extended Ruby library to work with sets
7195 of Unicode code points. It can read and write these sets in various formats
7196 and implements the @code{stdlib} @code{Set} interface for them. It also
7197 offers an alternate paradigm of @code{String} processing which grants much
7198 better performance than @code{Regexp} and @code{String} methods from the
7199 @code{stdlib} where applicable. Many parts can be used independently, e.g.:
7200 @itemize
7201 @item @code{CharacterSet::Character}
7202 @item @code{CharacterSet::Parser}
7203 @item @code{CharacterSet::Writer}
7204 @item @code{RangeCompressor}
7205 @end itemize")
7206 (home-page "https://github.com/jaynetics/character_set")
7207 (license license:expat)))
7208
7209 (define-public ruby-range-compressor
7210 (package
7211 (name "ruby-range-compressor")
7212 (version "1.0.0")
7213 (source
7214 (origin
7215 (method git-fetch)
7216 (uri (git-reference
7217 (url "https://github.com/janosch-x/range_compressor")
7218 (commit (string-append "v" version))))
7219 (file-name (git-file-name name version))
7220 (sha256
7221 (base32
7222 "0y8slri2msyyg2szgwgriqd6qw9hkxycssdrcl5lk2dbcq5zvn54"))))
7223 (build-system ruby-build-system)
7224 (arguments
7225 `(#:test-target "spec"
7226 #:phases (modify-phases %standard-phases
7227 (add-after 'extract-gemspec 'strip-version-requirements
7228 (lambda _
7229 (substitute* "range_compressor.gemspec"
7230 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
7231 (string-append stripped "\n")))
7232 #t)))))
7233 (native-inputs
7234 `(("ruby-rspec" ,ruby-rspec)))
7235 (synopsis "Simple arrays of objects to arrays of ranges compressor")
7236 (description "RangeCompresses is a tiny library that allows compressing
7237 arrays of objects into arrays of ranges. For example, it can turn the
7238 following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.")
7239 (home-page "https://github.com/janosch-x/range_compressor")
7240 (license license:expat)))
7241
7242 (define-public ruby-regexp-property-values
7243 (package
7244 (name "ruby-regexp-property-values")
7245 (version "1.0.0")
7246 (source
7247 (origin
7248 (method git-fetch)
7249 (uri (git-reference ;no test suite in distributed gem
7250 (url "https://github.com/jaynetics/regexp_property_values")
7251 (commit (string-append "v" version))))
7252 (file-name (git-file-name name version))
7253 (sha256
7254 (base32
7255 "0l3fjmscg1wxn7kc6bl022cc6k5d91pwb7daq1b5w36kvsx52w1j"))))
7256 (build-system ruby-build-system)
7257 (arguments
7258 '(#:test-target "default"))
7259 (native-inputs
7260 `(("ruby-character-set" ,ruby-character-set)
7261 ("ruby-rake-compiler" ,ruby-rake-compiler)
7262 ("ruby-range-compressor" ,ruby-range-compressor)
7263 ("ruby-rspec" ,ruby-rspec)))
7264 (synopsis "Inspect Ruby's regex engine property values")
7265 (description "This small library lets you see which property values are
7266 supported by the regular expression engine of the Ruby version you are running
7267 and can directly read out their code point ranges. In other words, it
7268 determines all supported values for @code{\\p{value}} expressions and what
7269 they match.")
7270 (home-page "https://github.com/jaynetics/regexp_property_values")
7271 (license license:expat)))
7272
7273 (define-public ruby-regexp-parser
7274 (package
7275 (name "ruby-regexp-parser")
7276 (version "2.0.0")
7277 (source
7278 (origin
7279 (method git-fetch) ;bin/test missing from gem
7280 (uri (git-reference
7281 (url "https://github.com/ammar/regexp_parser")
7282 (commit (string-append "v" version))))
7283 (file-name (git-file-name name version))
7284 (sha256
7285 (base32
7286 "09ddxdwlml30q6j4rqf06bbjj1mwx00rs0bksnyblhv85anrqz3k"))))
7287 (build-system ruby-build-system)
7288 (arguments
7289 '(#:test-target "default"
7290 #:phases (modify-phases %standard-phases
7291 (add-before 'build 'compile-scanner.rb
7292 (lambda _
7293 (invoke "rake" "build")
7294 ;; XXX: This is needed otherwise the install
7295 ;; phase fails to delete the installed cached
7296 ;; gem file.
7297 (delete-file-recursively "pkg")
7298 #t)))))
7299 (native-inputs
7300 `(("ragel" ,ragel)
7301 ("ruby-regexp-property-values" ,ruby-regexp-property-values)
7302 ("ruby-rspec" ,ruby-rspec)))
7303 (synopsis "A regular expression parser library for Ruby ")
7304 (description "A Ruby gem for tokenizing, parsing, and transforming regular
7305 expressions. It comprises the following components:
7306 @itemize
7307 @item A scanner/tokenizer based on Ragel,
7308 @item A lexer that produces a stream of token objects,
7309 @item A parser that produces a tree of Expression objects.
7310 @end itemize")
7311 (home-page "https://github.com/ammar/regexp_parser")
7312 (license license:expat)))
7313
7314 (define-public ruby-test-queue
7315 (package
7316 (name "ruby-test-queue")
7317 (version "0.4.2")
7318 (source
7319 (origin
7320 (method url-fetch)
7321 (uri (rubygems-uri "test-queue" version))
7322 (sha256
7323 (base32
7324 "0hvm3n1qrqxqilhqk4rjivw3gcrd08zz1i6am9qzg1ppjxv6f36f"))))
7325 (build-system ruby-build-system)
7326 (arguments
7327 '(#:phases
7328 (modify-phases %standard-phases
7329 (replace 'check
7330 (lambda* (#:key tests? #:allow-other-keys)
7331 (when tests?
7332 (invoke "rspec"))
7333 #t)))))
7334 (native-inputs
7335 `(("ruby-rspec" ,ruby-rspec)))
7336 (synopsis "Minitest/RSpec parallel test runner for CI environments")
7337 (description "The test-queue module is a parallel test runner,
7338 built using a centralized queue to ensure optimal distribution of
7339 tests between workers. It is specifically optimized for Continuous
7340 Integration (CI) environments: build statistics from each run are
7341 stored locally and used to sort the queue at the beginning of the next
7342 run.")
7343 (home-page "https://github.com/tmm1/test-queue")
7344 (license license:expat)))
7345
7346 (define-public ruby-rubocop
7347 (package
7348 (name "ruby-rubocop")
7349 (version "1.10.0")
7350 (source
7351 (origin
7352 (method git-fetch) ;no tests in distributed gem
7353 (uri (git-reference
7354 (url "https://github.com/rubocop-hq/rubocop")
7355 (commit (string-append "v" version))))
7356 (file-name (git-file-name name version))
7357 (sha256
7358 (base32
7359 "0wjw9vpzr4f3nf1zf010bag71w4hdi0haybdn7r5rlmw45pmim29"))))
7360 (build-system ruby-build-system)
7361 (arguments
7362 '(#:test-target "default"
7363 #:phases
7364 (modify-phases %standard-phases
7365 (add-before 'check 'set-home
7366 (lambda _
7367 (setenv "HOME" (getcwd))
7368 #t))
7369 ;; Rubocop depends on itself for tests, directly and indirectly. By
7370 ;; regenerating the TODO list we test rubocop against itself and
7371 ;; forgo adjusting the test suite to our environment each release.
7372 (replace 'check
7373 (lambda* (#:key tests? #:allow-other-keys)
7374 (when tests?
7375 (make-file-writable ".rubocop_todo.yml")
7376 (invoke "./exe/rubocop" "--auto-gen-config"))
7377 #t))
7378 (add-before 'check 'make-adoc-files-writable
7379 (lambda _
7380 (let ((adoc-files (find-files "docs/modules/ROOT/pages"
7381 "\\.adoc$")))
7382 (for-each make-file-writable adoc-files))
7383 #t)))))
7384 (native-inputs
7385 `(("ruby-bump" ,ruby-bump)
7386 ("ruby-memory-profiler" ,ruby-memory-profiler)
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
7410 the 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
7439 contexts 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
7460 creole 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
7480 creating embedded domain specific languages (EDSLs) that manipulate existing
7481 Ruby 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
7500 abstraction 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
7520 iterations per second count. For short snippets of code, it can automatically
7521 figure 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
7557 networking library. It can be used to implement a Ruby API for the ZeroMQ
7558 library.")
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
7585 networking library using the Ruby foreign function interface (FFI). It is a
7586 pure Ruby wrapper, hence is compatible with any Ruby runtime that has support
7587 for 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
7608 top 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
7630 follows 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
7653 GitHub's release notes to remove the need of manually entering release
7654 notes.")
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
7688 navigation 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,
7710 wallclock and object allocation samplers.")
7711 (home-page "http://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
7734 frames 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
7756 add 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
7775 variable 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
7821 include:
7822 @table @asis
7823 @item Speed
7824 Being a C extension, it is many times faster than the standard Ruby profiler.
7825 @item Measurement Modes
7826 It can measure program wall time, process time, object allocations and memory
7827 usage.
7828 @item Reports
7829 A variety of text and cross-referenced HTML reports can be generated.
7830 @item Threads
7831 Profiling 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 (native-inputs
7852 `(("ruby-rake" ,ruby-rake)))
7853 (synopsis "Memory profiling routines for Ruby")
7854 (description
7855 "This package provides memory profiling routines for Ruby.")
7856 (home-page "https://github.com/SamSaffron/memory_profiler")
7857 (license license:expat)))
7858
7859 (define-public ruby-cucumber-messages
7860 (package
7861 (name "ruby-cucumber-messages")
7862 (version "12.2.0")
7863 (source (origin
7864 (method git-fetch)
7865 (uri (git-reference
7866 (url "https://github.com/cucumber/messages-ruby")
7867 (commit "12cd07eac87bce7843fd1bb0bf64bc4da09f097c")))
7868 (file-name (git-file-name name version))
7869 (sha256
7870 (base32
7871 "16wwqfpsq7crvxc3q08lphgyh12cl2d83p1c79p312q4jmy9cn5a"))))
7872 (build-system ruby-build-system)
7873 (arguments
7874 `(#:phases (modify-phases %standard-phases
7875 (add-after 'unpack 'patch-protobuf.rb
7876 (lambda _
7877 (substitute* "rake/protobuf.rb"
7878 (("load 'protobuf/tasks/compile.rake'")
7879 "require 'protobuf/tasks'"))
7880 #t))
7881 (add-before 'build 'compile
7882 (lambda _
7883 (substitute* "Makefile"
7884 (("bundle exec ") "")
7885 (("include default.mk.*" all)
7886 (string-append "#" all)))
7887 (invoke "make")))
7888 (replace 'check
7889 (lambda _
7890 (invoke "rspec"))))))
7891 (propagated-inputs
7892 `(("ruby-protobuf" ,ruby-protobuf-cucumber)))
7893 (native-inputs
7894 `(("ruby-rspec" ,ruby-rspec)))
7895 (home-page "https://github.com/cucumber/messages-ruby")
7896 (synopsis "Cucumber Messages for Ruby (Protocol Buffers)")
7897 (description "Cucumber Messages for Ruby is a library which allows
7898 serialization and deserialization of the protocol buffer messages used in
7899 Cucumber.")
7900 (license license:expat)))
7901
7902 (define-public ruby-gherkin
7903 (package
7904 (name "ruby-gherkin")
7905 (version "14.0.1")
7906 (source (origin
7907 (method git-fetch)
7908 (uri (git-reference
7909 (url "https://github.com/cucumber/gherkin-ruby")
7910 (commit (string-append "v" version))))
7911 (file-name (git-file-name name version))
7912 (sha256
7913 (base32
7914 "1dwa8632nc6kijv8p257jl64rsjmc0fimlaqvxlkdi2h9n1nympb"))))
7915 (build-system ruby-build-system)
7916 (native-inputs
7917 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
7918 ("ruby-rspec" ,ruby-rspec)))
7919 (arguments
7920 `(#:test-target "spec"))
7921 (synopsis "Gherkin parser for Ruby")
7922 (description "Gherkin is a parser and compiler for the Gherkin language.
7923 It is intended be used by all Cucumber implementations to parse
7924 @file{.feature} files.")
7925 (home-page "https://github.com/cucumber/gherkin-ruby")
7926 (license license:expat)))
7927
7928 (define-public ruby-gherkin-ruby
7929 (package
7930 (name "ruby-gherkin-ruby")
7931 (version "0.3.2")
7932 (home-page "https://github.com/codegram/gherkin-ruby")
7933 (source (origin
7934 (method url-fetch)
7935 (uri (rubygems-uri "gherkin-ruby" version))
7936 (sha256
7937 (base32
7938 "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1"))))
7939 (build-system ruby-build-system)
7940 (synopsis "Pure Ruby Gherkin parser")
7941 (description
7942 "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than
7943 200 lines of code.")
7944 ;; XXX: No license information anywhere but Readme.md.
7945 (license license:expat)))
7946
7947 (define-public ruby-aruba
7948 (package
7949 (name "ruby-aruba")
7950 (version "0.14.14")
7951 (source
7952 (origin
7953 (method url-fetch)
7954 (uri (rubygems-uri "aruba" version))
7955 (sha256
7956 (base32
7957 "0l2mfpdxc03gdrbwc2hv4vdhjhqhfcdp6d02j05j64ncpi9srlqn"))))
7958 (build-system ruby-build-system)
7959 (arguments
7960 '(#:test-target "spec"
7961 #:phases
7962 (modify-phases %standard-phases
7963 (add-after 'unpack 'patch
7964 (lambda _
7965 (substitute* "spec/aruba/api_spec.rb"
7966 ;; This resolves some errors in the specs
7967 ;;
7968 ;; undefined method `parse' for Time:Class
7969 (("require 'spec_helper'")
7970 "require 'spec_helper'\nrequire 'time'"))
7971 ;; Avoid shebang issues in this spec file
7972 (substitute* "spec/aruba/matchers/command_spec.rb"
7973 (("/usr/bin/env bash")
7974 (which "bash")))
7975 #t))
7976 (add-before 'check 'remove-unnecessary-dependencies
7977 (lambda _
7978 (substitute* "Gemfile"
7979 ((".*byebug.*") "\n")
7980 ((".*pry.*") "\n")
7981 ((".*yaml.*") "\n")
7982 ((".*bcat.*") "\n")
7983 ((".*kramdown.*") "\n")
7984 ((".*rubocop.*") "\n")
7985 ((".*cucumber-pro.*") "\n")
7986 ((".*cucumber.*") "\n")
7987 ((".*license_finder.*") "\n")
7988 ((".*rake.*") "gem 'rake'\n")
7989 ((".*relish.*") "\n"))
7990 (substitute* "aruba.gemspec"
7991 (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
7992 "spec.add_runtime_dependency 'cucumber'"))
7993 #t))
7994 (add-before 'check 'set-home
7995 (lambda _ (setenv "HOME" "/tmp") #t)))))
7996 (native-inputs
7997 `(("bundler" ,bundler)
7998 ("ruby-rspec" ,ruby-rspec)
7999 ("ruby-fuubar" ,ruby-fuubar)
8000 ("ruby-simplecov" ,ruby-simplecov)))
8001 (propagated-inputs
8002 `(("ruby-childprocess" ,ruby-childprocess)
8003 ("ruby-contracts" ,ruby-contracts)
8004 ("ruby-cucumber" ,ruby-cucumber)
8005 ("ruby-ffi" ,ruby-ffi)
8006 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
8007 ("ruby-thor" ,ruby-thor)
8008 ("ruby-yard" ,ruby-yard)))
8009 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
8010 (description
8011 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
8012 command-line applications. It supports applications written in any
8013 language.")
8014 (home-page "https://github.com/cucumber/aruba")
8015 (license license:expat)))
8016
8017 ;; A version of ruby-aruba without tests run so that circular dependencies can
8018 ;; be avoided.
8019 (define ruby-aruba-without-tests
8020 (package
8021 (inherit ruby-aruba)
8022 (arguments '(#:tests? #f))
8023 (propagated-inputs
8024 `(("ruby-cucumber" ,ruby-cucumber-without-tests)
8025 ,@(alist-delete "ruby-cucumber"
8026 (package-propagated-inputs ruby-aruba))))
8027 (native-inputs '())))
8028
8029 (define-public ruby-sys-uname
8030 (package
8031 (name "ruby-sys-uname")
8032 (version "1.2.1")
8033 (source
8034 (origin
8035 (method url-fetch)
8036 (uri (rubygems-uri "sys-uname" version))
8037 (sha256
8038 (base32
8039 "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0"))))
8040 (build-system ruby-build-system)
8041 (arguments
8042 `(#:test-target "spec"))
8043 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
8044 (native-inputs `(("ruby-rspec" ,ruby-rspec)))
8045 (synopsis "Ruby interface for gathering system information")
8046 (description "The sys-uname library provides an interface for gathering
8047 information about your current platform. It allows retrieving information
8048 such as the OS name, OS version, system name, etc.")
8049 (home-page "https://github.com/djberg96/sys-uname")
8050 (license license:asl2.0)))
8051
8052 (define-public ruby-cucumber-create-meta
8053 (package
8054 (name "ruby-cucumber-create-meta")
8055 (version "1.0.0")
8056 (source
8057 (origin
8058 (method url-fetch)
8059 (uri (rubygems-uri "cucumber-create-meta" version))
8060 (sha256
8061 (base32
8062 "0i0i3arymjrnjk72mg79w1a11607x4d0lrqafm9sz2gq9l52zasw"))))
8063 (build-system ruby-build-system)
8064 (arguments
8065 `(#:phases (modify-phases %standard-phases
8066 (add-after 'extract-gemspec 'relax-version-requirements
8067 (lambda _
8068 (substitute* ".gemspec"
8069 ((" 12\\.2")
8070 " 12.1"))
8071 #t))
8072 (replace 'check
8073 (lambda _
8074 (invoke "rspec"))))))
8075 (native-inputs
8076 `(("ruby-rspec" ,ruby-rspec)))
8077 (propagated-inputs
8078 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
8079 ("ruby-sys-uname" ,ruby-sys-uname)))
8080 (synopsis "Function to create @code{Meta} messages for Cucumber Ruby")
8081 (description "The @code{createMeta} utility function allows generating
8082 system-specific @code{Meta} messages for Cucumber Ruby.")
8083 (home-page "https://github.com/cucumber/cucumber/tree/master/create-meta/ruby")
8084 (license license:expat)))
8085
8086 (define-public ruby-cucumber-html-formatter
8087 (package
8088 (name "ruby-cucumber-html-formatter")
8089 (version "7.0.0")
8090 (source
8091 (origin
8092 (method url-fetch)
8093 (uri (rubygems-uri "cucumber-html-formatter" version))
8094 (sha256
8095 (base32
8096 "0lshj4sw9jw7687wrhknyb9kffblai3l843zgrznyqij3ga0bc62"))))
8097 (build-system ruby-build-system)
8098 (arguments
8099 `(#:phases (modify-phases %standard-phases
8100 (replace 'check
8101 (lambda _
8102 (invoke "rspec"))))))
8103 (native-inputs
8104 `(("ruby-rspec" ,ruby-rspec)))
8105 (propagated-inputs
8106 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)))
8107 (synopsis "HTML formatter for Cucumber")
8108 (description "Cucumber HTML Formatter produces a HTML report for Cucumber
8109 runs. It is built on top of cucumber-react and works with any Cucumber
8110 implementation with a protocol buffer formatter that outputs Cucumber
8111 messages.")
8112 (home-page "https://github.com/cucumber/cucumber/tree/\
8113 master/html-formatter/ruby")
8114 (license license:expat)))
8115
8116 (define-public ruby-cucumber
8117 (package
8118 (name "ruby-cucumber")
8119 (version "4.1.0")
8120 (source
8121 (origin
8122 (method git-fetch)
8123 (uri (git-reference
8124 (url "https://github.com/cucumber/cucumber-ruby")
8125 (commit (string-append "v" version))))
8126 (file-name (git-file-name name version))
8127 (sha256
8128 (base32
8129 "0g9rqfslbzkkrq2kvl14fgknrhfbji3bjjpjxff5nc9wzd3hd549"))))
8130 (build-system ruby-build-system)
8131 (arguments
8132 '(#:test-target "default"
8133 #:phases
8134 (modify-phases %standard-phases
8135 (add-after 'unpack 'disable-rubocop
8136 ;; Rubocop lint check fails with our more recent version.
8137 (lambda _
8138 (substitute* "Rakefile"
8139 (("spec cucumber rubocop")
8140 "spec cucumber"))
8141 #t))
8142 (add-after 'extract-gemspec 'strip-version-requirements
8143 (lambda _
8144 (delete-file "Gemfile") ;do not use Bundler
8145 (substitute* "cucumber.gemspec"
8146 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
8147 (string-append stripped "\n")))
8148 #t))
8149 (add-before 'check 'set-home
8150 (lambda _
8151 (setenv "HOME" (getcwd))
8152 #t)))))
8153 (propagated-inputs
8154 `(("ruby-builder" ,ruby-builder)
8155 ("ruby-cucumber-core" ,ruby-cucumber-core)
8156 ("ruby-cucumber-create-meta" ,ruby-cucumber-create-meta)
8157 ("ruby-cucumber-html-formatter" ,ruby-cucumber-html-formatter)
8158 ("ruby-cucumber-messages" ,ruby-cucumber-messages)
8159 ("ruby-cucumber-wire" ,ruby-cucumber-wire)
8160 ("ruby-diff-lcs" ,ruby-diff-lcs)
8161 ("ruby-gherkin" ,ruby-gherkin)
8162 ("ruby-multi-json" ,ruby-multi-json)
8163 ("ruby-multi-test" ,ruby-multi-test)))
8164 (native-inputs
8165 `(;; Use a untested version of aruba, to avoid a circular dependency, as
8166 ;; ruby-aruba depends on ruby-cucumber.
8167 ("ruby-aruba" ,ruby-aruba-without-tests)
8168 ("ruby-rspec" ,ruby-rspec)
8169 ("ruby-pry" ,ruby-pry)
8170 ("ruby-nokogiri" ,ruby-nokogiri)
8171 ("ruby-rubocop" ,ruby-rubocop)))
8172 (synopsis "Describe automated tests in plain language")
8173 (description "Cucumber is a tool for running automated tests written in
8174 plain language. It's designed to support a Behaviour Driven Development (BDD)
8175 software development workflow.")
8176 (home-page "https://cucumber.io/")
8177 (license license:expat)))
8178
8179 (define ruby-cucumber-without-tests
8180 (package (inherit ruby-cucumber)
8181 (arguments
8182 '(#:tests? #f))
8183 (native-inputs
8184 '())))
8185
8186 (define-public ruby-coveralls
8187 (package
8188 (name "ruby-coveralls")
8189 (version "0.8.23")
8190 (source
8191 (origin
8192 (method url-fetch)
8193 (uri (rubygems-uri "coveralls" version))
8194 (sha256
8195 (base32
8196 "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc"))))
8197 (build-system ruby-build-system)
8198 ;; The test suite depends on ruby-vcr, which cannot be included in Guix
8199 ;; because of its nonfree, Hippocratic-derived license.
8200 (arguments
8201 `(#:tests? #f
8202 #:phases (modify-phases %standard-phases
8203 (add-after 'extract-gemspec 'strip-version-requirements
8204 ;; Keeping strict version requirements can cause problems
8205 ;; to users of the library, such as: Gem::ConflictError:
8206 ;; Unable to activate coveralls-0.8.23, because
8207 ;; simplecov-0.17.1 conflicts with simplecov (~> 0.16.1).
8208 (lambda _
8209 (substitute* "coveralls-ruby.gemspec"
8210 (("(.*add_.*dependency\\([^,]+), .*" _ stripped)
8211 (string-append stripped ")\n")))
8212 #t)))))
8213 (propagated-inputs
8214 `(("ruby-json" ,ruby-json)
8215 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
8216 ("ruby-thor" ,ruby-thor)
8217 ("ruby-tins" ,ruby-tins)))
8218 (synopsis "Ruby implementation of the Coveralls API")
8219 (description "This package provides a Ruby implementation of the Coveralls
8220 API.")
8221 (home-page "https://coveralls.io")
8222 (license license:expat)))
8223
8224 (define-public ruby-unindent
8225 (package
8226 (name "ruby-unindent")
8227 (version "1.0")
8228 (source
8229 (origin
8230 (method url-fetch)
8231 (uri (rubygems-uri "unindent" version))
8232 (sha256
8233 (base32
8234 "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd"))))
8235 (build-system ruby-build-system)
8236 (synopsis "Ruby method to unindent strings")
8237 (description "This module provides a @code{String#unindent} Ruby method to
8238 unindent strings, which can be useful to unindent multiline strings embedded
8239 in already-indented code.")
8240 (home-page "https://github.com/mynyml/unindent")
8241 (license license:expat)))
8242
8243 (define-public ruby-cucumber-core
8244 (package
8245 (name "ruby-cucumber-core")
8246 (version "7.1.0")
8247 (source
8248 (origin
8249 (method git-fetch)
8250 (uri (git-reference
8251 (url "https://github.com/cucumber/cucumber-ruby-core")
8252 (commit (string-append "v" version))))
8253 (file-name (git-file-name name version))
8254 (sha256
8255 (base32
8256 "1p5wb6wbggbw37ariyag4kxpiczznvgm3c8cnz1744dmbj79q1rn"))))
8257 (build-system ruby-build-system)
8258 (arguments
8259 `(#:test-target "spec"
8260 #:phases
8261 (modify-phases %standard-phases
8262 (add-after 'extract-gemspec 'relax-version-requirements
8263 (lambda _
8264 (substitute* "cucumber-core.gemspec"
8265 (("'cucumber-tag-expressions',.*")
8266 "'cucumber-tag-expressions', '>=2.0.0'\n"))
8267 #t)))))
8268 (native-inputs
8269 `(("ruby-rspec" ,ruby-rspec)
8270 ("ruby-coveralls" ,ruby-coveralls)
8271 ("ruby-rubocop" ,ruby-rubocop)
8272 ("ruby-simplecov" ,ruby-simplecov)
8273 ("ruby-unindent" ,ruby-unindent)))
8274 (propagated-inputs
8275 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
8276 ("ruby-gherkin" ,ruby-gherkin)
8277 ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
8278 (synopsis "Core library for the Cucumber BDD app")
8279 (description "Cucumber is a tool for running automated tests
8280 written in plain language. Because they're written in plain language,
8281 they can be read by anyone on your team. Because they can be read by
8282 anyone, you can use them to help improve communication, collaboration
8283 and trust on your team.")
8284 (home-page "https://cucumber.io/")
8285 (license license:expat)))
8286
8287 (define-public ruby-cucumber-expressions
8288 (package
8289 (name "ruby-cucumber-expressions")
8290 (version "10.2.0")
8291 (source
8292 (origin
8293 (method git-fetch)
8294 (uri (git-reference
8295 (url "https://github.com/cucumber/cucumber-expressions-ruby")
8296 (commit (string-append "v" version))))
8297 (file-name (git-file-name name version))
8298 (sha256
8299 (base32
8300 "1aivhcpjrmbvp9bg0y7g6zxh2swfvylvg0sapq5jc4i1y74k8npd"))))
8301 (build-system ruby-build-system)
8302 (arguments
8303 '(#:test-target "spec"))
8304 (native-inputs
8305 `(("ruby-rspec" ,ruby-rspec)
8306 ("ruby-simplecov" ,ruby-simplecov)))
8307 (synopsis "Simpler alternative to Regular Expressions")
8308 (description "Cucumber Expressions offer similar functionality to Regular
8309 Expressions, with a syntax that is easier to read and write. Cucumber
8310 Expressions are extensible with parameter types.")
8311 (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
8312 (license license:expat)))
8313
8314 (define-public ruby-cucumber-wire
8315 (package
8316 (name "ruby-cucumber-wire")
8317 (version "3.1.0")
8318 (source
8319 (origin
8320 (method url-fetch)
8321 (uri (rubygems-uri "cucumber-wire" version))
8322 (sha256
8323 (base32
8324 "0z1n13lqv70zb2lcrvs2263lm0gsb3gz8gbv890kxzwp8cvd433k"))))
8325 (build-system ruby-build-system)
8326 (arguments
8327 '(#:tests? #f ;tests use cucumber, causing a cycle
8328 #:phases
8329 (modify-phases %standard-phases
8330 (add-after 'extract-gemspec 'relax-version-requirements
8331 (lambda _
8332 (substitute* ".gemspec"
8333 ((" 10\\.1") " 10.2"))
8334 #t)))))
8335 (propagated-inputs
8336 `(("ruby-cucumber-core" ,ruby-cucumber-core)
8337 ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
8338 ("ruby-cucumber-messages" ,ruby-cucumber-messages)))
8339 (synopsis "Cucumber wire protocol plugin")
8340 (description "Cucumber's wire protocol allows step definitions to be
8341 implemented and invoked on any platform.")
8342 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
8343 (license license:expat)))
8344
8345 (define-public ruby-cucumber-tag-expressions
8346 (package
8347 (name "ruby-cucumber-tag-expressions")
8348 (version "3.0.0")
8349 (source
8350 (origin
8351 (method git-fetch)
8352 (uri (git-reference
8353 (url "https://github.com/cucumber/tag-expressions-ruby")
8354 (commit (string-append "v" version))))
8355 (file-name (git-file-name name version))
8356 (sha256
8357 (base32
8358 "15dw4w0npd4m6aw7zhqkjxxzngp42kswrkwfygxkxcxnhy5zl1vx"))))
8359 (build-system ruby-build-system)
8360 (arguments
8361 `(#:test-target "spec"))
8362 (native-inputs
8363 `(("ruby-rspec" ,ruby-rspec)))
8364 (synopsis "Cucumber tag expressions for Ruby")
8365 (description "Cucumber tag expression parser for Ruby. A tag expression
8366 is an infix boolean expression used by Cucumber.")
8367 (home-page "https://github.com/cucumber/tag-expressions-ruby")
8368 (license license:expat)))
8369
8370 (define-public ruby-bindex
8371 (package
8372 (name "ruby-bindex")
8373 (version "0.5.0")
8374 (source
8375 (origin
8376 (method url-fetch)
8377 (uri (rubygems-uri "bindex" version))
8378 (sha256
8379 (base32
8380 "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
8381 (build-system ruby-build-system)
8382 (arguments
8383 '(#:test-target "default"))
8384 (native-inputs
8385 `(("bundler" ,bundler)
8386 ("ruby-rake-compiler" ,ruby-rake-compiler)))
8387 (synopsis "Provides access for bindings relating to Ruby exceptions")
8388 (description
8389 "@code{bindex} provides a way to access the bindings that relate to
8390 exceptions in Ruby, providing more information about the context in which the
8391 exception occurred.")
8392 (home-page "https://github.com/gsamokovarov/bindex")
8393 (license license:expat)))
8394
8395 (define-public ruby-bio-logger
8396 (package
8397 (name "ruby-bio-logger")
8398 (version "1.0.1")
8399 (source
8400 (origin
8401 (method url-fetch)
8402 (uri (rubygems-uri "bio-logger" version))
8403 (sha256
8404 (base32
8405 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
8406 (build-system ruby-build-system)
8407 (arguments
8408 `(#:tests? #f)) ; rake errors, missing shoulda
8409 (propagated-inputs
8410 `(("ruby-log4r" ,ruby-log4r)))
8411 (synopsis "Log4r wrapper for Ruby")
8412 (description "Bio-logger is a wrapper around Log4r adding extra logging
8413 features such as filtering and fine grained logging.")
8414 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
8415 (license license:expat)))
8416
8417 (define-public ruby-yajl-ruby
8418 (package
8419 (name "ruby-yajl-ruby")
8420 (version "1.4.1")
8421 (source
8422 (origin
8423 (method url-fetch)
8424 (uri (rubygems-uri "yajl-ruby" version))
8425 (sha256
8426 (base32
8427 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
8428 (build-system ruby-build-system)
8429 (arguments
8430 '(#:test-target "spec"
8431 #:phases
8432 (modify-phases %standard-phases
8433 (add-before 'check 'patch-test-to-update-load-path
8434 (lambda _
8435 (substitute* "spec/parsing/large_number_spec.rb"
8436 (("require \"yajl\"")
8437 "$LOAD_PATH << 'lib'; require 'yajl'"))
8438 #t)))))
8439 (native-inputs
8440 `(("ruby-rake-compiler" ,ruby-rake-compiler)
8441 ("ruby-rspec" ,ruby-rspec)))
8442 (synopsis "Streaming JSON parsing and encoding library for Ruby")
8443 (description
8444 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
8445 is compatible with the JSON gem, so yajl-ruby can act as a drop in
8446 replacement.
8447
8448 A modified copy of yajl is used, and included in the package.")
8449 (home-page "https://github.com/brianmario/yajl-ruby")
8450 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
8451 license:bsd-3)))) ; Included, modified copy of yajl
8452
8453 (define-public ruby-yard
8454 (package
8455 (name "ruby-yard")
8456 (version "0.9.25")
8457 (source
8458 (origin
8459 (method git-fetch)
8460 ;; Tests do not pass if we build from the distributed gem.
8461 (uri (git-reference
8462 (url "https://github.com/lsegal/yard")
8463 (commit (string-append "v" version))))
8464 (file-name (git-file-name name version))
8465 (sha256
8466 (base32
8467 "1x7y4s557hrnq439lih7nqg1y7ximardw75jx9i92x3yzpviqqwa"))))
8468 (build-system ruby-build-system)
8469 (arguments
8470 ;; Note: Tests are willfully disabled to alleviate dependency cycle
8471 ;; problems.
8472 `(#:tests? #f
8473 #:phases (modify-phases %standard-phases
8474 (add-after 'unpack 'do-not-set-date-in-gemspec
8475 ;; Fix a reproducibility issue (see:
8476 ;; https://github.com/lsegal/yard/issues/1343).
8477 (lambda _
8478 (substitute* "yard.gemspec"
8479 ((".*s\\.date.*") ""))
8480 #t)))))
8481 (synopsis "Documentation generation tool for Ruby")
8482 (description "YARD is a documentation generation tool for the Ruby
8483 programming language. It enables the user to generate consistent, usable
8484 documentation that can be exported to a number of formats very easily, and
8485 also supports extending for custom Ruby constructs such as custom class level
8486 definitions.")
8487 (home-page "https://yardoc.org")
8488 (license license:expat)))
8489
8490 (define-public ruby-yard-with-tests
8491 (package
8492 (inherit ruby-yard)
8493 (name "ruby-yard-with-tests")
8494 (arguments
8495 (substitute-keyword-arguments (package-arguments ruby-yard)
8496 ((#:tests? _ #t) #t)
8497 ((#:test-target _ "default") "default")
8498 ((#:phases phases '%standard-phases)
8499 `(modify-phases ,phases
8500 (add-before 'check 'prepare-for-tests
8501 (lambda* (#:key tests? #:allow-other-keys)
8502 (when tests?
8503 (substitute* "Rakefile"
8504 ((".*[Ss]amus.*") ""))
8505 ;; Delete the Gemfile to avoid errors relating to it.
8506 (delete-file "Gemfile")
8507 ;; $HOME needs to be set to somewhere writeable for tests to
8508 ;; run.
8509 (setenv "HOME" "/tmp"))
8510 #t))))))
8511 (native-inputs
8512 `(("ruby-rspec" ,ruby-rspec)
8513 ("ruby-rack" ,ruby-rack)
8514 ("ruby-redcloth" ,ruby-redcloth)
8515 ("ruby-asciidoc" ,ruby-asciidoctor)))))
8516
8517 (define-public ruby-spectroscope
8518 (package
8519 (name "ruby-spectroscope")
8520 (version "0.1.0")
8521 (source
8522 (origin
8523 (method url-fetch)
8524 (uri (rubygems-uri "spectroscope" version))
8525 (sha256
8526 (base32
8527 "0iiid9sm110qhx0i1zkds710cvsnmhd308wbqa7slkzbq2akrb3y"))))
8528 (build-system ruby-build-system)
8529 (arguments
8530 `(#:phases
8531 (modify-phases %standard-phases
8532 (replace 'check
8533 (lambda _
8534 (with-output-to-file ".test"
8535 (lambda _
8536 (display
8537 "\
8538 require 'ae/should'
8539 require 'rspec'
8540
8541 include RSpec
8542
8543 Test.run :default do |run|
8544 run.files << 'spec/*_spec.rb'
8545 end")))
8546 (invoke "ruby" "-Ilib" "-rrubytest" ".test"))))))
8547 (native-inputs
8548 `(("ruby-ae" ,ruby-ae)
8549 ("ruby-rspec" ,ruby-rspec)))
8550 (propagated-inputs
8551 `(("ruby-rubytest" ,ruby-rubytest)))
8552 (synopsis "Behavior-Driven Development (BDD) framework built on RubyTest")
8553 (description "Spectroscope is a Behavior-Driven Development (BDD)
8554 framework built on RubyTest, designed to emulate RSpec in most respects. It
8555 is assertion framework independent so any number of assertion systems can be
8556 used, such as Assay or AE.")
8557 (home-page "http://rubyworks.github.com/spectroscope/")
8558 (license license:bsd-2)))
8559
8560 (define-public ruby-tomparse
8561 (package
8562 (name "ruby-tomparse")
8563 (version "0.4.2")
8564 (source
8565 (origin
8566 (method url-fetch)
8567 (uri (rubygems-uri "tomparse" version))
8568 (sha256
8569 (base32
8570 "06xakk41f1kgj6j1ahkwn4r6cvidixvm4phhlrvmwb7c3pr8ygc8"))))
8571 (build-system ruby-build-system)
8572 ;; TODO: Tests require citron and rulebow, not yet packaged.
8573 (arguments '(#:tests? #f))
8574 (synopsis "TomDoc parser for Ruby")
8575 (description "TomParse is a TomDoc parser for Ruby. It takes a code
8576 comment as input and parses it into a convenient object-oriented structure in
8577 accordance with the TomDoc standard. See
8578 @url{https://github.com/mojombo/tomdoc, TomDoc} for more information about the
8579 TomDoc format.")
8580 (home-page "http://rubyworks.github.com/tomparse/")
8581 (license license:bsd-2)))
8582
8583 (define-public ruby-yard-tomdoc
8584 (package
8585 (name "ruby-yard-tomdoc")
8586 (version "0.7.1")
8587 (source
8588 (origin
8589 (method url-fetch)
8590 (uri (rubygems-uri "yard-tomdoc" version))
8591 (sha256
8592 (base32
8593 "1725gs8b8klpwhrvnf2wwp7dw3zxs9vz2la983l2d8c4r4fn1j2z"))))
8594 (build-system ruby-build-system)
8595 (arguments
8596 `(#:phases (modify-phases %standard-phases
8597 (replace 'check
8598 (lambda _
8599 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
8600 (native-inputs
8601 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
8602 ("ruby-spectroscope" ,ruby-spectroscope)
8603 ("ruby-ae" ,ruby-ae)))
8604 (propagated-inputs
8605 `(("ruby-tomparse" ,ruby-tomparse)
8606 ("ruby-yard" ,ruby-yard)))
8607 (synopsis "TomDoc syntax for YARD")
8608 (description "This module adds support for the TomDoc documentation format
8609 to YARD, a documentation generation tool for Ruby.")
8610 (home-page "http://rubyworks.github.com/yard-tomdoc/")
8611 (license license:expat)))
8612
8613 (define-public ruby-clap
8614 (package
8615 (name "ruby-clap")
8616 (version "1.0.0")
8617 (source (origin
8618 (method url-fetch)
8619 (uri (rubygems-uri "clap" version))
8620 (sha256
8621 (base32
8622 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
8623 (build-system ruby-build-system)
8624 ;; Clap needs cutest for running tests, but cutest needs clap.
8625 (arguments `(#:tests? #f))
8626 (synopsis "Command line argument parsing for simple applications")
8627 (description
8628 "Clap provides command line argument parsing features. It covers the
8629 simple case of executing code based on the flags or parameters passed.")
8630 (home-page "https://github.com/djanowski/cutest")
8631 (license license:expat)))
8632
8633 (define-public ruby-cutest
8634 (package
8635 (name "ruby-cutest")
8636 (version "1.2.2")
8637 (source (origin
8638 (method url-fetch)
8639 (uri (rubygems-uri "cutest" version))
8640 (sha256
8641 (base32
8642 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
8643 (build-system ruby-build-system)
8644 (propagated-inputs
8645 `(("ruby-clap" ,ruby-clap)))
8646 (synopsis "Run tests in separate processes")
8647 (description
8648 "Cutest runs tests in separate processes to avoid shared state.")
8649 (home-page "https://github.com/djanowski/cutest")
8650 (license license:expat)))
8651
8652 (define-public ruby-pygmentize
8653 (package
8654 (name "ruby-pygmentize")
8655 (version "0.0.3")
8656 (source (origin
8657 (method url-fetch)
8658 (uri (rubygems-uri "pygmentize" version))
8659 (sha256
8660 (base32
8661 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
8662 (build-system ruby-build-system)
8663 (arguments
8664 `(#:phases
8665 (modify-phases %standard-phases
8666 (add-after 'unpack 'fix-pygmentize-path
8667 (lambda _
8668 (substitute* "lib/pygmentize.rb"
8669 (("\"/usr/bin/env python.*")
8670 (string-append "\"" (which "pygmentize") "\"\n")))
8671 #t))
8672 (add-after 'build 'do-not-use-vendor-directory
8673 (lambda _
8674 ;; Remove bundled pygments sources
8675 ;; FIXME: ruby-build-system does not support snippets.
8676 (delete-file-recursively "vendor")
8677 (substitute* "pygmentize.gemspec"
8678 (("\"vendor/\\*\\*/\\*\",") ""))
8679 #t)))))
8680 (inputs
8681 `(("pygments" ,python-pygments)))
8682 (native-inputs
8683 `(("ruby-cutest" ,ruby-cutest)
8684 ("ruby-nokogiri" ,ruby-nokogiri)))
8685 (synopsis "Thin Ruby wrapper around pygmentize")
8686 (description
8687 "Pygmentize provides a simple way to call pygmentize from within a Ruby
8688 application.")
8689 (home-page "https://github.com/djanowski/pygmentize")
8690 (license license:expat)))
8691
8692 (define-public ruby-eventmachine
8693 (package
8694 (name "ruby-eventmachine")
8695 (version "1.2.7")
8696 (source
8697 (origin
8698 (method url-fetch)
8699 (uri (rubygems-uri "eventmachine" version))
8700 (sha256
8701 (base32
8702 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
8703 (build-system ruby-build-system)
8704 (arguments
8705 '(#:tests? #f)) ; test suite tries to connect to google.com
8706 (native-inputs
8707 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
8708 (synopsis "Single-threaded network event framework for Ruby")
8709 (description
8710 "EventMachine implements a single-threaded engine for arbitrary network
8711 communications. EventMachine wraps all interactions with sockets, allowing
8712 programs to concentrate on the implementation of network protocols. It can be
8713 used to create both network servers and clients.")
8714 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
8715 (home-page "https://github.com/eventmachine/eventmachine")
8716 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
8717
8718 (define-public ruby-ruby-engine
8719 (package
8720 (name "ruby-ruby-engine")
8721 (version "2.0.0")
8722 (source
8723 (origin
8724 (method url-fetch)
8725 (uri (rubygems-uri "ruby_engine" version))
8726 (sha256
8727 (base32
8728 "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm"))))
8729 (build-system ruby-build-system)
8730 (arguments
8731 `(#:phases
8732 (modify-phases %standard-phases
8733 (add-after 'extract-gemspec 'clean-up
8734 (lambda _
8735 (delete-file "Gemfile.lock")
8736 (substitute* "ruby_engine.gemspec"
8737 ;; Remove unnecessary imports that would entail further
8738 ;; dependencies.
8739 ((".*<rdoc.*") "")
8740 ((".*<rubygems-tasks.*") "")
8741 ;; Remove extraneous .gem file
8742 (("\"pkg/ruby_engine-[0-9.]+\\.gem\".freeze, ") "")
8743 (("\"Gemfile.lock\".freeze, ") "")
8744 ;; Soften rake dependency
8745 (("%q<rake>.freeze, \\[\"~> 10.0\"\\]")
8746 "%q<rake>.freeze, [\">= 10.0\"]")
8747 ;; Soften the rspec dependency
8748 (("%q<rspec>.freeze, \\[\"~> 2.4\"\\]")
8749 "%q<rspec>.freeze, [\">= 2.4\"]"))
8750 (substitute* "Rakefile"
8751 (("require 'rubygems/tasks'") "")
8752 (("Gem::Tasks.new") ""))
8753 ;; Remove extraneous .gem file that otherwise gets installed.
8754 (delete-file-recursively "pkg")
8755 #t)))))
8756 (native-inputs
8757 `(("bundler" ,bundler)
8758 ("ruby-rake" ,ruby-rake)
8759 ("ruby-rspec" ,ruby-rspec)))
8760 (synopsis "Simplifies checking for Ruby implementation")
8761 (description
8762 "@code{ruby_engine} provides an RubyEngine class that can be used to
8763 check which implementation of Ruby is in use. It can provide the interpreter
8764 name and provides query methods such as @{RubyEngine.mri?}.")
8765 (home-page "https://github.com/janlelis/ruby_engine")
8766 (license license:expat)))
8767
8768 (define-public ruby-turn
8769 (package
8770 (name "ruby-turn")
8771 (version "0.9.7")
8772 (source
8773 (origin
8774 (method url-fetch)
8775 (uri (rubygems-uri "turn" version))
8776 (sha256
8777 (base32
8778 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
8779 (build-system ruby-build-system)
8780 (arguments
8781 `(#:phases
8782 (modify-phases %standard-phases
8783 ;; Tests fail because turn changes its environment so can no longer
8784 ;; find test/unit. Instead simply test if the executable runs
8785 ;; without issue.
8786 (replace 'check
8787 (lambda _
8788 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
8789 (propagated-inputs
8790 `(("ruby-ansi" ,ruby-ansi)
8791 ("ruby-minitest" ,ruby-minitest-4)))
8792 (synopsis "Alternate set of alternative runners for MiniTest")
8793 (description
8794 "TURN provides a set of alternative runners for MiniTest which are both
8795 colorful and informative. TURN displays each test on a separate line with
8796 failures being displayed immediately instead of at the end of the tests. Note
8797 that TURN is no longer being maintained.")
8798 (home-page "https://rubygems.org/gems/turn")
8799 (license license:expat)))
8800
8801 (define-public ruby-mimemagic
8802 (package
8803 (name "ruby-mimemagic")
8804 (version "0.3.3")
8805 (source
8806 (origin
8807 (method url-fetch)
8808 (uri (rubygems-uri "mimemagic" version))
8809 (sha256
8810 (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw"))))
8811 (build-system ruby-build-system)
8812 (arguments
8813 '(#:phases
8814 (modify-phases %standard-phases
8815 ;; This phase breaks the tests, as it patches some of the test data.
8816 (delete 'patch-source-shebangs))))
8817 (native-inputs
8818 `(("ruby-bacon" ,ruby-bacon)))
8819 (synopsis "Ruby library for MIME detection by extension or content")
8820 (description
8821 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
8822 extension or content, using the freedesktop.org.xml shared-mime-info
8823 database.")
8824 (home-page "https://github.com/minad/mimemagic")
8825 (license license:expat)))
8826
8827 (define-public ruby-mime-types-data
8828 (package
8829 (name "ruby-mime-types-data")
8830 (version "3.2016.0521")
8831 (source
8832 (origin
8833 (method url-fetch)
8834 (uri (rubygems-uri "mime-types-data" version))
8835 (sha256
8836 (base32
8837 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
8838 (build-system ruby-build-system)
8839 (native-inputs
8840 `(("ruby-hoe" ,ruby-hoe)))
8841 (synopsis "Registry for information about MIME media type definitions")
8842 (description
8843 "@code{mime-types-data} provides a registry for information about
8844 Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
8845 be used with the Ruby mime-types library or other software to determine
8846 defined filename extensions for MIME types, or to use filename extensions to
8847 look up the likely MIME type definitions.")
8848 (home-page "https://github.com/mime-types/mime-types-data/")
8849 (license license:expat)))
8850
8851 (define-public ruby-mime-types
8852 (package
8853 (name "ruby-mime-types")
8854 (version "3.1")
8855 (source
8856 (origin
8857 (method url-fetch)
8858 (uri (rubygems-uri "mime-types" version))
8859 (sha256
8860 (base32
8861 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
8862 (build-system ruby-build-system)
8863 (propagated-inputs
8864 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
8865 (native-inputs
8866 `(("ruby-hoe" ,ruby-hoe)
8867 ("ruby-fivemat" ,ruby-fivemat)
8868 ("ruby-minitest-focus" ,ruby-minitest-focus)
8869 ("ruby-minitest-rg" ,ruby-minitest-rg)
8870 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
8871 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
8872 (synopsis "Library and registry for MIME content type definitions")
8873 (description "The mime-types library provides a library and registry for
8874 information about Multipurpose Internet Mail Extensions (MIME) content type
8875 definitions. It can be used to determine defined filename extensions for MIME
8876 types, or to use filename extensions to look up the likely MIME type
8877 definitions.")
8878 (home-page "https://github.com/mime-types/ruby-mime-types")
8879 (license license:expat)))
8880
8881 (define-public ruby-mini-mime
8882 (package
8883 (name "ruby-mini-mime")
8884 (version "1.0.2")
8885 (source
8886 (origin
8887 (method url-fetch)
8888 (uri (rubygems-uri "mini_mime" version))
8889 (sha256
8890 (base32
8891 "1axm0rxyx3ss93wbmfkm78a6x03l8y4qy60rhkkiq0aza0vwq3ha"))))
8892 (build-system ruby-build-system)
8893 (synopsis "Lightweight mime type lookup toy")
8894 (description "This package provides a lightweight mime type lookup toy.")
8895 (home-page "https://github.com/discourse/mini_mime")
8896 (license license:expat)))
8897
8898 (define-public ruby-fivemat
8899 (package
8900 (name "ruby-fivemat")
8901 (version "1.3.7")
8902 (source
8903 (origin
8904 (method url-fetch)
8905 (uri (rubygems-uri "fivemat" version))
8906 (sha256
8907 (base32
8908 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
8909 (build-system ruby-build-system)
8910 (arguments
8911 `(#:tests? #f)) ; no tests
8912 (synopsis "Each test file given its own line of dots")
8913 (description
8914 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
8915 its own line of dots during testing. It aims to provide test output that is
8916 neither too verbose nor too minimal.")
8917 (home-page "https://github.com/tpope/fivemat")
8918 (license license:expat)))
8919
8920 (define-public ruby-sqlite3
8921 (package
8922 (name "ruby-sqlite3")
8923 (version "1.4.2")
8924 (source
8925 (origin
8926 (method url-fetch)
8927 (uri (rubygems-uri "sqlite3" version))
8928 (sha256
8929 (base32
8930 "0lja01cp9xd5m6vmx99zwn4r7s97r1w5cb76gqd8xhbm1wxyzf78"))))
8931 (build-system ruby-build-system)
8932 (arguments
8933 `(#:phases
8934 (modify-phases %standard-phases
8935 (add-before 'check 'add-gemtest-file
8936 ;; This file exists in the repository but is not distributed.
8937 (lambda _ (invoke "touch" ".gemtest"))))))
8938 (inputs
8939 `(("sqlite" ,sqlite)))
8940 (native-inputs
8941 `(("ruby-hoe" ,ruby-hoe)
8942 ("ruby-rake-compiler" ,ruby-rake-compiler)
8943 ("ruby-mini-portile" ,ruby-mini-portile)))
8944 (synopsis "Interface with SQLite3 databases")
8945 (description
8946 "This module allows Ruby programs to interface with the SQLite3 database
8947 engine.")
8948 (home-page
8949 "https://github.com/sparklemotion/sqlite3-ruby")
8950 (license license:bsd-3)))
8951
8952 (define-public ruby-shoulda-context
8953 (package
8954 (name "ruby-shoulda-context")
8955 (version "1.2.2")
8956 (source
8957 (origin
8958 (method url-fetch)
8959 (uri (rubygems-uri "shoulda-context" version))
8960 (sha256
8961 (base32
8962 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
8963 (build-system ruby-build-system)
8964 (arguments
8965 `(#:phases
8966 (modify-phases %standard-phases
8967 (replace 'check
8968 (lambda _
8969 ;; Do not run tests to avoid circular dependence with rails.
8970 ;; Instead just import the library to test.
8971 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
8972 (synopsis "Test::Unit context framework extracted from Shoulda")
8973 (description
8974 "@code{shoulda-context} is the context framework extracted from Shoulda.
8975 Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
8976 context, setup, and should blocks combine to produce natural test method
8977 names.")
8978 (home-page "https://github.com/thoughtbot/shoulda-context")
8979 (license license:expat)))
8980
8981 (define-public ruby-shoulda-matchers
8982 (package
8983 (name "ruby-shoulda-matchers")
8984 (version "3.1.2")
8985 (source
8986 (origin
8987 (method url-fetch)
8988 (uri (rubygems-uri "shoulda-matchers" version))
8989 (sha256
8990 (base32
8991 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
8992 (build-system ruby-build-system)
8993 (arguments
8994 `(#:phases
8995 (modify-phases %standard-phases
8996 (replace 'check
8997 (lambda _
8998 ;; Do not run tests to avoid circular dependence with rails. Instead
8999 ;; just import the library to test.
9000 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
9001 (propagated-inputs
9002 `(("ruby-activesupport" ,ruby-activesupport)))
9003 (synopsis "Collection of testing matchers extracted from Shoulda")
9004 (description
9005 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
9006 test common Rails functionality. These tests would otherwise be much longer,
9007 more complex, and error-prone.")
9008 (home-page "https://github.com/thoughtbot/shoulda-matchers")
9009 (license license:expat)))
9010
9011 (define-public ruby-shoulda-matchers-2
9012 (package
9013 (inherit ruby-shoulda-matchers)
9014 (version "2.8.0")
9015 (source (origin
9016 (method url-fetch)
9017 (uri (rubygems-uri "shoulda-matchers" version))
9018 (sha256
9019 (base32
9020 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
9021
9022 (define-public ruby-shoulda
9023 (package
9024 (name "ruby-shoulda")
9025 (version "3.5.0")
9026 (source
9027 (origin
9028 (method url-fetch)
9029 (uri (rubygems-uri "shoulda" version))
9030 (sha256
9031 (base32
9032 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
9033 (build-system ruby-build-system)
9034 (arguments
9035 `(#:phases
9036 (modify-phases %standard-phases
9037 (replace 'check
9038 ;; Don't run tests to avoid circular dependence with rails. Instead
9039 ;; just import the library to test.
9040 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
9041 (propagated-inputs
9042 `(("ruby-shoulda-context" ,ruby-shoulda-context)
9043 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
9044 (synopsis "Context framework and matchers for testing")
9045 (description
9046 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
9047 @code{shoulda-matchers} providing tools for writing tests.")
9048 (home-page "https://github.com/thoughtbot/shoulda")
9049 (license license:expat)))
9050
9051 (define-public ruby-unf
9052 (package
9053 (name "ruby-unf")
9054 (version "0.1.4")
9055 (source
9056 (origin
9057 (method url-fetch)
9058 (uri (rubygems-uri "unf" version))
9059 (sha256
9060 (base32
9061 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
9062 (build-system ruby-build-system)
9063 (arguments
9064 `(#:phases
9065 (modify-phases %standard-phases
9066 (add-before 'check 'add-dependency-to-bundler
9067 (lambda _
9068 ;; test-unit is required but not provided by the bundler
9069 ;; environment. This is fixed in the upstream repository but fix
9070 ;; has not been released.
9071 (substitute* "Gemfile"
9072 (("^gemspec") "gem 'test-unit'\ngemspec"))
9073 #t)))))
9074 (propagated-inputs
9075 `(("ruby-unf-ext" ,ruby-unf-ext)))
9076 (native-inputs
9077 `(("ruby-shoulda" ,ruby-shoulda)
9078 ("bundler" ,bundler)
9079 ("ruby-test-unit" ,ruby-test-unit)))
9080 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
9081 (description
9082 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
9083 support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
9084 @code{java.text.Normalizer} on JRuby.")
9085 (home-page "https://github.com/knu/ruby-unf")
9086 (license license:bsd-2)))
9087
9088 (define-public ruby-warden
9089 (package
9090 (name "ruby-warden")
9091 (version "1.2.8")
9092 (source
9093 (origin
9094 (method url-fetch)
9095 (uri (rubygems-uri "warden" version))
9096 (sha256
9097 (base32
9098 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
9099 (build-system ruby-build-system)
9100 (arguments
9101 '(#:tests? #f)) ; No included tests
9102 (propagated-inputs
9103 `(("ruby-rack" ,ruby-rack)))
9104 (synopsis "Rack middleware providing authentication")
9105 (description
9106 "Warden is a Rack-based middleware that provides a mechanism for
9107 authentication in Ruby web applications.")
9108 (home-page "https://github.com/wardencommunity/warden")
9109 (license license:expat)))
9110
9111 (define-public ruby-warden-oauth2
9112 (package
9113 (name "ruby-warden-oauth2")
9114 (version "0.0.1")
9115 (source
9116 (origin
9117 (method url-fetch)
9118 (uri (rubygems-uri "warden-oauth2" version))
9119 (sha256
9120 (base32
9121 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
9122 (build-system ruby-build-system)
9123 (arguments
9124 '(#:test-target "spec"
9125 #:phases
9126 (modify-phases %standard-phases
9127 (add-after 'unpack 'remove-unnecessary-dependencies
9128 (lambda _
9129 (substitute* "Gemfile"
9130 ;; All of these gems relate to development, and are unnecessary
9131 ;; when running the tests
9132 (("gem 'guard-bundler'") "")
9133 (("gem 'guard'") "")
9134 (("gem 'guard-rspec'") "")
9135 (("gem 'rb-fsevent'") "")
9136 (("gem 'pry'") "")
9137 (("gem 'growl'") ""))
9138 #t))
9139 ;; The test suite doesn't work with rspec@2, and this is incompatible
9140 ;; with the current version of Rake, so invoke Rspec directly
9141 (replace 'check
9142 (lambda* (#:key tests? #:allow-other-keys)
9143 (when tests?
9144 (invoke "bundle" "exec" "rspec"))
9145 #t)))))
9146 (propagated-inputs
9147 `(("ruby-warden" ,ruby-warden)))
9148 (native-inputs
9149 `(("bundler" ,bundler)
9150 ("ruby-rspec" ,ruby-rspec-2)
9151 ("ruby-rack-test" ,ruby-rack-test)))
9152 (synopsis "OAuth 2.0 strategies for Warden")
9153 (description
9154 "This library extends Warden to support OAuth 2.0 authorized API
9155 requests.")
9156 (home-page "https://github.com/opperator/warden-oauth2")
9157 (license license:expat)))
9158
9159 (define-public ruby-webmock
9160 (package
9161 (name "ruby-webmock")
9162 (version "3.11.2")
9163 (source
9164 (origin
9165 (method url-fetch)
9166 (uri (rubygems-uri "webmock" version))
9167 (sha256
9168 (base32
9169 "1hdlbvfw316lkz251qnfk79drmaay7l51kidvicz41nhvw12xz8v"))))
9170 (build-system ruby-build-system)
9171 (native-inputs
9172 `(("bundler" ,bundler)
9173 ("ruby-rspec" ,ruby-rspec)))
9174 (propagated-inputs
9175 `(("ruby-addressable" ,ruby-addressable)
9176 ("ruby-crack" ,ruby-crack)
9177 ("ruby-hashdiff" ,ruby-hashdiff)))
9178 (synopsis "Allows stubbing and setting expectations on HTTP requests")
9179 (description
9180 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
9181 requests. This is useful when testing software.")
9182 (home-page "https://github.com/bblimke/webmock")
9183 (license license:expat)))
9184
9185 (define-public ruby-webmock-2
9186 (package
9187 (inherit ruby-webmock)
9188 (name "ruby-webmock")
9189 (version "2.3.2")
9190 (source
9191 (origin
9192 (method url-fetch)
9193 (uri (rubygems-uri "webmock" version))
9194 (sha256
9195 (base32
9196 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))))
9197
9198 (define-public ruby-unicode-display-width
9199 (package
9200 (name "ruby-unicode-display-width")
9201 (version "1.6.0")
9202 (source
9203 (origin
9204 (method url-fetch)
9205 (uri (rubygems-uri "unicode-display_width" version))
9206 (sha256
9207 (base32
9208 "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w"))))
9209 (build-system ruby-build-system)
9210 (arguments
9211 '(;; Test data not included.
9212 #:tests? #f))
9213 (synopsis "Determine the monospace display width of Ruby strings")
9214 (description
9215 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
9216 display width of strings in Ruby.")
9217 (home-page "https://github.com/janlelis/unicode-display_width")
9218 (license license:expat)))
9219
9220 ;; There is another gem called 'ruby-version' so we use an underscore in this
9221 ;; name
9222 (define-public ruby_version
9223 (package
9224 (name "ruby_version")
9225 (version "1.0.2")
9226 (source
9227 (origin
9228 (method url-fetch)
9229 (uri (rubygems-uri "ruby_version" version))
9230 (sha256
9231 (base32
9232 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
9233 (build-system ruby-build-system)
9234 (arguments
9235 `(#:phases
9236 (modify-phases %standard-phases
9237 (add-before 'check 'fix-dependencies
9238 (lambda _
9239 ;; Remove the Gemfile.lock, as we want to use Guix packages at
9240 ;; whatever versions.
9241 (delete-file "Gemfile.lock")
9242 ;; Remove the included gem files as they unnecessary.
9243 (delete-file-recursively "pkg/")
9244 ;; Accept any version of rake, rdoc and rspec
9245 (substitute* "ruby_version.gemspec"
9246 (("%q<rake.*") "%q<rake>)\n")
9247 (("%q<rdoc.*") "%q<rdoc>)\n")
9248 (("%q<rspec.*") "%q<rspec>)\n"))
9249 ;; Do not use bundler.
9250 (substitute* "Rakefile"
9251 (("Bundler\\.setup.*") "nil\n"))
9252 #t)))))
9253 (native-inputs
9254 `(("ruby-rdoc" ,ruby-rdoc)
9255 ("ruby-rspec" ,ruby-rspec)
9256 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
9257 (synopsis "Ruby library to help check the Ruby version")
9258 (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify
9259 checking for the right Ruby version in software.")
9260 (home-page "https://github.com/janlelis/ruby_version")
9261 (license license:expat)))
9262
9263 (define-public ruby-websocket-driver
9264 (package
9265 (name "ruby-websocket-driver")
9266 (version "0.7.1")
9267 (source
9268 (origin
9269 (method url-fetch)
9270 (uri (rubygems-uri "websocket-driver" version))
9271 (sha256
9272 (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2"))))
9273 (build-system ruby-build-system)
9274 (arguments
9275 '(#:tests? #f)) ; no included tests
9276 (propagated-inputs
9277 `(("ruby-websocket-extensions" ,ruby-websocket-extensions)))
9278 (synopsis "WebSocket protocol handler with pluggable I/O")
9279 (description
9280 "@code{websocket-driver} provides a complete implementation of the
9281 WebSocket protocols that can be hooked up to any TCP library")
9282 (home-page "https://github.com/faye/websocket-driver-ruby")
9283 (license license:expat)))
9284
9285 (define-public ruby-websocket-extensions
9286 (package
9287 (name "ruby-websocket-extensions")
9288 (version "0.1.3")
9289 (source
9290 (origin
9291 (method url-fetch)
9292 (uri (rubygems-uri "websocket-extensions" version))
9293 (sha256
9294 (base32
9295 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
9296 (build-system ruby-build-system)
9297 (arguments
9298 '(;; No included tests
9299 #:tests? #f))
9300 (synopsis "Generic extension manager for WebSocket connections")
9301 (description
9302 "@code{websocket-extensions} provides a container for registering
9303 extension plugins.")
9304 (home-page "https://github.com/faye/websocket-extensions-ruby")
9305 (license license:expat)))
9306
9307 (define-public ruby-domain-name
9308 (package
9309 (name "ruby-domain-name")
9310 (version "0.5.20190701")
9311 (source
9312 (origin
9313 (method url-fetch)
9314 (uri (rubygems-uri "domain_name" version))
9315 (sha256
9316 (base32 "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0"))))
9317 (build-system ruby-build-system)
9318 (arguments
9319 `(#:phases
9320 (modify-phases %standard-phases
9321 (add-before 'check 'fix-versions
9322 (lambda _
9323 ;; Fix NameError that appears to already be fixed upstream.
9324 (substitute* "Rakefile"
9325 (("DomainName::VERSION")
9326 "Bundler::GemHelper.gemspec.version"))
9327 ;; Loosen unnecessarily strict test-unit version specification.
9328 (substitute* "domain_name.gemspec"
9329 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
9330 #t)))))
9331 (propagated-inputs
9332 `(("ruby-unf" ,ruby-unf)))
9333 (native-inputs
9334 `(("ruby-shoulda" ,ruby-shoulda)
9335 ("bundler" ,bundler)
9336 ("ruby-test-unit" ,ruby-test-unit)))
9337 (synopsis "Domain name manipulation library")
9338 (description
9339 "@code{domain_name} is a Domain name manipulation library. It parses a
9340 domain name ready for extracting the registered domain and TLD (Top Level
9341 Domain). It can also be used for cookie domain validation based on the Public
9342 Suffix List.")
9343 (home-page "https://github.com/knu/ruby-domain_name")
9344 (license license:bsd-2)))
9345
9346 (define-public ruby-http-cookie
9347 (package
9348 (name "ruby-http-cookie")
9349 (version "1.0.3")
9350 (source
9351 (origin
9352 (method url-fetch)
9353 (uri (rubygems-uri "http-cookie" version))
9354 (sha256
9355 (base32
9356 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
9357 (build-system ruby-build-system)
9358 (arguments
9359 `(#:phases
9360 (modify-phases %standard-phases
9361 (add-before 'check 'add-dependency-to-bundler
9362 (lambda _
9363 ;; Fix NameError
9364 (substitute* "Rakefile"
9365 (("HTTP::Cookie::VERSION")
9366 "Bundler::GemHelper.gemspec.version"))
9367 #t)))))
9368 (propagated-inputs
9369 `(("ruby-domain-name" ,ruby-domain-name)))
9370 (native-inputs
9371 `(("rubysimplecov" ,ruby-simplecov)
9372 ("bundler" ,bundler)
9373 ("ruby-sqlite3" ,ruby-sqlite3)
9374 ("ruby-test-unit" ,ruby-test-unit)))
9375 (synopsis "Handle HTTP Cookies based on RFC 6265")
9376 (description
9377 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
9378 RFC 6265. It has been designed with security, standards compliance and
9379 compatibility in mind, to behave just the same as today's major web browsers.
9380 It has built-in support for the legacy @code{cookies.txt} and
9381 @code{cookies.sqlite} formats of Mozilla Firefox.")
9382 (home-page "https://github.com/sparklemotion/http-cookie")
9383 (license license:expat)))
9384
9385 (define-public ruby-httpclient
9386 (package
9387 (name "ruby-httpclient")
9388 (version "2.8.3")
9389 (source
9390 (origin
9391 (method url-fetch)
9392 (uri (rubygems-uri "httpclient" version))
9393 (sha256
9394 (base32
9395 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
9396 (build-system ruby-build-system)
9397 (arguments
9398 '(;; TODO: Some tests currently fail
9399 ;; ------
9400 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
9401 ;; 2 omissions, 0 notifications
9402 ;; 91.866% passed
9403 ;; ------
9404 ;; 6.49 tests/s, 22.41 assertions/s
9405 #:tests? #f
9406 #:phases
9407 (modify-phases %standard-phases
9408 (replace 'check
9409 (lambda* (#:key tests? #:allow-other-keys)
9410 (if tests?
9411 (invoke "ruby"
9412 "-Ilib"
9413 "test/runner.rb")
9414 #t))))))
9415 (native-inputs
9416 `(("ruby-rack" ,ruby-rack)))
9417 (synopsis
9418 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
9419 (description
9420 "The @code{httpclient} ruby library provides functionality related to
9421 HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
9422 Cookie, multithreading and authentication (digest, NTLM) support.
9423
9424 Also provided is a @command{httpclient} command, which can perform HTTP
9425 requests either using arguments or with an interactive prompt.")
9426 (home-page "https://github.com/nahi/httpclient")
9427 (license license:ruby)))
9428
9429 (define-public ruby-ansi
9430 (package
9431 (name "ruby-ansi")
9432 (version "1.5.0")
9433 (source
9434 (origin
9435 (method git-fetch)
9436 ;; Fetch from GitHub as the gem does not contain testing code.
9437 (uri (git-reference
9438 (url "https://github.com/rubyworks/ansi")
9439 (commit version)))
9440 (file-name (git-file-name name version))
9441 (sha256
9442 (base32
9443 "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5"))))
9444 (build-system ruby-build-system)
9445 (arguments
9446 `(#:phases
9447 (modify-phases %standard-phases
9448 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
9449 ;; cycle ansi, qed, ansi. Instead simply test that the library can
9450 ;; be require'd.
9451 (replace 'check
9452 (lambda _
9453 (invoke "ruby" "-Ilib" "-r" "ansi")))
9454 (add-before 'validate-runpath 'replace-broken-symlink
9455 (lambda* (#:key outputs #:allow-other-keys)
9456 (let* ((out (assoc-ref outputs "out"))
9457 (file (string-append
9458 out "/lib/ruby/vendor_ruby/gems/ansi-"
9459 ,version "/lib/ansi.yml")))
9460 ;; XXX: This symlink is broken since ruby 2.4.
9461 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
9462 (delete-file file)
9463 (symlink "../.index" file)
9464 #t))))))
9465 (synopsis "ANSI escape code related libraries")
9466 (description
9467 "This package is a collection of ANSI escape code related libraries
9468 enabling ANSI colorization and stylization of console output. Included in the
9469 library are the @code{Code} module, which defines ANSI codes as constants and
9470 methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
9471 @code{ProgressBar}, and a @code{String} subclass. The library also includes a
9472 @code{Terminal} module which provides information about the current output
9473 device.")
9474 (home-page "https://rubyworks.github.io/ansi/")
9475 (license license:bsd-2)))
9476
9477 (define-public ruby-systemu
9478 (package
9479 (name "ruby-systemu")
9480 (version "2.6.5")
9481 (source
9482 (origin
9483 (method url-fetch)
9484 (uri (rubygems-uri "systemu" version))
9485 (sha256
9486 (base32
9487 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
9488 (build-system ruby-build-system)
9489 (arguments
9490 `(#:phases
9491 (modify-phases %standard-phases
9492 (add-before 'check 'set-version
9493 (lambda _
9494 (setenv "VERSION" ,version)
9495 #t)))))
9496 (synopsis "Capture of stdout/stderr and handling of child processes")
9497 (description
9498 "Systemu can be used on any platform to return status, stdout, and stderr
9499 of any command. Unlike other methods like @code{open3} and @code{popen4}
9500 there is no danger of full pipes or threading issues hanging your process or
9501 subprocess.")
9502 (home-page "https://github.com/ahoward/systemu")
9503 (license license:ruby)))
9504
9505 (define-public ruby-bio-commandeer
9506 (package
9507 (name "ruby-bio-commandeer")
9508 (version "0.4.0")
9509 (source
9510 (origin
9511 (method url-fetch)
9512 (uri (rubygems-uri "bio-commandeer" version))
9513 (sha256
9514 (base32
9515 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
9516 (build-system ruby-build-system)
9517 (arguments
9518 `(#:phases
9519 (modify-phases %standard-phases
9520 (replace 'check
9521 ;; Run test without calling 'rake' so that jeweler is
9522 ;; not required as an input.
9523 (lambda _
9524 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
9525 (propagated-inputs
9526 `(("ruby-bio-logger" ,ruby-bio-logger)
9527 ("ruby-systemu" ,ruby-systemu)))
9528 (native-inputs
9529 `(("bundler" ,bundler)
9530 ("ruby-rspec" ,ruby-rspec)))
9531 (synopsis "Simplified running of shell commands from within Ruby")
9532 (description
9533 "Bio-commandeer provides an opinionated method of running shell commands
9534 from within Ruby. The advantage of bio-commandeer over other methods of
9535 running external commands is that when something goes wrong, messages printed
9536 to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
9537 detail to ease debugging.")
9538 (home-page "https://github.com/wwood/bioruby-commandeer")
9539 (license license:expat)))
9540
9541 (define-public ruby-rubytest
9542 (package
9543 (name "ruby-rubytest")
9544 (version "0.8.1")
9545 (source
9546 (origin
9547 (method url-fetch)
9548 (uri (rubygems-uri "rubytest" version))
9549 (sha256
9550 (base32
9551 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
9552 (build-system ruby-build-system)
9553 (arguments
9554 ;; Disable regular testing to break the cycle rubytest, qed, brass,
9555 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
9556 ;; simply test that the library can be require'd.
9557 `(#:phases
9558 (modify-phases %standard-phases
9559 (replace 'check
9560 (lambda _
9561 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
9562 (propagated-inputs
9563 `(("ruby-ansi" ,ruby-ansi)))
9564 (synopsis "Universal test harness for Ruby")
9565 (description
9566 "Rubytest is a testing meta-framework for Ruby. It can handle any
9567 compliant test framework and can run tests from multiple frameworks in a
9568 single pass.")
9569 (home-page "https://rubyworks.github.io/rubytest")
9570 (license license:bsd-2)))
9571
9572 (define-public ruby-brass
9573 (package
9574 (name "ruby-brass")
9575 (version "1.2.1")
9576 (source
9577 (origin
9578 (method url-fetch)
9579 (uri (rubygems-uri "brass" version))
9580 (sha256
9581 (base32
9582 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
9583 (build-system ruby-build-system)
9584 (arguments
9585 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
9586 ;; Instead simply test that the library can be require'd.
9587 `(#:phases
9588 (modify-phases %standard-phases
9589 (replace 'check
9590 (lambda _
9591 (invoke "ruby" "-Ilib" "-r" "brass"))))))
9592 (synopsis "Basic foundational assertions framework")
9593 (description
9594 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
9595 foundational assertions framework for other assertion and test frameworks to
9596 make use of.")
9597 (home-page "https://rubyworks.github.io/brass")
9598 (license license:bsd-2)))
9599
9600 (define-public ruby-qed
9601 (package
9602 (name "ruby-qed")
9603 (version "2.9.2")
9604 (source
9605 (origin
9606 (method url-fetch)
9607 (uri (rubygems-uri "qed" version))
9608 (sha256
9609 (base32
9610 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
9611 (build-system ruby-build-system)
9612 (arguments
9613 ;; Disable testing to break the cycle qed, ansi, qed, among others.
9614 ;; Instead simply test that the executable runs using --copyright.
9615 `(#:phases
9616 (modify-phases %standard-phases
9617 (replace 'check
9618 (lambda _
9619 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
9620 (propagated-inputs
9621 `(("ruby-ansi" ,ruby-ansi)
9622 ("ruby-brass" ,ruby-brass)))
9623 (synopsis "Test framework utilizing literate programming techniques")
9624 (description
9625 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
9626 @dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
9627 Development} (BDD) utilizing Literate Programming techniques. QED sits
9628 somewhere between lower-level testing tools like @code{Test::Unit} and
9629 requirement specifications systems like Cucumber.")
9630 (home-page "https://rubyworks.github.io/qed")
9631 (license license:bsd-2)))
9632
9633 (define-public ruby-que
9634 (package
9635 (name "ruby-que")
9636 (version "1.0.0.beta3")
9637 (source
9638 (origin
9639 (method url-fetch)
9640 (uri (rubygems-uri "que" version))
9641 (sha256
9642 (base32
9643 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
9644 (build-system ruby-build-system)
9645 (arguments
9646 '(#:tests? #f)) ; No included tests
9647 (synopsis "Job queue using PostgreSQL written in Ruby")
9648 (description
9649 "This package provides a job queue that uses PostgreSQL for storing jobs
9650 and locking between worker processes.")
9651 (home-page "https://github.com/chanks/que")
9652 (license license:expat)))
9653
9654 (define-public ruby-ae
9655 (package
9656 (name "ruby-ae")
9657 (version "1.8.2")
9658 (source
9659 (origin
9660 (method git-fetch)
9661 ;; Fetch from github so tests are included.
9662 (uri (git-reference
9663 (url "https://github.com/rubyworks/ae")
9664 (commit version)))
9665 (file-name (git-file-name name version))
9666 (sha256
9667 (base32
9668 "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp"))))
9669 (build-system ruby-build-system)
9670 (arguments
9671 `(#:phases
9672 (modify-phases %standard-phases
9673 (replace 'check
9674 (lambda _ (invoke "qed")))
9675 (add-before 'validate-runpath 'replace-broken-symlink
9676 (lambda* (#:key outputs #:allow-other-keys)
9677 (let* ((out (assoc-ref outputs "out"))
9678 (file (string-append
9679 out "/lib/ruby/vendor_ruby/gems/ae-"
9680 ,version "/lib/ae.yml")))
9681 ;; XXX: This symlink is broken since ruby 2.4.
9682 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
9683 (delete-file file)
9684 (symlink "../.index" file)
9685 #t))))))
9686 (propagated-inputs
9687 `(("ruby-ansi" ,ruby-ansi)))
9688 (native-inputs
9689 `(("ruby-qed" ,ruby-qed)))
9690 (synopsis "Assertions library")
9691 (description
9692 "Assertive Expressive (AE) is an assertions library specifically designed
9693 for reuse by other test frameworks.")
9694 (home-page "https://rubyworks.github.io/ae/")
9695 (license license:bsd-2)))
9696
9697 (define-public ruby-lemon
9698 (package
9699 (name "ruby-lemon")
9700 (version "0.9.1")
9701 (source
9702 (origin
9703 (method url-fetch)
9704 (uri (rubygems-uri "lemon" version))
9705 (sha256
9706 (base32
9707 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
9708 (build-system ruby-build-system)
9709 (arguments
9710 `(#:phases
9711 (modify-phases %standard-phases
9712 (replace 'check (lambda _ (invoke "qed"))))))
9713 (propagated-inputs
9714 `(("ruby-ae" ,ruby-ae)
9715 ("ruby-ansi" ,ruby-ansi)
9716 ("ruby-rubytest" ,ruby-rubytest)))
9717 (native-inputs
9718 `(("ruby-qed" ,ruby-qed)))
9719 (synopsis "Test framework correlating code structure and test unit")
9720 (description
9721 "Lemon is a unit testing framework that enforces highly formal
9722 case-to-class and unit-to-method test construction. This enforcement can help
9723 focus concern on individual units of behavior.")
9724 (home-page "https://rubyworks.github.io/lemon")
9725 (license license:bsd-2)))
9726
9727 (define-public ruby-rubytest-cli
9728 (package
9729 (name "ruby-rubytest-cli")
9730 (version "0.2.0")
9731 (source
9732 (origin
9733 (method url-fetch)
9734 (uri (rubygems-uri "rubytest-cli" version))
9735 (sha256
9736 (base32
9737 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
9738 (build-system ruby-build-system)
9739 (arguments
9740 `(#:tests? #f)) ; no tests
9741 (propagated-inputs
9742 `(("ruby-ansi" ,ruby-ansi)
9743 ("ruby-rubytest" ,ruby-rubytest)))
9744 (synopsis "Command-line interface for rubytest")
9745 (description
9746 "Rubytest CLI is a command-line interface for running tests for
9747 Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
9748 (home-page "https://rubyworks.github.io/rubytest-cli")
9749 (license license:bsd-2)))
9750
9751 (define-public ruby-hashery
9752 (package
9753 (name "ruby-hashery")
9754 (version "2.1.2")
9755 (source
9756 (origin
9757 (method url-fetch)
9758 (uri (rubygems-uri "hashery" version))
9759 (sha256
9760 (base32
9761 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
9762 (build-system ruby-build-system)
9763 (arguments
9764 `(#:phases
9765 (modify-phases %standard-phases
9766 (replace 'check
9767 (lambda _
9768 (invoke "qed")
9769 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
9770 (native-inputs
9771 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
9772 ("ruby-qed" ,ruby-qed)
9773 ("ruby-lemon" ,ruby-lemon)))
9774 (synopsis "Hash-like classes with extra features")
9775 (description
9776 "The Hashery is a tight collection of @code{Hash}-like classes.
9777 Included are the auto-sorting @code{Dictionary} class, the efficient
9778 @code{LRUHash}, the flexible @code{OpenHash} and the convenient
9779 @code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
9780 defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
9781 standard @code{Hash} making it possible to subclass and augment to fit any
9782 specific use case.")
9783 (home-page "https://rubyworks.github.io/hashery")
9784 (license license:bsd-2)))
9785
9786 (define-public ruby-rc4
9787 (package
9788 (name "ruby-rc4")
9789 (version "0.1.5")
9790 (source
9791 (origin
9792 (method url-fetch)
9793 (uri (rubygems-uri "ruby-rc4" version))
9794 (sha256
9795 (base32
9796 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
9797 (build-system ruby-build-system)
9798 (arguments
9799 `(#:phases
9800 (modify-phases %standard-phases
9801 (replace 'check
9802 (lambda _
9803 (invoke "rspec" "spec/rc4_spec.rb"))))))
9804 (native-inputs
9805 `(("ruby-rspec" ,ruby-rspec-2)))
9806 (synopsis "Implementation of the RC4 algorithm")
9807 (description
9808 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
9809 (home-page "https://github.com/caiges/Ruby-RC4")
9810 (license license:expat)))
9811
9812 (define-public ruby-afm
9813 (package
9814 (name "ruby-afm")
9815 (version "0.2.2")
9816 (source
9817 (origin
9818 (method url-fetch)
9819 (uri (rubygems-uri "afm" version))
9820 (sha256
9821 (base32
9822 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
9823 (build-system ruby-build-system)
9824 (native-inputs
9825 `(("bundler" ,bundler)))
9826 (synopsis "Read Adobe Font Metrics (afm) files")
9827 (description
9828 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
9829 files and use the data therein.")
9830 (home-page "https://github.com/halfbyte/afm")
9831 (license license:expat)))
9832
9833 (define-public ruby-ascii85
9834 (package
9835 (name "ruby-ascii85")
9836 (version "1.0.3")
9837 (source
9838 (origin
9839 (method url-fetch)
9840 (uri (rubygems-uri "Ascii85" version))
9841 (sha256
9842 (base32
9843 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
9844 (build-system ruby-build-system)
9845 (native-inputs
9846 `(("bundler" ,bundler)))
9847 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
9848 (description
9849 "This library provides methods to encode and decode Ascii85
9850 binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
9851 @dfn{Portable Document Format} (PDF) file formats.")
9852 (home-page "https://github.com/datawraith/ascii85gem")
9853 (license license:expat)))
9854
9855 (define-public ruby-ttfunk
9856 (package
9857 (name "ruby-ttfunk")
9858 (version "1.6.2.1")
9859 (source
9860 (origin
9861 (method git-fetch)
9862 ;; fetch from github as the gem does not contain testing code
9863 (uri (git-reference
9864 (url "https://github.com/prawnpdf/ttfunk")
9865 (commit version)))
9866 (file-name (git-file-name name version))
9867 (sha256
9868 (base32
9869 "0rsf4j6s97wbcnjbvmmh6xrc7imw4g9lrlcvn945wh400lc8r53z"))))
9870 (build-system ruby-build-system)
9871 (arguments
9872 `(#:test-target "spec"
9873 #:phases
9874 (modify-phases %standard-phases
9875 (add-before 'build 'remove-ssh
9876 (lambda _
9877 ;; remove dependency on an ssh key pair that doesn't exist
9878 (substitute* "ttfunk.gemspec"
9879 (("spec.signing_key.*") ""))
9880 #t))
9881 (add-before 'check 'remove-rubocop
9882 (lambda _
9883 ;; remove rubocop as a dependency as not needed for testing
9884 (substitute* "ttfunk.gemspec"
9885 (("spec.add_development_dependency\\('rubocop'.*") ""))
9886 (substitute* "Rakefile"
9887 (("require 'rubocop/rake_task'") "")
9888 (("RuboCop::RakeTask.new") ""))
9889 #t)))))
9890 (native-inputs
9891 `(("ruby-rspec" ,ruby-rspec)
9892 ("ruby-yard" ,ruby-yard)
9893 ("bundler" ,bundler)))
9894 (synopsis "Font metrics parser for the Prawn PDF generator")
9895 (description
9896 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
9897 part of the Prawn PDF generator.")
9898 (home-page "https://github.com/prawnpdf/ttfunk")
9899 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
9900 ;; for details."
9901 (license %prawn-project-licenses)))
9902
9903 (define-public ruby-puma
9904 (package
9905 (name "ruby-puma")
9906 (version "3.9.1")
9907 (source
9908 (origin
9909 (method git-fetch)
9910 ;; Fetch from GitHub because distributed gem does not contain tests.
9911 (uri (git-reference
9912 (url "https://github.com/puma/puma")
9913 (commit (string-append "v" version))))
9914 (file-name (git-file-name name version))
9915 (sha256
9916 (base32
9917 "1kj75k81iik3aj73pkc9ixj9rwf95ipkyma65n28m64dgw02qi1f"))))
9918 (build-system ruby-build-system)
9919 (arguments
9920 `(#:tests? #f ; Tests require an out-dated version of minitest.
9921 #:phases
9922 (modify-phases %standard-phases
9923 (add-before 'build 'fix-gemspec
9924 (lambda _
9925 (substitute* "puma.gemspec"
9926 (("git ls-files") "find * |sort"))
9927 #t)))))
9928 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
9929 (description
9930 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
9931 for Ruby/Rack applications. Puma is intended for use in both development and
9932 production environments. In order to get the best throughput, it is highly
9933 recommended that you use a Ruby implementation with real threads like Rubinius
9934 or JRuby.")
9935 (home-page "https://puma.io/")
9936 (license license:expat)))
9937
9938 (define-public ruby-hoe-git
9939 (package
9940 (name "ruby-hoe-git")
9941 (version "1.6.0")
9942 (source
9943 (origin
9944 (method url-fetch)
9945 (uri (rubygems-uri "hoe-git" version))
9946 (sha256
9947 (base32
9948 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
9949 (build-system ruby-build-system)
9950 (propagated-inputs
9951 `(("ruby-hoe" ,ruby-hoe)))
9952 (synopsis "Hoe plugins for tighter Git integration")
9953 (description
9954 "This package provides a set of Hoe plugins for tighter Git integration.
9955 It provides tasks to automate release tagging and pushing and changelog
9956 generation.")
9957 (home-page "https://github.com/jbarnette/hoe-git")
9958 (license license:expat)))
9959
9960 (define-public ruby-sequel
9961 (package
9962 (name "ruby-sequel")
9963 (version "4.49.0")
9964 (source
9965 (origin
9966 (method url-fetch)
9967 (uri (rubygems-uri "sequel" version))
9968 (sha256
9969 (base32
9970 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
9971 (build-system ruby-build-system)
9972 (arguments
9973 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
9974 (synopsis "Database toolkit for Ruby")
9975 (description "Sequel provides thread safety, connection pooling and a
9976 concise DSL for constructing SQL queries and table schemas. It includes a
9977 comprehensive ORM layer for mapping records to Ruby objects and handling
9978 associated records.")
9979 (home-page "https://sequel.jeremyevans.net")
9980 (license license:expat)))
9981
9982 (define-public ruby-timecop
9983 (package
9984 (name "ruby-timecop")
9985 (version "0.9.1")
9986 (source
9987 (origin
9988 (method url-fetch)
9989 (uri (rubygems-uri "timecop" version))
9990 (sha256
9991 (base32
9992 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
9993 (build-system ruby-build-system)
9994 (arguments
9995 `(#:phases
9996 (modify-phases %standard-phases
9997 (add-before 'check 'set-check-rubylib
9998 (lambda _
9999 ;; Set RUBYLIB so timecop tests finds its own lib.
10000 (setenv "RUBYLIB" "lib")
10001 #t)))))
10002 (native-inputs
10003 `(("bundler" ,bundler)
10004 ("ruby-minitest-rg" ,ruby-minitest-rg)
10005 ("ruby-mocha" ,ruby-mocha)
10006 ("ruby-activesupport" ,ruby-activesupport)))
10007 (synopsis "Test mocks for time-dependent functions")
10008 (description
10009 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
10010 making it easier to test time-dependent code. It provides a unified method to
10011 mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
10012 call.")
10013 (home-page "https://github.com/travisjeffery/timecop")
10014 (license license:expat)))
10015
10016 (define-public ruby-concurrent
10017 (package
10018 (name "ruby-concurrent")
10019 (version "1.1.5")
10020 (source
10021 (origin
10022 (method git-fetch)
10023 ;; Download from GitHub because the rubygems version does not contain
10024 ;; Rakefile.
10025 (uri (git-reference
10026 (url "https://github.com/ruby-concurrency/concurrent-ruby")
10027 (commit (string-append "v" version))))
10028 (file-name (git-file-name name version))
10029 (sha256
10030 (base32
10031 "193q2k47vk7qdvv9hlhmmdxgy91xl4imapyk1ijdg9vgf46knyzj"))))
10032 (build-system ruby-build-system)
10033 (arguments
10034 `(#:test-target "ci"
10035 #:phases
10036 (modify-phases %standard-phases
10037 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
10038 (lambda _
10039 ;; Delete extra gemspec files so 'first-gemspec' chooses the
10040 ;; correct one.
10041 (delete-file "concurrent-ruby-edge.gemspec")
10042 (delete-file "concurrent-ruby-ext.gemspec")
10043 #t))
10044 (replace 'replace-git-ls-files
10045 (lambda _
10046 ;; XXX: The default substitution made by this phase is not fully
10047 ;; compatible with "git ls-files". The latter produces file names
10048 ;; such as "lib/foo", whereas ruby-build-system uses "find . [...]"
10049 ;; which gives "./lib/foo". That difference in turn breaks the
10050 ;; comparison against a glob pattern in this script.
10051 (substitute* "concurrent-ruby.gemspec"
10052 (("git ls-files") "find * -type f | sort"))
10053 #t))
10054 (add-before 'build 'remove-jar-from-gemspec
10055 (lambda _
10056 ;; The gemspec wants to include a JAR file that we do not build
10057 ;; nor need.
10058 (substitute* "concurrent-ruby.gemspec"
10059 (("'lib/concurrent/concurrent_ruby.jar'")
10060 ""))
10061 #t))
10062 (add-before 'build 'remove-rake_compiler_dock-dependency
10063 (lambda _
10064 ;; This library is only used when building for non-MRI targets.
10065 (substitute* "Rakefile"
10066 (("require 'rake_compiler_dock'")
10067 ""))
10068 #t))
10069 (add-before 'check 'remove-timecop-dependency
10070 ;; Remove timecop-dependent tests as having timecop as a depedency
10071 ;; causes circular depedencies.
10072 (lambda _
10073 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
10074 (delete-file "spec/concurrent/scheduled_task_spec.rb")
10075 #t)))))
10076 (native-inputs
10077 `(("ruby-rake-compiler" ,ruby-rake-compiler)
10078 ("ruby-rspec" ,ruby-rspec)))
10079 (synopsis "Concurrency tools for Ruby")
10080 (description
10081 "This library provides modern concurrency tools including agents,
10082 futures, promises, thread pools, actors, supervisors, and more. It is
10083 inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
10084 patterns.")
10085 (home-page "http://www.concurrent-ruby.com")
10086 (license license:expat)))
10087
10088 (define-public ruby-pkg-config
10089 (package
10090 (name "ruby-pkg-config")
10091 (version "1.2.5")
10092 (source
10093 (origin
10094 (method url-fetch)
10095 (uri (rubygems-uri "pkg-config" version))
10096 (sha256
10097 (base32
10098 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
10099 (build-system ruby-build-system)
10100 (arguments
10101 ;; Tests require extra files not included in the gem.
10102 `(#:tests? #f))
10103 (synopsis "Detect libraries for compiling Ruby native extensions")
10104 (description
10105 "@code{pkg-config} can be used in your extconf.rb to properly detect need
10106 libraries for compiling Ruby native extensions.")
10107 (home-page "https://github.com/ruby-gnome2/pkg-config")
10108 (license license:lgpl2.0+)))
10109
10110 (define-public ruby-net-http-digest-auth
10111 (package
10112 (name "ruby-net-http-digest-auth")
10113 (version "1.4.1")
10114 (source
10115 (origin
10116 (method url-fetch)
10117 (uri (rubygems-uri "net-http-digest_auth" version))
10118 (sha256
10119 (base32
10120 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
10121 (build-system ruby-build-system)
10122 (native-inputs
10123 `(("ruby-hoe" ,ruby-hoe)))
10124 (synopsis "RFC 2617 HTTP digest authentication library")
10125 (description
10126 "This library implements HTTP's digest authentication scheme based on
10127 RFC 2617. This enables the use of the digest authentication scheme instead
10128 of the more insecure basic authentication scheme.")
10129 (home-page "https://github.com/drbrain/net-http-digest_auth")
10130 (license license:expat)))
10131
10132 (define-public ruby-mail
10133 (package
10134 (name "ruby-mail")
10135 (version "2.7.1")
10136 (source
10137 (origin
10138 (method url-fetch)
10139 (uri (rubygems-uri "mail" version))
10140 (sha256
10141 (base32
10142 "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc"))))
10143 (build-system ruby-build-system)
10144 (propagated-inputs
10145 `(("ruby-mini-mime" ,ruby-mini-mime)))
10146 (arguments
10147 '(#:tests? #f)) ; no rakefile
10148 (synopsis "Mail library for Ruby")
10149 (description
10150 "Mail is an internet library for Ruby that is designed to handle email
10151 generation, parsing and sending. The purpose of this library is to provide
10152 a single point of access to handle all email functions, including sending
10153 and receiving emails. All network type actions are done through proxy
10154 methods to @code{Net::SMTP}, @code{Net::POP3} etc.
10155
10156 Mail has been designed with a very simple object oriented system that
10157 really opens up the email messages you are parsing, if you know what you
10158 are doing, you can fiddle with every last bit of your email directly.")
10159 (home-page "https://github.com/mikel/mail")
10160 (license license:expat)))
10161
10162 (define-public ruby-mathn
10163 (package
10164 (name "ruby-mathn")
10165 (version "0.1.0")
10166 (source
10167 (origin
10168 (method url-fetch)
10169 (uri (rubygems-uri "mathn" version))
10170 (sha256
10171 (base32
10172 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
10173 (build-system ruby-build-system)
10174 (native-inputs
10175 `(("bundler" ,bundler)
10176 ("ruby-rake-compiler" ,ruby-rake-compiler)))
10177 (synopsis "Extends math operations for increased precision")
10178 (description
10179 "This gem makes mathematical operations more precise in Ruby and
10180 integrates other mathematical standard libraries. Prior to Ruby 2.5,
10181 @code{mathn} was part of the Ruby standard library.")
10182 (home-page "https://github.com/ruby/mathn")
10183 (license license:bsd-2)))
10184
10185 (define-public ruby-code-statistics
10186 (package
10187 (name "ruby-code-statistics")
10188 (version "0.2.13")
10189 (source
10190 (origin
10191 (method url-fetch)
10192 (uri (rubygems-uri "code_statistics" version))
10193 (sha256
10194 (base32
10195 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
10196 (build-system ruby-build-system)
10197 (arguments
10198 `(#:tests? #f)) ; Not all test code is included in gem.
10199 (synopsis "Port of the rails 'rake stats' method")
10200 (description
10201 "This gem is a port of the rails 'rake stats' method so it can be made
10202 more robust and work for non rails projects.")
10203 (home-page "https://github.com/danmayer/code_statistics")
10204 (license license:expat)))
10205
10206 (define-public ruby-rubypants
10207 (package
10208 (name "ruby-rubypants")
10209 (version "0.6.0")
10210 (source (origin
10211 (method url-fetch)
10212 (uri (rubygems-uri "rubypants" version))
10213 (sha256
10214 (base32
10215 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
10216 (build-system ruby-build-system)
10217 (arguments
10218 '(#:tests? #f)) ; need Codecov
10219 (synopsis "Port of the smart-quotes library SmartyPants")
10220 (description
10221 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
10222 original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
10223 and BBEdit that easily translates plain ASCII punctuation characters into
10224 smart typographic punctuation HTML entities.")
10225 (home-page "https://github.com/jmcnevin/rubypants")
10226 (license license:bsd-2)))
10227
10228 (define-public ruby-org-ruby
10229 (package
10230 (name "ruby-org-ruby")
10231 (version "0.9.12")
10232 (source (origin
10233 (method url-fetch)
10234 (uri (rubygems-uri "org-ruby" version))
10235 (sha256
10236 (base32
10237 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
10238 (build-system ruby-build-system)
10239 (arguments
10240 '(#:tests? #f)) ; no rakefile
10241 (propagated-inputs
10242 `(("ruby-rubypants" ,ruby-rubypants)))
10243 (synopsis "Org-mode parser written in Ruby")
10244 (description
10245 "Org-ruby is an org-mode parser written in Ruby. The most significant
10246 thing this library does today is convert org-mode files to HTML or Textile or
10247 Markdown.")
10248 (home-page "https://github.com/wallyqs/org-ruby")
10249 (license license:expat)))
10250
10251 (define-public ruby-rake
10252 (package
10253 (name "ruby-rake")
10254 (version "13.0.1")
10255 (source
10256 (origin
10257 (method url-fetch)
10258 (uri (rubygems-uri "rake" version))
10259 (sha256
10260 (base32
10261 "0w6qza25bq1s825faaglkx1k6d59aiyjjk3yw3ip5sb463mhhai9"))))
10262 (build-system ruby-build-system)
10263 (native-inputs
10264 `(("bundler" ,bundler)))
10265 (synopsis "Rake is a Make-like program implemented in Ruby")
10266 (description
10267 "Rake is a Make-like program where tasks and dependencies are specified
10268 in standard Ruby syntax.")
10269 (home-page "https://github.com/ruby/rake")
10270 (license license:expat)))
10271
10272 (define-public ruby-childprocess
10273 (package
10274 (name "ruby-childprocess")
10275 (version "3.0.0")
10276 (source
10277 (origin
10278 (method url-fetch)
10279 (uri (rubygems-uri "childprocess" version))
10280 (sha256
10281 (base32
10282 "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5"))))
10283 (build-system ruby-build-system)
10284 (arguments
10285 `(#:tests? #f))
10286 (native-inputs
10287 `(("bundler" ,bundler)
10288 ("ruby-rspec" ,ruby-rspec)))
10289 (propagated-inputs
10290 `(("ruby-ffi" ,ruby-ffi)))
10291 (synopsis "Control external programs running in the background, in Ruby")
10292 (description "@code{childprocess} provides a gem to control external
10293 programs running in the background, in Ruby.")
10294 (home-page "https://github.com/enkessler/childprocess")
10295 (license license:expat)))
10296
10297 (define-public ruby-public-suffix
10298 (package
10299 (name "ruby-public-suffix")
10300 (version "4.0.5")
10301 (source (origin
10302 (method url-fetch)
10303 (uri (rubygems-uri "public_suffix" version))
10304 (sha256
10305 (base32
10306 "0vywld400fzi17cszwrchrzcqys4qm6sshbv73wy5mwcixmrgg7g"))))
10307 (build-system ruby-build-system)
10308 (arguments
10309 '(#:phases
10310 (modify-phases %standard-phases
10311 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
10312 ;; including it as an input can lead to circular dependencies.
10313 (add-after 'unpack 'remove-rubocop-from-Rakefile
10314 (lambda _
10315 (substitute* "Rakefile"
10316 (("require \"rubocop/rake\\_task\"") "")
10317 (("RuboCop::RakeTask\\.new") ""))
10318 #t)))))
10319 (native-inputs
10320 `(("bundler" ,bundler)
10321 ("ruby-yard" ,ruby-yard)
10322 ("ruby-mocha" ,ruby-mocha)
10323 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
10324 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
10325 (synopsis "Domain name parser")
10326 (description "The gem @code{public_suffix} is a domain name parser,
10327 written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
10328 is one under which Internet users can (or historically could) directly
10329 register names. Some examples of public suffixes are @code{.com},
10330 @code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
10331 all known public suffixes.")
10332 (license license:expat)))
10333
10334 (define-public ruby-addressable
10335 (package
10336 (name "ruby-addressable")
10337 (version "2.7.0")
10338 (source (origin
10339 (method url-fetch)
10340 (uri (rubygems-uri "addressable" version))
10341 (sha256
10342 (base32
10343 "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy"))))
10344 (build-system ruby-build-system)
10345 (arguments
10346 '(#:test-target "spec"
10347 #:phases
10348 (modify-phases %standard-phases
10349 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
10350 (lambda _
10351 (substitute* "Gemfile"
10352 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
10353 ((".*launchy.*") "")
10354 ((".*rake.*") "gem 'rake'\n")
10355 ((".*redcarpet.*") ""))
10356 #t))
10357 (add-before 'check 'delete-network-dependent-test
10358 (lambda _
10359 (delete-file "spec/addressable/net_http_compat_spec.rb")
10360 #t)))))
10361 (native-inputs
10362 `(("ruby-rspec" ,ruby-rspec)
10363 ("bundler" ,bundler)
10364 ("ruby-idn-ruby" ,ruby-idn-ruby)
10365 ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
10366 ("ruby-rspec-its" ,ruby-rspec-its-minimal)
10367 ("ruby-yard" ,ruby-yard)
10368 ("ruby-simplecov" ,ruby-simplecov)))
10369 (propagated-inputs
10370 `(("ruby-public-suffix" ,ruby-public-suffix)))
10371 (home-page "https://github.com/sporkmonger/addressable")
10372 (synopsis "Alternative URI implementation")
10373 (description "Addressable is a replacement for the URI implementation that
10374 is part of Ruby's standard library. It more closely conforms to RFC 3986,
10375 RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
10376 (license license:asl2.0)))
10377
10378 (define-public ruby-colorize
10379 (package
10380 (name "ruby-colorize")
10381 (version "0.8.1")
10382 (source (origin
10383 (method url-fetch)
10384 (uri (rubygems-uri "colorize" version))
10385 (sha256
10386 (base32
10387 "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b"))))
10388 (build-system ruby-build-system)
10389 (arguments
10390 '(#:phases (modify-phases %standard-phases
10391 (add-before 'check 'remove-codeclimate-dependency
10392 (lambda _
10393 (substitute* "test/test_colorize.rb"
10394 ;; Do not hook the tests into the online CodeClimate
10395 ;; service which is unnecessary for these tests.
10396 (("require 'codeclimate-test-reporter'")
10397 "")
10398 (("CodeClimate.*") ""))
10399 #t)))))
10400 (synopsis "Add color effects to the @code{String} class")
10401 (description
10402 "This package extends the @code{String} class and adds a
10403 @code{ColorizedString} with methods to set text color, background color,
10404 and text effects.")
10405 (home-page "https://github.com/fazibear/colorize")
10406 (license license:gpl2+)))
10407
10408 (define-public ruby-colorator
10409 (package
10410 (name "ruby-colorator")
10411 (version "1.1.0")
10412 (source (origin
10413 (method url-fetch)
10414 (uri (rubygems-uri "colorator" version))
10415 (sha256
10416 (base32
10417 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
10418 (build-system ruby-build-system)
10419 (arguments
10420 ;; No test target
10421 `(#:tests? #f))
10422 (home-page "http://octopress.org/colorator/")
10423 (synopsis "Terminal color library")
10424 (description "Colorator is a Ruby gem that helps you colorize your text
10425 for the terminal.")
10426 (license license:expat)))
10427
10428 (define-public ruby-command-line-reporter
10429 (package
10430 (name "ruby-command-line-reporter")
10431 (version "4.0.1")
10432 (source (origin
10433 (method url-fetch)
10434 (uri (rubygems-uri "command_line_reporter" version))
10435 (sha256
10436 (base32
10437 "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll"))))
10438 (build-system ruby-build-system)
10439 (arguments
10440 ;; No Rakefile
10441 `(#:tests? #f
10442 #:phases
10443 (modify-phases %standard-phases
10444 (add-before 'build 'fix-dependencies
10445 (lambda _
10446 (substitute* ".gemspec"
10447 ;; colored is unmaintained
10448 (("colored") "colorator")
10449 ;; colorator version
10450 (("= 1.2") "= 1.1"))
10451 #t)))))
10452 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
10453 (home-page "https://github.com/wbailey/command_line_reporter")
10454 (synopsis "Report production while executing Ruby scripts")
10455 (description "This gem provides a DSL that makes it easy to write reports
10456 of various types in ruby. It eliminates the need to litter your source with
10457 puts statements, instead providing a more readable, expressive interface to
10458 your application.")
10459 (license license:asl2.0)))
10460
10461 (define-public ruby-command-line-reporter-3
10462 (package
10463 (inherit ruby-command-line-reporter)
10464 (version "3.3.6")
10465 (source (origin
10466 (method url-fetch)
10467 (uri (rubygems-uri "command_line_reporter" version))
10468 (sha256
10469 (base32
10470 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
10471
10472 (define-public ruby-kpeg
10473 (package
10474 (name "ruby-kpeg")
10475 (version "1.1.0")
10476 (source
10477 (origin
10478 (method url-fetch)
10479 (uri (rubygems-uri "kpeg" version))
10480 (sha256
10481 (base32
10482 "0x2kpfrcagj931masm5y1kwbnc6nxl60cqdcd3lyd1d2hz7kzlia"))))
10483 (build-system ruby-build-system)
10484 (native-inputs
10485 `(("ruby-hoe" ,ruby-hoe)))
10486 (synopsis "PEG library for Ruby")
10487 (description "KPeg is a simple PEG library for Ruby. It provides an API as
10488 well as native grammar to build the grammar. KPeg supports direct left
10489 recursion of rules via the
10490 @uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization}
10491 technique.")
10492 (home-page "https://github.com/evanphx/kpeg")
10493 (license license:expat)))
10494
10495 (define-public ruby-rdoc
10496 (package
10497 (name "ruby-rdoc")
10498 (version "6.2.0")
10499 (source
10500 (origin
10501 (method git-fetch)
10502 (uri (git-reference
10503 (url "https://github.com/ruby/rdoc")
10504 (commit (string-append "v" version))))
10505 (file-name (git-file-name name version))
10506 (sha256
10507 (base32
10508 "0dhk29nidv93b5vnjvlm9gcixgn4i0jcyzrgxdk6pdg019bw4cj6"))))
10509 (build-system ruby-build-system)
10510 (arguments
10511 `(#:phases
10512 (modify-phases %standard-phases
10513 (add-after 'unpack 'patch-gemspec
10514 ;; TODO: Remove after next release is tagged.
10515 (lambda _
10516 (substitute* "rdoc.gemspec"
10517 (("\"lib/rdoc/generator/template/darkfish/js/\
10518 jquery\\.js\", ") ""))
10519 #t))
10520 (add-before 'build 'generate
10521 ;; 'gem build' doesn't honor Rakefile dependencies (see:
10522 ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977).
10523 (lambda _
10524 (invoke "rake" "generate"))))))
10525 (native-inputs
10526 `(("bundler" ,bundler)
10527 ("ruby-kpeg" ,ruby-kpeg)
10528 ("ruby-racc" ,ruby-racc)
10529 ("ruby-rubocop" ,ruby-rubocop)))
10530 (home-page "https://ruby.github.io/rdoc/")
10531 (synopsis "HTML and command-line documentation utility")
10532 (description "RDoc produces HTML and command-line documentation for Ruby
10533 projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
10534 documentation from the command-line.")
10535 (license license:gpl2+)))
10536
10537 (define-public ruby-sass-listen
10538 (package
10539 (name "ruby-sass-listen")
10540 (version "4.0.0")
10541 (source (origin
10542 (method url-fetch)
10543 (uri (rubygems-uri "sass-listen" version))
10544 (sha256
10545 (base32
10546 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
10547 (build-system ruby-build-system)
10548 (arguments
10549 ;; No test target
10550 `(#:tests? #f))
10551 (propagated-inputs
10552 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
10553 ("ruby-rb-inotify" ,ruby-rb-inotify)))
10554 (home-page "https://github.com/sass/listen")
10555 (synopsis "File modification notification library")
10556 (description "The Listen gem listens to file modifications and notifies you
10557 about the changes.")
10558 (license license:expat)))
10559
10560 (define-public ruby-terminfo
10561 (package
10562 (name "ruby-terminfo")
10563 (version "0.1.1")
10564 (source
10565 (origin
10566 (method url-fetch)
10567 (uri (rubygems-uri "ruby-terminfo" version))
10568 (sha256
10569 (base32
10570 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
10571 (build-system ruby-build-system)
10572 (arguments
10573 `(#:test-target "test"
10574 ;; Rakefile requires old packages and would need modification to
10575 ;; work with current software.
10576 #:tests? #f))
10577 (inputs
10578 `(("ncurses" ,ncurses)))
10579 (native-inputs
10580 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
10581 ("ruby-rdoc" ,ruby-rdoc)))
10582 (home-page "http://www.a-k-r.org/ruby-terminfo/")
10583 (synopsis "Terminfo binding for Ruby")
10584 (description "Ruby-terminfo provides terminfo binding for Ruby.")
10585 (license license:bsd-3)))
10586
10587 (define-public ruby-diffy
10588 (package
10589 (name "ruby-diffy")
10590 (version "3.2.1")
10591 (source
10592 (origin
10593 (method url-fetch)
10594 (uri (rubygems-uri "diffy" version))
10595 (sha256
10596 (base32
10597 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
10598 (build-system ruby-build-system)
10599 (arguments
10600 ;; No tests
10601 `(#:tests? #f))
10602 (native-inputs
10603 `(("ruby-rspec" ,ruby-rspec)))
10604 (home-page "https://github.com/samg/diffy")
10605 (synopsis "Convenient diffing in ruby")
10606 (description "Diffy provides a convenient way to generate a diff from two
10607 strings or files.")
10608 (license license:expat)))
10609
10610 (define-public ruby-sass-spec
10611 (package
10612 (name "ruby-sass-spec")
10613 (version "3.5.4")
10614 (source
10615 (origin
10616 (method git-fetch)
10617 (uri (git-reference
10618 (url "https://github.com/sass/sass-spec")
10619 (commit (string-append "v" version))))
10620 (file-name (git-file-name name version))
10621 (sha256
10622 (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
10623 (build-system ruby-build-system)
10624 (propagated-inputs
10625 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
10626 ("ruby-diffy" ,ruby-diffy)
10627 ("ruby-terminfo" ,ruby-terminfo)))
10628 (arguments
10629 `(;; This package contains tests for a sass implementation, and the to
10630 ;; avoid any circular dependencies, the tests are not run here
10631 #:tests? #f
10632 #:phases
10633 (modify-phases %standard-phases
10634 (add-after 'unpack 'patch-test
10635 (lambda _
10636 (delete-file "spec/values/colors/alpha_hex-3.5/error")
10637 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
10638 (("string") "color")))))))
10639 (home-page "https://github.com/sass/sass-spec")
10640 (synopsis "Test suite for Sass")
10641 (description "Sass Spec is a test suite for Sass. Test cases are all in
10642 the @file{spec} directory.")
10643 (license license:expat)))
10644
10645 (define-public ruby-sass
10646 (package
10647 (name "ruby-sass")
10648 (version "3.6.0")
10649 (source (origin
10650 (method url-fetch)
10651 (uri (rubygems-uri "sass" version))
10652 (sha256
10653 (base32
10654 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
10655 (build-system ruby-build-system)
10656 (propagated-inputs
10657 `(("ruby-sass-listen" ,ruby-sass-listen)))
10658 (native-inputs
10659 `(("ruby-sass-spec" ,ruby-sass-spec)
10660 ("ruby-mathn" ,ruby-mathn)))
10661 (home-page "https://sass-lang.com/")
10662 (synopsis "CSS extension language")
10663 (description "Sass is a CSS extension language. It extends CSS with
10664 features that don't exist yet like variables, nesting, mixins and inheritance.")
10665 (license license:expat)))
10666
10667 (define-public ruby-sassc
10668 (package
10669 (name "ruby-sassc")
10670 (version "2.4.0")
10671 (source
10672 (origin
10673 (method url-fetch)
10674 (uri (rubygems-uri "sassc" version))
10675 (sha256
10676 (base32
10677 "0gpqv48xhl8mb8qqhcifcp0pixn206a7imc07g48armklfqa4q2c"))))
10678 (build-system ruby-build-system)
10679 (arguments
10680 '(#:modules ((guix build ruby-build-system)
10681 (guix build utils)
10682 (ice-9 textual-ports))
10683 #:phases
10684 (modify-phases %standard-phases
10685 ;; TODO: This would be better as a snippet, but the ruby-build-system
10686 ;; doesn't seem to support that
10687 (add-after 'unpack 'remove-libsass
10688 (lambda _
10689 (delete-file-recursively "ext")
10690 (with-atomic-file-replacement "sassc.gemspec"
10691 (lambda (in out)
10692 (let* ((gemspec (get-string-all in))
10693 (index (string-contains gemspec "libsass_dir")))
10694 (display (string-append
10695 (string-take gemspec index)
10696 "\nend\n")
10697 out))))
10698 #t))
10699 (add-after 'unpack 'dont-check-the-libsass-version
10700 (lambda _
10701 (substitute* "test/native_test.rb"
10702 (("assert_equal.*Native\\.version") ""))
10703 #t))
10704 (add-after 'unpack 'remove-git-from-gemspec
10705 (lambda _
10706 (substitute* "sassc.gemspec"
10707 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))
10708 #t))
10709 (add-after 'unpack 'remove-extensions-from-gemspec
10710 (lambda _
10711 (substitute* "sassc.gemspec"
10712 (("\\[\"ext/extconf.rb\"\\]") "[]"))
10713 #t))
10714 (add-after 'unpack 'fix-Rakefile
10715 (lambda _
10716 (substitute* "Rakefile"
10717 (("test: 'compile:libsass'") ":test"))
10718 #t))
10719 (add-after 'unpack 'remove-unnecessary-dependencies
10720 (lambda _
10721 (substitute* "test/test_helper.rb"
10722 (("require \"pry\"") ""))
10723 #t))
10724 (add-before 'build 'patch-native.rb
10725 (lambda* (#:key inputs #:allow-other-keys)
10726 (substitute* "lib/sassc/native.rb"
10727 ((".*gem_root = spec.gem_dir") "")
10728 (("ffi_lib .*\n")
10729 (string-append
10730 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))
10731 #t))
10732 ;; The gemspec still references the libsass files, so just keep the
10733 ;; one in the gem.
10734 (delete 'extract-gemspec))))
10735 (propagated-inputs
10736 `(("ruby-ffi" ,ruby-ffi)
10737 ("ruby-rake" ,ruby-rake)))
10738 (inputs
10739 `(("libsass" ,libsass)))
10740 (native-inputs
10741 `(("bundler" ,bundler)
10742 ("ruby-rake-compiler" ,ruby-rake-compiler)
10743 ("ruby-minitest-around" ,ruby-minitest-around)
10744 ("ruby-test-construct" ,ruby-test-construct)))
10745 (synopsis "Use libsss from Ruby")
10746 (description
10747 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
10748 bindings to the libsass library. This enables rendering
10749 @acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
10750 (home-page "https://github.com/sass/sassc-ruby")
10751 (license license:expat)))
10752
10753 (define-public ruby-jekyll-sass-converter
10754 (package
10755 (name "ruby-jekyll-sass-converter")
10756 (version "2.1.0")
10757 (source (origin
10758 (method url-fetch)
10759 (uri (rubygems-uri "jekyll-sass-converter" version))
10760 (sha256
10761 (base32
10762 "04ncr44wrilz26ayqwlg7379yjnkb29mvx4j04i62b7czmdrc9dv"))))
10763 (build-system ruby-build-system)
10764 (propagated-inputs
10765 `(("ruby-sass" ,ruby-sass)))
10766 (arguments
10767 ;; No rakefile
10768 `(#:tests? #f))
10769 (home-page "https://github.com/jekyll/jekyll-sass-converter")
10770 (synopsis "Sass converter for Jekyll")
10771 (description "This gem provide built-in support for the Sass converter
10772 in Jekyll.")
10773 (license license:expat)))
10774
10775 (define-public ruby-jekyll-watch
10776 (package
10777 (name "ruby-jekyll-watch")
10778 (version "2.1.2")
10779 (source (origin
10780 (method url-fetch)
10781 (uri (rubygems-uri "jekyll-watch" version))
10782 (sha256
10783 (base32
10784 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
10785 (build-system ruby-build-system)
10786 (propagated-inputs
10787 `(("ruby-listen" ,ruby-listen)))
10788 (arguments
10789 ;; No rakefile
10790 `(#:tests? #f))
10791 (home-page "https://github.com/jekyll/jekyll-watch")
10792 (synopsis "Jekyll auto-rebuild support")
10793 (description "This gems add the @code{--watch} switch to the jekyll CLI
10794 interface. It allows Jekyll to rebuild your site when a file changes.")
10795 (license license:expat)))
10796
10797 (define-public ruby-parallel
10798 (package
10799 (name "ruby-parallel")
10800 (version "1.13.0")
10801 (source
10802 (origin
10803 (method git-fetch)
10804 (uri (git-reference
10805 (url "https://github.com/grosser/parallel")
10806 (commit (string-append "v" version))))
10807 (file-name (git-file-name name version))
10808 (sha256
10809 (base32
10810 "1isqzbqxz2ndad4i5z3lb9ldrhaijfncj8bmffv04sq44sv87ikv"))))
10811 (build-system ruby-build-system)
10812 (arguments
10813 `(;; TODO 3 test failures
10814 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
10815 ;; open unnecessary pipes
10816 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
10817 ;; SQLite in processes
10818 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
10819 ;; SQLite in threads
10820 #:tests? #f
10821 #:test-target "rspec-rerun:spec"
10822 #:phases
10823 (modify-phases %standard-phases
10824 (add-after 'unpack 'patch-Gemfile
10825 (lambda _
10826 (substitute* "Gemfile"
10827 (("gem 'rspec-legacy_formatters'") "")
10828 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
10829 (add-before 'check 'delete-Gemfile.lock
10830 (lambda _
10831 ;; Bundler isn't being used for fetching dependendencies, so
10832 ;; delete the Gemfile.lock
10833 (delete-file "Gemfile.lock")
10834 #t))
10835 (add-before 'build 'patch-gemspec
10836 (lambda _
10837 (substitute* "parallel.gemspec"
10838 (("git ls-files") "find"))
10839 #t)))))
10840 (native-inputs
10841 `(("ruby-rspec" ,ruby-rspec)
10842 ("ruby-rspec-rerun" ,ruby-rspec-rerun)
10843 ("bundler" ,bundler)
10844 ("ruby-activerecord" ,ruby-activerecord)
10845 ("ruby-progressbar" ,ruby-progressbar)
10846 ("ruby-bump" ,ruby-bump)
10847 ("procps" ,procps)
10848 ("lsof" ,lsof)
10849 ("ruby-mysql2" ,ruby-mysql2)
10850 ("ruby-sqlite3" ,ruby-sqlite3)
10851 ("ruby-i18n" ,ruby-i18n)))
10852 (home-page "https://github.com/grosser/parallel")
10853 (synopsis "Parallel processing in Ruby")
10854 (description "Parallel allows you to run any code in parallel Processes
10855 (to use all CPUs) or Threads(to speedup blocking operations). It is best
10856 suited for map-reduce or e.g. parallel downloads/uploads.")
10857 (license license:expat)))
10858
10859 (define-public ruby-cane
10860 (package
10861 (name "ruby-cane")
10862 (version "3.0.0")
10863 (source (origin
10864 (method url-fetch)
10865 (uri (rubygems-uri "cane" version))
10866 (sha256
10867 (base32
10868 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
10869 (build-system ruby-build-system)
10870 (arguments `(#:tests? #f)); No rakefile
10871 (home-page "https://github.com/square/cane")
10872 (propagated-inputs
10873 `(("ruby-parallel" ,ruby-parallel)))
10874 (synopsis "Code quality threshold checking")
10875 (description "Cane fails your build if code quality thresholds are not met.")
10876 (license license:asl2.0)))
10877
10878 (define-public ruby-morecane
10879 (package
10880 (name "ruby-morecane")
10881 (version "0.2.0")
10882 (source (origin
10883 (method url-fetch)
10884 (uri (rubygems-uri "morecane" version))
10885 (sha256
10886 (base32
10887 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
10888 (build-system ruby-build-system)
10889 (home-page "https://github.com/yob/morecane")
10890 (arguments `(#:tests? #f)); No rakefile
10891 (propagated-inputs
10892 `(("ruby-parallel" ,ruby-parallel)))
10893 (synopsis "Extra checks for cane")
10894 (description "The cane gem provides a great framework for running quality
10895 checks over your ruby project as part of continuous integration build. It
10896 comes with a few checks out of the box, but also provides an API for loading
10897 custom checks. This gem provides a set of additional checks.")
10898 (license license:expat)))
10899
10900 (define-public ruby-pdf-reader
10901 (package
10902 (name "ruby-pdf-reader")
10903 (version "2.4.0")
10904 (source (origin
10905 (method git-fetch) ;no test in distributed gem archive
10906 (uri (git-reference
10907 (url "https://github.com/yob/pdf-reader")
10908 (commit (string-append "v" version))))
10909 (file-name (git-file-name name version))
10910 (sha256
10911 (base32
10912 "1yh8yrlssf5ppnkvk4m78vmh5r5vqwdcd0gm3lqipw162llz0rai"))))
10913 (build-system ruby-build-system)
10914 (arguments `(#:test-target "spec"
10915 #:phases (modify-phases %standard-phases
10916 (add-after 'unpack 'do-not-use-bundler
10917 (lambda _
10918 (substitute* "spec/spec_helper.rb"
10919 ((".*[Bb]undler.*") ""))
10920 #t)))))
10921 (native-inputs
10922 `(("ruby-rspec" ,ruby-rspec)
10923 ("ruby-cane" ,ruby-cane)
10924 ("ruby-morecane" ,ruby-morecane)))
10925 (propagated-inputs
10926 `(("ruby-afm" ,ruby-afm)
10927 ("ruby-ascii85" ,ruby-ascii85)
10928 ("ruby-hashery" ,ruby-hashery)
10929 ("ruby-rc4" ,ruby-rc4)
10930 ("ruby-ttfunk" ,ruby-ttfunk)))
10931 (home-page "https://github.com/yob/pdf-reader")
10932 (synopsis "PDF parser in Ruby")
10933 (description "The PDF::Reader library implements a PDF parser conforming as
10934 much as possible to the PDF specification from Adobe. It provides programmatic
10935 access to the contents of a PDF file with a high degree of flexibility.")
10936 (license license:gpl3+)))
10937
10938 (define-public ruby-pdf-inspector
10939 (let ((revision "1")
10940 (commit "00ee4c92ff917118785ebec188e81effc968abeb"))
10941 (package
10942 (name "ruby-pdf-inspector")
10943 (version (git-version "1.3.0" revision commit))
10944 (source (origin
10945 (method git-fetch)
10946 (uri (git-reference
10947 (url "https://github.com/prawnpdf/pdf-inspector")
10948 (commit commit)))
10949 (file-name (git-file-name name version))
10950 (sha256
10951 (base32
10952 "0h9w81ddd0gvkh5n2cvny9ddb5qiac1si0dhinkk0xxh5382qs0m"))))
10953 (build-system ruby-build-system)
10954 (arguments
10955 `(#:test-target "spec"
10956 #:phases (modify-phases %standard-phases
10957 (add-before 'build 'drop-signing-key-requirement
10958 (lambda _
10959 (substitute* "pdf-inspector.gemspec"
10960 (("spec.signing_key =.*")
10961 "spec.signing_key = nil"))
10962 #t))
10963 (replace 'check
10964 (lambda _
10965 (substitute* "pdf-inspector.gemspec"
10966 ((".*rubocop.*") "")
10967 ((".*yard.*") ""))
10968 (invoke "rspec"))))))
10969 (native-inputs
10970 `(("ruby-rspec" ,ruby-rspec)))
10971 (propagated-inputs
10972 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
10973 (home-page "https://github.com/prawnpdf/pdf-inspector")
10974 (synopsis "Analysis classes for inspecting PDF output")
10975 (description "This library provides a number of PDF::Reader based tools for
10976 use in testing PDF output. Presently, the primary purpose of this tool is to
10977 support the tests found in Prawn, a pure Ruby PDF generation library.")
10978 (license %prawn-project-licenses))))
10979
10980 (define-public ruby-pdf-core
10981 (package
10982 (name "ruby-pdf-core")
10983 (version "0.8.1")
10984 (source (origin
10985 (method url-fetch)
10986 (uri (rubygems-uri "pdf-core" version))
10987 (sha256
10988 (base32
10989 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
10990 (build-system ruby-build-system)
10991 (arguments
10992 ; No test target
10993 `(#:tests? #f))
10994 (home-page "https://github.com/prawnpdf/pdf-core")
10995 (synopsis "Low level PDF features for Prawn")
10996 (description "This is an experimental gem that extracts low-level PDF
10997 functionality from Prawn.")
10998 (license license:gpl3+)))
10999
11000 (define-public ruby-prawn
11001 ;; There hasn't been a new release since 2017/03/17.
11002 (let ((revision "1")
11003 (commit "d980247be8a00e7c59cd4e5785e3aa98f9856db1"))
11004 (package
11005 (name "ruby-prawn")
11006 (version (git-version "2.2.2" revision commit))
11007 (source (origin
11008 (method git-fetch)
11009 (uri (git-reference
11010 (url "https://github.com/prawnpdf/prawn")
11011 (commit commit)))
11012 (file-name (git-file-name name version))
11013 (sha256
11014 (base32
11015 "0mcmvf22h8il93yq48v9f31qpy27pvjxgv9172p0f4x9lqy0imwr"))))
11016 (build-system ruby-build-system)
11017 (arguments
11018 `(#:phases
11019 (modify-phases %standard-phases
11020 (add-before 'build 'drop-signing-key-requirement
11021 (lambda _
11022 (substitute* "prawn.gemspec"
11023 (("spec.signing_key =.*")
11024 "spec.signing_key = nil"))
11025 #t))
11026 (replace 'check
11027 (lambda* (#:key tests? #:allow-other-keys)
11028 (when tests?
11029 ;; The Prawn manual test fails (see:
11030 ;; https://github.com/prawnpdf/prawn/issues/1163), so exclude
11031 ;; it.
11032 (invoke "rspec" "--exclude-pattern" "prawn_manual_spec.rb"))
11033 #t)))))
11034 (propagated-inputs
11035 `(("ruby-pdf-core" ,ruby-pdf-core)
11036 ("ruby-ttfunk" ,ruby-ttfunk)))
11037 (native-inputs
11038 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
11039 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
11040 ("ruby-rspec" ,ruby-rspec)
11041 ("ruby-simplecov" ,ruby-simplecov)
11042 ("ruby-yard" ,ruby-yard)))
11043 (home-page "https://prawnpdf.org/api-docs/2.0/")
11044 (synopsis "PDF generation for Ruby")
11045 (description "Prawn is a pure Ruby PDF generation library.")
11046 (license %prawn-project-licenses))))
11047
11048 (define-public ruby-prawn-table
11049 (package
11050 (name "ruby-prawn-table")
11051 (version "0.2.2")
11052 (source (origin
11053 (method url-fetch)
11054 (uri (rubygems-uri "prawn-table" version))
11055 (sha256
11056 (base32
11057 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
11058 (build-system ruby-build-system)
11059 (propagated-inputs
11060 `(("ruby-prawn" ,ruby-prawn)
11061 ("ruby-pdf-inspector" ,ruby-pdf-inspector)))
11062 (native-inputs
11063 `(("bundler" ,bundler)
11064 ("ruby-yard" ,ruby-yard)
11065 ("ruby-mocha" ,ruby-mocha)
11066 ("ruby-coderay" ,ruby-coderay)
11067 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
11068 ("ruby-simplecov" ,ruby-simplecov)
11069 ("ruby-rspec-2" ,ruby-rspec-2)))
11070 (arguments
11071 '(;; TODO: 1 test fails
11072 ;; Failure/Error: pdf.page_count.should == 1
11073 ;; expected: 1
11074 ;; got: 2 (using ==)
11075 ;; # ./spec/table_spec.rb:1308
11076 ;;
11077 ;; 225 examples, 1 failure
11078 #:tests? #f
11079 #:phases
11080 (modify-phases %standard-phases
11081 (add-before 'check 'patch-gemspec
11082 (lambda _
11083 (substitute* "prawn-table.gemspec"
11084 ;; Loosen the requirement for pdf-inspector
11085 (("~> 1\\.1\\.0") ">= 0")
11086 ;; Loosen the requirement for pdf-reader
11087 (("~> 1\\.2") ">= 0"))))
11088 (replace 'check
11089 (lambda* (#:key tests? #:allow-other-keys)
11090 (when tests?
11091 (invoke "rspec"))
11092 #t)))))
11093 (home-page "https://github.com/prawnpdf/prawn-table")
11094 (synopsis "Tables support for Prawn")
11095 (description "This gem provides tables support for Prawn.")
11096 (license license:gpl3+)))
11097
11098 (define-public ruby-kramdown
11099 (package
11100 (name "ruby-kramdown")
11101 (version "2.3.0")
11102 (source (origin
11103 (method url-fetch)
11104 (uri (rubygems-uri "kramdown" version))
11105 (sha256
11106 (base32
11107 "1vmw752c26ny2jwl0npn0gbyqwgz4hdmlpxnsld9qi9xhk5b1qh7"))))
11108 (build-system ruby-build-system)
11109 (arguments `(#:tests? #f)); FIXME: some test failures
11110 (native-inputs
11111 `(("ruby-prawn" ,ruby-prawn)
11112 ("ruby-prawn-table" ,ruby-prawn-table)))
11113 (home-page "https://kramdown.gettalong.org/")
11114 (synopsis "Markdown parsing and converting library")
11115 (description "Kramdown is a library for parsing and converting a superset
11116 of Markdown. It is completely written in Ruby, supports standard Markdown
11117 (with some minor modifications) and various extensions that have been made
11118 popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
11119 (license license:expat)))
11120
11121 (define-public ruby-kramdown-parser-gfm
11122 (package
11123 (name "ruby-kramdown-parser-gfm")
11124 (version "1.1.0")
11125 (source
11126 (origin
11127 (method url-fetch)
11128 (uri (rubygems-uri "kramdown-parser-gfm" version))
11129 (sha256
11130 (base32 "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv"))))
11131 (build-system ruby-build-system)
11132 (arguments
11133 `(#:tests? #f)) ;no rakefile
11134 (propagated-inputs
11135 `(("ruby-kramdown" ,ruby-kramdown)))
11136 (synopsis "Kramdown parser for the GFM dialect of Markdown")
11137 (description
11138 "This is a parser for kramdown that converts Markdown documents in the
11139 GFM dialect to HTML.")
11140 (home-page "https://github.com/kramdown/parser-gfm")
11141 (license license:expat)))
11142
11143 (define-public ruby-http-parser.rb
11144 (package
11145 (name "ruby-http-parser.rb")
11146 (version "0.6.0")
11147 (source
11148 (origin
11149 (method url-fetch)
11150 (uri (rubygems-uri "http_parser.rb" version))
11151 (sha256
11152 (base32
11153 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
11154 (build-system ruby-build-system)
11155 (arguments
11156 ;; No tests
11157 `(#:tests? #f))
11158 (native-inputs
11159 `(("ruby-rake-compiler" ,ruby-rake-compiler)
11160 ("ruby-rspec" ,ruby-rspec)))
11161 (home-page "https://github.com/tmm1/http_parser.rb")
11162 (synopsis "HTTP parser un Ruby")
11163 (description "This gem is a simple callback-based HTTP request/response
11164 parser for writing http servers, clients and proxies.")
11165 (license license:expat)))
11166
11167 (define-public ruby-em-websocket
11168 (package
11169 (name "ruby-em-websocket")
11170 (version "0.5.1")
11171 (source
11172 (origin
11173 (method url-fetch)
11174 (uri (rubygems-uri "em-websocket" version))
11175 (sha256
11176 (base32
11177 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
11178 (build-system ruby-build-system)
11179 (arguments
11180 ;; No tests
11181 `(#:tests? #f))
11182 (propagated-inputs
11183 `(("ruby-eventmachine" ,ruby-eventmachine)
11184 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
11185 (native-inputs
11186 `(("bundler" ,bundler)
11187 ("ruby-rspec" ,ruby-rspec)))
11188 (home-page "https://github.com/igrigorik/em-websocket")
11189 (synopsis "EventMachine based WebSocket server")
11190 (description "Em-websocket is an EventMachine based WebSocket server
11191 implementation.")
11192 (license license:expat)))
11193
11194 (define-public ruby-rouge
11195 (package
11196 (name "ruby-rouge")
11197 (version "3.21.0")
11198 (source (origin
11199 (method url-fetch)
11200 (uri (rubygems-uri "rouge" version))
11201 (sha256
11202 (base32
11203 "1agrrmj88k9jkk36ra1ml2c1jffpp595pkxmcla74ac9ia09vn3s"))))
11204 (build-system ruby-build-system)
11205 (arguments `(#:tests? #f)); No rakefile
11206 (home-page "http://rouge.jneen.net/")
11207 (synopsis "Code highlighter")
11208 (description "Rouge is a code highlighter written in Ruby. It supports more
11209 than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
11210 is compatible with stylesheets designed for pygments.")
11211 (license (list
11212 ;; rouge is licensed under expat
11213 license:expat
11214 ;; pygments is licensed under bsd-2
11215 license:bsd-2))))
11216
11217 (define-public ruby-hashie
11218 (package
11219 (name "ruby-hashie")
11220 (version "3.6.0")
11221 (source (origin
11222 (method url-fetch)
11223 (uri (rubygems-uri "hashie" version))
11224 (sha256
11225 (base32
11226 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
11227 (build-system ruby-build-system)
11228 (native-inputs
11229 `(("bundler" ,bundler)))
11230 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
11231 (home-page "https://github.com/intridea/hashie")
11232 (synopsis "Extensions to Ruby Hashes")
11233 (description "Hashie is a collection of classes and mixins that make Ruby
11234 hashes more powerful.")
11235 (license license:expat)))
11236
11237 (define-public ruby-heredoc-unindent
11238 (package
11239 (name "ruby-heredoc-unindent")
11240 (version "1.2.0")
11241 (source (origin
11242 (method url-fetch)
11243 (uri (rubygems-uri "heredoc_unindent" version))
11244 (sha256
11245 (base32
11246 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
11247 (build-system ruby-build-system)
11248 (native-inputs
11249 `(("ruby-hoe" ,ruby-hoe)))
11250 (home-page "https://github.com/adrianomitre/heredoc_unindent")
11251 (synopsis "Heredoc indentation cleaner")
11252 (description "This gem removes common margin from indented strings, such
11253 as the ones produced by indented heredocs. In other words, it strips out
11254 leading whitespace chars at the beginning of each line, but only as much as
11255 the line with the smallest margin.
11256
11257 It is acknowledged that many strings defined by heredocs are just code and
11258 fact is that most parsers are insensitive to indentation. If, however, the
11259 strings are to be used otherwise, be it for printing or testing, the extra
11260 indentation will probably be an issue and hence this gem.")
11261 (license license:expat)))
11262
11263 (define-public ruby-safe-yaml
11264 (package
11265 (name "ruby-safe-yaml")
11266 (version "1.0.5")
11267 (source
11268 (origin
11269 (method git-fetch)
11270 (uri (git-reference
11271 (url "https://github.com/dtao/safe_yaml")
11272 (commit version)))
11273 (file-name (git-file-name name version))
11274 (sha256
11275 (base32
11276 "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg"))))
11277 (build-system ruby-build-system)
11278 (native-inputs
11279 `(("ruby-rspec" ,ruby-rspec)
11280 ("ruby-hashie" ,ruby-hashie)
11281 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
11282 (arguments
11283 '(#:test-target "spec"
11284 #:phases
11285 (modify-phases %standard-phases
11286 (add-before 'check 'set-TZ
11287 (lambda _
11288 ;; This test is dependent on the timezone
11289 ;; spec/transform/to_date_spec.rb:35
11290 ;; # SafeYAML::Transform::ToDate converts times to the local
11291 ;; timezone
11292 (setenv "TZ" "UTC-11")
11293 #t)))))
11294 (home-page "https://github.com/dtao/safe_yaml")
11295 (synopsis "YAML parser")
11296 (description "The SafeYAML gem provides an alternative implementation of
11297 YAML.load suitable for accepting user input in Ruby applications.")
11298 (license license:expat)))
11299
11300 (define-public ruby-mercenary
11301 (package
11302 (name "ruby-mercenary")
11303 (version "0.4.0")
11304 (source (origin
11305 (method url-fetch)
11306 (uri (rubygems-uri "mercenary" version))
11307 (sha256
11308 (base32
11309 "0f2i827w4lmsizrxixsrv2ssa3gk1b7lmqh8brk8ijmdb551wnmj"))))
11310 (build-system ruby-build-system)
11311 (arguments `(#:test-target "spec"))
11312 (native-inputs
11313 `(("bundler" ,bundler)))
11314 (home-page "https://github.com/jekyll/mercenary")
11315 (synopsis "Command-line apps library in Ruby")
11316 (description "Mercenary is a lightweight and flexible library for writing
11317 command-line apps in Ruby.")
11318 (license license:expat)))
11319
11320 (define-public ruby-liquid
11321 (package
11322 (name "ruby-liquid")
11323 (version "4.0.0")
11324 (source (origin
11325 (method url-fetch)
11326 (uri (rubygems-uri "liquid" version))
11327 (sha256
11328 (base32
11329 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
11330 (build-system ruby-build-system)
11331 (arguments `(#:tests? #f)); No rakefile
11332 (home-page "https://shopify.github.io/liquid/")
11333 (synopsis "Template language")
11334 (description "Liquid is a template language written in Ruby. It is used
11335 to load dynamic content on storefronts.")
11336 (license license:expat)))
11337
11338 (define-public ruby-forwardable-extended
11339 (package
11340 (name "ruby-forwardable-extended")
11341 (version "2.6.0")
11342 (source (origin
11343 (method url-fetch)
11344 (uri (rubygems-uri "forwardable-extended" version))
11345 (sha256
11346 (base32
11347 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
11348 (build-system ruby-build-system)
11349 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
11350 (home-page "https://github.com/envygeeks/forwardable-extended")
11351 (synopsis "Delegation to hashes and instance variables in Forwardable")
11352 (description "Forwardable Extended provides more @code{Forwardable}
11353 methods for your source as @code{Forwardable::Extended}.")
11354 (license license:expat)))
11355
11356 (define-public ruby-pathutil
11357 (package
11358 (name "ruby-pathutil")
11359 (version "0.16.2")
11360 (source (origin
11361 (method url-fetch)
11362 (uri (rubygems-uri "pathutil" version))
11363 (sha256
11364 (base32
11365 "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"))))
11366 (build-system ruby-build-system)
11367 (propagated-inputs
11368 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
11369 (native-inputs
11370 `(("bundler" ,bundler)
11371 ("ruby-rspec" ,ruby-rspec)))
11372 ;; Fails with: cannot load such file --
11373 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
11374 (arguments `(#:tests? #f))
11375 (home-page "https://github.com/envygeeks/pathutil")
11376 (synopsis "Extended implementation of Pathname")
11377 (description "Pathutil tries to be a faster pure Ruby implementation of
11378 Pathname.")
11379 (license license:expat)))
11380
11381 (define-public ruby-terminal-table
11382 (package
11383 (name "ruby-terminal-table")
11384 (version "2.0.0")
11385 (source
11386 (origin
11387 (method url-fetch)
11388 (uri (rubygems-uri "terminal-table" version))
11389 (sha256
11390 (base32
11391 "18rbrh464ysqbdv53iwj0r8frshn65566kyj044cp3x9c2754jwh"))))
11392 (arguments
11393 '(#:phases
11394 (modify-phases %standard-phases
11395 (add-before 'check 'remove-gemfile-lock
11396 (lambda _
11397 (delete-file "Gemfile.lock")))
11398 (add-before 'check 'remove-unnecessary-dependencies
11399 (lambda _
11400 (substitute* "terminal-table.gemspec"
11401 (("s.add_runtime_dependency.*") "\n")
11402 (("s.add_development_dependency.*") "\n"))
11403 (substitute* "Gemfile"
11404 ((".*tins.*") "\n"))))
11405 (replace 'check
11406 (lambda* (#:key tests? #:allow-other-keys)
11407 (when tests?
11408 (invoke "rspec")))))))
11409 (build-system ruby-build-system)
11410 (propagated-inputs
11411 `(("ruby-unicode-display-width" ,ruby-unicode-display-width)))
11412 (native-inputs
11413 `(("ruby-rspec" ,ruby-rspec)))
11414 (home-page "https://github.com/tj/terminal-table")
11415 (synopsis "Simple, feature rich ASCII table generation library")
11416 (description
11417 "Terminal Table is a fast and simple, yet feature rich
11418 table generator written in Ruby. It supports ASCII and
11419 Unicode formatted tables.")
11420 (license license:expat)))
11421
11422 (define-public jekyll
11423 (package
11424 (name "jekyll")
11425 (version "4.2.0")
11426 (source (origin
11427 (method url-fetch)
11428 (uri (rubygems-uri "jekyll" version))
11429 (sha256
11430 (base32
11431 "0cqkh78jw8scrajyx5nla0vwm9fvp2qql3kdcvvplcq9mazy8snq"))))
11432 (build-system ruby-build-system)
11433 (arguments
11434 ;; No rakefile, but a test subdirectory.
11435 `(#:tests? #f
11436 #:phases
11437 (modify-phases %standard-phases
11438 (add-before 'build 'fix-i18n
11439 (lambda _
11440 (substitute* ".gemspec"
11441 (("~> 0.7") ">= 0.7")
11442 (("~> 1.14") ">= 1.14"))
11443 #t)))))
11444 (propagated-inputs
11445 `(("ruby-addressable" ,ruby-addressable)
11446 ("ruby-colorator" ,ruby-colorator)
11447 ("ruby-em-websocket" ,ruby-em-websocket)
11448 ("ruby-i18n" ,ruby-i18n)
11449 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
11450 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
11451 ("ruby-kramdown" ,ruby-kramdown-parser-gfm)
11452 ("ruby-liquid" ,ruby-liquid)
11453 ("ruby-mercenary" ,ruby-mercenary)
11454 ("ruby-pathutil" ,ruby-pathutil)
11455 ("ruby-rouge" ,ruby-rouge)
11456 ("ruby-safe-yaml" ,ruby-safe-yaml)
11457 ("ruby-sassc" ,ruby-sassc)
11458 ("ruby-terminal-table" ,ruby-terminal-table)))
11459 (home-page "https://jekyllrb.com/")
11460 (synopsis "Static site generator")
11461 (description "Jekyll is a simple, blog aware, static site generator.")
11462 (license license:expat)))
11463
11464 (define-public ruby-jekyll-paginate-v2
11465 (package
11466 (name "ruby-jekyll-paginate-v2")
11467 (version "3.0.0")
11468 (source (origin
11469 (method url-fetch)
11470 (uri (rubygems-uri "jekyll-paginate-v2" version))
11471 (sha256
11472 (base32
11473 "1qzlqhpiqz28624fp0ak76hfy7908w6kpx62v7z43aiwjv0yc6q0"))))
11474 (build-system ruby-build-system)
11475 (propagated-inputs
11476 `(("jekyll" ,jekyll)))
11477 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
11478 (synopsis "Pagination Generator for Jekyll 3")
11479 (description "The Pagination Generator forms the core of the pagination
11480 logic in Jekyll. It calculates and generates the pagination pages.")
11481 (license license:expat)))
11482
11483 (define-public ruby-faraday
11484 (package
11485 (name "ruby-faraday")
11486 (version "0.15.4")
11487 (source
11488 (origin
11489 (method url-fetch)
11490 (uri (rubygems-uri "faraday" version))
11491 (sha256
11492 (base32
11493 "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0"))))
11494 (build-system ruby-build-system)
11495 (arguments
11496 '(#:tests? #f))
11497 (propagated-inputs
11498 `(("ruby-multipart-post" ,ruby-multipart-post)))
11499 (synopsis "Ruby HTTP/REST API client library")
11500 (description
11501 "Faraday is a HTTP/REST API client library which provides a common
11502 interface over different adapters.")
11503 (home-page "https://github.com/lostisland/faraday")
11504 (license license:expat)))
11505
11506 (define-public ruby-nio4r
11507 (package
11508 (name "ruby-nio4r")
11509 (version "2.5.2")
11510 (source
11511 (origin
11512 (method url-fetch)
11513 (uri (rubygems-uri "nio4r" version))
11514 (sha256
11515 (base32
11516 "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c"))))
11517 (build-system ruby-build-system)
11518 (arguments
11519 '(#:phases
11520 (modify-phases %standard-phases
11521 (add-after 'unpack 'remove-unnecessary-dependencies
11522 (lambda _
11523 (substitute* "spec/spec_helper.rb"
11524 ;; Coveralls is for uploading test coverage information to an
11525 ;; online service, and thus unnecessary for building the Guix
11526 ;; package
11527 (("require \"coveralls\"") "")
11528 (("Coveralls\\.wear!") "")
11529 ;; Remove rspec/retry as we are not retrying the tests
11530 (("require \"rspec/retry\"") "")
11531 (("config\\.display_try_failure_messages = true") "")
11532 (("config\\.verbose_retry = true") ""))
11533 #t))
11534 (add-before 'check 'compile
11535 (lambda _
11536 (invoke "rake" "compile")
11537 #t))
11538 (replace 'check
11539 (lambda* (#:key tests? #:allow-other-keys)
11540 (when tests?
11541 (invoke "rspec"))
11542 #t)))))
11543 (native-inputs
11544 `(("bundler" ,bundler)
11545 ("ruby-rake-compiler" ,ruby-rake-compiler)
11546 ("ruby-rspec" ,ruby-rspec)
11547 ("ruby-rubocop" ,ruby-rubocop)))
11548 (synopsis "New I/O for Ruby")
11549 (description
11550 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
11551 for scalable network clients and servers.")
11552 (home-page "https://github.com/socketry/nio4r")
11553 (license license:expat)))
11554
11555 (define-public ruby-globalid
11556 (package
11557 (name "ruby-globalid")
11558 (version "0.4.2")
11559 (source
11560 (origin
11561 (method url-fetch)
11562 (uri (rubygems-uri "globalid" version))
11563 (sha256
11564 (base32
11565 "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"))))
11566 (build-system ruby-build-system)
11567 (arguments
11568 '(;; No included tests
11569 #:tests? #f))
11570 (propagated-inputs
11571 `(("ruby-activesupport" ,ruby-activesupport)))
11572 (synopsis "Generate URIs idenfitying model instances in Ruby")
11573 (description
11574 "@code{GlobalID} provides a way to generate URIs from a model in Ruby that
11575 uniquely identify it.")
11576 (home-page "https://rubyonrails.org/")
11577 (license license:expat)))
11578
11579 (define-public ruby-sprockets
11580 (package
11581 (name "ruby-sprockets")
11582 (version "3.7.2")
11583 (source
11584 (origin
11585 (method url-fetch)
11586 (uri (rubygems-uri "sprockets" version))
11587 (sha256
11588 (base32
11589 "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"))))
11590 (build-system ruby-build-system)
11591 (arguments
11592 '(;; No included tests
11593 #:tests? #f))
11594 (propagated-inputs
11595 `(("ruby-concurrent" ,ruby-concurrent)
11596 ("ruby-rack" ,ruby-rack)))
11597 (synopsis "Sprockets is a Rack-based asset packaging system")
11598 (description
11599 "Sprockets is a Rack-based asset packaging system that concatenates and
11600 serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
11601 (home-page "https://github.com/rails/sprockets")
11602 (license license:expat)))
11603
11604 (define-public ruby-mustache
11605 (package
11606 (name "ruby-mustache")
11607 (version "1.1.1")
11608 (source
11609 (origin
11610 (method url-fetch)
11611 (uri (rubygems-uri "mustache" version))
11612 (sha256
11613 (base32 "1l0p4wx15mi3wnamfv92ipkia4nsx8qi132c6g51jfdma3fiz2ch"))))
11614 (build-system ruby-build-system)
11615 (native-inputs
11616 `(("ruby-simplecov" ,ruby-simplecov)))
11617 (synopsis "framework-agnostic way to render logic-free views")
11618 (description
11619 "Mustache is a framework-agnostic way to render logic-free views.
11620 Think of Mustache as a replacement for your views. Instead of views
11621 consisting of ERB or HAML with random helpers and arbitrary logic,
11622 your views are broken into two parts: a Ruby class and an HTML
11623 template.")
11624 (home-page "https://github.com/mustache/mustache")
11625 (license license:expat)))
11626
11627 (define-public ruby-mustermann
11628 (package
11629 (name "ruby-mustermann")
11630 (version "1.0.3")
11631 (source
11632 (origin
11633 (method url-fetch)
11634 (uri (rubygems-uri "mustermann" version))
11635 (sha256
11636 (base32
11637 "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1"))))
11638 (build-system ruby-build-system)
11639 (arguments
11640 ;; No tests.
11641 '(#:tests? #f))
11642 (synopsis "Library implementing patterns that behave like regular expressions")
11643 (description "Given a string pattern, Mustermann will turn it into an
11644 object that behaves like a regular expression and has comparable performance
11645 characteristics.")
11646 (home-page "https://github.com/sinatra/mustermann")
11647 (license license:expat)))
11648
11649 (define-public ruby-html-proofer
11650 (package
11651 (name "ruby-html-proofer")
11652 (version "3.18.5")
11653 (source
11654 (origin
11655 (method git-fetch)
11656 (uri (git-reference
11657 (url "https://github.com/gjtorikian/html-proofer")
11658 (commit (string-append "v" version))))
11659 (file-name (git-file-name name version))
11660 (sha256
11661 (base32
11662 "1pxb0fajb3l3lm7sqj548qwl7vx6sx3jy7n4cns9d4lqx7s9r9xb"))))
11663 (build-system ruby-build-system)
11664 (arguments
11665 `(;; FIXME: Tests depend on rubocop-standard.
11666 #:tests? #f))
11667 (native-inputs
11668 `(("ruby-awesome-print" ,ruby-awesome-print)
11669 ("ruby-redcarpet" ,ruby-redcarpet)
11670 ("ruby-rspec" ,ruby-rspec)
11671 ("ruby-rubocop" ,ruby-rubocop)
11672 ("ruby-rubocop-performance" ,ruby-rubocop-performance)
11673 ("ruby-pry-byebug" ,ruby-pry-byebug)))
11674 (propagated-inputs
11675 `(("ruby-addressable" ,ruby-addressable)
11676 ("ruby-mercenary" ,ruby-mercenary)
11677 ("ruby-nokogumbo" ,ruby-nokogumbo)
11678 ("ruby-parallel" ,ruby-parallel)
11679 ("ruby-rainbow" ,ruby-rainbow)
11680 ("ruby-typhoeus" ,ruby-typhoeus)
11681 ("ruby-yell" ,ruby-yell)))
11682 (synopsis "Test your rendered HTML files to make sure they're accurate")
11683 (description
11684 "HTMLProofer is a set of tests to validate your HTML output. These
11685 tests check if your image references are legitimate, if they have alt tags,
11686 if your internal links are working, and so on. It's intended to be an
11687 all-in-one checker for your output.")
11688 (home-page "https://github.com/gjtorikian/html-proofer")
11689 (license license:expat)))
11690
11691 (define-public ruby-htmlentities
11692 (package
11693 (name "ruby-htmlentities")
11694 (version "4.3.4")
11695 (source
11696 (origin
11697 (method url-fetch)
11698 (uri (rubygems-uri "htmlentities" version))
11699 (sha256
11700 (base32
11701 "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"))))
11702 (build-system ruby-build-system)
11703 (arguments
11704 `(#:phases
11705 (modify-phases %standard-phases
11706 (replace 'check
11707 (lambda _
11708 (map (lambda (file)
11709 (invoke "ruby" "-Itest" file))
11710 (find-files "./test" ".*_test\\.rb")))))))
11711 (synopsis "Encode and decode (X)HTML entities")
11712 (description
11713 "This package provides a module for encoding and decoding (X)HTML
11714 entities.")
11715 (home-page "https://github.com/threedaymonk/htmlentities")
11716 (license license:expat)))
11717
11718 (define-public ruby-sinatra
11719 (package
11720 (name "ruby-sinatra")
11721 (version "2.0.8.1")
11722 (source
11723 (origin
11724 (method url-fetch)
11725 (uri (rubygems-uri "sinatra" version))
11726 (sha256
11727 (base32
11728 "0riy3hwjab1mr73jcqx3brmbmwspnw3d193j06a5f0fy1w35z15q"))))
11729 (build-system ruby-build-system)
11730 (arguments
11731 `(#:phases
11732 (modify-phases %standard-phases
11733 ;; See: https://github.com/sinatra/sinatra/issues/1578.
11734 (add-after 'extract-gemspec 'fix-slow-doc-generation
11735 (lambda _
11736 (substitute* "sinatra.gemspec"
11737 (("\"README.rdoc\"\\.freeze," all)
11738 (string-append all " \"--exclude=.*\\.md\".freeze,")))
11739 #t)))))
11740 (propagated-inputs
11741 `(("ruby-mustermann" ,ruby-mustermann)
11742 ("ruby-rack" ,ruby-rack)
11743 ("ruby-rack-protection" ,ruby-rack-protection)
11744 ("ruby-tilt" ,ruby-tilt)))
11745 (synopsis "DSL for quick web applications creation in Ruby")
11746 (description
11747 "Sinatra is a DSL for quickly creating web applications in Ruby with
11748 minimal effort.")
11749 (home-page "http://sinatrarb.com/")
11750 (license license:expat)))
11751
11752 (define-public ruby-thin
11753 (package
11754 (name "ruby-thin")
11755 (version "1.7.2")
11756 (source
11757 (origin
11758 (method url-fetch)
11759 (uri (rubygems-uri "thin" version))
11760 (sha256
11761 (base32
11762 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
11763 (build-system ruby-build-system)
11764 (arguments
11765 ;; No tests.
11766 '(#:tests? #f))
11767 (propagated-inputs
11768 `(("ruby-daemons" ,ruby-daemons)
11769 ("ruby-eventmachine" ,ruby-eventmachine)
11770 ("ruby-rack" ,ruby-rack)))
11771 (synopsis "Thin and fast web server for Ruby")
11772 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
11773 @itemize
11774 @item the Mongrel parser,
11775 @item Event Machine, a network I/O library with high scalability, performance
11776 and stability,
11777 @item Rack, a minimal interface between webservers and Ruby frameworks.
11778 @end itemize\n")
11779 (home-page "https://github.com/macournoyer/thin")
11780 (license license:ruby)))
11781
11782 (define-public ruby-skinny
11783 (package
11784 (name "ruby-skinny")
11785 (version "0.2.4")
11786 (source
11787 (origin
11788 (method url-fetch)
11789 (uri (rubygems-uri "skinny" version))
11790 (sha256
11791 (base32
11792 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
11793 (build-system ruby-build-system)
11794 (arguments
11795 '(#:tests? #f ; No included tests
11796 #:phases
11797 (modify-phases %standard-phases
11798 (add-before 'build 'patch-gemspec
11799 (lambda _
11800 (substitute* ".gemspec"
11801 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
11802 "<eventmachine>, [\">= 1.0.0\"")
11803 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, ["))
11804 #t)))))
11805 (propagated-inputs
11806 `(("ruby-eventmachine" ,ruby-eventmachine)
11807 ("ruby-thin" ,ruby-thin)))
11808 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
11809 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
11810 the Thin library.")
11811 (home-page "https://github.com/sj26/skinny")
11812 (license license:expat)))
11813
11814 (define-public ruby-sys-filesystem
11815 (package
11816 (name "ruby-sys-filesystem")
11817 (version "1.3.4")
11818 (source (origin
11819 (method url-fetch)
11820 (uri (rubygems-uri "sys-filesystem" version))
11821 (sha256
11822 (base32
11823 "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01"))))
11824 (build-system ruby-build-system)
11825 (arguments
11826 '(#:phases (modify-phases %standard-phases
11827 (add-before 'check 'set-HOME
11828 (lambda _
11829 ;; Some tests attempt to stat $HOME. Let them.
11830 (setenv "HOME" "/tmp")
11831 #t)))))
11832 (propagated-inputs
11833 `(("ruby-ffi" ,ruby-ffi)))
11834 (native-inputs
11835 `(("ruby-mkmf-lite" ,ruby-mkmf-lite)))
11836 (synopsis "Gather file system information")
11837 (description
11838 "The @code{sys-filesystem} library provides a cross-platform interface
11839 for gathering file system information, such as disk space and mount points.")
11840 (home-page "https://github.com/djberg96/sys-filesystem")
11841 (license license:asl2.0)))
11842
11843 (define-public mailcatcher
11844 (package
11845 (name "mailcatcher")
11846 (version "0.7.1")
11847 (source
11848 (origin
11849 (method url-fetch)
11850 (uri (rubygems-uri "mailcatcher" version))
11851 (sha256
11852 (base32
11853 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
11854 (build-system ruby-build-system)
11855 (arguments
11856 ;; Tests require web/assets which is not included in the output. We
11857 ;; might be able to fix this by adding the Git repository to the GEM_PATH
11858 ;; of the tests. See ruby-mysql2.
11859 '(#:tests? #f
11860 #:phases
11861 (modify-phases %standard-phases
11862 (add-before 'build 'patch-gemspec
11863 (lambda _
11864 (substitute* ".gemspec"
11865 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
11866 "<eventmachine>, [\">= 1.0.9.1")
11867 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
11868 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
11869 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))
11870 #t))
11871 (add-before 'build 'loosen-dependency-contraint
11872 (lambda _
11873 (substitute* "lib/mail_catcher.rb"
11874 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
11875 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
11876 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
11877 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))
11878 #t)))))
11879 (inputs
11880 `(("ruby-eventmachine" ,ruby-eventmachine)
11881 ("ruby-mail" ,ruby-mail)
11882 ("ruby-rack" ,ruby-rack)
11883 ("ruby-sinatra" ,ruby-sinatra)
11884 ("ruby-skinny" ,ruby-skinny)
11885 ("ruby-sqlite3" ,ruby-sqlite3)
11886 ("ruby-thin" ,ruby-thin)))
11887 (synopsis "SMTP server which catches messages to display them a browser")
11888 (description
11889 "MailCatcher runs a super simple SMTP server which catches any message
11890 sent to it to display in a web interface. Run mailcatcher, set your favourite
11891 app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
11892 then check out http://127.0.0.1:1080 to see the mail.")
11893 (home-page "https://mailcatcher.me")
11894 (license license:expat)))
11895
11896 (define-public ruby-backport
11897 (package
11898 (name "ruby-backport")
11899 (version "1.1.2")
11900 (source
11901 (origin
11902 ;; The gem does not include test code, so fetch from the Git repository.
11903 (method git-fetch)
11904 (uri (git-reference
11905 (url "https://github.com/castwide/backport")
11906 (commit (string-append "v" version))))
11907 (file-name (git-file-name name version))
11908 (sha256
11909 (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2"))))
11910 (build-system ruby-build-system)
11911 (arguments
11912 `(#:test-target "spec"))
11913 (native-inputs
11914 `(("bundler" ,bundler)
11915 ("ruby-rspec" ,ruby-rspec)))
11916 (inputs
11917 `(("ruby-simplecov" ,ruby-simplecov)))
11918 (synopsis "Pure Ruby library for event-driven IO")
11919 (description
11920 "This package provides a pure Ruby library for event-driven IO.")
11921 (home-page "https://github.com/castwide/backport")
11922 (license license:expat)))
11923
11924 (define-public ruby-json-schema
11925 (package
11926 (name "ruby-json-schema")
11927 (version "2.8.1")
11928 (source
11929 (origin
11930 (method url-fetch)
11931 (uri (rubygems-uri "json-schema" version))
11932 (sha256
11933 (base32
11934 "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5"))))
11935 (build-system ruby-build-system)
11936 (arguments
11937 `(#:tests? #f ; no tests
11938 #:phases
11939 (modify-phases %standard-phases
11940 (replace 'build
11941 (lambda _
11942 (invoke "gem" "build" ".gemspec"))))))
11943 (propagated-inputs
11944 `(("ruby-addressable" ,ruby-addressable)))
11945 (synopsis "Ruby JSON Schema Validator")
11946 (description "This library provides Ruby with an interface for validating
11947 JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy
11948 support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1
11949 is also included.")
11950 (home-page "https://github.com/ruby-json-schema/json-schema")
11951 (license license:expat)))
11952
11953 (define-public swagger-diff
11954 (package
11955 (name "swagger-diff")
11956 (version "1.1.2")
11957 (source
11958 (origin
11959 (method url-fetch)
11960 (uri (rubygems-uri "swagger-diff" version))
11961 (sha256
11962 (base32
11963 "1hxx50nga1bqn254iqjcdwkc9c72364ks9lyjyw10ajz0l0ly7sn"))))
11964 (build-system ruby-build-system)
11965 (arguments
11966 `(#:test-target "spec"
11967 #:phases
11968 (modify-phases %standard-phases
11969 ;; Don't run or require rubocop, the code linting tool, as this is a
11970 ;; bit unnecessary.
11971 (add-after 'unpack 'dont-run-rubocop
11972 (lambda _
11973 (substitute* "Rakefile"
11974 ((".*rubocop.*") "")
11975 ((".*RuboCop.*") ""))
11976 #t)))))
11977 (propagated-inputs
11978 `(("ruby-json-schema" ,ruby-json-schema)))
11979 (native-inputs
11980 `(("bundler" ,bundler)
11981 ("ruby-rspec-core" ,ruby-rspec-core)
11982 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
11983 (synopsis
11984 "Compare Open API Initiative specification files")
11985 (description
11986 "Swagger::Diff is a utility for comparing two different Open API
11987 Initiative (OAI) specifications (formerly known as Swagger specifications).
11988 It is intended to determine whether a newer API specification is
11989 backwards-compatible with an older API specification.")
11990 (home-page "https://github.com/civisanalytics/swagger-diff")
11991 (license license:bsd-3)))
11992
11993 (define-public ruby-reverse-markdown
11994 (package
11995 (name "ruby-reverse-markdown")
11996 (version "1.1.0")
11997 (source
11998 (origin
11999 (method url-fetch)
12000 (uri (rubygems-uri "reverse_markdown" version))
12001 (sha256
12002 (base32
12003 "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg"))))
12004 (build-system ruby-build-system)
12005 (propagated-inputs
12006 `(("ruby-nokogiri" ,ruby-nokogiri)))
12007 (native-inputs
12008 `(("bundler" ,bundler)
12009 ("ruby-rspec" ,ruby-rspec)
12010 ("ruby-kramdown" ,ruby-kramdown)
12011 ("ruby-simplecov" ,ruby-simplecov)))
12012 (arguments
12013 `(#:phases
12014 (modify-phases %standard-phases
12015 (replace 'check
12016 (lambda* (#:key tests? #:allow-other-keys)
12017 (when tests?
12018 (invoke "rspec"))
12019 #t)))))
12020 (synopsis "Convert HTML into Markdown")
12021 (description
12022 "This Ruby module allows you to map simple HTML back into
12023 Markdown---e.g., if you want to import existing HTML data in your
12024 application.")
12025 (home-page "https://github.com/xijo/reverse_markdown")
12026 (license license:wtfpl2)))
12027
12028 (define-public ruby-solargraph
12029 (package
12030 (name "ruby-solargraph")
12031 (version "0.36.0")
12032 (source
12033 (origin
12034 (method url-fetch)
12035 (uri (rubygems-uri "solargraph" version))
12036 (sha256
12037 (base32
12038 "0b93xzkgd1h06da9gdnwivj1mzbil8lc072y2838dy6i7bxgpy9i"))))
12039 (build-system ruby-build-system)
12040 (propagated-inputs
12041 `(("ruby-backport" ,ruby-backport)
12042 ("bundler" ,bundler)
12043 ("ruby-htmlentities" ,ruby-htmlentities)
12044 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
12045 ("ruby-maruku" ,ruby-maruku)
12046 ("ruby-nokogiri" ,ruby-nokogiri)
12047 ("ruby-parser" ,ruby-parser)
12048 ("ruby-reverse-markdown" ,ruby-reverse-markdown)
12049 ("ruby-rubocop" ,ruby-rubocop)
12050 ("ruby-thor" ,ruby-thor)
12051 ("ruby-tilt" ,ruby-tilt)
12052 ("ruby-yard" ,ruby-yard)))
12053 (native-inputs
12054 `(("ruby-rspec" ,ruby-rspec)
12055 ("ruby-pry" ,ruby-pry)
12056 ("ruby-simplecov" ,ruby-simplecov)
12057 ("ruby-webmock" ,ruby-webmock)))
12058 ;; FIXME: can't figure out how to run the tests properly:
12059
12060 ;; An error occurred while loading spec_helper.
12061 ;; Failure/Error: return gem_original_require(path)
12062 ;; LoadError:
12063 ;; cannot load such file -- spec_helper
12064 (arguments
12065 '(#:tests? #f
12066 #:phases
12067 (modify-phases %standard-phases
12068 (replace 'check
12069 (lambda* (#:key tests? #:allow-other-keys)
12070 (when tests?
12071 (invoke "rspec"))
12072 #t)))))
12073 (synopsis
12074 "IDE tools for code completion, inline documentation, and static analysis")
12075 (description
12076 "Solargraph provides a comprehensive suite of tools for Ruby
12077 programming: intellisense, diagnostics, inline documentation, and type
12078 checking.")
12079 (home-page "https://solargraph.org/")
12080 (license license:expat)))
12081
12082 (define-public ruby-wayback-machine-downloader
12083 (package
12084 (name "ruby-wayback-machine-downloader")
12085 (version "2.2.1")
12086 (source
12087 (origin
12088 (method url-fetch)
12089 (uri (rubygems-uri
12090 "wayback_machine_downloader"
12091 version))
12092 (sha256
12093 (base32
12094 "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2"))))
12095 (build-system ruby-build-system)
12096 (arguments
12097 '(#:tests? #f)) ; no tests
12098 (synopsis "Download archived websites from the Wayback Machine")
12099 (description
12100 "Wayback Machine Downloader is a command line tool for downloading
12101 websites from the Internet Archive's Wayback Machine (archive.org).
12102 It allows fine grained control over what to download by specifying
12103 which snapshots to consider and what files to include.")
12104 (home-page
12105 "https://github.com/hartator/wayback-machine-downloader")
12106 (license license:expat)))
12107
12108 (define-public ruby-zeitwerk
12109 (package
12110 (name "ruby-zeitwerk")
12111 (version "2.4.2")
12112 (source
12113 (origin
12114 (method git-fetch)
12115 (uri (git-reference
12116 ;; No tests in the released gem.
12117 (url "https://github.com/fxn/zeitwerk")
12118 (commit (string-append "v" version))))
12119 (file-name (git-file-name name version))
12120 (sha256
12121 (base32
12122 "119fgdyb57gmss2yvfwfr47wcy8nny38sai72446krpihyavpizw"))))
12123 (build-system ruby-build-system)
12124 (native-inputs
12125 `(("ruby-minitest" ,ruby-minitest)
12126 ("ruby-minitest-focus" ,ruby-minitest-focus)
12127 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
12128 (synopsis "Efficient and thread-safe code loader for Ruby")
12129 (description
12130 "Zeitwerk implements constant autoloading with Ruby semantics. Each gem
12131 and application may have their own independent autoloader, with its own
12132 configuration, inflector, and logger. Supports autoloading, reloading, and
12133 eager loading.")
12134 (home-page "https://github.com/fxn/zeitwerk")
12135 (license license:expat)))
12136
12137 (define-public ruby-wwtd
12138 (package
12139 (name "ruby-wwtd")
12140 (version "1.4.1")
12141 (home-page "https://github.com/grosser/wwtd")
12142 (source (origin
12143 (method git-fetch)
12144 (uri (git-reference
12145 (url home-page)
12146 (commit (string-append "v" version))))
12147 (file-name (git-file-name name version))
12148 (sha256
12149 (base32
12150 "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2"))
12151 (modules '((guix build utils)))
12152 (snippet
12153 '(begin
12154 ;; Remove bundled library.
12155 (delete-file "spec/rake-12.3.0.gem")
12156 #t))))
12157 (build-system ruby-build-system)
12158 (arguments
12159 '(;; XXX: Tests need multiple versions of ruby, wants to run
12160 ;; `bundle install`, etc.
12161 #:tests? #f
12162 #:phases (modify-phases %standard-phases
12163 (replace 'replace-git-ls-files
12164 (lambda _
12165 (substitute* "wwtd.gemspec"
12166 (("git ls-files lib/ bin/`")
12167 "find lib/ bin/ -type f |sort`"))
12168 #t))
12169 (add-before 'check 'remove-version-constraints
12170 (lambda _
12171 (delete-file "Gemfile.lock")
12172 #t))
12173 (replace 'check
12174 (lambda* (#:key tests? #:allow-other-keys)
12175 (if tests?
12176 (invoke "rspec" "spec/")
12177 (format #t "test suite not run~%"))
12178 #t)))))
12179 (native-inputs
12180 `(("ruby-bump" ,ruby-bump)
12181 ("ruby-rspec" ,ruby-rspec)))
12182 (synopsis "Run @file{.travis.yml} files locally")
12183 (description
12184 "WWTD is a @dfn{Travis Simulator} that lets you run test matrices
12185 defined in @file{.travis.yml} on your local machine, using @code{rvm},
12186 @code{rbenv}, or @code{chruby} to test different versions of Ruby.")
12187 (license license:expat)))
12188
12189 (define-public ruby-rugged
12190 (package
12191 (name "ruby-rugged")
12192 (version "1.1.0")
12193 (home-page "https://www.rubydoc.info/gems/rugged")
12194 (source
12195 (origin
12196 (method url-fetch)
12197 (uri (rubygems-uri "rugged" version))
12198 (sha256
12199 (base32 "04aq913plcxjw71l5r62qgz3bx3466p0wvgyfqahg5n3nybmcwqy"))))
12200 (build-system ruby-build-system)
12201 (arguments
12202 `(#:tests? #f
12203 #:gem-flags (list "--" "--use-system-libraries")))
12204 (inputs
12205 `(("libgit2" ,libgit2)))
12206 (native-inputs
12207 `(("ruby-minitest" ,ruby-minitest)
12208 ("ruby-pry" ,ruby-pry)
12209 ("ruby-rake-compiler" ,ruby-rake-compiler)))
12210 (synopsis "Ruby bindings to the libgit2 linkable C Git library")
12211 (description "Rugged is a library for accessing libgit2 in Ruby. It gives
12212 you the speed and portability of libgit2 with the beauty of the Ruby
12213 language.")
12214 (license license:expat)))
12215
12216 (define-public ruby-yell
12217 (package
12218 (name "ruby-yell")
12219 (version "2.2.2")
12220 (source
12221 (origin
12222 (method url-fetch)
12223 (uri (rubygems-uri "yell" version))
12224 (sha256
12225 (base32
12226 "1g16kcdhdfvczn7x81jiq6afg3bdxmb73skqjyjlkp5nqcy6y5hx"))))
12227 (build-system ruby-build-system)
12228 (arguments
12229 `(#:phases
12230 (modify-phases %standard-phases
12231 (replace 'check
12232 (lambda _
12233 (invoke "rake" "examples")))))) ; there is no test target.
12234 (synopsis
12235 "Extensible logging library for Ruby")
12236 (description
12237 "Yell is a comprehensive logging replacement for Ruby. It defines
12238 multiple adapters, various log level combinations and message formatting
12239 options.")
12240 (home-page "https://github.com/rudionrails/yell")
12241 (license license:expat)))