gnu: ruby-solargraph: Update to 0.40.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 ;;; Copyright © 2020 Tomás Ortín Fernández <tomasortin@mailbox.org>
30 ;;;
31 ;;; This file is part of GNU Guix.
32 ;;;
33 ;;; GNU Guix is free software; you can redistribute it and/or modify it
34 ;;; under the terms of the GNU General Public License as published by
35 ;;; the Free Software Foundation; either version 3 of the License, or (at
36 ;;; your option) any later version.
37 ;;;
38 ;;; GNU Guix is distributed in the hope that it will be useful, but
39 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
40 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
41 ;;; GNU General Public License for more details.
42 ;;;
43 ;;; You should have received a copy of the GNU General Public License
44 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
45
46 (define-module (gnu packages ruby)
47 #:use-module ((guix licenses) #:prefix license:)
48 #:use-module (gnu packages)
49 #:use-module (gnu packages bison)
50 #:use-module (gnu packages c)
51 #:use-module (gnu packages check)
52 #:use-module (gnu packages compression)
53 #:use-module (gnu packages crypto)
54 #:use-module (gnu packages curl)
55 #:use-module (gnu packages databases)
56 #:use-module (gnu packages dbm)
57 #:use-module (gnu packages rails)
58 #:use-module (gnu packages readline)
59 #:use-module (gnu packages autotools)
60 #:use-module (gnu packages haskell-xyz)
61 #:use-module (gnu packages java)
62 #:use-module (gnu packages libffi)
63 #:use-module (gnu packages libidn)
64 #:use-module (gnu packages linux)
65 #:use-module (gnu packages lsof)
66 #:use-module (gnu packages maths)
67 #:use-module (gnu packages ncurses)
68 #:use-module (gnu packages networking)
69 #:use-module (gnu packages node)
70 #:use-module (gnu packages protobuf)
71 #:use-module (gnu packages python)
72 #:use-module (gnu packages python-xyz)
73 #:use-module (gnu packages ragel)
74 #:use-module (gnu packages rsync)
75 #:use-module (gnu packages sqlite)
76 #:use-module (gnu packages tls)
77 #:use-module (gnu packages version-control)
78 #:use-module (guix packages)
79 #:use-module (guix download)
80 #:use-module (guix git-download)
81 #:use-module (guix gexp)
82 #:use-module (guix utils)
83 #:use-module (guix build-system gnu)
84 #:use-module (gnu packages xml)
85 #:use-module (gnu packages web)
86 #:use-module (guix build-system ruby)
87 #:use-module ((srfi srfi-1) #:select (alist-delete)))
88
89 (define %prawn-project-licenses
90 ;; This set of licenses applies to most (all?) components of the Prawn
91 ;; project (it is triple licensed).
92 (list license:ruby
93 license:gpl2+
94 license:gpl3+))
95
96 (define-public ruby
97 (package
98 (name "ruby")
99 (version "2.6.5")
100 (source
101 (origin
102 (method url-fetch)
103 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
104 (version-major+minor version)
105 "/ruby-" version ".tar.xz"))
106 (sha256
107 (base32
108 "0qhsw2mr04f3lqinkh557msr35pb5rdaqy4vdxcj91flgxqxmmnm"))
109 (modules '((guix build utils)))
110 (snippet `(begin
111 ;; Remove bundled libffi
112 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
113 #t))))
114 (build-system gnu-build-system)
115 (arguments
116 `(#:test-target "test"
117 #:configure-flags '("--enable-shared") ; dynamic linking
118 #:phases
119 (modify-phases %standard-phases
120 (add-before 'configure 'replace-bin-sh-and-remove-libffi
121 (lambda _
122 (substitute* '("Makefile.in"
123 "ext/pty/pty.c"
124 "io.c"
125 "lib/mkmf.rb"
126 "process.c"
127 "test/rubygems/test_gem_ext_configure_builder.rb"
128 "test/rdoc/test_rdoc_parser.rb"
129 "test/ruby/test_rubyoptions.rb"
130 "test/ruby/test_process.rb"
131 "test/ruby/test_system.rb"
132 "tool/rbinstall.rb")
133 (("/bin/sh") (which "sh")))
134 #t)))))
135 (inputs
136 `(("readline" ,readline)
137 ("openssl" ,openssl)
138 ("libffi" ,libffi)
139 ("gdbm" ,gdbm)))
140 (propagated-inputs
141 `(("zlib" ,zlib)))
142 (native-search-paths
143 (list (search-path-specification
144 (variable "GEM_PATH")
145 (files (list (string-append "lib/ruby/vendor_ruby"))))))
146 (synopsis "Programming language interpreter")
147 (description "Ruby is a dynamic object-oriented programming language with
148 a focus on simplicity and productivity.")
149 (home-page "https://www.ruby-lang.org")
150 (license license:ruby)))
151
152 (define-public ruby-2.7
153 (package
154 (inherit ruby)
155 (version "2.7.2")
156 (source
157 (origin
158 (method url-fetch)
159 (uri (string-append "https://cache.ruby-lang.org/pub/ruby/"
160 (version-major+minor version)
161 "/ruby-" version ".tar.gz"))
162 (sha256
163 (base32
164 "1m63461mxi3fg4y3bspbgmb0ckbbb1ldgf9xi0piwkpfsk80cmvf"))
165 (modules '((guix build utils)))
166 (snippet `(begin
167 ;; Remove bundled libffi
168 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
169 #t))))
170 (arguments
171 `(#:test-target "test"
172 #:configure-flags '("--enable-shared") ; dynamic linking
173 #:phases
174 (modify-phases %standard-phases
175 (add-before 'configure 'replace-bin-sh-and-remove-libffi
176 (lambda _
177 (substitute* '("configure.ac"
178 "template/Makefile.in"
179 "lib/rubygems/installer.rb"
180 "ext/pty/pty.c"
181 "io.c"
182 "lib/mkmf.rb"
183 "process.c"
184 "test/rubygems/test_gem_ext_configure_builder.rb"
185 "test/rdoc/test_rdoc_parser.rb"
186 "test/ruby/test_rubyoptions.rb"
187 "test/ruby/test_process.rb"
188 "test/ruby/test_system.rb"
189 "tool/rbinstall.rb")
190 (("/bin/sh") (which "sh")))
191 #t)))))
192 (native-inputs
193 `(("autoconf" ,autoconf)))))
194
195 (define-public ruby-3.0
196 (package
197 (inherit ruby-2.7)
198 (version "3.0.0")
199 (source
200 (origin
201 (method url-fetch)
202 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
203 (version-major+minor version)
204 "/ruby-" version ".tar.xz"))
205 (sha256
206 (base32
207 "1cbcixwnr0y8q0lg67wjgplp06kjd6p6hjjh680csv3v0bpsxgv8"))))))
208
209 (define-public ruby-2.5
210 (package
211 (inherit ruby)
212 (version "2.5.8")
213 (source
214 (origin
215 (method url-fetch)
216 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
217 (version-major+minor version)
218 "/ruby-" version ".tar.xz"))
219 (sha256
220 (base32
221 "0vad5ah1lrdhxsyqr5iqc8c7r7qczpmm76cz8rsf4crimpzv5483"))
222 (modules '((guix build utils)))
223 (snippet `(begin
224 ;; Remove bundled libffi
225 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
226 #t))))))
227
228 (define-public ruby-2.4
229 (package
230 (inherit ruby)
231 (version "2.4.10")
232 (source
233 (origin
234 (method url-fetch)
235 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
236 (version-major+minor version)
237 "/ruby-" version ".tar.xz"))
238 (sha256
239 (base32
240 "1prhqlgik1zmw9lakl6hkriqslspw48pvhxff17h7ns42p8qwrnm"))
241 (modules '((guix build utils)))
242 (snippet `(begin
243 ;; Remove bundled libffi
244 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
245 #t))))))
246
247 (define-public mruby
248 (package
249 (name "mruby")
250 (version "2.1.2")
251 (source
252 (origin
253 (method git-fetch)
254 (uri (git-reference
255 (url "https://github.com/mruby/mruby")
256 (commit version)))
257 (file-name (git-file-name name version))
258 (sha256
259 (base32
260 "0fhfv8pi7i8jn2vgk2n2rjnbnfa12nhj514v8i4k353n7q4pmkh3"))))
261 (build-system gnu-build-system)
262 (arguments
263 `(#:test-target "test"
264 #:phases
265 (modify-phases %standard-phases
266 (delete 'configure)
267 (add-after 'unpack 'enable-verbose-tests
268 (lambda _
269 (substitute* "Makefile"
270 (("ruby ./minirake" m)
271 (string-append m " --verbose")))
272 #t))
273 (add-after 'unpack 'disable-broken-tests
274 (lambda _
275 (substitute* "mrbgems/mruby-io/test/io.rb"
276 (("assert\\('IO.popen.+$" m)
277 (string-append m "skip \"Hangs in the Guix build environment\"\n"))
278 (("assert\\('IO#isatty.+$" m)
279 (string-append m "skip \"Disable for Guix; there is no /dev/tty\"\n"))
280 ;; This one is really weird. The *expected* output is all wrong.
281 (("assert\\('`cmd`.*" m)
282 (string-append m "skip \"Disable for Guix\"\n"))
283 (("echo foo")
284 (string-append (which "echo") " foo")))
285 #t))
286 ;; There is no install target
287 (replace 'install
288 (lambda* (#:key outputs #:allow-other-keys)
289 (let* ((out (assoc-ref outputs "out"))
290 (bin (string-append out "/bin"))
291 (lib (string-append out "/lib")))
292 (mkdir-p bin)
293 (copy-recursively "build/host/bin" bin)
294 (mkdir-p lib)
295 (copy-recursively "build/host/lib" lib))
296 #t)))))
297 (native-inputs
298 `(("ruby" ,ruby)
299 ("bison" ,bison)))
300 (home-page "https://github.com/mruby/mruby")
301 (synopsis "Lightweight Ruby")
302 (description "mruby is the lightweight implementation of the Ruby
303 language. Its syntax is Ruby 1.9 compatible. mruby can be linked and
304 embedded within your application.")
305 (license license:expat)))
306
307 (define-public ruby-commander
308 (package
309 (name "ruby-commander")
310 (version "4.4.7")
311 (source
312 (origin
313 (method url-fetch)
314 (uri (rubygems-uri "commander" version))
315 (sha256
316 (base32
317 "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg"))))
318 (build-system ruby-build-system)
319 (arguments
320 `(#:test-target "spec"
321 #:phases
322 (modify-phases %standard-phases
323 ;; Don't run or require rubocop, the code linting tool, as this is a
324 ;; bit unnecessary.
325 (add-after 'unpack 'dont-run-rubocop
326 (lambda _
327 (substitute* "Rakefile"
328 ((".*rubocop.*") "")
329 ((".*RuboCop.*") ""))
330 #t)))))
331 (propagated-inputs
332 `(("ruby-highline" ,ruby-highline)))
333 (native-inputs
334 `(("bundler" ,bundler)
335 ("ruby-rspec-core" ,ruby-rspec-core)
336 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
337 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
338 ("ruby-simplecov" ,ruby-simplecov)))
339 (home-page "https://github.com/commander-rb/commander")
340 (synopsis "Library for building Ruby command-line executables")
341 (description
342 "Commander aims to be a complete solution for Ruby command-line
343 executables. Commander bridges the gap between other terminal related
344 libraries (OptionParser, HighLine), while providing many new features, and an
345 elegant API.")
346 (license license:expat)))
347
348 (define-public ruby-highline
349 (package
350 (name "ruby-highline")
351 (version "2.0.1")
352 (source
353 (origin
354 (method url-fetch)
355 (uri (rubygems-uri "highline" version))
356 (sha256
357 (base32
358 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
359 (build-system ruby-build-system)
360 (arguments
361 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
362 (native-inputs
363 `(("bundler" ,bundler)
364 ("ruby-code-statistics" ,ruby-code-statistics)))
365 (synopsis
366 "HighLine helps you build command-line interfaces")
367 (description
368 "HighLine provides a high-level IO library that provides validation,
369 type conversion, and more for command-line interfaces. HighLine also includes
370 a menu system for providing multiple options to the user.")
371 (home-page "https://github.com/JEG2/highline")
372 (license (list license:gpl2 license:ruby))))
373
374 (define-public ruby-hoe
375 (package
376 (name "ruby-hoe")
377 (version "3.21.0")
378 (source (origin
379 (method url-fetch)
380 (uri (rubygems-uri "hoe" version))
381 (sha256
382 (base32
383 "0qid0n56mgsjvq5ksxajv0gb92akky8imwgvw22ajms5g4fd6nf4"))))
384 (build-system ruby-build-system)
385 (arguments
386 '(#:phases
387 (modify-phases %standard-phases
388 ;; One of the tests fails if the SOURCE_DATE_EPOCH environment
389 ;; variable is set, so unset it for the duration of the tests.
390 ;;
391 ;; TestHoe#test_possibly_better
392 ;; [/tmp/guix-build-ruby-hoe-3.20.0.drv-0/gem/test/test_hoe.rb:250]:
393 ;; Expected: 2019-11-12 00:00:00 UTC
394 ;; Actual: 1970-01-01 00:00:00 UTC
395 (add-before 'check 'unset-SOURCE-DATE-EPOCH
396 (lambda _
397 (unsetenv "SOURCE_DATE_EPOCH")
398 #t))
399 (add-after 'check 'set-SOURCE-DATE-EPOCH-again
400 (lambda _
401 (setenv "SOURCE_DATE_EPOCH" "1")
402 #t)))))
403 (synopsis "Ruby project management helper")
404 (description
405 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
406 maintain, and release projects and includes a dynamic plug-in system allowing
407 for easy extensibility. Hoe ships with plug-ins for all the usual project
408 tasks including rdoc generation, testing, packaging, deployment, and
409 announcement.")
410 (home-page "https://www.zenspider.com/projects/hoe.html")
411 (license license:expat)))
412
413 (define-public ruby-rake-compiler
414 (package
415 (name "ruby-rake-compiler")
416 (version "1.1.0")
417 (source (origin
418 (method url-fetch)
419 (uri (rubygems-uri "rake-compiler" version))
420 (sha256
421 (base32
422 "0l4hg21v0phfrfsc2hilgmwvn2imxr0byqh8dv16bya1s5d3km0q"))))
423 (build-system ruby-build-system)
424 (arguments
425 '(#:tests? #f)) ; needs cucumber
426 (synopsis "Building and packaging helper for Ruby native extensions")
427 (description "Rake-compiler provides a framework for building and
428 packaging native C and Java extensions in Ruby.")
429 (home-page "https://github.com/rake-compiler/rake-compiler")
430 (license license:expat)))
431
432 (define-public ruby-rsync
433 (package
434 (name "ruby-rsync")
435 (version "1.0.9")
436 (source
437 (origin
438 (method url-fetch)
439 (uri (rubygems-uri "rsync" version))
440 (sha256
441 (base32
442 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
443 (build-system ruby-build-system)
444 (arguments
445 '(#:test-target "spec"
446 #:phases
447 (modify-phases %standard-phases
448 (add-after 'unpack 'remove-coveralls-requirement
449 (lambda _
450 (substitute* "spec/spec_helper.rb"
451 (("require 'coveralls'") "")
452 (("Coveralls.wear!") ""))
453 #t)))))
454 (native-inputs
455 `(("bundler" ,bundler)
456 ("rsync" ,rsync)
457 ("ruby-rspec-core" ,ruby-rspec-core)
458 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
459 ("ruby-rspec-mocks" ,ruby-rspec-mocks)))
460 (home-page "https://github.com/jbussdieker/ruby-rsync")
461 (synopsis "Ruby wrapper around rsync")
462 (description
463 "Ruby Rsync is a Ruby library that can synchronize files between remote
464 hosts by wrapping the @file{rsync} binary.")
465 (license license:expat)))
466
467 (define-public ruby-i18n
468 (package
469 (name "ruby-i18n")
470 (version "1.7.0")
471 (source (origin
472 (method url-fetch)
473 (uri (rubygems-uri "i18n" version))
474 (sha256
475 (base32
476 "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl"))))
477 (build-system ruby-build-system)
478 (arguments
479 '(#:tests? #f)) ; no tests
480 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
481 (synopsis "Internationalization library for Ruby")
482 (description "Ruby i18n is an internationalization and localization
483 solution for Ruby programs. It features translation and localization,
484 interpolation of values to translations, pluralization, customizable
485 transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
486 translation data, custom key/scope separator, custom exception handlers, and
487 an extensible architecture with a swappable backend.")
488 (home-page "https://github.com/ruby-i18n/i18n")
489 (license license:expat)))
490
491 (define-public ruby-iruby
492 (package
493 (name "ruby-iruby")
494 (version "0.3")
495 (source
496 (origin
497 (method url-fetch)
498 (uri (rubygems-uri "iruby" version))
499 (sha256
500 (base32
501 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
502 (build-system ruby-build-system)
503 (arguments
504 ;; TODO: Tests currently fail.
505 ;;
506 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
507 ;;
508 ;; 1) Failure:
509 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
510 ;; In [ expected
511 ;;
512 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
513 '(#:tests? #f
514 #:phases
515 (modify-phases %standard-phases
516 (add-after 'unpack 'patch-ipython
517 (lambda* (#:key inputs #:allow-other-keys)
518 (substitute* "lib/iruby/command.rb"
519 (("version = `")
520 (string-append
521 "version = `"
522 (assoc-ref inputs "python-ipython")
523 "/bin/"))
524 (("Kernel\\.exec\\('")
525 (string-append
526 "Kernel.exec('"
527 (assoc-ref inputs "python-ipython")
528 "/bin/")))
529 #t)))))
530 (inputs
531 `(("python-ipython" ,python-ipython)))
532 (propagated-inputs
533 `(("ruby-bond" ,ruby-bond)
534 ("ruby-data_uri" ,ruby-data_uri)
535 ("ruby-mimemagic" ,ruby-mimemagic)
536 ("ruby-multi-json" ,ruby-multi-json)
537 ("ruby-cztop" ,ruby-cztop)
538 ;; Optional inputs
539 ("ruby-pry" ,ruby-pry)))
540 (synopsis "Ruby kernel for Jupyter/IPython")
541 (description
542 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
543 notebook).")
544 (home-page "https://github.com/SciRuby/iruby")
545 (license license:expat)))
546
547 ;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
548 ;; dependencies use RSpec for their test suites! To avoid these circular
549 ;; dependencies, we disable tests for all of the RSpec-related packages.
550 (define-public ruby-rspec-support
551 (package
552 (name "ruby-rspec-support")
553 (version "3.8.0")
554 (source (origin
555 (method url-fetch)
556 (uri (rubygems-uri "rspec-support" version))
557 (sha256
558 (base32
559 "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609"))))
560 (build-system ruby-build-system)
561 (arguments
562 '(#:tests? #f)) ; avoid dependency cycles
563 (synopsis "RSpec support library")
564 (description "Support utilities for RSpec gems.")
565 (home-page "https://github.com/rspec/rspec-support")
566 (license license:expat)))
567
568 (define-public ruby-rspec-core
569 (package
570 (name "ruby-rspec-core")
571 (version "3.8.0")
572 (source (origin
573 (method url-fetch)
574 (uri (rubygems-uri "rspec-core" version))
575 (sha256
576 (base32
577 "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p"))))
578 (build-system ruby-build-system)
579 (arguments
580 '(#:tests? #f)) ; avoid dependency cycles
581 (propagated-inputs
582 `(("ruby-rspec-support" ,ruby-rspec-support)))
583 (synopsis "RSpec core library")
584 (description "Rspec-core provides the RSpec test runner and example
585 groups.")
586 (home-page "https://github.com/rspec/rspec-core")
587 (license license:expat)))
588
589 (define-public ruby-rspec-core-2
590 (package (inherit ruby-rspec-core)
591 (version "2.14.8")
592 (source (origin
593 (method url-fetch)
594 (uri (rubygems-uri "rspec-core" version))
595 (sha256
596 (base32
597 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
598 (propagated-inputs `())))
599
600 (define-public ruby-diff-lcs
601 (package
602 (name "ruby-diff-lcs")
603 (version "1.3")
604 (source (origin
605 (method url-fetch)
606 (uri (rubygems-uri "diff-lcs" version))
607 (sha256
608 (base32
609 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
610 (build-system ruby-build-system)
611 (arguments
612 '(#:tests? #f)) ; avoid dependency cycles
613 (synopsis "Compute the difference between two Enumerable sequences")
614 (description "Diff::LCS computes the difference between two Enumerable
615 sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
616 It includes utilities to create a simple HTML diff output format and a
617 standard diff-like tool.")
618 (home-page "https://github.com/halostatue/diff-lcs")
619 (license license:expat)))
620
621 (define-public ruby-rspec-expectations
622 (package
623 (name "ruby-rspec-expectations")
624 (version "3.8.2")
625 (source (origin
626 (method url-fetch)
627 (uri (rubygems-uri "rspec-expectations" version))
628 (sha256
629 (base32
630 "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm"))))
631 (build-system ruby-build-system)
632 (arguments
633 '(#:tests? #f)) ; avoid dependency cycles
634 (propagated-inputs
635 `(("ruby-rspec-support" ,ruby-rspec-support)
636 ("ruby-diff-lcs" ,ruby-diff-lcs)))
637 (synopsis "RSpec expectations library")
638 (description "Rspec-expectations provides a simple API to express expected
639 outcomes of a code example.")
640 (home-page "https://github.com/rspec/rspec-expectations")
641 (license license:expat)))
642
643 (define-public ruby-rspec-expectations-2
644 (package (inherit ruby-rspec-expectations)
645 (version "2.14.5")
646 (source (origin
647 (method url-fetch)
648 (uri (rubygems-uri "rspec-expectations" version))
649 (sha256
650 (base32
651 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
652 (propagated-inputs
653 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
654
655 (define-public ruby-sorcerer
656 (package
657 (name "ruby-sorcerer")
658 (version "2.0.1")
659 (source
660 (origin
661 (method url-fetch)
662 (uri (rubygems-uri "sorcerer" version))
663 (sha256
664 (base32
665 "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h"))))
666 (build-system ruby-build-system)
667 (synopsis "Ripper-style abstract syntax tree to Ruby source generator")
668 (description "Sorcerer generates Ruby code from a Ripper-like abstract
669 syntax tree (i.e. S-Expressions). Sorcerer is targeted mainly at small
670 snippets of Ruby code, expressible in a single line. Longer examples may be
671 re-sourced, but they will be rendered in a single-line format.")
672 (home-page "https://github.com/rspec-given/sorcerer")
673 (license license:expat)))
674
675 (define-public ruby-given-core
676 (package
677 (name "ruby-given-core")
678 (version "3.8.0")
679 (source
680 (origin
681 (method url-fetch)
682 (uri (rubygems-uri "given_core" version))
683 (sha256
684 (base32
685 "1lzyqllbbv6as3qgwz2007mvy7wy247bgkch9adnmh1zfa73bkrg"))))
686 (build-system ruby-build-system)
687 (arguments '(#:tests? #f)) ;no test suite for the core package
688 (propagated-inputs
689 `(("ruby-sorcerer" ,ruby-sorcerer)))
690 (synopsis "Core abstractions used by rspec-given and minitest-given")
691 (description "Given_core is the basic functionality behind rspec-given and
692 minitest-given, extensions that allow the use of Given/When/Then terminology
693 when defining specifications.")
694 (home-page "https://github.com/rspec-given/rspec-given")
695 (license license:expat)))
696
697 (define-public ruby-rspec-given
698 (package
699 (name "ruby-rspec-given")
700 (version "3.8.0")
701 (source
702 (origin
703 (method url-fetch)
704 (uri (rubygems-uri "rspec-given" version))
705 (sha256
706 (base32
707 "1783bazja10kbha8hk15khvybsq88siyax02cpkk688604h54nji"))))
708 (build-system ruby-build-system)
709 (arguments
710 `(#:test-target "rs"
711 #:phases
712 (modify-phases %standard-phases
713 (add-after 'unpack 'fix-rakefile
714 (lambda _
715 (substitute* '("Rakefile" "rakelib/gemspec.rake")
716 (("require '\\./lib/given/.*") "")
717 (("Given::VERSION") (format #f "~s" ,version))
718 ;; Fix the error: "cannot load such file -- example_helper"
719 (("sh \"rspec")
720 "sh \"rspec -Ilib:examples"))
721 #t))
722 (add-after 'extract-gemspec 'delete-failing-tests
723 ;; See: https://github.com/jimweirich/rspec-given/issues/57.
724 (lambda _
725 (substitute* ".gemspec"
726 (("\"spec/lib/given/natural_assertion_spec.rb\".freeze, ")
727 "")
728 (("\"examples/integration/failing_messages_spec.rb\".freeze, ")
729 ""))
730 (delete-file "spec/lib/given/natural_assertion_spec.rb")
731 (delete-file "examples/integration/failing_messages_spec.rb")
732 #t)))))
733 (native-inputs
734 `(("ruby-rspec" ,ruby-rspec)
735 ("ruby-minitest" ,ruby-minitest)))
736 (propagated-inputs
737 `(("ruby-given-core" ,ruby-given-core)
738 ("ruby-rspec" ,ruby-rspec)))
739 (synopsis "Given/When/Then for RSpec and Minitest")
740 (description "Given is an RSpec extension that allows the use of
741 Given/When/Then terminology when defining specifications, in a way similar to
742 the Cucumber Gherkin language.")
743 (home-page "https://github.com/rspec-given/rspec-given")
744 (license license:expat)))
745
746 (define-public ruby-rspec-its
747 (package
748 (name "ruby-rspec-its")
749 (version "1.3.0")
750 (source
751 (origin
752 (method git-fetch)
753 (uri (git-reference
754 (url "https://github.com/rspec/rspec-its")
755 (commit (string-append "v" version))))
756 (file-name (git-file-name name version))
757 (sha256
758 (base32
759 "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p"))))
760 (build-system ruby-build-system)
761 (arguments
762 `(#:test-target "spec"
763 #:phases
764 (modify-phases %standard-phases
765 (add-after 'unpack 'dont-install-gems-from-gemfile
766 (lambda _
767 (substitute* "Gemfile"
768 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
769 ""))
770 #t))
771 (add-before 'build 'loosen-ffi-requirement
772 (lambda _
773 ;; Accept any version of ruby-ffi.
774 (substitute* "Gemfile"
775 ((" gem 'ffi', '~> 1\\.9\\.25'")
776 " gem 'ffi'"))
777 #t))
778 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
779 (lambda _
780 (substitute* "rspec-its.gemspec"
781 (("rake.*") "rake'\n")
782 (("spec.add_development_dependency 'cucumber'.*")
783 "spec.add_development_dependency 'cucumber'\n")
784 (("bundler.*") "bundler'\n")
785 (("\"aruba.*") "'aruba'\n"))
786 #t)))))
787 (propagated-inputs
788 `(("ruby-rspec-core" ,ruby-rspec-core)
789 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
790 (native-inputs
791 `(("bundler" ,bundler)
792 ("ruby-cucumber" ,ruby-cucumber)
793 ("ruby-ffi" ,ruby-ffi)
794 ("ruby-aruba" ,ruby-aruba)))
795 (synopsis "RSpec extension that provides the @code{its} method")
796 (description
797 "RSpec::Its provides the its method as a short-hand to specify the expected
798 value of an attribute. For example, one can use @code{its(:size)\\{should
799 eq(1)\\}}.")
800 (home-page "https://github.com/rspec/rspec-its")
801 (license license:expat)))
802
803 ;;; This variant is used to break a cycle with ruby-protobuf.
804 (define-public ruby-rspec-its-minimal
805 (hidden-package
806 (package
807 (inherit ruby-rspec-its)
808 (arguments
809 (substitute-keyword-arguments (package-arguments ruby-rspec-its)
810 ((#:tests? _ #f) #f)))
811 (native-inputs '()))))
812
813 (define-public ruby-rspec-mocks
814 (package
815 (name "ruby-rspec-mocks")
816 (version "3.8.0")
817 (source (origin
818 (method url-fetch)
819 (uri (rubygems-uri "rspec-mocks" version))
820 (sha256
821 (base32
822 "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp"))))
823 (build-system ruby-build-system)
824 (arguments
825 '(#:tests? #f)) ; avoid dependency cycles
826 (propagated-inputs
827 `(("ruby-rspec-support" ,ruby-rspec-support)
828 ("ruby-diff-lcs" ,ruby-diff-lcs)))
829 (synopsis "RSpec stubbing and mocking library")
830 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
831 support for stubbing and mocking.")
832 (home-page "https://github.com/rspec/rspec-mocks")
833 (license license:expat)))
834
835 (define-public ruby-rspec-mocks-2
836 (package (inherit ruby-rspec-mocks)
837 (version "2.14.6")
838 (source (origin
839 (method url-fetch)
840 (uri (rubygems-uri "rspec-mocks" version))
841 (sha256
842 (base32
843 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
844 (propagated-inputs
845 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
846
847 (define-public ruby-rspec-rerun
848 (package
849 (name "ruby-rspec-rerun")
850 (version "1.1.0")
851 (source
852 (origin
853 (method url-fetch)
854 (uri (rubygems-uri "rspec-rerun" version))
855 (sha256
856 (base32
857 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
858 (build-system ruby-build-system)
859 (arguments
860 '(;; No included tests
861 #:tests? #f))
862 (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
863 (synopsis "Track failed RSpec tests to re-run them")
864 (description
865 "This package provides an automated way to track, and then re-run failed
866 RSpec tests.")
867 (home-page "https://github.com/dblock/rspec-rerun")
868 (license license:expat)))
869
870 (define-public ruby-rspec-wait
871 (package
872 (name "ruby-rspec-wait")
873 (version "0.0.9")
874 (source
875 (origin
876 (method url-fetch)
877 (uri (rubygems-uri "rspec-wait" version))
878 (sha256
879 (base32
880 "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
881 (build-system ruby-build-system)
882 (arguments
883 '(#:phases
884 (modify-phases %standard-phases
885 (replace 'check
886 (lambda _
887 (invoke "rake" "spec"))))))
888 (native-inputs
889 `(("bundler" ,bundler)))
890 (propagated-inputs
891 `(("ruby-rspec" ,ruby-rspec)))
892 (home-page "https://github.com/laserlemon/rspec-wait")
893 (synopsis "Wait for conditions in RSpec")
894 (description
895 "RSpec::Wait strives to make it easier to test asynchronous or slow
896 interactions.")
897 (license license:expat)))
898
899 (define-public ruby-rspec
900 (package
901 (name "ruby-rspec")
902 (version "3.8.0")
903 (source (origin
904 (method url-fetch)
905 (uri (rubygems-uri "rspec" version))
906 (sha256
907 (base32
908 "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3"))))
909 (build-system ruby-build-system)
910 (arguments
911 '(#:tests? #f)) ; avoid dependency cycles
912 (propagated-inputs
913 `(("ruby-rspec-core" ,ruby-rspec-core)
914 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
915 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
916 (synopsis "Behavior-driven development framework for Ruby")
917 (description "RSpec is a behavior-driven development (BDD) framework for
918 Ruby. This meta-package includes the RSpec test runner, along with the
919 expectations and mocks frameworks.")
920 (home-page "https://rspec.info/")
921 (license license:expat)))
922
923 (define-public ruby-rspec-2
924 (package (inherit ruby-rspec)
925 (version "2.14.1")
926 (source (origin
927 (method url-fetch)
928 (uri (rubygems-uri "rspec" version))
929 (sha256
930 (base32
931 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
932 (propagated-inputs
933 `(("ruby-rspec-core" ,ruby-rspec-core-2)
934 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
935 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
936
937 ;; Bundler is yet another source of circular dependencies, so we must disable
938 ;; its test suite as well.
939 (define-public bundler
940 (package
941 (name "bundler")
942 (version "2.1.4")
943 (source (origin
944 (method url-fetch)
945 (uri (rubygems-uri "bundler" version))
946 (sha256
947 (base32
948 "12glbb1357x91fvd004jgkw7ihlkpc9dwr349pd7j83isqhls0ah"))))
949 (build-system ruby-build-system)
950 (arguments
951 '(#:tests? #f)) ; avoid dependency cycles
952 (synopsis "Ruby gem bundler")
953 (description "Bundler automatically downloads and installs a list of gems
954 specified in a \"Gemfile\", as well as their dependencies.")
955 (home-page "https://bundler.io/")
956 (license license:expat)))
957
958 (define-public ruby-builder
959 (package
960 (name "ruby-builder")
961 (version "3.2.3")
962 (source (origin
963 (method url-fetch)
964 (uri (rubygems-uri "builder" version))
965 (sha256
966 (base32
967 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
968 (build-system ruby-build-system)
969 (arguments
970 `(#:phases
971 (modify-phases %standard-phases
972 (add-after 'unpack 'do-not-use-rvm
973 (lambda _
974 (substitute* "rakelib/tags.rake"
975 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
976 #t)))))
977 (synopsis "Ruby library to create structured data")
978 (description "Builder provides a number of builder objects that make it
979 easy to create structured data. Currently the following builder objects are
980 supported: XML Markup and XML Events.")
981 (home-page "https://github.com/jimweirich/builder")
982 (license license:expat)))
983
984 (define-public ruby-bump
985 (package
986 (name "ruby-bump")
987 (version "0.7.0")
988 (source
989 (origin
990 (method url-fetch)
991 (uri (rubygems-uri "bump" version))
992 (sha256
993 (base32
994 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
995 (build-system ruby-build-system)
996 (arguments
997 '(;; No included tests
998 #:tests? #f))
999 (synopsis "Tool for working with Rubygems")
1000 (description
1001 "Bump provides commands to manage Rubygem versioning, updating to the
1002 next patch version for example.")
1003 (home-page "https://github.com/gregorym/bump")
1004 (license license:expat)))
1005
1006 (define-public ruby-rjb
1007 (package
1008 (name "ruby-rjb")
1009 (version "1.5.5")
1010 (source (origin
1011 (method url-fetch)
1012 (uri (rubygems-uri "rjb" version))
1013 (sha256
1014 (base32
1015 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
1016 (build-system ruby-build-system)
1017 (arguments
1018 `(#:tests? #f ; no rakefile
1019 #:phases
1020 (modify-phases %standard-phases
1021 (add-before 'build 'set-java-home
1022 (lambda* (#:key inputs #:allow-other-keys)
1023 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
1024 #t)))))
1025 (native-inputs
1026 `(("jdk" ,icedtea "jdk")))
1027 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
1028 (description "RJB is a bridge program that connects Ruby and Java via the
1029 Java Native Interface.")
1030 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
1031 (license license:lgpl2.1+)))
1032
1033 (define-public ruby-log4r
1034 (package
1035 (name "ruby-log4r")
1036 (version "1.1.10")
1037 (source
1038 (origin
1039 (method url-fetch)
1040 (uri (rubygems-uri "log4r" version))
1041 (sha256
1042 (base32
1043 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
1044 (build-system ruby-build-system)
1045 (arguments
1046 '(#:tests? #f)) ; no Rakefile in gem
1047 (synopsis "Flexible logging library for Ruby")
1048 (description "Comprehensive and flexible logging library written
1049 in Ruby for use in Ruby programs. It features a hierarchical logging
1050 system of any number of levels, custom level names, logger
1051 inheritance, multiple output destinations per log event, execution
1052 tracing, custom formatting, thread safteyness, XML and YAML
1053 configuration, and more.")
1054 (home-page "http://log4r.rubyforge.org/")
1055 (license license:bsd-3)))
1056
1057 (define-public ruby-atoulme-antwrap
1058 (package
1059 (name "ruby-atoulme-antwrap")
1060 (version "0.7.5")
1061 (source (origin
1062 (method url-fetch)
1063 (uri (rubygems-uri "atoulme-Antwrap" version))
1064 (sha256
1065 (base32
1066 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
1067 (build-system ruby-build-system)
1068 ;; Test data required for most of the tests are not included.
1069 (arguments `(#:tests? #f))
1070 (native-inputs
1071 `(("ruby-hoe" ,ruby-hoe)))
1072 (inputs
1073 `(("ruby-rjb" ,ruby-rjb)))
1074 (synopsis "Ruby wrapper for the Ant build tool")
1075 (description "Antwrap is a Ruby module that wraps the Apache Ant build
1076 tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
1077 script.")
1078 (home-page "http://rubyforge.org/projects/antwrap/")
1079 (license license:expat)))
1080
1081 (define-public ruby-atoulme-saikuro
1082 (package
1083 (name "ruby-atoulme-saikuro")
1084 (version "1.2.1")
1085 (source (origin
1086 (method url-fetch)
1087 (uri (rubygems-uri "atoulme-Saikuro" version))
1088 (sha256
1089 (base32
1090 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
1091 (build-system ruby-build-system)
1092 ;; FIXME: There are no unit tests. The tests are demonstrations of the
1093 ;; "saikuro" tool.
1094 (arguments `(#:tests? #f))
1095 (synopsis "Cyclomatic complexity analyzer")
1096 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
1097 given Ruby source code Saikuro will generate a report listing the cyclomatic
1098 complexity of each method found. In addition, Saikuro counts the number of
1099 lines per method and can generate a listing of the number of tokens on each
1100 line of code.")
1101 (home-page "http://www.github.com/atoulme/Saikuro")
1102 ;; File headers contain the BSD-3 license and the README.rdoc says that
1103 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
1104 ;; of the Expat license.
1105 (license license:bsd-3)))
1106
1107 (define-public ruby-awesome-print
1108 (package
1109 (name "ruby-awesome-print")
1110 (version "1.8.0")
1111 (source
1112 (origin
1113 (method url-fetch)
1114 (uri (rubygems-uri "awesome_print" version))
1115 (sha256
1116 (base32
1117 "14arh1ixfsd6j5md0agyzvksm5svfkvchb90fp32nn7y3avcmc2h"))))
1118 (build-system ruby-build-system)
1119 (arguments
1120 `(#:phases
1121 (modify-phases %standard-phases
1122 (replace 'check
1123 (lambda _
1124 ;; Remove failing test.
1125 (for-each delete-file
1126 '("spec/ext/nokogiri_spec.rb"
1127 "spec/colors_spec.rb"
1128 "spec/formats_spec.rb"
1129 "spec/methods_spec.rb"
1130 "spec/misc_spec.rb"
1131 "spec/objects_spec.rb"))
1132 (invoke "rspec" "-c" "spec"))))))
1133 (native-inputs
1134 `(("ruby-nokogiri" ,ruby-nokogiri)
1135 ("ruby-rspec" ,ruby-rspec)
1136 ("ruby-simplecov" ,ruby-simplecov)))
1137 (synopsis "Pretty print Ruby objects to visualize their structure")
1138 (description
1139 "Ruby dubugging companion: pretty print Ruby objects to visualize their
1140 structure. Supports custom object formatting via plugins.")
1141 (home-page "https://github.com/awesome-print/awesome_print")
1142 (license license:expat)))
1143
1144 (define-public ruby-pandoc-ruby
1145 (package
1146 (name "ruby-pandoc-ruby")
1147 (version "2.1.4")
1148 (source
1149 (origin
1150 (method git-fetch) ;the gem lacks many test files
1151 (uri (git-reference
1152 (url "https://github.com/xwmx/pandoc-ruby")
1153 (commit version)))
1154 (file-name (git-file-name name version))
1155 (sha256
1156 (base32
1157 "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935"))))
1158 (build-system ruby-build-system)
1159 (arguments
1160 `(#:phases
1161 (modify-phases %standard-phases
1162 (add-after 'unpack 'disable-failing-tests
1163 ;; TODO: Remove this phase after ghc-pandoc gets upgraded to 2.9.2+
1164 ;; (see: https://github.com/xwmx/pandoc-ruby/issues/39).
1165 (lambda _
1166 (substitute* "test/test_conversions.rb"
1167 (("next if from == to.*" all)
1168 (string-append
1169 all
1170 " next if ['plain', 'beamer'].include? to\n")))
1171 #t))
1172 (add-after 'unpack 'patch-pandoc-path
1173 (lambda* (#:key inputs #:allow-other-keys)
1174 (let ((pandoc (string-append (assoc-ref inputs "pandoc")
1175 "/bin/pandoc")))
1176 (substitute* "lib/pandoc-ruby.rb"
1177 (("@@pandoc_path = 'pandoc'")
1178 (format #f "@@pandoc_path = '~a'" pandoc)))
1179 (substitute* "test/test_pandoc_ruby.rb"
1180 (("('|\")pandoc" _ quote)
1181 (string-append quote pandoc))
1182 (("\\^pandoc")
1183 ".*pandoc"))
1184 #t)))
1185 (add-after 'extract-gemspec 'remove-Gemfile.lock
1186 (lambda _
1187 (delete-file "Gemfile.lock")
1188 (substitute* "pandoc-ruby.gemspec"
1189 (("Gemfile\\.lock") ""))
1190 #t)))))
1191 (native-inputs
1192 `(("ruby-mocha" ,ruby-mocha)))
1193 (inputs
1194 `(("pandoc" ,pandoc)))
1195 (synopsis "Ruby wrapper for Pandoc")
1196 (description "PandocRuby is a wrapper for Pandoc, a Haskell library with
1197 command line tools for converting one markup format to another. Pandoc can
1198 convert documents from a variety of formats including markdown,
1199 reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a
1200 variety of other formats, including markdown, reStructuredText, HTML, LaTeX,
1201 ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki
1202 markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and
1203 more.")
1204 (home-page "https://github.com/xwmx/pandoc-ruby")
1205 (license license:expat)))
1206
1207 (define-public ruby-patron
1208 (package
1209 (name "ruby-patron")
1210 (version "0.13.3")
1211 (source
1212 (origin
1213 (method url-fetch)
1214 (uri (rubygems-uri "patron" version))
1215 (sha256
1216 (base32
1217 "0523gddx88zql2mq6655k60gy2ac8vybpzkcf90lmd9nx7wl3fi9"))))
1218 (build-system ruby-build-system)
1219 (inputs
1220 `(("curl" ,curl)))
1221 (arguments
1222 `(#:tests? #f)) ; no included tests
1223 (synopsis "Ruby HTTP client library based on @code{libcurl}")
1224 (description
1225 "Patron is a Ruby HTTP client library based on @code{libcurl}. It does
1226 not try to expose the full power (read complexity) of @code{libcurl} but
1227 instead tries to provide a sane API while taking advantage of @code{libcurl}
1228 under the hood.")
1229 (home-page "https://github.com/toland/patron")
1230 (license license:expat)))
1231
1232 (define-public ruby-slim
1233 (package
1234 (name "ruby-slim")
1235 (version "4.1.0")
1236 (source
1237 (origin
1238 (method url-fetch)
1239 (uri (rubygems-uri "slim" version))
1240 (sha256
1241 (base32
1242 "0gjx30g84c82qzg32bd7giscvb4206v7mvg56kc839w9wjagn36n"))))
1243 (build-system ruby-build-system)
1244 (arguments
1245 `(#:phases
1246 (modify-phases %standard-phases
1247 ;; See: https://github.com/slim-template/slim/issues/857 and
1248 ;; https://github.com/slim-template/slim/issues/858.
1249 (add-after 'unpack 'skip-broken-tests
1250 (lambda _
1251 (substitute* "test/core/test_embedded_engines.rb"
1252 (("def test_render_with_markdown")
1253 "def skipped_test_render_with_markdown"))
1254 (substitute* "test/translator/test_translator.rb"
1255 (("raise (\"Missing test for.*)" _ tail)
1256 (string-append "print " tail)))
1257 #t))
1258 ;; See: https://salsa.debian.org/ruby-team/ruby-slim/-/commit/
1259 ;; 824862bd99d1675bc699d8fc71ba965a785c1f44.
1260 (add-after 'unpack 'prevent-bundler-interference
1261 (lambda _
1262 (substitute* "Rakefile"
1263 (("require 'bundler/setup'") "nil")
1264 (("Bundler::GemHelper\\.install_tasks") "nil"))
1265 #t)))))
1266 (native-inputs
1267 `(("ruby-rack-test" ,ruby-rack-test)
1268 ("ruby-sinatra" ,ruby-sinatra)))
1269 (propagated-inputs
1270 `(("ruby-temple" ,ruby-temple)
1271 ("ruby-tilt" ,ruby-tilt)))
1272 (synopsis "Minimalist template language for Ruby")
1273 (description "Slim is a template language for Ruby that aims to reduce the
1274 syntax to the minimum while remaining clear.")
1275 (home-page "http://slim-lang.com/")
1276 (license license:expat)))
1277
1278 (define-public ruby-asciidoctor
1279 (package
1280 (name "ruby-asciidoctor")
1281 (version "2.0.10")
1282 (source
1283 (origin
1284 (method git-fetch) ;the gem release lacks a Rakefile
1285 (uri (git-reference
1286 (url "https://github.com/asciidoctor/asciidoctor")
1287 (commit (string-append "v" version))))
1288 (file-name (git-file-name name version))
1289 (sha256
1290 (base32
1291 "0jaxpnsdnx3qyjw5p2lsx1swny12q1i2vxw2kgdp4vlsyjv95z95"))))
1292 (build-system ruby-build-system)
1293 (arguments
1294 `(#:test-target "test:all"
1295 #:phases
1296 (modify-phases %standard-phases
1297 (replace 'replace-git-ls-files
1298 (lambda _
1299 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1300 ;; git ls-files output is merged in ruby-build-system.
1301 (substitute* "asciidoctor.gemspec"
1302 (("`git ls-files -z`")
1303 "`find . -type f -print0 |sort -z|cut -zc3-`"))
1304 #t))
1305 (add-after 'extract-gemspec 'strip-version-requirements
1306 (lambda _
1307 (delete-file "Gemfile")
1308 (substitute* "asciidoctor.gemspec"
1309 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1310 (string-append stripped "\n")))
1311 #t)))))
1312 (native-inputs
1313 `(("ruby-erubis" ,ruby-erubis)
1314 ("ruby-minitest" ,ruby-minitest)
1315 ("ruby-nokogiri" ,ruby-nokogiri)
1316 ("ruby-asciimath" ,ruby-asciimath)
1317 ("ruby-coderay" ,ruby-coderay)
1318 ("ruby-cucumber" ,ruby-cucumber)
1319 ("ruby-haml" ,ruby-haml)
1320 ("ruby-rouge" ,ruby-rouge)
1321 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
1322 ("ruby-simplecov" ,ruby-simplecov)
1323 ("ruby-slim" ,ruby-slim)
1324 ("ruby-tilt" ,ruby-tilt)))
1325 (synopsis "Converter from AsciiDoc content to other formats")
1326 (description "Asciidoctor is a text processor and publishing toolchain for
1327 converting AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other
1328 formats.")
1329 (home-page "https://asciidoctor.org")
1330 (license license:expat)))
1331
1332 (define-public ruby-prawn-icon
1333 (package
1334 (name "ruby-prawn-icon")
1335 (version "2.5.0")
1336 (source
1337 (origin
1338 (method url-fetch)
1339 (uri (rubygems-uri "prawn-icon" version))
1340 (sha256
1341 (base32
1342 "1ivkdf8rdf92hhy97vbmc2a4w97vcvqd58jcj4z9hz3hfsb1526w"))))
1343 (build-system ruby-build-system)
1344 (arguments
1345 `(#:test-target "spec"
1346 #:phases (modify-phases %standard-phases
1347 (add-after 'unpack 'remove-unnecessary-dependencies
1348 (lambda _
1349 (substitute* '("Rakefile" "spec/spec_helper.rb")
1350 ((".*[Bb]undler.*") "")
1351 (("^require 'rubocop.*") "")
1352 (("^RuboCop.*") ""))
1353 #t)))))
1354 (native-inputs
1355 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
1356 ("ruby-pdf-reader" ,ruby-pdf-reader)
1357 ("ruby-rspec" ,ruby-rspec)
1358 ("ruby-simplecov" ,ruby-simplecov)))
1359 (propagated-inputs
1360 `(("ruby-prawn" ,ruby-prawn)))
1361 (synopsis "Icon fonts for use with the Prawn PDF toolkit")
1362 (description "@code{Prawn::Icon} provides various icon fonts including
1363 FontAwesome, PaymentFont and Foundation Icons for use with the Prawn PDF
1364 toolkit.")
1365 (home-page "https://github.com/jessedoyle/prawn-icon/")
1366 (license %prawn-project-licenses)))
1367
1368 (define-public ruby-css-parser
1369 (package
1370 (name "ruby-css-parser")
1371 (version "1.7.1")
1372 (source
1373 (origin
1374 (method url-fetch)
1375 (uri (rubygems-uri "css_parser" version))
1376 (sha256
1377 (base32
1378 "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw"))))
1379 (build-system ruby-build-system)
1380 (arguments `(#:tests? #f)) ;gem doesn't ship with test suite
1381 (propagated-inputs
1382 `(("ruby-addressable" ,ruby-addressable)))
1383 (synopsis "Ruby Cascading Style Sheets (CSS) parser")
1384 (description "This package allows loading, parsing and cascading Cascading
1385 Style Sheets (CSS) rule sets in Ruby.")
1386 (home-page "https://github.com/premailer/css_parser")
1387 (license license:expat)))
1388
1389 (define-public ruby-prawn-svg
1390 (package
1391 (name "ruby-prawn-svg")
1392 (version "0.30.0")
1393 (source
1394 (origin
1395 (method url-fetch)
1396 (uri (rubygems-uri "prawn-svg" version))
1397 (sha256
1398 (base32
1399 "0df3l49cy3xpwi0b73hmi2ykbjg9kjwrvhk0k3z7qhh5ghmmrn77"))))
1400 (build-system ruby-build-system)
1401 (arguments
1402 `(#:phases (modify-phases %standard-phases
1403 (add-after 'unpack 'do-not-use-bundler
1404 (lambda _
1405 (substitute* "spec/spec_helper.rb"
1406 ((".*[Bb]undler.*") ""))
1407 #t))
1408 (replace 'check
1409 (lambda* (#:key tests? #:allow-other-keys)
1410 (when tests?
1411 (invoke "rspec" "-Ilib" "-rprawn-svg"))
1412 #t)))))
1413 (native-inputs
1414 `(("ruby-rspec" ,ruby-rspec)))
1415 (propagated-inputs
1416 `(("ruby-css-parser" ,ruby-css-parser)
1417 ("ruby-prawn" ,ruby-prawn)))
1418 (synopsis "SVG renderer for the Prawn PDF library")
1419 (description "This library allows rendering Scalable Vector Graphics (SVG)
1420 graphics directly into a Portable Document Format (PDF) document using the
1421 Prawn module.")
1422 (home-page "https://github.com/mogest/prawn-svg")
1423 (license license:expat)))
1424
1425 (define-public ruby-prawn-templates
1426 (package
1427 (name "ruby-prawn-templates")
1428 (version "0.1.2")
1429 (source
1430 (origin
1431 (method git-fetch)
1432 (uri (git-reference
1433 (url "https://github.com/prawnpdf/prawn-templates")
1434 (commit version)))
1435 (file-name (git-file-name name version))
1436 (sha256
1437 (base32
1438 "0wll54wxxwixpwazfn4ffbqvqbfrl01cfsv8y11vnlzy7isx5xvl"))))
1439 (build-system ruby-build-system)
1440 (arguments
1441 `(#:phases (modify-phases %standard-phases
1442 (add-after 'unpack 'do-not-use-bundler
1443 (lambda _
1444 (substitute* "spec/spec_helper.rb"
1445 ((".*[Bb]undler.*") ""))
1446 #t))
1447 (replace 'check
1448 (lambda* (#:key tests? #:allow-other-keys)
1449 (when tests?
1450 (invoke "rspec"))
1451 #t)))))
1452 (native-inputs
1453 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
1454 ("ruby-rspec" ,ruby-rspec)))
1455 (propagated-inputs
1456 `(("ruby-pdf-reader" ,ruby-pdf-reader)
1457 ("ruby-prawn" ,ruby-prawn)))
1458 (synopsis "Prawn extension to include or combine PDF documents")
1459 (description "This @strong{unmaintained} package provides a Prawn
1460 extension that allows including other Portable Document Format (PDF) documents
1461 as background or combining several PDF documents into one. This functionality
1462 used to be part of Prawn itself, but was extracted from Prawn 0.15.0 because
1463 of its many longstanding issues.")
1464 (home-page "https://github.com/prawnpdf/prawn-templates")
1465 (license %prawn-project-licenses)))
1466
1467 (define-public ruby-polyglot
1468 (package
1469 (name "ruby-polyglot")
1470 (version "0.3.5")
1471 (source
1472 (origin
1473 (method url-fetch)
1474 (uri (rubygems-uri "polyglot" version))
1475 (sha256
1476 (base32
1477 "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr"))))
1478 (build-system ruby-build-system)
1479 (arguments `(#:tests? #f)) ;no test suite
1480 (synopsis "Augment @code{require} to load non-Ruby file types")
1481 (description "The Polyglot library allows a Ruby module to register a
1482 loader for the file type associated with a filename extension, and it augments
1483 @code{require} to find and load matching files.")
1484 (home-page "https://github.com/cjheath/polyglot")
1485 (license license:expat)))
1486
1487 (define-public ruby-treetop
1488 (package
1489 (name "ruby-treetop")
1490 (version "1.6.10")
1491 (source
1492 (origin
1493 (method git-fetch) ;no test suite in distributed gem
1494 (uri (git-reference
1495 (url "https://github.com/cjheath/treetop")
1496 (commit (string-append "v" version))))
1497 (file-name (git-file-name name version))
1498 (sha256
1499 (base32
1500 "1dmk94z6ivhrz5hsq68vl5vgydhkz89n394rha1ymddw3rymbfcv"))))
1501 (build-system ruby-build-system)
1502 (arguments
1503 `(#:test-target "spec"
1504 #:phases
1505 (modify-phases %standard-phases
1506 (replace 'replace-git-ls-files
1507 (lambda _
1508 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1509 ;; git ls-files output is merged in ruby-build-system.
1510 (substitute* "treetop.gemspec"
1511 (("`git ls-files -z`")
1512 "`find . -type f -print0 |sort -z|cut -zc3-`"))
1513 #t)))))
1514 (native-inputs
1515 `(("ruby-activesupport" ,ruby-activesupport)
1516 ("ruby-rr" ,ruby-rr)
1517 ("ruby-rspec" ,ruby-rspec)))
1518 (propagated-inputs
1519 `(("ruby-polyglot" ,ruby-polyglot)))
1520 (synopsis "Ruby-based parsing DSL based on parsing expression grammars")
1521 (description "This package provides a Ruby-based Parsing Expression
1522 Grammar (PEG) parser generator Domain Specific Language (DSL).")
1523 (home-page "https://github.com/cjheath/treetop")
1524 (license license:expat)))
1525
1526 (define-public ruby-typhoeus
1527 (package
1528 (name "ruby-typhoeus")
1529 (version "1.4.0")
1530 (source
1531 (origin
1532 (method url-fetch)
1533 (uri (rubygems-uri "typhoeus" version))
1534 (sha256
1535 (base32
1536 "1m22yrkmbj81rzhlny81j427qdvz57yk5wbcf3km0nf3bl6qiygz"))))
1537 (build-system ruby-build-system)
1538 (arguments
1539 `(#:tests? #f)) ; no included tests
1540 (propagated-inputs
1541 `(("ruby-ethon" ,ruby-ethon)))
1542 (synopsis "@code{libcurl} wrapper in Ruby")
1543 (description
1544 "Like a modern code version of the mythical beast with 100 serpent heads,
1545 Typhoeus runs HTTP requests in parallel while cleanly encapsulating handling
1546 logic.")
1547 (home-page "https://github.com/typhoeus/typhoeus")
1548 (license license:expat)))
1549
1550 (define-public ruby-rubocop-rspec
1551 (package
1552 (name "ruby-rubocop-rspec")
1553 (version "2.2.0")
1554 (source
1555 (origin
1556 (method git-fetch)
1557 (uri (git-reference
1558 (url "https://github.com/rubocop-hq/rubocop-rspec")
1559 (commit (string-append "v" version))))
1560 (file-name (git-file-name name version))
1561 (sha256
1562 (base32
1563 "0gdpjpympb6qc77bang759z7z6lckf14ghkx8v6614agxg8l3g5y"))))
1564 (build-system ruby-build-system)
1565 (arguments
1566 '(#:test-target "internal_investigation"
1567 #:phases
1568 (modify-phases %standard-phases
1569 (add-before 'check 'set-HOME
1570 (lambda _
1571 (setenv "HOME" "/tmp")
1572 #t)))))
1573 (propagated-inputs
1574 `(("ruby-rubocop" ,ruby-rubocop)
1575 ("ruby-rubocop-ast" ,ruby-rubocop-ast)))
1576 (native-inputs
1577 `(("ruby-rack" ,ruby-rack)
1578 ("ruby-rspec" ,ruby-rspec)
1579 ("ruby-rubocop-performance" ,ruby-rubocop-performance)
1580 ("ruby-simplecov" ,ruby-simplecov)
1581 ("ruby-yard" ,ruby-yard)))
1582 (synopsis "Code style checking for RSpec files")
1583 (description "This package provides a plugin for the RuboCop code style
1584 enforcing & linting tool.")
1585 (home-page "https://github.com/rubocop-hq/rubocop-rspec")
1586 (license license:expat)))
1587
1588 (define-public ruby-rubocop-rspec-minimal
1589 (hidden-package
1590 (package
1591 (inherit ruby-rubocop-rspec)
1592 (arguments
1593 (substitute-keyword-arguments (package-arguments ruby-rubocop-rspec)
1594 ((#:tests? _ #f) #f)))
1595 (propagated-inputs '())
1596 (native-inputs '()))))
1597
1598 (define-public ruby-rubocop-performance
1599 (package
1600 (name "ruby-rubocop-performance")
1601 (version "1.9.2")
1602 (source
1603 (origin
1604 (method git-fetch)
1605 (uri (git-reference
1606 (url "https://github.com/rubocop-hq/rubocop-performance")
1607 (commit (string-append "v" version))))
1608 (file-name (git-file-name name version))
1609 (sha256
1610 (base32
1611 "04lmkmz6c0ccs5miikrww7lakp7y6xz00g7b47ay7rn7sx5j6qyf"))))
1612 (build-system ruby-build-system)
1613 (arguments
1614 `(#:tests? #f ; tests require a git checkout of rubocop's source code.
1615 #:phases
1616 (modify-phases %standard-phases
1617 (replace 'replace-git-ls-files
1618 (lambda _
1619 (substitute* "rubocop-performance.gemspec"
1620 (("`git ls-files -z config lib LICENSE.txt README.md`")
1621 "`find config lib LICENSE.txt README.md -type f -print0 |sort -z`"))
1622 #t))
1623 (add-before 'check 'set-HOME
1624 (lambda _
1625 (setenv "HOME" "/tmp")
1626 #t)))))
1627 (propagated-inputs
1628 `(("ruby-rubocop" ,ruby-rubocop)
1629 ("ruby-rubocop-ast" ,ruby-rubocop-ast)))
1630 (native-inputs
1631 `(("ruby-bump" ,ruby-bump)
1632 ("ruby-yard" ,ruby-yard)))
1633 (synopsis "Performance optimizations checkers for Ruby code")
1634 (description "This package provides a collection of RuboCop cops to check
1635 for performance optimizations in Ruby code.")
1636 (home-page "https://docs.rubocop.org/rubocop-performance/")
1637 (license license:expat)))
1638
1639 (define-public ruby-rubocop-performance-minimal
1640 (hidden-package
1641 (package
1642 (inherit ruby-rubocop-performance)
1643 (arguments
1644 (substitute-keyword-arguments (package-arguments ruby-rubocop-performance)
1645 ((#:tests? _ #f) #f)))
1646 (propagated-inputs '())
1647 (native-inputs '()))))
1648
1649 (define-public ruby-gimme
1650 (let ((revision "1")
1651 (commit "4e71f0236f1271871916dd403261d26533db34c0"))
1652 (package
1653 (name "ruby-gimme")
1654 (version (git-version "0.5.0" revision commit))
1655 (source
1656 (origin
1657 (method git-fetch)
1658 (uri (git-reference
1659 (url "https://github.com/searls/gimme")
1660 (commit commit)))
1661 (file-name (git-file-name name version))
1662 (sha256
1663 (base32
1664 "0hrd32ygvf3i7h47ak8f623cz8ns9q7g60nnnvvlnywbggjaz3h6"))))
1665 (build-system ruby-build-system)
1666 (native-inputs
1667 `(("ruby-coveralls" ,ruby-coveralls)
1668 ("ruby-cucumber" ,ruby-cucumber)
1669 ("ruby-pry" ,ruby-pry)
1670 ("ruby-simplecov" ,ruby-simplecov)
1671 ("ruby-rspec-given" ,ruby-rspec-given)))
1672 (arguments
1673 `(;; The cucumber task fails with error: "index 3 out of matches
1674 ;; (IndexError)", apparently due to our newer Cucumber version.
1675 ;; TODO: Try the "default" task with a future release.
1676 #:test-target "spec"
1677 #:phases
1678 (modify-phases %standard-phases
1679 (add-after 'extract-gemspec 'prepare-for-tests
1680 (lambda _
1681 ;; Delete failing tests (possibly due to our newer rspec
1682 ;; version).
1683 (delete-file "spec/gimme/gives_class_methods_spec.rb")
1684 (delete-file "spec/gimme/rspec_adapter_spec.rb")
1685 (delete-file "spec/gimme/verifies_class_methods_spec.rb")
1686 ;; Fix duplicate version requirements and de-register files.
1687 (delete-file "Gemfile")
1688 (delete-file "Gemfile.lock")
1689 (substitute* "gimme.gemspec"
1690 ((".*\"Gemfile\".*") "")
1691 ((".*\"Gemfile\\.lock\",.*") "")
1692 ((".*(rspec|cucumber).*\">= 0\".*") "")
1693 (("\"spec/gimme/gives_class_methods_spec.rb\",") "")
1694 (("\"spec/gimme/rspec_adapter_spec.rb\",") "")
1695 (("\"spec/gimme/verifies_class_methods_spec.rb\",") "")
1696 ;; All of these gems relate to development, and are
1697 ;; unnecessary when running the tests.
1698 ((".*(add|gem).*guard-.*") "")
1699 ((".*(add|gem).*jeweler.*") "")
1700 ((".*(add|gem).*pry.*") "")
1701 ((".*(add|gem).*growl.*") "")
1702 ((".*(add|gem).*rb-fsevent.*") ""))
1703 #t)))))
1704 (synopsis "Lightweight test double library for Ruby")
1705 (description "Gimme is a very lightweight test double library for Ruby,
1706 based on Mockito (a mocking framework for Java). It is an opinionated (but
1707 not noisy) means to facilitate test-driving by enabling the authors to specify
1708 only what they care about.")
1709 (home-page "https://github.com/searls/gimme")
1710 (license license:expat))))
1711
1712 (define-public ruby-standard
1713 (package
1714 (name "ruby-standard")
1715 (version "0.4.7")
1716 (source
1717 (origin
1718 (method git-fetch) ;no test suite in distributed gem
1719 (uri (git-reference
1720 (url "https://github.com/testdouble/standard")
1721 (commit (string-append "v" version))))
1722 (file-name (git-file-name name version))
1723 (sha256
1724 (base32
1725 "0ylx0lm2pbbgr5h7fban592w96bl3wxmvfcpcdfrhkxnpg5kiwgv"))))
1726 (build-system ruby-build-system)
1727 (arguments
1728 ;; TODO: the tests are currently broken due to using a newer Rubocop.
1729 `(#:tests? #f
1730 #:phases
1731 (modify-phases %standard-phases
1732 (add-after 'unpack 'relax-version-requiremens
1733 (lambda _
1734 (delete-file "Gemfile")
1735 (delete-file "Gemfile.lock")
1736 #t))
1737 (replace 'replace-git-ls-files
1738 (lambda _
1739 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1740 ;; git ls-files output is merged in ruby-build-system.
1741 (substitute* "standard.gemspec"
1742 (("`git ls-files -z`")
1743 "`find . -type f -not -regex '.*\\.gem$' -print0 \
1744 |sort -z|cut -zc3-`"))
1745 #t)))))
1746 (native-inputs
1747 `(("ruby-gimme" ,ruby-gimme)
1748 ("ruby-pry" ,ruby-pry)
1749 ("ruby-simplecov" ,ruby-simplecov)))
1750 (propagated-inputs
1751 `(("ruby-rubocop" ,ruby-rubocop)
1752 ("ruby-rubocop-performance" ,ruby-rubocop-performance)))
1753 (synopsis "Ruby Style Guide, with linter & automatic code fixer")
1754 (description "Standard is a port of StandardJS. Like StandardJS, it aims
1755 to save time in the following ways:
1756 @itemize
1757 @item No configuration.
1758 @item Automatically format code.
1759 @item Catch style issues and programmer errors early.
1760 @end itemize")
1761 (home-page "https://github.com/testdouble/standard")
1762 (license license:expat)))
1763
1764 (define-public ruby-chunky-png
1765 (package
1766 (name "ruby-chunky-png")
1767 (version "1.3.14")
1768 (source
1769 (origin
1770 (method git-fetch)
1771 (uri (git-reference
1772 (url "https://github.com/wvanbergen/chunky_png")
1773 (commit (string-append "v" version))))
1774 (file-name (git-file-name name version))
1775 (sha256
1776 (base32 "1m7y11ix38h5a2pj5v81qdmvqh980ql9hp62hk2dxwkwsa4nh22h"))))
1777 (build-system ruby-build-system)
1778 (arguments
1779 `(#:test-target "spec"
1780 #:phases
1781 (modify-phases %standard-phases
1782 (add-after 'unpack 'disable-bundler
1783 (lambda _
1784 (substitute* (find-files "." "\\.rb$")
1785 (("require.*bundler/setup.*") ""))
1786 #t))
1787 (replace 'replace-git-ls-files
1788 (lambda _
1789 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1790 ;; git ls-files output is merged in ruby-build-system.
1791 (substitute* "chunky_png.gemspec"
1792 (("`git ls-files`")
1793 "`find . -type f -not -regex '.*\\.gem$' |sort |cut -c3-`"))
1794 #t)))))
1795 (native-inputs
1796 `(("bundler" ,bundler)
1797 ("ruby-rspec" ,ruby-rspec)
1798 ("ruby-standard" ,ruby-standard)
1799 ("ruby-yard" ,ruby-yard)))
1800 (synopsis "Ruby library to handle PNG images")
1801 (description "ChunkyPNG is a pure Ruby library that can read and write
1802 Portable Network Graphics (PNG) images without depending on an external image
1803 library. It tries to be memory efficient and reasonably fast. It has
1804 features such as:
1805 @itemize
1806 @item
1807 Decoding support for any image that the PNG standard allows. This includes all
1808 standard color modes, all bit depths, all transparency, and interlacing and
1809 filtering options.
1810 @item
1811 Encoding support for images of all color modes (true color, grayscale, and
1812 indexed) and transparency for all these color modes. The best color mode is
1813 chosen automatically, based on the amount of used colors.
1814 @item Read/write access to the image's pixels.
1815 @item Read/write access to all image metadata that is stored in chunks.
1816 @item
1817 Memory efficiency: @code{fixnum} are used, i.e. 4 or 8 bytes of memory per
1818 pixel, depending on the hardware).
1819 @item
1820 Performance: ChunkyPNG is reasonably fast for Ruby standards, by only using
1821 integer math and a highly optimized saving routine.
1822 @item Interoperability with RMagick.
1823 @end itemize
1824
1825 ChunkyPNG is vulnerable to decompression bombs and can run out of memory when
1826 loading a specifically crafted PNG file. This is hard to fix in pure Ruby.
1827 Deal with untrusted images in a separate process, e.g., by using @code{fork}
1828 or a background processing library.")
1829 (home-page "https://github.com/wvanbergen/chunky_png/wiki")
1830 (license license:expat)))
1831
1832 (define-public ruby-text-hyphen
1833 (package
1834 (name "ruby-text-hyphen")
1835 (version "1.4.1")
1836 (source
1837 (origin
1838 (method url-fetch)
1839 (uri (rubygems-uri "text-hyphen" version))
1840 (sha256
1841 (base32
1842 "1gj4awvs9ryf960m0iawg43jyjmfwcqgfwrbcfp890a57b9ag7q1"))))
1843 (build-system ruby-build-system)
1844 (native-inputs
1845 `(("ruby-hoe" ,ruby-hoe)))
1846 (synopsis "Ruby library to hyphenate words in various languages")
1847 (description "Text::Hyphen is a Ruby library to hyphenate words in various
1848 languages using Ruby-fied versions of TeX hyphenation patterns. It will
1849 properly hyphenate various words according to the rules of the language the
1850 word is written in. The algorithm is based on that of the TeX typesetting
1851 system by Donald E. Knuth.")
1852 (home-page "https://github.com/halostatue/text-hyphen")
1853 ;; The whole is licensed under the Expat license, but parts use various
1854 ;; versions of the LaTeX Project Public License.
1855 (license license:expat)))
1856
1857 (define-public ruby-open-uri-cached
1858 (package
1859 (name "ruby-open-uri-cached")
1860 (version "0.0.5")
1861 (source
1862 (origin
1863 (method url-fetch)
1864 (uri (rubygems-uri "open-uri-cached" version))
1865 (sha256
1866 (base32
1867 "13xy2vhrgz9mdxhklw5fszhamsdxh8ysf3l40g92hqm4hm288wap"))))
1868 (build-system ruby-build-system)
1869 (arguments
1870 `(#:tests? #f)) ;no test suite
1871 (synopsis "OpenURI with transparent disk caching")
1872 (description "OpenURI with transparent disk caching, which is
1873 useful to avoid making excessive queries, for example when scraping
1874 web pages.")
1875 (home-page "https://github.com/tigris/open-uri-cached")
1876 (license license:expat)))
1877
1878 (define-public ruby-asciidoctor-pdf
1879 ;; Use the latest commit, as the last tag doesn't build with the
1880 ;; latest Ruby dependencies in Guix.
1881 (let ((revision "1")
1882 (commit "d257440df895d1595a3825ef58b32e4b290ba1c3"))
1883 (package
1884 (name "ruby-asciidoctor-pdf")
1885 (version (git-version "1.5.3" revision commit))
1886 (source
1887 (origin
1888 (method git-fetch) ;no test suite in the distributed gem
1889 (uri (git-reference
1890 (url "https://github.com/asciidoctor/asciidoctor-pdf")
1891 (commit commit)))
1892 (file-name (git-file-name name version))
1893 (sha256
1894 (base32
1895 "1563d11ghzsrsg4inwfwj6b9hb5sk5b429f49fwq5qg3sq76kgjj"))))
1896 (build-system ruby-build-system)
1897 (arguments
1898 `(#:test-target "spec"
1899 #:phases
1900 (modify-phases %standard-phases
1901 (add-after 'unpack 'remove-failing-tests
1902 ;; Two tests module fail for unknown reasons, *only* when
1903 ;; ran in the build container (see:
1904 ;; https://github.com/asciidoctor/asciidoctor-pdf/issues/1725#issuecomment-658777965).
1905 (lambda _
1906 (delete-file "spec/audio_spec.rb")
1907 (delete-file "spec/video_spec.rb")
1908 #t))
1909 (add-after 'extract-gemspec 'strip-version-requirements
1910 (lambda _
1911 (substitute* "asciidoctor-pdf.gemspec"
1912 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1913 (string-append stripped "\n")))
1914 #t))
1915 (replace 'replace-git-ls-files
1916 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1917 ;; git ls-files output is merged in ruby-build-system.
1918 (lambda _
1919 (substitute* "asciidoctor-pdf.gemspec"
1920 (("`git ls-files -z`")
1921 "`find . -type f -not -regex '.*\\.gem$' -print0 \
1922 |sort -z|cut -zc3-`"))
1923 #t))
1924 ;; The tests rely on the Gem being installed, so move the check phase
1925 ;; after the install phase.
1926 (delete 'check)
1927 (add-after 'install 'check
1928 (lambda* (#:key outputs tests? #:allow-other-keys)
1929 (let ((new-gem (string-append (assoc-ref outputs "out")
1930 "/lib/ruby/vendor_ruby")))
1931 (setenv "GEM_PATH"
1932 (string-append (getenv "GEM_PATH") ":" new-gem))
1933 (when tests?
1934 (invoke "rspec" "-t" "~visual" "-t" "~cli" "-t" "~network"))
1935 #t))))))
1936 (native-inputs
1937 `(("ruby-chunky-png" ,ruby-chunky-png)
1938 ("ruby-coderay" ,ruby-coderay)
1939 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
1940 ("ruby-rouge" ,ruby-rouge)
1941 ("ruby-rspec" ,ruby-rspec)))
1942 (propagated-inputs
1943 `(("ruby-asciidoctor" ,ruby-asciidoctor)
1944 ("ruby-concurrent-ruby" ,ruby-concurrent)
1945 ("ruby-open-uri-cached" ,ruby-open-uri-cached)
1946 ("ruby-prawn" ,ruby-prawn)
1947 ("ruby-prawn-icon" ,ruby-prawn-icon)
1948 ("ruby-prawn-svg" ,ruby-prawn-svg)
1949 ("ruby-prawn-table" ,ruby-prawn-table)
1950 ("ruby-prawn-templates" ,ruby-prawn-templates)
1951 ("ruby-safe-yaml" ,ruby-safe-yaml)
1952 ("ruby-text-hyphen" ,ruby-text-hyphen)
1953 ("ruby-thread-safe" ,ruby-thread-safe)
1954 ("ruby-treetop" ,ruby-treetop)
1955 ("ruby-ttfunk" ,ruby-ttfunk)))
1956 (synopsis"AsciiDoc to Portable Document Format (PDF)} converter")
1957 (description "Asciidoctor PDF is an extension for Asciidoctor that
1958 converts AsciiDoc documents to Portable Document Format (PDF) using the Prawn
1959 PDF library. It has features such as:
1960 @itemize
1961 @item Direct AsciiDoc to PDF conversion
1962 @item Configuration-driven theme (style and layout)
1963 @item Scalable Vector Graphics (SVG) support
1964 @item PDF document outline (i.e., bookmarks)
1965 @item Table of contents page(s)
1966 @item Document metadata (title, authors, subject, keywords, etc.)
1967 @item Internal cross reference links
1968 @item Syntax highlighting with Rouge, Pygments, or CodeRay
1969 @item Page numbering
1970 @item Customizable running content (header and footer)
1971 @item
1972 “Keep together” blocks (i.e., page breaks avoided in certain block content)
1973 @item Orphaned section titles avoided
1974 @item Autofit verbatim blocks (as permitted by base_font_size_min setting)
1975 @item Table border settings honored
1976 @item Font-based icons
1977 @item Custom TrueType (TTF) fonts
1978 @item Double-sided printing mode (margins alternate on recto and verso pages)
1979 @end itemize")
1980 (home-page "https://asciidoctor.org/docs/asciidoctor-pdf")
1981 (license license:expat))))
1982
1983 (define-public ruby-ast
1984 (package
1985 (name "ruby-ast")
1986 (version "2.4.1")
1987 (source
1988 (origin
1989 (method git-fetch) ;no test included in gem from v2.4.1
1990 (uri (git-reference
1991 (url "https://github.com/whitequark/ast")
1992 (commit (string-append "v" version))))
1993 (file-name (git-file-name name version))
1994 (sha256
1995 (base32
1996 "0k8vya256chimy473g818gim06m5rjgh6mz5sc5g8xz3csh3rysi"))))
1997 (build-system ruby-build-system)
1998 (arguments
1999 '(#:phases
2000 (modify-phases %standard-phases
2001 (add-after 'unpack 'remove-coveralls-requirement
2002 (lambda _
2003 (substitute* "test/helper.rb"
2004 (("require 'coveralls'") "")
2005 (("Coveralls::SimpleCov::Formatter") ""))
2006 #t))
2007 (add-after 'extract-gemspec 'remove-unnecessary-requirements
2008 (lambda _
2009 (substitute* "ast.gemspec"
2010 ((".*coveralls.*") "\n")
2011 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
2012 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
2013 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n"))
2014 #t)))))
2015 (native-inputs
2016 `(("bundler" ,bundler)
2017 ("ruby-simplecov" ,ruby-simplecov)
2018 ("ruby-json-pure" ,ruby-json-pure)
2019 ("ruby-mime-times" ,ruby-mime-types)
2020 ("ruby-yard" ,ruby-yard)
2021 ("ruby-kramdown" ,ruby-kramdown)
2022 ("ruby-rest-client" ,ruby-rest-client)
2023 ("ruby-bacon" ,ruby-bacon)
2024 ("ruby-bacon-colored-output" ,ruby-bacon-colored-output)
2025 ("ruby-racc" ,ruby-racc)))
2026 (synopsis "Library for working with Abstract Syntax Trees")
2027 (description
2028 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
2029 It does this through immutable data structures.")
2030 (home-page "https://whitequark.github.io/ast/")
2031 (license license:expat)))
2032
2033 (define-public ruby-sporkmonger-rack-mount
2034 ;; Testing the addressable gem requires a newer commit than that released, so
2035 ;; use an up to date version.
2036 (let ((revision "1")
2037 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
2038 (package
2039 (name "ruby-sporkmonger-rack-mount")
2040 (version (git-version "0.8.3" revision commit))
2041 (source (origin
2042 (method git-fetch)
2043 (uri (git-reference
2044 (url "https://github.com/sporkmonger/rack-mount")
2045 (commit commit)))
2046 (file-name (git-file-name name version))
2047 (sha256
2048 (base32
2049 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
2050 (build-system ruby-build-system)
2051 (arguments
2052 ;; Tests currently fail so disable them.
2053 ;; https://github.com/sporkmonger/rack-mount/pull/1
2054 `(#:tests? #f))
2055 (propagated-inputs `(("ruby-rack" ,ruby-rack)))
2056 (synopsis "Stackable dynamic tree based Rack router")
2057 (description
2058 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
2059 continue trying routes if the response returns pass. This allows multiple
2060 routes to be nested or stacked on top of each other.")
2061 (home-page "https://github.com/sporkmonger/rack-mount")
2062 (license license:expat))))
2063
2064 (define-public ruby-ci-reporter
2065 (package
2066 (name "ruby-ci-reporter")
2067 (version "2.0.0")
2068 (source (origin
2069 (method url-fetch)
2070 (uri (rubygems-uri "ci_reporter" version))
2071 (sha256
2072 (base32
2073 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
2074 (build-system ruby-build-system)
2075 (arguments
2076 `(#:test-target "rspec"))
2077 (propagated-inputs
2078 `(("ruby-builder" ,ruby-builder)))
2079 (native-inputs
2080 `(("bundler" ,bundler)
2081 ("ruby-rspec" ,ruby-rspec)))
2082 (synopsis "Generate XML reports of runs test")
2083 (description
2084 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
2085 you to generate XML reports of your test runs. The resulting files can be
2086 read by a continuous integration system that understands Ant's JUnit report
2087 format.")
2088 (home-page "https://github.com/nicksieger/ci_reporter")
2089 (license license:expat)))
2090
2091 (define-public ruby-contracts
2092 (package
2093 (name "ruby-contracts")
2094 (version "0.16.0")
2095 (source
2096 (origin
2097 (method url-fetch)
2098 (uri (rubygems-uri "contracts" version))
2099 (sha256
2100 (base32
2101 "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"))))
2102 (build-system ruby-build-system)
2103 (arguments
2104 '(#:test-target "spec"
2105 #:phases
2106 (modify-phases %standard-phases
2107 ;; Don't run or require rubocop, the code linting tool, as this is a
2108 ;; bit unnecessary.
2109 (add-after 'unpack 'dont-run-rubocop
2110 (lambda _
2111 (substitute* "Rakefile"
2112 ((".*rubocop.*") "")
2113 ((".*RuboCop.*") ""))
2114 #t)))))
2115 (native-inputs
2116 `(("ruby-rspec" ,ruby-rspec)))
2117 (synopsis "Method contracts for Ruby")
2118 (description
2119 "This library provides contracts for Ruby. A contract describes the
2120 correct inputs and output for a method, and will raise an error if a incorrect
2121 value is found.")
2122 (home-page "https://github.com/egonSchiele/contracts.ruby")
2123 (license license:bsd-2)))
2124
2125 (define-public ruby-crack
2126 (package
2127 (name "ruby-crack")
2128 (version "0.4.5")
2129 (source
2130 (origin
2131 (method url-fetch)
2132 (uri (rubygems-uri "crack" version))
2133 (sha256
2134 (base32
2135 "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r"))))
2136 (build-system ruby-build-system)
2137 (arguments
2138 `(#:phases
2139 (modify-phases %standard-phases
2140 (replace 'check
2141 (lambda* (#:key tests? #:allow-other-keys)
2142 (when tests?
2143 (for-each (lambda (file)
2144 (display file)(display "\n")
2145 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
2146 (find-files "test" ".*rb$")))
2147 #t)))))
2148 (propagated-inputs
2149 `(("ruby-rexml" ,ruby-rexml)))
2150 (synopsis "Simple JSON and XML parsing for Ruby")
2151 (description
2152 "@code{crack} provides really simple JSON and XML parsing, extracted from
2153 code in Merb and Rails.")
2154 (home-page "https://github.com/jnunemaker/crack")
2155 (license license:expat)))
2156
2157 (define-public ruby-cliver
2158 (package
2159 (name "ruby-cliver")
2160 (version "0.3.2")
2161 (source
2162 (origin
2163 (method url-fetch)
2164 (uri (rubygems-uri "cliver" version))
2165 (sha256
2166 (base32
2167 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
2168 (build-system ruby-build-system)
2169 (arguments
2170 '(#:phases
2171 (modify-phases %standard-phases
2172 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
2173 ;; would be nice, but the tests look to be incompatible:
2174 ;;
2175 ;; NoMethodError: undefined method `last_comment'
2176 (replace 'check
2177 (lambda* (#:key tests? #:allow-other-keys)
2178 (when tests?
2179 (invoke "rspec"))
2180 #t)))))
2181 (native-inputs
2182 `(("bundler" ,bundler)
2183 ("ruby-rspec" ,ruby-rspec-2)))
2184 (synopsis "Assertions for command-line dependencies in Ruby")
2185 (description
2186 "@code{cliver} provides a way to detect missing command-line
2187 dependencies, including versions.")
2188 (home-page "https://github.com/yaauie/cliver")
2189 (license license:expat)))
2190
2191 (define-public ruby-czmq-ffi-gen
2192 (package
2193 (name "ruby-czmq-ffi-gen")
2194 (version "0.13.0")
2195 (source
2196 (origin
2197 (method url-fetch)
2198 (uri (rubygems-uri "czmq-ffi-gen" version))
2199 (sha256
2200 (base32
2201 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
2202 (build-system ruby-build-system)
2203 (arguments
2204 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
2205 #:phases
2206 (modify-phases %standard-phases
2207 (add-after 'unpack 'patch-lib_dirs
2208 (lambda* (#:key inputs #:allow-other-keys)
2209 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
2210 (("lib\\_dirs = \\[.*\\]")
2211 (string-append "lib_dirs = ['"
2212 (assoc-ref inputs "czmq") "/lib"
2213 "']")))
2214 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
2215 (("lib\\_dirs = \\[.*\\]")
2216 (string-append "lib_dirs = ['"
2217 (assoc-ref inputs "zeromq") "/lib"
2218 "']"))))))))
2219 (inputs
2220 `(("zeromq" ,zeromq)
2221 ("czmq" ,czmq)))
2222 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
2223 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
2224 (description
2225 "These Ruby bindings are not intended to be directly used, but rather
2226 used by higher level bindings like those provided by CZTop.")
2227 (home-page
2228 "https://github.com/paddor/czmq-ffi-gen")
2229 (license license:isc)))
2230
2231 (define-public ruby-cztop
2232 (package
2233 (name "ruby-cztop")
2234 (version "0.12.2")
2235 (source
2236 (origin
2237 (method url-fetch)
2238 (uri (rubygems-uri "cztop" version))
2239 (sha256
2240 (base32
2241 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
2242 (build-system ruby-build-system)
2243 (arguments
2244 '(#:test-target "spec"
2245 #:phases
2246 (modify-phases %standard-phases
2247 (add-after 'unpack 'patch-lib_paths
2248 (lambda* (#:key inputs #:allow-other-keys)
2249 (substitute* "lib/cztop/poller/zmq.rb"
2250 (("lib\\_paths = \\[.*\\]")
2251 (string-append "lib_paths = ['"
2252 (assoc-ref inputs "zeromq") "/lib"
2253 "']"))))))))
2254 (native-inputs
2255 `(("bundler" ,bundler)
2256 ("ruby-rspec" ,ruby-rspec)))
2257 (inputs
2258 `(("zeromq" ,zeromq)))
2259 (propagated-inputs
2260 `(("ruby-czmq-ffi-gen" ,ruby-czmq-ffi-gen)))
2261 (synopsis "CZMQ Ruby bindings")
2262 (description
2263 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
2264 CZMQ. The focus of of CZTop is on being easy to use and providing first class
2265 support for security mechanisms.")
2266 (home-page "https://github.com/paddor/cztop")
2267 (license license:isc)))
2268
2269 (define-public ruby-saikuro-treemap
2270 (package
2271 (name "ruby-saikuro-treemap")
2272 (version "0.2.0")
2273 (source (origin
2274 (method url-fetch)
2275 (uri (rubygems-uri "saikuro_treemap" version))
2276 (sha256
2277 (base32
2278 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
2279 (build-system ruby-build-system)
2280 ;; Some of the tests fail because the generated JSON has keys in a
2281 ;; different order. This is a problem with the test suite rather than any
2282 ;; of the involved libraries.
2283 (arguments `(#:tests? #f))
2284 (propagated-inputs
2285 `(("ruby-json-pure" ,ruby-json-pure)
2286 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
2287 (synopsis "Generate complexity treemap based on saikuro analysis")
2288 (description
2289 "This gem generates a treemap showing the complexity of Ruby code on
2290 which it is run. It uses Saikuro under the covers to analyze Ruby code
2291 complexity.")
2292 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
2293 (license license:expat)))
2294
2295 (define-public ruby-oauth2
2296 (package
2297 (name "ruby-oauth2")
2298 (version "1.4.2")
2299 (source
2300 (origin
2301 (method url-fetch)
2302 (uri (rubygems-uri "oauth2" version))
2303 (sha256
2304 (base32 "15i9z4j5pcjkr30lkcd79xzbr4kpmy0bqgwa436fqyqk646fv036"))))
2305 (build-system ruby-build-system)
2306 (arguments
2307 '(#:tests? #f)) ; no included tests
2308 (propagated-inputs
2309 `(("ruby-faraday" ,ruby-faraday)
2310 ("ruby-jwt" ,ruby-jwt)
2311 ("ruby-multi-json" ,ruby-multi-json)
2312 ("ruby-multi-xml" ,ruby-multi-xml)
2313 ("ruby-rack" ,ruby-rack)))
2314 (synopsis "Ruby wrapper for the OAuth 2.0")
2315 (description
2316 "This package provides a Ruby wrapper for the OAuth 2.0 protocol built
2317 with a similar style to the original OAuth spec.")
2318 (home-page "https://github.com/oauth-xx/oauth2")
2319 (license license:expat)))
2320
2321 (define-public ruby-omniauth
2322 (package
2323 (name "ruby-omniauth")
2324 (version "2.0.3")
2325 (source
2326 (origin
2327 (method url-fetch)
2328 (uri (rubygems-uri "omniauth" version))
2329 (sha256
2330 (base32 "105mzgvmn2kjaacxw01h4wqv33r7hfn5z8fxlkk3jcjar14j71bh"))))
2331 (build-system ruby-build-system)
2332 (propagated-inputs
2333 `(("ruby-hashie" ,ruby-hashie)
2334 ("ruby-rack" ,ruby-rack)
2335 ("ruby-rack-protection" ,ruby-rack-protection)))
2336 (native-inputs
2337 `(("ruby-rspec" ,ruby-rspec)))
2338 (synopsis "Generalized Rack framework for multiple-provider authentication")
2339 (description
2340 "This package provides a generalized Rack framework for multiple-provider
2341 authentication.")
2342 (home-page "https://github.com/omniauth/omniauth")
2343 (license license:expat)))
2344
2345 (define-public ruby-omniauth-oauth2
2346 (package
2347 (name "ruby-omniauth-oauth2")
2348 (version "1.7.1")
2349 (source
2350 (origin
2351 (method url-fetch)
2352 (uri (rubygems-uri "omniauth-oauth2" version))
2353 (sha256
2354 (base32
2355 "10fr2b58sp7l6nfdvxpbi67374hkrvsf507cvda89jjs0jacy319"))))
2356 (build-system ruby-build-system)
2357 (arguments
2358 '(#:phases
2359 (modify-phases %standard-phases
2360 (add-after 'unpack 'remove-unnecessary-dependencies
2361 (lambda _
2362 ;; The coveralls gem submits coverage information to an online
2363 ;; service, and is unnecessary when running the tests
2364 (substitute* "Gemfile"
2365 ((".*coveralls\"") ""))
2366 (substitute* "spec/helper.rb"
2367 (("require \"coveralls\"") "")
2368 (("Coveralls::SimpleCov::Formatter") ""))
2369 #t)))))
2370 (propagated-inputs
2371 `(("ruby-oauth2" ,ruby-oauth2)
2372 ("ruby-omniauth" ,ruby-omniauth)))
2373 (native-inputs
2374 `(("bundler" ,bundler)
2375 ("ruby-rspec" ,ruby-rspec)
2376 ("ruby-simplecov" ,ruby-simplecov)
2377 ("ruby-rack-test" ,ruby-rack-test)
2378 ("ruby-webmock" ,ruby-webmock)))
2379 (synopsis "Abstract OAuth2 strategy for OmniAuth")
2380 (description
2381 "This library provides a generic OAuth2 strategy for OmniAuth. It
2382 doesn't provide a way to gather user information, so should be used as a
2383 building block for authentication strategies.")
2384 (home-page "https://github.com/omniauth/omniauth-oauth2")
2385 (license license:expat)))
2386
2387 (define-public ruby-open4
2388 (package
2389 (name "ruby-open4")
2390 (version "1.3.4")
2391 (source
2392 (origin
2393 (method url-fetch)
2394 (uri (rubygems-uri "open4" version))
2395 (sha256
2396 (base32
2397 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
2398 (build-system ruby-build-system)
2399 (arguments
2400 '(#:phases
2401 (modify-phases %standard-phases
2402 (add-after 'unpack 'patch
2403 (lambda _
2404 (substitute* "rakefile"
2405 ;; Update the Rakefile so it works
2406 (("-rubygems") "-rrubygems")
2407 (("Config") "RbConfig"))
2408 #t))
2409 (add-before 'check 'set-LIB
2410 (lambda _
2411 ;; This is used in the rakefile when running the tests
2412 (setenv "LIB" "open4")
2413 #t)))))
2414 (synopsis "Open child processes from Ruby and manage them easily")
2415 (description
2416 "@code{Open4} is a Ruby library to run child processes and manage their
2417 input and output.")
2418 (home-page "https://github.com/ahoward/open4")
2419 (license license:ruby)))
2420
2421 (define-public ruby-options
2422 (package
2423 (name "ruby-options")
2424 (version "2.3.2")
2425 (source
2426 (origin
2427 (method url-fetch)
2428 (uri (rubygems-uri "options" version))
2429 (sha256
2430 (base32
2431 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
2432 (build-system ruby-build-system)
2433 (arguments
2434 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
2435 #:phases
2436 (modify-phases %standard-phases
2437 (add-before 'check 'set-LIB
2438 (lambda _
2439 ;; This is used in the Rakefile, and setting it avoids an issue
2440 ;; with running the tests.
2441 (setenv "LIB" "options")
2442 #t)))))
2443 (synopsis "Ruby library to parse options from *args cleanly")
2444 (description
2445 "The @code{options} library helps with parsing keyword options in Ruby
2446 functions.")
2447 (home-page "https://github.com/ahoward/options")
2448 (license license:ruby)))
2449
2450 (define-public ruby-erubi
2451 (package
2452 (name "ruby-erubi")
2453 (version "1.8.0")
2454 (source
2455 (origin
2456 (method url-fetch)
2457 (uri (rubygems-uri "erubi" version))
2458 (sha256
2459 (base32
2460 "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1"))))
2461 (build-system ruby-build-system)
2462 (synopsis "ERB template engine for Ruby")
2463 (description
2464 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
2465 Erubis")
2466 (home-page "https://github.com/jeremyevans/erubi")
2467 (license license:expat)))
2468
2469 (define-public ruby-erubis
2470 (package
2471 (name "ruby-erubis")
2472 (version "2.7.0")
2473 (source
2474 (origin
2475 (method url-fetch)
2476 (uri (rubygems-uri "erubis" version))
2477 (sha256
2478 (base32
2479 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
2480 (build-system ruby-build-system)
2481 (arguments
2482 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
2483 (synopsis "Implementation of embedded Ruby (eRuby)")
2484 (description
2485 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
2486 features such as multi-language support, auto escaping, auto trimming spaces
2487 around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
2488 support.")
2489 (home-page "http://www.kuwata-lab.com/erubis/")
2490 (license license:expat)))
2491
2492 (define-public ruby-ethon
2493 (package
2494 (name "ruby-ethon")
2495 (version "0.12.0")
2496 (source
2497 (origin
2498 (method url-fetch)
2499 (uri (rubygems-uri "ethon" version))
2500 (sha256
2501 (base32
2502 "0gggrgkcq839mamx7a8jbnp2h7x2ykfn34ixwskwb0lzx2ak17g9"))))
2503 (build-system ruby-build-system)
2504 (arguments
2505 `(#:tests? #f)) ; no included tests
2506 (inputs
2507 `(("curl" ,curl)))
2508 (propagated-inputs
2509 `(("ruby-ffi" ,ruby-ffi)))
2510 (synopsis "Very lightweight @code{libcurl} wrapper")
2511 (description
2512 "Ethon is a very basic @code{libcurl} wrapper using ffi.")
2513 (home-page "https://github.com/typhoeus/ethon")
2514 (license license:expat)))
2515
2516 (define-public ruby-execjs
2517 (package
2518 (name "ruby-execjs")
2519 (version "2.7.0")
2520 (source
2521 (origin
2522 ;; fetch from github as the gem does not contain testing code
2523 (method git-fetch)
2524 (uri (git-reference
2525 (url "https://github.com/rails/execjs")
2526 (commit (string-append "v" version))))
2527 (file-name (git-file-name name version))
2528 (sha256
2529 (base32
2530 "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
2531 (build-system ruby-build-system)
2532 (native-inputs
2533 `(("bundler" ,bundler)
2534 ;; The test suite tests all the available backends. Currenly, this just
2535 ;; means the node backend.
2536 ;;
2537 ;; PASSED: test:node
2538 ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
2539 ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
2540 ("node" ,node)))
2541 (synopsis "Run JavaScript code from Ruby")
2542 (description
2543 "ExecJS lets you run JavaScript code from Ruby. It automatically picks a
2544 runtime to evaluate your JavaScript program, then returns the result to you as
2545 a Ruby object.")
2546 (home-page "https://github.com/rails/execjs")
2547 (license license:expat)))
2548
2549 (define-public ruby-fakefs
2550 (package
2551 (name "ruby-fakefs")
2552 (version "1.2.2")
2553 (home-page "https://github.com/fakefs/fakefs")
2554 (source (origin
2555 ;; The Rubygems release does not contain tests.
2556 (method git-fetch)
2557 (uri (git-reference
2558 (url home-page)
2559 (commit (string-append "v" version))))
2560 (file-name (git-file-name name version))
2561 (sha256
2562 (base32
2563 "008dq9knyip2bfbl0mrk8b8r7bv0k3bf128wcfqsgy1rqal4mgwk"))))
2564 (build-system ruby-build-system)
2565 (arguments
2566 '(#:phases (modify-phases %standard-phases
2567 (replace 'replace-git-ls-files
2568 (lambda _
2569 (substitute* "fakefs.gemspec"
2570 (("`git ls-files lib README.md LICENSE`")
2571 "`find lib README.md LICENSE -type f | sort`"))
2572 #t))
2573 (add-before 'check 'remove-version-constraints
2574 (lambda _
2575 ;; Drop hard version requirements for test dependencies.
2576 (substitute* "fakefs.gemspec"
2577 (("(.*add_development_dependency .*), .*" _ dep)
2578 (string-append dep "\n")))
2579 #t)))))
2580 (native-inputs
2581 `(("ruby-bump" ,ruby-bump)
2582 ("ruby-maxitest" ,ruby-maxitest)
2583 ("ruby-rubocop" ,ruby-rubocop)
2584 ("ruby-rspec" ,ruby-rspec)))
2585 (synopsis "Fake file system for Ruby")
2586 (description
2587 "This package provides a fake file system for use in test suites. It
2588 avoids the need for manually creating temporary directories, or dealing
2589 with platform intricacies in @code{File} and @code{FileUtils}.")
2590 (license license:expat)))
2591
2592 (define-public ruby-orderedhash
2593 (package
2594 (name "ruby-orderedhash")
2595 (version "0.0.6")
2596 (source (origin
2597 (method url-fetch)
2598 (uri (rubygems-uri "orderedhash" version))
2599 (sha256
2600 (base32
2601 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
2602 (build-system ruby-build-system)
2603 (arguments
2604 '(#:tests? #f)) ; no test suite
2605 (synopsis "Ruby library providing an order-preserving hash")
2606 (description "Orderedhash is a Ruby library providing a hash
2607 implementation that preserves the order of items and features some array-like
2608 extensions.")
2609 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
2610 (license license:public-domain)))
2611
2612 (define-public ruby-libxml
2613 (package
2614 (name "ruby-libxml")
2615 (version "3.0.0")
2616 (source
2617 (origin
2618 (method url-fetch)
2619 (uri (rubygems-uri "libxml-ruby" version))
2620 (sha256
2621 (base32
2622 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
2623 (build-system ruby-build-system)
2624 (inputs
2625 `(("zlib" ,zlib)
2626 ("libxml2" ,libxml2)))
2627 (arguments
2628 '(#:tests? #f ; test suite hangs for unknown reason
2629 #:gem-flags
2630 (list "--no-document" ; TODO: Re-enable when documentation
2631 ; generation works
2632 "--"
2633 (string-append "--with-xml2-include="
2634 (assoc-ref %build-inputs "libxml2")
2635 "/include/libxml2" ))))
2636 (synopsis "Ruby bindings for GNOME Libxml2")
2637 (description "The Libxml-Ruby project provides Ruby language bindings for
2638 the GNOME Libxml2 XML toolkit.")
2639 (home-page "https://xml4r.github.com/libxml-ruby")
2640 (license license:expat)))
2641
2642 (define-public ruby-lino
2643 (package
2644 (name "ruby-lino")
2645 (version "1.1.0")
2646 (source
2647 (origin
2648 (method url-fetch)
2649 (uri (rubygems-uri "lino" version))
2650 (sha256
2651 (base32
2652 "11d29g0fk372b9fcpyr0k6hxm2b4j4igpysmi542hgbbgqgp9cd3"))))
2653 (build-system ruby-build-system)
2654 (arguments
2655 '(#:tests? #f)) ; No included tests
2656 (propagated-inputs
2657 `(("ruby-hamster" ,ruby-hamster)
2658 ("ruby-open4" ,ruby-open4)))
2659 (synopsis "Build and execute commands in Ruby")
2660 (description
2661 "@code{Lino} provides an interface to run external commands. It provides
2662 an interface to add options as well as managing the standard input, output and
2663 error streams.")
2664 (home-page "https://github.com/tobyclemson/lino")
2665 (license license:expat)))
2666
2667 (define-public ruby-xml-simple
2668 (package
2669 (name "ruby-xml-simple")
2670 (version "1.1.5")
2671 (source (origin
2672 (method url-fetch)
2673 (uri (rubygems-uri "xml-simple" version))
2674 (sha256
2675 (base32
2676 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
2677 (build-system ruby-build-system)
2678 (arguments
2679 '(#:tests? #f)) ; no test suite
2680 (synopsis "Simple Ruby library for XML processing")
2681 (description "This library provides a simple API for XML processing in
2682 Ruby.")
2683 (home-page "https://github.com/maik/xml-simple")
2684 (license license:ruby)))
2685
2686 (define-public ruby-thor
2687 (package
2688 (name "ruby-thor")
2689 (version "1.0.1")
2690 (source (origin
2691 ;; Pull from git because the gem has no tests.
2692 (method git-fetch)
2693 (uri (git-reference
2694 (url "https://github.com/erikhuda/thor")
2695 (commit (string-append "v" version))))
2696 (file-name (git-file-name name version))
2697 (sha256
2698 (base32
2699 "1anrx5vynk57hn5c8ig5pgkmcsbj9q5mvckd5rviw1jid7n89k57"))))
2700 (build-system ruby-build-system)
2701 (arguments
2702 '(#:phases (modify-phases %standard-phases
2703 (add-after 'unpack 'fix-readline-tests
2704 (lambda _
2705 ;; Ensure Readline is initialized before running the
2706 ;; test to avoid a type clash with the mock ::Readline.
2707 ;; See <https://github.com/erikhuda/thor/pull/717>.
2708 (substitute* "spec/line_editor/readline_spec.rb"
2709 (("unless defined\\? ::Readline" all)
2710 (string-append "Thor::LineEditor::Readline.available?\n"
2711 all)))
2712 #t))
2713 (add-after 'unpack 'remove-coveralls-dependency
2714 (lambda _
2715 ;; Do not hook the test suite into the online
2716 ;; coveralls service.
2717 (substitute* "Gemfile"
2718 ((".*coveralls.*") ""))
2719 (substitute* "spec/helper.rb"
2720 (("require \"coveralls\"") "")
2721 (("Coveralls::SimpleCov::Formatter") "")
2722 ;; Also drop the WebMock dependency which is only
2723 ;; present to allow a coveralls.io connection, and
2724 ;; would otherwise introduce a circular dependency.
2725 (("require \"webmock/rspec\"") "")
2726 (("WebMock\\.disable_net_connect.*") ""))
2727 #t))
2728 (add-after 'unpack 'disable-network-tests
2729 (lambda _
2730 ;; These tests attempt to look up example.com.
2731 (substitute* "spec/actions/file_manipulation_spec.rb"
2732 (("it \"accepts (https?) remote sources" _ proto)
2733 (string-append "xit \"accepts " proto " remote sources")))
2734 #t))
2735 (add-after 'unpack 'disable-quality-tests
2736 (lambda _
2737 ;; These tests attempt to check the git repository for
2738 ;; tabs vs spaces, double vs single quotes, etc, and
2739 ;; depend on the git checkout.
2740 (delete-file "spec/quality_spec.rb")
2741 #t))
2742 (add-before 'check 'make-files-writable
2743 (lambda _
2744 ;; The tests needs rw access to the test suite.
2745 (for-each make-file-writable (find-files "spec"))
2746 #t))
2747 (replace 'check
2748 (lambda _
2749 (invoke "rspec" "spec"))))))
2750 (native-inputs
2751 `(("ruby-rspec" ,ruby-rspec)
2752 ("ruby-simplecov" ,ruby-simplecov)))
2753 (synopsis "Ruby toolkit for building command-line interfaces")
2754 (description "Thor is a toolkit for building powerful command-line
2755 interfaces.")
2756 (home-page "http://whatisthor.com/")
2757 (license license:expat)))
2758
2759 (define-public ruby-lumberjack
2760 (package
2761 (name "ruby-lumberjack")
2762 (version "1.0.13")
2763 (source (origin
2764 (method url-fetch)
2765 (uri (rubygems-uri "lumberjack" version))
2766 (sha256
2767 (base32
2768 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
2769 (build-system ruby-build-system)
2770 (native-inputs
2771 `(("ruby-rspec" ,ruby-rspec)
2772 ("ruby-timecop" ,ruby-timecop)))
2773 (synopsis "Logging utility library for Ruby")
2774 (description "Lumberjack is a simple logging utility that can be a drop in
2775 replacement for Logger or ActiveSupport::BufferedLogger. It provides support
2776 for automatically rolling log files even with multiple processes writing the
2777 same log file.")
2778 (home-page "https://github.com/bdurand/lumberjack")
2779 (license license:expat)))
2780
2781 (define-public ruby-rbnacl
2782 (package
2783 (name "ruby-rbnacl")
2784 (version "6.0.1")
2785 (source
2786 (origin
2787 (method url-fetch)
2788 (uri (rubygems-uri "rbnacl" version))
2789 (sha256
2790 (base32
2791 "0ajxy5kj2jw09wdsla3jmha8w07vj5l14288xr9djpl327g3lzhn"))))
2792 (build-system ruby-build-system)
2793 (arguments
2794 `(#:phases
2795 (modify-phases %standard-phases
2796 (add-after 'unpack 'remove-unnecessary-dependencies
2797 (lambda _
2798 ;; Coveralls relates to a network service, and Rubocop to code
2799 ;; linting and both are unnecessary to run the tests
2800 (substitute* "Gemfile"
2801 ((".*rubocop.*") "\n")
2802 ((".*guard-rspec.*") "\n")
2803 ((".*coveralls.*") "\n"))
2804 (substitute* "spec/spec_helper.rb"
2805 (("require \"coveralls\"") "")
2806 (("Coveralls.wear!") ""))
2807 #t))
2808 (add-after 'unpack 'use-libsodium-from-store
2809 (lambda* (#:key inputs #:allow-other-keys)
2810 (substitute* '("lib/rbnacl/init.rb"
2811 "lib/rbnacl/sodium.rb")
2812 (("ffi_lib \\[.+\\]")
2813 (string-append "ffi_lib [\""
2814 (assoc-ref inputs "libsodium") "/lib/libsodium.so"
2815 "\"]")))
2816 #t))
2817 ;; Run Rspec directly to avoid the Rubocop dependency in the Rakefile
2818 (replace 'check
2819 (lambda* (#:key tests? #:allow-other-keys)
2820 (when tests?
2821 (invoke "rspec"))
2822 #t)))))
2823 (propagated-inputs
2824 `(("ruby-ffi" ,ruby-ffi)))
2825 (inputs
2826 `(("libsodium" ,libsodium)))
2827 (native-inputs
2828 `(("bundler" ,bundler)
2829 ("ruby-rspec" ,ruby-rspec)))
2830 (synopsis "Ruby FFI binding to libsodium")
2831 (description
2832 "This package provides Ruby FFI bindings to the Networking and
2833 Cryptography (NaCl) library, also known as libsodium. This provides a
2834 high-level toolkit for building cryptographic systems and protocols.")
2835 (home-page "https://github.com/crypto-rb/rbnacl")
2836 (license license:expat)))
2837
2838 (define-public ruby-nenv
2839 (package
2840 (name "ruby-nenv")
2841 (version "0.3.0")
2842 (source (origin
2843 (method url-fetch)
2844 (uri (rubygems-uri "nenv" version))
2845 (sha256
2846 (base32
2847 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
2848 (build-system ruby-build-system)
2849 (arguments
2850 `(#:tests? #f)) ; no tests included
2851 (native-inputs
2852 `(("ruby-rspec" ,ruby-rspec)
2853 ("bundler" ,bundler)))
2854 (synopsis "Ruby interface for modifying the environment")
2855 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
2856 and inspect the environment.")
2857 (home-page "https://github.com/e2/nenv")
2858 (license license:expat)))
2859
2860 (define-public ruby-ptools
2861 (package
2862 (name "ruby-ptools")
2863 (version "1.3.5")
2864 (source (origin
2865 (method url-fetch)
2866 (uri (rubygems-uri "ptools" version))
2867 (sha256
2868 (base32
2869 "1jb1h1nsk9zwykpniw8filbsk26kjsdlpk5wz6w0zyamcd41h87j"))))
2870 (build-system ruby-build-system)
2871 (arguments
2872 '(#:phases (modify-phases %standard-phases
2873 (add-after 'unpack 'patch-/bin/ls
2874 (lambda _
2875 (substitute* "test/test_binary.rb"
2876 (("/bin/ls")
2877 (which "ls")))
2878 #t))
2879 (add-before 'install 'create-gem
2880 (lambda _
2881 ;; Do not attempt to sign the gem.
2882 (substitute* "Rakefile"
2883 (("spec\\.signing_key = .*")
2884 ""))
2885 (invoke "rake" "gem:create"))))))
2886 (synopsis "Extra methods for Ruby's @code{File} class")
2887 (description
2888 "The @dfn{ptools} (power tools) library extends Ruby's core @code{File}
2889 class with many additional methods modelled after common POSIX tools, such as
2890 @code{File.which} for finding executables, @code{File.tail} to print the last
2891 lines of a file, @code{File.wc} to count words, and so on.")
2892 (home-page "https://github.com/djberg96/ptools")
2893 (license license:artistic2.0)))
2894
2895 (define-public ruby-permutation
2896 (package
2897 (name "ruby-permutation")
2898 (version "0.1.8")
2899 (source (origin
2900 (method url-fetch)
2901 (uri (rubygems-uri "permutation" version))
2902 (sha256
2903 (base32
2904 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
2905 (build-system ruby-build-system)
2906 (arguments
2907 `(#:phases
2908 (modify-phases %standard-phases
2909 (add-after 'unpack 'fix-rakefile
2910 (lambda _
2911 (substitute* "Rakefile"
2912 (("require 'rake/gempackagetask'")
2913 "require 'rubygems/package_task'")
2914 (("include Config") ""))
2915 #t))
2916 (replace 'check
2917 (lambda _
2918 (invoke "ruby" "-Ilib" "test/test.rb"))))))
2919 (synopsis "Library to perform operations with sequence permutations")
2920 (description "This package provides a Ruby library to perform different
2921 operations with permutations of sequences, such as strings and arrays.")
2922 (home-page "https://flori.github.io/permutation")
2923 (license license:gpl2))) ; GPL 2 only
2924
2925 (define-public ruby-shellany
2926 (package
2927 (name "ruby-shellany")
2928 (version "0.0.1")
2929 (source (origin
2930 (method url-fetch)
2931 (uri (rubygems-uri "shellany" version))
2932 (sha256
2933 (base32
2934 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
2935 (build-system ruby-build-system)
2936 (arguments
2937 `(#:test-target "default"
2938 #:phases
2939 (modify-phases %standard-phases
2940 (add-after 'unpack 'fix-version-test
2941 (lambda _
2942 (substitute* "spec/shellany_spec.rb"
2943 (("^RSpec") "require \"shellany\"\nRSpec"))
2944 #t)))))
2945 (native-inputs
2946 `(("ruby-rspec" ,ruby-rspec)
2947 ("ruby-nenv" ,ruby-nenv)
2948 ("bundler" ,bundler)))
2949 (synopsis "Capture command output")
2950 (description "Shellany is a Ruby library providing functions to capture
2951 the output produced by running shell commands.")
2952 (home-page "https://rubygems.org/gems/shellany")
2953 (license license:expat)))
2954
2955 (define-public ruby-notiffany
2956 (package
2957 (name "ruby-notiffany")
2958 (version "0.1.3")
2959 (source (origin
2960 (method url-fetch)
2961 (uri (rubygems-uri "notiffany" version))
2962 (sha256
2963 (base32
2964 "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk"))))
2965 (build-system ruby-build-system)
2966 ;; Tests are not included in the gem.
2967 (arguments `(#:tests? #f))
2968 (propagated-inputs
2969 `(("ruby-shellany" ,ruby-shellany)
2970 ("ruby-nenv" ,ruby-nenv)))
2971 (native-inputs
2972 `(("bundler" ,bundler)))
2973 (synopsis "Wrapper library for notification libraries")
2974 (description "Notiffany is a Ruby wrapper library for notification
2975 libraries such as Libnotify.")
2976 (home-page "https://github.com/guard/notiffany")
2977 (license license:expat)))
2978
2979 (define-public ruby-forking-test-runner
2980 (package
2981 (name "ruby-forking-test-runner")
2982 (version "1.6.0")
2983 (home-page "https://github.com/grosser/forking_test_runner")
2984 (source (origin
2985 (method git-fetch)
2986 (uri (git-reference (url home-page)
2987 (commit (string-append "v" version))))
2988 (file-name (git-file-name name version))
2989 (sha256
2990 (base32
2991 "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m"))))
2992 (build-system ruby-build-system)
2993 (arguments
2994 '(#:test-target "spec"
2995 ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has
2996 ;; 1.4.1, which in turn breaks the tests that use ActiveRecord.
2997 #:tests? #f
2998 #:phases (modify-phases %standard-phases
2999 (replace 'replace-git-ls-files
3000 (lambda _
3001 (substitute* "forking_test_runner.gemspec"
3002 (("`git ls-files lib/ bin/ MIT-LICENSE`")
3003 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
3004 #t))
3005 (add-before 'check 'remove-version-constraints
3006 (lambda _
3007 ;; Ignore hard coded version constraints for the tests.
3008 (delete-file "Gemfile.lock")
3009 #t))
3010 (add-before 'check 'set-HOME
3011 (lambda _
3012 ;; Many tests invoke Bundler, and fails when Bundler
3013 ;; warns that /homeless-shelter does not exist.
3014 (setenv "HOME" "/tmp")
3015 #t)))))
3016 (native-inputs
3017 `(("ruby-activerecord" ,ruby-activerecord)
3018 ("ruby-bump" ,ruby-bump)
3019 ("ruby-rspec" ,ruby-rspec)
3020 ("ruby-sqlite3" ,ruby-sqlite3)
3021 ("ruby-wwtd" ,ruby-wwtd)))
3022 (propagated-inputs
3023 `(("ruby-parallel-tests" ,ruby-parallel-tests)))
3024 (synopsis "Run every test in a fork")
3025 (description
3026 "This package is a wrapper around @code{parallel_tests} that runs every
3027 test in a fork to avoid pollution and get clean output per test.")
3028 (license license:expat)))
3029
3030 (define-public ruby-formatador
3031 (package
3032 (name "ruby-formatador")
3033 (version "0.2.5")
3034 (source (origin
3035 (method url-fetch)
3036 (uri (rubygems-uri "formatador" version))
3037 (sha256
3038 (base32
3039 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
3040 (build-system ruby-build-system)
3041 ;; Circular dependency: Tests require ruby-shindo, which requires
3042 ;; ruby-formatador at runtime.
3043 (arguments `(#:tests? #f))
3044 (synopsis "Ruby library to format text on stdout")
3045 (description "Formatador is a Ruby library to format text printed to the
3046 standard output stream.")
3047 (home-page "https://github.com/geemus/formatador")
3048 (license license:expat)))
3049
3050 (define-public ruby-fuubar
3051 (package
3052 (name "ruby-fuubar")
3053 (version "2.3.2")
3054 (source
3055 (origin
3056 ;; Fetch from the git repository, as the gem package doesn't include
3057 ;; the tests.
3058 (method git-fetch)
3059 (uri (git-reference
3060 (url "https://github.com/thekompanee/fuubar")
3061 (commit (string-append "releases/v" version))))
3062 (file-name (git-file-name name version))
3063 (sha256
3064 (base32
3065 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
3066 (build-system ruby-build-system)
3067 (arguments
3068 '(;; TODO: Some tests fail, unsure why.
3069 ;; 21 examples, 7 failures
3070 #:tests? #f
3071 #:phases
3072 (modify-phases %standard-phases
3073 (add-before 'build 'delete-certificate
3074 (lambda _
3075 ;; Remove 's.cert_chain' as we do not build with a private key
3076 (substitute* "fuubar.gemspec"
3077 ((".*cert_chain.*") "")
3078 ((".*signing_key.*") ""))
3079 #t))
3080 (replace 'check
3081 (lambda* (#:key tests? #:allow-other-keys)
3082 (when tests?
3083 (invoke "rspec"))
3084 #t)))))
3085 (native-inputs
3086 `(("bundler" ,bundler)))
3087 (propagated-inputs
3088 `(("ruby-rspec-core" ,ruby-rspec-core)
3089 ("ruby-progressbar" ,ruby-progressbar)))
3090 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
3091 (description
3092 "Fuubar is an RSpec formatter that uses a progress bar instead of a
3093 string of letters and dots as feedback. It also stops on the first test
3094 failure.")
3095 (home-page "https://github.com/thekompanee/fuubar")
3096 (license license:expat)))
3097
3098 (define-public ruby-haml
3099 (package
3100 (name "ruby-haml")
3101 (version "5.0.4")
3102 (source
3103 (origin
3104 (method url-fetch)
3105 (uri (rubygems-uri "haml" version))
3106 (sha256
3107 (base32
3108 "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"))))
3109 (build-system ruby-build-system)
3110 (arguments
3111 '(#:tests? #f)) ; No included tests
3112 (propagated-inputs
3113 `(("ruby-tilt" ,ruby-tilt)
3114 ("ruby-temple" ,ruby-temple)))
3115 (synopsis "Haml is a Ruby library to generate HTML documents")
3116 (description
3117 "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of
3118 HTML or XML that is designed to express the structure of documents using
3119 indentation rather than closing tags. It was originally envisioned as a
3120 plugin for Ruby on Rails, but it can function as a stand-alone templating
3121 engine.")
3122 (home-page "http://haml.info/")
3123 (license license:expat)))
3124
3125 (define-public ruby-hamster
3126 (package
3127 (name "ruby-hamster")
3128 (version "3.0.0")
3129 (source
3130 (origin
3131 (method url-fetch)
3132 (uri (rubygems-uri "hamster" version))
3133 (sha256
3134 (base32
3135 "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
3136 (build-system ruby-build-system)
3137 (arguments
3138 '(#:phases
3139 (modify-phases %standard-phases
3140 (add-after 'unpack 'remove-unnecessary-dependencies
3141 (lambda _
3142 ;; pry is a debugging tool, and is unnecessary when running the
3143 ;; tests
3144 (substitute* "spec/lib/hamster/vector/insert_spec.rb"
3145 (("require 'pry'") ""))
3146 (substitute* "spec/spec_helper.rb"
3147 (("require \"pry\"") "")
3148 ;; CodeClimate is an online service, and is unnecessary for
3149 ;; running the tests
3150 (("require \"codeclimate-test-reporter\"") "")
3151 (("CodeClimate.*\n") ""))
3152 #t))
3153 ;; No Rakefile is included, so run rspec directly.
3154 (replace 'check
3155 (lambda* (#:key tests? #:allow-other-keys)
3156 (when tests?
3157 (invoke "rspec"))
3158 #t)))))
3159 (propagated-inputs
3160 `(("ruby-concurrent" ,ruby-concurrent)))
3161 (native-inputs
3162 `(("ruby-rspec" ,ruby-rspec)))
3163 (synopsis "Efficient, immutable, thread-safe collection classes for Ruby")
3164 (description
3165 "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector},
3166 @code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an
3167 immutable queue or stack).")
3168 (home-page "https://github.com/hamstergem/hamster")
3169 (license license:expat)))
3170
3171 (define-public ruby-hashdiff
3172 (package
3173 (name "ruby-hashdiff")
3174 (version "1.0.1")
3175 (source
3176 (origin
3177 (method url-fetch)
3178 (uri (rubygems-uri "hashdiff" version))
3179 (sha256
3180 (base32
3181 "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c"))))
3182 (build-system ruby-build-system)
3183 (arguments
3184 '(#:phases
3185 (modify-phases %standard-phases
3186 ;; Run tests directly via rspec to avoid depending on rubocop.
3187 (replace 'check
3188 (lambda* (#:key tests? #:allow-other-keys)
3189 (when tests?
3190 (invoke "rspec"))
3191 #t)))))
3192 (native-inputs
3193 `(("bundler" ,bundler)
3194 ("ruby-rspec" ,ruby-rspec-2)))
3195 (synopsis "HashDiff computes the smallest difference between two hashes")
3196 (description
3197 "HashDiff is a Ruby library to compute the smallest difference between
3198 two hashes.")
3199 (home-page "https://github.com/liufengyun/hashdiff")
3200 (license license:expat)))
3201
3202 (define-public ruby-hydra
3203 ;; No releases yet.
3204 (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
3205 (revision "0"))
3206 (package
3207 (name "ruby-hydra")
3208 (version (git-version "0.0" revision commit))
3209 (home-page "https://github.com/hyphenation/hydra")
3210 (source (origin
3211 (method git-fetch)
3212 (uri (git-reference (url home-page) (commit commit)))
3213 (file-name (git-file-name name version))
3214 (sha256
3215 (base32
3216 "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
3217 (build-system ruby-build-system)
3218 (arguments
3219 '(#:phases (modify-phases %standard-phases
3220 (add-after 'unpack 'make-files-writable
3221 (lambda _
3222 (for-each make-file-writable (find-files "."))
3223 #t))
3224 (replace 'check
3225 (lambda _
3226 (invoke "rspec"))))))
3227 (native-inputs
3228 `(("ruby-rspec" ,ruby-rspec)))
3229 (propagated-inputs
3230 `(("ruby-byebug" ,ruby-byebug)))
3231 (synopsis "Ruby hyphenation patterns")
3232 (description
3233 "ruby-hydra is a Ruby library for working with hyphenation patterns.")
3234 (license license:expat))))
3235
3236 (define-public ruby-shindo
3237 (package
3238 (name "ruby-shindo")
3239 (version "0.3.8")
3240 (source (origin
3241 (method url-fetch)
3242 (uri (rubygems-uri "shindo" version))
3243 (sha256
3244 (base32
3245 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
3246 (build-system ruby-build-system)
3247 (arguments
3248 `(#:test-target "shindo_tests"
3249 #:phases
3250 (modify-phases %standard-phases
3251 (add-after 'unpack 'fix-tests
3252 (lambda _
3253 (substitute* "tests/tests_helper.rb"
3254 (("-rubygems") ""))
3255 (substitute* "Rakefile"
3256 (("system \"shindo") "system \"./bin/shindo")
3257 ;; This test doesn't work, so we disable it.
3258 (("fail \"The build_error test should fail") "#")
3259 ((" -rubygems") ""))
3260 #t)))))
3261 (propagated-inputs
3262 `(("ruby-formatador" ,ruby-formatador)))
3263 (synopsis "Simple depth first Ruby testing")
3264 (description "Shindo is a simple depth first testing library for Ruby.")
3265 (home-page "https://github.com/geemus/shindo")
3266 (license license:expat)))
3267
3268 (define-public ruby-rubygems-tasks
3269 (package
3270 (name "ruby-rubygems-tasks")
3271 (version "0.2.5")
3272 (source (origin
3273 (method url-fetch)
3274 (uri (rubygems-uri "rubygems-tasks" version))
3275 (sha256
3276 (base32
3277 "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx"))))
3278 (build-system ruby-build-system)
3279 ;; Tests need Internet access.
3280 (arguments `(#:tests? #f))
3281 (native-inputs
3282 `(("ruby-rspec" ,ruby-rspec)
3283 ("ruby-yard" ,ruby-yard)))
3284 (synopsis "Rake tasks for managing and releasing Ruby Gems")
3285 (description "Rubygems-task provides Rake tasks for managing and releasing
3286 Ruby Gems.")
3287 (home-page "https://github.com/postmodern/rubygems-tasks")
3288 (license license:expat)))
3289
3290 (define-public ruby-rubyzip
3291 (package
3292 (name "ruby-rubyzip")
3293 (version "1.2.1")
3294 (source
3295 (origin
3296 (method url-fetch)
3297 (uri (rubygems-uri "rubyzip" version))
3298 (sha256
3299 (base32
3300 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
3301 (build-system ruby-build-system)
3302 (arguments
3303 '(#:phases
3304 (modify-phases %standard-phases
3305 (add-before 'check 'patch-tests
3306 (lambda* (#:key inputs #:allow-other-keys)
3307 (substitute* "test/gentestfiles.rb"
3308 (("/usr/bin/zip")
3309 (string-append
3310 (assoc-ref inputs "zip") "/bin/zip")))
3311 (substitute* "test/input_stream_test.rb"
3312 (("/usr/bin/env ruby") (which "ruby")))
3313 #t)))))
3314 (native-inputs
3315 `(("bundler" ,bundler)
3316 ("ruby-simplecov" ,ruby-simplecov)
3317 ("zip" ,zip)
3318 ("unzip" ,unzip)))
3319 (synopsis "Ruby module is for reading and writing zip files")
3320 (description
3321 "The rubyzip module provides ways to read from and create zip files.")
3322 (home-page "https://github.com/rubyzip/rubyzip")
3323 (license license:bsd-2)))
3324
3325 (define-public ruby-simplecov-html
3326 (package
3327 (name "ruby-simplecov-html")
3328 (version "0.10.2")
3329 (source (origin
3330 (method url-fetch)
3331 (uri (rubygems-uri "simplecov-html" version))
3332 (sha256
3333 (base32
3334 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
3335 (build-system ruby-build-system)
3336 (arguments `(#:tests? #f)) ; there are no tests
3337 (native-inputs
3338 `(("bundler" ,bundler)))
3339 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
3340 (description "This package provides the default HTML formatter for
3341 the SimpleCov code coverage tool for Ruby version 1.9 and above.")
3342 (home-page "https://github.com/colszowka/simplecov-html")
3343 (license license:expat)))
3344
3345 (define-public ruby-simplecov
3346 (package
3347 (name "ruby-simplecov")
3348 (version "0.17.1")
3349 (source (origin
3350 (method url-fetch)
3351 (uri (rubygems-uri "simplecov" version))
3352 (sha256
3353 (base32
3354 "1135k46nik05sdab30yxb8264lqiz01c8v000g16cl9pjc4mxrdw"))))
3355 (build-system ruby-build-system)
3356 ;; Simplecov depends on rubocop for code style checking at build time.
3357 ;; Rubocop needs simplecov at build time.
3358 (arguments `(#:tests? #f))
3359 (propagated-inputs
3360 `(("ruby-json" ,ruby-json)
3361 ("ruby-docile" ,ruby-docile)
3362 ("ruby-simplecov-html" ,ruby-simplecov-html)))
3363 (native-inputs
3364 `(("bundler" ,bundler)))
3365 (synopsis "Code coverage framework for Ruby")
3366 (description "SimpleCov is a code coverage framework for Ruby with a
3367 powerful configuration library and automatic merging of coverage across test
3368 suites.")
3369 (home-page "https://github.com/colszowka/simplecov")
3370 (license license:expat)))
3371
3372 (define-public ruby-useragent
3373 (package
3374 (name "ruby-useragent")
3375 (version "0.16.10")
3376 (source (origin
3377 (method url-fetch)
3378 (uri (rubygems-uri "useragent" version))
3379 (sha256
3380 (base32
3381 "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p"))))
3382 (build-system ruby-build-system)
3383 (arguments
3384 '(#:tests? #f)) ; no test suite
3385 (synopsis "HTTP user agent parser for Ruby")
3386 (description "UserAgent is a Ruby library that parses and compares HTTP
3387 User Agents.")
3388 (home-page "https://github.com/gshutler/useragent")
3389 (license license:expat)))
3390
3391 (define-public ruby-backports
3392 (package
3393 (name "ruby-backports")
3394 (version "3.11.4")
3395 (source
3396 (origin
3397 (method url-fetch)
3398 (uri (rubygems-uri "backports" version))
3399 (sha256
3400 (base32
3401 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
3402 (build-system ruby-build-system)
3403 (arguments
3404 '(;; TODO: This should be default, but there is one test failure
3405 #:test-target "all_spec"))
3406 (native-inputs
3407 `(("ruby-mspec" ,ruby-mspec)
3408 ("ruby-activesupport" ,ruby-activesupport)))
3409 (synopsis "Backports of the features in newer Ruby versions")
3410 (description
3411 "Backports enables more compatibility across Ruby versions by providing
3412 backports of some features.")
3413 (home-page "https://github.com/marcandre/backports")
3414 (license license:expat)))
3415
3416 (define-public ruby-bacon
3417 (package
3418 (name "ruby-bacon")
3419 (version "1.2.0")
3420 (source (origin
3421 (method url-fetch)
3422 (uri (rubygems-uri "bacon" version))
3423 (sha256
3424 (base32
3425 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
3426 (build-system ruby-build-system)
3427 (synopsis "Small RSpec clone")
3428 (description "Bacon is a small RSpec clone providing all essential
3429 features.")
3430 (home-page "https://github.com/chneukirchen/bacon")
3431 (license license:expat)))
3432
3433 (define-public ruby-bacon-bits
3434 (package
3435 (name "ruby-bacon-bits")
3436 (version "0.1.0")
3437 (source
3438 (origin
3439 (method url-fetch)
3440 (uri (rubygems-uri "bacon-bits" version))
3441 (sha256
3442 (base32
3443 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
3444 (build-system ruby-build-system)
3445 (arguments
3446 ;; No tests
3447 '(#:tests? #f))
3448 (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
3449 (synopsis "Extensions to Bacon, for disabling tests, before and after
3450 blocks and more")
3451 (description
3452 "This extends the bacon testing framework with useful extensions to
3453 disable tests, have before and after blocks that run once and more.")
3454 (home-page "https://github.com/cldwalker/bacon-bits")
3455 (license license:expat)))
3456
3457 (define-public ruby-bacon-colored-output
3458 (package
3459 (name "ruby-bacon-colored-output")
3460 (version "1.1.1")
3461 (source
3462 (origin
3463 (method url-fetch)
3464 (uri (rubygems-uri "bacon-colored_output" version))
3465 (sha256
3466 (base32
3467 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
3468 (build-system ruby-build-system)
3469 (arguments
3470 '(;; No included tests
3471 #:tests? #f))
3472 (propagated-inputs
3473 `(("ruby-bacon" ,ruby-bacon)))
3474 (synopsis "Colored output for Bacon test framework")
3475 (description
3476 "This package adds color through ANSI escape codes to Bacon test
3477 output.")
3478 (home-page "https://github.com/whitequark/bacon-colored_output")
3479 (license license:expat)))
3480
3481 (define-public ruby-connection-pool
3482 (package
3483 (name "ruby-connection-pool")
3484 (version "2.2.2")
3485 (source (origin
3486 (method url-fetch)
3487 (uri (rubygems-uri "connection_pool" version))
3488 (sha256
3489 (base32
3490 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
3491 (build-system ruby-build-system)
3492 (native-inputs
3493 `(("bundler" ,bundler)))
3494 (synopsis "Generic connection pool for Ruby")
3495 (description "Connection_pool provides a generic connection pooling
3496 interface for Ruby programs.")
3497 (home-page "https://github.com/mperham/connection_pool")
3498 (license license:expat)))
3499
3500 (define-public ruby-fast-gettext
3501 (package
3502 (name "ruby-fast-gettext")
3503 (version "2.0.3")
3504 (home-page "https://github.com/grosser/fast_gettext")
3505 (source (origin
3506 (method git-fetch)
3507 (uri (git-reference (url home-page)
3508 (commit (string-append "v" version))))
3509 (file-name (git-file-name name version))
3510 (sha256
3511 (base32
3512 "1dg14apq5sfjshhcq0idphhs7aq9ikzswhqmn689p1h76mxqr1v6"))))
3513 (build-system ruby-build-system)
3514 (arguments
3515 '(#:test-target "spec"
3516 #:phases (modify-phases %standard-phases
3517 (add-before 'check 'remove-version-constraints
3518 (lambda _
3519 (delete-file "Gemfile.lock")
3520 #t))
3521 (add-before 'check 'remove-activerecord-test
3522 (lambda _
3523 ;; FIXME: This test fails because ActiveRecord depends on
3524 ;; a different version of ruby-sqlite than the currently
3525 ;; available one.
3526 (delete-file
3527 "spec/fast_gettext/translation_repository/db_spec.rb")
3528 #t))
3529 (add-before 'check 'disable-i18n-test
3530 (lambda _
3531 ;; XXX: This test checks i18n intricasies with Rails 3 and
3532 ;; automatically disables itself for Rails 4.0, but does
3533 ;; not know about newer versions as it has not been updated
3534 ;; since 2014. Disable for later versions of Rails too.
3535 (substitute* "spec/fast_gettext/vendor/string_spec.rb"
3536 (((string-append "ActiveRecord::VERSION::MAJOR == 4 and "
3537 "ActiveRecord::VERSION::MINOR == 0"))
3538 "ActiveRecord::VERSION::MAJOR >= 4"))
3539 #t)))))
3540 (native-inputs
3541 `(;; For tests.
3542 ("ruby-activerecord" ,ruby-activerecord)
3543 ("ruby-activesupport" ,ruby-activesupport)
3544 ("ruby-bump" ,ruby-bump)
3545 ("ruby-forking-test-runner" ,ruby-forking-test-runner)
3546 ("ruby-i18n" ,ruby-i18n)
3547 ("ruby-rubocop" ,ruby-rubocop)
3548 ("ruby-rspec" ,ruby-rspec)
3549 ("ruby-single-cov" ,ruby-single-cov)
3550 ("ruby-sqlite3" ,ruby-sqlite3)
3551 ("ruby-wwtd" ,ruby-wwtd)))
3552 (synopsis "Fast implementation of @code{GetText}")
3553 (description
3554 "This package provides an alternative implementation of the Ruby
3555 @code{GetText} library that is approximately 12x faster yet thread safe.")
3556 ;; Some parts are covered by the Ruby license, see file headers.
3557 (license (list license:expat license:ruby))))
3558
3559 (define-public ruby-net-http-persistent
3560 (package
3561 (name "ruby-net-http-persistent")
3562 (version "3.0.0")
3563 (source (origin
3564 (method url-fetch)
3565 (uri (rubygems-uri "net-http-persistent" version))
3566 (sha256
3567 (base32
3568 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
3569 (build-system ruby-build-system)
3570 (native-inputs
3571 `(("ruby-connection-pool" ,ruby-connection-pool)
3572 ("ruby-hoe" ,ruby-hoe)))
3573 (synopsis "Persistent HTTP connection manager")
3574 (description "Net::HTTP::Persistent manages persistent HTTP connections
3575 using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
3576 (home-page "https://github.com/drbrain/net-http-persistent")
3577 (license license:expat)))
3578
3579 (define-public ruby-power-assert
3580 (package
3581 (name "ruby-power-assert")
3582 (version "1.1.5")
3583 (source (origin
3584 (method url-fetch)
3585 (uri (rubygems-uri "power_assert" version))
3586 (sha256
3587 (base32
3588 "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s"))))
3589 (build-system ruby-build-system)
3590 (arguments
3591 '(#:tests? #f)) ; No included tests
3592 (native-inputs
3593 `(("bundler" ,bundler)))
3594 (synopsis "Assert library with descriptive assertion messages")
3595 (description "Power-assert is an assertion library providing descriptive
3596 assertion messages for tests.")
3597 (home-page "https://github.com/k-tsj/power_assert")
3598 (license (list license:bsd-2 license:ruby))))
3599
3600 (define-public ruby-powerpack
3601 (package
3602 (name "ruby-powerpack")
3603 (version "0.1.2")
3604 (source
3605 (origin
3606 (method url-fetch)
3607 (uri (rubygems-uri "powerpack" version))
3608 (sha256
3609 (base32
3610 "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
3611 (build-system ruby-build-system)
3612 (arguments
3613 '(#:test-target "spec"))
3614 (native-inputs
3615 `(("bundler" ,bundler)
3616 ("ruby-rspec" ,ruby-rspec)
3617 ("ruby-yard" ,ruby-yard)))
3618 (synopsis "Useful extensions to core Ruby classes")
3619 (description
3620 "This package provides a few useful extensions to core Ruby classes,
3621 including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
3622 @code{String}.")
3623 (home-page "https://github.com/bbatsov/powerpack")
3624 (license license:expat)))
3625
3626 (define-public ruby-locale
3627 (package
3628 (name "ruby-locale")
3629 (version "2.1.2")
3630 (source (origin
3631 (method url-fetch)
3632 (uri (rubygems-uri "locale" version))
3633 (sha256
3634 (base32
3635 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
3636 (build-system ruby-build-system)
3637 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
3638 ;; which needs ruby-gettext, which needs ruby-locale. To break the
3639 ;; dependency cycle we disable tests.
3640 (arguments `(#:tests? #f))
3641 (native-inputs
3642 `(("bundler" ,bundler)
3643 ("ruby-yard" ,ruby-yard)))
3644 (synopsis "Ruby library providing basic localization APIs")
3645 (description
3646 "Ruby-Locale is the pure ruby library which provides basic APIs for
3647 localization.")
3648 (home-page "https://github.com/ruby-gettext/locale")
3649 (license (list license:lgpl3+ license:ruby))))
3650
3651 (define-public ruby-temple
3652 (package
3653 (name "ruby-temple")
3654 (version "0.8.2")
3655 (source
3656 (origin
3657 (method url-fetch)
3658 (uri (rubygems-uri "temple" version))
3659 (sha256
3660 (base32
3661 "060zzj7c2kicdfk6cpnn40n9yjnhfrr13d0rsbdhdij68chp2861"))))
3662 (build-system ruby-build-system)
3663 (native-inputs
3664 `(("ruby-tilt" ,ruby-tilt)
3665 ("ruby-bacon" ,ruby-bacon)
3666 ("ruby-erubis" ,ruby-erubis)))
3667 (synopsis "Template compilation framework in Ruby")
3668 (description
3669 "Temple is an abstraction and framework for compiling templates to pure
3670 Ruby.")
3671 (home-page "https://github.com/judofyr/temple")
3672 (license license:expat)))
3673
3674 (define-public ruby-text
3675 (package
3676 (name "ruby-text")
3677 (version "1.3.1")
3678 (source (origin
3679 (method url-fetch)
3680 (uri (rubygems-uri "text" version))
3681 (sha256
3682 (base32
3683 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
3684 (build-system ruby-build-system)
3685 (synopsis "Collection of text algorithms for Ruby")
3686 (description
3687 "This package provides a collection of text algorithms: Levenshtein,
3688 Soundex, Metaphone, Double Metaphone, Porter Stemming.")
3689 (home-page "https://github.com/threedaymonk/text")
3690 (license license:expat)))
3691
3692 (define-public ruby-gettext
3693 (package
3694 (name "ruby-gettext")
3695 (version "3.1.7")
3696 (source (origin
3697 (method url-fetch)
3698 (uri (rubygems-uri "gettext" version))
3699 (sha256
3700 (base32
3701 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
3702 (build-system ruby-build-system)
3703 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
3704 ;; which needs ruby-gettext. To break the dependency cycle we disable
3705 ;; tests.
3706 (arguments `(#:tests? #f))
3707 (propagated-inputs
3708 `(("ruby-locale" ,ruby-locale)
3709 ("ruby-text" ,ruby-text)))
3710 (native-inputs
3711 `(("bundler" ,bundler)
3712 ("ruby-yard" ,ruby-yard)))
3713 (synopsis "GNU gettext-like program for Ruby")
3714 (description
3715 "Gettext is a GNU gettext-like program for Ruby. The catalog
3716 file (po-file) used is the same as that used by GNU gettext, allowing you to
3717 use GNU gettext tools for maintenance.")
3718 (home-page "https://ruby-gettext.github.com/")
3719 (license (list license:lgpl3+ license:ruby))))
3720
3721 (define-public ruby-packnga
3722 (package
3723 (name "ruby-packnga")
3724 (version "1.0.4")
3725 (source (origin
3726 (method url-fetch)
3727 (uri (rubygems-uri "packnga" version))
3728 (sha256
3729 (base32
3730 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
3731 (build-system ruby-build-system)
3732 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
3733 ;; To break the dependency cycle we disable tests.
3734 (arguments `(#:tests? #f))
3735 (propagated-inputs
3736 `(("ruby-gettext" ,ruby-gettext)
3737 ("ruby-yard" ,ruby-yard)))
3738 (native-inputs
3739 `(("bundler" ,bundler)))
3740 (synopsis "Utility library to package internationalized libraries")
3741 (description
3742 "Packnga is a library to translate to many languages using YARD.")
3743 (home-page "http://ranguba.org/packnga/")
3744 (license license:lgpl2.0+)))
3745
3746 (define-public ruby-test-construct
3747 (package
3748 (name "ruby-test-construct")
3749 (version "2.0.1")
3750 (source
3751 (origin
3752 (method url-fetch)
3753 (uri (rubygems-uri "test_construct" version))
3754 (sha256
3755 (base32
3756 "1a2ym3l068d0pxzzr95kvqx87zpdsarxslz9ygd4qfm9frrz0kgj"))))
3757 (build-system ruby-build-system)
3758 (native-inputs
3759 `(("bundler" ,bundler)
3760 ("ruby-mocha" ,ruby-mocha)
3761 ("ruby-rspec" ,ruby-rspec)))
3762 (synopsis "Creates temporary files and directories for testing")
3763 (description
3764 "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
3765 temporary files and directories during tests.")
3766 (home-page "https://github.com/bhb/test_construct")
3767 (license license:expat)))
3768
3769 (define-public ruby-test-unit
3770 (package
3771 (name "ruby-test-unit")
3772 (version "3.2.5")
3773 (source (origin
3774 (method url-fetch)
3775 (uri (rubygems-uri "test-unit" version))
3776 (sha256
3777 (base32
3778 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
3779 (build-system ruby-build-system)
3780 (propagated-inputs
3781 `(("ruby-power-assert" ,ruby-power-assert)))
3782 (native-inputs
3783 `(("bundler" ,bundler)
3784 ("ruby-packnga" ,ruby-packnga)
3785 ("ruby-yard" ,ruby-yard)))
3786 (synopsis "Unit testing framework for Ruby")
3787 (description "@code{Test::Unit} is unit testing framework for Ruby, based
3788 on xUnit principles. These were originally designed by Kent Beck, creator of
3789 extreme programming software development methodology, for Smalltalk's SUnit.
3790 It allows writing tests, checking results and automated testing in Ruby.")
3791 (home-page "https://test-unit.github.io/")
3792 (license (list license:psfl license:ruby))))
3793
3794 (define-public ruby-markaby
3795 (package
3796 (name "ruby-markaby")
3797 (version "0.9.0")
3798 (source
3799 (origin
3800 (method url-fetch)
3801 (uri (rubygems-uri "markaby" version))
3802 (sha256
3803 (base32
3804 "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
3805 (build-system ruby-build-system)
3806 (arguments
3807 '(#:phases
3808 (modify-phases %standard-phases
3809 ;; Run rspec manually without using the Rakefile, as the versions of
3810 ;; Rake and RSpec 2 are incompatible:
3811 ;;
3812 ;; NoMethodError: undefined method `last_comment'
3813 (replace 'check
3814 (lambda* (#:key tests? #:allow-other-keys)
3815 (when tests?
3816 (invoke "rspec"))
3817 #t)))))
3818 (propagated-inputs
3819 `(("ruby-builder" ,ruby-builder)))
3820 (native-inputs
3821 `(("bundler" ,bundler)
3822 ("ruby-rspec" ,ruby-rspec-2)))
3823 (synopsis "Write HTML pages in pure Ruby")
3824 (description
3825 "Markaby allows writing HTML packages in pure Ruby. This is similar to
3826 the functionality provided by @acronym{ERB, Embedded Ruby}, but without the
3827 mixture of HTML and additional ERB syntax.")
3828 (home-page "https://markaby.github.io/")
3829 (license license:expat)))
3830
3831 (define-public ruby-maruku
3832 (package
3833 (name "ruby-maruku")
3834 (version "0.7.3")
3835 (source
3836 (origin
3837 (method url-fetch)
3838 (uri (rubygems-uri "maruku" version))
3839 (sha256
3840 (base32
3841 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
3842 (build-system ruby-build-system)
3843 (arguments
3844 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
3845 #:tests? #f
3846 #:phases
3847 (modify-phases %standard-phases
3848 (replace 'check
3849 (lambda* (#:key tests? #:allow-other-keys)
3850 (when tests?
3851 (invoke "rspec"))
3852 #t)))))
3853 (native-inputs
3854 `(("ruby-rspec" ,ruby-rspec)
3855 ("ruby-simplecov" ,ruby-simplecov)
3856 ("ruby-nokogiri-diff" ,ruby-nokogiri-diff)))
3857 (synopsis "Markdown interpreter in Ruby")
3858 (description
3859 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
3860 HTML, and PDF through LaTeX.")
3861 (home-page "https://github.com/bhollis/maruku")
3862 (license license:expat)))
3863
3864 (define-public ruby-metaclass
3865 (package
3866 (name "ruby-metaclass")
3867 (version "0.0.4")
3868 (source (origin
3869 (method url-fetch)
3870 (uri (rubygems-uri "metaclass" version))
3871 (sha256
3872 (base32
3873 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
3874 (build-system ruby-build-system)
3875 (arguments
3876 `(#:phases
3877 (modify-phases %standard-phases
3878 (add-after 'unpack 'add-test-unit-to-search-path
3879 (lambda* (#:key inputs #:allow-other-keys)
3880 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
3881 (substitute* "Rakefile"
3882 (("t\\.libs << \"test\"" line)
3883 (string-append line "; t.libs << \""
3884 test-unit "/lib/ruby/vendor_ruby"
3885 "/gems/test-unit-"
3886 ,(package-version ruby-test-unit)
3887 "/lib\""))))
3888 #t)))))
3889 (native-inputs
3890 `(("bundler" ,bundler)
3891 ("ruby-test-unit" ,ruby-test-unit)))
3892 (synopsis "Ruby library adding metaclass method to all objects")
3893 (description
3894 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
3895 objects.")
3896 (home-page "https://github.com/floehopper/metaclass")
3897 (license license:expat)))
3898
3899 (define-public ruby-mkmf-lite
3900 (package
3901 (name "ruby-mkmf-lite")
3902 (version "0.3.2")
3903 (source (origin
3904 (method url-fetch)
3905 (uri (rubygems-uri "mkmf-lite" version))
3906 (sha256
3907 (base32
3908 "0br9k6zijj1zc25n8p7f2j1mwl58nfgdknf3q13h9k156jvrir06"))))
3909 (build-system ruby-build-system)
3910 (propagated-inputs
3911 `(("ruby-ptools" ,ruby-ptools)))
3912 (synopsis "Lightweight alternative to @code{mkmf}")
3913 (description
3914 "@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed
3915 for use as a library. It does not create packages, builds, or log files of
3916 any kind. Instead, it provides mixin methods that you can use in FFI or tests
3917 to check for the presence of header files, constants, and so on.")
3918 (home-page "https://github.com/djberg96/mkmf-lite")
3919 (license license:asl2.0)))
3920
3921 (define-public ruby-mspec
3922 (package
3923 (name "ruby-mspec")
3924 (version "1.9.1")
3925 (source
3926 (origin
3927 (method url-fetch)
3928 (uri (rubygems-uri "mspec" version))
3929 (sha256
3930 (base32
3931 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
3932 (build-system ruby-build-system)
3933 (arguments
3934 '(;; TODO: 3 test failures
3935 ;; ./spec/mocks/mock_spec.rb:82
3936 ;; ./spec/utils/name_map_spec.rb:151
3937 ;; ./spec/utils/name_map_spec.rb:155
3938 #:tests? #f
3939 #:phases
3940 (modify-phases %standard-phases
3941 (add-after 'extract-gemspec 'change-dependency-constraints
3942 (lambda _
3943 (substitute* "mspec.gemspec"
3944 (("rake.*") "rake>)\n")
3945 (("rspec.*") "rspec>)\n"))
3946 #t))
3947 (replace 'check
3948 (lambda* (#:key tests? #:allow-other-keys)
3949 (when tests?
3950 (invoke "rspec" "spec"))
3951 #t)))))
3952 (native-inputs
3953 `(("bundler" ,bundler)
3954 ("ruby-rake" ,ruby-rake)
3955 ("ruby-rspec" ,ruby-rspec)))
3956 (synopsis "MSpec is a specialized framework for RubySpec")
3957 (description
3958 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
3959 for basic features. MSpec contains additional features that assist in writing
3960 specs for Ruby implementations in ruby/spec.")
3961 (home-page "http://rubyspec.org")
3962 (license license:expat)))
3963
3964 (define-public ruby-mysql2
3965 (package
3966 (name "ruby-mysql2")
3967 (version "0.5.2")
3968 (source
3969 (origin
3970 (method git-fetch)
3971 (uri (git-reference
3972 (url "https://github.com/brianmario/mysql2")
3973 (commit version)))
3974 (file-name (git-file-name name version))
3975 (sha256
3976 (base32
3977 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
3978 (build-system ruby-build-system)
3979 (arguments
3980 '(;; TODO: Tests require a running MySQL/MariaDB service
3981 #:tests? #f
3982 #:phases
3983 (modify-phases %standard-phases
3984 (replace 'replace-git-ls-files
3985 (lambda _
3986 (substitute* "mysql2.gemspec"
3987 (("git ls-files .*`") "find . -type f |sort`"))
3988 #t))
3989 (add-before 'install 'set-MAKEFLAGS
3990 (lambda* (#:key outputs #:allow-other-keys)
3991 (setenv "MAKEFLAGS"
3992 (string-append
3993 "V=1 "
3994 "prefix=" (assoc-ref outputs "out")))
3995 #t))
3996 ;; Move the 'check phase to after 'install, as then you can test
3997 ;; using the installed mysql2 gem in the store.
3998 (delete 'check)
3999 (add-after 'install 'check
4000 (lambda* (#:key outputs tests? #:allow-other-keys)
4001 (setenv "GEM_PATH"
4002 (string-append
4003 (getenv "GEM_PATH")
4004 ":"
4005 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
4006 (when tests?
4007 (invoke "rspec"))
4008 #t)))))
4009 (inputs
4010 `(("mariadb-dev" ,mariadb "dev")
4011 ("zlib" ,zlib)))
4012 (native-inputs
4013 `(("ruby-rspec" ,ruby-rspec)
4014 ("ruby-rake-compiler" ,ruby-rake-compiler)))
4015 (synopsis "MySQL library for Ruby, binding to libmysql")
4016 (description
4017 "This package provides a simple, fast MySQL library for Ruby, binding to
4018 libmysql.")
4019 (home-page "https://github.com/brianmario/mysql2")
4020 (license license:expat)))
4021
4022 (define-public ruby-blankslate
4023 (package
4024 (name "ruby-blankslate")
4025 (version "3.1.3")
4026 (source (origin
4027 (method url-fetch)
4028 (uri (rubygems-uri "blankslate" version))
4029 (sha256
4030 (base32
4031 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
4032 (build-system ruby-build-system)
4033 (arguments
4034 `(#:phases
4035 (modify-phases %standard-phases
4036 (replace 'check
4037 (lambda _ (invoke "rspec" "spec/"))))))
4038 (native-inputs
4039 `(("bundler" ,bundler)
4040 ("ruby-rspec" ,ruby-rspec)))
4041 (synopsis "Abstract base class with no predefined methods")
4042 (description
4043 "BlankSlate provides an abstract base class with no predefined
4044 methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
4045 as a base class when writing classes that depend upon
4046 @code{method_missing} (e.g. dynamic proxies).")
4047 (home-page "https://github.com/masover/blankslate")
4048 (license license:expat)))
4049
4050 (define-public ruby-bond
4051 (package
4052 (name "ruby-bond")
4053 (version "0.5.1")
4054 (source
4055 (origin
4056 (method url-fetch)
4057 (uri (rubygems-uri "bond" version))
4058 (sha256
4059 (base32
4060 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
4061 (build-system ruby-build-system)
4062 (arguments
4063 ;; The test suite fails (see:
4064 ;; https://github.com/cldwalker/bond/issues/46).
4065 `(#:tests? #f))
4066 (native-inputs
4067 `(("ruby-bacon" ,ruby-bacon)
4068 ("ruby-bacon-bits" ,ruby-bacon-bits)
4069 ("ruby-mocha-on-bacon" ,ruby-mocha-on-bacon)))
4070 (synopsis "Bond can provide custom autocompletion for arguments, methods
4071 and more")
4072 (description
4073 "Bond can autocomplete argument(s) to methods, uniquely completing per
4074 module, per method and per argument. Bond provides a configuration system and
4075 a DSL for creating custom completions and completion rules. Bond can also
4076 load completions that ship with gems. Bond is able to offer more than irb's
4077 completion since it uses the full line of input when completing as opposed to
4078 irb's last-word approach.")
4079 (home-page "http://tagaholic.me/bond/")
4080 (license license:expat)))
4081
4082 (define-public ruby-idn-ruby
4083 (package
4084 (name "ruby-idn-ruby")
4085 (version "0.1.0")
4086 (source
4087 (origin
4088 (method url-fetch)
4089 (uri (rubygems-uri "idn-ruby" version))
4090 (sha256
4091 (base32
4092 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
4093 (build-system ruby-build-system)
4094 (arguments
4095 '(#:phases
4096 (modify-phases %standard-phases
4097 (delete 'check)
4098 (add-after 'install 'check
4099 (lambda* (#:key tests? outputs #:allow-other-keys)
4100 (when tests?
4101 (let* ((gem-file (cadr (find-files "." "\\.gem")))
4102 (name-and-version (basename gem-file ".gem")))
4103 (apply invoke
4104 "ruby" "--verbose"
4105 (string-append "-I"
4106 (assoc-ref outputs "out")
4107 "/lib/ruby/vendor_ruby/gems/"
4108 name-and-version
4109 "/lib")
4110 (find-files "./test" ".*\\.rb"))))
4111 #t)))))
4112 (inputs
4113 `(("libidn" ,libidn)))
4114 (synopsis "Ruby Bindings for the GNU LibIDN library")
4115 (description
4116 "Ruby Bindings for the GNU LibIDN library, an implementation of the
4117 Stringprep, Punycode and IDNA specifications. These are used to encode and
4118 decode internationalized domain + names according to the IDNA2003
4119 specifications.
4120
4121 Included are the most important parts of the Stringprep, Punycode and IDNA
4122 APIs like performing Stringprep processings, encoding to and decoding from
4123 Punycode strings and converting entire domain names to and from the ACE
4124 encoded form.")
4125 (home-page "https://github.com/deepfryed/idn-ruby")
4126 (license license:asl2.0)))
4127
4128 (define-public ruby-instantiator
4129 (package
4130 (name "ruby-instantiator")
4131 (version "0.0.7")
4132 (source (origin
4133 (method url-fetch)
4134 (uri (rubygems-uri "instantiator" version))
4135 (sha256
4136 (base32
4137 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
4138 (build-system ruby-build-system)
4139 (arguments
4140 `(#:phases
4141 (modify-phases %standard-phases
4142 (add-after 'unpack 'add-test-unit-to-search-path
4143 (lambda* (#:key inputs #:allow-other-keys)
4144 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
4145 (substitute* "Rakefile"
4146 (("t\\.libs << \"test\"" line)
4147 (string-append line "; t.libs << \""
4148 test-unit "/lib/ruby/vendor_ruby"
4149 "/gems/test-unit-"
4150 ,(package-version ruby-test-unit)
4151 "/lib\""))))
4152 #t)))))
4153 (propagated-inputs
4154 `(("ruby-blankslate" ,ruby-blankslate)))
4155 (native-inputs
4156 `(("bundler" ,bundler)
4157 ("ruby-test-unit" ,ruby-test-unit)))
4158 (synopsis "Instantiate an arbitrary Ruby class")
4159 (description
4160 "Instantiator lets you instantiate an arbitrary Ruby class without
4161 knowing anything about the constructor.")
4162 (home-page "https://github.com/floehopper/instantiator")
4163 (license license:expat)))
4164
4165 (define-public ruby-introspection
4166 (package
4167 (name "ruby-introspection")
4168 (version "0.0.4")
4169 (source (origin
4170 (method url-fetch)
4171 (uri (rubygems-uri "introspection" version))
4172 (sha256
4173 (base32
4174 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
4175 (build-system ruby-build-system)
4176 (arguments
4177 `(#:phases
4178 (modify-phases %standard-phases
4179 (add-after 'unpack 'add-test-unit-to-search-path
4180 (lambda* (#:key inputs #:allow-other-keys)
4181 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
4182 (substitute* "Rakefile"
4183 (("t\\.libs << \"test\"" line)
4184 (string-append line "; t.libs << \""
4185 test-unit "/lib/ruby/vendor_ruby"
4186 "/gems/test-unit-"
4187 ,(package-version ruby-test-unit)
4188 "/lib\""))))
4189 #t)))))
4190 (propagated-inputs
4191 `(("ruby-instantiator" ,ruby-instantiator)
4192 ("ruby-metaclass" ,ruby-metaclass)))
4193 (native-inputs
4194 `(("bundler" ,bundler)
4195 ("ruby-blankslate" ,ruby-blankslate)
4196 ("ruby-test-unit" ,ruby-test-unit)))
4197 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
4198 (description
4199 "Introspection provides tools to inspect the hierarchy of method
4200 definitions on a Ruby object.")
4201 (home-page "https://github.com/floehopper/introspection")
4202 (license license:expat)))
4203
4204 (define-public ruby-redcarpet
4205 (package
4206 (name "ruby-redcarpet")
4207 (version "3.5.0")
4208 (source (origin
4209 (method url-fetch)
4210 (uri (rubygems-uri "redcarpet" version))
4211 (sha256
4212 (base32
4213 "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k"))))
4214 (build-system ruby-build-system)
4215 (arguments
4216 `(#:phases
4217 (modify-phases %standard-phases
4218 ;; The gem archive does not include the conformance tests.
4219 (add-after 'unpack 'disable-conformance-tests
4220 (lambda _
4221 (substitute* "Rakefile"
4222 (("task :test => %w\\[test:unit test:conformance\\]")
4223 "task :test => %w[test:unit]"))
4224 #t)))))
4225 (native-inputs
4226 `(("bundler" ,bundler)
4227 ("ruby-test-unit" ,ruby-test-unit)
4228 ("ruby-rake-compiler" ,ruby-rake-compiler)))
4229 (synopsis "Extensible Markdown to (X)HTML converter")
4230 (description
4231 "Redcarpet is an extensible Ruby library for Markdown processing and
4232 conversion to (X)HTML.")
4233 (home-page "https://github.com/vmg/redcarpet")
4234 (license license:expat)))
4235
4236 (define-public ruby-rerun
4237 (package
4238 (name "ruby-rerun")
4239 (version "0.13.0")
4240 (source
4241 (origin
4242 (method url-fetch)
4243 (uri (rubygems-uri "rerun" version))
4244 (sha256
4245 (base32
4246 "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
4247 (build-system ruby-build-system)
4248 (arguments
4249 '(#:tests? #f)) ; No included tests
4250 (propagated-inputs
4251 `(("ruby-listen" ,ruby-listen)))
4252 (synopsis "Run a process, and restart when some monitored files change")
4253 (description
4254 "Rerun is a tool to launch programs, then monitor the file system, and
4255 restart the program when any of the monitored files change. It's written in
4256 Ruby, but can be used for all programs.")
4257 (home-page "https://github.com/alexch/rerun/")
4258 (license license:expat)))
4259
4260 (define-public ruby-maxitest
4261 (package
4262 (name "ruby-maxitest")
4263 (version "3.6.0")
4264 (home-page "https://github.com/grosser/maxitest")
4265 (source (origin
4266 ;; Pull from git because the gem does not contain tests.
4267 (method git-fetch)
4268 (uri (git-reference
4269 (url home-page)
4270 (commit (string-append "v" version))))
4271 (file-name (git-file-name name version))
4272 (sha256
4273 (base32
4274 "07b3j0bv3dx5j42jlvpvl07aaxplyi6wq688y3jl8y528ww2hjz8"))))
4275 (build-system ruby-build-system)
4276 (arguments
4277 '(#:test-target "default"
4278 #:phases (modify-phases %standard-phases
4279 (replace 'replace-git-ls-files
4280 (lambda _
4281 (substitute* "maxitest.gemspec"
4282 (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
4283 "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))
4284 #t))
4285 (add-before 'check 'remove-version-constraints
4286 (lambda _
4287 ;; Don't use specific versions of dependencies, instead
4288 ;; take whatever is available in Guix.
4289 (delete-file "Gemfile.lock")
4290 #t))
4291 (add-before 'check 'add-mtest-on-PATH
4292 (lambda _
4293 ;; Tests use 'mtest' which is not automatically added on
4294 ;; PATH.
4295 (setenv "PATH" (string-append (getcwd) "/bin:"
4296 (getenv "PATH")))
4297 #t)))))
4298 (native-inputs
4299 `(("ps" ,procps)
4300 ("ruby-bump" ,ruby-bump)
4301 ("ruby-byebug" ,ruby-byebug)
4302 ("ruby-rspec" ,ruby-rspec)
4303 ("ruby-wwtd" ,ruby-wwtd)))
4304 (propagated-inputs
4305 `(("ruby-minitest" ,ruby-minitest)))
4306 (synopsis "Minitest with extra features")
4307 (description
4308 "Maxitest is a wrapper around Minitest with extra functionality such
4309 as timeouts, an @command{mtest} executable that can run tests by line
4310 number, support for interrupted tests, better backtraces, and more.")
4311 (license license:expat)))
4312
4313 (define-public ruby-mocha
4314 (package
4315 (name "ruby-mocha")
4316 (version "1.11.2")
4317 (source (origin
4318 (method url-fetch)
4319 (uri (rubygems-uri "mocha" version))
4320 (sha256
4321 (base32
4322 "0hxmkm8qxd04vwj8mqnpyrf2dwy7g1k9zipdfhl4y71cw7ijm9n4"))))
4323 (build-system ruby-build-system)
4324 (arguments
4325 `(#:phases
4326 (modify-phases %standard-phases
4327 (add-before 'check 'remove-rubocop-dependency
4328 (lambda _
4329 ;; Disable dependency on Rubocop, which is just a linter,
4330 ;; and would introduce a circular dependency.
4331 (substitute* "mocha.gemspec"
4332 ((".*rubocop.*")
4333 "true\n"))
4334 #t)))))
4335 (native-inputs
4336 `(("ruby-introspection" ,ruby-introspection)))
4337 (synopsis "Mocking and stubbing library for Ruby")
4338 (description
4339 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
4340 allows mocking and stubbing of methods on real (non-mock) classes.")
4341 (home-page "http://gofreerange.com/mocha/docs")
4342 ;; Mocha can be used with either license at the users choice.
4343 (license (list license:expat license:ruby))))
4344
4345 (define-public ruby-mocha-on-bacon
4346 (package
4347 (name "ruby-mocha-on-bacon")
4348 (version "0.2.3")
4349 (source
4350 (origin
4351 (method url-fetch)
4352 (uri (rubygems-uri "mocha-on-bacon" version))
4353 (sha256
4354 (base32
4355 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
4356 (build-system ruby-build-system)
4357 (arguments
4358 ;; rubygems.org release missing tests
4359 '(#:tests? #f))
4360 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
4361 (synopsis "Mocha adapter for Bacon")
4362 (description
4363 "This package provides a Mocha adapter for Bacon, allowing you to use the
4364 Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
4365 (home-page
4366 "https://github.com/alloy/mocha-on-bacon")
4367 (license license:expat)))
4368
4369 (define-public ruby-net-ssh
4370 (package
4371 (name "ruby-net-ssh")
4372 (version "4.2.0")
4373 (source (origin
4374 (method url-fetch)
4375 (uri (rubygems-uri "net-ssh" version))
4376 (sha256
4377 (base32
4378 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
4379 (build-system ruby-build-system)
4380 (native-inputs
4381 `(("bundler" ,bundler)
4382 ("ruby-mocha" ,ruby-mocha)
4383 ("ruby-test-unit" ,ruby-test-unit)))
4384 (synopsis "Ruby implementation of the SSH2 client protocol")
4385 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
4386 client protocol. It allows you to write programs that invoke and interact
4387 with processes on remote servers, via SSH2.")
4388 (home-page "https://github.com/net-ssh/net-ssh")
4389 (license license:expat)))
4390
4391 (define-public ruby-net-scp
4392 (package
4393 (name "ruby-net-scp")
4394 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
4395 (version "1.2.2.rc2")
4396 (source
4397 (origin
4398 (method git-fetch)
4399 (uri (git-reference
4400 (url "https://github.com/net-ssh/net-scp")
4401 (commit (string-append "v" version))))
4402 (file-name (git-file-name name version))
4403 (sha256
4404 (base32 "1nyn17sy71fn7zs3y6wbgcn35318c10flqgc0582409095x4h0sx"))))
4405 (build-system ruby-build-system)
4406 (native-inputs
4407 `(("bundler" ,bundler)
4408 ("ruby-test-unit" ,ruby-test-unit)
4409 ("ruby-mocha" ,ruby-mocha)))
4410 (propagated-inputs
4411 `(("ruby-net-ssh" ,ruby-net-ssh)))
4412 (synopsis "Pure-Ruby SCP client library")
4413 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
4414 client protocol.")
4415 (home-page "https://github.com/net-ssh/net-scp")
4416 (license license:expat)))
4417
4418 (define-public ruby-minitest
4419 (package
4420 (name "ruby-minitest")
4421 (version "5.11.3")
4422 (source (origin
4423 (method url-fetch)
4424 (uri (rubygems-uri "minitest" version))
4425 (sha256
4426 (base32
4427 "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"))))
4428 (build-system ruby-build-system)
4429 (native-inputs
4430 `(("ruby-hoe" ,ruby-hoe)))
4431 (synopsis "Small test suite library for Ruby")
4432 (description "Minitest provides a complete suite of Ruby testing
4433 facilities supporting TDD, BDD, mocking, and benchmarking.")
4434 (home-page "https://github.com/seattlerb/minitest")
4435 (license license:expat)))
4436
4437 ;; This is the last release of Minitest 4, which is used by some packages.
4438 (define-public ruby-minitest-4
4439 (package (inherit ruby-minitest)
4440 (version "4.7.5")
4441 (source (origin
4442 (method url-fetch)
4443 (uri (rubygems-uri "minitest" version))
4444 (sha256
4445 (base32
4446 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
4447 (arguments
4448 `(#:phases
4449 (modify-phases %standard-phases
4450 (add-after 'unpack 'remove-unsupported-method
4451 (lambda _
4452 (substitute* "Rakefile"
4453 (("self\\.rubyforge_name = .*") ""))
4454 #t))
4455 (add-after 'build 'exclude-failing-tests
4456 (lambda _
4457 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
4458 ;; Fixnum.
4459 (delete-file "test/minitest/test_minitest_spec.rb")
4460 #t)))))))
4461
4462 (define-public ruby-minitest-around
4463 (package
4464 (name "ruby-minitest-around")
4465 (version "0.5.0")
4466 (source
4467 (origin
4468 (method url-fetch)
4469 (uri (rubygems-uri "minitest-around" version))
4470 (sha256
4471 (base32
4472 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
4473 (build-system ruby-build-system)
4474 (arguments
4475 '(#:phases
4476 (modify-phases %standard-phases
4477 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
4478 (lambda _
4479 (substitute* "minitest-around.gemspec"
4480 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n"))
4481 #t)))))
4482 (propagated-inputs
4483 `(("ruby-minitest" ,ruby-minitest)))
4484 (native-inputs
4485 `(("bundler" ,bundler)
4486 ("ruby-cucumber" ,ruby-cucumber)
4487 ("ruby-bump" ,ruby-bump)
4488 ("ruby-test-construct" ,ruby-test-construct)))
4489 (synopsis "Run code around tests in Minitest")
4490 (description
4491 "This library provides a way to run code around tests in Minitest,
4492 written using either the unit test or spec style.")
4493 (home-page "https://github.com/splattael/minitest-around")
4494 (license license:expat)))
4495
4496 (define-public ruby-minitest-sprint
4497 (package
4498 (name "ruby-minitest-sprint")
4499 (version "1.1.0")
4500 (source (origin
4501 (method url-fetch)
4502 (uri (rubygems-uri "minitest-sprint" version))
4503 (sha256
4504 (base32
4505 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
4506 (build-system ruby-build-system)
4507 (native-inputs
4508 `(("ruby-hoe" ,ruby-hoe)
4509 ("ruby-minitest" ,ruby-minitest)))
4510 (synopsis "Fast test suite runner for minitest")
4511 (description "Minitest-sprint is a test runner for minitest that makes it
4512 easier to re-run individual failing tests.")
4513 (home-page "https://github.com/seattlerb/minitest-sprint")
4514 (license license:expat)))
4515
4516 (define-public ruby-minitest-bacon
4517 (package
4518 (name "ruby-minitest-bacon")
4519 (version "1.0.3")
4520 (source (origin
4521 (method url-fetch)
4522 (uri (rubygems-uri "minitest-bacon" version))
4523 (sha256
4524 (base32
4525 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
4526 (build-system ruby-build-system)
4527 (native-inputs
4528 `(("ruby-hoe" ,ruby-hoe)))
4529 (inputs
4530 `(("ruby-minitest" ,ruby-minitest)))
4531 (synopsis "Bacon compatibility library for minitest")
4532 (description "Minitest-bacon extends minitest with bacon-like
4533 functionality, making it easier to migrate test suites from bacon to minitest.")
4534 (home-page "https://github.com/seattlerb/minitest-bacon")
4535 (license license:expat)))
4536
4537 (define-public ruby-minitest-focus
4538 (package
4539 (name "ruby-minitest-focus")
4540 (version "1.1.2")
4541 (source
4542 (origin
4543 (method url-fetch)
4544 (uri (rubygems-uri "minitest-focus" version))
4545 (sha256
4546 (base32
4547 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
4548 (build-system ruby-build-system)
4549 (propagated-inputs
4550 `(("ruby-minitest" ,ruby-minitest)))
4551 (native-inputs
4552 `(("ruby-hoe" ,ruby-hoe)))
4553 (synopsis "Allows a few specific tests to be focused on")
4554 (description
4555 "@code{minitest-focus} gives the ability focus on a few tests with ease
4556 without having to use command-line arguments. It introduces a @code{focus}
4557 class method for use in testing classes, specifying that the next defined test
4558 is to be run.")
4559 (home-page "https://github.com/seattlerb/minitest-focus")
4560 (license license:expat)))
4561
4562 (define-public ruby-minitest-pretty-diff
4563 ;; Use git reference because gem is out of date and does not contain testing
4564 ;; script. There are no releases on GitHub.
4565 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
4566 (package
4567 (name "ruby-minitest-pretty-diff")
4568 (version (string-append "0.1-1." (string-take commit 8)))
4569 (source (origin
4570 (method git-fetch)
4571 (uri (git-reference
4572 (url "https://github.com/adammck/minitest-pretty_diff")
4573 (commit commit)))
4574 (file-name (string-append name "-" version "-checkout"))
4575 (sha256
4576 (base32
4577 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
4578 (build-system ruby-build-system)
4579 (arguments
4580 `(#:phases
4581 (modify-phases %standard-phases
4582 (replace 'check
4583 (lambda _
4584 (invoke "script/test"))))))
4585 (native-inputs
4586 `(("bundler" ,bundler)
4587 ("ruby-turn" ,ruby-turn)))
4588 (synopsis "Pretty-print hashes and arrays in MiniTest")
4589 (description
4590 "@code{minitest-pretty_diff} monkey-patches
4591 @code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
4592 diffing them. This makes it easier to spot differences between nested
4593 structures when tests fail.")
4594 (home-page "https://github.com/adammck/minitest-pretty_diff")
4595 (license license:expat))))
4596
4597 (define-public ruby-minitest-moar
4598 (package
4599 (name "ruby-minitest-moar")
4600 (version "0.0.4")
4601 (source
4602 (origin
4603 (method url-fetch)
4604 (uri (rubygems-uri "minitest-moar" version))
4605 (sha256
4606 (base32
4607 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
4608 (build-system ruby-build-system)
4609 (arguments
4610 `(#:phases
4611 (modify-phases %standard-phases
4612 (add-before 'check 'clean-dependencies
4613 (lambda _
4614 ;; Remove all gems defined in the Gemfile because these are not
4615 ;; truly needed.
4616 (substitute* "Gemfile"
4617 (("gem .*") ""))
4618 ;; Remove byebug as not needed to run tests.
4619 (substitute* "test/test_helper.rb"
4620 (("require 'byebug'") ""))
4621 #t)))))
4622 (native-inputs
4623 `(("bundler" ,bundler)
4624 ("ruby-minitest" ,ruby-minitest)))
4625 (synopsis "Extra features and changes to MiniTest")
4626 (description "@code{MiniTest Moar} add some additional features and
4627 changes some default behaviours in MiniTest. For instance, Moar replaces the
4628 MiniTest @code{Object#stub} with a global @code{stub} method.")
4629 (home-page "https://github.com/dockyard/minitest-moar")
4630 (license license:expat)))
4631
4632 (define-public ruby-minitest-bonus-assertions
4633 (package
4634 (name "ruby-minitest-bonus-assertions")
4635 (version "3.0")
4636 (source
4637 (origin
4638 (method url-fetch)
4639 (uri (rubygems-uri "minitest-bonus-assertions" version))
4640 (sha256
4641 (base32
4642 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
4643 (build-system ruby-build-system)
4644 (arguments
4645 `(#:phases
4646 (modify-phases %standard-phases
4647 (add-before 'check 'clean-dependencies
4648 (lambda _
4649 ;; Remove unneeded require statement that would entail another
4650 ;; dependency.
4651 (substitute* "test/minitest_config.rb"
4652 (("require 'minitest/bisect'") ""))
4653 #t)))))
4654 (native-inputs
4655 `(("ruby-hoe" ,ruby-hoe)
4656 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
4657 ("ruby-minitest-focus" ,ruby-minitest-focus)
4658 ("ruby-minitest-moar" ,ruby-minitest-moar)))
4659 (synopsis "Bonus assertions for @code{Minitest}")
4660 (description
4661 "Minitest bonus assertions provides extra MiniTest assertions. For
4662 instance, it provides @code{assert_true}, @code{assert_false} and
4663 @code{assert_set_equal}.")
4664 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
4665 (license license:expat)))
4666
4667 (define-public ruby-minitest-reporters
4668 (package
4669 (name "ruby-minitest-reporters")
4670 (version "1.3.6")
4671 (source
4672 (origin
4673 (method url-fetch)
4674 (uri (rubygems-uri "minitest-reporters" version))
4675 (sha256
4676 (base32
4677 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
4678 (build-system ruby-build-system)
4679 (arguments
4680 '(#:phases
4681 (modify-phases %standard-phases
4682 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
4683 ;; including it as an input can lead to circular dependencies.
4684 (add-after 'unpack 'remove-rubocop-from-Rakefile
4685 (lambda _
4686 (substitute* "Rakefile"
4687 (("require 'rubocop/rake\\_task'") "")
4688 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
4689 #t))
4690 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
4691 (lambda _
4692 (substitute* "minitest-reporters.gemspec"
4693 ((".*%q<rubocop>.*") "\n"))
4694 #t)))))
4695 (propagated-inputs
4696 `(("ruby-ansi" ,ruby-ansi)
4697 ("ruby-builder" ,ruby-builder)
4698 ("ruby-minitest" ,ruby-minitest)
4699 ("ruby-progressbar" ,ruby-progressbar)))
4700 (native-inputs
4701 `(("bundler" ,bundler)
4702 ("ruby-maruku" ,ruby-maruku)))
4703 (synopsis "Enhanced reporting for Minitest tests")
4704 (description
4705 "@code{minitest/reporters} provides a custom Minitest runner to improve
4706 how the test state is reported. A number of different reporters are
4707 available, including a spec reporter, progress bar reporter, a HTML
4708 reporter.")
4709 (home-page "https://github.com/kern/minitest-reporters")
4710 (license license:expat)))
4711
4712 (define-public ruby-minitest-rg
4713 (package
4714 (name "ruby-minitest-rg")
4715 (version "5.2.0")
4716 (source
4717 (origin
4718 (method url-fetch)
4719 (uri (rubygems-uri "minitest-rg" version))
4720 (sha256
4721 (base32
4722 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
4723 (build-system ruby-build-system)
4724 (arguments
4725 ;; Some tests fail even outside Guix, so disable tests.
4726 ;; https://github.com/blowmage/minitest-rg/issues/12
4727 ;; https://github.com/blowmage/minitest-rg/pull/13
4728 `(#:tests? #f))
4729 (propagated-inputs
4730 `(("ruby-minitest" ,ruby-minitest)))
4731 (synopsis "Coloured output for Minitest")
4732 (description
4733 "@code{minitest-rg} changes the colour of the output from Minitest.")
4734 (home-page "https://blowmage.com/minitest-rg/")
4735 (license license:expat)))
4736
4737 (define-public ruby-minitest-global-expectations
4738 (package
4739 (name "ruby-minitest-global-expectations")
4740 (version "1.0.1")
4741 (source
4742 (origin
4743 (method url-fetch)
4744 (uri (rubygems-uri "minitest-global_expectations"
4745 version))
4746 (sha256
4747 (base32
4748 "1pp3k2608spj4kvqy2y16hs18an917g6vwgvphrfhjviac83090x"))))
4749 (build-system ruby-build-system)
4750 (propagated-inputs
4751 `(("ruby-minitest" ,ruby-minitest)))
4752 (synopsis "Adjust minitest behaviour for calling expectation methods")
4753 (description
4754 "Minitest-global_expectations allows continued use of expectation methods
4755 on all objects. Calling expectation methods on all objects was deprecated in
4756 minitest 5.12, and is planned to be removed from minitest 6.")
4757 (home-page "https://github.com/jeremyevans/minitest-global_expectations")
4758 (license license:expat)))
4759
4760 (define-public ruby-minitest-hooks
4761 (package
4762 (name "ruby-minitest-hooks")
4763 (version "1.4.2")
4764 (source
4765 (origin
4766 (method url-fetch)
4767 (uri (rubygems-uri "minitest-hooks" version))
4768 (sha256
4769 (base32
4770 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
4771 (build-system ruby-build-system)
4772 (arguments
4773 '(#:test-target "spec"))
4774 (native-inputs
4775 `(("ruby-sequel" ,ruby-sequel)
4776 ("ruby-sqlite3" ,ruby-sqlite3)))
4777 (synopsis "Hooks for the minitest framework")
4778 (description
4779 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
4780 @code{around_all} hooks for Minitest. This allows, for instance, running each
4781 suite of specs inside a database transaction, running each spec inside its own
4782 savepoint inside that transaction. This can significantly speed up testing
4783 for specs that share expensive database setup code.")
4784 (home-page "https://github.com/jeremyevans/minitest-hooks")
4785 (license license:expat)))
4786
4787 (define-public ruby-daemons
4788 (package
4789 (name "ruby-daemons")
4790 (version "1.2.5")
4791 (source (origin
4792 (method url-fetch)
4793 (uri (rubygems-uri "daemons" version))
4794 (sha256
4795 (base32
4796 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
4797 (build-system ruby-build-system)
4798 (arguments
4799 `(#:tests? #f)) ; no test suite
4800 (synopsis "Daemonize Ruby programs")
4801 (description "Daemons provides a way to wrap existing Ruby scripts to be
4802 run as a daemon and to be controlled by simple start/stop/restart commands.")
4803 (home-page "https://github.com/thuehlinger/daemons")
4804 (license license:expat)))
4805
4806 (define-public ruby-data_uri
4807 (package
4808 (name "ruby-data_uri")
4809 (version "0.1.0")
4810 (source
4811 (origin
4812 (method url-fetch)
4813 (uri (rubygems-uri "data_uri" version))
4814 (sha256
4815 (base32
4816 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
4817 (build-system ruby-build-system)
4818 (synopsis "URI class for parsing data URIs")
4819 (description
4820 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
4821 embedded inside a URI. The URI::Data class provides support for parsing these
4822 URIs using the normal URI.parse method.")
4823 (home-page "https://github.com/dball/data_uri")
4824 (license license:expat)))
4825
4826 (define-public ruby-deep-merge
4827 (package
4828 (name "ruby-deep-merge")
4829 (version "1.2.1")
4830 (home-page "https://github.com/danielsdeleo/deep_merge")
4831 ;; The Rubygem source does not contain the gemspec required for tests.
4832 (source (origin
4833 (method git-fetch)
4834 (uri (git-reference (url home-page) (commit version)))
4835 (file-name (git-file-name name version))
4836 (sha256
4837 (base32
4838 "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931"))))
4839 (build-system ruby-build-system)
4840 (native-inputs
4841 `(("ruby-minitest" ,ruby-minitest)))
4842 (synopsis "Recursively merge hashes")
4843 (description
4844 "Deep Merge is a set of utility functions for @code{Hash}. It permits
4845 you to merge elements inside a hash together recursively.")
4846 (license license:expat)))
4847
4848 (define-public ruby-git
4849 (package
4850 (name "ruby-git")
4851 (version "1.3.0")
4852 (source (origin
4853 (method url-fetch)
4854 (uri (rubygems-uri "git" version))
4855 (sha256
4856 (base32
4857 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
4858 (build-system ruby-build-system)
4859 (arguments
4860 `(#:tests? #f ; no tests
4861 #:phases (modify-phases %standard-phases
4862 (add-after 'install 'patch-git-binary
4863 (lambda* (#:key inputs outputs #:allow-other-keys)
4864 ;; Make the default git binary an absolute path to the
4865 ;; store.
4866 (let ((git (string-append (assoc-ref inputs "git")
4867 "/bin/git"))
4868 (config (string-append
4869 (assoc-ref outputs "out")
4870 "/lib/ruby/vendor_ruby/gems/git-"
4871 ,version "/lib/git/config.rb")))
4872 (substitute* (list config)
4873 (("'git'")
4874 (string-append "'" git "'")))
4875 #t))))))
4876 (inputs
4877 `(("git" ,git)))
4878 (synopsis "Ruby wrappers for Git")
4879 (description "Ruby/Git is a Ruby library that can be used to create, read
4880 and manipulate Git repositories by wrapping system calls to the git binary.")
4881 (home-page "https://github.com/schacon/ruby-git")
4882 (license license:expat)))
4883
4884 (define-public ruby-hocon
4885 (package
4886 (name "ruby-hocon")
4887 (version "1.3.1")
4888 (home-page "https://github.com/puppetlabs/ruby-hocon")
4889 (source (origin
4890 (method git-fetch)
4891 (uri (git-reference (url home-page) (commit version)))
4892 (file-name (git-file-name name version))
4893 (sha256
4894 (base32
4895 "172hh2zr0n9nnszv0qvlgwszgkrq84yahrg053m68asy79zpmbqr"))))
4896 (build-system ruby-build-system)
4897 (arguments
4898 '(#:phases (modify-phases %standard-phases
4899 (replace 'check
4900 (lambda* (#:key tests? #:allow-other-keys)
4901 (if tests?
4902 (invoke "rspec")
4903 (format #t "test suite not run~%"))
4904 #t)))))
4905 (native-inputs
4906 `(("bundler" ,bundler)
4907 ("ruby-rspec" ,ruby-rspec)))
4908 (synopsis "HOCON config library")
4909 (description
4910 "This package provides Ruby support for the @acronym{HOCON,
4911 Human-Optimized Config Object Notation} configuration file format. It
4912 supports parsing and modifying HOCON and JSON files, and rendering parsed
4913 objects back to a @code{String}.")
4914 (license license:asl2.0)))
4915
4916 (define-public ruby-slop
4917 (package
4918 (name "ruby-slop")
4919 (version "4.5.0")
4920 (source (origin
4921 (method url-fetch)
4922 (uri (rubygems-uri "slop" version))
4923 (sha256
4924 (base32
4925 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
4926 (build-system ruby-build-system)
4927 (native-inputs
4928 `(("ruby-minitest" ,ruby-minitest)))
4929 (synopsis "Ruby command line option parser")
4930 (description "Slop provides a Ruby domain specific language for gathering
4931 options and parsing command line flags.")
4932 (home-page "https://github.com/leejarvis/slop")
4933 (license license:expat)))
4934
4935 (define-public ruby-slop-3
4936 (package (inherit ruby-slop)
4937 (version "3.6.0")
4938 (source (origin
4939 (method url-fetch)
4940 (uri (rubygems-uri "slop" version))
4941 (sha256
4942 (base32
4943 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
4944
4945 (define-public ruby-multi-xml
4946 (package
4947 (name "ruby-multi-xml")
4948 (version "0.6.0")
4949 (source
4950 (origin
4951 (method url-fetch)
4952 (uri (rubygems-uri "multi_xml" version))
4953 (sha256
4954 (base32
4955 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
4956 (build-system ruby-build-system)
4957 (arguments
4958 '(#:tests? #f)) ; No included tests
4959 (synopsis "Swappable XML backends for Ruby")
4960 (description
4961 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
4962 Nokogiri, Ox, or REXML.")
4963 (home-page "https://github.com/sferik/multi_xml")
4964 (license license:expat)))
4965
4966 (define-public ruby-multipart-post
4967 (package
4968 (name "ruby-multipart-post")
4969 (version "2.0.0")
4970 (source (origin
4971 (method url-fetch)
4972 (uri (rubygems-uri "multipart-post" version))
4973 (sha256
4974 (base32
4975 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
4976 (build-system ruby-build-system)
4977 (native-inputs
4978 `(("bundler" ,bundler)))
4979 (synopsis "Multipart POST library for Ruby")
4980 (description "Multipart-Post Adds multipart POST capability to Ruby's
4981 net/http library.")
4982 (home-page "https://github.com/nicksieger/multipart-post")
4983 (license license:expat)))
4984
4985 (define-public ruby-multi-json
4986 (package
4987 (name "ruby-multi-json")
4988 (version "1.13.1")
4989 (source
4990 (origin
4991 (method git-fetch)
4992 ;; Tests are not distributed at rubygems.org so download from GitHub
4993 ;; instead.
4994 (uri (git-reference
4995 (url "https://github.com/intridea/multi_json")
4996 (commit (string-append "v" version))))
4997 (file-name (git-file-name name version))
4998 (sha256
4999 (base32
5000 "18wpb6p01rrkl4v33byh70vxj2a5jxkfxzv3pz8z6pssy4ymwkm4"))))
5001 (build-system ruby-build-system)
5002 (arguments
5003 `(#:phases
5004 (modify-phases %standard-phases
5005 (add-after 'unpack 'remove-signing-key-reference
5006 (lambda _
5007 (substitute* "multi_json.gemspec"
5008 ((".*spec.signing_key.*") ""))
5009 #t)))))
5010 (native-inputs
5011 `(("bundler" ,bundler)
5012 ("ruby-rspec" ,ruby-rspec)
5013 ("ruby-yard" ,ruby-yard)
5014 ("ruby-json-pure" ,ruby-json-pure)
5015 ("ruby-oj" ,ruby-oj)
5016 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
5017 (synopsis "Common interface to multiple JSON libraries for Ruby")
5018 (description
5019 "This package provides a common interface to multiple JSON libraries,
5020 including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
5021 NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
5022 (home-page "https://github.com/intridea/multi_json")
5023 (license license:expat)))
5024
5025 (define-public ruby-multi-test
5026 (package
5027 (name "ruby-multi-test")
5028 (version "0.1.2")
5029 (source
5030 (origin
5031 (method url-fetch)
5032 (uri (rubygems-uri "multi_test" version))
5033 (sha256
5034 (base32
5035 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
5036 (build-system ruby-build-system)
5037 (arguments
5038 '(;; Tests require different sets of specific gem versions to be available,
5039 ;; and there is no gemfile that specifies the newest versions of
5040 ;; dependencies to be tested.
5041 #:tests? #f))
5042 (synopsis
5043 "Interface to testing libraries loaded into a running Ruby process")
5044 (description
5045 "@code{multi_test} provides a uniform interface onto whatever testing
5046 libraries that have been loaded into a running Ruby process to help control
5047 rogue test/unit/autorun requires.")
5048 (home-page "https://github.com/cucumber/multi_test")
5049 (license license:expat)))
5050
5051 (define-public ruby-arel
5052 (package
5053 (name "ruby-arel")
5054 (version "9.0.0")
5055 (source (origin
5056 (method url-fetch)
5057 (uri (rubygems-uri "arel" version))
5058 (sha256
5059 (base32
5060 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
5061 (build-system ruby-build-system)
5062 (arguments '(#:tests? #f)) ; no tests
5063 (home-page "https://github.com/rails/arel")
5064 (synopsis "SQL AST manager for Ruby")
5065 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
5066 Ruby. It simplifies the generation of complex SQL queries and adapts to
5067 various relational database implementations.")
5068 (license license:expat)))
5069
5070 (define-public ruby-marcel
5071 (package
5072 (name "ruby-marcel")
5073 (version "0.3.3")
5074 (source
5075 (origin
5076 (method url-fetch)
5077 (uri (rubygems-uri "marcel" version))
5078 (sha256
5079 (base32
5080 "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
5081 (build-system ruby-build-system)
5082 (arguments
5083 '(;; No included tests
5084 #:tests? #f))
5085 (propagated-inputs
5086 `(("ruby-mimemagic" ,ruby-mimemagic)))
5087 (synopsis "MIME type detection using magic numbers, filenames and extensions")
5088 (description
5089 "@code{marcel} provides @acronym{MIME, Multipurpose Internet Mail
5090 Extensions} type detection using magic numbers, filenames, and extensions")
5091 (home-page "https://github.com/basecamp/marcel")
5092 (license license:expat)))
5093
5094 (define-public ruby-minitar
5095 ;; We package from the GitHub source to fix the security issue reported at
5096 ;; https://github.com/halostatue/minitar/issues/16.
5097 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
5098 (package
5099 (name "ruby-minitar")
5100 (version (string-append "0.5.4-1." (string-take commit 8)))
5101 (source
5102 (origin
5103 (method git-fetch)
5104 (uri (git-reference
5105 (url "https://github.com/halostatue/minitar")
5106 (commit commit)))
5107 (file-name (string-append name "-" version "-checkout"))
5108 (sha256
5109 (base32
5110 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
5111 (build-system ruby-build-system)
5112 (arguments
5113 '(#:tests? #f)) ; missing a gemspec
5114 (synopsis "Ruby library and utility for handling tar archives")
5115 (description
5116 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
5117 that provides the ability to deal with POSIX tar archive files.")
5118 (home-page "http://www.github.com/atoulme/minitar")
5119 (license (list license:gpl2+ license:ruby)))))
5120
5121 (define-public ruby-mini-portile
5122 (package
5123 (name "ruby-mini-portile")
5124 (version "0.6.2")
5125 (source
5126 (origin
5127 (method url-fetch)
5128 (uri (rubygems-uri "mini_portile" version))
5129 (sha256
5130 (base32
5131 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
5132 (build-system ruby-build-system)
5133 (arguments
5134 '(#:tests? #f)) ; tests require network access
5135 (synopsis "Ports system for Ruby developers")
5136 (description "Mini-portile is a port/recipe system for Ruby developers.
5137 It provides a standard way to compile against specific versions of libraries
5138 to reproduce user environments.")
5139 (home-page "https://github.com/flavorjones/mini_portile")
5140 (license license:expat)))
5141
5142 (define-public ruby-mini-portile-2
5143 (package (inherit ruby-mini-portile)
5144 (version "2.4.0")
5145 (source (origin
5146 (method url-fetch)
5147 (uri (rubygems-uri "mini_portile2" version))
5148 (sha256
5149 (base32
5150 "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"))))))
5151
5152 (define-public ruby-nokogiri
5153 (package
5154 (name "ruby-nokogiri")
5155 (version "1.10.9")
5156 (source (origin
5157 (method url-fetch)
5158 (uri (rubygems-uri "nokogiri" version))
5159 (sha256
5160 (base32
5161 "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm"))))
5162 (build-system ruby-build-system)
5163 (arguments
5164 ;; Tests fail because Nokogiri can only test with an installed extension,
5165 ;; and also because many test framework dependencies are missing.
5166 `(#:tests? #f
5167 #:gem-flags (list "--" "--use-system-libraries"
5168 (string-append "--with-xml2-include="
5169 (assoc-ref %build-inputs "libxml2")
5170 "/include/libxml2" ))
5171 #:phases
5172 (modify-phases %standard-phases
5173 (add-before 'build 'patch-extconf
5174 ;; 'pkg-config' is not included in the GEM_PATH during
5175 ;; installation, so we add it directly to the load path.
5176 (lambda* (#:key inputs #:allow-other-keys)
5177 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
5178 (substitute* "ext/nokogiri/extconf.rb"
5179 (("gem 'pkg-config'.*")
5180 (string-append "$:.unshift '"
5181 pkg-config "/lib/ruby/vendor_ruby"
5182 "/gems/pkg-config-"
5183 ,(package-version ruby-pkg-config)
5184 "/lib'\n"))))
5185 #t)))))
5186 (native-inputs
5187 `(("ruby-hoe" ,ruby-hoe)))
5188 (inputs
5189 `(("zlib" ,zlib)
5190 ("libxml2" ,libxml2)
5191 ("libxslt" ,libxslt)))
5192 (propagated-inputs
5193 `(("ruby-mini-portile" ,ruby-mini-portile-2)
5194 ("ruby-pkg-config" ,ruby-pkg-config)))
5195 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
5196 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
5197 both CSS3 selector and XPath 1.0 support.")
5198 (home-page "http://www.nokogiri.org/")
5199 (license license:expat)))
5200
5201 (define-public ruby-method-source
5202 (package
5203 (name "ruby-method-source")
5204 (version "1.0.0")
5205 (source
5206 (origin
5207 (method url-fetch)
5208 (uri (rubygems-uri "method_source" version))
5209 (sha256
5210 (base32
5211 "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"))))
5212 (build-system ruby-build-system)
5213 (arguments
5214 `(#:test-target "spec"
5215 #:phases
5216 (modify-phases %standard-phases
5217 (add-after 'unpack 'remove-git-ls-files
5218 (lambda* (#:key outputs #:allow-other-keys)
5219 (substitute* "Rakefile"
5220 (("git ls-files") "find . -type f"))
5221 #t)))))
5222 (native-inputs
5223 `(("ruby-rspec" ,ruby-rspec)))
5224 (synopsis "Retrieve the source code for Ruby methods")
5225 (description "Method_source retrieves the source code for Ruby methods.
5226 Additionally, it can extract source code from Proc and Lambda objects or just
5227 extract comments.")
5228 (home-page "https://github.com/banister/method_source")
5229 (license license:expat)))
5230
5231 (define-public ruby-coderay
5232 (package
5233 (name "ruby-coderay")
5234 (version "1.1.2")
5235 (source
5236 (origin
5237 (method url-fetch)
5238 (uri (rubygems-uri "coderay" version))
5239 (sha256
5240 (base32
5241 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
5242 (build-system ruby-build-system)
5243 (arguments
5244 '(#:tests? #f)) ; missing test files
5245 (synopsis "Ruby syntax highlighting library")
5246 (description "Coderay is a Ruby library that provides syntax highlighting
5247 for select languages.")
5248 (home-page "http://coderay.rubychan.de")
5249 (license license:expat)))
5250
5251 (define-public ruby-cuke-modeler
5252 (package
5253 (name "ruby-cuke-modeler")
5254 (version "3.1.0")
5255 (source
5256 (origin
5257 (method url-fetch)
5258 (uri (rubygems-uri "cuke_modeler" version))
5259 (sha256
5260 (base32
5261 "19smj3g3wvz0203l549sadpcxgh0ir350a6k78gq0bmlv9cchmjb"))))
5262 (build-system ruby-build-system)
5263 (arguments `(#:tests? #f)) ;no test suite in gem
5264 (propagated-inputs
5265 `(("ruby-gherkin" ,ruby-gherkin)))
5266 (synopsis "Gherkin test suite analysis tool")
5267 (description "CukeModeler facilitates modeling a test suite that is
5268 written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by
5269 providing an abstraction layer on top of the Abstract Syntax Tree (AST) that
5270 the @code{cucumber-gherkin} generates when parsing features, as well as
5271 providing models for feature files and directories in order to be able to have
5272 a fully traversable model tree of a test suite's structure. These models can
5273 then be analyzed or manipulated more easily than the underlying AST layer.")
5274 (home-page "https://github.com/enkessler/cuke_modeler")
5275 (license license:expat)))
5276
5277 (define-public ruby-parallel-tests
5278 (package
5279 (name "ruby-parallel-tests")
5280 (version "3.0.0")
5281 (home-page "https://github.com/grosser/parallel_tests")
5282 (source (origin
5283 (method git-fetch)
5284 (uri (git-reference
5285 (url home-page)
5286 (commit (string-append "v" version))))
5287 (file-name (string-append name version))
5288 (sha256
5289 (base32
5290 "08a6ndqn2dqacmc7yg48k0dh2rfrynvhkd5hiay16dl9m1r9q8pz"))))
5291 (build-system ruby-build-system)
5292 (arguments
5293 '(#:test-target "default"
5294 #:phases (modify-phases %standard-phases
5295 (add-after 'patch-source-shebangs 'patch-shell-invokations
5296 (lambda _
5297 (substitute* '("lib/parallel_tests/tasks.rb"
5298 "spec/parallel_tests/tasks_spec.rb")
5299 (("/bin/sh") (which "sh"))
5300 (("/bin/bash") (which "bash")))
5301 #t))
5302 (add-before 'check 'remove-version-constraints
5303 (lambda _
5304 ;; Remove hard coded version constraints, instead just
5305 ;; use whatever versions are available in Guix.
5306 (delete-file "Gemfile.lock")
5307 (substitute* "Gemfile"
5308 (("'minitest',.*")
5309 "'minitest'\n")
5310 (("'cucumber',.*")
5311 "'cucumber'\n"))
5312 #t))
5313 (add-before 'check 'disable-rails-test
5314 (lambda _
5315 ;; XXX: This test attempts to download and run the test
5316 ;; suites of multiple Rails versions(!) directly.
5317 (delete-file "spec/rails_spec.rb")
5318 #t))
5319 (add-before 'check 'set-HOME
5320 (lambda _
5321 ;; Some tests check the output of Bundler, and fail when
5322 ;; Bundler warns that /homeless-shelter does not exist.
5323 (setenv "HOME" "/tmp")
5324 #t)))))
5325 (native-inputs
5326 `(("ruby-bump" ,ruby-bump)
5327 ("ruby-cucumber" ,ruby-cucumber)
5328 ("ruby-cuke-modeler" ,ruby-cuke-modeler)
5329 ("ruby-minitest" ,ruby-minitest)
5330 ("ruby-rake" ,ruby-rake)
5331 ("ruby-rspec" ,ruby-rspec)
5332 ("ruby-spinach" ,ruby-spinach)))
5333 (propagated-inputs
5334 `(("ruby-parallel" ,ruby-parallel)))
5335 (synopsis "Run tests in parallel")
5336 (description
5337 "This package can speed up @code{Test::Unit}, @code{RSpec},
5338 @code{Cucumber}, and @code{Spinach} tests by running them concurrently
5339 across multiple CPU cores.")
5340 (license license:expat)))
5341
5342 (define-public ruby-parser
5343 (package
5344 (name "ruby-parser")
5345 (version "3.0.0.0")
5346 (source
5347 (origin
5348 (method url-fetch)
5349 (uri (rubygems-uri "parser" version))
5350 (sha256
5351 (base32
5352 "1jixakyzmy0j5c1rb0fjrrdhgnyryvrr6vgcybs14jfw09akv5ml"))))
5353 (build-system ruby-build-system)
5354 (arguments
5355 '(#:tests? #f)) ; tests not included in gem
5356 (native-inputs
5357 `(("bundler" ,bundler)
5358 ("ruby-cliver" ,ruby-cliver)
5359 ("ruby-simplecov" ,ruby-simplecov)
5360 ("ruby-racc" ,ruby-racc)))
5361 (inputs
5362 `(("ragel" ,ragel)))
5363 (propagated-inputs
5364 `(("ruby-ast" ,ruby-ast)))
5365 (synopsis "Ruby parser written in pure Ruby")
5366 (description
5367 "This package provides a Ruby parser written in pure Ruby.")
5368 (home-page "https://github.com/whitequark/parser")
5369 (license license:expat)))
5370
5371 (define-public ruby-sexp-processor
5372 (package
5373 (name "ruby-sexp-processor")
5374 (version "4.15.0")
5375 (source
5376 (origin
5377 (method url-fetch)
5378 (uri (rubygems-uri "sexp_processor" version))
5379 (sha256
5380 (base32
5381 "0d1vks77xnd0m3s94a58f9bkdwlaml5qdkmprx279m2s0pc2gv55"))))
5382 (build-system ruby-build-system)
5383 (native-inputs
5384 ;; TODO: Add ruby-minitest-proveit once available.
5385 `(("hoe" ,ruby-hoe)))
5386 (synopsis "ParseTree fork which includes generic S-exp processing tools")
5387 (description "The sexp_processor package is derived from ParseTree, but
5388 contrary to ParseTree, it includes all the generic S-exp processing tools.
5389 Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and
5390 @code{Environment}")
5391 (home-page "https://github.com/seattlerb/sexp_processor")
5392 (license license:expat)))
5393
5394 (define-public ruby-ruby-parser
5395 (package
5396 (name "ruby-ruby-parser")
5397 (version "3.14.2")
5398 (source
5399 (origin
5400 (method url-fetch)
5401 (uri (rubygems-uri "ruby_parser" version))
5402 (sha256
5403 (base32
5404 "09qcdyjjw3p7g6cjm5m9swkms1xnv35ndiy7yw24cas16qrhha6c"))))
5405 (build-system ruby-build-system)
5406 (native-inputs
5407 `(("hoe" ,ruby-hoe)
5408 ("racc" ,ruby-racc)
5409 ("unifdef" ,unifdef)))
5410 (propagated-inputs
5411 `(("ruby-sexp-processor" ,ruby-sexp-processor)))
5412 (home-page "https://github.com/seattlerb/ruby_parser/")
5413 (synopsis "Ruby parser written in pure Ruby")
5414 (description "The ruby_parser (RP) package provides a Ruby parser written
5415 in pure Ruby. It outputs S-expressions which can be manipulated and converted
5416 back to Ruby via the @code{ruby2ruby} library.")
5417 (license license:expat)))
5418
5419 (define-public ruby-prawn-manual-builder
5420 (package
5421 (name "ruby-prawn-manual-builder")
5422 (version "0.3.1")
5423 (source
5424 (origin
5425 (method url-fetch)
5426 (uri (rubygems-uri "prawn-manual_builder" version))
5427 (sha256
5428 (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs"))))
5429 (build-system ruby-build-system)
5430 (arguments
5431 '(#:tests? #f ; no included tests
5432 #:phases
5433 (modify-phases %standard-phases
5434 (add-after 'extract-gemspec 'patch-gemspec
5435 (lambda _
5436 (substitute* ".gemspec"
5437 ;; Loosen the requirement for pdf-inspector
5438 (("~> 1\\.0\\.7") ">= 0")))))))
5439 (propagated-inputs
5440 `(("ruby-coderay" ,ruby-coderay)))
5441 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
5442 (description
5443 "This package provides a tool for writing manuals for Prawn and Prawn
5444 accessories")
5445 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
5446 (license %prawn-project-licenses)))
5447
5448 (define-public ruby-progress_bar
5449 (package
5450 (name "ruby-progress_bar")
5451 (version "1.1.0")
5452 (source
5453 (origin
5454 (method url-fetch)
5455 (uri (rubygems-uri "progress_bar" version))
5456 (sha256
5457 (base32
5458 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
5459 (build-system ruby-build-system)
5460 (arguments
5461 '(#:test-target "spec"))
5462 (propagated-inputs
5463 `(("ruby-highline" ,ruby-highline)
5464 ("ruby-options" ,ruby-options)))
5465 (native-inputs
5466 `(("bundler" ,bundler)
5467 ("ruby-rspec" ,ruby-rspec)
5468 ("ruby-timecop" ,ruby-timecop)))
5469 (synopsis
5470 "Ruby library for displaying progress bars")
5471 (description
5472 "ProgressBar is a simple library for displaying progress bars. The
5473 maximum value is configurable, and additional information can be displayed
5474 like the percentage completion, estimated time remaining, elapsed time and
5475 rate.")
5476 (home-page "https://github.com/paul/progress_bar")
5477 (license license:wtfpl2)))
5478
5479 (define-public ruby-dep
5480 (package
5481 (name "ruby-dep")
5482 (version "1.5.0")
5483 (source
5484 (origin
5485 (method url-fetch)
5486 (uri (rubygems-uri "ruby_dep" version))
5487 (sha256
5488 (base32
5489 "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
5490 (build-system ruby-build-system)
5491 (arguments
5492 '(#:tests? #f)) ; No included tests
5493 (synopsis "Creates a version constraint of supported Rubies")
5494 (description
5495 "This package helps create a version constraint of supported Rubies,
5496 suitable for a gemspec file.")
5497 (home-page "https://github.com/e2/ruby_dep")
5498 (license license:expat)))
5499
5500 (define-public ruby-progressbar
5501 (package
5502 (name "ruby-progressbar")
5503 (version "1.10.1")
5504 (source
5505 (origin
5506 (method url-fetch)
5507 (uri (rubygems-uri "ruby-progressbar" version))
5508 (sha256
5509 (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf"))))
5510 (build-system ruby-build-system)
5511 (arguments
5512 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
5513 #:tests? #f))
5514 (synopsis "Text progress bar library for Ruby")
5515 (description
5516 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
5517 The output can be customized with a formatting system.")
5518 (home-page "https://github.com/jfelchner/ruby-progressbar")
5519 (license license:expat)))
5520
5521 (define-public ruby-pry
5522 (package
5523 (name "ruby-pry")
5524 (version "0.13.1")
5525 (source
5526 (origin
5527 (method url-fetch)
5528 (uri (rubygems-uri "pry" version))
5529 (sha256
5530 (base32
5531 "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk"))))
5532 (build-system ruby-build-system)
5533 (arguments
5534 '(#:tests? #f)) ; no tests
5535 (propagated-inputs
5536 `(("ruby-coderay" ,ruby-coderay)
5537 ("ruby-method-source" ,ruby-method-source)))
5538 (synopsis "Ruby REPL")
5539 (description "Pry is an IRB alternative and runtime developer console for
5540 Ruby. It features syntax highlighting, a plugin architecture, runtime
5541 invocation, and source and documentation browsing.")
5542 (home-page "https://cobaltbluemedia.com/pryrepl/")
5543 (license license:expat)))
5544
5545 (define-public ruby-single-cov
5546 (package
5547 (name "ruby-single-cov")
5548 (version "1.3.2")
5549 (home-page "https://github.com/grosser/single_cov")
5550 (source (origin
5551 (method git-fetch)
5552 (uri (git-reference (url home-page)
5553 (commit (string-append "v" version))))
5554 (file-name (git-file-name name version))
5555 (sha256
5556 (base32
5557 "05qdzpcai1p23a120gb9bxkfl4y73k9hicx34ch2lsk31lgi9bl7"))))
5558 (build-system ruby-build-system)
5559 (arguments
5560 '(#:test-target "default"
5561 #:phases (modify-phases %standard-phases
5562 (replace 'replace-git-ls-files
5563 (lambda _
5564 (substitute* "single_cov.gemspec"
5565 (("`git ls-files lib/ bin/ MIT-LICENSE`")
5566 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
5567 #t))
5568 (add-before 'check 'remove-version-constraints
5569 (lambda _
5570 (delete-file "Gemfile.lock")
5571 #t))
5572 (add-before 'check 'make-files-writable
5573 (lambda _
5574 ;; Tests need to create local directories and open files
5575 ;; with write permissions.
5576 (for-each make-file-writable
5577 (find-files "specs" #:directories? #t))
5578 #t))
5579 (add-before 'check 'disable-failing-test
5580 (lambda _
5581 ;; XXX: This test copies assets from minitest, but can
5582 ;; not cope with the files being read-only. Just skip
5583 ;; it for now.
5584 (substitute* "specs/single_cov_spec.rb"
5585 (("it \"complains when coverage is bad\"")
5586 "xit \"complains when coverage is bad\""))
5587 #t)))))
5588 (native-inputs
5589 `(("ruby-bump" ,ruby-bump)
5590 ("ruby-minitest" ,ruby-minitest)
5591 ("ruby-rspec" ,ruby-rspec)
5592 ("ruby-simplecov" ,ruby-simplecov)))
5593 (synopsis "Code coverage reporting tool")
5594 (description
5595 "This package provides actionable code coverage reports for Ruby
5596 projects. It has very little overhead and can be easily integrated with
5597 development tools to catch coverage problems early.")
5598 (license license:expat)))
5599
5600 (define-public ruby-oedipus-lex
5601 (package
5602 (name "ruby-oedipus-lex")
5603 (version "2.5.2")
5604 (source
5605 (origin
5606 (method url-fetch)
5607 (uri (rubygems-uri "oedipus_lex" version))
5608 (sha256
5609 (base32
5610 "1v1rk78khwq87ar300lwll570zxpkq9rjnpgc9mgsyd6mm9qjz4w"))))
5611 (build-system ruby-build-system)
5612 (native-inputs
5613 `(("ruby-hoe" ,ruby-hoe)))
5614 (synopsis "Ruby lexer")
5615 (description
5616 "Oedipus Lex is a lexer generator in the same family as Rexical and Rex.
5617 It is based primarily on generating code much like you would a hand-written
5618 lexer. It uses StrScanner within a multi-level case statement. As such,
5619 Oedipus matches on the first match, not the longest.")
5620 (home-page "https://github.com/seattlerb/oedipus_lex")
5621 (license license:expat)))
5622
5623 (define-public ruby-guard
5624 (package
5625 (name "ruby-guard")
5626 (version "2.13.0")
5627 (source (origin
5628 (method git-fetch)
5629 ;; The gem does not include a Rakefile, nor does it contain a
5630 ;; gemspec file, nor does it come with the tests. This is why
5631 ;; we fetch the tarball from Github.
5632 (uri (git-reference
5633 (url "https://github.com/guard/guard")
5634 (commit (string-append "v" version))))
5635 (file-name (git-file-name name version))
5636 (sha256
5637 (base32
5638 "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs"))))
5639 (build-system ruby-build-system)
5640 (arguments
5641 `(#:tests? #f ; tests require cucumber
5642 #:phases
5643 (modify-phases %standard-phases
5644 (add-after 'unpack 'remove-git-ls-files
5645 (lambda* (#:key outputs #:allow-other-keys)
5646 (substitute* "guard.gemspec"
5647 (("git ls-files -z") "find . -type f -print0"))
5648 #t))
5649 (replace 'build
5650 (lambda _
5651 (invoke "gem" "build" "guard.gemspec"))))))
5652 (propagated-inputs
5653 `(("ruby-formatador" ,ruby-formatador)
5654 ("ruby-listen" ,ruby-listen)
5655 ("ruby-lumberjack" ,ruby-lumberjack)
5656 ("ruby-nenv" ,ruby-nenv)
5657 ("ruby-notiffany" ,ruby-notiffany)
5658 ("ruby-pry" ,ruby-pry)
5659 ("ruby-shellany" ,ruby-shellany)
5660 ("ruby-thor" ,ruby-thor)))
5661 (native-inputs
5662 `(("bundler" ,bundler)
5663 ("ruby-rspec" ,ruby-rspec)))
5664 (synopsis "Tool to handle events on file system modifications")
5665 (description
5666 "Guard is a command line tool to easily handle events on file system
5667 modifications. Guard automates various tasks by running custom rules whenever
5668 file or directories are modified.")
5669 (home-page "https://guardgem.org/")
5670 (license license:expat)))
5671
5672 (define-public ruby-spinach
5673 (package
5674 (name "ruby-spinach")
5675 (version "0.11.0")
5676 (home-page "https://github.com/codegram/spinach")
5677 (source (origin
5678 (method url-fetch)
5679 (uri (rubygems-uri "spinach" version))
5680 (sha256
5681 (base32
5682 "1mv053mqz9c8ngqa6wp1ymk2fax6j0yqzax6918akrdr7c3fx3c6"))))
5683 (build-system ruby-build-system)
5684 (arguments
5685 ;; FIXME: Disable tests altogether because they depend on 'capybara'
5686 ;; which in turn depends on many other unpackaged gems. Enable once
5687 ;; capybara is available.
5688 '(#:tests? #f))
5689 (propagated-inputs
5690 `(("ruby-colorize" ,ruby-colorize)
5691 ("ruby-gherkin-ruby" ,ruby-gherkin-ruby)
5692 ("ruby-json" ,ruby-json)))
5693 (synopsis "Gherkin-based BDD framework")
5694 (description
5695 "Spinach is a high-level @acronym{BDD, Behavior-driven development}
5696 framework that leverages the expressive @code{Gherkin} language to help you
5697 define executable specifications of your code.")
5698 (license license:expat)))
5699
5700 (define-public ruby-tilt
5701 (package
5702 (name "ruby-tilt")
5703 (version "2.0.10")
5704 (source
5705 (origin
5706 (method git-fetch) ;the distributed gem lacks tests
5707 (uri (git-reference
5708 (url "https://github.com/rtomayko/tilt")
5709 (commit (string-append "v" version))))
5710 (file-name (git-file-name name version))
5711 (sha256
5712 (base32
5713 "0adb7fg7925n2rd9a8kkqz3mgylw2skp9hkh9qc1rnph72mqsm6r"))))
5714 (build-system ruby-build-system)
5715 (arguments
5716 '(#:phases
5717 (modify-phases %standard-phases
5718 (add-after 'unpack 'remove-some-dependencies
5719 (lambda _
5720 (substitute* "Gemfile"
5721 ;; TODO ronn is used for generating the manual
5722 (("gem 'ronn'.*") "\n")
5723 ;; ruby-haml has a runtime dependency on ruby-tilt, so don't
5724 ;; pass it in as a native-input
5725 (("gem 'haml'.*") "\n")
5726 ;; TODO Not all of these gems are packaged for Guix yet:
5727 ;; less, coffee-script, livescript, babel-transpiler,
5728 ;; typescript-node
5729 (("if can_execjs") "if false")
5730 ;; Disable the secondary group to reduce the number of
5731 ;; dependencies. None of the normal approaches work, so patch
5732 ;; the Gemfile instead.
5733 (("group :secondary") "[].each"))
5734 #t)))))
5735 (propagated-inputs
5736 `(("ruby-pandoc-ruby" ,ruby-pandoc-ruby)
5737 ("ruby-sassc" ,ruby-sassc)))
5738 (native-inputs
5739 `(("bundler" ,bundler)
5740 ("ruby-yard" ,ruby-yard)
5741 ("ruby-builder" ,ruby-builder)
5742 ("ruby-erubis" ,ruby-erubis)
5743 ("ruby-markaby" ,ruby-markaby)))
5744 (synopsis "Generic interface to multiple Ruby template engines")
5745 (description
5746 "Tilt is a thin interface over a number of different Ruby template
5747 engines in an attempt to make their usage as generic as possible.")
5748 (home-page "https://github.com/rtomayko/tilt/")
5749 (license license:expat)))
5750
5751 (define-public ruby-thread-safe
5752 (package
5753 (name "ruby-thread-safe")
5754 (version "0.3.6")
5755 (source
5756 (origin
5757 (method url-fetch)
5758 (uri (rubygems-uri "thread_safe" version))
5759 (sha256
5760 (base32
5761 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
5762 (build-system ruby-build-system)
5763 (arguments
5764 '(#:tests? #f)) ; needs simplecov, among others
5765 (synopsis "Thread-safe utilities for Ruby")
5766 (description "The thread_safe library provides thread-safe collections and
5767 utilities for Ruby.")
5768 (home-page "https://github.com/ruby-concurrency/thread_safe")
5769 (license license:asl2.0)))
5770
5771 (define-public ruby-tzinfo
5772 (package
5773 (name "ruby-tzinfo")
5774 (version "2.0.4")
5775 (source
5776 (origin
5777 (method git-fetch)
5778 (uri (git-reference
5779 ;; Pull from git because the gem has no tests.
5780 (url "https://github.com/tzinfo/tzinfo")
5781 (commit (string-append "v" version))))
5782 (file-name (git-file-name name version))
5783 (sha256
5784 (base32
5785 "0jaq1givdaz5jxz47xngyj3j315n872rk97mnpm5njwm48wy45yh"))))
5786 (build-system ruby-build-system)
5787 (arguments
5788 '(#:phases
5789 (modify-phases %standard-phases
5790 (add-after 'unpack 'skip-safe-tests
5791 (lambda _
5792 (substitute* "test/test_utils.rb"
5793 (("def safe_test\\(options = \\{\\}\\)")
5794 "def safe_test(options = {})
5795 skip('The Guix build environment has an unsafe load path')"))
5796 #t))
5797 (add-before 'check 'pre-check
5798 (lambda _
5799 (setenv "HOME" (getcwd))
5800 (substitute* "Gemfile"
5801 (("simplecov.*") "simplecov'\n"))
5802 #t))
5803 (replace 'check
5804 (lambda* (#:key tests? test-target #:allow-other-keys)
5805 (when tests?
5806 (invoke "bundler" "exec" "rake" test-target))
5807 #t)))))
5808 (propagated-inputs
5809 `(("ruby-concurrent-ruby" ,ruby-concurrent)))
5810 (native-inputs
5811 `(("ruby-simplecov" ,ruby-simplecov)))
5812 (synopsis "Time zone library for Ruby")
5813 (description "TZInfo is a Ruby library that provides daylight savings
5814 aware transformations between times in different time zones.")
5815 (home-page "https://tzinfo.github.io")
5816 (license license:expat)))
5817
5818 (define-public ruby-tzinfo-data
5819 (package
5820 (name "ruby-tzinfo-data")
5821 (version "1.2021.1")
5822 (source
5823 (origin
5824 (method git-fetch)
5825 ;; Download from GitHub because the rubygems version does not contain
5826 ;; Rakefile or tests.
5827 (uri (git-reference
5828 (url "https://github.com/tzinfo/tzinfo-data")
5829 (commit (string-append "v" version))))
5830 (file-name (git-file-name name version))
5831 (sha256
5832 (base32
5833 "0yzyr3rf8qaw6kxfc0gwpxsb7gl3rhfpx9g1c2z15vapyminhi60"))))
5834 (build-system ruby-build-system)
5835 (arguments
5836 `(#:phases
5837 (modify-phases %standard-phases
5838 (add-after 'unpack 'patch-source
5839 (lambda* (#:key inputs #:allow-other-keys)
5840 (substitute* "Rakefile"
5841 (("https://data.iana.org/time-zones/releases")
5842 (assoc-ref inputs "tzdata")))
5843 #t))
5844 (add-before 'check 'pre-check
5845 (lambda _
5846 (setenv "HOME" (getcwd))
5847 (substitute* "Rakefile"
5848 ;; Don't need gpg, and it may break after a time.
5849 (("gpg ") "echo ")
5850 ((" sh\\(\\\"make -C" text)
5851 (string-append " sh(\"sed -i 's@/bin/sh@sh@' #{tzdb_combined_path}/Makefile \")\n"
5852 " sh(\"sed -i 's@cc=@cc?=@' #{tzdb_combined_path}/Makefile \")\n" text)))
5853 (setenv "cc" ,(cc-for-target))
5854 #t)))))
5855 (propagated-inputs
5856 `(("ruby-tzinfo" ,ruby-tzinfo)))
5857 (native-inputs
5858 `(("tzdata"
5859 ,(file-union "tzdata-for-ruby-tzdata-info"
5860 `(("tzdata2021a.tar.gz"
5861 ,(origin
5862 (method url-fetch)
5863 (uri "https://data.iana.org/time-zones/releases/tzdata2021a.tar.gz")
5864 (sha256
5865 (base32
5866 "022fn6gkmp7pamlgab04x0dm5hnyn2m2fcnyr3pvm36612xd5rrr"))))
5867 ("tzdata2021a.tar.gz.asc"
5868 ,(origin
5869 (method url-fetch)
5870 (uri "https://data.iana.org/time-zones/releases/tzdata2021a.tar.gz.asc")
5871 (sha256
5872 (base32
5873 "0n7h2w8ji1lrxpk0d44wyfshlhr7c9jmwj6lqbxlyvqnfi3gbicx"))))
5874 ("tzcode2021a.tar.gz"
5875 ,(origin
5876 (method url-fetch)
5877 (uri "https://data.iana.org/time-zones/releases/tzcode2021a.tar.gz")
5878 (sha256
5879 (base32
5880 "1l02b0jiwp3fl0xd6227i69d26rmx3yrnq0ssq9vvdmm4jhvyipb"))))
5881 ("tzcode2021a.tar.gz.asc"
5882 ,(origin
5883 (method url-fetch)
5884 (uri "https://data.iana.org/time-zones/releases/tzcode2021a.tar.gz.asc")
5885 (sha256
5886 (base32
5887 "1qhlj4lr810s47s1lwcvv1sgvg2sflf98w4sbg1lc8wzv5qxxv7g")))))))))
5888 (synopsis "Data from the IANA Time Zone database")
5889 (description
5890 "This library provides @code{TZInfo::Data}, which contains data from the
5891 IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
5892 (home-page "https://tzinfo.github.io")
5893 (license license:expat)))
5894
5895 (define-public ruby-rb-inotify
5896 (package
5897 (name "ruby-rb-inotify")
5898 (version "0.9.10")
5899 (source
5900 (origin
5901 (method url-fetch)
5902 (uri (rubygems-uri "rb-inotify" version))
5903 (sha256
5904 (base32
5905 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
5906 (build-system ruby-build-system)
5907 (arguments
5908 '(#:tests? #f ; there are no tests
5909 #:phases
5910 (modify-phases %standard-phases
5911 ;; Building the gemspec with rake is not working here since it is
5912 ;; generated with Jeweler. It is also unnecessary because the
5913 ;; existing gemspec does not use any development tools to generate a
5914 ;; list of files.
5915 (replace 'build
5916 (lambda _
5917 (invoke "gem" "build" "rb-inotify.gemspec"))))))
5918 (propagated-inputs
5919 `(("ruby-ffi" ,ruby-ffi)))
5920 (native-inputs
5921 `(("ruby-yard" ,ruby-yard)))
5922 (synopsis "Ruby wrapper for Linux's inotify")
5923 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
5924 kernel subsystem for monitoring changes to files and directories.")
5925 (home-page "https://github.com/nex3/rb-inotify")
5926 (license license:expat)))
5927
5928 (define-public ruby-pry-editline
5929 (package
5930 (name "ruby-pry-editline")
5931 (version "1.1.2")
5932 (source (origin
5933 (method url-fetch)
5934 (uri (rubygems-uri "pry-editline" version))
5935 (sha256
5936 (base32
5937 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
5938 (build-system ruby-build-system)
5939 (arguments `(#:tests? #f)) ; no tests included
5940 (native-inputs
5941 `(("bundler" ,bundler)))
5942 (synopsis "Open the current REPL line in an editor")
5943 (description
5944 "This gem provides a plugin for the Ruby REPL to enable opening the
5945 current line in an external editor.")
5946 (home-page "https://github.com/tpope/pry-editline")
5947 (license license:expat)))
5948
5949 (define-public ruby-sdoc
5950 (package
5951 (name "ruby-sdoc")
5952 (version "1.1.0")
5953 (source (origin
5954 (method url-fetch)
5955 (uri (rubygems-uri "sdoc" version))
5956 (sha256
5957 (base32
5958 "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd"))))
5959 (build-system ruby-build-system)
5960 (arguments
5961 `(#:phases
5962 (modify-phases %standard-phases
5963 (add-before 'check 'set-rubylib-and-patch-gemfile
5964 (lambda _
5965 (setenv "RUBYLIB" "lib")
5966 (substitute* "sdoc.gemspec"
5967 (("s.add_runtime_dependency.*") "\n")
5968 (("s.add_dependency.*") "\n"))
5969 (substitute* "Gemfile"
5970 (("gem \"rake\".*")
5971 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
5972 #t)))))
5973 (propagated-inputs
5974 `(("ruby-json" ,ruby-json)))
5975 (native-inputs
5976 `(("bundler" ,bundler)
5977 ("ruby-minitest" ,ruby-minitest)
5978 ("ruby-hoe" ,ruby-hoe)))
5979 (synopsis "Generate searchable RDoc documentation")
5980 (description
5981 "SDoc is an RDoc documentation generator to build searchable HTML
5982 documentation for Ruby code.")
5983 (home-page "https://github.com/voloko/sdoc")
5984 (license license:expat)))
5985
5986 (define-public ruby-tins
5987 (package
5988 (name "ruby-tins")
5989 (version "1.15.0")
5990 (source (origin
5991 (method url-fetch)
5992 (uri (rubygems-uri "tins" version))
5993 (sha256
5994 (base32
5995 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
5996 (build-system ruby-build-system)
5997 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
5998 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
5999 ;; the gemspec.
6000 (arguments
6001 `(#:tests? #f ; there are no tests
6002 #:phases
6003 (modify-phases %standard-phases
6004 (replace 'build
6005 (lambda _
6006 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
6007 ;; causes an error.
6008 (substitute* "tins.gemspec"
6009 (("\"lib/spruz\", ") ""))
6010 (invoke "gem" "build" "tins.gemspec"))))))
6011 (synopsis "Assorted tools for Ruby")
6012 (description "Tins is a Ruby library providing assorted tools.")
6013 (home-page "https://github.com/flori/tins")
6014 (license license:expat)))
6015
6016 (define-public ruby-gem-hadar
6017 (package
6018 (name "ruby-gem-hadar")
6019 (version "1.11.0")
6020 (source (origin
6021 (method url-fetch)
6022 (uri (rubygems-uri "gem_hadar" version))
6023 (sha256
6024 (base32
6025 "160abb3l4n3gkhd86f22n981bhqxkbf5ym6fhsk796pix6696pd5"))))
6026 (build-system ruby-build-system)
6027 ;; This gem needs itself at development time. We disable rebuilding of the
6028 ;; gemspec to avoid this loop.
6029 (arguments
6030 `(#:tests? #f ; there are no tests
6031 #:phases
6032 (modify-phases %standard-phases
6033 (replace 'build
6034 (lambda _
6035 (invoke "gem" "build" "gem_hadar.gemspec"))))))
6036 (propagated-inputs
6037 `(("git" ,git)
6038 ("ruby-tins" ,ruby-tins)
6039 ("ruby-yard" ,ruby-yard)))
6040 (synopsis "Library for the development of Ruby gems")
6041 (description
6042 "This library contains some useful functionality to support the
6043 development of Ruby gems.")
6044 (home-page "https://github.com/flori/gem_hadar")
6045 (license license:expat)))
6046
6047 (define-public ruby-minitest-tu-shim
6048 (package
6049 (name "ruby-minitest-tu-shim")
6050 (version "1.3.3")
6051 (source (origin
6052 (method url-fetch)
6053 (uri (rubygems-uri "minitest_tu_shim" version))
6054 (sha256
6055 (base32
6056 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
6057 (build-system ruby-build-system)
6058 (arguments
6059 `(#:phases
6060 (modify-phases %standard-phases
6061 (add-after 'unpack 'fix-test-include-path
6062 (lambda* (#:key inputs #:allow-other-keys)
6063 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
6064 (substitute* "Rakefile"
6065 (("Hoe\\.add_include_dirs .*")
6066 (string-append "Hoe.add_include_dirs \""
6067 minitest "/lib/ruby/vendor_ruby"
6068 "/gems/minitest-"
6069 ,(package-version ruby-minitest-4)
6070 "/lib" "\""))))
6071 #t))
6072 (add-before 'check 'fix-test-assumptions
6073 (lambda _
6074 ;; The test output includes the file name, so a couple of tests
6075 ;; fail. Changing the regular expressions slightly fixes this
6076 ;; problem.
6077 (substitute* "test/test_mini_test.rb"
6078 (("output.sub!\\(.*, 'FILE:LINE'\\)")
6079 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
6080 (("gsub\\(/.*, 'FILE:LINE'\\)")
6081 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
6082 #t)))))
6083 (propagated-inputs
6084 `(("ruby-minitest-4" ,ruby-minitest-4)))
6085 (native-inputs
6086 `(("ruby-hoe" ,ruby-hoe)))
6087 (synopsis "Adapter library between minitest and test/unit")
6088 (description
6089 "This library bridges the gap between the small and fast minitest and
6090 Ruby's large and slower test/unit.")
6091 (home-page "https://rubygems.org/gems/minitest_tu_shim")
6092 (license license:expat)))
6093
6094 (define-public ruby-term-ansicolor
6095 (package
6096 (name "ruby-term-ansicolor")
6097 (version "1.6.0")
6098 (source (origin
6099 (method url-fetch)
6100 (uri (rubygems-uri "term-ansicolor" version))
6101 (sha256
6102 (base32
6103 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
6104 (build-system ruby-build-system)
6105 ;; Rebuilding the gemspec seems to require git, even though this is not a
6106 ;; git repository, so we just build the gem from the existing gemspec.
6107 (arguments
6108 `(#:phases
6109 (modify-phases %standard-phases
6110 (add-after 'unpack 'fix-test
6111 (lambda -
6112 (substitute* "tests/hsl_triple_test.rb"
6113 (("0\\\\\\.0%")
6114 "0\\.?0?%"))))
6115 (replace 'build
6116 (lambda _
6117 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
6118 (propagated-inputs
6119 `(("ruby-tins" ,ruby-tins)))
6120 (native-inputs
6121 `(("ruby-gem-hadar" ,ruby-gem-hadar)
6122 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
6123 (synopsis "Ruby library to control the attributes of terminal output")
6124 (description
6125 "This Ruby library uses ANSI escape sequences to control the attributes
6126 of terminal output.")
6127 (home-page "https://flori.github.io/term-ansicolor/")
6128 ;; There is no mention of the "or later" clause.
6129 (license license:gpl2)))
6130
6131 (define-public ruby-terraform
6132 (package
6133 (name "ruby-terraform")
6134 (version "0.22.0")
6135 (source
6136 (origin
6137 (method url-fetch)
6138 (uri (rubygems-uri "ruby-terraform" version))
6139 (sha256
6140 (base32
6141 "13zjkp71cd19j2ds2h9rqwcfr1zdg5nsh63p89l6qcsc9z39z324"))))
6142 (build-system ruby-build-system)
6143 (arguments
6144 '(#:tests? #f)) ; No included tests
6145 (propagated-inputs
6146 `(("ruby-lino" ,ruby-lino)))
6147 (synopsis "Ruby wrapper around the Terraform command line interface")
6148 (description
6149 "This package provides a Ruby wrapper around the Terraform command line
6150 interface so that Terraform can be more easily invoked from Ruby code.")
6151 (home-page "https://github.com/infrablocks/ruby_terraform")
6152 (license license:expat)))
6153
6154 (define-public ruby-pstree
6155 (package
6156 (name "ruby-pstree")
6157 (version "0.1.0")
6158 (source (origin
6159 (method url-fetch)
6160 (uri (rubygems-uri "pstree" version))
6161 (sha256
6162 (base32
6163 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
6164 (build-system ruby-build-system)
6165 (native-inputs
6166 `(("ruby-gem-hadar" ,ruby-gem-hadar)
6167 ("bundler" ,bundler)))
6168 (synopsis "Create a process tree data structure")
6169 (description
6170 "This library uses the output of the @code{ps} command to create a
6171 process tree data structure for the current host.")
6172 (home-page "https://github.com/flori/pstree")
6173 ;; There is no mention of the "or later" clause.
6174 (license license:gpl2)))
6175
6176 (define-public ruby-utils
6177 (package
6178 (name "ruby-utils")
6179 (version "0.9.0")
6180 (source (origin
6181 (method url-fetch)
6182 (uri (rubygems-uri "utils" version))
6183 (sha256
6184 (base32
6185 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
6186 (build-system ruby-build-system)
6187 (propagated-inputs
6188 `(("ruby-tins" ,ruby-tins)
6189 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
6190 ("ruby-pstree" ,ruby-pstree)
6191 ("ruby-pry-editline" ,ruby-pry-editline)))
6192 (native-inputs
6193 `(("ruby-gem-hadar" ,ruby-gem-hadar)
6194 ("bundler" ,bundler)))
6195 (synopsis "Command line tools for working with Ruby")
6196 (description
6197 "This package provides assorted command line tools that may be useful
6198 when working with Ruby code.")
6199 (home-page "https://github.com/flori/utils")
6200 ;; There is no mention of the "or later" clause.
6201 (license license:gpl2)))
6202
6203 (define-public ruby-jaro-winkler
6204 (package
6205 (name "ruby-jaro-winkler")
6206 (version "1.5.4")
6207 (source
6208 (origin
6209 (method url-fetch)
6210 (uri (rubygems-uri "jaro_winkler" version))
6211 (sha256
6212 (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh"))))
6213 (build-system ruby-build-system)
6214 (arguments
6215 '(#:tests? #f)) ; no included tests
6216 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
6217 (description
6218 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
6219 algorithm. It is written as a C extension and will fallback to a pure Ruby
6220 implementation on platforms where this is unsupported.")
6221 (home-page "https://github.com/tonytonyjan/jaro_winkler")
6222 (license license:expat)))
6223
6224 (define-public ruby-json
6225 (package
6226 (name "ruby-json")
6227 (version "2.1.0")
6228 (source
6229 (origin
6230 (method url-fetch)
6231 (uri (rubygems-uri "json" version))
6232 (sha256
6233 (base32
6234 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
6235 (build-system ruby-build-system)
6236 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
6237 (synopsis "JSON library for Ruby")
6238 (description "This Ruby library provides a JSON implementation written as
6239 a native C extension.")
6240 (home-page "http://json-jruby.rubyforge.org/")
6241 (license (list license:ruby license:gpl2)))) ; GPL2 only
6242
6243 (define-public ruby-json-pure
6244 (package
6245 (name "ruby-json-pure")
6246 (version "2.2.0")
6247 (source (origin
6248 (method url-fetch)
6249 (uri (rubygems-uri "json_pure" version))
6250 (sha256
6251 (base32
6252 "0m0j1mfwv0mvw72kzqisb26xjl236ivqypw1741dkis7s63b8439"))))
6253 (build-system ruby-build-system)
6254 (arguments
6255 `(#:phases
6256 (modify-phases %standard-phases
6257 (add-after 'unpack 'fix-rakefile
6258 (lambda _
6259 (substitute* "Rakefile"
6260 ;; Since this is not a git repository, do not call 'git'.
6261 (("`git ls-files`") "`find . -type f |sort`")
6262 ;; Loosen dependency constraint.
6263 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
6264 #t))
6265 (add-after 'replace-git-ls-files 'regenerate-gemspec
6266 (lambda _
6267 ;; Regenerate gemspec so loosened dependency constraints are
6268 ;; propagated.
6269 (invoke "rake" "gemspec")))
6270 (add-after 'regenerate-gemspec 'fix-json-java.gemspec
6271 (lambda _
6272 ;; This gemspec doesn't look to be generated by the above
6273 ;; command, so patch it separately.
6274 (substitute* "json-java.gemspec"
6275 (("%q<test-unit>\\.freeze, \\[\"~> 2\\.0\"\\]")
6276 "%q<test-unit>.freeze, [\">= 2.0\"]"))
6277 #t)))))
6278 (native-inputs
6279 `(("bundler" ,bundler)
6280 ("ragel" ,ragel)
6281 ("ruby-simplecov" ,ruby-simplecov)
6282 ("ruby-test-unit" ,ruby-test-unit)))
6283 (synopsis "JSON implementation in pure Ruby")
6284 (description
6285 "This package provides a JSON implementation written in pure Ruby.")
6286 (home-page "https://flori.github.com/json/")
6287 (license license:ruby)))
6288
6289 (define-public ruby-jwt
6290 (package
6291 (name "ruby-jwt")
6292 (version "2.1.0")
6293 (source
6294 (origin
6295 (method url-fetch)
6296 (uri (rubygems-uri "jwt" version))
6297 (sha256
6298 (base32
6299 "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky"))))
6300 (build-system ruby-build-system)
6301 (arguments
6302 '(#:test-target "test"
6303 #:phases
6304 (modify-phases %standard-phases
6305 (add-after 'unpack 'remove-unnecessary-dependencies
6306 (lambda _
6307 (substitute* "spec/spec_helper.rb"
6308 (("require 'simplecov.*") "\n")
6309 ;; Use [].each to disable running the SimpleCov configuration
6310 ;; block
6311 (("SimpleCov\\.configure") "[].each")
6312 (("require 'codeclimate-test-reporter'") "")
6313 (("require 'codacy-coverage'") "")
6314 (("Codacy::Reporter\\.start") ""))
6315 #t)))))
6316 (native-inputs
6317 `(("bundler" ,bundler)
6318 ("ruby-rspec" ,ruby-rspec)
6319 ("ruby-rbnacl" ,ruby-rbnacl)))
6320 (synopsis "Ruby implementation of the JSON Web Token standard")
6321 (description
6322 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
6323 @acronym{JWT, JSON Web Token} standard.")
6324 (home-page "https://github.com/jwt/ruby-jwt")
6325 (license license:expat)))
6326
6327 ;; Even though this package only provides bindings for a Mac OSX API it is
6328 ;; required by "ruby-listen" at runtime.
6329 (define-public ruby-rb-fsevent
6330 (package
6331 (name "ruby-rb-fsevent")
6332 (version "0.10.3")
6333 (source (origin
6334 (method url-fetch)
6335 (uri (rubygems-uri "rb-fsevent" version))
6336 (sha256
6337 (base32
6338 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
6339 (build-system ruby-build-system)
6340 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
6341 ;; "listen", which needs "rb-fsevent" at runtime.
6342 (arguments `(#:tests? #f))
6343 (synopsis "FSEvents API with signals catching")
6344 (description
6345 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
6346 (home-page "https://rubygems.org/gems/rb-fsevent")
6347 (license license:expat)))
6348
6349 (define-public ruby-listen
6350 (package
6351 (name "ruby-listen")
6352 (version "3.2.0")
6353 (source
6354 (origin
6355 ;; The gem does not include a Rakefile, so fetch from the Git
6356 ;; repository.
6357 (method git-fetch)
6358 (uri (git-reference
6359 (url "https://github.com/guard/listen")
6360 (commit (string-append "v" version))))
6361 (file-name (git-file-name name version))
6362 (sha256
6363 (base32
6364 "1hkp1g6hk5clsmbd001gkc12ma6s459x820piajyasv61m87if24"))))
6365 (build-system ruby-build-system)
6366 (arguments
6367 `(#:test-target "spec"
6368 #:phases
6369 (modify-phases %standard-phases
6370 (add-after 'unpack 'fix-files-in-gemspec
6371 (lambda _
6372 (substitute* "listen.gemspec"
6373 (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
6374 #t))
6375 (add-before 'check 'remove-unnecessary-dependencies'
6376 (lambda _
6377 (substitute* "Rakefile"
6378 ;; Rubocop is for code linting, and is unnecessary for running
6379 ;; the tests.
6380 ((".*rubocop.*") ""))
6381 #t)))))
6382 (native-inputs
6383 `(("bundler" ,bundler)
6384 ("ruby-rspec" ,ruby-rspec)))
6385 (inputs
6386 `(;; ruby-thor is used for the command line interface, and is referenced
6387 ;; in the wrapper, and therefore just needs to be an input.
6388 ("ruby-thor" ,ruby-thor)))
6389 (propagated-inputs
6390 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
6391 ("ruby-rb-inotify" ,ruby-rb-inotify)
6392 ("ruby-dep" ,ruby-dep)))
6393 (synopsis "Listen to file modifications")
6394 (description "The Listen gem listens to file modifications and notifies
6395 you about the changes.")
6396 (home-page "https://github.com/guard/listen")
6397 (license license:expat)))
6398
6399 (define-public ruby-loofah
6400 (package
6401 (name "ruby-loofah")
6402 (version "2.3.1")
6403 (source
6404 (origin
6405 (method url-fetch)
6406 (uri (rubygems-uri "loofah" version))
6407 (sha256
6408 (base32
6409 "0npqav026zd7r4qdidq9x5nxcp2dzg71bnp421xxx7sngbxf2xbd"))))
6410 (build-system ruby-build-system)
6411 (arguments
6412 '(#:phases
6413 (modify-phases %standard-phases
6414 (add-after 'unpack 'remove-unnecessary-dependencies
6415 (lambda _
6416 ;; concourse is a development tool which is unused, so remove it
6417 ;; so it's not required.
6418 (substitute* "Rakefile"
6419 (("require \"concourse\"") "")
6420 (("Concourse\\.new.*") "task :concourse do\n"))
6421 #t)))))
6422 (native-inputs
6423 `(("ruby-hoe" ,ruby-hoe)
6424 ("ruby-rr" ,ruby-rr)))
6425 (propagated-inputs
6426 `(("ruby-nokogiri" ,ruby-nokogiri)
6427 ("ruby-crass" ,ruby-crass)))
6428 (synopsis "Ruby library for manipulating and transforming HTML/XML")
6429 (description
6430 "Loofah is a general library for manipulating and transforming HTML/XML
6431 documents and fragments. It's built on top of Nokogiri and libxml2.")
6432 (home-page "https://github.com/flavorjones/loofah")
6433 (license license:expat)))
6434
6435 (define-public ruby-activesupport
6436 (package
6437 (name "ruby-activesupport")
6438 (version "6.1.3")
6439 (source
6440 (origin
6441 (method url-fetch)
6442 (uri (rubygems-uri "activesupport" version))
6443 (sha256
6444 (base32
6445 "00a4db64g8w5yyk6hzak2nqrmdfvyh5zc9cvnm9gglwbi87ss28h"))))
6446 (build-system ruby-build-system)
6447 (arguments
6448 `(#:phases
6449 (modify-phases %standard-phases
6450 (replace 'check
6451 (lambda _
6452 ;; There are no tests, instead attempt to load the library.
6453 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
6454 (propagated-inputs
6455 `(("ruby-concurrent" ,ruby-concurrent)
6456 ("ruby-i18n" ,ruby-i18n)
6457 ("ruby-minitest" ,ruby-minitest)
6458 ("ruby-tzinfo" ,ruby-tzinfo)
6459 ("ruby-tzinfo-data" ,ruby-tzinfo-data)
6460 ("ruby-zeitwerk" ,ruby-zeitwerk)))
6461 (synopsis "Ruby on Rails utility library")
6462 (description "ActiveSupport is a toolkit of support libraries and Ruby
6463 core extensions extracted from the Rails framework. It includes support for
6464 multibyte strings, internationalization, time zones, and testing.")
6465 (home-page "https://www.rubyonrails.org")
6466 (license license:expat)))
6467
6468 (define-public ruby-crass
6469 (package
6470 (name "ruby-crass")
6471 (version "1.0.6")
6472 (home-page "https://github.com/rgrove/crass")
6473 (source (origin
6474 ;; The gem does not contain tests, so pull from git.
6475 (method git-fetch)
6476 (uri (git-reference
6477 (url home-page)
6478 (commit (string-append "v" version))))
6479 (file-name (git-file-name name version))
6480 (sha256
6481 (base32
6482 "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40"))))
6483 (build-system ruby-build-system)
6484 (synopsis "Pure Ruby CSS parser")
6485 (description
6486 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
6487 (license license:expat)))
6488
6489 (define-public ruby-nokogumbo
6490 (package
6491 (name "ruby-nokogumbo")
6492 (version "2.0.2")
6493 (source (origin
6494 ;; We use the git reference, because there's no Rakefile in the
6495 ;; published gem and the tarball on Github is outdated.
6496 (method git-fetch)
6497 (uri (git-reference
6498 (url "https://github.com/rubys/nokogumbo")
6499 (commit (string-append "v" version))))
6500 (file-name (string-append name "-" version "-checkout"))
6501 (sha256
6502 (base32
6503 "1qg0iyw450lw6d0j1ghzg79a6l60nm1m4qmrzwzybi585861jxcx"))))
6504 (build-system ruby-build-system)
6505 (native-inputs
6506 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
6507 (inputs
6508 `(("gumbo-parser" ,gumbo-parser)))
6509 (propagated-inputs
6510 `(("ruby-nokogiri" ,ruby-nokogiri)))
6511 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
6512 (description
6513 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
6514 access the result as a Nokogiri parsed document.")
6515 (home-page "https://github.com/rubys/nokogumbo/")
6516 (license license:asl2.0)))
6517
6518 (define-public ruby-sanitize
6519 (package
6520 (name "ruby-sanitize")
6521 (version "5.1.0")
6522 (home-page "https://github.com/rgrove/sanitize")
6523 (source (origin
6524 (method git-fetch)
6525 ;; The gem does not include the Rakefile, so we download the
6526 ;; source from Github.
6527 (uri (git-reference
6528 (url home-page)
6529 (commit (string-append "v" version))))
6530 (file-name (git-file-name name version))
6531 (patches (search-patches "ruby-sanitize-system-libxml.patch"))
6532 (sha256
6533 (base32
6534 "0lj0q9yhjp0q0in5majkshnki07mw8m2vxgndx4m5na6232aszl0"))))
6535 (build-system ruby-build-system)
6536 (propagated-inputs
6537 `(("ruby-crass" ,ruby-crass)
6538 ("ruby-nokogiri" ,ruby-nokogiri)
6539 ("ruby-nokogumbo" ,ruby-nokogumbo)))
6540 (native-inputs
6541 `(("ruby-minitest" ,ruby-minitest)))
6542 (synopsis "Whitelist-based HTML and CSS sanitizer")
6543 (description
6544 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
6545 acceptable elements, attributes, and CSS properties, Sanitize will remove all
6546 unacceptable HTML and/or CSS from a string.")
6547 (license license:expat)))
6548
6549 (define-public ruby-oj
6550 (package
6551 (name "ruby-oj")
6552 (version "3.10.1")
6553 (source
6554 (origin
6555 (method git-fetch)
6556 ;; Version on rubygems.org does not contain Rakefile, so download from
6557 ;; GitHub instead.
6558 (uri (git-reference
6559 (url "https://github.com/ohler55/oj")
6560 (commit (string-append "v" version))))
6561 (file-name (git-file-name name version))
6562 (sha256
6563 (base32
6564 "0i5xjx4sh816zx2c1a4d1q67k7vllg5jnnc4jy6zhbmwi1dvp5vw"))))
6565 (build-system ruby-build-system)
6566 (arguments
6567 '(#:test-target "test_all"
6568 #:phases
6569 (modify-phases %standard-phases
6570 (add-before 'check 'disable-bundler
6571 (lambda _
6572 (substitute* "Rakefile"
6573 (("Bundler\\.with_clean_env") "1.times")
6574 (("bundle exec ") "")))))))
6575 (native-inputs
6576 `(("bundler" ,bundler)
6577 ("ruby-rspec" ,ruby-rspec)
6578 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6579 (synopsis "JSON parser for Ruby optimized for speed")
6580 (description
6581 "Oj is a JSON parser and generator for Ruby, where the encoding and
6582 decoding of JSON is implemented as a C extension to Ruby.")
6583 (home-page "http://www.ohler.com/oj/")
6584 (license (list license:expat ; Ruby code
6585 license:bsd-3)))) ; extension code
6586
6587 (define-public ruby-ox
6588 (package
6589 (name "ruby-ox")
6590 (version "2.6.0")
6591 (source
6592 (origin
6593 (method url-fetch)
6594 (uri (rubygems-uri "ox" version))
6595 (sha256
6596 (base32
6597 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
6598 (build-system ruby-build-system)
6599 (arguments
6600 '(#:tests? #f)) ; no tests
6601 (synopsis "Optimized XML library for Ruby")
6602 (description
6603 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
6604 written as a native C extension. It was designed to be an alternative to
6605 Nokogiri and other Ruby XML parsers for generic XML parsing and as an
6606 alternative to Marshal for Object serialization. ")
6607 (home-page "http://www.ohler.com/ox")
6608 (license license:expat)))
6609
6610 (define-public ruby-redcloth
6611 (package
6612 (name "ruby-redcloth")
6613 (version "4.3.2")
6614 (source (origin
6615 (method url-fetch)
6616 (uri (rubygems-uri "RedCloth" version))
6617 (sha256
6618 (base32
6619 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
6620 (build-system ruby-build-system)
6621 (arguments
6622 `(#:tests? #f ; no tests
6623 #:phases
6624 (modify-phases %standard-phases
6625 ;; Redcloth has complicated rake tasks to build various versions for
6626 ;; multiple targets using RVM. We don't want this so we just use the
6627 ;; existing gemspec.
6628 (replace 'build
6629 (lambda _
6630 (invoke "gem" "build" "redcloth.gemspec"))))))
6631 (native-inputs
6632 `(("bundler" ,bundler)
6633 ("ruby-diff-lcs" ,ruby-diff-lcs)
6634 ("ruby-rspec-2" ,ruby-rspec-2)))
6635 (synopsis "Textile markup language parser for Ruby")
6636 (description
6637 "RedCloth is a Ruby parser for the Textile markup language.")
6638 (home-page "http://redcloth.org")
6639 (license license:expat)))
6640
6641 (define-public ruby-pg
6642 (package
6643 (name "ruby-pg")
6644 (version "1.2.3")
6645 (source
6646 (origin
6647 (method url-fetch)
6648 (uri (rubygems-uri "pg" version))
6649 (sha256
6650 (base32
6651 "13mfrysrdrh8cka1d96zm0lnfs59i5x2g6ps49r2kz5p3q81xrzj"))))
6652 (build-system ruby-build-system)
6653 (arguments
6654 '(#:test-target "spec"))
6655 (native-inputs
6656 `(("ruby-rake-compiler" ,ruby-rake-compiler)
6657 ("ruby-hoe" ,ruby-hoe)
6658 ("ruby-rspec" ,ruby-rspec)))
6659 (inputs
6660 `(("postgresql" ,postgresql)))
6661 (synopsis "Ruby interface to PostgreSQL")
6662 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
6663 with PostgreSQL 9.0 and later.")
6664 (home-page "https://bitbucket.org/ged/ruby-pg")
6665 (license license:ruby)))
6666
6667 (define-public ruby-byebug
6668 (package
6669 (name "ruby-byebug")
6670 (version "9.0.6")
6671 (source
6672 (origin
6673 (method url-fetch)
6674 (uri (rubygems-uri "byebug" version))
6675 (sha256
6676 (base32
6677 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
6678 (build-system ruby-build-system)
6679 (arguments
6680 '(#:tests? #f)) ; no tests
6681 (synopsis "Debugger for Ruby 2")
6682 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
6683 TracePoint C API for execution control and the Debug Inspector C API for call
6684 stack navigation. The core component provides support that front-ends can
6685 build on. It provides breakpoint handling and bindings for stack frames among
6686 other things and it comes with a command line interface.")
6687 (home-page "https://github.com/deivid-rodriguez/byebug")
6688 (license license:bsd-2)))
6689
6690 ;;; TODO: Make it the default byebug in core-updates.
6691 (define-public ruby-byebug-11
6692 (package
6693 (inherit ruby-byebug)
6694 (name "ruby-byebug")
6695 (version "11.1.3")
6696 (source
6697 (origin
6698 (method git-fetch)
6699 (uri (git-reference
6700 (url "https://github.com/deivid-rodriguez/byebug")
6701 (commit (string-append "v" version))))
6702 (file-name (git-file-name name version))
6703 (sha256
6704 (base32
6705 "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij"))
6706 (modules '((guix build utils)))
6707 (snippet
6708 '(begin
6709 ;; Remove wrappers that try to setup a bundle environment.
6710 (with-directory-excursion "bin"
6711 (for-each delete-file '("bundle" "rake" "rubocop"))
6712 ;; ruby-minitest doesn't come with a launcher, so fix the one
6713 ;; provided.
6714 (substitute* "minitest"
6715 (("load File\\.expand_path\\(\"bundle\".*") "")
6716 (("require \"bundler/setup\".*") "")))
6717 #t))))
6718 (arguments
6719 `(#:tests? #t
6720 #:phases
6721 (modify-phases %standard-phases
6722 (add-after 'unpack 'skip-tmp-path-sensitive-test
6723 (lambda _
6724 (substitute* "test/commands/where_test.rb"
6725 (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
6726 "unless true\n"))
6727 #t))
6728 (add-before 'build 'compile
6729 (lambda _
6730 (invoke "rake" "compile")))
6731 (add-before 'check 'set-home
6732 (lambda _
6733 (setenv "HOME" (getcwd))
6734 #t)))))
6735 (native-inputs
6736 `(("bundler" ,bundler)
6737 ("ruby-chandler" ,ruby-chandler)
6738 ("ruby-minitest" ,ruby-minitest)
6739 ("ruby-pry" ,ruby-pry)
6740 ("ruby-rake-compiler" ,ruby-rake-compiler)
6741 ("ruby-rubocop" ,ruby-rubocop)
6742 ("ruby-yard" ,ruby-yard)))))
6743
6744 (define-public ruby-netrc
6745 (package
6746 (name "ruby-netrc")
6747 (version "0.11.0")
6748 (source (origin
6749 (method url-fetch)
6750 (uri (rubygems-uri "netrc" version))
6751 (sha256
6752 (base32
6753 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
6754 (build-system ruby-build-system)
6755 (arguments
6756 `(#:phases
6757 (modify-phases %standard-phases
6758 (replace 'check
6759 ;; There is no Rakefile and minitest can only run one file at once,
6760 ;; so we have to iterate over all test files.
6761 (lambda _
6762 (for-each (lambda (file)
6763 (invoke "ruby" "-Itest" file))
6764 (find-files "./test" "test_.*\\.rb"))
6765 #t)))))
6766 (native-inputs
6767 `(("ruby-minitest" ,ruby-minitest)))
6768 (synopsis "Library to read and update netrc files")
6769 (description
6770 "This library can read and update netrc files, preserving formatting
6771 including comments and whitespace.")
6772 (home-page "https://github.com/geemus/netrc")
6773 (license license:expat)))
6774
6775 (define-public ruby-unf-ext
6776 (package
6777 (name "ruby-unf-ext")
6778 (version "0.0.7.6")
6779 (source (origin
6780 (method url-fetch)
6781 (uri (rubygems-uri "unf_ext" version))
6782 (sha256
6783 (base32
6784 "1ll6w64ibh81qwvjx19h8nj7mngxgffg7aigjx11klvf5k2g4nxf"))))
6785 (build-system ruby-build-system)
6786 (arguments
6787 `(#:phases
6788 (modify-phases %standard-phases
6789 (add-after 'build 'build-ext
6790 (lambda _ (invoke "rake" "compile:unf_ext")))
6791 (add-before 'check 'lose-rake-compiler-dock-dependency
6792 (lambda _
6793 ;; rake-compiler-dock is listed in the gemspec, but only
6794 ;; required when cross-compiling.
6795 (substitute* "unf_ext.gemspec"
6796 ((".*rake-compiler-dock.*") ""))
6797 #t)))))
6798 (native-inputs
6799 `(("bundler" ,bundler)
6800 ("ruby-rake-compiler" ,ruby-rake-compiler)
6801 ("ruby-test-unit" ,ruby-test-unit)))
6802 (synopsis "Unicode normalization form support library")
6803 (description
6804 "This package provides unicode normalization form support for Ruby.")
6805 (home-page "https://github.com/knu/ruby-unf_ext")
6806 (license license:expat)))
6807
6808 (define-public ruby-tdiff
6809 ;; Use a newer than released snapshot so that rspec-2 is not required.
6810 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
6811 (package
6812 (name "ruby-tdiff")
6813 (version (string-append "0.3.3-1." (string-take commit 8)))
6814 (source (origin
6815 (method git-fetch)
6816 (uri (git-reference
6817 (url "https://github.com/postmodern/tdiff")
6818 (commit commit)))
6819 (file-name (string-append name "-" version "-checkout"))
6820 (sha256
6821 (base32
6822 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
6823 (build-system ruby-build-system)
6824 (native-inputs
6825 `(("ruby-rspec" ,ruby-rspec)
6826 ("ruby-yard" ,ruby-yard)
6827 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
6828 (synopsis "Calculate the differences between two tree-like structures")
6829 (description
6830 "This library provides functions to calculate the differences between two
6831 tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
6832 (home-page "https://github.com/postmodern/tdiff")
6833 (license license:expat))))
6834
6835 (define-public ruby-nokogiri-diff
6836 ;; Use a newer than released snapshot so that rspec-2 is not required.
6837 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
6838 (package
6839 (name "ruby-nokogiri-diff")
6840 (version (string-append "0.2.0-1." (string-take commit 8)))
6841 (source (origin
6842 (method git-fetch)
6843 (uri (git-reference
6844 (url "https://github.com/postmodern/nokogiri-diff")
6845 (commit commit)))
6846 (file-name (string-append name "-" version "-checkout"))
6847 (sha256
6848 (base32
6849 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
6850 (build-system ruby-build-system)
6851 (propagated-inputs
6852 `(("ruby-tdiff" ,ruby-tdiff)
6853 ("ruby-nokogiri" ,ruby-nokogiri)))
6854 (native-inputs
6855 `(("ruby-rspec" ,ruby-rspec)
6856 ("ruby-yard" ,ruby-yard)
6857 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
6858 (synopsis "Calculate the differences between two XML/HTML documents")
6859 (description
6860 "@code{Nokogiri::Diff} adds the ability to calculate the
6861 differences (added or removed nodes) between two XML/HTML documents.")
6862 (home-page "https://github.com/postmodern/nokogiri-diff")
6863 (license license:expat))))
6864
6865 (define-public ruby-racc
6866 (package
6867 (name "ruby-racc")
6868 (version "1.4.14")
6869 (source
6870 (origin
6871 (method url-fetch)
6872 (uri (rubygems-uri "racc" version))
6873 (sha256
6874 (base32
6875 "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
6876 (build-system ruby-build-system)
6877 (native-inputs
6878 `(("ruby-hoe" ,ruby-hoe)
6879 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6880 (synopsis "LALR(1) parser generator for Ruby")
6881 (description
6882 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
6883 generates Ruby program.")
6884 (home-page "http://i.loveruby.net/en/projects/racc/")
6885 (license (list
6886 ;; Generally licensed under the LGPL2.1, and some files also
6887 ;; available under the same license as Ruby.
6888 license:lgpl2.1
6889 license:ruby))))
6890
6891 (define-public ruby-rack
6892 (package
6893 (name "ruby-rack")
6894 (version "2.2.3")
6895 (source
6896 (origin
6897 (method git-fetch)
6898 ;; Download from GitHub so that the snippet can be applied and tests run.
6899 (uri (git-reference
6900 (url "https://github.com/rack/rack")
6901 (commit version)))
6902 (file-name (git-file-name name version))
6903 (sha256
6904 (base32
6905 "1qrm5z5v586738bnkr9188dvz0s25nryw6sgvx18jjlkizayw1g4"))
6906 ;; Ignore test which fails inside the build environment but works
6907 ;; outside.
6908 (modules '((guix build utils)))
6909 (snippet
6910 '(begin (substitute* "test/spec_files.rb"
6911 (("res.body.must_equal expected_body") ""))
6912 #t))))
6913 (build-system ruby-build-system)
6914 (arguments
6915 '(#:phases
6916 (modify-phases %standard-phases
6917 (add-before 'check 'fix-tests
6918 (lambda _
6919 ;; A few of the tests use the length of a file on disk for
6920 ;; Content-Length and Content-Range headers. However, this file
6921 ;; has a shebang in it which an earlier phase patches, growing
6922 ;; the file size from 193 to 239 bytes when the store prefix is
6923 ;; "/gnu/store".
6924 (let ((size-diff (- (string-length (which "ruby"))
6925 (string-length "/usr/bin/env ruby"))))
6926 (substitute* '("test/spec_files.rb")
6927 (("208" bytes)
6928 (number->string (+ (string->number bytes) size-diff)))
6929 (("bytes(.)22-33" all delimiter)
6930 (string-append "bytes"
6931 delimiter
6932 (number->string (+ 22 size-diff))
6933 "-"
6934 (number->string (+ 33 size-diff))))))
6935 #t)))))
6936 (native-inputs
6937 `(("ruby-minitest" ,ruby-minitest)
6938 ("ruby-minitest-global-expectations" ,ruby-minitest-global-expectations)))
6939 (synopsis "Unified web application interface for Ruby")
6940 (description "Rack provides a minimal, modular and adaptable interface for
6941 developing web applications in Ruby. By wrapping HTTP requests and responses,
6942 it unifies the API for web servers, web frameworks, and software in between
6943 into a single method call.")
6944 (home-page "https://rack.github.io/")
6945 (license license:expat)))
6946
6947 (define-public ruby-rack-test
6948 (package
6949 (name "ruby-rack-test")
6950 (version "0.8.3")
6951 (source
6952 (origin
6953 (method url-fetch)
6954 (uri (rubygems-uri "rack-test" version))
6955 (sha256
6956 (base32
6957 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
6958 (build-system ruby-build-system)
6959 (arguments
6960 ;; Disable tests because of circular dependencies: requires sinatra,
6961 ;; which requires rack-protection, which requires rack-test. Instead
6962 ;; simply require the library.
6963 `(#:phases
6964 (modify-phases %standard-phases
6965 (replace 'check
6966 (lambda _
6967 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
6968 (propagated-inputs
6969 `(("ruby-rack" ,ruby-rack)))
6970 (synopsis "Testing API for Rack applications")
6971 (description
6972 "Rack::Test is a small, simple testing API for Rack applications. It can
6973 be used on its own or as a reusable starting point for Web frameworks and
6974 testing libraries to build on.")
6975 (home-page "https://github.com/rack-test/rack-test")
6976 (license license:expat)))
6977
6978 (define-public ruby-rack-protection
6979 (package
6980 (name "ruby-rack-protection")
6981 (version "2.0.8.1")
6982 (source
6983 (origin
6984 (method url-fetch)
6985 (uri (rubygems-uri "rack-protection" version))
6986 (sha256
6987 (base32
6988 "1zyj97bfr1shfgwk4ddmdbw0mdkm4qdyh9s1hl0k7accf3kxx1yi"))))
6989 (build-system ruby-build-system)
6990 (arguments
6991 '(;; Tests missing from the gem.
6992 #:tests? #f))
6993 (propagated-inputs
6994 `(("ruby-rack" ,ruby-rack)))
6995 (native-inputs
6996 `(("bundler" ,bundler)
6997 ("ruby-rspec" ,ruby-rspec-2)
6998 ("ruby-rack-test" ,ruby-rack-test)))
6999 (synopsis "Rack middleware that protects against typical web attacks")
7000 (description "Rack middleware that can be used to protect against typical
7001 web attacks. It can protect all Rack apps, including Rails. For instance, it
7002 protects against cross site request forgery, cross site scripting,
7003 clickjacking, directory traversal, session hijacking and IP spoofing.")
7004 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
7005 (license license:expat)))
7006
7007 (define-public ruby-rainbow
7008 (package
7009 (name "ruby-rainbow")
7010 (version "3.0.0")
7011 (source
7012 (origin
7013 (method url-fetch)
7014 (uri (rubygems-uri "rainbow" version))
7015 (sha256
7016 (base32
7017 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
7018 (build-system ruby-build-system)
7019 (arguments
7020 '(#:phases
7021 (modify-phases %standard-phases
7022 ;; Run rspec directly, to avoid requiring Rubocop which is used from
7023 ;; the Rakefile.
7024 (replace 'check
7025 (lambda* (#:key tests? #:allow-other-keys)
7026 (when tests?
7027 (invoke "rspec"))
7028 #t)))))
7029 (native-inputs
7030 `(("bundler" ,bundler)
7031 ("ruby-rspec" ,ruby-rspec)))
7032 (synopsis "Colorize printed text on ANSI terminals")
7033 (description
7034 "@code{rainbow} provides a string presenter object to colorize strings by
7035 wrapping them in ANSI escape codes.")
7036 (home-page "https://github.com/sickill/rainbow")
7037 (license license:expat)))
7038
7039 (define-public ruby-rr
7040 (package
7041 (name "ruby-rr")
7042 (version "1.2.1")
7043 (source
7044 (origin
7045 (method url-fetch)
7046 (uri (rubygems-uri "rr" version))
7047 (sha256
7048 (base32
7049 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
7050 (build-system ruby-build-system)
7051 (arguments
7052 '(#:tests? #f)) ; test files not included
7053 (native-inputs
7054 `(("bundler" ,bundler)
7055 ("ruby-rspec" ,ruby-rspec)))
7056 (synopsis "Ruby test double framework")
7057 (description
7058 "RR is a test double framework that features a rich selection of double
7059 techniques and a terse syntax.")
7060 (home-page "https://rr.github.io/rr/")
7061 (license license:expat)))
7062
7063 (define-public ruby-rest-client
7064 (package
7065 (name "ruby-rest-client")
7066 (version "2.0.2")
7067 (source
7068 (origin
7069 (method url-fetch)
7070 (uri (rubygems-uri "rest-client" version))
7071 (sha256
7072 (base32
7073 "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
7074 (build-system ruby-build-system)
7075 (arguments
7076 '(#:phases
7077 (modify-phases %standard-phases
7078 (add-before 'check 'remove-unnecessary-development-dependencies
7079 (lambda _
7080 (substitute* "rest-client.gemspec"
7081 ;; Remove rubocop as it's unused. Rubocop also indirectly
7082 ;; depends on this package through ruby-parser and ruby-ast so
7083 ;; this avoids a dependency loop.
7084 ((".*rubocop.*") "\n")
7085 ;; Remove pry as it's unused, it's a debugging tool
7086 ((".*pry.*") "\n")
7087 ;; Remove an unnecessarily strict rdoc dependency
7088 ((".*rdoc.*") "\n"))
7089 #t))
7090 (add-before 'check 'delete-network-dependent-tests
7091 (lambda _
7092 (delete-file "spec/integration/request_spec.rb")
7093 (delete-file "spec/integration/httpbin_spec.rb")
7094 #t)))))
7095 (propagated-inputs
7096 `(("ruby-http-cookie" ,ruby-http-cookie)
7097 ("ruby-mime-types" ,ruby-mime-types)
7098 ("ruby-netrc" ,ruby-netrc)))
7099 (native-inputs
7100 `(("bundler" ,bundler)
7101 ("ruby-webmock" ,ruby-webmock-2)
7102 ("ruby-rspec" ,ruby-rspec)))
7103 (synopsis "Simple HTTP and REST client for Ruby")
7104 (description
7105 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
7106 inspired by the Sinatra microframework style of specifying actions:
7107 @code{get}, @code{put}, @code{post}, @code{delete}.")
7108 (home-page "https://github.com/rest-client/rest-client")
7109 (license license:expat)))
7110
7111 (define-public ruby-rubocop-ast
7112 (package
7113 (name "ruby-rubocop-ast")
7114 (version "1.4.1")
7115 (source
7116 (origin
7117 (method git-fetch) ;no test suite in distributed gem
7118 (uri (git-reference
7119 (url "https://github.com/rubocop-hq/rubocop-ast")
7120 (commit (string-append "v" version))))
7121 (file-name (git-file-name name version))
7122 (sha256
7123 (base32
7124 "1x2m7k4bn4zvvwmj7imzmv0dav6xnrbcvssad1m5lkprx7h5lzkq"))))
7125 (build-system ruby-build-system)
7126 (arguments
7127 `(#:test-target "spec"
7128 #:phases (modify-phases %standard-phases
7129 (add-before 'build 'generate-lexer
7130 (lambda _
7131 (setenv "RUBOCOP_VERSION" "none")
7132 (invoke "rake" "generate")))
7133 (replace 'replace-git-ls-files
7134 (lambda _
7135 (substitute* "rubocop-ast.gemspec"
7136 (("`git ls-files(.*)`" _ files)
7137 (format #f "`find ~a -type f| sort`" files)))
7138 #t)))))
7139 (native-inputs
7140 `(("ruby-bump" ,ruby-bump)
7141 ("ruby-oedipus-lex" ,ruby-oedipus-lex)
7142 ("ruby-pry" ,ruby-pry)
7143 ("ruby-racc" ,ruby-racc)
7144 ("ruby-rake" ,ruby-rake)
7145 ("ruby-rspec" ,ruby-rspec)
7146 ("ruby-simplecov" ,ruby-simplecov)))
7147 (propagated-inputs
7148 `(("ruby-parser" ,ruby-parser)))
7149 (synopsis "RuboCop's AST extensions and NodePattern functionality")
7150 (description "Rubocop::AST extends @code{ruby-parser} with classes used
7151 by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular:
7152 @itemize
7153 @item @code{RuboCop::AST::Node}
7154 @item @code{RuboCop::AST::NodePattern}
7155 @end itemize")
7156 (home-page "https://rubocop.org/")
7157 (license license:expat)))
7158
7159 (define-public ruby-rexml
7160 (package
7161 (name "ruby-rexml")
7162 (version "3.2.4")
7163 (source
7164 (origin
7165 (method git-fetch) ;no tests in distributed gem
7166 (uri (git-reference
7167 (url "https://github.com/ruby/rexml")
7168 (commit (string-append "v" version))))
7169 (file-name (git-file-name name version))
7170 (sha256
7171 (base32
7172 "0rhjjbkaq2f2cs8hyr2i4yjqpcyl8m0wmr2cypa401m3fvz4221i"))))
7173 (build-system ruby-build-system)
7174 (synopsis "XML toolkit for Ruby")
7175 (description "Inspired by Electric XML library for Java, REXML aims to be
7176 easy-to-use API, small and fast. It supports both tree and stream document
7177 parsing.")
7178 (home-page "https://github.com/ruby/rexml")
7179 (license license:bsd-2)))
7180
7181 (define-public ruby-character-set
7182 (package
7183 (name "ruby-character-set")
7184 (version "1.4.0")
7185 (source
7186 (origin
7187 (method url-fetch)
7188 (uri (rubygems-uri "character_set" version))
7189 (sha256
7190 (base32
7191 "0affq9n77vwy897ri2zhmfinfagf37hcwwimrccy1bcxan9mj3h3"))))
7192 (build-system ruby-build-system)
7193 (arguments '(#:tests? #f)) ;avoid a cycle with ruby-regexp-parser
7194 (synopsis "Ruby library to manipulate Unicode")
7195 (description "CharacterSet is a C-extended Ruby library to work with sets
7196 of Unicode code points. It can read and write these sets in various formats
7197 and implements the @code{stdlib} @code{Set} interface for them. It also
7198 offers an alternate paradigm of @code{String} processing which grants much
7199 better performance than @code{Regexp} and @code{String} methods from the
7200 @code{stdlib} where applicable. Many parts can be used independently, e.g.:
7201 @itemize
7202 @item @code{CharacterSet::Character}
7203 @item @code{CharacterSet::Parser}
7204 @item @code{CharacterSet::Writer}
7205 @item @code{RangeCompressor}
7206 @end itemize")
7207 (home-page "https://github.com/jaynetics/character_set")
7208 (license license:expat)))
7209
7210 (define-public ruby-range-compressor
7211 (package
7212 (name "ruby-range-compressor")
7213 (version "1.0.0")
7214 (source
7215 (origin
7216 (method git-fetch)
7217 (uri (git-reference
7218 (url "https://github.com/janosch-x/range_compressor")
7219 (commit (string-append "v" version))))
7220 (file-name (git-file-name name version))
7221 (sha256
7222 (base32
7223 "0y8slri2msyyg2szgwgriqd6qw9hkxycssdrcl5lk2dbcq5zvn54"))))
7224 (build-system ruby-build-system)
7225 (arguments
7226 `(#:test-target "spec"
7227 #:phases (modify-phases %standard-phases
7228 (add-after 'extract-gemspec 'strip-version-requirements
7229 (lambda _
7230 (substitute* "range_compressor.gemspec"
7231 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
7232 (string-append stripped "\n")))
7233 #t)))))
7234 (native-inputs
7235 `(("ruby-rspec" ,ruby-rspec)))
7236 (synopsis "Simple arrays of objects to arrays of ranges compressor")
7237 (description "RangeCompresses is a tiny library that allows compressing
7238 arrays of objects into arrays of ranges. For example, it can turn the
7239 following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.")
7240 (home-page "https://github.com/janosch-x/range_compressor")
7241 (license license:expat)))
7242
7243 (define-public ruby-regexp-property-values
7244 (package
7245 (name "ruby-regexp-property-values")
7246 (version "1.0.0")
7247 (source
7248 (origin
7249 (method git-fetch)
7250 (uri (git-reference ;no test suite in distributed gem
7251 (url "https://github.com/jaynetics/regexp_property_values")
7252 (commit (string-append "v" version))))
7253 (file-name (git-file-name name version))
7254 (sha256
7255 (base32
7256 "0l3fjmscg1wxn7kc6bl022cc6k5d91pwb7daq1b5w36kvsx52w1j"))))
7257 (build-system ruby-build-system)
7258 (arguments
7259 '(#:test-target "default"))
7260 (native-inputs
7261 `(("ruby-character-set" ,ruby-character-set)
7262 ("ruby-rake-compiler" ,ruby-rake-compiler)
7263 ("ruby-range-compressor" ,ruby-range-compressor)
7264 ("ruby-rspec" ,ruby-rspec)))
7265 (synopsis "Inspect Ruby's regex engine property values")
7266 (description "This small library lets you see which property values are
7267 supported by the regular expression engine of the Ruby version you are running
7268 and can directly read out their code point ranges. In other words, it
7269 determines all supported values for @code{\\p{value}} expressions and what
7270 they match.")
7271 (home-page "https://github.com/jaynetics/regexp_property_values")
7272 (license license:expat)))
7273
7274 (define-public ruby-regexp-parser
7275 (package
7276 (name "ruby-regexp-parser")
7277 (version "2.0.0")
7278 (source
7279 (origin
7280 (method git-fetch) ;bin/test missing from gem
7281 (uri (git-reference
7282 (url "https://github.com/ammar/regexp_parser")
7283 (commit (string-append "v" version))))
7284 (file-name (git-file-name name version))
7285 (sha256
7286 (base32
7287 "09ddxdwlml30q6j4rqf06bbjj1mwx00rs0bksnyblhv85anrqz3k"))))
7288 (build-system ruby-build-system)
7289 (arguments
7290 '(#:test-target "default"
7291 #:phases (modify-phases %standard-phases
7292 (add-before 'build 'compile-scanner.rb
7293 (lambda _
7294 (invoke "rake" "build")
7295 ;; XXX: This is needed otherwise the install
7296 ;; phase fails to delete the installed cached
7297 ;; gem file.
7298 (delete-file-recursively "pkg")
7299 #t)))))
7300 (native-inputs
7301 `(("ragel" ,ragel)
7302 ("ruby-regexp-property-values" ,ruby-regexp-property-values)
7303 ("ruby-rspec" ,ruby-rspec)))
7304 (synopsis "A regular expression parser library for Ruby ")
7305 (description "A Ruby gem for tokenizing, parsing, and transforming regular
7306 expressions. It comprises the following components:
7307 @itemize
7308 @item A scanner/tokenizer based on Ragel,
7309 @item A lexer that produces a stream of token objects,
7310 @item A parser that produces a tree of Expression objects.
7311 @end itemize")
7312 (home-page "https://github.com/ammar/regexp_parser")
7313 (license license:expat)))
7314
7315 (define-public ruby-test-queue
7316 (package
7317 (name "ruby-test-queue")
7318 (version "0.4.2")
7319 (source
7320 (origin
7321 (method url-fetch)
7322 (uri (rubygems-uri "test-queue" version))
7323 (sha256
7324 (base32
7325 "0hvm3n1qrqxqilhqk4rjivw3gcrd08zz1i6am9qzg1ppjxv6f36f"))))
7326 (build-system ruby-build-system)
7327 (arguments
7328 '(#:phases
7329 (modify-phases %standard-phases
7330 (replace 'check
7331 (lambda* (#:key tests? #:allow-other-keys)
7332 (when tests?
7333 (invoke "rspec"))
7334 #t)))))
7335 (native-inputs
7336 `(("ruby-rspec" ,ruby-rspec)))
7337 (synopsis "Minitest/RSpec parallel test runner for CI environments")
7338 (description "The test-queue module is a parallel test runner,
7339 built using a centralized queue to ensure optimal distribution of
7340 tests between workers. It is specifically optimized for Continuous
7341 Integration (CI) environments: build statistics from each run are
7342 stored locally and used to sort the queue at the beginning of the next
7343 run.")
7344 (home-page "https://github.com/tmm1/test-queue")
7345 (license license:expat)))
7346
7347 (define-public ruby-rubocop
7348 (package
7349 (name "ruby-rubocop")
7350 (version "1.10.0")
7351 (source
7352 (origin
7353 (method git-fetch) ;no tests in distributed gem
7354 (uri (git-reference
7355 (url "https://github.com/rubocop-hq/rubocop")
7356 (commit (string-append "v" version))))
7357 (file-name (git-file-name name version))
7358 (sha256
7359 (base32
7360 "0wjw9vpzr4f3nf1zf010bag71w4hdi0haybdn7r5rlmw45pmim29"))))
7361 (build-system ruby-build-system)
7362 (arguments
7363 '(#:test-target "default"
7364 #:phases
7365 (modify-phases %standard-phases
7366 (add-before 'check 'set-home
7367 (lambda _
7368 (setenv "HOME" (getcwd))
7369 #t))
7370 ;; Rubocop depends on itself for tests, directly and indirectly. By
7371 ;; regenerating the TODO list we test rubocop against itself and
7372 ;; forgo adjusting the test suite to our environment each release.
7373 (replace 'check
7374 (lambda* (#:key tests? #:allow-other-keys)
7375 (when tests?
7376 (make-file-writable ".rubocop_todo.yml")
7377 (invoke "./exe/rubocop" "--auto-gen-config"))
7378 #t))
7379 (add-before 'check 'make-adoc-files-writable
7380 (lambda _
7381 (let ((adoc-files (find-files "docs/modules/ROOT/pages"
7382 "\\.adoc$")))
7383 (for-each make-file-writable adoc-files))
7384 #t)))))
7385 (native-inputs
7386 `(("ruby-bump" ,ruby-bump)
7387 ("ruby-memory-profiler" ,ruby-memory-profiler)
7388 ("ruby-pry" ,ruby-pry)
7389 ("ruby-rake" ,ruby-rake)
7390 ("ruby-rspec" ,ruby-rspec)
7391 ("ruby-rubocop-minimal" ,ruby-rubocop-minimal)
7392 ("ruby-rubocop-performance-minimal" ,ruby-rubocop-performance-minimal)
7393 ("ruby-rubocop-rspec-minimal" ,ruby-rubocop-rspec-minimal)
7394 ("ruby-simplecov" ,ruby-simplecov)
7395 ("ruby-stackprof" ,ruby-stackprof)
7396 ("ruby-test-queue" ,ruby-test-queue)
7397 ("ruby-webmock" ,ruby-webmock)
7398 ("ruby-yard" ,ruby-yard)))
7399 (propagated-inputs
7400 `(("ruby-parallel" ,ruby-parallel)
7401 ("ruby-parser" ,ruby-parser)
7402 ("ruby-rainbow" ,ruby-rainbow)
7403 ("ruby-regexp-parser" ,ruby-regexp-parser)
7404 ("ruby-rexml" ,ruby-rexml)
7405 ("ruby-rubocop-ast" ,ruby-rubocop-ast)
7406 ("ruby-progressbar" ,ruby-progressbar)
7407 ("ruby-unicode-display-width" ,ruby-unicode-display-width)))
7408 (synopsis "Ruby code style checking tool")
7409 (description
7410 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
7411 the community-driven Ruby Style Guide.")
7412 (home-page "https://github.com/rubocop-hq/rubocop")
7413 (license license:expat)))
7414
7415 (define-public ruby-rubocop-minimal
7416 (hidden-package
7417 (package
7418 (inherit ruby-rubocop)
7419 (arguments
7420 (substitute-keyword-arguments (package-arguments ruby-rubocop)
7421 ((#:tests? _ #f) #f)))
7422 (propagated-inputs '())
7423 (native-inputs '()))))
7424
7425 (define-public ruby-contest
7426 (package
7427 (name "ruby-contest")
7428 (version "0.1.3")
7429 (source
7430 (origin
7431 (method url-fetch)
7432 (uri (rubygems-uri "contest" version))
7433 (sha256
7434 (base32
7435 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
7436 (build-system ruby-build-system)
7437 (synopsis "Write declarative tests using nested contexts")
7438 (description
7439 "Contest allows writing declarative @code{Test::Unit} tests using nested
7440 contexts without performance penalties.")
7441 (home-page "https://github.com/citrusbyte/contest")
7442 (license license:expat)))
7443
7444 (define-public ruby-creole
7445 (package
7446 (name "ruby-creole")
7447 (version "0.5.0")
7448 (source
7449 (origin
7450 (method url-fetch)
7451 (uri (rubygems-uri "creole" version))
7452 (sha256
7453 (base32
7454 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
7455 (build-system ruby-build-system)
7456 (native-inputs
7457 `(("ruby-bacon" ,ruby-bacon)))
7458 (synopsis "Creole markup language converter")
7459 (description
7460 "Creole is a lightweight markup language and this library for converting
7461 creole to @code{HTML}.")
7462 (home-page "https://github.com/minad/creole")
7463 (license license:ruby)))
7464
7465 (define-public ruby-docile
7466 (package
7467 (name "ruby-docile")
7468 (version "1.1.5")
7469 (source
7470 (origin
7471 (method url-fetch)
7472 (uri (rubygems-uri "docile" version))
7473 (sha256
7474 (base32
7475 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
7476 (build-system ruby-build-system)
7477 (arguments
7478 '(#:tests? #f)) ; needs github-markup, among others
7479 (synopsis "Ruby EDSL helper library")
7480 (description "Docile is a Ruby library that provides an interface for
7481 creating embedded domain specific languages (EDSLs) that manipulate existing
7482 Ruby classes.")
7483 (home-page "https://ms-ati.github.io/docile/")
7484 (license license:expat)))
7485
7486 (define-public ruby-middleware
7487 (package
7488 (name "ruby-middleware")
7489 (version "0.1.0")
7490 (source
7491 (origin
7492 (method url-fetch)
7493 (uri (rubygems-uri "middleware" version))
7494 (sha256
7495 (base32
7496 "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl"))))
7497 (build-system ruby-build-system)
7498 (arguments '(#:tests? #f)) ;no test suite
7499 (synopsis "Implementation of a middleware abstraction for Ruby")
7500 (description "Middleware is a generalized implementation of a middleware
7501 abstraction for Ruby.")
7502 (home-page "https://github.com/mitchellh/middleware")
7503 (license license:expat)))
7504
7505 (define-public ruby-benchmark-ips
7506 (package
7507 (name "ruby-benchmark-ips")
7508 (version "2.8.2")
7509 (source
7510 (origin
7511 (method url-fetch)
7512 (uri (rubygems-uri "benchmark-ips" version))
7513 (sha256
7514 (base32
7515 "1n9397j7kh4vvikfann1467qgksc679imlr50hax3lk1q3af8kdw"))))
7516 (build-system ruby-build-system)
7517 (native-inputs
7518 `(("ruby-hoe" ,ruby-hoe)))
7519 (synopsis "Iterations per second enhancement for the Ruby Benchmark module")
7520 (description "Benchmark-ips enhances the Ruby Benchmark module with the
7521 iterations per second count. For short snippets of code, it can automatically
7522 figure out how many times to run the code to get interesting data.")
7523 (home-page "https://github.com/evanphx/benchmark-ips")
7524 (license license:expat)))
7525
7526 (define-public ruby-ffi-rzmq-core
7527 (package
7528 (name "ruby-ffi-rzmq-core")
7529 (version "1.0.7")
7530 (source
7531 (origin
7532 (method url-fetch)
7533 (uri (rubygems-uri "ffi-rzmq-core" version))
7534 (sha256
7535 (base32
7536 "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5"))))
7537 (build-system ruby-build-system)
7538 (arguments
7539 `(#:phases
7540 (modify-phases %standard-phases
7541 (add-after 'unpack 'patch-libzmq-search-path
7542 (lambda* (#:key inputs #:allow-other-keys)
7543 (let ((zeromq (assoc-ref inputs "zeromq")))
7544 (substitute* "lib/ffi-rzmq-core/libzmq.rb"
7545 (("/usr/local/lib")
7546 (string-append zeromq "/lib")))
7547 #t)))
7548 (replace 'check
7549 (lambda _
7550 (invoke "rspec"))))))
7551 (native-inputs
7552 `(("ruby-rspec" ,ruby-rspec)))
7553 (inputs
7554 `(("zeromq" ,zeromq)))
7555 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
7556 (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library")
7557 (description "This library only provides the FFI wrapper for the ZeroMQ
7558 networking library. It can be used to implement a Ruby API for the ZeroMQ
7559 library.")
7560 (home-page "https://github.com/chuckremes/ffi-rzmq-core")
7561 (license license:expat)))
7562
7563 (define-public ruby-ffi-rzmq
7564 (package
7565 (name "ruby-ffi-rzmq")
7566 (version "2.0.7")
7567 (source
7568 (origin
7569 (method url-fetch)
7570 (uri (rubygems-uri "ffi-rzmq" version))
7571 (sha256
7572 (base32
7573 "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg"))))
7574 (build-system ruby-build-system)
7575 (arguments '(#:tests? #t
7576 #:phases (modify-phases %standard-phases
7577 (replace 'check
7578 (lambda _
7579 (invoke "rspec"))))))
7580 (native-inputs
7581 `(("ruby-rspec" ,ruby-rspec)))
7582 (propagated-inputs
7583 `(("ruby-ffi-rzmq-core" ,ruby-ffi-rzmq-core)))
7584 (synopsis "High-level Ruby wrapper for the ZeroMQ networking library")
7585 (description "This library provides a high-level API that wraps the ZeroMQ
7586 networking library using the Ruby foreign function interface (FFI). It is a
7587 pure Ruby wrapper, hence is compatible with any Ruby runtime that has support
7588 for FFI.")
7589 (home-page "https://github.com/chuckremes/ffi-rzmq")
7590 (license license:expat)))
7591
7592 (define-public ruby-sawyer
7593 (package
7594 (name "ruby-sawyer")
7595 (version "0.8.2")
7596 (source
7597 (origin
7598 (method url-fetch)
7599 (uri (rubygems-uri "sawyer" version))
7600 (sha256
7601 (base32
7602 "0yrdchs3psh583rjapkv33mljdivggqn99wkydkjdckcjn43j3cz"))))
7603 (build-system ruby-build-system)
7604 (propagated-inputs
7605 `(("ruby-addressable" ,ruby-addressable)
7606 ("ruby-faraday" ,ruby-faraday)))
7607 (synopsis "Experimental hypermedia agent for Ruby")
7608 (description "Sawyer is an experimental hypermedia agent for Ruby built on
7609 top of Faraday.")
7610 (home-page "https://github.com/lostisland/sawyer")
7611 (license license:expat)))
7612
7613 (define-public ruby-octokit
7614 (package
7615 (name "ruby-octokit")
7616 (version "4.18.0")
7617 (source
7618 (origin
7619 (method url-fetch)
7620 (uri (rubygems-uri "octokit" version))
7621 (sha256
7622 (base32
7623 "0zvfr9njmj5svi39fcsi2b0g7pcxb0vamw9dlyas8bg814jlzhi6"))))
7624 (build-system ruby-build-system)
7625 (arguments '(#:tests? #f)) ;no test suite in the gem release
7626 (propagated-inputs
7627 `(("ruby-faraday" ,ruby-faraday)
7628 ("ruby-sawyer" ,ruby-sawyer)))
7629 (synopsis "Ruby toolkit for the GitHub API")
7630 (description "Octokit wraps the GitHub API in a flat API client that
7631 follows Ruby conventions and requires little knowledge of REST.")
7632 (home-page "https://github.com/octokit/octokit.rb")
7633 (license license:expat)))
7634
7635 (define-public ruby-chandler
7636 (package
7637 (name "ruby-chandler")
7638 (version "0.9.0")
7639 (source
7640 (origin
7641 (method url-fetch)
7642 (uri (rubygems-uri "chandler" version))
7643 (sha256
7644 (base32
7645 "1n8a4mr2jkcz5vaaps45g2rxa2pzy1wb7cylgw85xmmyyp14lnrr"))))
7646 (build-system ruby-build-system)
7647 (native-inputs
7648 `(("ruby-rubocop" ,ruby-rubocop)))
7649 (propagated-inputs
7650 `(("ruby-netrc" ,ruby-netrc)
7651 ("ruby-octokit" ,ruby-octokit)))
7652 (synopsis "Sync CHANGELOG entries to GitHub's release notes")
7653 (description "Chandler syncs a project's CHANGELOG file entries to
7654 GitHub's release notes to remove the need of manually entering release
7655 notes.")
7656 (home-page "https://github.com/mattbrictson/chandler")
7657 (license license:expat)))
7658
7659 (define-public ruby-pry-byebug
7660 (package
7661 (name "ruby-pry-byebug")
7662 (version "3.9.0")
7663 (source
7664 (origin
7665 (method git-fetch)
7666 (uri (git-reference
7667 (url "https://github.com/deivid-rodriguez/pry-byebug")
7668 (commit (string-append "v" version))))
7669 (file-name (git-file-name name version))
7670 (sha256
7671 (base32
7672 "1kchrwccai92068p50zyd6mh524ywqnm0jw5g3lks7iwmf0xkmgc"))))
7673 (build-system ruby-build-system)
7674 (arguments
7675 `(#:phases (modify-phases %standard-phases
7676 (add-before 'check 'set-home
7677 (lambda _
7678 (setenv "HOME" (getcwd))
7679 #t)))))
7680 (native-inputs
7681 `(("ruby-chandler" ,ruby-chandler)
7682 ("ruby-rubocop" ,ruby-rubocop)
7683 ("ruby-simplecov" ,ruby-simplecov)))
7684 (propagated-inputs
7685 `(("ruby-byebug" ,ruby-byebug-11)
7686 ("ruby-pry" ,ruby-pry)))
7687 (synopsis "Step-by-step debugging and stack navigation in Pry")
7688 (description "This package adds step-by-step debugging and stack
7689 navigation capabilities to @code{pry}, using @code{byebug}.")
7690 (home-page "https://github.com/deivid-rodriguez/pry-byebug")
7691 (license license:expat)))
7692
7693 (define-public ruby-stackprof
7694 (package
7695 (name "ruby-stackprof")
7696 (version "0.2.16")
7697 (source
7698 (origin
7699 (method url-fetch)
7700 (uri (rubygems-uri "stackprof" version))
7701 (sha256
7702 (base32
7703 "147rb66p3n062vc433afqhkd99iazvkrqnghxgh871r62yhha93f"))))
7704 (build-system ruby-build-system)
7705 (native-inputs
7706 `(("ruby-mocha" ,ruby-mocha)
7707 ("ruby-rake-compiler" ,ruby-rake-compiler)))
7708 (synopsis "Sampling profiler for Ruby code")
7709 (description
7710 "@code{stackprof} is a fast sampling profiler for Ruby code, with cpu,
7711 wallclock and object allocation samplers.")
7712 (home-page "http://github.com/tmm1/stackprof")
7713 (license license:expat)))
7714
7715 (define-public ruby-binding-of-caller
7716 (package
7717 (name "ruby-binding-of-caller")
7718 (version "0.8.0")
7719 (source
7720 (origin
7721 (method url-fetch)
7722 (uri (rubygems-uri "binding_of_caller" version))
7723 (sha256
7724 (base32
7725 "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g"))))
7726 (build-system ruby-build-system)
7727 ;; Attempting to run the test suite fails with a rake deprecation error
7728 ;; (see: https://github.com/banister/binding_of_caller/issues/76).
7729 (arguments '(#:tests? #f))
7730 (propagated-inputs
7731 `(("ruby-debug-inspector" ,ruby-debug-inspector)))
7732 (synopsis "Retrieve the binding of a method's caller")
7733 (description "The @code{binding_of_caller} module provides the
7734 @code{Binding#of_caller} method. It allows accessing bindings from upper
7735 frames in the call stack and can evaluate code in that context.")
7736 (home-page "https://github.com/banister/binding_of_caller")
7737 (license license:expat)))
7738
7739 (define-public ruby-pry-stack-explorer
7740 (package
7741 (name "ruby-pry-stack-explorer")
7742 (version "0.5.1")
7743 (source
7744 (origin
7745 (method url-fetch)
7746 (uri (rubygems-uri "pry-stack_explorer" version))
7747 (sha256
7748 (base32
7749 "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0"))))
7750 (build-system ruby-build-system)
7751 (arguments '(#:tests? #f)) ;no test suite in gem release
7752 (propagated-inputs
7753 `(("ruby-binding-of-caller" ,ruby-binding-of-caller)
7754 ("ruby-pry" ,ruby-pry)))
7755 (synopsis "Call-stack navigation plugin for the Pry REPL")
7756 (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that
7757 add support to navigate the call-stack.")
7758 (home-page "https://github.com/pry/pry-stack_explorer")
7759 (license license:expat)))
7760
7761 (define-public ruby-varint
7762 (package
7763 (name "ruby-varint")
7764 (version "0.1.1")
7765 (source
7766 (origin
7767 (method url-fetch)
7768 (uri (rubygems-uri "varint" version))
7769 (sha256
7770 (base32
7771 "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac"))))
7772 (build-system ruby-build-system)
7773 (arguments '(#:tests? #f)) ;no test suite
7774 (synopsis "Variable length integers (varint) C extension for Ruby")
7775 (description "This package provides a small C extension to speed up
7776 variable length integers (varint) in Ruby Protocol Buffers.")
7777 (home-page "https://github.com/liquidm/varint")
7778 (license license:bsd-3)))
7779
7780 (define-public ruby-ruby-prof
7781 (package
7782 (name "ruby-ruby-prof")
7783 (version "1.4.1")
7784 (source
7785 (origin
7786 (method url-fetch)
7787 (uri (rubygems-uri "ruby-prof" version))
7788 (sha256
7789 (base32
7790 "12cd91m08ih0imfpy4k87618hd4mhyz291a6bx2hcskza4nf6d27"))))
7791 (build-system ruby-build-system)
7792 (arguments
7793 `(#:phases
7794 (modify-phases %standard-phases
7795 (add-after 'unpack 'patch-rakefile
7796 ;; This fixes the following error: "NameError: uninitialized
7797 ;; constant Bundler::GemHelper" (see:
7798 ;; https://github.com/ruby-prof/ruby-prof/issues/274).
7799 (lambda _
7800 (substitute* "Rakefile"
7801 ((".*require \"bundler/setup\".*" all)
7802 (string-append all " require 'bundler/gem_tasks'\n")))
7803 #t))
7804 ;; The LineNumbersTest test fails non-deterministically (see:
7805 ;; https://github.com/ruby-prof/ruby-prof/issues/276).
7806 (add-after 'extract-gemspec 'delete-flaky-test
7807 (lambda _
7808 (delete-file "test/line_number_test.rb")
7809 (substitute* "ruby-prof.gemspec"
7810 (("\"test/line_number_test\\.rb\"\\.freeze, ") ""))
7811 #t))
7812 (add-before 'check 'compile
7813 (lambda _
7814 (invoke "rake" "compile"))))))
7815 (native-inputs
7816 `(("bundler" ,bundler)
7817 ("ruby-minitest" ,ruby-minitest)
7818 ("ruby-rake-compiler" ,ruby-rake-compiler)
7819 ("ruby-rdoc" ,ruby-rdoc)))
7820 (synopsis "Fast code profiler for Ruby")
7821 (description "RubyProf is a fast code profiler for Ruby. Its features
7822 include:
7823 @table @asis
7824 @item Speed
7825 Being a C extension, it is many times faster than the standard Ruby profiler.
7826 @item Measurement Modes
7827 It can measure program wall time, process time, object allocations and memory
7828 usage.
7829 @item Reports
7830 A variety of text and cross-referenced HTML reports can be generated.
7831 @item Threads
7832 Profiling multiple threads simultaneously is supported.
7833 @end table")
7834 (home-page "https://github.com/ruby-prof/ruby-prof")
7835 (license license:bsd-2)))
7836
7837 (define-public ruby-memory-profiler
7838 (package
7839 (name "ruby-memory-profiler")
7840 (version "1.0.0")
7841 (source
7842 (origin
7843 (method git-fetch)
7844 (uri (git-reference
7845 (url "https://github.com/SamSaffron/memory_profiler")
7846 (commit (string-append "v" version))))
7847 (file-name (git-file-name name version))
7848 (sha256
7849 (base32
7850 "07yqv11q68xg2fqkrhs6ysngryk8b9zq6qzh24rgx9xqv6qfnj0w"))))
7851 (build-system ruby-build-system)
7852 (native-inputs
7853 `(("ruby-rake" ,ruby-rake)))
7854 (synopsis "Memory profiling routines for Ruby")
7855 (description
7856 "This package provides memory profiling routines for Ruby.")
7857 (home-page "https://github.com/SamSaffron/memory_profiler")
7858 (license license:expat)))
7859
7860 (define-public ruby-cucumber-messages
7861 (package
7862 (name "ruby-cucumber-messages")
7863 (version "12.2.0")
7864 (source (origin
7865 (method git-fetch)
7866 (uri (git-reference
7867 (url "https://github.com/cucumber/messages-ruby")
7868 (commit "12cd07eac87bce7843fd1bb0bf64bc4da09f097c")))
7869 (file-name (git-file-name name version))
7870 (sha256
7871 (base32
7872 "16wwqfpsq7crvxc3q08lphgyh12cl2d83p1c79p312q4jmy9cn5a"))))
7873 (build-system ruby-build-system)
7874 (arguments
7875 `(#:phases (modify-phases %standard-phases
7876 (add-after 'unpack 'patch-protobuf.rb
7877 (lambda _
7878 (substitute* "rake/protobuf.rb"
7879 (("load 'protobuf/tasks/compile.rake'")
7880 "require 'protobuf/tasks'"))
7881 #t))
7882 (add-before 'build 'compile
7883 (lambda _
7884 (substitute* "Makefile"
7885 (("bundle exec ") "")
7886 (("include default.mk.*" all)
7887 (string-append "#" all)))
7888 (invoke "make")))
7889 (replace 'check
7890 (lambda _
7891 (invoke "rspec"))))))
7892 (propagated-inputs
7893 `(("ruby-protobuf" ,ruby-protobuf-cucumber)))
7894 (native-inputs
7895 `(("ruby-rspec" ,ruby-rspec)))
7896 (home-page "https://github.com/cucumber/messages-ruby")
7897 (synopsis "Cucumber Messages for Ruby (Protocol Buffers)")
7898 (description "Cucumber Messages for Ruby is a library which allows
7899 serialization and deserialization of the protocol buffer messages used in
7900 Cucumber.")
7901 (license license:expat)))
7902
7903 (define-public ruby-gherkin
7904 (package
7905 (name "ruby-gherkin")
7906 (version "14.0.1")
7907 (source (origin
7908 (method git-fetch)
7909 (uri (git-reference
7910 (url "https://github.com/cucumber/gherkin-ruby")
7911 (commit (string-append "v" version))))
7912 (file-name (git-file-name name version))
7913 (sha256
7914 (base32
7915 "1dwa8632nc6kijv8p257jl64rsjmc0fimlaqvxlkdi2h9n1nympb"))))
7916 (build-system ruby-build-system)
7917 (native-inputs
7918 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
7919 ("ruby-rspec" ,ruby-rspec)))
7920 (arguments
7921 `(#:test-target "spec"))
7922 (synopsis "Gherkin parser for Ruby")
7923 (description "Gherkin is a parser and compiler for the Gherkin language.
7924 It is intended be used by all Cucumber implementations to parse
7925 @file{.feature} files.")
7926 (home-page "https://github.com/cucumber/gherkin-ruby")
7927 (license license:expat)))
7928
7929 (define-public ruby-gherkin-ruby
7930 (package
7931 (name "ruby-gherkin-ruby")
7932 (version "0.3.2")
7933 (home-page "https://github.com/codegram/gherkin-ruby")
7934 (source (origin
7935 (method url-fetch)
7936 (uri (rubygems-uri "gherkin-ruby" version))
7937 (sha256
7938 (base32
7939 "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1"))))
7940 (build-system ruby-build-system)
7941 (synopsis "Pure Ruby Gherkin parser")
7942 (description
7943 "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than
7944 200 lines of code.")
7945 ;; XXX: No license information anywhere but Readme.md.
7946 (license license:expat)))
7947
7948 (define-public ruby-aruba
7949 (package
7950 (name "ruby-aruba")
7951 (version "0.14.14")
7952 (source
7953 (origin
7954 (method url-fetch)
7955 (uri (rubygems-uri "aruba" version))
7956 (sha256
7957 (base32
7958 "0l2mfpdxc03gdrbwc2hv4vdhjhqhfcdp6d02j05j64ncpi9srlqn"))))
7959 (build-system ruby-build-system)
7960 (arguments
7961 '(#:test-target "spec"
7962 #:phases
7963 (modify-phases %standard-phases
7964 (add-after 'unpack 'patch
7965 (lambda _
7966 (substitute* "spec/aruba/api_spec.rb"
7967 ;; This resolves some errors in the specs
7968 ;;
7969 ;; undefined method `parse' for Time:Class
7970 (("require 'spec_helper'")
7971 "require 'spec_helper'\nrequire 'time'"))
7972 ;; Avoid shebang issues in this spec file
7973 (substitute* "spec/aruba/matchers/command_spec.rb"
7974 (("/usr/bin/env bash")
7975 (which "bash")))
7976 #t))
7977 (add-before 'check 'remove-unnecessary-dependencies
7978 (lambda _
7979 (substitute* "Gemfile"
7980 ((".*byebug.*") "\n")
7981 ((".*pry.*") "\n")
7982 ((".*yaml.*") "\n")
7983 ((".*bcat.*") "\n")
7984 ((".*kramdown.*") "\n")
7985 ((".*rubocop.*") "\n")
7986 ((".*cucumber-pro.*") "\n")
7987 ((".*cucumber.*") "\n")
7988 ((".*license_finder.*") "\n")
7989 ((".*rake.*") "gem 'rake'\n")
7990 ((".*relish.*") "\n"))
7991 (substitute* "aruba.gemspec"
7992 (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
7993 "spec.add_runtime_dependency 'cucumber'"))
7994 #t))
7995 (add-before 'check 'set-home
7996 (lambda _ (setenv "HOME" "/tmp") #t)))))
7997 (native-inputs
7998 `(("bundler" ,bundler)
7999 ("ruby-rspec" ,ruby-rspec)
8000 ("ruby-fuubar" ,ruby-fuubar)
8001 ("ruby-simplecov" ,ruby-simplecov)))
8002 (propagated-inputs
8003 `(("ruby-childprocess" ,ruby-childprocess)
8004 ("ruby-contracts" ,ruby-contracts)
8005 ("ruby-cucumber" ,ruby-cucumber)
8006 ("ruby-ffi" ,ruby-ffi)
8007 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
8008 ("ruby-thor" ,ruby-thor)
8009 ("ruby-yard" ,ruby-yard)))
8010 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
8011 (description
8012 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
8013 command-line applications. It supports applications written in any
8014 language.")
8015 (home-page "https://github.com/cucumber/aruba")
8016 (license license:expat)))
8017
8018 ;; A version of ruby-aruba without tests run so that circular dependencies can
8019 ;; be avoided.
8020 (define ruby-aruba-without-tests
8021 (package
8022 (inherit ruby-aruba)
8023 (arguments '(#:tests? #f))
8024 (propagated-inputs
8025 `(("ruby-cucumber" ,ruby-cucumber-without-tests)
8026 ,@(alist-delete "ruby-cucumber"
8027 (package-propagated-inputs ruby-aruba))))
8028 (native-inputs '())))
8029
8030 (define-public ruby-sys-uname
8031 (package
8032 (name "ruby-sys-uname")
8033 (version "1.2.1")
8034 (source
8035 (origin
8036 (method url-fetch)
8037 (uri (rubygems-uri "sys-uname" version))
8038 (sha256
8039 (base32
8040 "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0"))))
8041 (build-system ruby-build-system)
8042 (arguments
8043 `(#:test-target "spec"))
8044 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
8045 (native-inputs `(("ruby-rspec" ,ruby-rspec)))
8046 (synopsis "Ruby interface for gathering system information")
8047 (description "The sys-uname library provides an interface for gathering
8048 information about your current platform. It allows retrieving information
8049 such as the OS name, OS version, system name, etc.")
8050 (home-page "https://github.com/djberg96/sys-uname")
8051 (license license:asl2.0)))
8052
8053 (define-public ruby-cucumber-create-meta
8054 (package
8055 (name "ruby-cucumber-create-meta")
8056 (version "1.0.0")
8057 (source
8058 (origin
8059 (method url-fetch)
8060 (uri (rubygems-uri "cucumber-create-meta" version))
8061 (sha256
8062 (base32
8063 "0i0i3arymjrnjk72mg79w1a11607x4d0lrqafm9sz2gq9l52zasw"))))
8064 (build-system ruby-build-system)
8065 (arguments
8066 `(#:phases (modify-phases %standard-phases
8067 (add-after 'extract-gemspec 'relax-version-requirements
8068 (lambda _
8069 (substitute* ".gemspec"
8070 ((" 12\\.2")
8071 " 12.1"))
8072 #t))
8073 (replace 'check
8074 (lambda _
8075 (invoke "rspec"))))))
8076 (native-inputs
8077 `(("ruby-rspec" ,ruby-rspec)))
8078 (propagated-inputs
8079 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
8080 ("ruby-sys-uname" ,ruby-sys-uname)))
8081 (synopsis "Function to create @code{Meta} messages for Cucumber Ruby")
8082 (description "The @code{createMeta} utility function allows generating
8083 system-specific @code{Meta} messages for Cucumber Ruby.")
8084 (home-page "https://github.com/cucumber/cucumber/tree/master/create-meta/ruby")
8085 (license license:expat)))
8086
8087 (define-public ruby-cucumber-html-formatter
8088 (package
8089 (name "ruby-cucumber-html-formatter")
8090 (version "7.0.0")
8091 (source
8092 (origin
8093 (method url-fetch)
8094 (uri (rubygems-uri "cucumber-html-formatter" version))
8095 (sha256
8096 (base32
8097 "0lshj4sw9jw7687wrhknyb9kffblai3l843zgrznyqij3ga0bc62"))))
8098 (build-system ruby-build-system)
8099 (arguments
8100 `(#:phases (modify-phases %standard-phases
8101 (replace 'check
8102 (lambda _
8103 (invoke "rspec"))))))
8104 (native-inputs
8105 `(("ruby-rspec" ,ruby-rspec)))
8106 (propagated-inputs
8107 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)))
8108 (synopsis "HTML formatter for Cucumber")
8109 (description "Cucumber HTML Formatter produces a HTML report for Cucumber
8110 runs. It is built on top of cucumber-react and works with any Cucumber
8111 implementation with a protocol buffer formatter that outputs Cucumber
8112 messages.")
8113 (home-page "https://github.com/cucumber/cucumber/tree/\
8114 master/html-formatter/ruby")
8115 (license license:expat)))
8116
8117 (define-public ruby-cucumber
8118 (package
8119 (name "ruby-cucumber")
8120 (version "4.1.0")
8121 (source
8122 (origin
8123 (method git-fetch)
8124 (uri (git-reference
8125 (url "https://github.com/cucumber/cucumber-ruby")
8126 (commit (string-append "v" version))))
8127 (file-name (git-file-name name version))
8128 (sha256
8129 (base32
8130 "0g9rqfslbzkkrq2kvl14fgknrhfbji3bjjpjxff5nc9wzd3hd549"))))
8131 (build-system ruby-build-system)
8132 (arguments
8133 '(#:test-target "default"
8134 #:phases
8135 (modify-phases %standard-phases
8136 (add-after 'unpack 'disable-rubocop
8137 ;; Rubocop lint check fails with our more recent version.
8138 (lambda _
8139 (substitute* "Rakefile"
8140 (("spec cucumber rubocop")
8141 "spec cucumber"))
8142 #t))
8143 (add-after 'extract-gemspec 'strip-version-requirements
8144 (lambda _
8145 (delete-file "Gemfile") ;do not use Bundler
8146 (substitute* "cucumber.gemspec"
8147 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
8148 (string-append stripped "\n")))
8149 #t))
8150 (add-before 'check 'set-home
8151 (lambda _
8152 (setenv "HOME" (getcwd))
8153 #t)))))
8154 (propagated-inputs
8155 `(("ruby-builder" ,ruby-builder)
8156 ("ruby-cucumber-core" ,ruby-cucumber-core)
8157 ("ruby-cucumber-create-meta" ,ruby-cucumber-create-meta)
8158 ("ruby-cucumber-html-formatter" ,ruby-cucumber-html-formatter)
8159 ("ruby-cucumber-messages" ,ruby-cucumber-messages)
8160 ("ruby-cucumber-wire" ,ruby-cucumber-wire)
8161 ("ruby-diff-lcs" ,ruby-diff-lcs)
8162 ("ruby-gherkin" ,ruby-gherkin)
8163 ("ruby-multi-json" ,ruby-multi-json)
8164 ("ruby-multi-test" ,ruby-multi-test)))
8165 (native-inputs
8166 `(;; Use a untested version of aruba, to avoid a circular dependency, as
8167 ;; ruby-aruba depends on ruby-cucumber.
8168 ("ruby-aruba" ,ruby-aruba-without-tests)
8169 ("ruby-rspec" ,ruby-rspec)
8170 ("ruby-pry" ,ruby-pry)
8171 ("ruby-nokogiri" ,ruby-nokogiri)
8172 ("ruby-rubocop" ,ruby-rubocop)))
8173 (synopsis "Describe automated tests in plain language")
8174 (description "Cucumber is a tool for running automated tests written in
8175 plain language. It's designed to support a Behaviour Driven Development (BDD)
8176 software development workflow.")
8177 (home-page "https://cucumber.io/")
8178 (license license:expat)))
8179
8180 (define ruby-cucumber-without-tests
8181 (package (inherit ruby-cucumber)
8182 (arguments
8183 '(#:tests? #f))
8184 (native-inputs
8185 '())))
8186
8187 (define-public ruby-coveralls
8188 (package
8189 (name "ruby-coveralls")
8190 (version "0.8.23")
8191 (source
8192 (origin
8193 (method url-fetch)
8194 (uri (rubygems-uri "coveralls" version))
8195 (sha256
8196 (base32
8197 "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc"))))
8198 (build-system ruby-build-system)
8199 ;; The test suite depends on ruby-vcr, which cannot be included in Guix
8200 ;; because of its nonfree, Hippocratic-derived license.
8201 (arguments
8202 `(#:tests? #f
8203 #:phases (modify-phases %standard-phases
8204 (add-after 'extract-gemspec 'strip-version-requirements
8205 ;; Keeping strict version requirements can cause problems
8206 ;; to users of the library, such as: Gem::ConflictError:
8207 ;; Unable to activate coveralls-0.8.23, because
8208 ;; simplecov-0.17.1 conflicts with simplecov (~> 0.16.1).
8209 (lambda _
8210 (substitute* "coveralls-ruby.gemspec"
8211 (("(.*add_.*dependency\\([^,]+), .*" _ stripped)
8212 (string-append stripped ")\n")))
8213 #t)))))
8214 (propagated-inputs
8215 `(("ruby-json" ,ruby-json)
8216 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
8217 ("ruby-thor" ,ruby-thor)
8218 ("ruby-tins" ,ruby-tins)))
8219 (synopsis "Ruby implementation of the Coveralls API")
8220 (description "This package provides a Ruby implementation of the Coveralls
8221 API.")
8222 (home-page "https://coveralls.io")
8223 (license license:expat)))
8224
8225 (define-public ruby-unindent
8226 (package
8227 (name "ruby-unindent")
8228 (version "1.0")
8229 (source
8230 (origin
8231 (method url-fetch)
8232 (uri (rubygems-uri "unindent" version))
8233 (sha256
8234 (base32
8235 "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd"))))
8236 (build-system ruby-build-system)
8237 (synopsis "Ruby method to unindent strings")
8238 (description "This module provides a @code{String#unindent} Ruby method to
8239 unindent strings, which can be useful to unindent multiline strings embedded
8240 in already-indented code.")
8241 (home-page "https://github.com/mynyml/unindent")
8242 (license license:expat)))
8243
8244 (define-public ruby-cucumber-core
8245 (package
8246 (name "ruby-cucumber-core")
8247 (version "7.1.0")
8248 (source
8249 (origin
8250 (method git-fetch)
8251 (uri (git-reference
8252 (url "https://github.com/cucumber/cucumber-ruby-core")
8253 (commit (string-append "v" version))))
8254 (file-name (git-file-name name version))
8255 (sha256
8256 (base32
8257 "1p5wb6wbggbw37ariyag4kxpiczznvgm3c8cnz1744dmbj79q1rn"))))
8258 (build-system ruby-build-system)
8259 (arguments
8260 `(#:test-target "spec"
8261 #:phases
8262 (modify-phases %standard-phases
8263 (add-after 'extract-gemspec 'relax-version-requirements
8264 (lambda _
8265 (substitute* "cucumber-core.gemspec"
8266 (("'cucumber-tag-expressions',.*")
8267 "'cucumber-tag-expressions', '>=2.0.0'\n"))
8268 #t)))))
8269 (native-inputs
8270 `(("ruby-rspec" ,ruby-rspec)
8271 ("ruby-coveralls" ,ruby-coveralls)
8272 ("ruby-rubocop" ,ruby-rubocop)
8273 ("ruby-simplecov" ,ruby-simplecov)
8274 ("ruby-unindent" ,ruby-unindent)))
8275 (propagated-inputs
8276 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
8277 ("ruby-gherkin" ,ruby-gherkin)
8278 ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
8279 (synopsis "Core library for the Cucumber BDD app")
8280 (description "Cucumber is a tool for running automated tests
8281 written in plain language. Because they're written in plain language,
8282 they can be read by anyone on your team. Because they can be read by
8283 anyone, you can use them to help improve communication, collaboration
8284 and trust on your team.")
8285 (home-page "https://cucumber.io/")
8286 (license license:expat)))
8287
8288 (define-public ruby-cucumber-expressions
8289 (package
8290 (name "ruby-cucumber-expressions")
8291 (version "10.2.0")
8292 (source
8293 (origin
8294 (method git-fetch)
8295 (uri (git-reference
8296 (url "https://github.com/cucumber/cucumber-expressions-ruby")
8297 (commit (string-append "v" version))))
8298 (file-name (git-file-name name version))
8299 (sha256
8300 (base32
8301 "1aivhcpjrmbvp9bg0y7g6zxh2swfvylvg0sapq5jc4i1y74k8npd"))))
8302 (build-system ruby-build-system)
8303 (arguments
8304 '(#:test-target "spec"))
8305 (native-inputs
8306 `(("ruby-rspec" ,ruby-rspec)
8307 ("ruby-simplecov" ,ruby-simplecov)))
8308 (synopsis "Simpler alternative to Regular Expressions")
8309 (description "Cucumber Expressions offer similar functionality to Regular
8310 Expressions, with a syntax that is easier to read and write. Cucumber
8311 Expressions are extensible with parameter types.")
8312 (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
8313 (license license:expat)))
8314
8315 (define-public ruby-cucumber-wire
8316 (package
8317 (name "ruby-cucumber-wire")
8318 (version "3.1.0")
8319 (source
8320 (origin
8321 (method url-fetch)
8322 (uri (rubygems-uri "cucumber-wire" version))
8323 (sha256
8324 (base32
8325 "0z1n13lqv70zb2lcrvs2263lm0gsb3gz8gbv890kxzwp8cvd433k"))))
8326 (build-system ruby-build-system)
8327 (arguments
8328 '(#:tests? #f ;tests use cucumber, causing a cycle
8329 #:phases
8330 (modify-phases %standard-phases
8331 (add-after 'extract-gemspec 'relax-version-requirements
8332 (lambda _
8333 (substitute* ".gemspec"
8334 ((" 10\\.1") " 10.2"))
8335 #t)))))
8336 (propagated-inputs
8337 `(("ruby-cucumber-core" ,ruby-cucumber-core)
8338 ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
8339 ("ruby-cucumber-messages" ,ruby-cucumber-messages)))
8340 (synopsis "Cucumber wire protocol plugin")
8341 (description "Cucumber's wire protocol allows step definitions to be
8342 implemented and invoked on any platform.")
8343 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
8344 (license license:expat)))
8345
8346 (define-public ruby-cucumber-tag-expressions
8347 (package
8348 (name "ruby-cucumber-tag-expressions")
8349 (version "3.0.0")
8350 (source
8351 (origin
8352 (method git-fetch)
8353 (uri (git-reference
8354 (url "https://github.com/cucumber/tag-expressions-ruby")
8355 (commit (string-append "v" version))))
8356 (file-name (git-file-name name version))
8357 (sha256
8358 (base32
8359 "15dw4w0npd4m6aw7zhqkjxxzngp42kswrkwfygxkxcxnhy5zl1vx"))))
8360 (build-system ruby-build-system)
8361 (arguments
8362 `(#:test-target "spec"))
8363 (native-inputs
8364 `(("ruby-rspec" ,ruby-rspec)))
8365 (synopsis "Cucumber tag expressions for Ruby")
8366 (description "Cucumber tag expression parser for Ruby. A tag expression
8367 is an infix boolean expression used by Cucumber.")
8368 (home-page "https://github.com/cucumber/tag-expressions-ruby")
8369 (license license:expat)))
8370
8371 (define-public ruby-bindex
8372 (package
8373 (name "ruby-bindex")
8374 (version "0.5.0")
8375 (source
8376 (origin
8377 (method url-fetch)
8378 (uri (rubygems-uri "bindex" version))
8379 (sha256
8380 (base32
8381 "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
8382 (build-system ruby-build-system)
8383 (arguments
8384 '(#:test-target "default"))
8385 (native-inputs
8386 `(("bundler" ,bundler)
8387 ("ruby-rake-compiler" ,ruby-rake-compiler)))
8388 (synopsis "Provides access for bindings relating to Ruby exceptions")
8389 (description
8390 "@code{bindex} provides a way to access the bindings that relate to
8391 exceptions in Ruby, providing more information about the context in which the
8392 exception occurred.")
8393 (home-page "https://github.com/gsamokovarov/bindex")
8394 (license license:expat)))
8395
8396 (define-public ruby-bio-logger
8397 (package
8398 (name "ruby-bio-logger")
8399 (version "1.0.1")
8400 (source
8401 (origin
8402 (method url-fetch)
8403 (uri (rubygems-uri "bio-logger" version))
8404 (sha256
8405 (base32
8406 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
8407 (build-system ruby-build-system)
8408 (arguments
8409 `(#:tests? #f)) ; rake errors, missing shoulda
8410 (propagated-inputs
8411 `(("ruby-log4r" ,ruby-log4r)))
8412 (synopsis "Log4r wrapper for Ruby")
8413 (description "Bio-logger is a wrapper around Log4r adding extra logging
8414 features such as filtering and fine grained logging.")
8415 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
8416 (license license:expat)))
8417
8418 (define-public ruby-yajl-ruby
8419 (package
8420 (name "ruby-yajl-ruby")
8421 (version "1.4.1")
8422 (source
8423 (origin
8424 (method url-fetch)
8425 (uri (rubygems-uri "yajl-ruby" version))
8426 (sha256
8427 (base32
8428 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
8429 (build-system ruby-build-system)
8430 (arguments
8431 '(#:test-target "spec"
8432 #:phases
8433 (modify-phases %standard-phases
8434 (add-before 'check 'patch-test-to-update-load-path
8435 (lambda _
8436 (substitute* "spec/parsing/large_number_spec.rb"
8437 (("require \"yajl\"")
8438 "$LOAD_PATH << 'lib'; require 'yajl'"))
8439 #t)))))
8440 (native-inputs
8441 `(("ruby-rake-compiler" ,ruby-rake-compiler)
8442 ("ruby-rspec" ,ruby-rspec)))
8443 (synopsis "Streaming JSON parsing and encoding library for Ruby")
8444 (description
8445 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
8446 is compatible with the JSON gem, so yajl-ruby can act as a drop in
8447 replacement.
8448
8449 A modified copy of yajl is used, and included in the package.")
8450 (home-page "https://github.com/brianmario/yajl-ruby")
8451 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
8452 license:bsd-3)))) ; Included, modified copy of yajl
8453
8454 (define-public ruby-yard
8455 (package
8456 (name "ruby-yard")
8457 (version "0.9.25")
8458 (source
8459 (origin
8460 (method git-fetch)
8461 ;; Tests do not pass if we build from the distributed gem.
8462 (uri (git-reference
8463 (url "https://github.com/lsegal/yard")
8464 (commit (string-append "v" version))))
8465 (file-name (git-file-name name version))
8466 (sha256
8467 (base32
8468 "1x7y4s557hrnq439lih7nqg1y7ximardw75jx9i92x3yzpviqqwa"))))
8469 (build-system ruby-build-system)
8470 (arguments
8471 ;; Note: Tests are willfully disabled to alleviate dependency cycle
8472 ;; problems.
8473 `(#:tests? #f
8474 #:phases (modify-phases %standard-phases
8475 (add-after 'unpack 'do-not-set-date-in-gemspec
8476 ;; Fix a reproducibility issue (see:
8477 ;; https://github.com/lsegal/yard/issues/1343).
8478 (lambda _
8479 (substitute* "yard.gemspec"
8480 ((".*s\\.date.*") ""))
8481 #t)))))
8482 (synopsis "Documentation generation tool for Ruby")
8483 (description "YARD is a documentation generation tool for the Ruby
8484 programming language. It enables the user to generate consistent, usable
8485 documentation that can be exported to a number of formats very easily, and
8486 also supports extending for custom Ruby constructs such as custom class level
8487 definitions.")
8488 (home-page "https://yardoc.org")
8489 (license license:expat)))
8490
8491 (define-public ruby-yard-with-tests
8492 (package
8493 (inherit ruby-yard)
8494 (name "ruby-yard-with-tests")
8495 (arguments
8496 (substitute-keyword-arguments (package-arguments ruby-yard)
8497 ((#:tests? _ #t) #t)
8498 ((#:test-target _ "default") "default")
8499 ((#:phases phases '%standard-phases)
8500 `(modify-phases ,phases
8501 (add-before 'check 'prepare-for-tests
8502 (lambda* (#:key tests? #:allow-other-keys)
8503 (when tests?
8504 (substitute* "Rakefile"
8505 ((".*[Ss]amus.*") ""))
8506 ;; Delete the Gemfile to avoid errors relating to it.
8507 (delete-file "Gemfile")
8508 ;; $HOME needs to be set to somewhere writeable for tests to
8509 ;; run.
8510 (setenv "HOME" "/tmp"))
8511 #t))))))
8512 (native-inputs
8513 `(("ruby-rspec" ,ruby-rspec)
8514 ("ruby-rack" ,ruby-rack)
8515 ("ruby-redcloth" ,ruby-redcloth)
8516 ("ruby-asciidoc" ,ruby-asciidoctor)))))
8517
8518 (define-public ruby-spectroscope
8519 (package
8520 (name "ruby-spectroscope")
8521 (version "0.1.0")
8522 (source
8523 (origin
8524 (method url-fetch)
8525 (uri (rubygems-uri "spectroscope" version))
8526 (sha256
8527 (base32
8528 "0iiid9sm110qhx0i1zkds710cvsnmhd308wbqa7slkzbq2akrb3y"))))
8529 (build-system ruby-build-system)
8530 (arguments
8531 `(#:phases
8532 (modify-phases %standard-phases
8533 (replace 'check
8534 (lambda _
8535 (with-output-to-file ".test"
8536 (lambda _
8537 (display
8538 "\
8539 require 'ae/should'
8540 require 'rspec'
8541
8542 include RSpec
8543
8544 Test.run :default do |run|
8545 run.files << 'spec/*_spec.rb'
8546 end")))
8547 (invoke "ruby" "-Ilib" "-rrubytest" ".test"))))))
8548 (native-inputs
8549 `(("ruby-ae" ,ruby-ae)
8550 ("ruby-rspec" ,ruby-rspec)))
8551 (propagated-inputs
8552 `(("ruby-rubytest" ,ruby-rubytest)))
8553 (synopsis "Behavior-Driven Development (BDD) framework built on RubyTest")
8554 (description "Spectroscope is a Behavior-Driven Development (BDD)
8555 framework built on RubyTest, designed to emulate RSpec in most respects. It
8556 is assertion framework independent so any number of assertion systems can be
8557 used, such as Assay or AE.")
8558 (home-page "http://rubyworks.github.com/spectroscope/")
8559 (license license:bsd-2)))
8560
8561 (define-public ruby-tomparse
8562 (package
8563 (name "ruby-tomparse")
8564 (version "0.4.2")
8565 (source
8566 (origin
8567 (method url-fetch)
8568 (uri (rubygems-uri "tomparse" version))
8569 (sha256
8570 (base32
8571 "06xakk41f1kgj6j1ahkwn4r6cvidixvm4phhlrvmwb7c3pr8ygc8"))))
8572 (build-system ruby-build-system)
8573 ;; TODO: Tests require citron and rulebow, not yet packaged.
8574 (arguments '(#:tests? #f))
8575 (synopsis "TomDoc parser for Ruby")
8576 (description "TomParse is a TomDoc parser for Ruby. It takes a code
8577 comment as input and parses it into a convenient object-oriented structure in
8578 accordance with the TomDoc standard. See
8579 @url{https://github.com/mojombo/tomdoc, TomDoc} for more information about the
8580 TomDoc format.")
8581 (home-page "http://rubyworks.github.com/tomparse/")
8582 (license license:bsd-2)))
8583
8584 (define-public ruby-yard-tomdoc
8585 (package
8586 (name "ruby-yard-tomdoc")
8587 (version "0.7.1")
8588 (source
8589 (origin
8590 (method url-fetch)
8591 (uri (rubygems-uri "yard-tomdoc" version))
8592 (sha256
8593 (base32
8594 "1725gs8b8klpwhrvnf2wwp7dw3zxs9vz2la983l2d8c4r4fn1j2z"))))
8595 (build-system ruby-build-system)
8596 (arguments
8597 `(#:phases (modify-phases %standard-phases
8598 (replace 'check
8599 (lambda _
8600 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
8601 (native-inputs
8602 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
8603 ("ruby-spectroscope" ,ruby-spectroscope)
8604 ("ruby-ae" ,ruby-ae)))
8605 (propagated-inputs
8606 `(("ruby-tomparse" ,ruby-tomparse)
8607 ("ruby-yard" ,ruby-yard)))
8608 (synopsis "TomDoc syntax for YARD")
8609 (description "This module adds support for the TomDoc documentation format
8610 to YARD, a documentation generation tool for Ruby.")
8611 (home-page "http://rubyworks.github.com/yard-tomdoc/")
8612 (license license:expat)))
8613
8614 (define-public ruby-clap
8615 (package
8616 (name "ruby-clap")
8617 (version "1.0.0")
8618 (source (origin
8619 (method url-fetch)
8620 (uri (rubygems-uri "clap" version))
8621 (sha256
8622 (base32
8623 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
8624 (build-system ruby-build-system)
8625 ;; Clap needs cutest for running tests, but cutest needs clap.
8626 (arguments `(#:tests? #f))
8627 (synopsis "Command line argument parsing for simple applications")
8628 (description
8629 "Clap provides command line argument parsing features. It covers the
8630 simple case of executing code based on the flags or parameters passed.")
8631 (home-page "https://github.com/djanowski/cutest")
8632 (license license:expat)))
8633
8634 (define-public ruby-cutest
8635 (package
8636 (name "ruby-cutest")
8637 (version "1.2.2")
8638 (source (origin
8639 (method url-fetch)
8640 (uri (rubygems-uri "cutest" version))
8641 (sha256
8642 (base32
8643 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
8644 (build-system ruby-build-system)
8645 (propagated-inputs
8646 `(("ruby-clap" ,ruby-clap)))
8647 (synopsis "Run tests in separate processes")
8648 (description
8649 "Cutest runs tests in separate processes to avoid shared state.")
8650 (home-page "https://github.com/djanowski/cutest")
8651 (license license:expat)))
8652
8653 (define-public ruby-pygmentize
8654 (package
8655 (name "ruby-pygmentize")
8656 (version "0.0.3")
8657 (source (origin
8658 (method url-fetch)
8659 (uri (rubygems-uri "pygmentize" version))
8660 (sha256
8661 (base32
8662 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
8663 (build-system ruby-build-system)
8664 (arguments
8665 `(#:phases
8666 (modify-phases %standard-phases
8667 (add-after 'unpack 'fix-pygmentize-path
8668 (lambda _
8669 (substitute* "lib/pygmentize.rb"
8670 (("\"/usr/bin/env python.*")
8671 (string-append "\"" (which "pygmentize") "\"\n")))
8672 #t))
8673 (add-after 'build 'do-not-use-vendor-directory
8674 (lambda _
8675 ;; Remove bundled pygments sources
8676 ;; FIXME: ruby-build-system does not support snippets.
8677 (delete-file-recursively "vendor")
8678 (substitute* "pygmentize.gemspec"
8679 (("\"vendor/\\*\\*/\\*\",") ""))
8680 #t)))))
8681 (inputs
8682 `(("pygments" ,python-pygments)))
8683 (native-inputs
8684 `(("ruby-cutest" ,ruby-cutest)
8685 ("ruby-nokogiri" ,ruby-nokogiri)))
8686 (synopsis "Thin Ruby wrapper around pygmentize")
8687 (description
8688 "Pygmentize provides a simple way to call pygmentize from within a Ruby
8689 application.")
8690 (home-page "https://github.com/djanowski/pygmentize")
8691 (license license:expat)))
8692
8693 (define-public ruby-eventmachine
8694 (package
8695 (name "ruby-eventmachine")
8696 (version "1.2.7")
8697 (source
8698 (origin
8699 (method url-fetch)
8700 (uri (rubygems-uri "eventmachine" version))
8701 (sha256
8702 (base32
8703 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
8704 (build-system ruby-build-system)
8705 (arguments
8706 '(#:tests? #f)) ; test suite tries to connect to google.com
8707 (native-inputs
8708 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
8709 (synopsis "Single-threaded network event framework for Ruby")
8710 (description
8711 "EventMachine implements a single-threaded engine for arbitrary network
8712 communications. EventMachine wraps all interactions with sockets, allowing
8713 programs to concentrate on the implementation of network protocols. It can be
8714 used to create both network servers and clients.")
8715 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
8716 (home-page "https://github.com/eventmachine/eventmachine")
8717 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
8718
8719 (define-public ruby-ruby-engine
8720 (package
8721 (name "ruby-ruby-engine")
8722 (version "2.0.0")
8723 (source
8724 (origin
8725 (method url-fetch)
8726 (uri (rubygems-uri "ruby_engine" version))
8727 (sha256
8728 (base32
8729 "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm"))))
8730 (build-system ruby-build-system)
8731 (arguments
8732 `(#:phases
8733 (modify-phases %standard-phases
8734 (add-after 'extract-gemspec 'clean-up
8735 (lambda _
8736 (delete-file "Gemfile.lock")
8737 (substitute* "ruby_engine.gemspec"
8738 ;; Remove unnecessary imports that would entail further
8739 ;; dependencies.
8740 ((".*<rdoc.*") "")
8741 ((".*<rubygems-tasks.*") "")
8742 ;; Remove extraneous .gem file
8743 (("\"pkg/ruby_engine-[0-9.]+\\.gem\".freeze, ") "")
8744 (("\"Gemfile.lock\".freeze, ") "")
8745 ;; Soften rake dependency
8746 (("%q<rake>.freeze, \\[\"~> 10.0\"\\]")
8747 "%q<rake>.freeze, [\">= 10.0\"]")
8748 ;; Soften the rspec dependency
8749 (("%q<rspec>.freeze, \\[\"~> 2.4\"\\]")
8750 "%q<rspec>.freeze, [\">= 2.4\"]"))
8751 (substitute* "Rakefile"
8752 (("require 'rubygems/tasks'") "")
8753 (("Gem::Tasks.new") ""))
8754 ;; Remove extraneous .gem file that otherwise gets installed.
8755 (delete-file-recursively "pkg")
8756 #t)))))
8757 (native-inputs
8758 `(("bundler" ,bundler)
8759 ("ruby-rake" ,ruby-rake)
8760 ("ruby-rspec" ,ruby-rspec)))
8761 (synopsis "Simplifies checking for Ruby implementation")
8762 (description
8763 "@code{ruby_engine} provides an RubyEngine class that can be used to
8764 check which implementation of Ruby is in use. It can provide the interpreter
8765 name and provides query methods such as @{RubyEngine.mri?}.")
8766 (home-page "https://github.com/janlelis/ruby_engine")
8767 (license license:expat)))
8768
8769 (define-public ruby-turn
8770 (package
8771 (name "ruby-turn")
8772 (version "0.9.7")
8773 (source
8774 (origin
8775 (method url-fetch)
8776 (uri (rubygems-uri "turn" version))
8777 (sha256
8778 (base32
8779 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
8780 (build-system ruby-build-system)
8781 (arguments
8782 `(#:phases
8783 (modify-phases %standard-phases
8784 ;; Tests fail because turn changes its environment so can no longer
8785 ;; find test/unit. Instead simply test if the executable runs
8786 ;; without issue.
8787 (replace 'check
8788 (lambda _
8789 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
8790 (propagated-inputs
8791 `(("ruby-ansi" ,ruby-ansi)
8792 ("ruby-minitest" ,ruby-minitest-4)))
8793 (synopsis "Alternate set of alternative runners for MiniTest")
8794 (description
8795 "TURN provides a set of alternative runners for MiniTest which are both
8796 colorful and informative. TURN displays each test on a separate line with
8797 failures being displayed immediately instead of at the end of the tests. Note
8798 that TURN is no longer being maintained.")
8799 (home-page "https://rubygems.org/gems/turn")
8800 (license license:expat)))
8801
8802 (define-public ruby-mimemagic
8803 (package
8804 (name "ruby-mimemagic")
8805 (version "0.3.3")
8806 (source
8807 (origin
8808 (method url-fetch)
8809 (uri (rubygems-uri "mimemagic" version))
8810 (sha256
8811 (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw"))))
8812 (build-system ruby-build-system)
8813 (arguments
8814 '(#:phases
8815 (modify-phases %standard-phases
8816 ;; This phase breaks the tests, as it patches some of the test data.
8817 (delete 'patch-source-shebangs))))
8818 (native-inputs
8819 `(("ruby-bacon" ,ruby-bacon)))
8820 (synopsis "Ruby library for MIME detection by extension or content")
8821 (description
8822 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
8823 extension or content, using the freedesktop.org.xml shared-mime-info
8824 database.")
8825 (home-page "https://github.com/minad/mimemagic")
8826 (license license:expat)))
8827
8828 (define-public ruby-mime-types-data
8829 (package
8830 (name "ruby-mime-types-data")
8831 (version "3.2016.0521")
8832 (source
8833 (origin
8834 (method url-fetch)
8835 (uri (rubygems-uri "mime-types-data" version))
8836 (sha256
8837 (base32
8838 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
8839 (build-system ruby-build-system)
8840 (native-inputs
8841 `(("ruby-hoe" ,ruby-hoe)))
8842 (synopsis "Registry for information about MIME media type definitions")
8843 (description
8844 "@code{mime-types-data} provides a registry for information about
8845 Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
8846 be used with the Ruby mime-types library or other software to determine
8847 defined filename extensions for MIME types, or to use filename extensions to
8848 look up the likely MIME type definitions.")
8849 (home-page "https://github.com/mime-types/mime-types-data/")
8850 (license license:expat)))
8851
8852 (define-public ruby-mime-types
8853 (package
8854 (name "ruby-mime-types")
8855 (version "3.1")
8856 (source
8857 (origin
8858 (method url-fetch)
8859 (uri (rubygems-uri "mime-types" version))
8860 (sha256
8861 (base32
8862 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
8863 (build-system ruby-build-system)
8864 (propagated-inputs
8865 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
8866 (native-inputs
8867 `(("ruby-hoe" ,ruby-hoe)
8868 ("ruby-fivemat" ,ruby-fivemat)
8869 ("ruby-minitest-focus" ,ruby-minitest-focus)
8870 ("ruby-minitest-rg" ,ruby-minitest-rg)
8871 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
8872 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
8873 (synopsis "Library and registry for MIME content type definitions")
8874 (description "The mime-types library provides a library and registry for
8875 information about Multipurpose Internet Mail Extensions (MIME) content type
8876 definitions. It can be used to determine defined filename extensions for MIME
8877 types, or to use filename extensions to look up the likely MIME type
8878 definitions.")
8879 (home-page "https://github.com/mime-types/ruby-mime-types")
8880 (license license:expat)))
8881
8882 (define-public ruby-mini-mime
8883 (package
8884 (name "ruby-mini-mime")
8885 (version "1.0.2")
8886 (source
8887 (origin
8888 (method url-fetch)
8889 (uri (rubygems-uri "mini_mime" version))
8890 (sha256
8891 (base32
8892 "1axm0rxyx3ss93wbmfkm78a6x03l8y4qy60rhkkiq0aza0vwq3ha"))))
8893 (build-system ruby-build-system)
8894 (synopsis "Lightweight mime type lookup toy")
8895 (description "This package provides a lightweight mime type lookup toy.")
8896 (home-page "https://github.com/discourse/mini_mime")
8897 (license license:expat)))
8898
8899 (define-public ruby-fivemat
8900 (package
8901 (name "ruby-fivemat")
8902 (version "1.3.7")
8903 (source
8904 (origin
8905 (method url-fetch)
8906 (uri (rubygems-uri "fivemat" version))
8907 (sha256
8908 (base32
8909 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
8910 (build-system ruby-build-system)
8911 (arguments
8912 `(#:tests? #f)) ; no tests
8913 (synopsis "Each test file given its own line of dots")
8914 (description
8915 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
8916 its own line of dots during testing. It aims to provide test output that is
8917 neither too verbose nor too minimal.")
8918 (home-page "https://github.com/tpope/fivemat")
8919 (license license:expat)))
8920
8921 (define-public ruby-sqlite3
8922 (package
8923 (name "ruby-sqlite3")
8924 (version "1.4.2")
8925 (source
8926 (origin
8927 (method url-fetch)
8928 (uri (rubygems-uri "sqlite3" version))
8929 (sha256
8930 (base32
8931 "0lja01cp9xd5m6vmx99zwn4r7s97r1w5cb76gqd8xhbm1wxyzf78"))))
8932 (build-system ruby-build-system)
8933 (arguments
8934 `(#:phases
8935 (modify-phases %standard-phases
8936 (add-before 'check 'add-gemtest-file
8937 ;; This file exists in the repository but is not distributed.
8938 (lambda _ (invoke "touch" ".gemtest"))))))
8939 (inputs
8940 `(("sqlite" ,sqlite)))
8941 (native-inputs
8942 `(("ruby-hoe" ,ruby-hoe)
8943 ("ruby-rake-compiler" ,ruby-rake-compiler)
8944 ("ruby-mini-portile" ,ruby-mini-portile)))
8945 (synopsis "Interface with SQLite3 databases")
8946 (description
8947 "This module allows Ruby programs to interface with the SQLite3 database
8948 engine.")
8949 (home-page
8950 "https://github.com/sparklemotion/sqlite3-ruby")
8951 (license license:bsd-3)))
8952
8953 (define-public ruby-shoulda-context
8954 (package
8955 (name "ruby-shoulda-context")
8956 (version "1.2.2")
8957 (source
8958 (origin
8959 (method url-fetch)
8960 (uri (rubygems-uri "shoulda-context" version))
8961 (sha256
8962 (base32
8963 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
8964 (build-system ruby-build-system)
8965 (arguments
8966 `(#:phases
8967 (modify-phases %standard-phases
8968 (replace 'check
8969 (lambda _
8970 ;; Do not run tests to avoid circular dependence with rails.
8971 ;; Instead just import the library to test.
8972 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
8973 (synopsis "Test::Unit context framework extracted from Shoulda")
8974 (description
8975 "@code{shoulda-context} is the context framework extracted from Shoulda.
8976 Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
8977 context, setup, and should blocks combine to produce natural test method
8978 names.")
8979 (home-page "https://github.com/thoughtbot/shoulda-context")
8980 (license license:expat)))
8981
8982 (define-public ruby-shoulda-matchers
8983 (package
8984 (name "ruby-shoulda-matchers")
8985 (version "3.1.2")
8986 (source
8987 (origin
8988 (method url-fetch)
8989 (uri (rubygems-uri "shoulda-matchers" version))
8990 (sha256
8991 (base32
8992 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
8993 (build-system ruby-build-system)
8994 (arguments
8995 `(#:phases
8996 (modify-phases %standard-phases
8997 (replace 'check
8998 (lambda _
8999 ;; Do not run tests to avoid circular dependence with rails. Instead
9000 ;; just import the library to test.
9001 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
9002 (propagated-inputs
9003 `(("ruby-activesupport" ,ruby-activesupport)))
9004 (synopsis "Collection of testing matchers extracted from Shoulda")
9005 (description
9006 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
9007 test common Rails functionality. These tests would otherwise be much longer,
9008 more complex, and error-prone.")
9009 (home-page "https://github.com/thoughtbot/shoulda-matchers")
9010 (license license:expat)))
9011
9012 (define-public ruby-shoulda-matchers-2
9013 (package
9014 (inherit ruby-shoulda-matchers)
9015 (version "2.8.0")
9016 (source (origin
9017 (method url-fetch)
9018 (uri (rubygems-uri "shoulda-matchers" version))
9019 (sha256
9020 (base32
9021 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
9022
9023 (define-public ruby-shoulda
9024 (package
9025 (name "ruby-shoulda")
9026 (version "3.5.0")
9027 (source
9028 (origin
9029 (method url-fetch)
9030 (uri (rubygems-uri "shoulda" version))
9031 (sha256
9032 (base32
9033 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
9034 (build-system ruby-build-system)
9035 (arguments
9036 `(#:phases
9037 (modify-phases %standard-phases
9038 (replace 'check
9039 ;; Don't run tests to avoid circular dependence with rails. Instead
9040 ;; just import the library to test.
9041 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
9042 (propagated-inputs
9043 `(("ruby-shoulda-context" ,ruby-shoulda-context)
9044 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
9045 (synopsis "Context framework and matchers for testing")
9046 (description
9047 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
9048 @code{shoulda-matchers} providing tools for writing tests.")
9049 (home-page "https://github.com/thoughtbot/shoulda")
9050 (license license:expat)))
9051
9052 (define-public ruby-unf
9053 (package
9054 (name "ruby-unf")
9055 (version "0.1.4")
9056 (source
9057 (origin
9058 (method url-fetch)
9059 (uri (rubygems-uri "unf" version))
9060 (sha256
9061 (base32
9062 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
9063 (build-system ruby-build-system)
9064 (arguments
9065 `(#:phases
9066 (modify-phases %standard-phases
9067 (add-before 'check 'add-dependency-to-bundler
9068 (lambda _
9069 ;; test-unit is required but not provided by the bundler
9070 ;; environment. This is fixed in the upstream repository but fix
9071 ;; has not been released.
9072 (substitute* "Gemfile"
9073 (("^gemspec") "gem 'test-unit'\ngemspec"))
9074 #t)))))
9075 (propagated-inputs
9076 `(("ruby-unf-ext" ,ruby-unf-ext)))
9077 (native-inputs
9078 `(("ruby-shoulda" ,ruby-shoulda)
9079 ("bundler" ,bundler)
9080 ("ruby-test-unit" ,ruby-test-unit)))
9081 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
9082 (description
9083 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
9084 support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
9085 @code{java.text.Normalizer} on JRuby.")
9086 (home-page "https://github.com/knu/ruby-unf")
9087 (license license:bsd-2)))
9088
9089 (define-public ruby-warden
9090 (package
9091 (name "ruby-warden")
9092 (version "1.2.8")
9093 (source
9094 (origin
9095 (method url-fetch)
9096 (uri (rubygems-uri "warden" version))
9097 (sha256
9098 (base32
9099 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
9100 (build-system ruby-build-system)
9101 (arguments
9102 '(#:tests? #f)) ; No included tests
9103 (propagated-inputs
9104 `(("ruby-rack" ,ruby-rack)))
9105 (synopsis "Rack middleware providing authentication")
9106 (description
9107 "Warden is a Rack-based middleware that provides a mechanism for
9108 authentication in Ruby web applications.")
9109 (home-page "https://github.com/wardencommunity/warden")
9110 (license license:expat)))
9111
9112 (define-public ruby-warden-oauth2
9113 (package
9114 (name "ruby-warden-oauth2")
9115 (version "0.0.1")
9116 (source
9117 (origin
9118 (method url-fetch)
9119 (uri (rubygems-uri "warden-oauth2" version))
9120 (sha256
9121 (base32
9122 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
9123 (build-system ruby-build-system)
9124 (arguments
9125 '(#:test-target "spec"
9126 #:phases
9127 (modify-phases %standard-phases
9128 (add-after 'unpack 'remove-unnecessary-dependencies
9129 (lambda _
9130 (substitute* "Gemfile"
9131 ;; All of these gems relate to development, and are unnecessary
9132 ;; when running the tests
9133 (("gem 'guard-bundler'") "")
9134 (("gem 'guard'") "")
9135 (("gem 'guard-rspec'") "")
9136 (("gem 'rb-fsevent'") "")
9137 (("gem 'pry'") "")
9138 (("gem 'growl'") ""))
9139 #t))
9140 ;; The test suite doesn't work with rspec@2, and this is incompatible
9141 ;; with the current version of Rake, so invoke Rspec directly
9142 (replace 'check
9143 (lambda* (#:key tests? #:allow-other-keys)
9144 (when tests?
9145 (invoke "bundle" "exec" "rspec"))
9146 #t)))))
9147 (propagated-inputs
9148 `(("ruby-warden" ,ruby-warden)))
9149 (native-inputs
9150 `(("bundler" ,bundler)
9151 ("ruby-rspec" ,ruby-rspec-2)
9152 ("ruby-rack-test" ,ruby-rack-test)))
9153 (synopsis "OAuth 2.0 strategies for Warden")
9154 (description
9155 "This library extends Warden to support OAuth 2.0 authorized API
9156 requests.")
9157 (home-page "https://github.com/opperator/warden-oauth2")
9158 (license license:expat)))
9159
9160 (define-public ruby-webmock
9161 (package
9162 (name "ruby-webmock")
9163 (version "3.11.2")
9164 (source
9165 (origin
9166 (method url-fetch)
9167 (uri (rubygems-uri "webmock" version))
9168 (sha256
9169 (base32
9170 "1hdlbvfw316lkz251qnfk79drmaay7l51kidvicz41nhvw12xz8v"))))
9171 (build-system ruby-build-system)
9172 (native-inputs
9173 `(("bundler" ,bundler)
9174 ("ruby-rspec" ,ruby-rspec)))
9175 (propagated-inputs
9176 `(("ruby-addressable" ,ruby-addressable)
9177 ("ruby-crack" ,ruby-crack)
9178 ("ruby-hashdiff" ,ruby-hashdiff)))
9179 (synopsis "Allows stubbing and setting expectations on HTTP requests")
9180 (description
9181 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
9182 requests. This is useful when testing software.")
9183 (home-page "https://github.com/bblimke/webmock")
9184 (license license:expat)))
9185
9186 (define-public ruby-webmock-2
9187 (package
9188 (inherit ruby-webmock)
9189 (name "ruby-webmock")
9190 (version "2.3.2")
9191 (source
9192 (origin
9193 (method url-fetch)
9194 (uri (rubygems-uri "webmock" version))
9195 (sha256
9196 (base32
9197 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))))
9198
9199 (define-public ruby-unicode-display-width
9200 (package
9201 (name "ruby-unicode-display-width")
9202 (version "1.6.0")
9203 (source
9204 (origin
9205 (method url-fetch)
9206 (uri (rubygems-uri "unicode-display_width" version))
9207 (sha256
9208 (base32
9209 "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w"))))
9210 (build-system ruby-build-system)
9211 (arguments
9212 '(;; Test data not included.
9213 #:tests? #f))
9214 (synopsis "Determine the monospace display width of Ruby strings")
9215 (description
9216 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
9217 display width of strings in Ruby.")
9218 (home-page "https://github.com/janlelis/unicode-display_width")
9219 (license license:expat)))
9220
9221 ;; There is another gem called 'ruby-version' so we use an underscore in this
9222 ;; name
9223 (define-public ruby_version
9224 (package
9225 (name "ruby_version")
9226 (version "1.0.2")
9227 (source
9228 (origin
9229 (method url-fetch)
9230 (uri (rubygems-uri "ruby_version" version))
9231 (sha256
9232 (base32
9233 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
9234 (build-system ruby-build-system)
9235 (arguments
9236 `(#:phases
9237 (modify-phases %standard-phases
9238 (add-before 'check 'fix-dependencies
9239 (lambda _
9240 ;; Remove the Gemfile.lock, as we want to use Guix packages at
9241 ;; whatever versions.
9242 (delete-file "Gemfile.lock")
9243 ;; Remove the included gem files as they unnecessary.
9244 (delete-file-recursively "pkg/")
9245 ;; Accept any version of rake, rdoc and rspec
9246 (substitute* "ruby_version.gemspec"
9247 (("%q<rake.*") "%q<rake>)\n")
9248 (("%q<rdoc.*") "%q<rdoc>)\n")
9249 (("%q<rspec.*") "%q<rspec>)\n"))
9250 ;; Do not use bundler.
9251 (substitute* "Rakefile"
9252 (("Bundler\\.setup.*") "nil\n"))
9253 #t)))))
9254 (native-inputs
9255 `(("ruby-rdoc" ,ruby-rdoc)
9256 ("ruby-rspec" ,ruby-rspec)
9257 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
9258 (synopsis "Ruby library to help check the Ruby version")
9259 (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify
9260 checking for the right Ruby version in software.")
9261 (home-page "https://github.com/janlelis/ruby_version")
9262 (license license:expat)))
9263
9264 (define-public ruby-websocket-driver
9265 (package
9266 (name "ruby-websocket-driver")
9267 (version "0.7.1")
9268 (source
9269 (origin
9270 (method url-fetch)
9271 (uri (rubygems-uri "websocket-driver" version))
9272 (sha256
9273 (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2"))))
9274 (build-system ruby-build-system)
9275 (arguments
9276 '(#:tests? #f)) ; no included tests
9277 (propagated-inputs
9278 `(("ruby-websocket-extensions" ,ruby-websocket-extensions)))
9279 (synopsis "WebSocket protocol handler with pluggable I/O")
9280 (description
9281 "@code{websocket-driver} provides a complete implementation of the
9282 WebSocket protocols that can be hooked up to any TCP library")
9283 (home-page "https://github.com/faye/websocket-driver-ruby")
9284 (license license:expat)))
9285
9286 (define-public ruby-websocket-extensions
9287 (package
9288 (name "ruby-websocket-extensions")
9289 (version "0.1.3")
9290 (source
9291 (origin
9292 (method url-fetch)
9293 (uri (rubygems-uri "websocket-extensions" version))
9294 (sha256
9295 (base32
9296 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
9297 (build-system ruby-build-system)
9298 (arguments
9299 '(;; No included tests
9300 #:tests? #f))
9301 (synopsis "Generic extension manager for WebSocket connections")
9302 (description
9303 "@code{websocket-extensions} provides a container for registering
9304 extension plugins.")
9305 (home-page "https://github.com/faye/websocket-extensions-ruby")
9306 (license license:expat)))
9307
9308 (define-public ruby-domain-name
9309 (package
9310 (name "ruby-domain-name")
9311 (version "0.5.20190701")
9312 (source
9313 (origin
9314 (method url-fetch)
9315 (uri (rubygems-uri "domain_name" version))
9316 (sha256
9317 (base32 "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0"))))
9318 (build-system ruby-build-system)
9319 (arguments
9320 `(#:phases
9321 (modify-phases %standard-phases
9322 (add-before 'check 'fix-versions
9323 (lambda _
9324 ;; Fix NameError that appears to already be fixed upstream.
9325 (substitute* "Rakefile"
9326 (("DomainName::VERSION")
9327 "Bundler::GemHelper.gemspec.version"))
9328 ;; Loosen unnecessarily strict test-unit version specification.
9329 (substitute* "domain_name.gemspec"
9330 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
9331 #t)))))
9332 (propagated-inputs
9333 `(("ruby-unf" ,ruby-unf)))
9334 (native-inputs
9335 `(("ruby-shoulda" ,ruby-shoulda)
9336 ("bundler" ,bundler)
9337 ("ruby-test-unit" ,ruby-test-unit)))
9338 (synopsis "Domain name manipulation library")
9339 (description
9340 "@code{domain_name} is a Domain name manipulation library. It parses a
9341 domain name ready for extracting the registered domain and TLD (Top Level
9342 Domain). It can also be used for cookie domain validation based on the Public
9343 Suffix List.")
9344 (home-page "https://github.com/knu/ruby-domain_name")
9345 (license license:bsd-2)))
9346
9347 (define-public ruby-http-cookie
9348 (package
9349 (name "ruby-http-cookie")
9350 (version "1.0.3")
9351 (source
9352 (origin
9353 (method url-fetch)
9354 (uri (rubygems-uri "http-cookie" version))
9355 (sha256
9356 (base32
9357 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
9358 (build-system ruby-build-system)
9359 (arguments
9360 `(#:phases
9361 (modify-phases %standard-phases
9362 (add-before 'check 'add-dependency-to-bundler
9363 (lambda _
9364 ;; Fix NameError
9365 (substitute* "Rakefile"
9366 (("HTTP::Cookie::VERSION")
9367 "Bundler::GemHelper.gemspec.version"))
9368 #t)))))
9369 (propagated-inputs
9370 `(("ruby-domain-name" ,ruby-domain-name)))
9371 (native-inputs
9372 `(("rubysimplecov" ,ruby-simplecov)
9373 ("bundler" ,bundler)
9374 ("ruby-sqlite3" ,ruby-sqlite3)
9375 ("ruby-test-unit" ,ruby-test-unit)))
9376 (synopsis "Handle HTTP Cookies based on RFC 6265")
9377 (description
9378 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
9379 RFC 6265. It has been designed with security, standards compliance and
9380 compatibility in mind, to behave just the same as today's major web browsers.
9381 It has built-in support for the legacy @code{cookies.txt} and
9382 @code{cookies.sqlite} formats of Mozilla Firefox.")
9383 (home-page "https://github.com/sparklemotion/http-cookie")
9384 (license license:expat)))
9385
9386 (define-public ruby-httpclient
9387 (package
9388 (name "ruby-httpclient")
9389 (version "2.8.3")
9390 (source
9391 (origin
9392 (method url-fetch)
9393 (uri (rubygems-uri "httpclient" version))
9394 (sha256
9395 (base32
9396 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
9397 (build-system ruby-build-system)
9398 (arguments
9399 '(;; TODO: Some tests currently fail
9400 ;; ------
9401 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
9402 ;; 2 omissions, 0 notifications
9403 ;; 91.866% passed
9404 ;; ------
9405 ;; 6.49 tests/s, 22.41 assertions/s
9406 #:tests? #f
9407 #:phases
9408 (modify-phases %standard-phases
9409 (replace 'check
9410 (lambda* (#:key tests? #:allow-other-keys)
9411 (if tests?
9412 (invoke "ruby"
9413 "-Ilib"
9414 "test/runner.rb")
9415 #t))))))
9416 (native-inputs
9417 `(("ruby-rack" ,ruby-rack)))
9418 (synopsis
9419 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
9420 (description
9421 "The @code{httpclient} ruby library provides functionality related to
9422 HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
9423 Cookie, multithreading and authentication (digest, NTLM) support.
9424
9425 Also provided is a @command{httpclient} command, which can perform HTTP
9426 requests either using arguments or with an interactive prompt.")
9427 (home-page "https://github.com/nahi/httpclient")
9428 (license license:ruby)))
9429
9430 (define-public ruby-ansi
9431 (package
9432 (name "ruby-ansi")
9433 (version "1.5.0")
9434 (source
9435 (origin
9436 (method git-fetch)
9437 ;; Fetch from GitHub as the gem does not contain testing code.
9438 (uri (git-reference
9439 (url "https://github.com/rubyworks/ansi")
9440 (commit version)))
9441 (file-name (git-file-name name version))
9442 (sha256
9443 (base32
9444 "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5"))))
9445 (build-system ruby-build-system)
9446 (arguments
9447 `(#:phases
9448 (modify-phases %standard-phases
9449 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
9450 ;; cycle ansi, qed, ansi. Instead simply test that the library can
9451 ;; be require'd.
9452 (replace 'check
9453 (lambda _
9454 (invoke "ruby" "-Ilib" "-r" "ansi")))
9455 (add-before 'validate-runpath 'replace-broken-symlink
9456 (lambda* (#:key outputs #:allow-other-keys)
9457 (let* ((out (assoc-ref outputs "out"))
9458 (file (string-append
9459 out "/lib/ruby/vendor_ruby/gems/ansi-"
9460 ,version "/lib/ansi.yml")))
9461 ;; XXX: This symlink is broken since ruby 2.4.
9462 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
9463 (delete-file file)
9464 (symlink "../.index" file)
9465 #t))))))
9466 (synopsis "ANSI escape code related libraries")
9467 (description
9468 "This package is a collection of ANSI escape code related libraries
9469 enabling ANSI colorization and stylization of console output. Included in the
9470 library are the @code{Code} module, which defines ANSI codes as constants and
9471 methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
9472 @code{ProgressBar}, and a @code{String} subclass. The library also includes a
9473 @code{Terminal} module which provides information about the current output
9474 device.")
9475 (home-page "https://rubyworks.github.io/ansi/")
9476 (license license:bsd-2)))
9477
9478 (define-public ruby-systemu
9479 (package
9480 (name "ruby-systemu")
9481 (version "2.6.5")
9482 (source
9483 (origin
9484 (method url-fetch)
9485 (uri (rubygems-uri "systemu" version))
9486 (sha256
9487 (base32
9488 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
9489 (build-system ruby-build-system)
9490 (arguments
9491 `(#:phases
9492 (modify-phases %standard-phases
9493 (add-before 'check 'set-version
9494 (lambda _
9495 (setenv "VERSION" ,version)
9496 #t)))))
9497 (synopsis "Capture of stdout/stderr and handling of child processes")
9498 (description
9499 "Systemu can be used on any platform to return status, stdout, and stderr
9500 of any command. Unlike other methods like @code{open3} and @code{popen4}
9501 there is no danger of full pipes or threading issues hanging your process or
9502 subprocess.")
9503 (home-page "https://github.com/ahoward/systemu")
9504 (license license:ruby)))
9505
9506 (define-public ruby-bio-commandeer
9507 (package
9508 (name "ruby-bio-commandeer")
9509 (version "0.4.0")
9510 (source
9511 (origin
9512 (method url-fetch)
9513 (uri (rubygems-uri "bio-commandeer" version))
9514 (sha256
9515 (base32
9516 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
9517 (build-system ruby-build-system)
9518 (arguments
9519 `(#:phases
9520 (modify-phases %standard-phases
9521 (replace 'check
9522 ;; Run test without calling 'rake' so that jeweler is
9523 ;; not required as an input.
9524 (lambda _
9525 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
9526 (propagated-inputs
9527 `(("ruby-bio-logger" ,ruby-bio-logger)
9528 ("ruby-systemu" ,ruby-systemu)))
9529 (native-inputs
9530 `(("bundler" ,bundler)
9531 ("ruby-rspec" ,ruby-rspec)))
9532 (synopsis "Simplified running of shell commands from within Ruby")
9533 (description
9534 "Bio-commandeer provides an opinionated method of running shell commands
9535 from within Ruby. The advantage of bio-commandeer over other methods of
9536 running external commands is that when something goes wrong, messages printed
9537 to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
9538 detail to ease debugging.")
9539 (home-page "https://github.com/wwood/bioruby-commandeer")
9540 (license license:expat)))
9541
9542 (define-public ruby-rubytest
9543 (package
9544 (name "ruby-rubytest")
9545 (version "0.8.1")
9546 (source
9547 (origin
9548 (method url-fetch)
9549 (uri (rubygems-uri "rubytest" version))
9550 (sha256
9551 (base32
9552 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
9553 (build-system ruby-build-system)
9554 (arguments
9555 ;; Disable regular testing to break the cycle rubytest, qed, brass,
9556 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
9557 ;; simply test that the library can be require'd.
9558 `(#:phases
9559 (modify-phases %standard-phases
9560 (replace 'check
9561 (lambda _
9562 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
9563 (propagated-inputs
9564 `(("ruby-ansi" ,ruby-ansi)))
9565 (synopsis "Universal test harness for Ruby")
9566 (description
9567 "Rubytest is a testing meta-framework for Ruby. It can handle any
9568 compliant test framework and can run tests from multiple frameworks in a
9569 single pass.")
9570 (home-page "https://rubyworks.github.io/rubytest")
9571 (license license:bsd-2)))
9572
9573 (define-public ruby-brass
9574 (package
9575 (name "ruby-brass")
9576 (version "1.2.1")
9577 (source
9578 (origin
9579 (method url-fetch)
9580 (uri (rubygems-uri "brass" version))
9581 (sha256
9582 (base32
9583 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
9584 (build-system ruby-build-system)
9585 (arguments
9586 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
9587 ;; Instead simply test that the library can be require'd.
9588 `(#:phases
9589 (modify-phases %standard-phases
9590 (replace 'check
9591 (lambda _
9592 (invoke "ruby" "-Ilib" "-r" "brass"))))))
9593 (synopsis "Basic foundational assertions framework")
9594 (description
9595 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
9596 foundational assertions framework for other assertion and test frameworks to
9597 make use of.")
9598 (home-page "https://rubyworks.github.io/brass")
9599 (license license:bsd-2)))
9600
9601 (define-public ruby-qed
9602 (package
9603 (name "ruby-qed")
9604 (version "2.9.2")
9605 (source
9606 (origin
9607 (method url-fetch)
9608 (uri (rubygems-uri "qed" version))
9609 (sha256
9610 (base32
9611 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
9612 (build-system ruby-build-system)
9613 (arguments
9614 ;; Disable testing to break the cycle qed, ansi, qed, among others.
9615 ;; Instead simply test that the executable runs using --copyright.
9616 `(#:phases
9617 (modify-phases %standard-phases
9618 (replace 'check
9619 (lambda _
9620 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
9621 (propagated-inputs
9622 `(("ruby-ansi" ,ruby-ansi)
9623 ("ruby-brass" ,ruby-brass)))
9624 (synopsis "Test framework utilizing literate programming techniques")
9625 (description
9626 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
9627 @dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
9628 Development} (BDD) utilizing Literate Programming techniques. QED sits
9629 somewhere between lower-level testing tools like @code{Test::Unit} and
9630 requirement specifications systems like Cucumber.")
9631 (home-page "https://rubyworks.github.io/qed")
9632 (license license:bsd-2)))
9633
9634 (define-public ruby-que
9635 (package
9636 (name "ruby-que")
9637 (version "1.0.0.beta3")
9638 (source
9639 (origin
9640 (method url-fetch)
9641 (uri (rubygems-uri "que" version))
9642 (sha256
9643 (base32
9644 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
9645 (build-system ruby-build-system)
9646 (arguments
9647 '(#:tests? #f)) ; No included tests
9648 (synopsis "Job queue using PostgreSQL written in Ruby")
9649 (description
9650 "This package provides a job queue that uses PostgreSQL for storing jobs
9651 and locking between worker processes.")
9652 (home-page "https://github.com/chanks/que")
9653 (license license:expat)))
9654
9655 (define-public ruby-ae
9656 (package
9657 (name "ruby-ae")
9658 (version "1.8.2")
9659 (source
9660 (origin
9661 (method git-fetch)
9662 ;; Fetch from github so tests are included.
9663 (uri (git-reference
9664 (url "https://github.com/rubyworks/ae")
9665 (commit version)))
9666 (file-name (git-file-name name version))
9667 (sha256
9668 (base32
9669 "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp"))))
9670 (build-system ruby-build-system)
9671 (arguments
9672 `(#:phases
9673 (modify-phases %standard-phases
9674 (replace 'check
9675 (lambda _ (invoke "qed")))
9676 (add-before 'validate-runpath 'replace-broken-symlink
9677 (lambda* (#:key outputs #:allow-other-keys)
9678 (let* ((out (assoc-ref outputs "out"))
9679 (file (string-append
9680 out "/lib/ruby/vendor_ruby/gems/ae-"
9681 ,version "/lib/ae.yml")))
9682 ;; XXX: This symlink is broken since ruby 2.4.
9683 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
9684 (delete-file file)
9685 (symlink "../.index" file)
9686 #t))))))
9687 (propagated-inputs
9688 `(("ruby-ansi" ,ruby-ansi)))
9689 (native-inputs
9690 `(("ruby-qed" ,ruby-qed)))
9691 (synopsis "Assertions library")
9692 (description
9693 "Assertive Expressive (AE) is an assertions library specifically designed
9694 for reuse by other test frameworks.")
9695 (home-page "https://rubyworks.github.io/ae/")
9696 (license license:bsd-2)))
9697
9698 (define-public ruby-lemon
9699 (package
9700 (name "ruby-lemon")
9701 (version "0.9.1")
9702 (source
9703 (origin
9704 (method url-fetch)
9705 (uri (rubygems-uri "lemon" version))
9706 (sha256
9707 (base32
9708 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
9709 (build-system ruby-build-system)
9710 (arguments
9711 `(#:phases
9712 (modify-phases %standard-phases
9713 (replace 'check (lambda _ (invoke "qed"))))))
9714 (propagated-inputs
9715 `(("ruby-ae" ,ruby-ae)
9716 ("ruby-ansi" ,ruby-ansi)
9717 ("ruby-rubytest" ,ruby-rubytest)))
9718 (native-inputs
9719 `(("ruby-qed" ,ruby-qed)))
9720 (synopsis "Test framework correlating code structure and test unit")
9721 (description
9722 "Lemon is a unit testing framework that enforces highly formal
9723 case-to-class and unit-to-method test construction. This enforcement can help
9724 focus concern on individual units of behavior.")
9725 (home-page "https://rubyworks.github.io/lemon")
9726 (license license:bsd-2)))
9727
9728 (define-public ruby-rubytest-cli
9729 (package
9730 (name "ruby-rubytest-cli")
9731 (version "0.2.0")
9732 (source
9733 (origin
9734 (method url-fetch)
9735 (uri (rubygems-uri "rubytest-cli" version))
9736 (sha256
9737 (base32
9738 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
9739 (build-system ruby-build-system)
9740 (arguments
9741 `(#:tests? #f)) ; no tests
9742 (propagated-inputs
9743 `(("ruby-ansi" ,ruby-ansi)
9744 ("ruby-rubytest" ,ruby-rubytest)))
9745 (synopsis "Command-line interface for rubytest")
9746 (description
9747 "Rubytest CLI is a command-line interface for running tests for
9748 Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
9749 (home-page "https://rubyworks.github.io/rubytest-cli")
9750 (license license:bsd-2)))
9751
9752 (define-public ruby-hashery
9753 (package
9754 (name "ruby-hashery")
9755 (version "2.1.2")
9756 (source
9757 (origin
9758 (method url-fetch)
9759 (uri (rubygems-uri "hashery" version))
9760 (sha256
9761 (base32
9762 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
9763 (build-system ruby-build-system)
9764 (arguments
9765 `(#:phases
9766 (modify-phases %standard-phases
9767 (replace 'check
9768 (lambda _
9769 (invoke "qed")
9770 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
9771 (native-inputs
9772 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
9773 ("ruby-qed" ,ruby-qed)
9774 ("ruby-lemon" ,ruby-lemon)))
9775 (synopsis "Hash-like classes with extra features")
9776 (description
9777 "The Hashery is a tight collection of @code{Hash}-like classes.
9778 Included are the auto-sorting @code{Dictionary} class, the efficient
9779 @code{LRUHash}, the flexible @code{OpenHash} and the convenient
9780 @code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
9781 defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
9782 standard @code{Hash} making it possible to subclass and augment to fit any
9783 specific use case.")
9784 (home-page "https://rubyworks.github.io/hashery")
9785 (license license:bsd-2)))
9786
9787 (define-public ruby-rc4
9788 (package
9789 (name "ruby-rc4")
9790 (version "0.1.5")
9791 (source
9792 (origin
9793 (method url-fetch)
9794 (uri (rubygems-uri "ruby-rc4" version))
9795 (sha256
9796 (base32
9797 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
9798 (build-system ruby-build-system)
9799 (arguments
9800 `(#:phases
9801 (modify-phases %standard-phases
9802 (replace 'check
9803 (lambda _
9804 (invoke "rspec" "spec/rc4_spec.rb"))))))
9805 (native-inputs
9806 `(("ruby-rspec" ,ruby-rspec-2)))
9807 (synopsis "Implementation of the RC4 algorithm")
9808 (description
9809 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
9810 (home-page "https://github.com/caiges/Ruby-RC4")
9811 (license license:expat)))
9812
9813 (define-public ruby-afm
9814 (package
9815 (name "ruby-afm")
9816 (version "0.2.2")
9817 (source
9818 (origin
9819 (method url-fetch)
9820 (uri (rubygems-uri "afm" version))
9821 (sha256
9822 (base32
9823 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
9824 (build-system ruby-build-system)
9825 (native-inputs
9826 `(("bundler" ,bundler)))
9827 (synopsis "Read Adobe Font Metrics (afm) files")
9828 (description
9829 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
9830 files and use the data therein.")
9831 (home-page "https://github.com/halfbyte/afm")
9832 (license license:expat)))
9833
9834 (define-public ruby-ascii85
9835 (package
9836 (name "ruby-ascii85")
9837 (version "1.0.3")
9838 (source
9839 (origin
9840 (method url-fetch)
9841 (uri (rubygems-uri "Ascii85" version))
9842 (sha256
9843 (base32
9844 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
9845 (build-system ruby-build-system)
9846 (native-inputs
9847 `(("bundler" ,bundler)))
9848 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
9849 (description
9850 "This library provides methods to encode and decode Ascii85
9851 binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
9852 @dfn{Portable Document Format} (PDF) file formats.")
9853 (home-page "https://github.com/datawraith/ascii85gem")
9854 (license license:expat)))
9855
9856 (define-public ruby-ttfunk
9857 (package
9858 (name "ruby-ttfunk")
9859 (version "1.6.2.1")
9860 (source
9861 (origin
9862 (method git-fetch)
9863 ;; fetch from github as the gem does not contain testing code
9864 (uri (git-reference
9865 (url "https://github.com/prawnpdf/ttfunk")
9866 (commit version)))
9867 (file-name (git-file-name name version))
9868 (sha256
9869 (base32
9870 "0rsf4j6s97wbcnjbvmmh6xrc7imw4g9lrlcvn945wh400lc8r53z"))))
9871 (build-system ruby-build-system)
9872 (arguments
9873 `(#:test-target "spec"
9874 #:phases
9875 (modify-phases %standard-phases
9876 (add-before 'build 'remove-ssh
9877 (lambda _
9878 ;; remove dependency on an ssh key pair that doesn't exist
9879 (substitute* "ttfunk.gemspec"
9880 (("spec.signing_key.*") ""))
9881 #t))
9882 (add-before 'check 'remove-rubocop
9883 (lambda _
9884 ;; remove rubocop as a dependency as not needed for testing
9885 (substitute* "ttfunk.gemspec"
9886 (("spec.add_development_dependency\\('rubocop'.*") ""))
9887 (substitute* "Rakefile"
9888 (("require 'rubocop/rake_task'") "")
9889 (("RuboCop::RakeTask.new") ""))
9890 #t)))))
9891 (native-inputs
9892 `(("ruby-rspec" ,ruby-rspec)
9893 ("ruby-yard" ,ruby-yard)
9894 ("bundler" ,bundler)))
9895 (synopsis "Font metrics parser for the Prawn PDF generator")
9896 (description
9897 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
9898 part of the Prawn PDF generator.")
9899 (home-page "https://github.com/prawnpdf/ttfunk")
9900 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
9901 ;; for details."
9902 (license %prawn-project-licenses)))
9903
9904 (define-public ruby-puma
9905 (package
9906 (name "ruby-puma")
9907 (version "3.9.1")
9908 (source
9909 (origin
9910 (method git-fetch)
9911 ;; Fetch from GitHub because distributed gem does not contain tests.
9912 (uri (git-reference
9913 (url "https://github.com/puma/puma")
9914 (commit (string-append "v" version))))
9915 (file-name (git-file-name name version))
9916 (sha256
9917 (base32
9918 "1kj75k81iik3aj73pkc9ixj9rwf95ipkyma65n28m64dgw02qi1f"))))
9919 (build-system ruby-build-system)
9920 (arguments
9921 `(#:tests? #f ; Tests require an out-dated version of minitest.
9922 #:phases
9923 (modify-phases %standard-phases
9924 (add-before 'build 'fix-gemspec
9925 (lambda _
9926 (substitute* "puma.gemspec"
9927 (("git ls-files") "find * |sort"))
9928 #t)))))
9929 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
9930 (description
9931 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
9932 for Ruby/Rack applications. Puma is intended for use in both development and
9933 production environments. In order to get the best throughput, it is highly
9934 recommended that you use a Ruby implementation with real threads like Rubinius
9935 or JRuby.")
9936 (home-page "https://puma.io/")
9937 (license license:expat)))
9938
9939 (define-public ruby-hoe-git
9940 (package
9941 (name "ruby-hoe-git")
9942 (version "1.6.0")
9943 (source
9944 (origin
9945 (method url-fetch)
9946 (uri (rubygems-uri "hoe-git" version))
9947 (sha256
9948 (base32
9949 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
9950 (build-system ruby-build-system)
9951 (propagated-inputs
9952 `(("ruby-hoe" ,ruby-hoe)))
9953 (synopsis "Hoe plugins for tighter Git integration")
9954 (description
9955 "This package provides a set of Hoe plugins for tighter Git integration.
9956 It provides tasks to automate release tagging and pushing and changelog
9957 generation.")
9958 (home-page "https://github.com/jbarnette/hoe-git")
9959 (license license:expat)))
9960
9961 (define-public ruby-sequel
9962 (package
9963 (name "ruby-sequel")
9964 (version "4.49.0")
9965 (source
9966 (origin
9967 (method url-fetch)
9968 (uri (rubygems-uri "sequel" version))
9969 (sha256
9970 (base32
9971 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
9972 (build-system ruby-build-system)
9973 (arguments
9974 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
9975 (synopsis "Database toolkit for Ruby")
9976 (description "Sequel provides thread safety, connection pooling and a
9977 concise DSL for constructing SQL queries and table schemas. It includes a
9978 comprehensive ORM layer for mapping records to Ruby objects and handling
9979 associated records.")
9980 (home-page "https://sequel.jeremyevans.net")
9981 (license license:expat)))
9982
9983 (define-public ruby-timecop
9984 (package
9985 (name "ruby-timecop")
9986 (version "0.9.1")
9987 (source
9988 (origin
9989 (method url-fetch)
9990 (uri (rubygems-uri "timecop" version))
9991 (sha256
9992 (base32
9993 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
9994 (build-system ruby-build-system)
9995 (arguments
9996 `(#:phases
9997 (modify-phases %standard-phases
9998 (add-before 'check 'set-check-rubylib
9999 (lambda _
10000 ;; Set RUBYLIB so timecop tests finds its own lib.
10001 (setenv "RUBYLIB" "lib")
10002 #t)))))
10003 (native-inputs
10004 `(("bundler" ,bundler)
10005 ("ruby-minitest-rg" ,ruby-minitest-rg)
10006 ("ruby-mocha" ,ruby-mocha)
10007 ("ruby-activesupport" ,ruby-activesupport)))
10008 (synopsis "Test mocks for time-dependent functions")
10009 (description
10010 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
10011 making it easier to test time-dependent code. It provides a unified method to
10012 mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
10013 call.")
10014 (home-page "https://github.com/travisjeffery/timecop")
10015 (license license:expat)))
10016
10017 (define-public ruby-concurrent
10018 (package
10019 (name "ruby-concurrent")
10020 (version "1.1.5")
10021 (source
10022 (origin
10023 (method git-fetch)
10024 ;; Download from GitHub because the rubygems version does not contain
10025 ;; Rakefile.
10026 (uri (git-reference
10027 (url "https://github.com/ruby-concurrency/concurrent-ruby")
10028 (commit (string-append "v" version))))
10029 (file-name (git-file-name name version))
10030 (sha256
10031 (base32
10032 "193q2k47vk7qdvv9hlhmmdxgy91xl4imapyk1ijdg9vgf46knyzj"))))
10033 (build-system ruby-build-system)
10034 (arguments
10035 `(#:test-target "ci"
10036 #:phases
10037 (modify-phases %standard-phases
10038 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
10039 (lambda _
10040 ;; Delete extra gemspec files so 'first-gemspec' chooses the
10041 ;; correct one.
10042 (delete-file "concurrent-ruby-edge.gemspec")
10043 (delete-file "concurrent-ruby-ext.gemspec")
10044 #t))
10045 (replace 'replace-git-ls-files
10046 (lambda _
10047 ;; XXX: The default substitution made by this phase is not fully
10048 ;; compatible with "git ls-files". The latter produces file names
10049 ;; such as "lib/foo", whereas ruby-build-system uses "find . [...]"
10050 ;; which gives "./lib/foo". That difference in turn breaks the
10051 ;; comparison against a glob pattern in this script.
10052 (substitute* "concurrent-ruby.gemspec"
10053 (("git ls-files") "find * -type f | sort"))
10054 #t))
10055 (add-before 'build 'remove-jar-from-gemspec
10056 (lambda _
10057 ;; The gemspec wants to include a JAR file that we do not build
10058 ;; nor need.
10059 (substitute* "concurrent-ruby.gemspec"
10060 (("'lib/concurrent/concurrent_ruby.jar'")
10061 ""))
10062 #t))
10063 (add-before 'build 'remove-rake_compiler_dock-dependency
10064 (lambda _
10065 ;; This library is only used when building for non-MRI targets.
10066 (substitute* "Rakefile"
10067 (("require 'rake_compiler_dock'")
10068 ""))
10069 #t))
10070 (add-before 'check 'remove-timecop-dependency
10071 ;; Remove timecop-dependent tests as having timecop as a depedency
10072 ;; causes circular depedencies.
10073 (lambda _
10074 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
10075 (delete-file "spec/concurrent/scheduled_task_spec.rb")
10076 #t)))))
10077 (native-inputs
10078 `(("ruby-rake-compiler" ,ruby-rake-compiler)
10079 ("ruby-rspec" ,ruby-rspec)))
10080 (synopsis "Concurrency tools for Ruby")
10081 (description
10082 "This library provides modern concurrency tools including agents,
10083 futures, promises, thread pools, actors, supervisors, and more. It is
10084 inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
10085 patterns.")
10086 (home-page "http://www.concurrent-ruby.com")
10087 (license license:expat)))
10088
10089 (define-public ruby-pkg-config
10090 (package
10091 (name "ruby-pkg-config")
10092 (version "1.2.5")
10093 (source
10094 (origin
10095 (method url-fetch)
10096 (uri (rubygems-uri "pkg-config" version))
10097 (sha256
10098 (base32
10099 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
10100 (build-system ruby-build-system)
10101 (arguments
10102 ;; Tests require extra files not included in the gem.
10103 `(#:tests? #f))
10104 (synopsis "Detect libraries for compiling Ruby native extensions")
10105 (description
10106 "@code{pkg-config} can be used in your extconf.rb to properly detect need
10107 libraries for compiling Ruby native extensions.")
10108 (home-page "https://github.com/ruby-gnome2/pkg-config")
10109 (license license:lgpl2.0+)))
10110
10111 (define-public ruby-net-http-digest-auth
10112 (package
10113 (name "ruby-net-http-digest-auth")
10114 (version "1.4.1")
10115 (source
10116 (origin
10117 (method url-fetch)
10118 (uri (rubygems-uri "net-http-digest_auth" version))
10119 (sha256
10120 (base32
10121 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
10122 (build-system ruby-build-system)
10123 (native-inputs
10124 `(("ruby-hoe" ,ruby-hoe)))
10125 (synopsis "RFC 2617 HTTP digest authentication library")
10126 (description
10127 "This library implements HTTP's digest authentication scheme based on
10128 RFC 2617. This enables the use of the digest authentication scheme instead
10129 of the more insecure basic authentication scheme.")
10130 (home-page "https://github.com/drbrain/net-http-digest_auth")
10131 (license license:expat)))
10132
10133 (define-public ruby-mail
10134 (package
10135 (name "ruby-mail")
10136 (version "2.7.1")
10137 (source
10138 (origin
10139 (method url-fetch)
10140 (uri (rubygems-uri "mail" version))
10141 (sha256
10142 (base32
10143 "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc"))))
10144 (build-system ruby-build-system)
10145 (propagated-inputs
10146 `(("ruby-mini-mime" ,ruby-mini-mime)))
10147 (arguments
10148 '(#:tests? #f)) ; no rakefile
10149 (synopsis "Mail library for Ruby")
10150 (description
10151 "Mail is an internet library for Ruby that is designed to handle email
10152 generation, parsing and sending. The purpose of this library is to provide
10153 a single point of access to handle all email functions, including sending
10154 and receiving emails. All network type actions are done through proxy
10155 methods to @code{Net::SMTP}, @code{Net::POP3} etc.
10156
10157 Mail has been designed with a very simple object oriented system that
10158 really opens up the email messages you are parsing, if you know what you
10159 are doing, you can fiddle with every last bit of your email directly.")
10160 (home-page "https://github.com/mikel/mail")
10161 (license license:expat)))
10162
10163 (define-public ruby-mathn
10164 (package
10165 (name "ruby-mathn")
10166 (version "0.1.0")
10167 (source
10168 (origin
10169 (method url-fetch)
10170 (uri (rubygems-uri "mathn" version))
10171 (sha256
10172 (base32
10173 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
10174 (build-system ruby-build-system)
10175 (native-inputs
10176 `(("bundler" ,bundler)
10177 ("ruby-rake-compiler" ,ruby-rake-compiler)))
10178 (synopsis "Extends math operations for increased precision")
10179 (description
10180 "This gem makes mathematical operations more precise in Ruby and
10181 integrates other mathematical standard libraries. Prior to Ruby 2.5,
10182 @code{mathn} was part of the Ruby standard library.")
10183 (home-page "https://github.com/ruby/mathn")
10184 (license license:bsd-2)))
10185
10186 (define-public ruby-code-statistics
10187 (package
10188 (name "ruby-code-statistics")
10189 (version "0.2.13")
10190 (source
10191 (origin
10192 (method url-fetch)
10193 (uri (rubygems-uri "code_statistics" version))
10194 (sha256
10195 (base32
10196 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
10197 (build-system ruby-build-system)
10198 (arguments
10199 `(#:tests? #f)) ; Not all test code is included in gem.
10200 (synopsis "Port of the rails 'rake stats' method")
10201 (description
10202 "This gem is a port of the rails 'rake stats' method so it can be made
10203 more robust and work for non rails projects.")
10204 (home-page "https://github.com/danmayer/code_statistics")
10205 (license license:expat)))
10206
10207 (define-public ruby-rubypants
10208 (package
10209 (name "ruby-rubypants")
10210 (version "0.6.0")
10211 (source (origin
10212 (method url-fetch)
10213 (uri (rubygems-uri "rubypants" version))
10214 (sha256
10215 (base32
10216 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
10217 (build-system ruby-build-system)
10218 (arguments
10219 '(#:tests? #f)) ; need Codecov
10220 (synopsis "Port of the smart-quotes library SmartyPants")
10221 (description
10222 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
10223 original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
10224 and BBEdit that easily translates plain ASCII punctuation characters into
10225 smart typographic punctuation HTML entities.")
10226 (home-page "https://github.com/jmcnevin/rubypants")
10227 (license license:bsd-2)))
10228
10229 (define-public ruby-org-ruby
10230 (package
10231 (name "ruby-org-ruby")
10232 (version "0.9.12")
10233 (source (origin
10234 (method url-fetch)
10235 (uri (rubygems-uri "org-ruby" version))
10236 (sha256
10237 (base32
10238 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
10239 (build-system ruby-build-system)
10240 (arguments
10241 '(#:tests? #f)) ; no rakefile
10242 (propagated-inputs
10243 `(("ruby-rubypants" ,ruby-rubypants)))
10244 (synopsis "Org-mode parser written in Ruby")
10245 (description
10246 "Org-ruby is an org-mode parser written in Ruby. The most significant
10247 thing this library does today is convert org-mode files to HTML or Textile or
10248 Markdown.")
10249 (home-page "https://github.com/wallyqs/org-ruby")
10250 (license license:expat)))
10251
10252 (define-public ruby-rake
10253 (package
10254 (name "ruby-rake")
10255 (version "13.0.1")
10256 (source
10257 (origin
10258 (method url-fetch)
10259 (uri (rubygems-uri "rake" version))
10260 (sha256
10261 (base32
10262 "0w6qza25bq1s825faaglkx1k6d59aiyjjk3yw3ip5sb463mhhai9"))))
10263 (build-system ruby-build-system)
10264 (native-inputs
10265 `(("bundler" ,bundler)))
10266 (synopsis "Rake is a Make-like program implemented in Ruby")
10267 (description
10268 "Rake is a Make-like program where tasks and dependencies are specified
10269 in standard Ruby syntax.")
10270 (home-page "https://github.com/ruby/rake")
10271 (license license:expat)))
10272
10273 (define-public ruby-childprocess
10274 (package
10275 (name "ruby-childprocess")
10276 (version "3.0.0")
10277 (source
10278 (origin
10279 (method url-fetch)
10280 (uri (rubygems-uri "childprocess" version))
10281 (sha256
10282 (base32
10283 "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5"))))
10284 (build-system ruby-build-system)
10285 (arguments
10286 `(#:tests? #f))
10287 (native-inputs
10288 `(("bundler" ,bundler)
10289 ("ruby-rspec" ,ruby-rspec)))
10290 (propagated-inputs
10291 `(("ruby-ffi" ,ruby-ffi)))
10292 (synopsis "Control external programs running in the background, in Ruby")
10293 (description "@code{childprocess} provides a gem to control external
10294 programs running in the background, in Ruby.")
10295 (home-page "https://github.com/enkessler/childprocess")
10296 (license license:expat)))
10297
10298 (define-public ruby-public-suffix
10299 (package
10300 (name "ruby-public-suffix")
10301 (version "4.0.5")
10302 (source (origin
10303 (method url-fetch)
10304 (uri (rubygems-uri "public_suffix" version))
10305 (sha256
10306 (base32
10307 "0vywld400fzi17cszwrchrzcqys4qm6sshbv73wy5mwcixmrgg7g"))))
10308 (build-system ruby-build-system)
10309 (arguments
10310 '(#:phases
10311 (modify-phases %standard-phases
10312 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
10313 ;; including it as an input can lead to circular dependencies.
10314 (add-after 'unpack 'remove-rubocop-from-Rakefile
10315 (lambda _
10316 (substitute* "Rakefile"
10317 (("require \"rubocop/rake\\_task\"") "")
10318 (("RuboCop::RakeTask\\.new") ""))
10319 #t)))))
10320 (native-inputs
10321 `(("bundler" ,bundler)
10322 ("ruby-yard" ,ruby-yard)
10323 ("ruby-mocha" ,ruby-mocha)
10324 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
10325 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
10326 (synopsis "Domain name parser")
10327 (description "The gem @code{public_suffix} is a domain name parser,
10328 written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
10329 is one under which Internet users can (or historically could) directly
10330 register names. Some examples of public suffixes are @code{.com},
10331 @code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
10332 all known public suffixes.")
10333 (license license:expat)))
10334
10335 (define-public ruby-addressable
10336 (package
10337 (name "ruby-addressable")
10338 (version "2.7.0")
10339 (source (origin
10340 (method url-fetch)
10341 (uri (rubygems-uri "addressable" version))
10342 (sha256
10343 (base32
10344 "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy"))))
10345 (build-system ruby-build-system)
10346 (arguments
10347 '(#:test-target "spec"
10348 #:phases
10349 (modify-phases %standard-phases
10350 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
10351 (lambda _
10352 (substitute* "Gemfile"
10353 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
10354 ((".*launchy.*") "")
10355 ((".*rake.*") "gem 'rake'\n")
10356 ((".*redcarpet.*") ""))
10357 #t))
10358 (add-before 'check 'delete-network-dependent-test
10359 (lambda _
10360 (delete-file "spec/addressable/net_http_compat_spec.rb")
10361 #t)))))
10362 (native-inputs
10363 `(("ruby-rspec" ,ruby-rspec)
10364 ("bundler" ,bundler)
10365 ("ruby-idn-ruby" ,ruby-idn-ruby)
10366 ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
10367 ("ruby-rspec-its" ,ruby-rspec-its-minimal)
10368 ("ruby-yard" ,ruby-yard)
10369 ("ruby-simplecov" ,ruby-simplecov)))
10370 (propagated-inputs
10371 `(("ruby-public-suffix" ,ruby-public-suffix)))
10372 (home-page "https://github.com/sporkmonger/addressable")
10373 (synopsis "Alternative URI implementation")
10374 (description "Addressable is a replacement for the URI implementation that
10375 is part of Ruby's standard library. It more closely conforms to RFC 3986,
10376 RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
10377 (license license:asl2.0)))
10378
10379 (define-public ruby-colorize
10380 (package
10381 (name "ruby-colorize")
10382 (version "0.8.1")
10383 (source (origin
10384 (method url-fetch)
10385 (uri (rubygems-uri "colorize" version))
10386 (sha256
10387 (base32
10388 "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b"))))
10389 (build-system ruby-build-system)
10390 (arguments
10391 '(#:phases (modify-phases %standard-phases
10392 (add-before 'check 'remove-codeclimate-dependency
10393 (lambda _
10394 (substitute* "test/test_colorize.rb"
10395 ;; Do not hook the tests into the online CodeClimate
10396 ;; service which is unnecessary for these tests.
10397 (("require 'codeclimate-test-reporter'")
10398 "")
10399 (("CodeClimate.*") ""))
10400 #t)))))
10401 (synopsis "Add color effects to the @code{String} class")
10402 (description
10403 "This package extends the @code{String} class and adds a
10404 @code{ColorizedString} with methods to set text color, background color,
10405 and text effects.")
10406 (home-page "https://github.com/fazibear/colorize")
10407 (license license:gpl2+)))
10408
10409 (define-public ruby-colorator
10410 (package
10411 (name "ruby-colorator")
10412 (version "1.1.0")
10413 (source (origin
10414 (method url-fetch)
10415 (uri (rubygems-uri "colorator" version))
10416 (sha256
10417 (base32
10418 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
10419 (build-system ruby-build-system)
10420 (arguments
10421 ;; No test target
10422 `(#:tests? #f))
10423 (home-page "http://octopress.org/colorator/")
10424 (synopsis "Terminal color library")
10425 (description "Colorator is a Ruby gem that helps you colorize your text
10426 for the terminal.")
10427 (license license:expat)))
10428
10429 (define-public ruby-command-line-reporter
10430 (package
10431 (name "ruby-command-line-reporter")
10432 (version "4.0.1")
10433 (source (origin
10434 (method url-fetch)
10435 (uri (rubygems-uri "command_line_reporter" version))
10436 (sha256
10437 (base32
10438 "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll"))))
10439 (build-system ruby-build-system)
10440 (arguments
10441 ;; No Rakefile
10442 `(#:tests? #f
10443 #:phases
10444 (modify-phases %standard-phases
10445 (add-before 'build 'fix-dependencies
10446 (lambda _
10447 (substitute* ".gemspec"
10448 ;; colored is unmaintained
10449 (("colored") "colorator")
10450 ;; colorator version
10451 (("= 1.2") "= 1.1"))
10452 #t)))))
10453 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
10454 (home-page "https://github.com/wbailey/command_line_reporter")
10455 (synopsis "Report production while executing Ruby scripts")
10456 (description "This gem provides a DSL that makes it easy to write reports
10457 of various types in ruby. It eliminates the need to litter your source with
10458 puts statements, instead providing a more readable, expressive interface to
10459 your application.")
10460 (license license:asl2.0)))
10461
10462 (define-public ruby-command-line-reporter-3
10463 (package
10464 (inherit ruby-command-line-reporter)
10465 (version "3.3.6")
10466 (source (origin
10467 (method url-fetch)
10468 (uri (rubygems-uri "command_line_reporter" version))
10469 (sha256
10470 (base32
10471 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
10472
10473 (define-public ruby-kpeg
10474 (package
10475 (name "ruby-kpeg")
10476 (version "1.1.0")
10477 (source
10478 (origin
10479 (method url-fetch)
10480 (uri (rubygems-uri "kpeg" version))
10481 (sha256
10482 (base32
10483 "0x2kpfrcagj931masm5y1kwbnc6nxl60cqdcd3lyd1d2hz7kzlia"))))
10484 (build-system ruby-build-system)
10485 (native-inputs
10486 `(("ruby-hoe" ,ruby-hoe)))
10487 (synopsis "PEG library for Ruby")
10488 (description "KPeg is a simple PEG library for Ruby. It provides an API as
10489 well as native grammar to build the grammar. KPeg supports direct left
10490 recursion of rules via the
10491 @uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization}
10492 technique.")
10493 (home-page "https://github.com/evanphx/kpeg")
10494 (license license:expat)))
10495
10496 (define-public ruby-rdoc
10497 (package
10498 (name "ruby-rdoc")
10499 (version "6.2.0")
10500 (source
10501 (origin
10502 (method git-fetch)
10503 (uri (git-reference
10504 (url "https://github.com/ruby/rdoc")
10505 (commit (string-append "v" version))))
10506 (file-name (git-file-name name version))
10507 (sha256
10508 (base32
10509 "0dhk29nidv93b5vnjvlm9gcixgn4i0jcyzrgxdk6pdg019bw4cj6"))))
10510 (build-system ruby-build-system)
10511 (arguments
10512 `(#:phases
10513 (modify-phases %standard-phases
10514 (add-after 'unpack 'patch-gemspec
10515 ;; TODO: Remove after next release is tagged.
10516 (lambda _
10517 (substitute* "rdoc.gemspec"
10518 (("\"lib/rdoc/generator/template/darkfish/js/\
10519 jquery\\.js\", ") ""))
10520 #t))
10521 (add-before 'build 'generate
10522 ;; 'gem build' doesn't honor Rakefile dependencies (see:
10523 ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977).
10524 (lambda _
10525 (invoke "rake" "generate"))))))
10526 (native-inputs
10527 `(("bundler" ,bundler)
10528 ("ruby-kpeg" ,ruby-kpeg)
10529 ("ruby-racc" ,ruby-racc)
10530 ("ruby-rubocop" ,ruby-rubocop)))
10531 (home-page "https://ruby.github.io/rdoc/")
10532 (synopsis "HTML and command-line documentation utility")
10533 (description "RDoc produces HTML and command-line documentation for Ruby
10534 projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
10535 documentation from the command-line.")
10536 (license license:gpl2+)))
10537
10538 (define-public ruby-sass-listen
10539 (package
10540 (name "ruby-sass-listen")
10541 (version "4.0.0")
10542 (source (origin
10543 (method url-fetch)
10544 (uri (rubygems-uri "sass-listen" version))
10545 (sha256
10546 (base32
10547 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
10548 (build-system ruby-build-system)
10549 (arguments
10550 ;; No test target
10551 `(#:tests? #f))
10552 (propagated-inputs
10553 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
10554 ("ruby-rb-inotify" ,ruby-rb-inotify)))
10555 (home-page "https://github.com/sass/listen")
10556 (synopsis "File modification notification library")
10557 (description "The Listen gem listens to file modifications and notifies you
10558 about the changes.")
10559 (license license:expat)))
10560
10561 (define-public ruby-terminfo
10562 (package
10563 (name "ruby-terminfo")
10564 (version "0.1.1")
10565 (source
10566 (origin
10567 (method url-fetch)
10568 (uri (rubygems-uri "ruby-terminfo" version))
10569 (sha256
10570 (base32
10571 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
10572 (build-system ruby-build-system)
10573 (arguments
10574 `(#:test-target "test"
10575 ;; Rakefile requires old packages and would need modification to
10576 ;; work with current software.
10577 #:tests? #f))
10578 (inputs
10579 `(("ncurses" ,ncurses)))
10580 (native-inputs
10581 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
10582 ("ruby-rdoc" ,ruby-rdoc)))
10583 (home-page "http://www.a-k-r.org/ruby-terminfo/")
10584 (synopsis "Terminfo binding for Ruby")
10585 (description "Ruby-terminfo provides terminfo binding for Ruby.")
10586 (license license:bsd-3)))
10587
10588 (define-public ruby-diffy
10589 (package
10590 (name "ruby-diffy")
10591 (version "3.2.1")
10592 (source
10593 (origin
10594 (method url-fetch)
10595 (uri (rubygems-uri "diffy" version))
10596 (sha256
10597 (base32
10598 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
10599 (build-system ruby-build-system)
10600 (arguments
10601 ;; No tests
10602 `(#:tests? #f))
10603 (native-inputs
10604 `(("ruby-rspec" ,ruby-rspec)))
10605 (home-page "https://github.com/samg/diffy")
10606 (synopsis "Convenient diffing in ruby")
10607 (description "Diffy provides a convenient way to generate a diff from two
10608 strings or files.")
10609 (license license:expat)))
10610
10611 (define-public ruby-sass-spec
10612 (package
10613 (name "ruby-sass-spec")
10614 (version "3.5.4")
10615 (source
10616 (origin
10617 (method git-fetch)
10618 (uri (git-reference
10619 (url "https://github.com/sass/sass-spec")
10620 (commit (string-append "v" version))))
10621 (file-name (git-file-name name version))
10622 (sha256
10623 (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
10624 (build-system ruby-build-system)
10625 (propagated-inputs
10626 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
10627 ("ruby-diffy" ,ruby-diffy)
10628 ("ruby-terminfo" ,ruby-terminfo)))
10629 (arguments
10630 `(;; This package contains tests for a sass implementation, and the to
10631 ;; avoid any circular dependencies, the tests are not run here
10632 #:tests? #f
10633 #:phases
10634 (modify-phases %standard-phases
10635 (add-after 'unpack 'patch-test
10636 (lambda _
10637 (delete-file "spec/values/colors/alpha_hex-3.5/error")
10638 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
10639 (("string") "color")))))))
10640 (home-page "https://github.com/sass/sass-spec")
10641 (synopsis "Test suite for Sass")
10642 (description "Sass Spec is a test suite for Sass. Test cases are all in
10643 the @file{spec} directory.")
10644 (license license:expat)))
10645
10646 (define-public ruby-sass
10647 (package
10648 (name "ruby-sass")
10649 (version "3.6.0")
10650 (source (origin
10651 (method url-fetch)
10652 (uri (rubygems-uri "sass" version))
10653 (sha256
10654 (base32
10655 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
10656 (build-system ruby-build-system)
10657 (propagated-inputs
10658 `(("ruby-sass-listen" ,ruby-sass-listen)))
10659 (native-inputs
10660 `(("ruby-sass-spec" ,ruby-sass-spec)
10661 ("ruby-mathn" ,ruby-mathn)))
10662 (home-page "https://sass-lang.com/")
10663 (synopsis "CSS extension language")
10664 (description "Sass is a CSS extension language. It extends CSS with
10665 features that don't exist yet like variables, nesting, mixins and inheritance.")
10666 (license license:expat)))
10667
10668 (define-public ruby-sassc
10669 (package
10670 (name "ruby-sassc")
10671 (version "2.4.0")
10672 (source
10673 (origin
10674 (method url-fetch)
10675 (uri (rubygems-uri "sassc" version))
10676 (sha256
10677 (base32
10678 "0gpqv48xhl8mb8qqhcifcp0pixn206a7imc07g48armklfqa4q2c"))))
10679 (build-system ruby-build-system)
10680 (arguments
10681 '(#:modules ((guix build ruby-build-system)
10682 (guix build utils)
10683 (ice-9 textual-ports))
10684 #:phases
10685 (modify-phases %standard-phases
10686 ;; TODO: This would be better as a snippet, but the ruby-build-system
10687 ;; doesn't seem to support that
10688 (add-after 'unpack 'remove-libsass
10689 (lambda _
10690 (delete-file-recursively "ext")
10691 (with-atomic-file-replacement "sassc.gemspec"
10692 (lambda (in out)
10693 (let* ((gemspec (get-string-all in))
10694 (index (string-contains gemspec "libsass_dir")))
10695 (display (string-append
10696 (string-take gemspec index)
10697 "\nend\n")
10698 out))))
10699 #t))
10700 (add-after 'unpack 'dont-check-the-libsass-version
10701 (lambda _
10702 (substitute* "test/native_test.rb"
10703 (("assert_equal.*Native\\.version") ""))
10704 #t))
10705 (add-after 'unpack 'remove-git-from-gemspec
10706 (lambda _
10707 (substitute* "sassc.gemspec"
10708 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))
10709 #t))
10710 (add-after 'unpack 'remove-extensions-from-gemspec
10711 (lambda _
10712 (substitute* "sassc.gemspec"
10713 (("\\[\"ext/extconf.rb\"\\]") "[]"))
10714 #t))
10715 (add-after 'unpack 'fix-Rakefile
10716 (lambda _
10717 (substitute* "Rakefile"
10718 (("test: 'compile:libsass'") ":test"))
10719 #t))
10720 (add-after 'unpack 'remove-unnecessary-dependencies
10721 (lambda _
10722 (substitute* "test/test_helper.rb"
10723 (("require \"pry\"") ""))
10724 #t))
10725 (add-before 'build 'patch-native.rb
10726 (lambda* (#:key inputs #:allow-other-keys)
10727 (substitute* "lib/sassc/native.rb"
10728 ((".*gem_root = spec.gem_dir") "")
10729 (("ffi_lib .*\n")
10730 (string-append
10731 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))
10732 #t))
10733 ;; The gemspec still references the libsass files, so just keep the
10734 ;; one in the gem.
10735 (delete 'extract-gemspec))))
10736 (propagated-inputs
10737 `(("ruby-ffi" ,ruby-ffi)
10738 ("ruby-rake" ,ruby-rake)))
10739 (inputs
10740 `(("libsass" ,libsass)))
10741 (native-inputs
10742 `(("bundler" ,bundler)
10743 ("ruby-rake-compiler" ,ruby-rake-compiler)
10744 ("ruby-minitest-around" ,ruby-minitest-around)
10745 ("ruby-test-construct" ,ruby-test-construct)))
10746 (synopsis "Use libsss from Ruby")
10747 (description
10748 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
10749 bindings to the libsass library. This enables rendering
10750 @acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
10751 (home-page "https://github.com/sass/sassc-ruby")
10752 (license license:expat)))
10753
10754 (define-public ruby-jekyll-sass-converter
10755 (package
10756 (name "ruby-jekyll-sass-converter")
10757 (version "2.1.0")
10758 (source (origin
10759 (method url-fetch)
10760 (uri (rubygems-uri "jekyll-sass-converter" version))
10761 (sha256
10762 (base32
10763 "04ncr44wrilz26ayqwlg7379yjnkb29mvx4j04i62b7czmdrc9dv"))))
10764 (build-system ruby-build-system)
10765 (propagated-inputs
10766 `(("ruby-sass" ,ruby-sass)))
10767 (arguments
10768 ;; No rakefile
10769 `(#:tests? #f))
10770 (home-page "https://github.com/jekyll/jekyll-sass-converter")
10771 (synopsis "Sass converter for Jekyll")
10772 (description "This gem provide built-in support for the Sass converter
10773 in Jekyll.")
10774 (license license:expat)))
10775
10776 (define-public ruby-jekyll-watch
10777 (package
10778 (name "ruby-jekyll-watch")
10779 (version "2.1.2")
10780 (source (origin
10781 (method url-fetch)
10782 (uri (rubygems-uri "jekyll-watch" version))
10783 (sha256
10784 (base32
10785 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
10786 (build-system ruby-build-system)
10787 (propagated-inputs
10788 `(("ruby-listen" ,ruby-listen)))
10789 (arguments
10790 ;; No rakefile
10791 `(#:tests? #f))
10792 (home-page "https://github.com/jekyll/jekyll-watch")
10793 (synopsis "Jekyll auto-rebuild support")
10794 (description "This gems add the @code{--watch} switch to the jekyll CLI
10795 interface. It allows Jekyll to rebuild your site when a file changes.")
10796 (license license:expat)))
10797
10798 (define-public ruby-parallel
10799 (package
10800 (name "ruby-parallel")
10801 (version "1.13.0")
10802 (source
10803 (origin
10804 (method git-fetch)
10805 (uri (git-reference
10806 (url "https://github.com/grosser/parallel")
10807 (commit (string-append "v" version))))
10808 (file-name (git-file-name name version))
10809 (sha256
10810 (base32
10811 "1isqzbqxz2ndad4i5z3lb9ldrhaijfncj8bmffv04sq44sv87ikv"))))
10812 (build-system ruby-build-system)
10813 (arguments
10814 `(;; TODO 3 test failures
10815 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
10816 ;; open unnecessary pipes
10817 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
10818 ;; SQLite in processes
10819 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
10820 ;; SQLite in threads
10821 #:tests? #f
10822 #:test-target "rspec-rerun:spec"
10823 #:phases
10824 (modify-phases %standard-phases
10825 (add-after 'unpack 'patch-Gemfile
10826 (lambda _
10827 (substitute* "Gemfile"
10828 (("gem 'rspec-legacy_formatters'") "")
10829 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
10830 (add-before 'check 'delete-Gemfile.lock
10831 (lambda _
10832 ;; Bundler isn't being used for fetching dependendencies, so
10833 ;; delete the Gemfile.lock
10834 (delete-file "Gemfile.lock")
10835 #t))
10836 (add-before 'build 'patch-gemspec
10837 (lambda _
10838 (substitute* "parallel.gemspec"
10839 (("git ls-files") "find"))
10840 #t)))))
10841 (native-inputs
10842 `(("ruby-rspec" ,ruby-rspec)
10843 ("ruby-rspec-rerun" ,ruby-rspec-rerun)
10844 ("bundler" ,bundler)
10845 ("ruby-activerecord" ,ruby-activerecord)
10846 ("ruby-progressbar" ,ruby-progressbar)
10847 ("ruby-bump" ,ruby-bump)
10848 ("procps" ,procps)
10849 ("lsof" ,lsof)
10850 ("ruby-mysql2" ,ruby-mysql2)
10851 ("ruby-sqlite3" ,ruby-sqlite3)
10852 ("ruby-i18n" ,ruby-i18n)))
10853 (home-page "https://github.com/grosser/parallel")
10854 (synopsis "Parallel processing in Ruby")
10855 (description "Parallel allows you to run any code in parallel Processes
10856 (to use all CPUs) or Threads(to speedup blocking operations). It is best
10857 suited for map-reduce or e.g. parallel downloads/uploads.")
10858 (license license:expat)))
10859
10860 (define-public ruby-cane
10861 (package
10862 (name "ruby-cane")
10863 (version "3.0.0")
10864 (source (origin
10865 (method url-fetch)
10866 (uri (rubygems-uri "cane" version))
10867 (sha256
10868 (base32
10869 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
10870 (build-system ruby-build-system)
10871 (arguments `(#:tests? #f)); No rakefile
10872 (home-page "https://github.com/square/cane")
10873 (propagated-inputs
10874 `(("ruby-parallel" ,ruby-parallel)))
10875 (synopsis "Code quality threshold checking")
10876 (description "Cane fails your build if code quality thresholds are not met.")
10877 (license license:asl2.0)))
10878
10879 (define-public ruby-morecane
10880 (package
10881 (name "ruby-morecane")
10882 (version "0.2.0")
10883 (source (origin
10884 (method url-fetch)
10885 (uri (rubygems-uri "morecane" version))
10886 (sha256
10887 (base32
10888 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
10889 (build-system ruby-build-system)
10890 (home-page "https://github.com/yob/morecane")
10891 (arguments `(#:tests? #f)); No rakefile
10892 (propagated-inputs
10893 `(("ruby-parallel" ,ruby-parallel)))
10894 (synopsis "Extra checks for cane")
10895 (description "The cane gem provides a great framework for running quality
10896 checks over your ruby project as part of continuous integration build. It
10897 comes with a few checks out of the box, but also provides an API for loading
10898 custom checks. This gem provides a set of additional checks.")
10899 (license license:expat)))
10900
10901 (define-public ruby-pdf-reader
10902 (package
10903 (name "ruby-pdf-reader")
10904 (version "2.4.0")
10905 (source (origin
10906 (method git-fetch) ;no test in distributed gem archive
10907 (uri (git-reference
10908 (url "https://github.com/yob/pdf-reader")
10909 (commit (string-append "v" version))))
10910 (file-name (git-file-name name version))
10911 (sha256
10912 (base32
10913 "1yh8yrlssf5ppnkvk4m78vmh5r5vqwdcd0gm3lqipw162llz0rai"))))
10914 (build-system ruby-build-system)
10915 (arguments `(#:test-target "spec"
10916 #:phases (modify-phases %standard-phases
10917 (add-after 'unpack 'do-not-use-bundler
10918 (lambda _
10919 (substitute* "spec/spec_helper.rb"
10920 ((".*[Bb]undler.*") ""))
10921 #t)))))
10922 (native-inputs
10923 `(("ruby-rspec" ,ruby-rspec)
10924 ("ruby-cane" ,ruby-cane)
10925 ("ruby-morecane" ,ruby-morecane)))
10926 (propagated-inputs
10927 `(("ruby-afm" ,ruby-afm)
10928 ("ruby-ascii85" ,ruby-ascii85)
10929 ("ruby-hashery" ,ruby-hashery)
10930 ("ruby-rc4" ,ruby-rc4)
10931 ("ruby-ttfunk" ,ruby-ttfunk)))
10932 (home-page "https://github.com/yob/pdf-reader")
10933 (synopsis "PDF parser in Ruby")
10934 (description "The PDF::Reader library implements a PDF parser conforming as
10935 much as possible to the PDF specification from Adobe. It provides programmatic
10936 access to the contents of a PDF file with a high degree of flexibility.")
10937 (license license:gpl3+)))
10938
10939 (define-public ruby-pdf-inspector
10940 (let ((revision "1")
10941 (commit "00ee4c92ff917118785ebec188e81effc968abeb"))
10942 (package
10943 (name "ruby-pdf-inspector")
10944 (version (git-version "1.3.0" revision commit))
10945 (source (origin
10946 (method git-fetch)
10947 (uri (git-reference
10948 (url "https://github.com/prawnpdf/pdf-inspector")
10949 (commit commit)))
10950 (file-name (git-file-name name version))
10951 (sha256
10952 (base32
10953 "0h9w81ddd0gvkh5n2cvny9ddb5qiac1si0dhinkk0xxh5382qs0m"))))
10954 (build-system ruby-build-system)
10955 (arguments
10956 `(#:test-target "spec"
10957 #:phases (modify-phases %standard-phases
10958 (add-before 'build 'drop-signing-key-requirement
10959 (lambda _
10960 (substitute* "pdf-inspector.gemspec"
10961 (("spec.signing_key =.*")
10962 "spec.signing_key = nil"))
10963 #t))
10964 (replace 'check
10965 (lambda _
10966 (substitute* "pdf-inspector.gemspec"
10967 ((".*rubocop.*") "")
10968 ((".*yard.*") ""))
10969 (invoke "rspec"))))))
10970 (native-inputs
10971 `(("ruby-rspec" ,ruby-rspec)))
10972 (propagated-inputs
10973 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
10974 (home-page "https://github.com/prawnpdf/pdf-inspector")
10975 (synopsis "Analysis classes for inspecting PDF output")
10976 (description "This library provides a number of PDF::Reader based tools for
10977 use in testing PDF output. Presently, the primary purpose of this tool is to
10978 support the tests found in Prawn, a pure Ruby PDF generation library.")
10979 (license %prawn-project-licenses))))
10980
10981 (define-public ruby-pdf-core
10982 (package
10983 (name "ruby-pdf-core")
10984 (version "0.8.1")
10985 (source (origin
10986 (method url-fetch)
10987 (uri (rubygems-uri "pdf-core" version))
10988 (sha256
10989 (base32
10990 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
10991 (build-system ruby-build-system)
10992 (arguments
10993 ; No test target
10994 `(#:tests? #f))
10995 (home-page "https://github.com/prawnpdf/pdf-core")
10996 (synopsis "Low level PDF features for Prawn")
10997 (description "This is an experimental gem that extracts low-level PDF
10998 functionality from Prawn.")
10999 (license license:gpl3+)))
11000
11001 (define-public ruby-prawn
11002 ;; There hasn't been a new release since 2017/03/17.
11003 (let ((revision "1")
11004 (commit "d980247be8a00e7c59cd4e5785e3aa98f9856db1"))
11005 (package
11006 (name "ruby-prawn")
11007 (version (git-version "2.2.2" revision commit))
11008 (source (origin
11009 (method git-fetch)
11010 (uri (git-reference
11011 (url "https://github.com/prawnpdf/prawn")
11012 (commit commit)))
11013 (file-name (git-file-name name version))
11014 (sha256
11015 (base32
11016 "0mcmvf22h8il93yq48v9f31qpy27pvjxgv9172p0f4x9lqy0imwr"))))
11017 (build-system ruby-build-system)
11018 (arguments
11019 `(#:phases
11020 (modify-phases %standard-phases
11021 (add-before 'build 'drop-signing-key-requirement
11022 (lambda _
11023 (substitute* "prawn.gemspec"
11024 (("spec.signing_key =.*")
11025 "spec.signing_key = nil"))
11026 #t))
11027 (replace 'check
11028 (lambda* (#:key tests? #:allow-other-keys)
11029 (when tests?
11030 ;; The Prawn manual test fails (see:
11031 ;; https://github.com/prawnpdf/prawn/issues/1163), so exclude
11032 ;; it.
11033 (invoke "rspec" "--exclude-pattern" "prawn_manual_spec.rb"))
11034 #t)))))
11035 (propagated-inputs
11036 `(("ruby-pdf-core" ,ruby-pdf-core)
11037 ("ruby-ttfunk" ,ruby-ttfunk)))
11038 (native-inputs
11039 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
11040 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
11041 ("ruby-rspec" ,ruby-rspec)
11042 ("ruby-simplecov" ,ruby-simplecov)
11043 ("ruby-yard" ,ruby-yard)))
11044 (home-page "https://prawnpdf.org/api-docs/2.0/")
11045 (synopsis "PDF generation for Ruby")
11046 (description "Prawn is a pure Ruby PDF generation library.")
11047 (license %prawn-project-licenses))))
11048
11049 (define-public ruby-prawn-table
11050 (package
11051 (name "ruby-prawn-table")
11052 (version "0.2.2")
11053 (source (origin
11054 (method url-fetch)
11055 (uri (rubygems-uri "prawn-table" version))
11056 (sha256
11057 (base32
11058 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
11059 (build-system ruby-build-system)
11060 (propagated-inputs
11061 `(("ruby-prawn" ,ruby-prawn)
11062 ("ruby-pdf-inspector" ,ruby-pdf-inspector)))
11063 (native-inputs
11064 `(("bundler" ,bundler)
11065 ("ruby-yard" ,ruby-yard)
11066 ("ruby-mocha" ,ruby-mocha)
11067 ("ruby-coderay" ,ruby-coderay)
11068 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
11069 ("ruby-simplecov" ,ruby-simplecov)
11070 ("ruby-rspec-2" ,ruby-rspec-2)))
11071 (arguments
11072 '(;; TODO: 1 test fails
11073 ;; Failure/Error: pdf.page_count.should == 1
11074 ;; expected: 1
11075 ;; got: 2 (using ==)
11076 ;; # ./spec/table_spec.rb:1308
11077 ;;
11078 ;; 225 examples, 1 failure
11079 #:tests? #f
11080 #:phases
11081 (modify-phases %standard-phases
11082 (add-before 'check 'patch-gemspec
11083 (lambda _
11084 (substitute* "prawn-table.gemspec"
11085 ;; Loosen the requirement for pdf-inspector
11086 (("~> 1\\.1\\.0") ">= 0")
11087 ;; Loosen the requirement for pdf-reader
11088 (("~> 1\\.2") ">= 0"))))
11089 (replace 'check
11090 (lambda* (#:key tests? #:allow-other-keys)
11091 (when tests?
11092 (invoke "rspec"))
11093 #t)))))
11094 (home-page "https://github.com/prawnpdf/prawn-table")
11095 (synopsis "Tables support for Prawn")
11096 (description "This gem provides tables support for Prawn.")
11097 (license license:gpl3+)))
11098
11099 (define-public ruby-kramdown
11100 (package
11101 (name "ruby-kramdown")
11102 (version "2.3.0")
11103 (source (origin
11104 (method url-fetch)
11105 (uri (rubygems-uri "kramdown" version))
11106 (sha256
11107 (base32
11108 "1vmw752c26ny2jwl0npn0gbyqwgz4hdmlpxnsld9qi9xhk5b1qh7"))))
11109 (build-system ruby-build-system)
11110 (arguments `(#:tests? #f)); FIXME: some test failures
11111 (native-inputs
11112 `(("ruby-prawn" ,ruby-prawn)
11113 ("ruby-prawn-table" ,ruby-prawn-table)))
11114 (home-page "https://kramdown.gettalong.org/")
11115 (synopsis "Markdown parsing and converting library")
11116 (description "Kramdown is a library for parsing and converting a superset
11117 of Markdown. It is completely written in Ruby, supports standard Markdown
11118 (with some minor modifications) and various extensions that have been made
11119 popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
11120 (license license:expat)))
11121
11122 (define-public ruby-kramdown-parser-gfm
11123 (package
11124 (name "ruby-kramdown-parser-gfm")
11125 (version "1.1.0")
11126 (source
11127 (origin
11128 (method url-fetch)
11129 (uri (rubygems-uri "kramdown-parser-gfm" version))
11130 (sha256
11131 (base32 "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv"))))
11132 (build-system ruby-build-system)
11133 (arguments
11134 `(#:tests? #f)) ;no rakefile
11135 (propagated-inputs
11136 `(("ruby-kramdown" ,ruby-kramdown)))
11137 (synopsis "Kramdown parser for the GFM dialect of Markdown")
11138 (description
11139 "This is a parser for kramdown that converts Markdown documents in the
11140 GFM dialect to HTML.")
11141 (home-page "https://github.com/kramdown/parser-gfm")
11142 (license license:expat)))
11143
11144 (define-public ruby-http-parser.rb
11145 (package
11146 (name "ruby-http-parser.rb")
11147 (version "0.6.0")
11148 (source
11149 (origin
11150 (method url-fetch)
11151 (uri (rubygems-uri "http_parser.rb" version))
11152 (sha256
11153 (base32
11154 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
11155 (build-system ruby-build-system)
11156 (arguments
11157 ;; No tests
11158 `(#:tests? #f))
11159 (native-inputs
11160 `(("ruby-rake-compiler" ,ruby-rake-compiler)
11161 ("ruby-rspec" ,ruby-rspec)))
11162 (home-page "https://github.com/tmm1/http_parser.rb")
11163 (synopsis "HTTP parser un Ruby")
11164 (description "This gem is a simple callback-based HTTP request/response
11165 parser for writing http servers, clients and proxies.")
11166 (license license:expat)))
11167
11168 (define-public ruby-em-websocket
11169 (package
11170 (name "ruby-em-websocket")
11171 (version "0.5.1")
11172 (source
11173 (origin
11174 (method url-fetch)
11175 (uri (rubygems-uri "em-websocket" version))
11176 (sha256
11177 (base32
11178 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
11179 (build-system ruby-build-system)
11180 (arguments
11181 ;; No tests
11182 `(#:tests? #f))
11183 (propagated-inputs
11184 `(("ruby-eventmachine" ,ruby-eventmachine)
11185 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
11186 (native-inputs
11187 `(("bundler" ,bundler)
11188 ("ruby-rspec" ,ruby-rspec)))
11189 (home-page "https://github.com/igrigorik/em-websocket")
11190 (synopsis "EventMachine based WebSocket server")
11191 (description "Em-websocket is an EventMachine based WebSocket server
11192 implementation.")
11193 (license license:expat)))
11194
11195 (define-public ruby-rouge
11196 (package
11197 (name "ruby-rouge")
11198 (version "3.21.0")
11199 (source (origin
11200 (method url-fetch)
11201 (uri (rubygems-uri "rouge" version))
11202 (sha256
11203 (base32
11204 "1agrrmj88k9jkk36ra1ml2c1jffpp595pkxmcla74ac9ia09vn3s"))))
11205 (build-system ruby-build-system)
11206 (arguments `(#:tests? #f)); No rakefile
11207 (home-page "http://rouge.jneen.net/")
11208 (synopsis "Code highlighter")
11209 (description "Rouge is a code highlighter written in Ruby. It supports more
11210 than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
11211 is compatible with stylesheets designed for pygments.")
11212 (license (list
11213 ;; rouge is licensed under expat
11214 license:expat
11215 ;; pygments is licensed under bsd-2
11216 license:bsd-2))))
11217
11218 (define-public ruby-hashie
11219 (package
11220 (name "ruby-hashie")
11221 (version "3.6.0")
11222 (source (origin
11223 (method url-fetch)
11224 (uri (rubygems-uri "hashie" version))
11225 (sha256
11226 (base32
11227 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
11228 (build-system ruby-build-system)
11229 (native-inputs
11230 `(("bundler" ,bundler)))
11231 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
11232 (home-page "https://github.com/intridea/hashie")
11233 (synopsis "Extensions to Ruby Hashes")
11234 (description "Hashie is a collection of classes and mixins that make Ruby
11235 hashes more powerful.")
11236 (license license:expat)))
11237
11238 (define-public ruby-heredoc-unindent
11239 (package
11240 (name "ruby-heredoc-unindent")
11241 (version "1.2.0")
11242 (source (origin
11243 (method url-fetch)
11244 (uri (rubygems-uri "heredoc_unindent" version))
11245 (sha256
11246 (base32
11247 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
11248 (build-system ruby-build-system)
11249 (native-inputs
11250 `(("ruby-hoe" ,ruby-hoe)))
11251 (home-page "https://github.com/adrianomitre/heredoc_unindent")
11252 (synopsis "Heredoc indentation cleaner")
11253 (description "This gem removes common margin from indented strings, such
11254 as the ones produced by indented heredocs. In other words, it strips out
11255 leading whitespace chars at the beginning of each line, but only as much as
11256 the line with the smallest margin.
11257
11258 It is acknowledged that many strings defined by heredocs are just code and
11259 fact is that most parsers are insensitive to indentation. If, however, the
11260 strings are to be used otherwise, be it for printing or testing, the extra
11261 indentation will probably be an issue and hence this gem.")
11262 (license license:expat)))
11263
11264 (define-public ruby-safe-yaml
11265 (package
11266 (name "ruby-safe-yaml")
11267 (version "1.0.5")
11268 (source
11269 (origin
11270 (method git-fetch)
11271 (uri (git-reference
11272 (url "https://github.com/dtao/safe_yaml")
11273 (commit version)))
11274 (file-name (git-file-name name version))
11275 (sha256
11276 (base32
11277 "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg"))))
11278 (build-system ruby-build-system)
11279 (native-inputs
11280 `(("ruby-rspec" ,ruby-rspec)
11281 ("ruby-hashie" ,ruby-hashie)
11282 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
11283 (arguments
11284 '(#:test-target "spec"
11285 #:phases
11286 (modify-phases %standard-phases
11287 (add-before 'check 'set-TZ
11288 (lambda _
11289 ;; This test is dependent on the timezone
11290 ;; spec/transform/to_date_spec.rb:35
11291 ;; # SafeYAML::Transform::ToDate converts times to the local
11292 ;; timezone
11293 (setenv "TZ" "UTC-11")
11294 #t)))))
11295 (home-page "https://github.com/dtao/safe_yaml")
11296 (synopsis "YAML parser")
11297 (description "The SafeYAML gem provides an alternative implementation of
11298 YAML.load suitable for accepting user input in Ruby applications.")
11299 (license license:expat)))
11300
11301 (define-public ruby-mercenary
11302 (package
11303 (name "ruby-mercenary")
11304 (version "0.4.0")
11305 (source (origin
11306 (method url-fetch)
11307 (uri (rubygems-uri "mercenary" version))
11308 (sha256
11309 (base32
11310 "0f2i827w4lmsizrxixsrv2ssa3gk1b7lmqh8brk8ijmdb551wnmj"))))
11311 (build-system ruby-build-system)
11312 (arguments `(#:test-target "spec"))
11313 (native-inputs
11314 `(("bundler" ,bundler)))
11315 (home-page "https://github.com/jekyll/mercenary")
11316 (synopsis "Command-line apps library in Ruby")
11317 (description "Mercenary is a lightweight and flexible library for writing
11318 command-line apps in Ruby.")
11319 (license license:expat)))
11320
11321 (define-public ruby-liquid
11322 (package
11323 (name "ruby-liquid")
11324 (version "4.0.0")
11325 (source (origin
11326 (method url-fetch)
11327 (uri (rubygems-uri "liquid" version))
11328 (sha256
11329 (base32
11330 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
11331 (build-system ruby-build-system)
11332 (arguments `(#:tests? #f)); No rakefile
11333 (home-page "https://shopify.github.io/liquid/")
11334 (synopsis "Template language")
11335 (description "Liquid is a template language written in Ruby. It is used
11336 to load dynamic content on storefronts.")
11337 (license license:expat)))
11338
11339 (define-public ruby-forwardable-extended
11340 (package
11341 (name "ruby-forwardable-extended")
11342 (version "2.6.0")
11343 (source (origin
11344 (method url-fetch)
11345 (uri (rubygems-uri "forwardable-extended" version))
11346 (sha256
11347 (base32
11348 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
11349 (build-system ruby-build-system)
11350 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
11351 (home-page "https://github.com/envygeeks/forwardable-extended")
11352 (synopsis "Delegation to hashes and instance variables in Forwardable")
11353 (description "Forwardable Extended provides more @code{Forwardable}
11354 methods for your source as @code{Forwardable::Extended}.")
11355 (license license:expat)))
11356
11357 (define-public ruby-pathutil
11358 (package
11359 (name "ruby-pathutil")
11360 (version "0.16.2")
11361 (source (origin
11362 (method url-fetch)
11363 (uri (rubygems-uri "pathutil" version))
11364 (sha256
11365 (base32
11366 "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"))))
11367 (build-system ruby-build-system)
11368 (propagated-inputs
11369 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
11370 (native-inputs
11371 `(("bundler" ,bundler)
11372 ("ruby-rspec" ,ruby-rspec)))
11373 ;; Fails with: cannot load such file --
11374 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
11375 (arguments `(#:tests? #f))
11376 (home-page "https://github.com/envygeeks/pathutil")
11377 (synopsis "Extended implementation of Pathname")
11378 (description "Pathutil tries to be a faster pure Ruby implementation of
11379 Pathname.")
11380 (license license:expat)))
11381
11382 (define-public ruby-terminal-table
11383 (package
11384 (name "ruby-terminal-table")
11385 (version "2.0.0")
11386 (source
11387 (origin
11388 (method url-fetch)
11389 (uri (rubygems-uri "terminal-table" version))
11390 (sha256
11391 (base32
11392 "18rbrh464ysqbdv53iwj0r8frshn65566kyj044cp3x9c2754jwh"))))
11393 (arguments
11394 '(#:phases
11395 (modify-phases %standard-phases
11396 (add-before 'check 'remove-gemfile-lock
11397 (lambda _
11398 (delete-file "Gemfile.lock")))
11399 (add-before 'check 'remove-unnecessary-dependencies
11400 (lambda _
11401 (substitute* "terminal-table.gemspec"
11402 (("s.add_runtime_dependency.*") "\n")
11403 (("s.add_development_dependency.*") "\n"))
11404 (substitute* "Gemfile"
11405 ((".*tins.*") "\n"))))
11406 (replace 'check
11407 (lambda* (#:key tests? #:allow-other-keys)
11408 (when tests?
11409 (invoke "rspec")))))))
11410 (build-system ruby-build-system)
11411 (propagated-inputs
11412 `(("ruby-unicode-display-width" ,ruby-unicode-display-width)))
11413 (native-inputs
11414 `(("ruby-rspec" ,ruby-rspec)))
11415 (home-page "https://github.com/tj/terminal-table")
11416 (synopsis "Simple, feature rich ASCII table generation library")
11417 (description
11418 "Terminal Table is a fast and simple, yet feature rich
11419 table generator written in Ruby. It supports ASCII and
11420 Unicode formatted tables.")
11421 (license license:expat)))
11422
11423 (define-public jekyll
11424 (package
11425 (name "jekyll")
11426 (version "4.2.0")
11427 (source (origin
11428 (method url-fetch)
11429 (uri (rubygems-uri "jekyll" version))
11430 (sha256
11431 (base32
11432 "0cqkh78jw8scrajyx5nla0vwm9fvp2qql3kdcvvplcq9mazy8snq"))))
11433 (build-system ruby-build-system)
11434 (arguments
11435 ;; No rakefile, but a test subdirectory.
11436 `(#:tests? #f
11437 #:phases
11438 (modify-phases %standard-phases
11439 (add-before 'build 'fix-i18n
11440 (lambda _
11441 (substitute* ".gemspec"
11442 (("~> 0.7") ">= 0.7")
11443 (("~> 1.14") ">= 1.14"))
11444 #t)))))
11445 (propagated-inputs
11446 `(("ruby-addressable" ,ruby-addressable)
11447 ("ruby-colorator" ,ruby-colorator)
11448 ("ruby-em-websocket" ,ruby-em-websocket)
11449 ("ruby-i18n" ,ruby-i18n)
11450 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
11451 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
11452 ("ruby-kramdown" ,ruby-kramdown-parser-gfm)
11453 ("ruby-liquid" ,ruby-liquid)
11454 ("ruby-mercenary" ,ruby-mercenary)
11455 ("ruby-pathutil" ,ruby-pathutil)
11456 ("ruby-rouge" ,ruby-rouge)
11457 ("ruby-safe-yaml" ,ruby-safe-yaml)
11458 ("ruby-sassc" ,ruby-sassc)
11459 ("ruby-terminal-table" ,ruby-terminal-table)))
11460 (home-page "https://jekyllrb.com/")
11461 (synopsis "Static site generator")
11462 (description "Jekyll is a simple, blog aware, static site generator.")
11463 (license license:expat)))
11464
11465 (define-public ruby-jekyll-paginate-v2
11466 (package
11467 (name "ruby-jekyll-paginate-v2")
11468 (version "3.0.0")
11469 (source (origin
11470 (method url-fetch)
11471 (uri (rubygems-uri "jekyll-paginate-v2" version))
11472 (sha256
11473 (base32
11474 "1qzlqhpiqz28624fp0ak76hfy7908w6kpx62v7z43aiwjv0yc6q0"))))
11475 (build-system ruby-build-system)
11476 (propagated-inputs
11477 `(("jekyll" ,jekyll)))
11478 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
11479 (synopsis "Pagination Generator for Jekyll 3")
11480 (description "The Pagination Generator forms the core of the pagination
11481 logic in Jekyll. It calculates and generates the pagination pages.")
11482 (license license:expat)))
11483
11484 (define-public ruby-faraday
11485 (package
11486 (name "ruby-faraday")
11487 (version "0.15.4")
11488 (source
11489 (origin
11490 (method url-fetch)
11491 (uri (rubygems-uri "faraday" version))
11492 (sha256
11493 (base32
11494 "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0"))))
11495 (build-system ruby-build-system)
11496 (arguments
11497 '(#:tests? #f))
11498 (propagated-inputs
11499 `(("ruby-multipart-post" ,ruby-multipart-post)))
11500 (synopsis "Ruby HTTP/REST API client library")
11501 (description
11502 "Faraday is a HTTP/REST API client library which provides a common
11503 interface over different adapters.")
11504 (home-page "https://github.com/lostisland/faraday")
11505 (license license:expat)))
11506
11507 (define-public ruby-nio4r
11508 (package
11509 (name "ruby-nio4r")
11510 (version "2.5.2")
11511 (source
11512 (origin
11513 (method url-fetch)
11514 (uri (rubygems-uri "nio4r" version))
11515 (sha256
11516 (base32
11517 "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c"))))
11518 (build-system ruby-build-system)
11519 (arguments
11520 '(#:phases
11521 (modify-phases %standard-phases
11522 (add-after 'unpack 'remove-unnecessary-dependencies
11523 (lambda _
11524 (substitute* "spec/spec_helper.rb"
11525 ;; Coveralls is for uploading test coverage information to an
11526 ;; online service, and thus unnecessary for building the Guix
11527 ;; package
11528 (("require \"coveralls\"") "")
11529 (("Coveralls\\.wear!") "")
11530 ;; Remove rspec/retry as we are not retrying the tests
11531 (("require \"rspec/retry\"") "")
11532 (("config\\.display_try_failure_messages = true") "")
11533 (("config\\.verbose_retry = true") ""))
11534 #t))
11535 (add-before 'check 'compile
11536 (lambda _
11537 (invoke "rake" "compile")
11538 #t))
11539 (replace 'check
11540 (lambda* (#:key tests? #:allow-other-keys)
11541 (when tests?
11542 (invoke "rspec"))
11543 #t)))))
11544 (native-inputs
11545 `(("bundler" ,bundler)
11546 ("ruby-rake-compiler" ,ruby-rake-compiler)
11547 ("ruby-rspec" ,ruby-rspec)
11548 ("ruby-rubocop" ,ruby-rubocop)))
11549 (synopsis "New I/O for Ruby")
11550 (description
11551 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
11552 for scalable network clients and servers.")
11553 (home-page "https://github.com/socketry/nio4r")
11554 (license license:expat)))
11555
11556 (define-public ruby-globalid
11557 (package
11558 (name "ruby-globalid")
11559 (version "0.4.2")
11560 (source
11561 (origin
11562 (method url-fetch)
11563 (uri (rubygems-uri "globalid" version))
11564 (sha256
11565 (base32
11566 "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"))))
11567 (build-system ruby-build-system)
11568 (arguments
11569 '(;; No included tests
11570 #:tests? #f))
11571 (propagated-inputs
11572 `(("ruby-activesupport" ,ruby-activesupport)))
11573 (synopsis "Generate URIs idenfitying model instances in Ruby")
11574 (description
11575 "@code{GlobalID} provides a way to generate URIs from a model in Ruby that
11576 uniquely identify it.")
11577 (home-page "https://rubyonrails.org/")
11578 (license license:expat)))
11579
11580 (define-public ruby-sprockets
11581 (package
11582 (name "ruby-sprockets")
11583 (version "3.7.2")
11584 (source
11585 (origin
11586 (method url-fetch)
11587 (uri (rubygems-uri "sprockets" version))
11588 (sha256
11589 (base32
11590 "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"))))
11591 (build-system ruby-build-system)
11592 (arguments
11593 '(;; No included tests
11594 #:tests? #f))
11595 (propagated-inputs
11596 `(("ruby-concurrent" ,ruby-concurrent)
11597 ("ruby-rack" ,ruby-rack)))
11598 (synopsis "Sprockets is a Rack-based asset packaging system")
11599 (description
11600 "Sprockets is a Rack-based asset packaging system that concatenates and
11601 serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
11602 (home-page "https://github.com/rails/sprockets")
11603 (license license:expat)))
11604
11605 (define-public ruby-mustache
11606 (package
11607 (name "ruby-mustache")
11608 (version "1.1.1")
11609 (source
11610 (origin
11611 (method url-fetch)
11612 (uri (rubygems-uri "mustache" version))
11613 (sha256
11614 (base32 "1l0p4wx15mi3wnamfv92ipkia4nsx8qi132c6g51jfdma3fiz2ch"))))
11615 (build-system ruby-build-system)
11616 (native-inputs
11617 `(("ruby-simplecov" ,ruby-simplecov)))
11618 (synopsis "framework-agnostic way to render logic-free views")
11619 (description
11620 "Mustache is a framework-agnostic way to render logic-free views.
11621 Think of Mustache as a replacement for your views. Instead of views
11622 consisting of ERB or HAML with random helpers and arbitrary logic,
11623 your views are broken into two parts: a Ruby class and an HTML
11624 template.")
11625 (home-page "https://github.com/mustache/mustache")
11626 (license license:expat)))
11627
11628 (define-public ruby-mustermann
11629 (package
11630 (name "ruby-mustermann")
11631 (version "1.0.3")
11632 (source
11633 (origin
11634 (method url-fetch)
11635 (uri (rubygems-uri "mustermann" version))
11636 (sha256
11637 (base32
11638 "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1"))))
11639 (build-system ruby-build-system)
11640 (arguments
11641 ;; No tests.
11642 '(#:tests? #f))
11643 (synopsis "Library implementing patterns that behave like regular expressions")
11644 (description "Given a string pattern, Mustermann will turn it into an
11645 object that behaves like a regular expression and has comparable performance
11646 characteristics.")
11647 (home-page "https://github.com/sinatra/mustermann")
11648 (license license:expat)))
11649
11650 (define-public ruby-html-proofer
11651 (package
11652 (name "ruby-html-proofer")
11653 (version "3.18.5")
11654 (source
11655 (origin
11656 (method git-fetch)
11657 (uri (git-reference
11658 (url "https://github.com/gjtorikian/html-proofer")
11659 (commit (string-append "v" version))))
11660 (file-name (git-file-name name version))
11661 (sha256
11662 (base32
11663 "1pxb0fajb3l3lm7sqj548qwl7vx6sx3jy7n4cns9d4lqx7s9r9xb"))))
11664 (build-system ruby-build-system)
11665 (arguments
11666 `(;; FIXME: Tests depend on rubocop-standard.
11667 #:tests? #f))
11668 (native-inputs
11669 `(("ruby-awesome-print" ,ruby-awesome-print)
11670 ("ruby-redcarpet" ,ruby-redcarpet)
11671 ("ruby-rspec" ,ruby-rspec)
11672 ("ruby-rubocop" ,ruby-rubocop)
11673 ("ruby-rubocop-performance" ,ruby-rubocop-performance)
11674 ("ruby-pry-byebug" ,ruby-pry-byebug)))
11675 (propagated-inputs
11676 `(("ruby-addressable" ,ruby-addressable)
11677 ("ruby-mercenary" ,ruby-mercenary)
11678 ("ruby-nokogumbo" ,ruby-nokogumbo)
11679 ("ruby-parallel" ,ruby-parallel)
11680 ("ruby-rainbow" ,ruby-rainbow)
11681 ("ruby-typhoeus" ,ruby-typhoeus)
11682 ("ruby-yell" ,ruby-yell)))
11683 (synopsis "Test your rendered HTML files to make sure they're accurate")
11684 (description
11685 "HTMLProofer is a set of tests to validate your HTML output. These
11686 tests check if your image references are legitimate, if they have alt tags,
11687 if your internal links are working, and so on. It's intended to be an
11688 all-in-one checker for your output.")
11689 (home-page "https://github.com/gjtorikian/html-proofer")
11690 (license license:expat)))
11691
11692 (define-public ruby-htmlentities
11693 (package
11694 (name "ruby-htmlentities")
11695 (version "4.3.4")
11696 (source
11697 (origin
11698 (method url-fetch)
11699 (uri (rubygems-uri "htmlentities" version))
11700 (sha256
11701 (base32
11702 "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"))))
11703 (build-system ruby-build-system)
11704 (arguments
11705 `(#:phases
11706 (modify-phases %standard-phases
11707 (replace 'check
11708 (lambda _
11709 (map (lambda (file)
11710 (invoke "ruby" "-Itest" file))
11711 (find-files "./test" ".*_test\\.rb")))))))
11712 (synopsis "Encode and decode (X)HTML entities")
11713 (description
11714 "This package provides a module for encoding and decoding (X)HTML
11715 entities.")
11716 (home-page "https://github.com/threedaymonk/htmlentities")
11717 (license license:expat)))
11718
11719 (define-public ruby-sinatra
11720 (package
11721 (name "ruby-sinatra")
11722 (version "2.0.8.1")
11723 (source
11724 (origin
11725 (method url-fetch)
11726 (uri (rubygems-uri "sinatra" version))
11727 (sha256
11728 (base32
11729 "0riy3hwjab1mr73jcqx3brmbmwspnw3d193j06a5f0fy1w35z15q"))))
11730 (build-system ruby-build-system)
11731 (arguments
11732 `(#:phases
11733 (modify-phases %standard-phases
11734 ;; See: https://github.com/sinatra/sinatra/issues/1578.
11735 (add-after 'extract-gemspec 'fix-slow-doc-generation
11736 (lambda _
11737 (substitute* "sinatra.gemspec"
11738 (("\"README.rdoc\"\\.freeze," all)
11739 (string-append all " \"--exclude=.*\\.md\".freeze,")))
11740 #t)))))
11741 (propagated-inputs
11742 `(("ruby-mustermann" ,ruby-mustermann)
11743 ("ruby-rack" ,ruby-rack)
11744 ("ruby-rack-protection" ,ruby-rack-protection)
11745 ("ruby-tilt" ,ruby-tilt)))
11746 (synopsis "DSL for quick web applications creation in Ruby")
11747 (description
11748 "Sinatra is a DSL for quickly creating web applications in Ruby with
11749 minimal effort.")
11750 (home-page "http://sinatrarb.com/")
11751 (license license:expat)))
11752
11753 (define-public ruby-thin
11754 (package
11755 (name "ruby-thin")
11756 (version "1.7.2")
11757 (source
11758 (origin
11759 (method url-fetch)
11760 (uri (rubygems-uri "thin" version))
11761 (sha256
11762 (base32
11763 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
11764 (build-system ruby-build-system)
11765 (arguments
11766 ;; No tests.
11767 '(#:tests? #f))
11768 (propagated-inputs
11769 `(("ruby-daemons" ,ruby-daemons)
11770 ("ruby-eventmachine" ,ruby-eventmachine)
11771 ("ruby-rack" ,ruby-rack)))
11772 (synopsis "Thin and fast web server for Ruby")
11773 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
11774 @itemize
11775 @item the Mongrel parser,
11776 @item Event Machine, a network I/O library with high scalability, performance
11777 and stability,
11778 @item Rack, a minimal interface between webservers and Ruby frameworks.
11779 @end itemize\n")
11780 (home-page "https://github.com/macournoyer/thin")
11781 (license license:ruby)))
11782
11783 (define-public ruby-skinny
11784 (package
11785 (name "ruby-skinny")
11786 (version "0.2.4")
11787 (source
11788 (origin
11789 (method url-fetch)
11790 (uri (rubygems-uri "skinny" version))
11791 (sha256
11792 (base32
11793 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
11794 (build-system ruby-build-system)
11795 (arguments
11796 '(#:tests? #f ; No included tests
11797 #:phases
11798 (modify-phases %standard-phases
11799 (add-before 'build 'patch-gemspec
11800 (lambda _
11801 (substitute* ".gemspec"
11802 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
11803 "<eventmachine>, [\">= 1.0.0\"")
11804 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, ["))
11805 #t)))))
11806 (propagated-inputs
11807 `(("ruby-eventmachine" ,ruby-eventmachine)
11808 ("ruby-thin" ,ruby-thin)))
11809 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
11810 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
11811 the Thin library.")
11812 (home-page "https://github.com/sj26/skinny")
11813 (license license:expat)))
11814
11815 (define-public ruby-sys-filesystem
11816 (package
11817 (name "ruby-sys-filesystem")
11818 (version "1.3.4")
11819 (source (origin
11820 (method url-fetch)
11821 (uri (rubygems-uri "sys-filesystem" version))
11822 (sha256
11823 (base32
11824 "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01"))))
11825 (build-system ruby-build-system)
11826 (arguments
11827 '(#:phases (modify-phases %standard-phases
11828 (add-before 'check 'set-HOME
11829 (lambda _
11830 ;; Some tests attempt to stat $HOME. Let them.
11831 (setenv "HOME" "/tmp")
11832 #t)))))
11833 (propagated-inputs
11834 `(("ruby-ffi" ,ruby-ffi)))
11835 (native-inputs
11836 `(("ruby-mkmf-lite" ,ruby-mkmf-lite)))
11837 (synopsis "Gather file system information")
11838 (description
11839 "The @code{sys-filesystem} library provides a cross-platform interface
11840 for gathering file system information, such as disk space and mount points.")
11841 (home-page "https://github.com/djberg96/sys-filesystem")
11842 (license license:asl2.0)))
11843
11844 (define-public mailcatcher
11845 (package
11846 (name "mailcatcher")
11847 (version "0.7.1")
11848 (source
11849 (origin
11850 (method url-fetch)
11851 (uri (rubygems-uri "mailcatcher" version))
11852 (sha256
11853 (base32
11854 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
11855 (build-system ruby-build-system)
11856 (arguments
11857 ;; Tests require web/assets which is not included in the output. We
11858 ;; might be able to fix this by adding the Git repository to the GEM_PATH
11859 ;; of the tests. See ruby-mysql2.
11860 '(#:tests? #f
11861 #:phases
11862 (modify-phases %standard-phases
11863 (add-before 'build 'patch-gemspec
11864 (lambda _
11865 (substitute* ".gemspec"
11866 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
11867 "<eventmachine>, [\">= 1.0.9.1")
11868 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
11869 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
11870 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))
11871 #t))
11872 (add-before 'build 'loosen-dependency-contraint
11873 (lambda _
11874 (substitute* "lib/mail_catcher.rb"
11875 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
11876 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
11877 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
11878 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))
11879 #t)))))
11880 (inputs
11881 `(("ruby-eventmachine" ,ruby-eventmachine)
11882 ("ruby-mail" ,ruby-mail)
11883 ("ruby-rack" ,ruby-rack)
11884 ("ruby-sinatra" ,ruby-sinatra)
11885 ("ruby-skinny" ,ruby-skinny)
11886 ("ruby-sqlite3" ,ruby-sqlite3)
11887 ("ruby-thin" ,ruby-thin)))
11888 (synopsis "SMTP server which catches messages to display them a browser")
11889 (description
11890 "MailCatcher runs a super simple SMTP server which catches any message
11891 sent to it to display in a web interface. Run mailcatcher, set your favourite
11892 app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
11893 then check out http://127.0.0.1:1080 to see the mail.")
11894 (home-page "https://mailcatcher.me")
11895 (license license:expat)))
11896
11897 (define-public ruby-backport
11898 (package
11899 (name "ruby-backport")
11900 (version "1.1.2")
11901 (source
11902 (origin
11903 ;; The gem does not include test code, so fetch from the Git repository.
11904 (method git-fetch)
11905 (uri (git-reference
11906 (url "https://github.com/castwide/backport")
11907 (commit (string-append "v" version))))
11908 (file-name (git-file-name name version))
11909 (sha256
11910 (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2"))))
11911 (build-system ruby-build-system)
11912 (arguments
11913 `(#:test-target "spec"))
11914 (native-inputs
11915 `(("bundler" ,bundler)
11916 ("ruby-rspec" ,ruby-rspec)))
11917 (inputs
11918 `(("ruby-simplecov" ,ruby-simplecov)))
11919 (synopsis "Pure Ruby library for event-driven IO")
11920 (description
11921 "This package provides a pure Ruby library for event-driven IO.")
11922 (home-page "https://github.com/castwide/backport")
11923 (license license:expat)))
11924
11925 (define-public ruby-json-schema
11926 (package
11927 (name "ruby-json-schema")
11928 (version "2.8.1")
11929 (source
11930 (origin
11931 (method url-fetch)
11932 (uri (rubygems-uri "json-schema" version))
11933 (sha256
11934 (base32
11935 "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5"))))
11936 (build-system ruby-build-system)
11937 (arguments
11938 `(#:tests? #f ; no tests
11939 #:phases
11940 (modify-phases %standard-phases
11941 (replace 'build
11942 (lambda _
11943 (invoke "gem" "build" ".gemspec"))))))
11944 (propagated-inputs
11945 `(("ruby-addressable" ,ruby-addressable)))
11946 (synopsis "Ruby JSON Schema Validator")
11947 (description "This library provides Ruby with an interface for validating
11948 JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy
11949 support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1
11950 is also included.")
11951 (home-page "https://github.com/ruby-json-schema/json-schema")
11952 (license license:expat)))
11953
11954 (define-public swagger-diff
11955 (package
11956 (name "swagger-diff")
11957 (version "1.1.2")
11958 (source
11959 (origin
11960 (method url-fetch)
11961 (uri (rubygems-uri "swagger-diff" version))
11962 (sha256
11963 (base32
11964 "1hxx50nga1bqn254iqjcdwkc9c72364ks9lyjyw10ajz0l0ly7sn"))))
11965 (build-system ruby-build-system)
11966 (arguments
11967 `(#:test-target "spec"
11968 #:phases
11969 (modify-phases %standard-phases
11970 ;; Don't run or require rubocop, the code linting tool, as this is a
11971 ;; bit unnecessary.
11972 (add-after 'unpack 'dont-run-rubocop
11973 (lambda _
11974 (substitute* "Rakefile"
11975 ((".*rubocop.*") "")
11976 ((".*RuboCop.*") ""))
11977 #t)))))
11978 (propagated-inputs
11979 `(("ruby-json-schema" ,ruby-json-schema)))
11980 (native-inputs
11981 `(("bundler" ,bundler)
11982 ("ruby-rspec-core" ,ruby-rspec-core)
11983 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
11984 (synopsis
11985 "Compare Open API Initiative specification files")
11986 (description
11987 "Swagger::Diff is a utility for comparing two different Open API
11988 Initiative (OAI) specifications (formerly known as Swagger specifications).
11989 It is intended to determine whether a newer API specification is
11990 backwards-compatible with an older API specification.")
11991 (home-page "https://github.com/civisanalytics/swagger-diff")
11992 (license license:bsd-3)))
11993
11994 (define-public ruby-reverse-markdown
11995 (package
11996 (name "ruby-reverse-markdown")
11997 (version "1.1.0")
11998 (source
11999 (origin
12000 (method url-fetch)
12001 (uri (rubygems-uri "reverse_markdown" version))
12002 (sha256
12003 (base32
12004 "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg"))))
12005 (build-system ruby-build-system)
12006 (propagated-inputs
12007 `(("ruby-nokogiri" ,ruby-nokogiri)))
12008 (native-inputs
12009 `(("bundler" ,bundler)
12010 ("ruby-rspec" ,ruby-rspec)
12011 ("ruby-kramdown" ,ruby-kramdown)
12012 ("ruby-simplecov" ,ruby-simplecov)))
12013 (arguments
12014 `(#:phases
12015 (modify-phases %standard-phases
12016 (replace 'check
12017 (lambda* (#:key tests? #:allow-other-keys)
12018 (when tests?
12019 (invoke "rspec"))
12020 #t)))))
12021 (synopsis "Convert HTML into Markdown")
12022 (description
12023 "This Ruby module allows you to map simple HTML back into
12024 Markdown---e.g., if you want to import existing HTML data in your
12025 application.")
12026 (home-page "https://github.com/xijo/reverse_markdown")
12027 (license license:wtfpl2)))
12028
12029 (define-public ruby-solargraph
12030 (package
12031 (name "ruby-solargraph")
12032 (version "0.40.3")
12033 (source
12034 (origin
12035 (method url-fetch)
12036 (uri (rubygems-uri "solargraph" version))
12037 (sha256
12038 (base32
12039 "1gf049rm0yvw4r8r5yyi890idbfg8qh0dikqx5prvkh11srl73bz"))))
12040 (build-system ruby-build-system)
12041 (propagated-inputs
12042 `(("ruby-backport" ,ruby-backport)
12043 ("bundler" ,bundler)
12044 ("ruby-benchmark" ,ruby-benchmark)
12045 ("ruby-e2mmap" ,ruby-e2mmap)
12046 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
12047 ("ruby-kramdown" ,ruby-kramdown)
12048 ("ruby-kramdown-parser-gfm" ,ruby-kramdown-parser-gfm)
12049 ("ruby-maruku" ,ruby-maruku)
12050 ("ruby-nokogiri" ,ruby-nokogiri)
12051 ("ruby-parser" ,ruby-parser)
12052 ("ruby-reverse-markdown" ,ruby-reverse-markdown)
12053 ("ruby-rubocop" ,ruby-rubocop)
12054 ("ruby-thor" ,ruby-thor)
12055 ("ruby-tilt" ,ruby-tilt)
12056 ("ruby-yard" ,ruby-yard)))
12057 (native-inputs
12058 `(("ruby-rspec" ,ruby-rspec)
12059 ("ruby-pry" ,ruby-pry)
12060 ("ruby-simplecov" ,ruby-simplecov)
12061 ("ruby-webmock" ,ruby-webmock)))
12062 ;; FIXME: can't figure out how to run the tests properly:
12063
12064 ;; An error occurred while loading spec_helper.
12065 ;; Failure/Error: return gem_original_require(path)
12066 ;; LoadError:
12067 ;; cannot load such file -- spec_helper
12068 (arguments
12069 '(#:tests? #f
12070 #:phases
12071 (modify-phases %standard-phases
12072 (replace 'check
12073 (lambda* (#:key tests? #:allow-other-keys)
12074 (when tests?
12075 (invoke "rspec"))
12076 #t)))))
12077 (synopsis
12078 "IDE tools for code completion, inline documentation, and static analysis")
12079 (description
12080 "Solargraph provides a comprehensive suite of tools for Ruby
12081 programming: intellisense, diagnostics, inline documentation, and type
12082 checking.")
12083 (home-page "https://solargraph.org/")
12084 (license license:expat)))
12085
12086 (define-public ruby-wayback-machine-downloader
12087 (package
12088 (name "ruby-wayback-machine-downloader")
12089 (version "2.2.1")
12090 (source
12091 (origin
12092 (method url-fetch)
12093 (uri (rubygems-uri
12094 "wayback_machine_downloader"
12095 version))
12096 (sha256
12097 (base32
12098 "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2"))))
12099 (build-system ruby-build-system)
12100 (arguments
12101 '(#:tests? #f)) ; no tests
12102 (synopsis "Download archived websites from the Wayback Machine")
12103 (description
12104 "Wayback Machine Downloader is a command line tool for downloading
12105 websites from the Internet Archive's Wayback Machine (archive.org).
12106 It allows fine grained control over what to download by specifying
12107 which snapshots to consider and what files to include.")
12108 (home-page
12109 "https://github.com/hartator/wayback-machine-downloader")
12110 (license license:expat)))
12111
12112 (define-public ruby-zeitwerk
12113 (package
12114 (name "ruby-zeitwerk")
12115 (version "2.4.2")
12116 (source
12117 (origin
12118 (method git-fetch)
12119 (uri (git-reference
12120 ;; No tests in the released gem.
12121 (url "https://github.com/fxn/zeitwerk")
12122 (commit (string-append "v" version))))
12123 (file-name (git-file-name name version))
12124 (sha256
12125 (base32
12126 "119fgdyb57gmss2yvfwfr47wcy8nny38sai72446krpihyavpizw"))))
12127 (build-system ruby-build-system)
12128 (native-inputs
12129 `(("ruby-minitest" ,ruby-minitest)
12130 ("ruby-minitest-focus" ,ruby-minitest-focus)
12131 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
12132 (synopsis "Efficient and thread-safe code loader for Ruby")
12133 (description
12134 "Zeitwerk implements constant autoloading with Ruby semantics. Each gem
12135 and application may have their own independent autoloader, with its own
12136 configuration, inflector, and logger. Supports autoloading, reloading, and
12137 eager loading.")
12138 (home-page "https://github.com/fxn/zeitwerk")
12139 (license license:expat)))
12140
12141 (define-public ruby-wwtd
12142 (package
12143 (name "ruby-wwtd")
12144 (version "1.4.1")
12145 (home-page "https://github.com/grosser/wwtd")
12146 (source (origin
12147 (method git-fetch)
12148 (uri (git-reference
12149 (url home-page)
12150 (commit (string-append "v" version))))
12151 (file-name (git-file-name name version))
12152 (sha256
12153 (base32
12154 "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2"))
12155 (modules '((guix build utils)))
12156 (snippet
12157 '(begin
12158 ;; Remove bundled library.
12159 (delete-file "spec/rake-12.3.0.gem")
12160 #t))))
12161 (build-system ruby-build-system)
12162 (arguments
12163 '(;; XXX: Tests need multiple versions of ruby, wants to run
12164 ;; `bundle install`, etc.
12165 #:tests? #f
12166 #:phases (modify-phases %standard-phases
12167 (replace 'replace-git-ls-files
12168 (lambda _
12169 (substitute* "wwtd.gemspec"
12170 (("git ls-files lib/ bin/`")
12171 "find lib/ bin/ -type f |sort`"))
12172 #t))
12173 (add-before 'check 'remove-version-constraints
12174 (lambda _
12175 (delete-file "Gemfile.lock")
12176 #t))
12177 (replace 'check
12178 (lambda* (#:key tests? #:allow-other-keys)
12179 (if tests?
12180 (invoke "rspec" "spec/")
12181 (format #t "test suite not run~%"))
12182 #t)))))
12183 (native-inputs
12184 `(("ruby-bump" ,ruby-bump)
12185 ("ruby-rspec" ,ruby-rspec)))
12186 (synopsis "Run @file{.travis.yml} files locally")
12187 (description
12188 "WWTD is a @dfn{Travis Simulator} that lets you run test matrices
12189 defined in @file{.travis.yml} on your local machine, using @code{rvm},
12190 @code{rbenv}, or @code{chruby} to test different versions of Ruby.")
12191 (license license:expat)))
12192
12193 (define-public ruby-rugged
12194 (package
12195 (name "ruby-rugged")
12196 (version "1.1.0")
12197 (home-page "https://www.rubydoc.info/gems/rugged")
12198 (source
12199 (origin
12200 (method url-fetch)
12201 (uri (rubygems-uri "rugged" version))
12202 (sha256
12203 (base32 "04aq913plcxjw71l5r62qgz3bx3466p0wvgyfqahg5n3nybmcwqy"))))
12204 (build-system ruby-build-system)
12205 (arguments
12206 `(#:tests? #f
12207 #:gem-flags (list "--" "--use-system-libraries")))
12208 (inputs
12209 `(("libgit2" ,libgit2)))
12210 (native-inputs
12211 `(("ruby-minitest" ,ruby-minitest)
12212 ("ruby-pry" ,ruby-pry)
12213 ("ruby-rake-compiler" ,ruby-rake-compiler)))
12214 (synopsis "Ruby bindings to the libgit2 linkable C Git library")
12215 (description "Rugged is a library for accessing libgit2 in Ruby. It gives
12216 you the speed and portability of libgit2 with the beauty of the Ruby
12217 language.")
12218 (license license:expat)))
12219
12220 (define-public ruby-yell
12221 (package
12222 (name "ruby-yell")
12223 (version "2.2.2")
12224 (source
12225 (origin
12226 (method url-fetch)
12227 (uri (rubygems-uri "yell" version))
12228 (sha256
12229 (base32
12230 "1g16kcdhdfvczn7x81jiq6afg3bdxmb73skqjyjlkp5nqcy6y5hx"))))
12231 (build-system ruby-build-system)
12232 (arguments
12233 `(#:phases
12234 (modify-phases %standard-phases
12235 (replace 'check
12236 (lambda _
12237 (invoke "rake" "examples")))))) ; there is no test target.
12238 (synopsis
12239 "Extensible logging library for Ruby")
12240 (description
12241 "Yell is a comprehensive logging replacement for Ruby. It defines
12242 multiple adapters, various log level combinations and message formatting
12243 options.")
12244 (home-page "https://github.com/rudionrails/yell")
12245 (license license:expat)))
12246
12247 (define-public ruby-e2mmap
12248 (package
12249 (name "ruby-e2mmap")
12250 (version "0.1.0")
12251 (source
12252 (origin
12253 (method url-fetch)
12254 (uri (rubygems-uri "e2mmap" version))
12255 (sha256
12256 (base32
12257 "0n8gxjb63dck3vrmsdcqqll7xs7f3wk78mw8w0gdk9wp5nx6pvj5"))))
12258 (build-system ruby-build-system)
12259 (arguments
12260 `(#:tests? #f)) ;; There is a rakefile but no tests
12261 (synopsis
12262 "Module for defining custom exceptions with specific messages")
12263 (description
12264 "Exception2MessageMapper (e2mmap) is a helper module for easily defining
12265 exceptions with predefined messages.")
12266 (home-page "https://github.com/ruby/e2mmap")
12267 (license license:bsd-2)))
12268
12269 (define-public ruby-benchmark
12270 (package
12271 (name "ruby-benchmark")
12272 (version "0.1.1")
12273 (source
12274 (origin
12275 (method url-fetch)
12276 (uri (rubygems-uri "benchmark" version))
12277 (sha256
12278 (base32
12279 "1jvrl7400fv7v2jjri1r7ilj3sri36hzipwwgpn5psib4c9c59c6"))))
12280 (build-system ruby-build-system)
12281 (synopsis "Performance benchmarking library")
12282 (description "This package provides methods for benchmarking Ruby code,
12283 giving detailed reports on the time taken for each task.")
12284 (home-page "https://github.com/ruby/benchmark")
12285 (license license:bsd-2)))