gnu: Add ruby-open4.
[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 Nils Gillmann <ng0@n0.is>
9 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
10 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
11 ;;; Copyright © 2017, 2018 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 ;;;
17 ;;; This file is part of GNU Guix.
18 ;;;
19 ;;; GNU Guix is free software; you can redistribute it and/or modify it
20 ;;; under the terms of the GNU General Public License as published by
21 ;;; the Free Software Foundation; either version 3 of the License, or (at
22 ;;; your option) any later version.
23 ;;;
24 ;;; GNU Guix is distributed in the hope that it will be useful, but
25 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
26 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27 ;;; GNU General Public License for more details.
28 ;;;
29 ;;; You should have received a copy of the GNU General Public License
30 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
31
32 (define-module (gnu packages ruby)
33 #:use-module ((guix licenses) #:prefix license:)
34 #:use-module (gnu packages)
35 #:use-module (gnu packages base)
36 #:use-module (gnu packages check)
37 #:use-module (gnu packages compression)
38 #:use-module (gnu packages databases)
39 #:use-module (gnu packages dbm)
40 #:use-module (gnu packages rails)
41 #:use-module (gnu packages readline)
42 #:use-module (gnu packages autotools)
43 #:use-module (gnu packages java)
44 #:use-module (gnu packages libffi)
45 #:use-module (gnu packages libidn)
46 #:use-module (gnu packages linux)
47 #:use-module (gnu packages lsof)
48 #:use-module (gnu packages maths)
49 #:use-module (gnu packages ncurses)
50 #:use-module (gnu packages networking)
51 #:use-module (gnu packages python)
52 #:use-module (gnu packages python-xyz)
53 #:use-module (gnu packages ragel)
54 #:use-module (gnu packages rsync)
55 #:use-module (gnu packages sqlite)
56 #:use-module (gnu packages tls)
57 #:use-module (gnu packages version-control)
58 #:use-module (guix packages)
59 #:use-module (guix download)
60 #:use-module (guix git-download)
61 #:use-module (guix utils)
62 #:use-module (guix build-system gnu)
63 #:use-module (gnu packages xml)
64 #:use-module (gnu packages web)
65 #:use-module (guix build-system ruby)
66 #:use-module ((srfi srfi-1) #:select (alist-delete)))
67
68 (define-public ruby
69 (package
70 (name "ruby")
71 (version "2.5.3")
72 (source
73 (origin
74 (method url-fetch)
75 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
76 (version-major+minor version)
77 "/ruby-" version ".tar.xz"))
78 (sha256
79 (base32
80 "0vrhrw7kcz9mg0jkqnihkcxqy5k05v8k1j0y2735z8wfk8sx1j8w"))
81 (modules '((guix build utils)))
82 (snippet `(begin
83 ;; Remove bundled libffi
84 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
85 #t))))
86 (build-system gnu-build-system)
87 (arguments
88 `(#:test-target "test"
89 #:phases
90 (modify-phases %standard-phases
91 (add-before 'configure 'replace-bin-sh-and-remove-libffi
92 (lambda _
93 (substitute* '("Makefile.in"
94 "ext/pty/pty.c"
95 "io.c"
96 "lib/mkmf.rb"
97 "process.c"
98 "test/rubygems/test_gem_ext_configure_builder.rb"
99 "test/rdoc/test_rdoc_parser.rb"
100 "test/ruby/test_rubyoptions.rb"
101 "test/ruby/test_process.rb"
102 "test/ruby/test_system.rb"
103 "tool/rbinstall.rb")
104 (("/bin/sh") (which "sh")))
105 #t)))))
106 (inputs
107 `(("readline" ,readline)
108 ("openssl" ,openssl)
109 ("libffi" ,libffi)
110 ("gdbm" ,gdbm)
111 ("zlib" ,zlib)))
112 (native-search-paths
113 (list (search-path-specification
114 (variable "GEM_PATH")
115 (files (list (string-append "lib/ruby/vendor_ruby"))))))
116 (synopsis "Programming language interpreter")
117 (description "Ruby is a dynamic object-oriented programming language with
118 a focus on simplicity and productivity.")
119 (home-page "https://www.ruby-lang.org")
120 (license license:ruby)))
121
122 (define-public ruby-2.4
123 (package
124 (inherit ruby)
125 (version "2.4.3")
126 (source
127 (origin
128 (method url-fetch)
129 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
130 (version-major+minor version)
131 "/ruby-" version ".tar.xz"))
132 (sha256
133 (base32
134 "0l9bv67dgsphk42lmiskhrnh47hbyj6rfg2rcjx22xivpx07srr3"))
135 (patches (search-patches "ruby-rubygems-276-for-ruby24.patch"))
136 (modules '((guix build utils)))
137 (snippet `(begin
138 ;; Remove bundled libffi
139 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
140 #t))))))
141
142 (define-public ruby-2.3
143 (package
144 (inherit ruby)
145 (version "2.3.8")
146 (source
147 (origin
148 (method url-fetch)
149 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
150 (version-major+minor version)
151 "/ruby-" version ".tar.xz"))
152 (sha256
153 (base32
154 "1zhxbjff08pvbnxvn58krns6q0p6g4977q6ykfn823gxhifn63wi"))
155 (modules '((guix build utils)))
156 (snippet `(begin
157 ;; Remove bundled libffi
158 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
159 #t))))))
160
161 (define-public ruby-commander
162 (package
163 (name "ruby-commander")
164 (version "4.4.7")
165 (source
166 (origin
167 (method url-fetch)
168 (uri (rubygems-uri "commander" version))
169 (sha256
170 (base32
171 "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg"))))
172 (build-system ruby-build-system)
173 (arguments
174 `(#:test-target "spec"
175 #:phases
176 (modify-phases %standard-phases
177 ;; Don't run or require rubocop, the code linting tool, as this is a
178 ;; bit unnecessary.
179 (add-after 'unpack 'dont-run-rubocop
180 (lambda _
181 (substitute* "Rakefile"
182 ((".*rubocop.*") "")
183 ((".*RuboCop.*") ""))
184 #t)))))
185 (propagated-inputs
186 `(("ruby-highline" ,ruby-highline)))
187 (native-inputs
188 `(("bundler" ,bundler)
189 ("ruby-rspec-core" ,ruby-rspec-core)
190 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
191 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
192 ("ruby-simplecov" ,ruby-simplecov)))
193 (home-page "https://github.com/commander-rb/commander")
194 (synopsis "Library for building Ruby command-line executables")
195 (description
196 "Commander aims to be a complete solution for Ruby command-line
197 executables. Commander bridges the gap between other terminal related
198 libraries (OptionParser, HighLine), while providing many new features, and an
199 elegant API.")
200 (license license:expat)))
201
202 (define-public ruby-highline
203 (package
204 (name "ruby-highline")
205 (version "2.0.1")
206 (source
207 (origin
208 (method url-fetch)
209 (uri (rubygems-uri "highline" version))
210 (sha256
211 (base32
212 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
213 (build-system ruby-build-system)
214 (arguments
215 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
216 (native-inputs
217 `(("bundler" ,bundler)
218 ("ruby-code-statistics" ,ruby-code-statistics)))
219 (synopsis
220 "HighLine helps you build command-line interfaces")
221 (description
222 "HighLine provides a high-level IO library that provides validation,
223 type conversion, and more for command-line interfaces. HighLine also includes
224 a menu system for providing multiple options to the user.")
225 (home-page "https://github.com/JEG2/highline")
226 (license (list license:gpl2 license:ruby))))
227
228 (define-public ruby-hoe
229 (package
230 (name "ruby-hoe")
231 (version "3.16.2")
232 (source (origin
233 (method url-fetch)
234 (uri (rubygems-uri "hoe" version))
235 (sha256
236 (base32
237 "12q6dn2irsfamdbjpqvs0dwl4i1vl7wflxrcg972h9jw0ds38f3a"))))
238 (build-system ruby-build-system)
239 (synopsis "Ruby project management helper")
240 (description
241 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
242 maintain, and release projects and includes a dynamic plug-in system allowing
243 for easy extensibility. Hoe ships with plug-ins for all the usual project
244 tasks including rdoc generation, testing, packaging, deployment, and
245 announcement.")
246 (home-page "https://www.zenspider.com/projects/hoe.html")
247 (license license:expat)))
248
249 (define-public ruby-rake-compiler
250 (package
251 (name "ruby-rake-compiler")
252 (version "1.0.4")
253 (source (origin
254 (method url-fetch)
255 (uri (rubygems-uri "rake-compiler" version))
256 (sha256
257 (base32
258 "1xpdi4w8zaklk1i9ps8g3k0icw3v5fcks092l84w28rgrpx82qip"))))
259 (build-system ruby-build-system)
260 (arguments
261 '(#:tests? #f)) ; needs cucumber
262 (synopsis "Building and packaging helper for Ruby native extensions")
263 (description "Rake-compiler provides a framework for building and
264 packaging native C and Java extensions in Ruby.")
265 (home-page "https://github.com/rake-compiler/rake-compiler")
266 (license license:expat)))
267
268 (define-public ruby-rsync
269 (package
270 (name "ruby-rsync")
271 (version "1.0.9")
272 (source
273 (origin
274 (method url-fetch)
275 (uri (rubygems-uri "rsync" version))
276 (sha256
277 (base32
278 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
279 (build-system ruby-build-system)
280 (arguments
281 '(#:test-target "spec"
282 #:phases
283 (modify-phases %standard-phases
284 (add-after 'unpack 'remove-coveralls-requirement
285 (lambda _
286 (substitute* "spec/spec_helper.rb"
287 (("require 'coveralls'") "")
288 (("Coveralls.wear!") ""))
289 #t)))))
290 (native-inputs
291 `(("bundler" ,bundler)
292 ("rsync" ,rsync)
293 ("ruby-rspec-core" ,ruby-rspec-core)
294 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
295 ("ruby-rspec-mocks" ,ruby-rspec-mocks)))
296 (home-page "https://github.com/jbussdieker/ruby-rsync")
297 (synopsis "Ruby wrapper around rsync")
298 (description
299 "Ruby Rsync is a Ruby library that can synchronize files between remote
300 hosts by wrapping the @file{rsync} binary.")
301 (license license:expat)))
302
303 (define-public ruby-i18n
304 (package
305 (name "ruby-i18n")
306 (version "1.1.0")
307 (source (origin
308 (method url-fetch)
309 (uri (rubygems-uri "i18n" version))
310 (sha256
311 (base32
312 "0ppvmla21hssvrfm8g1n2fnb4lxn4yhy9qmmba0imanflgldrjmr"))))
313 (build-system ruby-build-system)
314 (arguments
315 '(#:tests? #f)) ; no tests
316 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
317 (synopsis "Internationalization library for Ruby")
318 (description "Ruby i18n is an internationalization and localization
319 solution for Ruby programs. It features translation and localization,
320 interpolation of values to translations, pluralization, customizable
321 transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
322 translation data, custom key/scope separator, custom exception handlers, and
323 an extensible architecture with a swappable backend.")
324 (home-page "https://github.com/svenfuchs/i18n")
325 (license license:expat)))
326
327 (define-public ruby-iruby
328 (package
329 (name "ruby-iruby")
330 (version "0.3")
331 (source
332 (origin
333 (method url-fetch)
334 (uri (rubygems-uri "iruby" version))
335 (sha256
336 (base32
337 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
338 (build-system ruby-build-system)
339 (arguments
340 ;; TODO: Tests currently fail.
341 ;;
342 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
343 ;;
344 ;; 1) Failure:
345 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
346 ;; In [ expected
347 ;;
348 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
349 '(#:tests? #f
350 #:phases
351 (modify-phases %standard-phases
352 (add-after 'unpack 'patch-ipython
353 (lambda* (#:key inputs #:allow-other-keys)
354 (substitute* "lib/iruby/command.rb"
355 (("version = `")
356 (string-append
357 "version = `"
358 (assoc-ref inputs "python-ipython")
359 "/bin/"))
360 (("Kernel\\.exec\\('")
361 (string-append
362 "Kernel.exec('"
363 (assoc-ref inputs "python-ipython")
364 "/bin/")))
365 #t)))))
366 (inputs
367 `(("python-ipython" ,python-ipython)))
368 (propagated-inputs
369 `(("ruby-bond" ,ruby-bond)
370 ("ruby-data_uri" ,ruby-data_uri)
371 ("ruby-mimemagic" ,ruby-mimemagic)
372 ("ruby-multi-json" ,ruby-multi-json)
373 ("ruby-cztop" ,ruby-cztop)
374 ;; Optional inputs
375 ("ruby-pry" ,ruby-pry)))
376 (synopsis "Ruby kernel for Jupyter/IPython")
377 (description
378 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
379 notebook).")
380 (home-page "https://github.com/SciRuby/iruby")
381 (license license:expat)))
382
383 ;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
384 ;; dependencies use RSpec for their test suites! To avoid these circular
385 ;; dependencies, we disable tests for all of the RSpec-related packages.
386 (define ruby-rspec-support
387 (package
388 (name "ruby-rspec-support")
389 (version "3.5.0")
390 (source (origin
391 (method url-fetch)
392 (uri (rubygems-uri "rspec-support" version))
393 (sha256
394 (base32
395 "10vf3k3d472y573mag2kzfsfrf6rv355s13kadnpryk8d36yq5r0"))))
396 (build-system ruby-build-system)
397 (arguments
398 '(#:tests? #f)) ; avoid dependency cycles
399 (synopsis "RSpec support library")
400 (description "Support utilities for RSpec gems.")
401 (home-page "https://github.com/rspec/rspec-support")
402 (license license:expat)))
403
404 (define-public ruby-rspec-core
405 (package
406 (name "ruby-rspec-core")
407 (version "3.5.4")
408 (source (origin
409 (method url-fetch)
410 (uri (rubygems-uri "rspec-core" version))
411 (sha256
412 (base32
413 "1nacs062qbr98fx6czf1vwppn1js956nv2c8vfwj6i65axdfs46i"))))
414 (build-system ruby-build-system)
415 (arguments
416 '(#:tests? #f)) ; avoid dependency cycles
417 (propagated-inputs
418 `(("ruby-rspec-support" ,ruby-rspec-support)))
419 (synopsis "RSpec core library")
420 (description "Rspec-core provides the RSpec test runner and example
421 groups.")
422 (home-page "https://github.com/rspec/rspec-core")
423 (license license:expat)))
424
425 (define-public ruby-rspec-core-2
426 (package (inherit ruby-rspec-core)
427 (version "2.14.8")
428 (source (origin
429 (method url-fetch)
430 (uri (rubygems-uri "rspec-core" version))
431 (sha256
432 (base32
433 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
434 (propagated-inputs `())))
435
436 (define-public ruby-diff-lcs
437 (package
438 (name "ruby-diff-lcs")
439 (version "1.3")
440 (source (origin
441 (method url-fetch)
442 (uri (rubygems-uri "diff-lcs" version))
443 (sha256
444 (base32
445 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
446 (build-system ruby-build-system)
447 (arguments
448 '(#:tests? #f)) ; avoid dependency cycles
449 (synopsis "Compute the difference between two Enumerable sequences")
450 (description "Diff::LCS computes the difference between two Enumerable
451 sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
452 It includes utilities to create a simple HTML diff output format and a
453 standard diff-like tool.")
454 (home-page "https://github.com/halostatue/diff-lcs")
455 (license license:expat)))
456
457 (define-public ruby-rspec-expectations
458 (package
459 (name "ruby-rspec-expectations")
460 (version "3.5.0")
461 (source (origin
462 (method url-fetch)
463 (uri (rubygems-uri "rspec-expectations" version))
464 (sha256
465 (base32
466 "0bbqfrb1x8gmwf8x2xhhwvvlhwbbafq4isbvlibxi6jk602f09gs"))))
467 (build-system ruby-build-system)
468 (arguments
469 '(#:tests? #f)) ; avoid dependency cycles
470 (propagated-inputs
471 `(("ruby-rspec-support" ,ruby-rspec-support)
472 ("ruby-diff-lcs" ,ruby-diff-lcs)))
473 (synopsis "RSpec expectations library")
474 (description "Rspec-expectations provides a simple API to express expected
475 outcomes of a code example.")
476 (home-page "https://github.com/rspec/rspec-expectations")
477 (license license:expat)))
478
479 (define-public ruby-rspec-expectations-2
480 (package (inherit ruby-rspec-expectations)
481 (version "2.14.5")
482 (source (origin
483 (method url-fetch)
484 (uri (rubygems-uri "rspec-expectations" version))
485 (sha256
486 (base32
487 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
488 (propagated-inputs
489 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
490
491 (define-public ruby-rspec-its
492 (package
493 (name "ruby-rspec-its")
494 (version "1.2.0")
495 (source
496 (origin
497 (method git-fetch)
498 (uri (git-reference
499 (url "https://github.com/rspec/rspec-its.git")
500 (commit (string-append "v" version))))
501 (file-name (git-file-name name version))
502 (sha256
503 (base32
504 "190rz7v4q4wk80fzhr5hknvxx4vb2pywmqr8wc41w2blj9ylzi0f"))
505 (patches
506 (list
507 (origin (method url-fetch)
508 (uri (string-append
509 "https://github.com/rspec/rspec-its/commit/"
510 "bfaab439c7c879f5ef25552f41827891f6308373.patch"))
511 (file-name "ruby-rspec-its-fix-specs-for-ruby-2.4.patch")
512 (sha256
513 (base32
514 "0lnik0kvrpgkakvdb2fmzg22pdlraf6kiidr9sv6rnfyviiqwxgh")))))))
515 (build-system ruby-build-system)
516 (arguments
517 `(#:test-target "spec"
518 #:phases
519 (modify-phases %standard-phases
520 (add-after 'unpack 'dont-install-gems-from-gemfile
521 (lambda _
522 (substitute* "Gemfile"
523 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
524 ""))
525 #t))
526 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
527 (lambda _
528 (substitute* "rspec-its.gemspec"
529 (("rake.*") "rake'\n")
530 (("cucumber.*") "cucumber'\n")
531 (("bundler.*") "bundler'\n")
532 (("aruba.*") "aruba'\n"))
533 #t)))))
534 (propagated-inputs
535 `(("ruby-rspec-core" ,ruby-rspec-core)
536 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
537 (native-inputs
538 `(("bundler" ,bundler)
539 ("ruby-cucumber" ,ruby-cucumber)
540 ("ruby-aruba" ,ruby-aruba)))
541 (synopsis "RSpec extension that provides the @code{its} method")
542 (description
543 "RSpec::Its provides the its method as a short-hand to specify the expected
544 value of an attribute. For example, one can use @code{its(:size)\\{should
545 eq(1)\\}}.")
546 (home-page "https://github.com/rspec/rspec-its")
547 (license license:expat)))
548
549 (define-public ruby-rspec-mocks
550 (package
551 (name "ruby-rspec-mocks")
552 (version "3.5.0")
553 (source (origin
554 (method url-fetch)
555 (uri (rubygems-uri "rspec-mocks" version))
556 (sha256
557 (base32
558 "0nl3ksivh9wwrjjd47z5dggrwx40v6gpb3a0gzbp1gs06a5dmk24"))))
559 (build-system ruby-build-system)
560 (arguments
561 '(#:tests? #f)) ; avoid dependency cycles
562 (propagated-inputs
563 `(("ruby-rspec-support" ,ruby-rspec-support)
564 ("ruby-diff-lcs" ,ruby-diff-lcs)))
565 (synopsis "RSpec stubbing and mocking library")
566 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
567 support for stubbing and mocking.")
568 (home-page "https://github.com/rspec/rspec-mocks")
569 (license license:expat)))
570
571 (define-public ruby-rspec-mocks-2
572 (package (inherit ruby-rspec-mocks)
573 (version "2.14.6")
574 (source (origin
575 (method url-fetch)
576 (uri (rubygems-uri "rspec-mocks" version))
577 (sha256
578 (base32
579 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
580 (propagated-inputs
581 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
582
583 (define-public ruby-rspec-rerun
584 (package
585 (name "ruby-rspec-rerun")
586 (version "1.1.0")
587 (source
588 (origin
589 (method url-fetch)
590 (uri (rubygems-uri "rspec-rerun" version))
591 (sha256
592 (base32
593 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
594 (build-system ruby-build-system)
595 (arguments
596 '(;; No included tests
597 #:tests? #f))
598 (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
599 (synopsis "Track failed RSpec tests to re-run them")
600 (description
601 "This package provides an automated way to track, and then re-run failed
602 RSpec tests.")
603 (home-page "https://github.com/dblock/rspec-rerun")
604 (license license:expat)))
605
606 (define-public ruby-rspec
607 (package
608 (name "ruby-rspec")
609 (version "3.5.0")
610 (source (origin
611 (method url-fetch)
612 (uri (rubygems-uri "rspec" version))
613 (sha256
614 (base32
615 "16g3mmih999f0b6vcz2c3qsc7ks5zy4lj1rzjh8hf6wk531nvc6s"))))
616 (build-system ruby-build-system)
617 (arguments
618 '(#:tests? #f)) ; avoid dependency cycles
619 (propagated-inputs
620 `(("ruby-rspec-core" ,ruby-rspec-core)
621 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
622 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
623 (synopsis "Behavior-driven development framework for Ruby")
624 (description "RSpec is a behavior-driven development (BDD) framework for
625 Ruby. This meta-package includes the RSpec test runner, along with the
626 expectations and mocks frameworks.")
627 (home-page "http://rspec.info/")
628 (license license:expat)))
629
630 (define-public ruby-rspec-2
631 (package (inherit ruby-rspec)
632 (version "2.14.1")
633 (source (origin
634 (method url-fetch)
635 (uri (rubygems-uri "rspec" version))
636 (sha256
637 (base32
638 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
639 (propagated-inputs
640 `(("ruby-rspec-core" ,ruby-rspec-core-2)
641 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
642 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
643
644 ;; Bundler is yet another source of circular dependencies, so we must disable
645 ;; its test suite as well.
646 (define-public bundler
647 (package
648 (name "bundler")
649 (version "1.17.3")
650 (source (origin
651 (method url-fetch)
652 (uri (rubygems-uri "bundler" version))
653 (sha256
654 (base32
655 "0ln3gnk7cls81gwsbxvrmlidsfd78s6b2hzlm4d4a9wbaidzfjxw"))))
656 (build-system ruby-build-system)
657 (arguments
658 '(#:tests? #f)) ; avoid dependency cycles
659 (synopsis "Ruby gem bundler")
660 (description "Bundler automatically downloads and installs a list of gems
661 specified in a \"Gemfile\", as well as their dependencies.")
662 (home-page "https://bundler.io/")
663 (license license:expat)))
664
665 (define-public ruby-builder
666 (package
667 (name "ruby-builder")
668 (version "3.2.3")
669 (source (origin
670 (method url-fetch)
671 (uri (rubygems-uri "builder" version))
672 (sha256
673 (base32
674 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
675 (build-system ruby-build-system)
676 (arguments
677 `(#:phases
678 (modify-phases %standard-phases
679 (add-after 'unpack 'do-not-use-rvm
680 (lambda _
681 (substitute* "rakelib/tags.rake"
682 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
683 #t)))))
684 (synopsis "Ruby library to create structured data")
685 (description "Builder provides a number of builder objects that make it
686 easy to create structured data. Currently the following builder objects are
687 supported: XML Markup and XML Events.")
688 (home-page "https://github.com/jimweirich/builder")
689 (license license:expat)))
690
691 (define-public ruby-bump
692 (package
693 (name "ruby-bump")
694 (version "0.7.0")
695 (source
696 (origin
697 (method url-fetch)
698 (uri (rubygems-uri "bump" version))
699 (sha256
700 (base32
701 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
702 (build-system ruby-build-system)
703 (arguments
704 '(;; No included tests
705 #:tests? #f))
706 (synopsis "Tool for working with Rubygems")
707 (description
708 "Bump provides commands to manage Rubygem versioning, updating to the
709 next patch version for example.")
710 (home-page "https://github.com/gregorym/bump")
711 (license license:expat)))
712
713 (define-public ruby-rjb
714 (package
715 (name "ruby-rjb")
716 (version "1.5.5")
717 (source (origin
718 (method url-fetch)
719 (uri (rubygems-uri "rjb" version))
720 (sha256
721 (base32
722 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
723 (build-system ruby-build-system)
724 (arguments
725 `(#:tests? #f ; no rakefile
726 #:phases
727 (modify-phases %standard-phases
728 (add-before 'build 'set-java-home
729 (lambda* (#:key inputs #:allow-other-keys)
730 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
731 #t)))))
732 (native-inputs
733 `(("jdk" ,icedtea "jdk")))
734 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
735 (description "RJB is a bridge program that connects Ruby and Java via the
736 Java Native Interface.")
737 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
738 (license license:lgpl2.1+)))
739
740 (define-public ruby-log4r
741 (package
742 (name "ruby-log4r")
743 (version "1.1.10")
744 (source
745 (origin
746 (method url-fetch)
747 (uri (rubygems-uri "log4r" version))
748 (sha256
749 (base32
750 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
751 (build-system ruby-build-system)
752 (arguments
753 '(#:tests? #f)) ; no Rakefile in gem
754 (synopsis "Flexible logging library for Ruby")
755 (description "Comprehensive and flexible logging library written
756 in Ruby for use in Ruby programs. It features a hierarchical logging
757 system of any number of levels, custom level names, logger
758 inheritance, multiple output destinations per log event, execution
759 tracing, custom formatting, thread safteyness, XML and YAML
760 configuration, and more.")
761 (home-page "http://log4r.rubyforge.org/")
762 (license license:bsd-3)))
763
764 (define-public ruby-atoulme-antwrap
765 (package
766 (name "ruby-atoulme-antwrap")
767 (version "0.7.5")
768 (source (origin
769 (method url-fetch)
770 (uri (rubygems-uri "atoulme-Antwrap" version))
771 (sha256
772 (base32
773 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
774 (build-system ruby-build-system)
775 ;; Test data required for most of the tests are not included.
776 (arguments `(#:tests? #f))
777 (native-inputs
778 `(("ruby-hoe" ,ruby-hoe)))
779 (inputs
780 `(("ruby-rjb" ,ruby-rjb)))
781 (synopsis "Ruby wrapper for the Ant build tool")
782 (description "Antwrap is a Ruby module that wraps the Apache Ant build
783 tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
784 script.")
785 (home-page "http://rubyforge.org/projects/antwrap/")
786 (license license:expat)))
787
788 (define-public ruby-atoulme-saikuro
789 (package
790 (name "ruby-atoulme-saikuro")
791 (version "1.2.1")
792 (source (origin
793 (method url-fetch)
794 (uri (rubygems-uri "atoulme-Saikuro" version))
795 (sha256
796 (base32
797 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
798 (build-system ruby-build-system)
799 ;; FIXME: There are no unit tests. The tests are demonstrations of the
800 ;; "saikuro" tool.
801 (arguments `(#:tests? #f))
802 (synopsis "Cyclomatic complexity analyzer")
803 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
804 given Ruby source code Saikuro will generate a report listing the cyclomatic
805 complexity of each method found. In addition, Saikuro counts the number of
806 lines per method and can generate a listing of the number of tokens on each
807 line of code.")
808 (home-page "http://www.github.com/atoulme/Saikuro")
809 ;; File headers contain the BSD-3 license and the README.rdoc says that
810 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
811 ;; of the Expat license.
812 (license license:bsd-3)))
813
814 (define-public ruby-asciidoctor
815 (package
816 (name "ruby-asciidoctor")
817 (version "1.5.7.1")
818 (source
819 (origin
820 (method url-fetch)
821 (uri (rubygems-uri "asciidoctor" version))
822 (sha256
823 (base32
824 "0v52bzc72cvg7zfgq27pa4mgyf29dx9m20fghrw1xmvwgd519n1w"))))
825 (build-system ruby-build-system)
826 (arguments
827 `(#:test-target "test:all"
828 #:phases
829 (modify-phases %standard-phases
830 (add-before 'check 'remove-circular-tests
831 (lambda _
832 ;; Remove tests that require circular dependencies to load or pass.
833 (delete-file "test/invoker_test.rb")
834 (delete-file "test/converter_test.rb")
835 (delete-file "test/options_test.rb")
836 #t)))))
837 (native-inputs
838 `(("ruby-minitest" ,ruby-minitest)
839 ("ruby-nokogiri" ,ruby-nokogiri)
840 ("ruby-asciimath" ,ruby-asciimath)
841 ("ruby-coderay" ,ruby-coderay)))
842 (synopsis "Converter from AsciiDoc content to other formats")
843 (description
844 "Asciidoctor is a text processor and publishing toolchain for converting
845 AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other formats.")
846 (home-page "https://asciidoctor.org")
847 (license license:expat)))
848
849 (define-public ruby-ast
850 (package
851 (name "ruby-ast")
852 (version "2.4.0")
853 (source
854 (origin
855 (method url-fetch)
856 (uri (rubygems-uri "ast" version))
857 (sha256
858 (base32
859 "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7"))))
860 (build-system ruby-build-system)
861 (arguments
862 '(#:phases
863 (modify-phases %standard-phases
864 (add-after 'unpack 'remove-coveralls-requirement
865 (lambda _
866 (substitute* "test/helper.rb"
867 (("require 'coveralls'") "")
868 (("Coveralls::SimpleCov::Formatter") ""))
869 #t))
870 (add-after 'extract-gemspec 'remove-unnecessary-requirements
871 (lambda _
872 (substitute* "ast.gemspec"
873 ((".*coveralls.*") "\n")
874 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
875 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
876 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n"))
877 #t)))))
878 (native-inputs
879 `(("bundler" ,bundler)
880 ("ruby-simplecov" ,ruby-simplecov)
881 ("ruby-json-pure" ,ruby-json-pure)
882 ("ruby-mime-times" ,ruby-mime-types)
883 ("ruby-yard" ,ruby-yard)
884 ("ruby-kramdown" ,ruby-kramdown)
885 ("ruby-rest-client" ,ruby-rest-client)
886 ("ruby-bacon" ,ruby-bacon)
887 ("ruby-bacon-colored-output" ,ruby-bacon-colored-output)
888 ("ruby-racc" ,ruby-racc)))
889 (synopsis "Library for working with Abstract Syntax Trees")
890 (description
891 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
892 It does this through immutable data structures.")
893 (home-page "https://whitequark.github.io/ast/")
894 (license license:expat)))
895
896 (define-public ruby-sporkmonger-rack-mount
897 ;; Testing the addressable gem requires a newer commit than that released, so
898 ;; use an up to date version.
899 (let ((revision "1")
900 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
901 (package
902 (name "ruby-sporkmonger-rack-mount")
903 (version (git-version "0.8.3" revision commit))
904 (source (origin
905 (method git-fetch)
906 (uri (git-reference
907 (url "https://github.com/sporkmonger/rack-mount.git")
908 (commit commit)))
909 (file-name (git-file-name name version))
910 (sha256
911 (base32
912 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
913 (build-system ruby-build-system)
914 (arguments
915 ;; Tests currently fail so disable them.
916 ;; https://github.com/sporkmonger/rack-mount/pull/1
917 `(#:tests? #f))
918 (propagated-inputs `(("ruby-rack" ,ruby-rack)))
919 (synopsis "Stackable dynamic tree based Rack router")
920 (description
921 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
922 continue trying routes if the response returns pass. This allows multiple
923 routes to be nested or stacked on top of each other.")
924 (home-page "https://github.com/sporkmonger/rack-mount")
925 (license license:expat))))
926
927 (define-public ruby-ci-reporter
928 (package
929 (name "ruby-ci-reporter")
930 (version "2.0.0")
931 (source (origin
932 (method url-fetch)
933 (uri (rubygems-uri "ci_reporter" version))
934 (sha256
935 (base32
936 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
937 (build-system ruby-build-system)
938 (arguments
939 `(#:test-target "rspec"))
940 (propagated-inputs
941 `(("ruby-builder" ,ruby-builder)))
942 (native-inputs
943 `(("bundler" ,bundler)
944 ("ruby-rspec" ,ruby-rspec)))
945 (synopsis "Generate XML reports of runs test")
946 (description
947 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
948 you to generate XML reports of your test runs. The resulting files can be
949 read by a continuous integration system that understands Ant's JUnit report
950 format.")
951 (home-page "https://github.com/nicksieger/ci_reporter")
952 (license license:expat)))
953
954 (define-public ruby-contracts
955 (package
956 (name "ruby-contracts")
957 (version "0.16.0")
958 (source
959 (origin
960 (method url-fetch)
961 (uri (rubygems-uri "contracts" version))
962 (sha256
963 (base32
964 "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"))))
965 (build-system ruby-build-system)
966 (arguments
967 '(#:test-target "spec"
968 #:phases
969 (modify-phases %standard-phases
970 ;; Don't run or require rubocop, the code linting tool, as this is a
971 ;; bit unnecessary.
972 (add-after 'unpack 'dont-run-rubocop
973 (lambda _
974 (substitute* "Rakefile"
975 ((".*rubocop.*") "")
976 ((".*RuboCop.*") ""))
977 #t)))))
978 (native-inputs
979 `(("ruby-rspec" ,ruby-rspec)))
980 (synopsis "Method contracts for Ruby")
981 (description
982 "This library provides contracts for Ruby. A contract describes the
983 correct inputs and output for a method, and will raise an error if a incorrect
984 value is found.")
985 (home-page "https://github.com/egonSchiele/contracts.ruby")
986 (license license:bsd-2)))
987
988 (define-public ruby-crack
989 (package
990 (name "ruby-crack")
991 (version "0.4.3")
992 (source
993 (origin
994 (method url-fetch)
995 (uri (rubygems-uri "crack" version))
996 (sha256
997 (base32
998 "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k"))))
999 (build-system ruby-build-system)
1000 (arguments
1001 `(#:phases
1002 (modify-phases %standard-phases
1003 (replace 'check
1004 (lambda* (#:key tests? #:allow-other-keys)
1005 (when tests?
1006 (for-each (lambda (file)
1007 (display file)(display "\n")
1008 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
1009 (find-files "test" ".*rb$")))
1010 #t)))))
1011 (propagated-inputs
1012 `(("ruby-safe-yaml" ,ruby-safe-yaml)))
1013 (synopsis "Simple JSON and XML parsing for Ruby")
1014 (description
1015 "@code{crack} provides really simple JSON and XML parsing, extracted from
1016 code in Merb and Rails.")
1017 (home-page "https://github.com/jnunemaker/crack")
1018 (license license:expat)))
1019
1020 (define-public ruby-crass
1021 (package
1022 (name "ruby-crass")
1023 (version "1.0.4")
1024 (source
1025 (origin
1026 (method url-fetch)
1027 (uri (rubygems-uri "crass" version))
1028 (sha256
1029 (base32
1030 "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi"))))
1031 (build-system ruby-build-system)
1032 (synopsis "Pure Ruby CSS parser based on CSS Syntax Level 3")
1033 (description
1034 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
1035 (home-page "https://github.com/rgrove/crass/")
1036 (license license:expat)))
1037
1038 (define-public ruby-cliver
1039 (package
1040 (name "ruby-cliver")
1041 (version "0.3.2")
1042 (source
1043 (origin
1044 (method url-fetch)
1045 (uri (rubygems-uri "cliver" version))
1046 (sha256
1047 (base32
1048 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
1049 (build-system ruby-build-system)
1050 (arguments
1051 '(#:phases
1052 (modify-phases %standard-phases
1053 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
1054 ;; would be nice, but the tests look to be incompatible:
1055 ;;
1056 ;; NoMethodError: undefined method `last_comment'
1057 (replace 'check
1058 (lambda* (#:key tests? #:allow-other-keys)
1059 (when tests?
1060 (invoke "rspec"))
1061 #t)))))
1062 (native-inputs
1063 `(("bundler" ,bundler)
1064 ("ruby-rspec" ,ruby-rspec-2)))
1065 (synopsis "Assertions for command-line dependencies in Ruby")
1066 (description
1067 "@code{cliver} provides a way to detect missing command-line
1068 dependencies, including versions.")
1069 (home-page "https://github.com/yaauie/cliver")
1070 (license license:expat)))
1071
1072 (define-public ruby-czmq-ffi-gen
1073 (package
1074 (name "ruby-czmq-ffi-gen")
1075 (version "0.13.0")
1076 (source
1077 (origin
1078 (method url-fetch)
1079 (uri (rubygems-uri "czmq-ffi-gen" version))
1080 (sha256
1081 (base32
1082 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
1083 (build-system ruby-build-system)
1084 (arguments
1085 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
1086 #:phases
1087 (modify-phases %standard-phases
1088 (add-after 'unpack 'patch-lib_dirs
1089 (lambda* (#:key inputs #:allow-other-keys)
1090 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
1091 (("lib\\_dirs = \\[.*\\]")
1092 (string-append "lib_dirs = ['"
1093 (assoc-ref inputs "czmq") "/lib"
1094 "']")))
1095 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
1096 (("lib\\_dirs = \\[.*\\]")
1097 (string-append "lib_dirs = ['"
1098 (assoc-ref inputs "zeromq") "/lib"
1099 "']"))))))))
1100 (inputs
1101 `(("zeromq" ,zeromq)
1102 ("czmq" ,czmq)))
1103 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
1104 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
1105 (description
1106 "These Ruby bindings are not intended to be directly used, but rather
1107 used by higher level bindings like those provided by CZTop.")
1108 (home-page
1109 "https://github.com/paddor/czmq-ffi-gen")
1110 (license license:isc)))
1111
1112 (define-public ruby-cztop
1113 (package
1114 (name "ruby-cztop")
1115 (version "0.12.2")
1116 (source
1117 (origin
1118 (method url-fetch)
1119 (uri (rubygems-uri "cztop" version))
1120 (sha256
1121 (base32
1122 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
1123 (build-system ruby-build-system)
1124 (arguments
1125 '(#:test-target "spec"
1126 #:phases
1127 (modify-phases %standard-phases
1128 (add-after 'unpack 'patch-lib_paths
1129 (lambda* (#:key inputs #:allow-other-keys)
1130 (substitute* "lib/cztop/poller/zmq.rb"
1131 (("lib\\_paths = \\[.*\\]")
1132 (string-append "lib_paths = ['"
1133 (assoc-ref inputs "zeromq") "/lib"
1134 "']"))))))))
1135 (native-inputs
1136 `(("bundler" ,bundler)
1137 ("ruby-rspec" ,ruby-rspec)))
1138 (inputs
1139 `(("zeromq" ,zeromq)))
1140 (propagated-inputs
1141 `(("ruby-czmq-ffi-gen" ,ruby-czmq-ffi-gen)))
1142 (synopsis "CZMQ Ruby bindings")
1143 (description
1144 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
1145 CZMQ. The focus of of CZTop is on being easy to use and providing first class
1146 support for security mechanisms.")
1147 (home-page "https://github.com/paddor/cztop")
1148 (license license:isc)))
1149
1150 (define-public ruby-saikuro-treemap
1151 (package
1152 (name "ruby-saikuro-treemap")
1153 (version "0.2.0")
1154 (source (origin
1155 (method url-fetch)
1156 (uri (rubygems-uri "saikuro_treemap" version))
1157 (sha256
1158 (base32
1159 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
1160 (build-system ruby-build-system)
1161 ;; Some of the tests fail because the generated JSON has keys in a
1162 ;; different order. This is a problem with the test suite rather than any
1163 ;; of the involved libraries.
1164 (arguments `(#:tests? #f))
1165 (propagated-inputs
1166 `(("ruby-json-pure" ,ruby-json-pure)
1167 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
1168 (synopsis "Generate complexity treemap based on saikuro analysis")
1169 (description
1170 "This gem generates a treemap showing the complexity of Ruby code on
1171 which it is run. It uses Saikuro under the covers to analyze Ruby code
1172 complexity.")
1173 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
1174 (license license:expat)))
1175
1176 (define-public ruby-open4
1177 (package
1178 (name "ruby-open4")
1179 (version "1.3.4")
1180 (source
1181 (origin
1182 (method url-fetch)
1183 (uri (rubygems-uri "open4" version))
1184 (sha256
1185 (base32
1186 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
1187 (build-system ruby-build-system)
1188 (arguments
1189 '(#:phases
1190 (modify-phases %standard-phases
1191 (add-after 'unpack 'patch
1192 (lambda _
1193 (substitute* "rakefile"
1194 ;; Update the Rakefile so it works
1195 (("-rubygems") "-rrubygems")
1196 (("Config") "RbConfig"))
1197 #t))
1198 (add-before 'check 'set-LIB
1199 (lambda _
1200 ;; This is used in the rakefile when running the tests
1201 (setenv "LIB" "open4")
1202 #t)))))
1203 (synopsis "Open child processes from Ruby and manage them easily")
1204 (description
1205 "@code{Open4} is a Ruby library to run child processes and manage their
1206 input and output.")
1207 (home-page "https://github.com/ahoward/open4")
1208 (license license:ruby)))
1209
1210 (define-public ruby-options
1211 (package
1212 (name "ruby-options")
1213 (version "2.3.2")
1214 (source
1215 (origin
1216 (method url-fetch)
1217 (uri (rubygems-uri "options" version))
1218 (sha256
1219 (base32
1220 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
1221 (build-system ruby-build-system)
1222 (arguments
1223 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
1224 #:phases
1225 (modify-phases %standard-phases
1226 (add-before 'check 'set-LIB
1227 (lambda _
1228 ;; This is used in the Rakefile, and setting it avoids an issue
1229 ;; with running the tests.
1230 (setenv "LIB" "options")
1231 #t)))))
1232 (synopsis "Ruby library to parse options from *args cleanly")
1233 (description
1234 "The @code{options} library helps with parsing keyword options in Ruby
1235 functions.")
1236 (home-page "https://github.com/ahoward/options")
1237 (license license:ruby)))
1238
1239 (define-public ruby-erubi
1240 (package
1241 (name "ruby-erubi")
1242 (version "1.8.0")
1243 (source
1244 (origin
1245 (method url-fetch)
1246 (uri (rubygems-uri "erubi" version))
1247 (sha256
1248 (base32
1249 "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1"))))
1250 (build-system ruby-build-system)
1251 (synopsis "ERB template engine for Ruby")
1252 (description
1253 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
1254 Erubis")
1255 (home-page "https://github.com/jeremyevans/erubi")
1256 (license license:expat)))
1257
1258 (define-public ruby-erubis
1259 (package
1260 (name "ruby-erubis")
1261 (version "2.7.0")
1262 (source
1263 (origin
1264 (method url-fetch)
1265 (uri (rubygems-uri "erubis" version))
1266 (sha256
1267 (base32
1268 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
1269 (build-system ruby-build-system)
1270 (arguments
1271 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
1272 (synopsis "Implementation of embedded Ruby (eRuby)")
1273 (description
1274 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
1275 features such as multi-language support, auto escaping, auto trimming spaces
1276 around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
1277 support.")
1278 (home-page "http://www.kuwata-lab.com/erubis/")
1279 (license license:expat)))
1280
1281 (define-public ruby-orderedhash
1282 (package
1283 (name "ruby-orderedhash")
1284 (version "0.0.6")
1285 (source (origin
1286 (method url-fetch)
1287 (uri (rubygems-uri "orderedhash" version))
1288 (sha256
1289 (base32
1290 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
1291 (build-system ruby-build-system)
1292 (arguments
1293 '(#:tests? #f)) ; no test suite
1294 (synopsis "Ruby library providing an order-preserving hash")
1295 (description "Orderedhash is a Ruby library providing a hash
1296 implementation that preserves the order of items and features some array-like
1297 extensions.")
1298 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
1299 (license license:public-domain)))
1300
1301 (define-public ruby-libxml
1302 (package
1303 (name "ruby-libxml")
1304 (version "3.0.0")
1305 (source
1306 (origin
1307 (method url-fetch)
1308 (uri (rubygems-uri "libxml-ruby" version))
1309 (sha256
1310 (base32
1311 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
1312 (build-system ruby-build-system)
1313 (inputs
1314 `(("zlib" ,zlib)
1315 ("libxml2" ,libxml2)))
1316 (arguments
1317 '(#:tests? #f ; test suite hangs for unknown reason
1318 #:gem-flags
1319 (list "--"
1320 (string-append "--with-xml2-include="
1321 (assoc-ref %build-inputs "libxml2")
1322 "/include/libxml2" ))))
1323 (synopsis "Ruby bindings for GNOME Libxml2")
1324 (description "The Libxml-Ruby project provides Ruby language bindings for
1325 the GNOME Libxml2 XML toolkit.")
1326 (home-page "https://xml4r.github.com/libxml-ruby")
1327 (license license:expat)))
1328
1329 (define-public ruby-xml-simple
1330 (package
1331 (name "ruby-xml-simple")
1332 (version "1.1.5")
1333 (source (origin
1334 (method url-fetch)
1335 (uri (rubygems-uri "xml-simple" version))
1336 (sha256
1337 (base32
1338 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
1339 (build-system ruby-build-system)
1340 (arguments
1341 '(#:tests? #f)) ; no test suite
1342 (synopsis "Simple Ruby library for XML processing")
1343 (description "This library provides a simple API for XML processing in
1344 Ruby.")
1345 (home-page "https://github.com/maik/xml-simple")
1346 (license license:ruby)))
1347
1348 (define-public ruby-thor
1349 (package
1350 (name "ruby-thor")
1351 (version "0.19.4")
1352 (source (origin
1353 (method url-fetch)
1354 (uri (rubygems-uri "thor" version))
1355 (sha256
1356 (base32
1357 "01n5dv9kql60m6a00zc0r66jvaxx98qhdny3klyj0p3w34pad2ns"))))
1358 (build-system ruby-build-system)
1359 (arguments
1360 '(#:tests? #f)) ; no test suite
1361 (native-inputs
1362 `(("bundler" ,bundler)))
1363 (synopsis "Ruby toolkit for building command-line interfaces")
1364 (description "Thor is a toolkit for building powerful command-line
1365 interfaces.")
1366 (home-page "http://whatisthor.com/")
1367 (license license:expat)))
1368
1369 (define-public ruby-lumberjack
1370 (package
1371 (name "ruby-lumberjack")
1372 (version "1.0.13")
1373 (source (origin
1374 (method url-fetch)
1375 (uri (rubygems-uri "lumberjack" version))
1376 (sha256
1377 (base32
1378 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
1379 (build-system ruby-build-system)
1380 (native-inputs
1381 `(("ruby-rspec" ,ruby-rspec)
1382 ("ruby-timecop" ,ruby-timecop)))
1383 (synopsis "Logging utility library for Ruby")
1384 (description "Lumberjack is a simple logging utility that can be a drop in
1385 replacement for Logger or ActiveSupport::BufferedLogger. It provides support
1386 for automatically rolling log files even with multiple processes writing the
1387 same log file.")
1388 (home-page "https://github.com/bdurand/lumberjack")
1389 (license license:expat)))
1390
1391 (define-public ruby-nenv
1392 (package
1393 (name "ruby-nenv")
1394 (version "0.3.0")
1395 (source (origin
1396 (method url-fetch)
1397 (uri (rubygems-uri "nenv" version))
1398 (sha256
1399 (base32
1400 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
1401 (build-system ruby-build-system)
1402 (arguments
1403 `(#:tests? #f)) ; no tests included
1404 (native-inputs
1405 `(("ruby-rspec" ,ruby-rspec)
1406 ("bundler" ,bundler)))
1407 (synopsis "Ruby interface for modifying the environment")
1408 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
1409 and inspect the environment.")
1410 (home-page "https://github.com/e2/nenv")
1411 (license license:expat)))
1412
1413 (define-public ruby-permutation
1414 (package
1415 (name "ruby-permutation")
1416 (version "0.1.8")
1417 (source (origin
1418 (method url-fetch)
1419 (uri (rubygems-uri "permutation" version))
1420 (sha256
1421 (base32
1422 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
1423 (build-system ruby-build-system)
1424 (arguments
1425 `(#:phases
1426 (modify-phases %standard-phases
1427 (add-after 'unpack 'fix-rakefile
1428 (lambda _
1429 (substitute* "Rakefile"
1430 (("require 'rake/gempackagetask'")
1431 "require 'rubygems/package_task'")
1432 (("include Config") ""))
1433 #t))
1434 (replace 'check
1435 (lambda _
1436 (invoke "ruby" "-Ilib" "test/test.rb"))))))
1437 (synopsis "Library to perform operations with sequence permutations")
1438 (description "This package provides a Ruby library to perform different
1439 operations with permutations of sequences, such as strings and arrays.")
1440 (home-page "https://flori.github.io/permutation")
1441 (license license:gpl2))) ; GPL 2 only
1442
1443 (define-public ruby-shellany
1444 (package
1445 (name "ruby-shellany")
1446 (version "0.0.1")
1447 (source (origin
1448 (method url-fetch)
1449 (uri (rubygems-uri "shellany" version))
1450 (sha256
1451 (base32
1452 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
1453 (build-system ruby-build-system)
1454 (arguments
1455 `(#:test-target "default"
1456 #:phases
1457 (modify-phases %standard-phases
1458 (add-after 'unpack 'fix-version-test
1459 (lambda _
1460 (substitute* "spec/shellany_spec.rb"
1461 (("^RSpec") "require \"shellany\"\nRSpec"))
1462 #t)))))
1463 (native-inputs
1464 `(("ruby-rspec" ,ruby-rspec)
1465 ("ruby-nenv" ,ruby-nenv)
1466 ("bundler" ,bundler)))
1467 (synopsis "Capture command output")
1468 (description "Shellany is a Ruby library providing functions to capture
1469 the output produced by running shell commands.")
1470 (home-page "https://rubygems.org/gems/shellany")
1471 (license license:expat)))
1472
1473 (define-public ruby-notiffany
1474 (package
1475 (name "ruby-notiffany")
1476 (version "0.1.1")
1477 (source (origin
1478 (method url-fetch)
1479 (uri (rubygems-uri "notiffany" version))
1480 (sha256
1481 (base32
1482 "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx"))))
1483 (build-system ruby-build-system)
1484 ;; Tests are not included in the gem.
1485 (arguments `(#:tests? #f))
1486 (propagated-inputs
1487 `(("ruby-shellany" ,ruby-shellany)
1488 ("ruby-nenv" ,ruby-nenv)))
1489 (native-inputs
1490 `(("bundler" ,bundler)))
1491 (synopsis "Wrapper libray for notification libraries")
1492 (description "Notiffany is a Ruby wrapper libray for notification
1493 libraries such as Libnotify.")
1494 (home-page "https://github.com/guard/notiffany")
1495 (license license:expat)))
1496
1497 (define-public ruby-formatador
1498 (package
1499 (name "ruby-formatador")
1500 (version "0.2.5")
1501 (source (origin
1502 (method url-fetch)
1503 (uri (rubygems-uri "formatador" version))
1504 (sha256
1505 (base32
1506 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
1507 (build-system ruby-build-system)
1508 ;; Circular dependency: Tests require ruby-shindo, which requires
1509 ;; ruby-formatador at runtime.
1510 (arguments `(#:tests? #f))
1511 (synopsis "Ruby library to format text on stdout")
1512 (description "Formatador is a Ruby library to format text printed to the
1513 standard output stream.")
1514 (home-page "https://github.com/geemus/formatador")
1515 (license license:expat)))
1516
1517 (define-public ruby-fuubar
1518 (package
1519 (name "ruby-fuubar")
1520 (version "2.3.2")
1521 (source
1522 (origin
1523 ;; Fetch from the git repository, as the gem package doesn't include
1524 ;; the tests.
1525 (method git-fetch)
1526 (uri (git-reference
1527 (url "https://github.com/thekompanee/fuubar.git")
1528 (commit (string-append "releases/v" version))))
1529 (file-name (git-file-name name version))
1530 (sha256
1531 (base32
1532 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
1533 (build-system ruby-build-system)
1534 (arguments
1535 '(;; TODO: Some tests fail, unsure why.
1536 ;; 21 examples, 7 failures
1537 #:tests? #f
1538 #:phases
1539 (modify-phases %standard-phases
1540 (add-before 'build 'delete-certificate
1541 (lambda _
1542 ;; Remove 's.cert_chain' as we do not build with a private key
1543 (substitute* "fuubar.gemspec"
1544 ((".*cert_chain.*") "")
1545 ((".*signing_key.*") ""))
1546 #t))
1547 (replace 'check
1548 (lambda* (#:key tests? #:allow-other-keys)
1549 (when tests?
1550 (invoke "rspec"))
1551 #t)))))
1552 (native-inputs
1553 `(("bundler" ,bundler)))
1554 (propagated-inputs
1555 `(("ruby-rspec-core" ,ruby-rspec-core)
1556 ("ruby-progressbar" ,ruby-progressbar)))
1557 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
1558 (description
1559 "Fuubar is an RSpec formatter that uses a progress bar instead of a
1560 string of letters and dots as feedback. It also stops on the first test
1561 failure.")
1562 (home-page "https://github.com/thekompanee/fuubar")
1563 (license license:expat)))
1564
1565 (define-public ruby-hashdiff
1566 (package
1567 (name "ruby-hashdiff")
1568 (version "0.3.8")
1569 (source
1570 (origin
1571 (method url-fetch)
1572 (uri (rubygems-uri "hashdiff" version))
1573 (sha256
1574 (base32
1575 "19ykg5pax8798nh1yv71adkx0zzs7gn2rxjj86v7nsw0jba5lask"))))
1576 (build-system ruby-build-system)
1577 (arguments
1578 '(#:phases
1579 (modify-phases %standard-phases
1580 ;; Run tests directly via rspec to avoid Rake issue:
1581 ;; NoMethodError: undefined method `last_comment'
1582 (replace 'check
1583 (lambda* (#:key tests? #:allow-other-keys)
1584 (when tests?
1585 (invoke "rspec"))
1586 #t)))))
1587 (native-inputs
1588 `(("bundler" ,bundler)
1589 ("ruby-rspec" ,ruby-rspec-2)))
1590 (synopsis "HashDiff computes the smallest difference between two hashes")
1591 (description
1592 "HashDiff is a Ruby library to compute the smallest difference between
1593 two hashes.")
1594 (home-page "https://github.com/liufengyun/hashdiff")
1595 (license license:expat)))
1596
1597 (define-public ruby-shindo
1598 (package
1599 (name "ruby-shindo")
1600 (version "0.3.8")
1601 (source (origin
1602 (method url-fetch)
1603 (uri (rubygems-uri "shindo" version))
1604 (sha256
1605 (base32
1606 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
1607 (build-system ruby-build-system)
1608 (arguments
1609 `(#:test-target "shindo_tests"
1610 #:phases
1611 (modify-phases %standard-phases
1612 (add-after 'unpack 'fix-tests
1613 (lambda _
1614 (substitute* "tests/tests_helper.rb"
1615 (("-rubygems") ""))
1616 (substitute* "Rakefile"
1617 (("system \"shindo") "system \"./bin/shindo")
1618 ;; This test doesn't work, so we disable it.
1619 (("fail \"The build_error test should fail") "#")
1620 ((" -rubygems") ""))
1621 #t)))))
1622 (propagated-inputs
1623 `(("ruby-formatador" ,ruby-formatador)))
1624 (synopsis "Simple depth first Ruby testing")
1625 (description "Shindo is a simple depth first testing library for Ruby.")
1626 (home-page "https://github.com/geemus/shindo")
1627 (license license:expat)))
1628
1629 (define-public ruby-rubygems-tasks
1630 (package
1631 (name "ruby-rubygems-tasks")
1632 (version "0.2.4")
1633 (source (origin
1634 (method url-fetch)
1635 (uri (rubygems-uri "rubygems-tasks" version))
1636 (sha256
1637 (base32
1638 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
1639 (build-system ruby-build-system)
1640 ;; Tests need Internet access.
1641 (arguments `(#:tests? #f))
1642 (native-inputs
1643 `(("ruby-rspec" ,ruby-rspec)
1644 ("ruby-yard" ,ruby-yard)))
1645 (synopsis "Rake tasks for managing and releasing Ruby Gems")
1646 (description "Rubygems-task provides Rake tasks for managing and releasing
1647 Ruby Gems.")
1648 (home-page "https://github.com/postmodern/rubygems-tasks")
1649 (license license:expat)))
1650
1651 (define-public ruby-rubyzip
1652 (package
1653 (name "ruby-rubyzip")
1654 (version "1.2.1")
1655 (source
1656 (origin
1657 (method url-fetch)
1658 (uri (rubygems-uri "rubyzip" version))
1659 (sha256
1660 (base32
1661 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
1662 (build-system ruby-build-system)
1663 (arguments
1664 '(#:phases
1665 (modify-phases %standard-phases
1666 (add-before 'check 'patch-tests
1667 (lambda* (#:key inputs #:allow-other-keys)
1668 (substitute* "test/gentestfiles.rb"
1669 (("/usr/bin/zip")
1670 (string-append
1671 (assoc-ref inputs "zip") "/bin/zip")))
1672 (substitute* "test/input_stream_test.rb"
1673 (("/usr/bin/env ruby") (which "ruby")))
1674 #t)))))
1675 (native-inputs
1676 `(("bundler" ,bundler)
1677 ("ruby-simplecov" ,ruby-simplecov)
1678 ("zip" ,zip)
1679 ("unzip" ,unzip)))
1680 (synopsis "Ruby module is for reading and writing zip files")
1681 (description
1682 "The rubyzip module provides ways to read from and create zip files.")
1683 (home-page "http://github.com/rubyzip/rubyzip")
1684 (license license:bsd-2)))
1685
1686 (define-public ruby-simplecov-html
1687 (package
1688 (name "ruby-simplecov-html")
1689 (version "0.10.2")
1690 (source (origin
1691 (method url-fetch)
1692 (uri (rubygems-uri "simplecov-html" version))
1693 (sha256
1694 (base32
1695 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
1696 (build-system ruby-build-system)
1697 (arguments `(#:tests? #f)) ; there are no tests
1698 (native-inputs
1699 `(("bundler" ,bundler)))
1700 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
1701 (description "This package provides the default HTML formatter for
1702 the SimpleCov code coverage tool for Ruby version 1.9 and above.")
1703 (home-page "https://github.com/colszowka/simplecov-html")
1704 (license license:expat)))
1705
1706 (define-public ruby-simplecov
1707 (package
1708 (name "ruby-simplecov")
1709 (version "0.12.0")
1710 (source (origin
1711 (method url-fetch)
1712 (uri (rubygems-uri "simplecov" version))
1713 (sha256
1714 (base32
1715 "0ffhyrfnq2zm2mc1742a4hqy475g3qa1zf6yfldwg1ldh5sn3qbx"))))
1716 (build-system ruby-build-system)
1717 ;; Simplecov depends on rubocop for code style checking at build time.
1718 ;; Rubocop needs simplecov at build time.
1719 (arguments `(#:tests? #f))
1720 (propagated-inputs
1721 `(("ruby-json" ,ruby-json)
1722 ("ruby-docile" ,ruby-docile)
1723 ("ruby-simplecov-html" ,ruby-simplecov-html)))
1724 (native-inputs
1725 `(("bundler" ,bundler)))
1726 (synopsis "Code coverage framework for Ruby")
1727 (description "SimpleCov is a code coverage framework for Ruby with a
1728 powerful configuration library and automatic merging of coverage across test
1729 suites.")
1730 (home-page "https://github.com/colszowka/simplecov")
1731 (license license:expat)))
1732
1733 (define-public ruby-useragent
1734 (package
1735 (name "ruby-useragent")
1736 (version "0.16.8")
1737 (source (origin
1738 (method url-fetch)
1739 (uri (rubygems-uri "useragent" version))
1740 (sha256
1741 (base32
1742 "1139cjqyv1hk1qcw89k81ajjkqyakqgbcyvmfrsmjqi8yn9kgqhq"))))
1743 (build-system ruby-build-system)
1744 (arguments
1745 '(#:tests? #f)) ; no test suite
1746 (synopsis "HTTP user agent parser for Ruby")
1747 (description "UserAgent is a Ruby library that parses and compares HTTP
1748 User Agents.")
1749 (home-page "https://github.com/gshutler/useragent")
1750 (license license:expat)))
1751
1752 (define-public ruby-backports
1753 (package
1754 (name "ruby-backports")
1755 (version "3.11.4")
1756 (source
1757 (origin
1758 (method url-fetch)
1759 (uri (rubygems-uri "backports" version))
1760 (sha256
1761 (base32
1762 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
1763 (build-system ruby-build-system)
1764 (arguments
1765 '(;; TODO: This should be default, but there is one test failure
1766 #:test-target "all_spec"))
1767 (native-inputs
1768 `(("ruby-mspec" ,ruby-mspec)
1769 ("ruby-activesupport" ,ruby-activesupport)))
1770 (synopsis "Backports of the features in newer Ruby versions")
1771 (description
1772 "Backports enables more compatibility across Ruby versions by providing
1773 backports of some features.")
1774 (home-page "https://github.com/marcandre/backports")
1775 (license license:expat)))
1776
1777 (define-public ruby-bacon
1778 (package
1779 (name "ruby-bacon")
1780 (version "1.2.0")
1781 (source (origin
1782 (method url-fetch)
1783 (uri (rubygems-uri "bacon" version))
1784 (sha256
1785 (base32
1786 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
1787 (build-system ruby-build-system)
1788 (synopsis "Small RSpec clone")
1789 (description "Bacon is a small RSpec clone providing all essential
1790 features.")
1791 (home-page "https://github.com/chneukirchen/bacon")
1792 (license license:expat)))
1793
1794 (define-public ruby-bacon-bits
1795 (package
1796 (name "ruby-bacon-bits")
1797 (version "0.1.0")
1798 (source
1799 (origin
1800 (method url-fetch)
1801 (uri (rubygems-uri "bacon-bits" version))
1802 (sha256
1803 (base32
1804 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
1805 (build-system ruby-build-system)
1806 (arguments
1807 ;; No tests
1808 '(#:tests? #f))
1809 (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
1810 (synopsis "Extensions to Bacon, for disabling tests, before and after
1811 blocks and more")
1812 (description
1813 "This extends the bacon testing framework with useful extensions to
1814 disable tests, have before and after blocks that run once and more.")
1815 (home-page "https://github.com/cldwalker/bacon-bits")
1816 (license license:expat)))
1817
1818 (define-public ruby-bacon-colored-output
1819 (package
1820 (name "ruby-bacon-colored-output")
1821 (version "1.1.1")
1822 (source
1823 (origin
1824 (method url-fetch)
1825 (uri (rubygems-uri "bacon-colored_output" version))
1826 (sha256
1827 (base32
1828 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
1829 (build-system ruby-build-system)
1830 (arguments
1831 '(;; No included tests
1832 #:tests? #f))
1833 (propagated-inputs
1834 `(("ruby-bacon" ,ruby-bacon)))
1835 (synopsis "Colored output for Bacon test framework")
1836 (description
1837 "This package adds color through ANSI escape codes to Bacon test
1838 output.")
1839 (home-page "https://github.com/whitequark/bacon-colored_output")
1840 (license license:expat)))
1841
1842 (define-public ruby-connection-pool
1843 (package
1844 (name "ruby-connection-pool")
1845 (version "2.2.2")
1846 (source (origin
1847 (method url-fetch)
1848 (uri (rubygems-uri "connection_pool" version))
1849 (sha256
1850 (base32
1851 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
1852 (build-system ruby-build-system)
1853 (native-inputs
1854 `(("bundler" ,bundler)))
1855 (synopsis "Generic connection pool for Ruby")
1856 (description "Connection_pool provides a generic connection pooling
1857 interface for Ruby programs.")
1858 (home-page "https://github.com/mperham/connection_pool")
1859 (license license:expat)))
1860
1861 (define-public ruby-net-http-persistent
1862 (package
1863 (name "ruby-net-http-persistent")
1864 (version "3.0.0")
1865 (source (origin
1866 (method url-fetch)
1867 (uri (rubygems-uri "net-http-persistent" version))
1868 (sha256
1869 (base32
1870 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
1871 (build-system ruby-build-system)
1872 (native-inputs
1873 `(("ruby-connection-pool" ,ruby-connection-pool)
1874 ("ruby-hoe" ,ruby-hoe)))
1875 (synopsis "Persistent HTTP connection manager")
1876 (description "Net::HTTP::Persistent manages persistent HTTP connections
1877 using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
1878 (home-page "https://github.com/drbrain/net-http-persistent")
1879 (license license:expat)))
1880
1881 (define-public ruby-power-assert
1882 (package
1883 (name "ruby-power-assert")
1884 (version "0.2.7")
1885 (source (origin
1886 (method url-fetch)
1887 (uri (rubygems-uri "power_assert" version))
1888 (sha256
1889 (base32
1890 "0ka6w71lcan4wgf111xi3pcn9ma9lhakv31jg8w007nwzi0xfjbi"))))
1891 (build-system ruby-build-system)
1892 (native-inputs
1893 `(("bundler" ,bundler)))
1894 (synopsis "Assert library with descriptive assertion messages")
1895 (description "Power-assert is an assertion library providing descriptive
1896 assertion messages for tests.")
1897 (home-page "https://github.com/k-tsj/power_assert")
1898 (license (list license:bsd-2 license:ruby))))
1899
1900 (define-public ruby-powerpack
1901 (package
1902 (name "ruby-powerpack")
1903 (version "0.1.2")
1904 (source
1905 (origin
1906 (method url-fetch)
1907 (uri (rubygems-uri "powerpack" version))
1908 (sha256
1909 (base32
1910 "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
1911 (build-system ruby-build-system)
1912 (arguments
1913 '(#:test-target "spec"))
1914 (native-inputs
1915 `(("bundler" ,bundler)
1916 ("ruby-rspec" ,ruby-rspec)
1917 ("ruby-yard" ,ruby-yard)))
1918 (synopsis "Useful extensions to core Ruby classes")
1919 (description
1920 "This package provides a few useful extensions to core Ruby classes,
1921 including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
1922 @code{String}.")
1923 (home-page "https://github.com/bbatsov/powerpack")
1924 (license license:expat)))
1925
1926 (define-public ruby-locale
1927 (package
1928 (name "ruby-locale")
1929 (version "2.1.2")
1930 (source (origin
1931 (method url-fetch)
1932 (uri (rubygems-uri "locale" version))
1933 (sha256
1934 (base32
1935 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
1936 (build-system ruby-build-system)
1937 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1938 ;; which needs ruby-gettext, which needs ruby-locale. To break the
1939 ;; dependency cycle we disable tests.
1940 (arguments `(#:tests? #f))
1941 (native-inputs
1942 `(("bundler" ,bundler)
1943 ("ruby-yard" ,ruby-yard)))
1944 (synopsis "Ruby library providing basic localization APIs")
1945 (description
1946 "Ruby-Locale is the pure ruby library which provides basic APIs for
1947 localization.")
1948 (home-page "https://github.com/ruby-gettext/locale")
1949 (license (list license:lgpl3+ license:ruby))))
1950
1951 (define-public ruby-text
1952 (package
1953 (name "ruby-text")
1954 (version "1.3.1")
1955 (source (origin
1956 (method url-fetch)
1957 (uri (rubygems-uri "text" version))
1958 (sha256
1959 (base32
1960 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
1961 (build-system ruby-build-system)
1962 (synopsis "Collection of text algorithms for Ruby")
1963 (description
1964 "This package provides a collection of text algorithms: Levenshtein,
1965 Soundex, Metaphone, Double Metaphone, Porter Stemming.")
1966 (home-page "https://github.com/threedaymonk/text")
1967 (license license:expat)))
1968
1969 (define-public ruby-gettext
1970 (package
1971 (name "ruby-gettext")
1972 (version "3.1.7")
1973 (source (origin
1974 (method url-fetch)
1975 (uri (rubygems-uri "gettext" version))
1976 (sha256
1977 (base32
1978 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
1979 (build-system ruby-build-system)
1980 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1981 ;; which needs ruby-gettext. To break the dependency cycle we disable
1982 ;; tests.
1983 (arguments `(#:tests? #f))
1984 (propagated-inputs
1985 `(("ruby-locale" ,ruby-locale)
1986 ("ruby-text" ,ruby-text)))
1987 (native-inputs
1988 `(("bundler" ,bundler)
1989 ("ruby-yard" ,ruby-yard)))
1990 (synopsis "GNU gettext-like program for Ruby")
1991 (description
1992 "Gettext is a GNU gettext-like program for Ruby. The catalog
1993 file (po-file) used is the same as that used by GNU gettext, allowing you to
1994 use GNU gettext tools for maintenance.")
1995 (home-page "https://ruby-gettext.github.com/")
1996 (license (list license:lgpl3+ license:ruby))))
1997
1998 (define-public ruby-packnga
1999 (package
2000 (name "ruby-packnga")
2001 (version "1.0.4")
2002 (source (origin
2003 (method url-fetch)
2004 (uri (rubygems-uri "packnga" version))
2005 (sha256
2006 (base32
2007 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
2008 (build-system ruby-build-system)
2009 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
2010 ;; To break the dependency cycle we disable tests.
2011 (arguments `(#:tests? #f))
2012 (propagated-inputs
2013 `(("ruby-gettext" ,ruby-gettext)
2014 ("ruby-yard" ,ruby-yard)))
2015 (native-inputs
2016 `(("bundler" ,bundler)))
2017 (synopsis "Utility library to package internationalized libraries")
2018 (description
2019 "Packnga is a library to translate to many languages using YARD.")
2020 (home-page "http://ranguba.org/packnga/")
2021 (license license:lgpl2.0+)))
2022
2023 (define-public ruby-test-unit
2024 (package
2025 (name "ruby-test-unit")
2026 (version "3.2.5")
2027 (source (origin
2028 (method url-fetch)
2029 (uri (rubygems-uri "test-unit" version))
2030 (sha256
2031 (base32
2032 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
2033 (build-system ruby-build-system)
2034 (propagated-inputs
2035 `(("ruby-power-assert" ,ruby-power-assert)))
2036 (native-inputs
2037 `(("bundler" ,bundler)
2038 ("ruby-packnga" ,ruby-packnga)
2039 ("ruby-yard" ,ruby-yard)))
2040 (synopsis "Unit testing framework for Ruby")
2041 (description "@code{Test::Unit} is unit testing framework for Ruby, based
2042 on xUnit principles. These were originally designed by Kent Beck, creator of
2043 extreme programming software development methodology, for Smalltalk's SUnit.
2044 It allows writing tests, checking results and automated testing in Ruby.")
2045 (home-page "https://test-unit.github.io/")
2046 (license (list license:psfl license:ruby))))
2047
2048 (define-public ruby-maruku
2049 (package
2050 (name "ruby-maruku")
2051 (version "0.7.3")
2052 (source
2053 (origin
2054 (method url-fetch)
2055 (uri (rubygems-uri "maruku" version))
2056 (sha256
2057 (base32
2058 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
2059 (build-system ruby-build-system)
2060 (arguments
2061 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
2062 #:tests? #f
2063 #:phases
2064 (modify-phases %standard-phases
2065 (replace 'check
2066 (lambda* (#:key tests? #:allow-other-keys)
2067 (when tests?
2068 (invoke "rspec"))
2069 #t)))))
2070 (native-inputs
2071 `(("ruby-rspec" ,ruby-rspec)
2072 ("ruby-simplecov" ,ruby-simplecov)
2073 ("ruby-nokogiri-diff" ,ruby-nokogiri-diff)))
2074 (synopsis "Markdown interpreter in Ruby")
2075 (description
2076 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
2077 HTML, and PDF through LaTeX.")
2078 (home-page "https://github.com/bhollis/maruku")
2079 (license license:expat)))
2080
2081 (define-public ruby-metaclass
2082 (package
2083 (name "ruby-metaclass")
2084 (version "0.0.4")
2085 (source (origin
2086 (method url-fetch)
2087 (uri (rubygems-uri "metaclass" version))
2088 (sha256
2089 (base32
2090 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
2091 (build-system ruby-build-system)
2092 (arguments
2093 `(#:phases
2094 (modify-phases %standard-phases
2095 (add-after 'unpack 'add-test-unit-to-search-path
2096 (lambda* (#:key inputs #:allow-other-keys)
2097 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
2098 (substitute* "Rakefile"
2099 (("t\\.libs << \"test\"" line)
2100 (string-append line "; t.libs << \""
2101 test-unit "/lib/ruby/vendor_ruby"
2102 "/gems/test-unit-"
2103 ,(package-version ruby-test-unit)
2104 "/lib\""))))
2105 #t)))))
2106 (native-inputs
2107 `(("bundler" ,bundler)
2108 ("ruby-test-unit" ,ruby-test-unit)))
2109 (synopsis "Ruby library adding metaclass method to all objects")
2110 (description
2111 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
2112 objects.")
2113 (home-page "https://github.com/floehopper/metaclass")
2114 (license license:expat)))
2115
2116 (define-public ruby-mspec
2117 (package
2118 (name "ruby-mspec")
2119 (version "1.9.1")
2120 (source
2121 (origin
2122 (method url-fetch)
2123 (uri (rubygems-uri "mspec" version))
2124 (sha256
2125 (base32
2126 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
2127 (build-system ruby-build-system)
2128 (arguments
2129 '(;; TODO: 3 test failures
2130 ;; ./spec/mocks/mock_spec.rb:82
2131 ;; ./spec/utils/name_map_spec.rb:151
2132 ;; ./spec/utils/name_map_spec.rb:155
2133 #:tests? #f
2134 #:phases
2135 (modify-phases %standard-phases
2136 (add-after 'extract-gemspec 'change-dependency-constraints
2137 (lambda _
2138 (substitute* "mspec.gemspec"
2139 (("rake.*") "rake>)\n")
2140 (("rspec.*") "rspec>)\n"))
2141 #t))
2142 (replace 'check
2143 (lambda* (#:key tests? #:allow-other-keys)
2144 (when tests?
2145 (invoke "rspec" "spec"))
2146 #t)))))
2147 (native-inputs
2148 `(("bundler" ,bundler)
2149 ("ruby-rake" ,ruby-rake)
2150 ("ruby-rspec" ,ruby-rspec)))
2151 (synopsis "MSpec is a specialized framework for RubySpec")
2152 (description
2153 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
2154 for basic features. MSpec contains additional features that assist in writing
2155 specs for Ruby implementations in ruby/spec.")
2156 (home-page "http://rubyspec.org")
2157 (license license:expat)))
2158
2159 (define-public ruby-mysql2
2160 (package
2161 (name "ruby-mysql2")
2162 (version "0.5.2")
2163 (source
2164 (origin
2165 (method git-fetch)
2166 (uri (git-reference
2167 (url "https://github.com/brianmario/mysql2.git")
2168 (commit version)))
2169 (file-name (git-file-name name version))
2170 (sha256
2171 (base32
2172 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
2173 (build-system ruby-build-system)
2174 (arguments
2175 '(;; TODO: Tests require a running MySQL/MariaDB service
2176 #:tests? #f
2177 #:phases
2178 (modify-phases %standard-phases
2179 (replace 'replace-git-ls-files
2180 (lambda _
2181 (substitute* "mysql2.gemspec"
2182 (("git ls-files .*`") "find . -type f |sort`"))
2183 #t))
2184 (add-before 'install 'set-MAKEFLAGS
2185 (lambda* (#:key outputs #:allow-other-keys)
2186 (setenv "MAKEFLAGS"
2187 (string-append
2188 "V=1 "
2189 "prefix=" (assoc-ref outputs "out")))
2190 #t))
2191 ;; Move the 'check phase to after 'install, as then you can test
2192 ;; using the installed mysql2 gem in the store.
2193 (delete 'check)
2194 (add-after 'install 'check
2195 (lambda* (#:key outputs tests? #:allow-other-keys)
2196 (setenv "GEM_PATH"
2197 (string-append
2198 (getenv "GEM_PATH")
2199 ":"
2200 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
2201 (when tests?
2202 (invoke "rspec"))
2203 #t)))))
2204 (inputs
2205 `(("mariadb" ,mariadb)
2206 ("zlib" ,zlib)))
2207 (native-inputs
2208 `(("ruby-rspec" ,ruby-rspec)
2209 ("ruby-rake-compiler" ,ruby-rake-compiler)))
2210 (synopsis "MySQL library for Ruby, binding to libmysql")
2211 (description
2212 "This package provides a simple, fast MySQL library for Ruby, binding to
2213 libmysql.")
2214 (home-page "https://github.com/brianmario/mysql2")
2215 (license license:expat)))
2216
2217 (define-public ruby-blankslate
2218 (package
2219 (name "ruby-blankslate")
2220 (version "3.1.3")
2221 (source (origin
2222 (method url-fetch)
2223 (uri (rubygems-uri "blankslate" version))
2224 (sha256
2225 (base32
2226 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
2227 (build-system ruby-build-system)
2228 (arguments
2229 `(#:phases
2230 (modify-phases %standard-phases
2231 (replace 'check
2232 (lambda _ (invoke "rspec" "spec/"))))))
2233 (native-inputs
2234 `(("bundler" ,bundler)
2235 ("ruby-rspec" ,ruby-rspec)))
2236 (synopsis "Abstract base class with no predefined methods")
2237 (description
2238 "BlankSlate provides an abstract base class with no predefined
2239 methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
2240 as a base class when writing classes that depend upon
2241 @code{method_missing} (e.g. dynamic proxies).")
2242 (home-page "https://github.com/masover/blankslate")
2243 (license license:expat)))
2244
2245 (define-public ruby-bond
2246 (package
2247 (name "ruby-bond")
2248 (version "0.5.1")
2249 (source
2250 (origin
2251 (method url-fetch)
2252 (uri (rubygems-uri "bond" version))
2253 (sha256
2254 (base32
2255 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
2256 (build-system ruby-build-system)
2257 (native-inputs
2258 `(("ruby-bacon" ,ruby-bacon)
2259 ("ruby-bacon-bits" ,ruby-bacon-bits)
2260 ("ruby-mocha-on-bacon" ,ruby-mocha-on-bacon)))
2261 (synopsis "Bond can provide custom autocompletion for arguments, methods
2262 and more")
2263 (description
2264 "Bond can autocomplete argument(s) to methods, uniquely completing per
2265 module, per method and per argument. Bond provides a configuration system and
2266 a DSL for creating custom completions and completion rules. Bond can also
2267 load completions that ship with gems. Bond is able to offer more than irb's
2268 completion since it uses the full line of input when completing as opposed to
2269 irb's last-word approach.")
2270 (home-page "http://tagaholic.me/bond/")
2271 (license license:expat)))
2272
2273 (define-public ruby-idn-ruby
2274 (package
2275 (name "ruby-idn-ruby")
2276 (version "0.1.0")
2277 (source
2278 (origin
2279 (method url-fetch)
2280 (uri (rubygems-uri "idn-ruby" version))
2281 (sha256
2282 (base32
2283 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
2284 (build-system ruby-build-system)
2285 (arguments
2286 '(#:phases
2287 (modify-phases %standard-phases
2288 (delete 'check)
2289 (add-after 'install 'check
2290 (lambda* (#:key tests? outputs #:allow-other-keys)
2291 (when tests?
2292 (let* ((gem-file (cadr (find-files "." "\\.gem")))
2293 (name-and-version (basename gem-file ".gem")))
2294 (apply invoke
2295 "ruby" "--verbose"
2296 (string-append "-I"
2297 (assoc-ref outputs "out")
2298 "/lib/ruby/vendor_ruby/gems/"
2299 name-and-version
2300 "/lib")
2301 (find-files "./test" ".*\\.rb"))))
2302 #t)))))
2303 (inputs
2304 `(("libidn" ,libidn)))
2305 (synopsis "Ruby Bindings for the GNU LibIDN library")
2306 (description
2307 "Ruby Bindings for the GNU LibIDN library, an implementation of the
2308 Stringprep, Punycode and IDNA specifications. These are used to encode and
2309 decode internationalized domain + names according to the IDNA2003
2310 specifications.
2311
2312 Included are the most important parts of the Stringprep, Punycode and IDNA
2313 APIs like performing Stringprep processings, encoding to and decoding from
2314 Punycode strings and converting entire domain names to and from the ACE
2315 encoded form.")
2316 (home-page "https://github.com/deepfryed/idn-ruby")
2317 (license license:asl2.0)))
2318
2319 (define-public ruby-instantiator
2320 (package
2321 (name "ruby-instantiator")
2322 (version "0.0.7")
2323 (source (origin
2324 (method url-fetch)
2325 (uri (rubygems-uri "instantiator" version))
2326 (sha256
2327 (base32
2328 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
2329 (build-system ruby-build-system)
2330 (arguments
2331 `(#:phases
2332 (modify-phases %standard-phases
2333 (add-after 'unpack 'add-test-unit-to-search-path
2334 (lambda* (#:key inputs #:allow-other-keys)
2335 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
2336 (substitute* "Rakefile"
2337 (("t\\.libs << \"test\"" line)
2338 (string-append line "; t.libs << \""
2339 test-unit "/lib/ruby/vendor_ruby"
2340 "/gems/test-unit-"
2341 ,(package-version ruby-test-unit)
2342 "/lib\""))))
2343 #t)))))
2344 (propagated-inputs
2345 `(("ruby-blankslate" ,ruby-blankslate)))
2346 (native-inputs
2347 `(("bundler" ,bundler)
2348 ("ruby-test-unit" ,ruby-test-unit)))
2349 (synopsis "Instantiate an arbitrary Ruby class")
2350 (description
2351 "Instantiator lets you instantiate an arbitrary Ruby class without
2352 knowing anything about the constructor.")
2353 (home-page "https://github.com/floehopper/instantiator")
2354 (license license:expat)))
2355
2356 (define-public ruby-introspection
2357 (package
2358 (name "ruby-introspection")
2359 (version "0.0.4")
2360 (source (origin
2361 (method url-fetch)
2362 (uri (rubygems-uri "introspection" version))
2363 (sha256
2364 (base32
2365 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
2366 (build-system ruby-build-system)
2367 (arguments
2368 `(#:phases
2369 (modify-phases %standard-phases
2370 (add-after 'unpack 'add-test-unit-to-search-path
2371 (lambda* (#:key inputs #:allow-other-keys)
2372 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
2373 (substitute* "Rakefile"
2374 (("t\\.libs << \"test\"" line)
2375 (string-append line "; t.libs << \""
2376 test-unit "/lib/ruby/vendor_ruby"
2377 "/gems/test-unit-"
2378 ,(package-version ruby-test-unit)
2379 "/lib\""))))
2380 #t)))))
2381 (propagated-inputs
2382 `(("ruby-instantiator" ,ruby-instantiator)
2383 ("ruby-metaclass" ,ruby-metaclass)))
2384 (native-inputs
2385 `(("bundler" ,bundler)
2386 ("ruby-blankslate" ,ruby-blankslate)
2387 ("ruby-test-unit" ,ruby-test-unit)))
2388 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
2389 (description
2390 "Introspection provides tools to inspect the hierarchy of method
2391 definitions on a Ruby object.")
2392 (home-page "https://github.com/floehopper/introspection")
2393 (license license:expat)))
2394
2395 (define-public ruby-redcarpet
2396 (package
2397 (name "ruby-redcarpet")
2398 (version "3.4.0")
2399 (source (origin
2400 (method url-fetch)
2401 (uri (rubygems-uri "redcarpet" version))
2402 (sha256
2403 (base32
2404 "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7"))))
2405 (build-system ruby-build-system)
2406 (arguments
2407 `(#:phases
2408 (modify-phases %standard-phases
2409 ;; The gem archive does not include the conformance tests.
2410 (add-after 'unpack 'disable-conformance-tests
2411 (lambda _
2412 (substitute* "Rakefile"
2413 (("task :test => %w\\[test:unit test:conformance\\]")
2414 "task :test => %w[test:unit]"))
2415 #t)))))
2416 (native-inputs
2417 `(("bundler" ,bundler)
2418 ("ruby-test-unit" ,ruby-test-unit)
2419 ("ruby-rake-compiler" ,ruby-rake-compiler)))
2420 (synopsis "Extensible Markdown to (X)HTML converter")
2421 (description
2422 "Redcarpet is an extensible Ruby library for Markdown processing and
2423 conversion to (X)HTML.")
2424 (home-page "https://github.com/vmg/redcarpet")
2425 (license license:expat)))
2426
2427 (define-public ruby-mocha
2428 (package
2429 (name "ruby-mocha")
2430 (version "1.1.0")
2431 (source (origin
2432 (method url-fetch)
2433 (uri (rubygems-uri "mocha" version))
2434 (sha256
2435 (base32
2436 "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
2437 (build-system ruby-build-system)
2438 (arguments
2439 `(#:phases
2440 (modify-phases %standard-phases
2441 (add-after 'unpack 'add-test-unit-to-search-path
2442 (lambda* (#:key inputs #:allow-other-keys)
2443 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
2444 (substitute* "Rakefile"
2445 (("t\\.libs << 'test'" line)
2446 (string-append line "; t.libs << \""
2447 test-unit "/lib/ruby/vendor_ruby"
2448 "/gems/test-unit-"
2449 ,(package-version ruby-test-unit)
2450 "/lib\""))))
2451 #t))
2452 (add-before 'check 'use-latest-redcarpet
2453 (lambda _
2454 (substitute* "mocha.gemspec"
2455 (("<redcarpet>.freeze, \\[\"~> 1\"\\]")
2456 "<redcarpet>.freeze, [\">= 3\"]"))
2457 #t))
2458 (add-before 'check 'hardcode-version
2459 (lambda _
2460 ;; Mocha is undefined at build time
2461 (substitute* "Rakefile"
2462 (("#\\{Mocha::VERSION\\}") ,version))
2463 #t))
2464 (add-before 'check 'remove-failing-test
2465 ;; FIXME: This test fails for reasons unrelated to Guix packaging.
2466 (lambda _
2467 (delete-file "test/acceptance/stubbing_nil_test.rb")
2468 #t)))))
2469 (propagated-inputs
2470 `(("ruby-metaclass" ,ruby-metaclass)))
2471 (native-inputs
2472 `(("bundler" ,bundler)
2473 ("ruby-yard" ,ruby-yard)
2474 ("ruby-introspection" ,ruby-introspection)
2475 ("ruby-test-unit" ,ruby-test-unit)
2476 ("ruby-redcarpet" ,ruby-redcarpet)))
2477 (synopsis "Mocking and stubbing library for Ruby")
2478 (description
2479 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
2480 allows mocking and stubbing of methods on real (non-mock) classes.")
2481 (home-page "http://gofreerange.com/mocha/docs")
2482 (license license:expat)))
2483
2484 (define-public ruby-mocha-on-bacon
2485 (package
2486 (name "ruby-mocha-on-bacon")
2487 (version "0.2.3")
2488 (source
2489 (origin
2490 (method url-fetch)
2491 (uri (rubygems-uri "mocha-on-bacon" version))
2492 (sha256
2493 (base32
2494 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
2495 (build-system ruby-build-system)
2496 (arguments
2497 ;; rubygems.org release missing tests
2498 '(#:tests? #f))
2499 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
2500 (synopsis "Mocha adapter for Bacon")
2501 (description
2502 "This package provides a Mocha adapter for Bacon, allowing you to use the
2503 Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
2504 (home-page
2505 "https://github.com/alloy/mocha-on-bacon")
2506 (license license:expat)))
2507
2508 (define-public ruby-net-ssh
2509 (package
2510 (name "ruby-net-ssh")
2511 (version "4.2.0")
2512 (source (origin
2513 (method url-fetch)
2514 (uri (rubygems-uri "net-ssh" version))
2515 (sha256
2516 (base32
2517 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
2518 (build-system ruby-build-system)
2519 (native-inputs
2520 `(("bundler" ,bundler)
2521 ("ruby-mocha" ,ruby-mocha)
2522 ("ruby-test-unit" ,ruby-test-unit)))
2523 (synopsis "Ruby implementation of the SSH2 client protocol")
2524 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
2525 client protocol. It allows you to write programs that invoke and interact
2526 with processes on remote servers, via SSH2.")
2527 (home-page "https://github.com/net-ssh/net-ssh")
2528 (license license:expat)))
2529
2530 (define-public ruby-net-scp
2531 (package
2532 (name "ruby-net-scp")
2533 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
2534 (version "1.2.2.rc2")
2535 (source
2536 (origin
2537 (method url-fetch)
2538 (uri (string-append "https://github.com/net-ssh/net-scp/archive/v"
2539 version ".tar.gz"))
2540 (sha256
2541 (base32
2542 "0xyf17mhgvyz54xjj9ria4wnq3x62bhmkfgzqv8jwiip2bplv1nk"))))
2543 (build-system ruby-build-system)
2544 (native-inputs
2545 `(("bundler" ,bundler)
2546 ("ruby-test-unit" ,ruby-test-unit)
2547 ("ruby-mocha" ,ruby-mocha)))
2548 (propagated-inputs
2549 `(("ruby-net-ssh" ,ruby-net-ssh)))
2550 (synopsis "Pure-Ruby SCP client library")
2551 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
2552 client protocol.")
2553 (home-page "https://github.com/net-ssh/net-scp")
2554 (license license:expat)))
2555
2556 (define-public ruby-minitest
2557 (package
2558 (name "ruby-minitest")
2559 (version "5.11.3")
2560 (source (origin
2561 (method url-fetch)
2562 (uri (rubygems-uri "minitest" version))
2563 (sha256
2564 (base32
2565 "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"))))
2566 (build-system ruby-build-system)
2567 (native-inputs
2568 `(("ruby-hoe" ,ruby-hoe)))
2569 (synopsis "Small test suite library for Ruby")
2570 (description "Minitest provides a complete suite of Ruby testing
2571 facilities supporting TDD, BDD, mocking, and benchmarking.")
2572 (home-page "https://github.com/seattlerb/minitest")
2573 (license license:expat)))
2574
2575 ;; This is the last release of Minitest 4, which is used by some packages.
2576 (define-public ruby-minitest-4
2577 (package (inherit ruby-minitest)
2578 (version "4.7.5")
2579 (source (origin
2580 (method url-fetch)
2581 (uri (rubygems-uri "minitest" version))
2582 (sha256
2583 (base32
2584 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
2585 (arguments
2586 `(#:phases
2587 (modify-phases %standard-phases
2588 (add-after 'unpack 'remove-unsupported-method
2589 (lambda _
2590 (substitute* "Rakefile"
2591 (("self\\.rubyforge_name = .*") ""))
2592 #t))
2593 (add-after 'build 'exclude-failing-tests
2594 (lambda _
2595 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
2596 ;; Fixnum.
2597 (delete-file "test/minitest/test_minitest_spec.rb")
2598 #t)))))))
2599
2600 (define-public ruby-minitest-sprint
2601 (package
2602 (name "ruby-minitest-sprint")
2603 (version "1.1.0")
2604 (source (origin
2605 (method url-fetch)
2606 (uri (rubygems-uri "minitest-sprint" version))
2607 (sha256
2608 (base32
2609 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
2610 (build-system ruby-build-system)
2611 (native-inputs
2612 `(("ruby-hoe" ,ruby-hoe)
2613 ("ruby-minitest" ,ruby-minitest)))
2614 (synopsis "Fast test suite runner for minitest")
2615 (description "Minitest-sprint is a test runner for minitest that makes it
2616 easier to re-run individual failing tests.")
2617 (home-page "https://github.com/seattlerb/minitest-sprint")
2618 (license license:expat)))
2619
2620 (define-public ruby-minitest-bacon
2621 (package
2622 (name "ruby-minitest-bacon")
2623 (version "1.0.3")
2624 (source (origin
2625 (method url-fetch)
2626 (uri (rubygems-uri "minitest-bacon" version))
2627 (sha256
2628 (base32
2629 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
2630 (build-system ruby-build-system)
2631 (native-inputs
2632 `(("ruby-hoe" ,ruby-hoe)))
2633 (inputs
2634 `(("ruby-minitest" ,ruby-minitest)))
2635 (synopsis "Bacon compatibility library for minitest")
2636 (description "Minitest-bacon extends minitest with bacon-like
2637 functionality, making it easier to migrate test suites from bacon to minitest.")
2638 (home-page "https://github.com/seattlerb/minitest-bacon")
2639 (license license:expat)))
2640
2641 (define-public ruby-minitest-focus
2642 (package
2643 (name "ruby-minitest-focus")
2644 (version "1.1.2")
2645 (source
2646 (origin
2647 (method url-fetch)
2648 (uri (rubygems-uri "minitest-focus" version))
2649 (sha256
2650 (base32
2651 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
2652 (build-system ruby-build-system)
2653 (propagated-inputs
2654 `(("ruby-minitest" ,ruby-minitest)))
2655 (native-inputs
2656 `(("ruby-hoe" ,ruby-hoe)))
2657 (synopsis "Allows a few specific tests to be focused on")
2658 (description
2659 "@code{minitest-focus} gives the ability focus on a few tests with ease
2660 without having to use command-line arguments. It introduces a @code{focus}
2661 class method for use in testing classes, specifying that the next defined test
2662 is to be run.")
2663 (home-page "https://github.com/seattlerb/minitest-focus")
2664 (license license:expat)))
2665
2666 (define-public ruby-minitest-pretty-diff
2667 ;; Use git reference because gem is out of date and does not contain testing
2668 ;; script. There are no releases on GitHub.
2669 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
2670 (package
2671 (name "ruby-minitest-pretty-diff")
2672 (version (string-append "0.1-1." (string-take commit 8)))
2673 (source (origin
2674 (method git-fetch)
2675 (uri (git-reference
2676 (url "https://github.com/adammck/minitest-pretty_diff.git")
2677 (commit commit)))
2678 (file-name (string-append name "-" version "-checkout"))
2679 (sha256
2680 (base32
2681 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
2682 (build-system ruby-build-system)
2683 (arguments
2684 `(#:phases
2685 (modify-phases %standard-phases
2686 (replace 'check
2687 (lambda _
2688 (invoke "script/test"))))))
2689 (native-inputs
2690 `(("bundler" ,bundler)
2691 ("ruby-turn" ,ruby-turn)))
2692 (synopsis "Pretty-print hashes and arrays in MiniTest")
2693 (description
2694 "@code{minitest-pretty_diff} monkey-patches
2695 @code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
2696 diffing them. This makes it easier to spot differences between nested
2697 structures when tests fail.")
2698 (home-page "https://github.com/adammck/minitest-pretty_diff")
2699 (license license:expat))))
2700
2701 (define-public ruby-minitest-moar
2702 (package
2703 (name "ruby-minitest-moar")
2704 (version "0.0.4")
2705 (source
2706 (origin
2707 (method url-fetch)
2708 (uri (rubygems-uri "minitest-moar" version))
2709 (sha256
2710 (base32
2711 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
2712 (build-system ruby-build-system)
2713 (arguments
2714 `(#:phases
2715 (modify-phases %standard-phases
2716 (add-before 'check 'clean-dependencies
2717 (lambda _
2718 ;; Remove all gems defined in the Gemfile because these are not
2719 ;; truly needed.
2720 (substitute* "Gemfile"
2721 (("gem .*") ""))
2722 ;; Remove byebug as not needed to run tests.
2723 (substitute* "test/test_helper.rb"
2724 (("require 'byebug'") ""))
2725 #t)))))
2726 (native-inputs
2727 `(("bundler" ,bundler)
2728 ("ruby-minitest" ,ruby-minitest)))
2729 (synopsis "Extra features and changes to MiniTest")
2730 (description "@code{MiniTest Moar} add some additional features and
2731 changes some default behaviours in MiniTest. For instance, Moar replaces the
2732 MiniTest @code{Object#stub} with a global @code{stub} method.")
2733 (home-page "https://github.com/dockyard/minitest-moar")
2734 (license license:expat)))
2735
2736 (define-public ruby-minitest-bonus-assertions
2737 (package
2738 (name "ruby-minitest-bonus-assertions")
2739 (version "3.0")
2740 (source
2741 (origin
2742 (method url-fetch)
2743 (uri (rubygems-uri "minitest-bonus-assertions" version))
2744 (sha256
2745 (base32
2746 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
2747 (build-system ruby-build-system)
2748 (arguments
2749 `(#:phases
2750 (modify-phases %standard-phases
2751 (add-before 'check 'clean-dependencies
2752 (lambda _
2753 ;; Remove unneeded require statement that would entail another
2754 ;; dependency.
2755 (substitute* "test/minitest_config.rb"
2756 (("require 'minitest/bisect'") ""))
2757 #t)))))
2758 (native-inputs
2759 `(("ruby-hoe" ,ruby-hoe)
2760 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
2761 ("ruby-minitest-focus" ,ruby-minitest-focus)
2762 ("ruby-minitest-moar" ,ruby-minitest-moar)))
2763 (synopsis "Bonus assertions for @code{Minitest}")
2764 (description
2765 "Minitest bonus assertions provides extra MiniTest assertions. For
2766 instance, it provides @code{assert_true}, @code{assert_false} and
2767 @code{assert_set_equal}.")
2768 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
2769 (license license:expat)))
2770
2771 (define-public ruby-minitest-reporters
2772 (package
2773 (name "ruby-minitest-reporters")
2774 (version "1.3.6")
2775 (source
2776 (origin
2777 (method url-fetch)
2778 (uri (rubygems-uri "minitest-reporters" version))
2779 (sha256
2780 (base32
2781 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
2782 (build-system ruby-build-system)
2783 (arguments
2784 '(#:phases
2785 (modify-phases %standard-phases
2786 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
2787 ;; including it as an input can lead to circular dependencies.
2788 (add-after 'unpack 'remove-rubocop-from-Rakefile
2789 (lambda _
2790 (substitute* "Rakefile"
2791 (("require 'rubocop/rake\\_task'") "")
2792 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
2793 #t))
2794 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
2795 (lambda _
2796 (substitute* "minitest-reporters.gemspec"
2797 ((".*%q<rubocop>.*") "\n"))
2798 #t)))))
2799 (propagated-inputs
2800 `(("ruby-ansi" ,ruby-ansi)
2801 ("ruby-builder" ,ruby-builder)
2802 ("ruby-minitest" ,ruby-minitest)
2803 ("ruby-progressbar" ,ruby-progressbar)))
2804 (native-inputs
2805 `(("bundler" ,bundler)
2806 ("ruby-maruku" ,ruby-maruku)))
2807 (synopsis "Enhanced reporting for Minitest tests")
2808 (description
2809 "@code{minitest/reporters} provides a custom Minitest runner to improve
2810 how the test state is reported. A number of different reporters are
2811 available, including a spec reporter, progress bar reporter, a HTML
2812 reporter.")
2813 (home-page "https://github.com/kern/minitest-reporters")
2814 (license license:expat)))
2815
2816 (define-public ruby-minitest-rg
2817 (package
2818 (name "ruby-minitest-rg")
2819 (version "5.2.0")
2820 (source
2821 (origin
2822 (method url-fetch)
2823 (uri (rubygems-uri "minitest-rg" version))
2824 (sha256
2825 (base32
2826 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
2827 (build-system ruby-build-system)
2828 (arguments
2829 ;; Some tests fail even outside Guix, so disable tests.
2830 ;; https://github.com/blowmage/minitest-rg/issues/12
2831 ;; https://github.com/blowmage/minitest-rg/pull/13
2832 `(#:tests? #f))
2833 (propagated-inputs
2834 `(("ruby-minitest" ,ruby-minitest)))
2835 (synopsis "Coloured output for Minitest")
2836 (description
2837 "@code{minitest-rg} changes the colour of the output from Minitest.")
2838 (home-page "http://blowmage.com/minitest-rg")
2839 (license license:expat)))
2840
2841 (define-public ruby-minitest-hooks
2842 (package
2843 (name "ruby-minitest-hooks")
2844 (version "1.4.2")
2845 (source
2846 (origin
2847 (method url-fetch)
2848 (uri (rubygems-uri "minitest-hooks" version))
2849 (sha256
2850 (base32
2851 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
2852 (build-system ruby-build-system)
2853 (arguments
2854 '(#:test-target "spec"))
2855 (native-inputs
2856 `(("ruby-sequel" ,ruby-sequel)
2857 ("ruby-sqlite3" ,ruby-sqlite3)))
2858 (synopsis "Hooks for the minitest framework")
2859 (description
2860 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
2861 @code{around_all} hooks for Minitest. This allows, for instance, running each
2862 suite of specs inside a database transaction, running each spec inside its own
2863 savepoint inside that transaction. This can significantly speed up testing
2864 for specs that share expensive database setup code.")
2865 (home-page "https://github.com/jeremyevans/minitest-hooks")
2866 (license license:expat)))
2867
2868 (define-public ruby-daemons
2869 (package
2870 (name "ruby-daemons")
2871 (version "1.2.5")
2872 (source (origin
2873 (method url-fetch)
2874 (uri (rubygems-uri "daemons" version))
2875 (sha256
2876 (base32
2877 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
2878 (build-system ruby-build-system)
2879 (arguments
2880 `(#:tests? #f)) ; no test suite
2881 (synopsis "Daemonize Ruby programs")
2882 (description "Daemons provides a way to wrap existing Ruby scripts to be
2883 run as a daemon and to be controlled by simple start/stop/restart commands.")
2884 (home-page "https://github.com/thuehlinger/daemons")
2885 (license license:expat)))
2886
2887 (define-public ruby-data_uri
2888 (package
2889 (name "ruby-data_uri")
2890 (version "0.1.0")
2891 (source
2892 (origin
2893 (method url-fetch)
2894 (uri (rubygems-uri "data_uri" version))
2895 (sha256
2896 (base32
2897 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
2898 (build-system ruby-build-system)
2899 (synopsis "URI class for parsing data URIs")
2900 (description
2901 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
2902 embedded inside a URI. The URI::Data class provides support for parsing these
2903 URIs using the normal URI.parse method.")
2904 (home-page "https://github.com/dball/data_uri")
2905 (license license:expat)))
2906
2907 (define-public ruby-git
2908 (package
2909 (name "ruby-git")
2910 (version "1.3.0")
2911 (source (origin
2912 (method url-fetch)
2913 (uri (rubygems-uri "git" version))
2914 (sha256
2915 (base32
2916 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
2917 (build-system ruby-build-system)
2918 (arguments
2919 `(#:tests? #f ; no tests
2920 #:phases (modify-phases %standard-phases
2921 (add-after 'install 'patch-git-binary
2922 (lambda* (#:key inputs outputs #:allow-other-keys)
2923 ;; Make the default git binary an absolute path to the
2924 ;; store.
2925 (let ((git (string-append (assoc-ref inputs "git")
2926 "/bin/git"))
2927 (config (string-append
2928 (assoc-ref outputs "out")
2929 "/lib/ruby/vendor_ruby/gems/git-"
2930 ,version "/lib/git/config.rb")))
2931 (substitute* (list config)
2932 (("'git'")
2933 (string-append "'" git "'")))
2934 #t))))))
2935 (inputs
2936 `(("git" ,git)))
2937 (synopsis "Ruby wrappers for Git")
2938 (description "Ruby/Git is a Ruby library that can be used to create, read
2939 and manipulate Git repositories by wrapping system calls to the git binary.")
2940 (home-page "https://github.com/schacon/ruby-git")
2941 (license license:expat)))
2942
2943 (define-public ruby-slop
2944 (package
2945 (name "ruby-slop")
2946 (version "4.5.0")
2947 (source (origin
2948 (method url-fetch)
2949 (uri (rubygems-uri "slop" version))
2950 (sha256
2951 (base32
2952 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
2953 (build-system ruby-build-system)
2954 (native-inputs
2955 `(("ruby-minitest" ,ruby-minitest)))
2956 (synopsis "Ruby command line option parser")
2957 (description "Slop provides a Ruby domain specific language for gathering
2958 options and parsing command line flags.")
2959 (home-page "https://github.com/leejarvis/slop")
2960 (license license:expat)))
2961
2962 (define-public ruby-slop-3
2963 (package (inherit ruby-slop)
2964 (version "3.6.0")
2965 (source (origin
2966 (method url-fetch)
2967 (uri (rubygems-uri "slop" version))
2968 (sha256
2969 (base32
2970 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
2971
2972 (define-public ruby-multipart-post
2973 (package
2974 (name "ruby-multipart-post")
2975 (version "2.0.0")
2976 (source (origin
2977 (method url-fetch)
2978 (uri (rubygems-uri "multipart-post" version))
2979 (sha256
2980 (base32
2981 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
2982 (build-system ruby-build-system)
2983 (native-inputs
2984 `(("bundler" ,bundler)))
2985 (synopsis "Multipart POST library for Ruby")
2986 (description "Multipart-Post Adds multipart POST capability to Ruby's
2987 net/http library.")
2988 (home-page "https://github.com/nicksieger/multipart-post")
2989 (license license:expat)))
2990
2991 (define-public ruby-multi-json
2992 (package
2993 (name "ruby-multi-json")
2994 (version "1.13.1")
2995 (source
2996 (origin
2997 (method url-fetch)
2998 ;; Tests are not distributed at rubygems.org so download from GitHub
2999 ;; instead.
3000 (uri (string-append "https://github.com/intridea/multi_json/archive/v"
3001 version ".tar.gz"))
3002 (file-name (string-append name "-" version ".tar.gz"))
3003 (sha256
3004 (base32
3005 "1s64xqvrnrxmb59v6b2kchnisawg5ai9ky1w60dy6z6ws9la1xv4"))))
3006 (build-system ruby-build-system)
3007 (arguments
3008 `(#:phases
3009 (modify-phases %standard-phases
3010 (add-after 'unpack 'remove-signing-key-reference
3011 (lambda _
3012 (substitute* "multi_json.gemspec"
3013 ((".*spec.signing_key.*") ""))
3014 #t)))))
3015 (native-inputs
3016 `(("bundler" ,bundler)
3017 ("ruby-rspec" ,ruby-rspec)
3018 ("ruby-yard" ,ruby-yard)
3019 ("ruby-json-pure" ,ruby-json-pure)
3020 ("ruby-oj" ,ruby-oj)
3021 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
3022 (synopsis "Common interface to multiple JSON libraries for Ruby")
3023 (description
3024 "This package provides a common interface to multiple JSON libraries,
3025 including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
3026 NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
3027 (home-page "https://github.com/intridea/multi_json")
3028 (license license:expat)))
3029
3030 (define-public ruby-multi-test
3031 (package
3032 (name "ruby-multi-test")
3033 (version "0.1.2")
3034 (source
3035 (origin
3036 (method url-fetch)
3037 (uri (rubygems-uri "multi_test" version))
3038 (sha256
3039 (base32
3040 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
3041 (build-system ruby-build-system)
3042 (arguments
3043 '(;; Tests require different sets of specific gem versions to be available,
3044 ;; and there is no gemfile that specifies the newest versions of
3045 ;; dependencies to be tested.
3046 #:tests? #f))
3047 (synopsis
3048 "Interface to testing libraries loaded into a running Ruby process")
3049 (description
3050 "@code{multi_test} provides a uniform interface onto whatever testing
3051 libraries that have been loaded into a running Ruby process to help control
3052 rogue test/unit/autorun requires.")
3053 (home-page "https://github.com/cucumber/multi_test")
3054 (license license:expat)))
3055
3056 (define-public ruby-arel
3057 (package
3058 (name "ruby-arel")
3059 (version "9.0.0")
3060 (source (origin
3061 (method url-fetch)
3062 (uri (rubygems-uri "arel" version))
3063 (sha256
3064 (base32
3065 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
3066 (build-system ruby-build-system)
3067 (arguments '(#:tests? #f)) ; no tests
3068 (home-page "https://github.com/rails/arel")
3069 (synopsis "SQL AST manager for Ruby")
3070 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
3071 Ruby. It simplifies the generation of complex SQL queries and adapts to
3072 various relational database implementations.")
3073 (license license:expat)))
3074
3075 (define-public ruby-marcel
3076 (package
3077 (name "ruby-marcel")
3078 (version "0.3.3")
3079 (source
3080 (origin
3081 (method url-fetch)
3082 (uri (rubygems-uri "marcel" version))
3083 (sha256
3084 (base32
3085 "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
3086 (build-system ruby-build-system)
3087 (arguments
3088 '(;; No included tests
3089 #:tests? #f))
3090 (propagated-inputs
3091 `(("ruby-mimemagic" ,ruby-mimemagic)))
3092 (synopsis "MIME type detection using magic numbers, filenames and extensions")
3093 (description
3094 "@code{marcel} provides @acronym{MIME, Multipurpose Internet Mail
3095 Extensions} type detection using magic numbers, filenames, and extensions")
3096 (home-page "https://github.com/basecamp/marcel")
3097 (license license:expat)))
3098
3099 (define-public ruby-minitar
3100 ;; We package from the GitHub source to fix the security issue reported at
3101 ;; https://github.com/halostatue/minitar/issues/16.
3102 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
3103 (package
3104 (name "ruby-minitar")
3105 (version (string-append "0.5.4-1." (string-take commit 8)))
3106 (source
3107 (origin
3108 (method git-fetch)
3109 (uri (git-reference
3110 (url "https://github.com/halostatue/minitar.git")
3111 (commit commit)))
3112 (file-name (string-append name "-" version "-checkout"))
3113 (sha256
3114 (base32
3115 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
3116 (build-system ruby-build-system)
3117 (arguments
3118 '(#:tests? #f)) ; missing a gemspec
3119 (synopsis "Ruby library and utility for handling tar archives")
3120 (description
3121 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
3122 that provides the ability to deal with POSIX tar archive files.")
3123 (home-page "http://www.github.com/atoulme/minitar")
3124 (license (list license:gpl2+ license:ruby)))))
3125
3126 (define-public ruby-mini-portile
3127 (package
3128 (name "ruby-mini-portile")
3129 (version "0.6.2")
3130 (source
3131 (origin
3132 (method url-fetch)
3133 (uri (rubygems-uri "mini_portile" version))
3134 (sha256
3135 (base32
3136 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
3137 (build-system ruby-build-system)
3138 (arguments
3139 '(#:tests? #f)) ; tests require network access
3140 (synopsis "Ports system for Ruby developers")
3141 (description "Mini-portile is a port/recipe system for Ruby developers.
3142 It provides a standard way to compile against specific versions of libraries
3143 to reproduce user environments.")
3144 (home-page "https://github.com/flavorjones/mini_portile")
3145 (license license:expat)))
3146
3147 (define-public ruby-mini-portile-2
3148 (package (inherit ruby-mini-portile)
3149 (version "2.2.0")
3150 (source (origin
3151 (method url-fetch)
3152 (uri (rubygems-uri "mini_portile2" version))
3153 (sha256
3154 (base32
3155 "0g5bpgy08q0nc0anisg3yvwc1gc3inl854fcrg48wvg7glqd6dpm"))))))
3156
3157 (define-public ruby-nokogiri
3158 (package
3159 (name "ruby-nokogiri")
3160 (version "1.8.0")
3161 (source (origin
3162 (method url-fetch)
3163 (uri (rubygems-uri "nokogiri" version))
3164 (sha256
3165 (base32
3166 "1nffsyx1xjg6v5n9rrbi8y1arrcx2i5f21cp6clgh9iwiqkr7rnn"))))
3167 (build-system ruby-build-system)
3168 (arguments
3169 ;; Tests fail because Nokogiri can only test with an installed extension,
3170 ;; and also because many test framework dependencies are missing.
3171 `(#:tests? #f
3172 #:gem-flags (list "--" "--use-system-libraries"
3173 (string-append "--with-xml2-include="
3174 (assoc-ref %build-inputs "libxml2")
3175 "/include/libxml2" ))
3176 #:phases
3177 (modify-phases %standard-phases
3178 (add-before 'build 'patch-extconf
3179 ;; 'pkg-config' is not included in the GEM_PATH during
3180 ;; installation, so we add it directly to the load path.
3181 (lambda* (#:key inputs #:allow-other-keys)
3182 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
3183 (substitute* "ext/nokogiri/extconf.rb"
3184 (("gem 'pkg-config'.*")
3185 (string-append "$:.unshift '"
3186 pkg-config "/lib/ruby/vendor_ruby"
3187 "/gems/pkg-config-"
3188 ,(package-version ruby-pkg-config)
3189 "/lib'\n"))))
3190 #t)))))
3191 (native-inputs
3192 `(("ruby-hoe" ,ruby-hoe)))
3193 (inputs
3194 `(("zlib" ,zlib)
3195 ("libxml2" ,libxml2)
3196 ("libxslt" ,libxslt)))
3197 (propagated-inputs
3198 `(("ruby-mini-portile" ,ruby-mini-portile-2)
3199 ("ruby-pkg-config" ,ruby-pkg-config)))
3200 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
3201 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
3202 both CSS3 selector and XPath 1.0 support.")
3203 (home-page "http://www.nokogiri.org/")
3204 (license license:expat)))
3205
3206 (define-public ruby-method-source
3207 (package
3208 (name "ruby-method-source")
3209 (version "0.9.0")
3210 (source
3211 (origin
3212 (method url-fetch)
3213 (uri (rubygems-uri "method_source" version))
3214 (sha256
3215 (base32
3216 "0xqj21j3vfq4ldia6i2akhn2qd84m0iqcnsl49kfpq3xk6x0dzgn"))))
3217 (build-system ruby-build-system)
3218 (arguments
3219 `(#:test-target "spec"))
3220 (native-inputs
3221 `(("ruby-rspec" ,ruby-rspec)
3222 ("git" ,git)))
3223 (synopsis "Retrieve the source code for Ruby methods")
3224 (description "Method_source retrieves the source code for Ruby methods.
3225 Additionally, it can extract source code from Proc and Lambda objects or just
3226 extract comments.")
3227 (home-page "https://github.com/banister/method_source")
3228 (license license:expat)))
3229
3230 (define-public ruby-coderay
3231 (package
3232 (name "ruby-coderay")
3233 (version "1.1.2")
3234 (source
3235 (origin
3236 (method url-fetch)
3237 (uri (rubygems-uri "coderay" version))
3238 (sha256
3239 (base32
3240 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
3241 (build-system ruby-build-system)
3242 (arguments
3243 '(#:tests? #f)) ; missing test files
3244 (synopsis "Ruby syntax highlighting library")
3245 (description "Coderay is a Ruby library that provides syntax highlighting
3246 for select languages.")
3247 (home-page "http://coderay.rubychan.de")
3248 (license license:expat)))
3249
3250 (define-public ruby-parser
3251 (package
3252 (name "ruby-parser")
3253 (version "2.6.0.0")
3254 (source
3255 (origin
3256 (method url-fetch)
3257 (uri (rubygems-uri "parser" version))
3258 (sha256
3259 (base32
3260 "1hhz2k5417vr2k1llwqgjdnmyrhlpqicy0y2arr6r1gp04fg9wlm"))))
3261 (build-system ruby-build-system)
3262 (native-inputs
3263 `(("bundler" ,bundler)
3264 ("ruby-cliver" ,ruby-cliver)
3265 ("ruby-simplecov" ,ruby-simplecov)
3266 ("ruby-racc" ,ruby-racc)))
3267 (inputs
3268 `(("ragel" ,ragel)))
3269 (propagated-inputs
3270 `(("ruby-ast" ,ruby-ast)))
3271 (synopsis "Ruby parser written in pure Ruby")
3272 (description
3273 "This package provides a Ruby parser written in pure Ruby.")
3274 (home-page "https://github.com/whitequark/parser")
3275 (license license:expat)))
3276
3277 (define-public ruby-prawn-manual-builder
3278 (package
3279 (name "ruby-prawn-manual-builder")
3280 (version "0.3.0")
3281 (source
3282 (origin
3283 (method url-fetch)
3284 (uri (rubygems-uri "prawn-manual_builder" version))
3285 (sha256
3286 (base32
3287 "0wbjnkqp55p5wmz85ldypcray223glckd209hmdxhnzk8s5pb3za"))))
3288 (build-system ruby-build-system)
3289 (arguments
3290 '(;; No included tests
3291 #:tests? #f
3292 #:phases
3293 (modify-phases %standard-phases
3294 (add-after 'extract-gemspec 'patch-gemspec
3295 (lambda _
3296 (substitute* ".gemspec"
3297 ;; Loosen the requirement for pdf-inspector
3298 (("~> 1\\.0\\.7") ">= 0")))))))
3299 (propagated-inputs
3300 `(("ruby-coderay" ,ruby-coderay)))
3301 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
3302 (description
3303 "This package provides a tool for writing manuals for Prawn and Prawn
3304 accessories")
3305 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
3306 (license (list
3307 ;; GPLv2 or GPLv3 or custom license described in LICENSE file
3308 license:gpl2
3309 license:gpl3))))
3310
3311 (define-public ruby-progress_bar
3312 (package
3313 (name "ruby-progress_bar")
3314 (version "1.1.0")
3315 (source
3316 (origin
3317 (method url-fetch)
3318 (uri (rubygems-uri "progress_bar" version))
3319 (sha256
3320 (base32
3321 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
3322 (build-system ruby-build-system)
3323 (arguments
3324 '(#:test-target "spec"))
3325 (propagated-inputs
3326 `(("ruby-highline" ,ruby-highline)
3327 ("ruby-options" ,ruby-options)))
3328 (native-inputs
3329 `(("bundler" ,bundler)
3330 ("ruby-rspec" ,ruby-rspec)
3331 ("ruby-timecop" ,ruby-timecop)))
3332 (synopsis
3333 "Ruby library for displaying progress bars")
3334 (description
3335 "ProgressBar is a simple library for displaying progress bars. The
3336 maximum value is configurable, and additional information can be displayed
3337 like the percentage completion, estimated time remaining, elapsed time and
3338 rate.")
3339 (home-page "https://github.com/paul/progress_bar")
3340 (license license:wtfpl2)))
3341
3342 (define-public ruby-progressbar
3343 (package
3344 (name "ruby-progressbar")
3345 (version "1.10.0")
3346 (source
3347 (origin
3348 (method url-fetch)
3349 (uri (rubygems-uri "ruby-progressbar" version))
3350 (sha256
3351 (base32
3352 "1cv2ym3rl09svw8940ny67bav7b2db4ms39i4raaqzkf59jmhglk"))))
3353 (build-system ruby-build-system)
3354 (arguments
3355 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
3356 #:tests? #f))
3357 (synopsis "Text progress bar library for Ruby")
3358 (description
3359 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
3360 The output can be customized with a formatting system.")
3361 (home-page "https://github.com/jfelchner/ruby-progressbar")
3362 (license license:expat)))
3363
3364 (define-public ruby-pry
3365 (package
3366 (name "ruby-pry")
3367 (version "0.11.3")
3368 (source
3369 (origin
3370 (method url-fetch)
3371 (uri (rubygems-uri "pry" version))
3372 (sha256
3373 (base32
3374 "1mh312k3y94sj0pi160wpia0ps8f4kmzvm505i6bvwynfdh7v30g"))))
3375 (build-system ruby-build-system)
3376 (arguments
3377 '(#:tests? #f)) ; no tests
3378 (propagated-inputs
3379 `(("ruby-coderay" ,ruby-coderay)
3380 ("ruby-method-source" ,ruby-method-source)))
3381 (synopsis "Ruby REPL")
3382 (description "Pry is an IRB alternative and runtime developer console for
3383 Ruby. It features syntax highlighting, a plugin architecture, runtime
3384 invocation, and source and documentation browsing.")
3385 (home-page "https://pryrepl.org")
3386 (license license:expat)))
3387
3388 (define-public ruby-guard
3389 (package
3390 (name "ruby-guard")
3391 (version "2.13.0")
3392 (source (origin
3393 (method url-fetch)
3394 ;; The gem does not include a Rakefile, nor does it contain a
3395 ;; gemspec file, nor does it come with the tests. This is why
3396 ;; we fetch the tarball from Github.
3397 (uri (string-append "https://github.com/guard/guard/archive/v"
3398 version ".tar.gz"))
3399 (file-name (string-append name "-" version ".tar.gz"))
3400 (sha256
3401 (base32
3402 "1hwj0yi17k6f5axrm0k2bb7fq71dlp0zfywmd7pij9iimbppcca0"))))
3403 (build-system ruby-build-system)
3404 (arguments
3405 `(#:tests? #f ; tests require cucumber
3406 #:phases
3407 (modify-phases %standard-phases
3408 (add-after 'unpack 'remove-git-ls-files
3409 (lambda* (#:key outputs #:allow-other-keys)
3410 (substitute* "guard.gemspec"
3411 (("git ls-files -z") "find . -type f -print0"))
3412 #t))
3413 (replace 'build
3414 (lambda _
3415 (invoke "gem" "build" "guard.gemspec"))))))
3416 (propagated-inputs
3417 `(("ruby-formatador" ,ruby-formatador)
3418 ("ruby-listen" ,ruby-listen)
3419 ("ruby-lumberjack" ,ruby-lumberjack)
3420 ("ruby-nenv" ,ruby-nenv)
3421 ("ruby-notiffany" ,ruby-notiffany)
3422 ("ruby-pry" ,ruby-pry)
3423 ("ruby-shellany" ,ruby-shellany)
3424 ("ruby-thor" ,ruby-thor)))
3425 (native-inputs
3426 `(("bundler" ,bundler)
3427 ("ruby-rspec" ,ruby-rspec)))
3428 (synopsis "Tool to handle events on file system modifications")
3429 (description
3430 "Guard is a command line tool to easily handle events on file system
3431 modifications. Guard automates various tasks by running custom rules whenever
3432 file or directories are modified.")
3433 (home-page "http://guardgem.org/")
3434 (license license:expat)))
3435
3436 (define-public ruby-thread-safe
3437 (package
3438 (name "ruby-thread-safe")
3439 (version "0.3.6")
3440 (source
3441 (origin
3442 (method url-fetch)
3443 (uri (rubygems-uri "thread_safe" version))
3444 (sha256
3445 (base32
3446 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
3447 (build-system ruby-build-system)
3448 (arguments
3449 '(#:tests? #f)) ; needs simplecov, among others
3450 (synopsis "Thread-safe utilities for Ruby")
3451 (description "The thread_safe library provides thread-safe collections and
3452 utilities for Ruby.")
3453 (home-page "https://github.com/ruby-concurrency/thread_safe")
3454 (license license:asl2.0)))
3455
3456 (define-public ruby-tzinfo
3457 (package
3458 (name "ruby-tzinfo")
3459 (version "1.2.4")
3460 (source
3461 (origin
3462 (method url-fetch)
3463 (uri (rubygems-uri "tzinfo" version))
3464 (sha256
3465 (base32
3466 "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp"))))
3467 (build-system ruby-build-system)
3468 (propagated-inputs
3469 `(("ruby-thread-safe" ,ruby-thread-safe)))
3470 (synopsis "Time zone library for Ruby")
3471 (description "TZInfo is a Ruby library that provides daylight savings
3472 aware transformations between times in different time zones.")
3473 (home-page "https://tzinfo.github.io")
3474 (license license:expat)))
3475
3476 (define-public ruby-tzinfo-data
3477 (package
3478 (name "ruby-tzinfo-data")
3479 (version "1.2017.3")
3480 (source
3481 (origin
3482 (method url-fetch)
3483 ;; Download from GitHub because the rubygems version does not contain
3484 ;; Rakefile or tests.
3485 (uri (string-append
3486 "https://github.com/tzinfo/tzinfo-data/archive/v"
3487 version
3488 ".tar.gz"))
3489 (file-name (string-append name "-" version ".tar.gz"))
3490 (sha256
3491 (base32
3492 "01wff7syqzikbxalbg3isgxasmvzicr85bzadzkb6bf20bip4v54"))
3493 ;; Remove the known test failure.
3494 ;; https://github.com/tzinfo/tzinfo-data/issues/10
3495 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
3496 (patches (search-patches
3497 "ruby-tzinfo-data-ignore-broken-test.patch"))))
3498 (build-system ruby-build-system)
3499 (propagated-inputs
3500 `(("ruby-tzinfo" ,ruby-tzinfo)))
3501 (synopsis "Data from the IANA Time Zone database")
3502 (description
3503 "This library provides @code{TZInfo::Data}, which contains data from the
3504 IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
3505 (home-page "https://tzinfo.github.io")
3506 (license license:expat)))
3507
3508 (define-public ruby-rb-inotify
3509 (package
3510 (name "ruby-rb-inotify")
3511 (version "0.9.10")
3512 (source
3513 (origin
3514 (method url-fetch)
3515 (uri (rubygems-uri "rb-inotify" version))
3516 (sha256
3517 (base32
3518 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
3519 (build-system ruby-build-system)
3520 (arguments
3521 '(#:tests? #f ; there are no tests
3522 #:phases
3523 (modify-phases %standard-phases
3524 ;; Building the gemspec with rake is not working here since it is
3525 ;; generated with Jeweler. It is also unnecessary because the
3526 ;; existing gemspec does not use any development tools to generate a
3527 ;; list of files.
3528 (replace 'build
3529 (lambda _
3530 (invoke "gem" "build" "rb-inotify.gemspec"))))))
3531 (propagated-inputs
3532 `(("ruby-ffi" ,ruby-ffi)))
3533 (native-inputs
3534 `(("ruby-yard" ,ruby-yard)))
3535 (synopsis "Ruby wrapper for Linux's inotify")
3536 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
3537 kernel subsystem for monitoring changes to files and directories.")
3538 (home-page "https://github.com/nex3/rb-inotify")
3539 (license license:expat)))
3540
3541 (define-public ruby-pry-editline
3542 (package
3543 (name "ruby-pry-editline")
3544 (version "1.1.2")
3545 (source (origin
3546 (method url-fetch)
3547 (uri (rubygems-uri "pry-editline" version))
3548 (sha256
3549 (base32
3550 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
3551 (build-system ruby-build-system)
3552 (arguments `(#:tests? #f)) ; no tests included
3553 (native-inputs
3554 `(("bundler" ,bundler)))
3555 (synopsis "Open the current REPL line in an editor")
3556 (description
3557 "This gem provides a plugin for the Ruby REPL to enable opening the
3558 current line in an external editor.")
3559 (home-page "https://github.com/tpope/pry-editline")
3560 (license license:expat)))
3561
3562 (define-public ruby-sdoc
3563 (package
3564 (name "ruby-sdoc")
3565 (version "0.4.2")
3566 (source (origin
3567 (method url-fetch)
3568 (uri (rubygems-uri "sdoc" version))
3569 (sha256
3570 (base32
3571 "0qhvy10vnmrqcgh8494m13kd5ag9c3sczzhfasv8j0294ylk679n"))))
3572 (build-system ruby-build-system)
3573 (arguments
3574 `(#:phases
3575 (modify-phases %standard-phases
3576 (add-before 'check 'set-rubylib-and-patch-gemfile
3577 (lambda _
3578 (setenv "RUBYLIB" "lib")
3579 (substitute* "sdoc.gemspec"
3580 (("s.add_runtime_dependency.*") "\n")
3581 (("s.add_dependency.*") "\n"))
3582 (substitute* "Gemfile"
3583 (("gem \"rake\".*")
3584 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
3585 #t)))))
3586 (propagated-inputs
3587 `(("ruby-json" ,ruby-json)))
3588 (native-inputs
3589 `(("bundler" ,bundler)
3590 ("ruby-minitest" ,ruby-minitest)
3591 ("ruby-hoe" ,ruby-hoe)))
3592 (synopsis "Generate searchable RDoc documentation")
3593 (description
3594 "SDoc is an RDoc documentation generator to build searchable HTML
3595 documentation for Ruby code.")
3596 (home-page "https://github.com/voloko/sdoc")
3597 (license license:expat)))
3598
3599 (define-public ruby-tins
3600 (package
3601 (name "ruby-tins")
3602 (version "1.15.0")
3603 (source (origin
3604 (method url-fetch)
3605 (uri (rubygems-uri "tins" version))
3606 (sha256
3607 (base32
3608 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
3609 (build-system ruby-build-system)
3610 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
3611 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
3612 ;; the gemspec.
3613 (arguments
3614 `(#:tests? #f ; there are no tests
3615 #:phases
3616 (modify-phases %standard-phases
3617 (replace 'build
3618 (lambda _
3619 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
3620 ;; causes an error.
3621 (substitute* "tins.gemspec"
3622 (("\"lib/spruz\", ") ""))
3623 (invoke "gem" "build" "tins.gemspec"))))))
3624 (synopsis "Assorted tools for Ruby")
3625 (description "Tins is a Ruby library providing assorted tools.")
3626 (home-page "https://github.com/flori/tins")
3627 (license license:expat)))
3628
3629 (define-public ruby-gem-hadar
3630 (package
3631 (name "ruby-gem-hadar")
3632 (version "1.9.1")
3633 (source (origin
3634 (method url-fetch)
3635 (uri (rubygems-uri "gem_hadar" version))
3636 (sha256
3637 (base32
3638 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
3639 (build-system ruby-build-system)
3640 ;; This gem needs itself at development time. We disable rebuilding of the
3641 ;; gemspec to avoid this loop.
3642 (arguments
3643 `(#:tests? #f ; there are no tests
3644 #:phases
3645 (modify-phases %standard-phases
3646 (replace 'build
3647 (lambda _
3648 (invoke "gem" "build" "gem_hadar.gemspec"))))))
3649 (propagated-inputs
3650 `(("git" ,git)
3651 ("ruby-tins" ,ruby-tins)
3652 ("ruby-yard" ,ruby-yard)))
3653 (synopsis "Library for the development of Ruby gems")
3654 (description
3655 "This library contains some useful functionality to support the
3656 development of Ruby gems.")
3657 (home-page "https://github.com/flori/gem_hadar")
3658 (license license:expat)))
3659
3660 (define-public ruby-minitest-tu-shim
3661 (package
3662 (name "ruby-minitest-tu-shim")
3663 (version "1.3.3")
3664 (source (origin
3665 (method url-fetch)
3666 (uri (rubygems-uri "minitest_tu_shim" version))
3667 (sha256
3668 (base32
3669 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
3670 (build-system ruby-build-system)
3671 (arguments
3672 `(#:phases
3673 (modify-phases %standard-phases
3674 (add-after 'unpack 'fix-test-include-path
3675 (lambda* (#:key inputs #:allow-other-keys)
3676 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
3677 (substitute* "Rakefile"
3678 (("Hoe\\.add_include_dirs .*")
3679 (string-append "Hoe.add_include_dirs \""
3680 minitest "/lib/ruby/vendor_ruby"
3681 "/gems/minitest-"
3682 ,(package-version ruby-minitest-4)
3683 "/lib" "\""))))
3684 #t))
3685 (add-before 'check 'fix-test-assumptions
3686 (lambda _
3687 ;; The test output includes the file name, so a couple of tests
3688 ;; fail. Changing the regular expressions slightly fixes this
3689 ;; problem.
3690 (substitute* "test/test_mini_test.rb"
3691 (("output.sub!\\(.*, 'FILE:LINE'\\)")
3692 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
3693 (("gsub\\(/.*, 'FILE:LINE'\\)")
3694 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
3695 #t)))))
3696 (propagated-inputs
3697 `(("ruby-minitest-4" ,ruby-minitest-4)))
3698 (native-inputs
3699 `(("ruby-hoe" ,ruby-hoe)))
3700 (synopsis "Adapter library between minitest and test/unit")
3701 (description
3702 "This library bridges the gap between the small and fast minitest and
3703 Ruby's large and slower test/unit.")
3704 (home-page "https://rubygems.org/gems/minitest_tu_shim")
3705 (license license:expat)))
3706
3707 (define-public ruby-term-ansicolor
3708 (package
3709 (name "ruby-term-ansicolor")
3710 (version "1.6.0")
3711 (source (origin
3712 (method url-fetch)
3713 (uri (rubygems-uri "term-ansicolor" version))
3714 (sha256
3715 (base32
3716 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
3717 (build-system ruby-build-system)
3718 ;; Rebuilding the gemspec seems to require git, even though this is not a
3719 ;; git repository, so we just build the gem from the existing gemspec.
3720 (arguments
3721 `(#:phases
3722 (modify-phases %standard-phases
3723 (add-after 'unpack 'fix-test
3724 (lambda -
3725 (substitute* "tests/hsl_triple_test.rb"
3726 (("0\\\\\\.0%")
3727 "0\\.?0?%"))))
3728 (replace 'build
3729 (lambda _
3730 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
3731 (propagated-inputs
3732 `(("ruby-tins" ,ruby-tins)))
3733 (native-inputs
3734 `(("ruby-gem-hadar" ,ruby-gem-hadar)
3735 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
3736 (synopsis "Ruby library to control the attributes of terminal output")
3737 (description
3738 "This Ruby library uses ANSI escape sequences to control the attributes
3739 of terminal output.")
3740 (home-page "https://flori.github.io/term-ansicolor/")
3741 ;; There is no mention of the "or later" clause.
3742 (license license:gpl2)))
3743
3744 (define-public ruby-pstree
3745 (package
3746 (name "ruby-pstree")
3747 (version "0.1.0")
3748 (source (origin
3749 (method url-fetch)
3750 (uri (rubygems-uri "pstree" version))
3751 (sha256
3752 (base32
3753 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
3754 (build-system ruby-build-system)
3755 (native-inputs
3756 `(("ruby-gem-hadar" ,ruby-gem-hadar)
3757 ("bundler" ,bundler)))
3758 (synopsis "Create a process tree data structure")
3759 (description
3760 "This library uses the output of the @code{ps} command to create a
3761 process tree data structure for the current host.")
3762 (home-page "https://github.com/flori/pstree")
3763 ;; There is no mention of the "or later" clause.
3764 (license license:gpl2)))
3765
3766 (define-public ruby-utils
3767 (package
3768 (name "ruby-utils")
3769 (version "0.9.0")
3770 (source (origin
3771 (method url-fetch)
3772 (uri (rubygems-uri "utils" version))
3773 (sha256
3774 (base32
3775 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
3776 (build-system ruby-build-system)
3777 (propagated-inputs
3778 `(("ruby-tins" ,ruby-tins)
3779 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
3780 ("ruby-pstree" ,ruby-pstree)
3781 ("ruby-pry-editline" ,ruby-pry-editline)))
3782 (native-inputs
3783 `(("ruby-gem-hadar" ,ruby-gem-hadar)
3784 ("bundler" ,bundler)))
3785 (synopsis "Command line tools for working with Ruby")
3786 (description
3787 "This package provides assorted command line tools that may be useful
3788 when working with Ruby code.")
3789 (home-page "https://github.com/flori/utils")
3790 ;; There is no mention of the "or later" clause.
3791 (license license:gpl2)))
3792
3793 (define-public ruby-jaro-winkler
3794 (package
3795 (name "ruby-jaro-winkler")
3796 (version "1.5.2")
3797 (source
3798 (origin
3799 (method url-fetch)
3800 (uri (rubygems-uri "jaro_winkler" version))
3801 (sha256
3802 (base32
3803 "1zz27z88qznix4r65gd9h56gl177snlfpgv10b0s69vi8qpl909l"))))
3804 (build-system ruby-build-system)
3805 (arguments
3806 '(;; No included tests
3807 #:tests? #f))
3808 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
3809 (description
3810 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
3811 algorithm. It is written as a C extension and will fallback to a pure Ruby
3812 implementation on platforms where this is unsupported.")
3813 (home-page "https://github.com/tonytonyjan/jaro_winkler")
3814 (license license:expat)))
3815
3816 (define-public ruby-json
3817 (package
3818 (name "ruby-json")
3819 (version "2.1.0")
3820 (source
3821 (origin
3822 (method url-fetch)
3823 (uri (rubygems-uri "json" version))
3824 (sha256
3825 (base32
3826 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
3827 (build-system ruby-build-system)
3828 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
3829 (synopsis "JSON library for Ruby")
3830 (description "This Ruby library provides a JSON implementation written as
3831 a native C extension.")
3832 (home-page "http://json-jruby.rubyforge.org/")
3833 (license (list license:ruby license:gpl2)))) ; GPL2 only
3834
3835 (define-public ruby-json-pure
3836 (package
3837 (name "ruby-json-pure")
3838 (version "2.1.0")
3839 (source (origin
3840 (method url-fetch)
3841 (uri (rubygems-uri "json_pure" version))
3842 (sha256
3843 (base32
3844 "12yf9fmhr4c2jm3xl20vf1qyz5i63vc8a6ngz9j0f86nqwhmi2as"))))
3845 (build-system ruby-build-system)
3846 (arguments
3847 `(#:phases
3848 (modify-phases %standard-phases
3849 (add-after 'unpack 'fix-rakefile
3850 (lambda _
3851 (substitute* "Rakefile"
3852 ;; Since this is not a git repository, do not call 'git'.
3853 (("`git ls-files`") "`find . -type f |sort`")
3854 ;; Loosen dependency constraint.
3855 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
3856 #t))
3857 (add-after 'replace-git-ls-files 'regenerate-gemspec
3858 (lambda _
3859 ;; Regenerate gemspec so loosened dependency constraints are
3860 ;; propagated.
3861 (invoke "rake" "gemspec")))
3862 (add-after 'regenerate-gemspec 'fix-json-java.gemspec
3863 (lambda _
3864 ;; This gemspec doesn't look to be generated by the above
3865 ;; command, so patch it separately.
3866 (substitute* "json-java.gemspec"
3867 (("%q<test-unit>\\.freeze, \\[\"~> 2\\.0\"\\]")
3868 "%q<test-unit>.freeze, [\">= 2.0\"]"))
3869 #t)))))
3870 (native-inputs
3871 `(("bundler" ,bundler)
3872 ("ragel" ,ragel)
3873 ("ruby-simplecov" ,ruby-simplecov)
3874 ("ruby-test-unit" ,ruby-test-unit)))
3875 (synopsis "JSON implementation in pure Ruby")
3876 (description
3877 "This package provides a JSON implementation written in pure Ruby.")
3878 (home-page "https://flori.github.com/json")
3879 (license license:ruby)))
3880
3881 ;; Even though this package only provides bindings for a Mac OSX API it is
3882 ;; required by "ruby-listen" at runtime.
3883 (define-public ruby-rb-fsevent
3884 (package
3885 (name "ruby-rb-fsevent")
3886 (version "0.10.3")
3887 (source (origin
3888 (method url-fetch)
3889 (uri (rubygems-uri "rb-fsevent" version))
3890 (sha256
3891 (base32
3892 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
3893 (build-system ruby-build-system)
3894 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
3895 ;; "listen", which needs "rb-fsevent" at runtime.
3896 (arguments `(#:tests? #f))
3897 (synopsis "FSEvents API with signals catching")
3898 (description
3899 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
3900 (home-page "https://rubygems.org/gems/rb-fsevent")
3901 (license license:expat)))
3902
3903 (define-public ruby-listen
3904 (package
3905 (name "ruby-listen")
3906 (version "3.1.5")
3907 (source
3908 (origin
3909 (method url-fetch)
3910 (uri (rubygems-uri "listen" version))
3911 (sha256
3912 (base32
3913 "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx"))))
3914 (build-system ruby-build-system)
3915 (arguments '(#:tests? #f)) ; no tests
3916 (propagated-inputs
3917 `(("ruby-rb-inotify" ,ruby-rb-inotify)
3918 ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
3919 (synopsis "Listen to file modifications")
3920 (description "The Listen gem listens to file modifications and notifies
3921 you about the changes.")
3922 (home-page "https://github.com/guard/listen")
3923 (license license:expat)))
3924
3925 (define-public ruby-listen-3.0
3926 (package
3927 (inherit ruby-listen)
3928 (version "3.0.8")
3929 (source (origin
3930 (method url-fetch)
3931 (uri (rubygems-uri "listen" version))
3932 (sha256
3933 (base32
3934 "1l0y7hbyfiwpvk172r28hsdqsifq1ls39hsfmzi1vy4ll0smd14i"))))))
3935
3936 (define-public ruby-loofah
3937 (package
3938 (name "ruby-loofah")
3939 (version "2.2.3")
3940 (source
3941 (origin
3942 (method url-fetch)
3943 (uri (rubygems-uri "loofah" version))
3944 (sha256
3945 (base32
3946 "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg"))))
3947 (build-system ruby-build-system)
3948 (arguments
3949 '(#:phases
3950 (modify-phases %standard-phases
3951 (add-after 'unpack 'remove-unnecessary-dependencies
3952 (lambda _
3953 ;; concourse is a development tool which is unused, so remove it
3954 ;; so it's not required.
3955 (substitute* "Gemfile"
3956 ((".*\"concourse\".*") "\n"))
3957 (substitute* "Rakefile"
3958 (("require 'concourse'") "")
3959 (("Concourse\\.new.*") "\n"))
3960 #t)))))
3961 (native-inputs
3962 `(("ruby-hoe" ,ruby-hoe)
3963 ("ruby-rr" ,ruby-rr)))
3964 (propagated-inputs
3965 `(("ruby-nokogiri" ,ruby-nokogiri)
3966 ("ruby-crass" ,ruby-crass)))
3967 (synopsis "Ruby library for manipulating and transforming HTML/XML")
3968 (description
3969 "Loofah is a general library for manipulating and transforming HTML/XML
3970 documents and fragments. It's built on top of Nokogiri and libxml2.")
3971 (home-page "https://github.com/flavorjones/loofah")
3972 (license license:expat)))
3973
3974 (define-public ruby-activesupport
3975 (package
3976 (name "ruby-activesupport")
3977 (version "5.2.2")
3978 (source
3979 (origin
3980 (method url-fetch)
3981 (uri (rubygems-uri "activesupport" version))
3982 (sha256
3983 (base32
3984 "1iya7vxqwxysr74s7b4z1x19gmnx5advimzip3cbmsd5bd43wfgz"))))
3985 (build-system ruby-build-system)
3986 (arguments
3987 `(#:phases
3988 (modify-phases %standard-phases
3989 (replace 'check
3990 (lambda _
3991 ;; There are no tests, instead attempt to load the library.
3992 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
3993 (propagated-inputs
3994 `(("ruby-concurrent" ,ruby-concurrent)
3995 ("ruby-i18n" ,ruby-i18n)
3996 ("ruby-minitest" ,ruby-minitest)
3997 ("ruby-tzinfo" ,ruby-tzinfo)
3998 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
3999 (synopsis "Ruby on Rails utility library")
4000 (description "ActiveSupport is a toolkit of support libraries and Ruby
4001 core extensions extracted from the Rails framework. It includes support for
4002 multibyte strings, internationalization, time zones, and testing.")
4003 (home-page "http://www.rubyonrails.org")
4004 (license license:expat)))
4005
4006 (define-public ruby-crass
4007 (package
4008 (name "ruby-crass")
4009 (version "1.0.4")
4010 (source (origin
4011 (method url-fetch)
4012 (uri (rubygems-uri "crass" version))
4013 (sha256
4014 (base32
4015 "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi"))))
4016 (build-system ruby-build-system)
4017 (native-inputs
4018 `(("bundler" ,bundler)
4019 ("ruby-minitest" ,ruby-minitest)))
4020 (synopsis "Pure Ruby CSS parser")
4021 (description
4022 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
4023 (home-page "https://github.com/rgrove/crass/")
4024 (license license:expat)))
4025
4026 (define-public ruby-nokogumbo
4027 (let ((commit "fb51ff299a1c34346837580b6d1d9a60fadf5dbd"))
4028 (package
4029 (name "ruby-nokogumbo")
4030 (version (string-append "1.4.7-1." (string-take commit 8)))
4031 (source (origin
4032 ;; We use the git reference, because there's no Rakefile in the
4033 ;; published gem and the tarball on Github is outdated.
4034 (method git-fetch)
4035 (uri (git-reference
4036 (url "https://github.com/rubys/nokogumbo.git")
4037 (commit "d56f954d20a")))
4038 (file-name (string-append name "-" version "-checkout"))
4039 (sha256
4040 (base32
4041 "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
4042 (build-system ruby-build-system)
4043 (arguments
4044 `(#:modules ((guix build ruby-build-system)
4045 (guix build utils)
4046 (ice-9 rdelim))
4047 #:phases
4048 (modify-phases %standard-phases
4049 (add-after 'unpack 'build-gemspec
4050 (lambda _
4051 (substitute* "Rakefile"
4052 ;; Build Makefile even without a copy of gumbo-parser sources
4053 (("'gumbo-parser/src',") "")
4054 ;; We don't bundle gumbo-parser sources
4055 (("'gumbo-parser/src/\\*',") "")
4056 (("'gumbo-parser/visualc/include/\\*',") "")
4057 ;; The definition of SOURCES will be cut in gemspec, and
4058 ;; "FileList" will be undefined.
4059 (("SOURCES \\+ FileList\\[")
4060 "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
4061
4062 ;; Copy the Rakefile and cut out the gemspec.
4063 (copy-file "Rakefile" ".gemspec")
4064 (with-atomic-file-replacement ".gemspec"
4065 (lambda (in out)
4066 (let loop ((line (read-line in 'concat))
4067 (skipping? #t))
4068 (if (eof-object? line)
4069 #t
4070 (let ((skip-next? (if skipping?
4071 (not (string-prefix? "SPEC =" line))
4072 (string-prefix? "end" line))))
4073 (when (or (not skipping?)
4074 (and skipping? (not skip-next?)))
4075 (format #t "~a" line)
4076 (display line out))
4077 (loop (read-line in 'concat) skip-next?))))))
4078 #t)))))
4079 (inputs
4080 `(("gumbo-parser" ,gumbo-parser)))
4081 (propagated-inputs
4082 `(("ruby-nokogiri" ,ruby-nokogiri)))
4083 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
4084 (description
4085 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
4086 access the result as a Nokogiri parsed document.")
4087 (home-page "https://github.com/rubys/nokogumbo/")
4088 (license license:asl2.0))))
4089
4090 (define-public ruby-sanitize
4091 (package
4092 (name "ruby-sanitize")
4093 (version "4.6.3")
4094 (source (origin
4095 (method url-fetch)
4096 ;; The gem does not include the Rakefile, so we download the
4097 ;; release tarball from Github.
4098 (uri (string-append "https://github.com/rgrove/"
4099 "sanitize/archive/v" version ".tar.gz"))
4100 (file-name (string-append name "-" version ".tar.gz"))
4101 (sha256
4102 (base32
4103 "1fmqppwif3cm8h79006jfzkdnlxxzlry9kzk03psk0d5xpg55ycc"))))
4104 (build-system ruby-build-system)
4105 (propagated-inputs
4106 `(("ruby-crass" ,ruby-crass)
4107 ("ruby-nokogiri" ,ruby-nokogiri)
4108 ("ruby-nokogumbo" ,ruby-nokogumbo)))
4109 (native-inputs
4110 `(("bundler" ,bundler)
4111 ("ruby-minitest" ,ruby-minitest)
4112 ("ruby-redcarpet" ,ruby-redcarpet)
4113 ("ruby-yard" ,ruby-yard)))
4114 (synopsis "Whitelist-based HTML and CSS sanitizer")
4115 (description
4116 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
4117 acceptable elements, attributes, and CSS properties, Sanitize will remove all
4118 unacceptable HTML and/or CSS from a string.")
4119 (home-page "https://github.com/rgrove/sanitize/")
4120 (license license:expat)))
4121
4122 (define-public ruby-oj
4123 (package
4124 (name "ruby-oj")
4125 (version "3.6.7")
4126 (source
4127 (origin
4128 (method url-fetch)
4129 ;; Version on rubygems.org does not contain Rakefile, so download from
4130 ;; GitHub instead.
4131 (uri (string-append "https://github.com/ohler55/oj/archive/v"
4132 version ".tar.gz"))
4133 (file-name (string-append name "-" version ".tar.gz"))
4134 (sha256
4135 (base32
4136 "1x28ga72jxlnmsd8g8c0fw81vlh54r0qgagw2lxsd3x3la091g2h"))))
4137 (build-system ruby-build-system)
4138 (arguments
4139 '(#:test-target "test_all"
4140 #:phases
4141 (modify-phases %standard-phases
4142 (add-before 'check 'disable-bundler
4143 (lambda _
4144 (substitute* "Rakefile"
4145 (("Bundler\\.with_clean_env") "1.times")
4146 (("bundle exec ") "")))))))
4147 (native-inputs
4148 `(("bundler" ,bundler)
4149 ("ruby-rspec" ,ruby-rspec)
4150 ("ruby-rake-compiler" ,ruby-rake-compiler)))
4151 (synopsis "JSON parser for Ruby optimized for speed")
4152 (description
4153 "Oj is a JSON parser and generator for Ruby, where the encoding and
4154 decoding of JSON is implemented as a C extension to Ruby.")
4155 (home-page "http://www.ohler.com/oj")
4156 (license (list license:expat ; Ruby code
4157 license:bsd-3)))) ; extension code
4158
4159 (define-public ruby-ox
4160 (package
4161 (name "ruby-ox")
4162 (version "2.6.0")
4163 (source
4164 (origin
4165 (method url-fetch)
4166 (uri (rubygems-uri "ox" version))
4167 (sha256
4168 (base32
4169 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
4170 (build-system ruby-build-system)
4171 (arguments
4172 '(#:tests? #f)) ; no tests
4173 (synopsis "Optimized XML library for Ruby")
4174 (description
4175 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
4176 written as a native C extension. It was designed to be an alternative to
4177 Nokogiri and other Ruby XML parsers for generic XML parsing and as an
4178 alternative to Marshal for Object serialization. ")
4179 (home-page "http://www.ohler.com/ox")
4180 (license license:expat)))
4181
4182 (define-public ruby-redcloth
4183 (package
4184 (name "ruby-redcloth")
4185 (version "4.3.2")
4186 (source (origin
4187 (method url-fetch)
4188 (uri (rubygems-uri "RedCloth" version))
4189 (sha256
4190 (base32
4191 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
4192 (build-system ruby-build-system)
4193 (arguments
4194 `(#:tests? #f ; no tests
4195 #:phases
4196 (modify-phases %standard-phases
4197 ;; Redcloth has complicated rake tasks to build various versions for
4198 ;; multiple targets using RVM. We don't want this so we just use the
4199 ;; existing gemspec.
4200 (replace 'build
4201 (lambda _
4202 (invoke "gem" "build" "redcloth.gemspec"))))))
4203 (native-inputs
4204 `(("bundler" ,bundler)
4205 ("ruby-diff-lcs" ,ruby-diff-lcs)
4206 ("ruby-rspec-2" ,ruby-rspec-2)))
4207 (synopsis "Textile markup language parser for Ruby")
4208 (description
4209 "RedCloth is a Ruby parser for the Textile markup language.")
4210 (home-page "http://redcloth.org")
4211 (license license:expat)))
4212
4213 (define-public ruby-pg
4214 (package
4215 (name "ruby-pg")
4216 (version "1.1.3")
4217 (source
4218 (origin
4219 (method url-fetch)
4220 (uri (rubygems-uri "pg" version))
4221 (sha256
4222 (base32
4223 "1pnjw3rspdfjssxyf42jnbsdlgri8ylysimp0s28wxb93k6ff2qb"))))
4224 (build-system ruby-build-system)
4225 (arguments
4226 '(#:test-target "spec"))
4227 (native-inputs
4228 `(("ruby-rake-compiler" ,ruby-rake-compiler)
4229 ("ruby-hoe" ,ruby-hoe)
4230 ("ruby-rspec" ,ruby-rspec)))
4231 (inputs
4232 `(("postgresql" ,postgresql-9.6)))
4233 (synopsis "Ruby interface to PostgreSQL")
4234 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
4235 with PostgreSQL 9.0 and later.")
4236 (home-page "https://bitbucket.org/ged/ruby-pg")
4237 (license license:ruby)))
4238
4239 (define-public ruby-byebug
4240 (package
4241 (name "ruby-byebug")
4242 (version "9.0.6")
4243 (source
4244 (origin
4245 (method url-fetch)
4246 (uri (rubygems-uri "byebug" version))
4247 (sha256
4248 (base32
4249 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
4250 (build-system ruby-build-system)
4251 (arguments
4252 '(#:tests? #f)) ; no tests
4253 (synopsis "Debugger for Ruby 2")
4254 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
4255 TracePoint C API for execution control and the Debug Inspector C API for call
4256 stack navigation. The core component provides support that front-ends can
4257 build on. It provides breakpoint handling and bindings for stack frames among
4258 other things and it comes with a command line interface.")
4259 (home-page "https://github.com/deivid-rodriguez/byebug")
4260 (license license:bsd-2)))
4261
4262 (define-public ruby-netrc
4263 (package
4264 (name "ruby-netrc")
4265 (version "0.11.0")
4266 (source (origin
4267 (method url-fetch)
4268 (uri (rubygems-uri "netrc" version))
4269 (sha256
4270 (base32
4271 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
4272 (build-system ruby-build-system)
4273 (arguments
4274 `(#:phases
4275 (modify-phases %standard-phases
4276 (replace 'check
4277 ;; There is no Rakefile and minitest can only run one file at once,
4278 ;; so we have to iterate over all test files.
4279 (lambda _
4280 (map (lambda (file)
4281 (invoke "ruby" "-Itest" file))
4282 (find-files "./test" "test_.*\\.rb")))))))
4283 (native-inputs
4284 `(("ruby-minitest" ,ruby-minitest)))
4285 (synopsis "Library to read and update netrc files")
4286 (description
4287 "This library can read and update netrc files, preserving formatting
4288 including comments and whitespace.")
4289 (home-page "https://github.com/geemus/netrc")
4290 (license license:expat)))
4291
4292 (define-public ruby-unf-ext
4293 (package
4294 (name "ruby-unf-ext")
4295 (version "0.0.7.1")
4296 (source (origin
4297 (method url-fetch)
4298 (uri (rubygems-uri "unf_ext" version))
4299 (sha256
4300 (base32
4301 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
4302 (build-system ruby-build-system)
4303 (arguments
4304 `(#:phases
4305 (modify-phases %standard-phases
4306 (add-after 'build 'build-ext
4307 (lambda _ (invoke "rake" "compile:unf_ext"))))))
4308 (native-inputs
4309 `(("bundler" ,bundler)
4310 ("ruby-rake-compiler" ,ruby-rake-compiler)
4311 ("ruby-test-unit" ,ruby-test-unit)))
4312 (synopsis "Unicode normalization form support library")
4313 (description
4314 "This package provides unicode normalization form support for Ruby.")
4315 (home-page "https://github.com/knu/ruby-unf_ext")
4316 (license license:expat)))
4317
4318 (define-public ruby-tdiff
4319 ;; Use a newer than released snapshot so that rspec-2 is not required.
4320 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
4321 (package
4322 (name "ruby-tdiff")
4323 (version (string-append "0.3.3-1." (string-take commit 8)))
4324 (source (origin
4325 (method git-fetch)
4326 (uri (git-reference
4327 (url "https://github.com/postmodern/tdiff.git")
4328 (commit commit)))
4329 (file-name (string-append name "-" version "-checkout"))
4330 (sha256
4331 (base32
4332 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
4333 (build-system ruby-build-system)
4334 (native-inputs
4335 `(("ruby-rspec" ,ruby-rspec)
4336 ("ruby-yard" ,ruby-yard)
4337 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
4338 (synopsis "Calculate the differences between two tree-like structures")
4339 (description
4340 "This library provides functions to calculate the differences between two
4341 tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
4342 (home-page "https://github.com/postmodern/tdiff")
4343 (license license:expat))))
4344
4345 (define-public ruby-nokogiri-diff
4346 ;; Use a newer than released snapshot so that rspec-2 is not required.
4347 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
4348 (package
4349 (name "ruby-nokogiri-diff")
4350 (version (string-append "0.2.0-1." (string-take commit 8)))
4351 (source (origin
4352 (method git-fetch)
4353 (uri (git-reference
4354 (url "https://github.com/postmodern/nokogiri-diff.git")
4355 (commit commit)))
4356 (file-name (string-append name "-" version "-checkout"))
4357 (sha256
4358 (base32
4359 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
4360 (build-system ruby-build-system)
4361 (propagated-inputs
4362 `(("ruby-tdiff" ,ruby-tdiff)
4363 ("ruby-nokogiri" ,ruby-nokogiri)))
4364 (native-inputs
4365 `(("ruby-rspec" ,ruby-rspec)
4366 ("ruby-yard" ,ruby-yard)
4367 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
4368 (synopsis "Calculate the differences between two XML/HTML documents")
4369 (description
4370 "@code{Nokogiri::Diff} adds the ability to calculate the
4371 differences (added or removed nodes) between two XML/HTML documents.")
4372 (home-page "https://github.com/postmodern/nokogiri-diff")
4373 (license license:expat))))
4374
4375 (define-public ruby-racc
4376 (package
4377 (name "ruby-racc")
4378 (version "1.4.14")
4379 (source
4380 (origin
4381 (method url-fetch)
4382 (uri (rubygems-uri "racc" version))
4383 (sha256
4384 (base32
4385 "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
4386 (build-system ruby-build-system)
4387 (native-inputs
4388 `(("ruby-hoe" ,ruby-hoe)
4389 ("ruby-rake-compiler" ,ruby-rake-compiler)))
4390 (synopsis "LALR(1) parser generator for Ruby")
4391 (description
4392 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
4393 generates Ruby program.")
4394 (home-page "http://i.loveruby.net/en/projects/racc/")
4395 (license (list
4396 ;; Generally licensed under the LGPL2.1, and some files also
4397 ;; available under the same license as Ruby.
4398 license:lgpl2.1
4399 license:ruby))))
4400
4401 (define-public ruby-rack
4402 (package
4403 (name "ruby-rack")
4404 (version "2.0.6")
4405 (source
4406 (origin
4407 (method url-fetch)
4408 ;; Download from GitHub so that the patch can be applied.
4409 (uri (string-append
4410 "https://github.com/rack/rack/archive/"
4411 version
4412 ".tar.gz"))
4413 (file-name (string-append name "-" version ".tar.gz"))
4414 (sha256
4415 (base32
4416 "0pb3g5ymvbf07xaxcn51dpqv3djlxavckp3qkxsjdxiqznb0d9p1"))
4417 ;; Ignore test which fails inside the build environment but works
4418 ;; outside.
4419 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
4420 (build-system ruby-build-system)
4421 (arguments
4422 '(#:phases
4423 (modify-phases %standard-phases
4424 (add-before 'check 'fix-tests
4425 (lambda _
4426 ;; A few of the tests use the length of a file on disk for
4427 ;; Content-Length and Content-Range headers. However, this file
4428 ;; has a shebang in it which an earlier phase patches, growing
4429 ;; the file size from 193 to 239 bytes when the store prefix is
4430 ;; "/gnu/store".
4431 (let ((size-diff (- (string-length (which "ruby"))
4432 (string-length "/usr/bin/env ruby"))))
4433 (substitute* '("test/spec_file.rb")
4434 (("193")
4435 (number->string (+ 193 size-diff)))
4436 (("bytes(.)22-33" all delimiter)
4437 (string-append "bytes"
4438 delimiter
4439 (number->string (+ 22 size-diff))
4440 "-"
4441 (number->string (+ 33 size-diff))))))
4442 #t)))))
4443 (native-inputs
4444 `(("ruby-minitest" ,ruby-minitest)
4445 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
4446 ("which" ,which)))
4447 (propagated-inputs
4448 `(("ruby-concurrent" ,ruby-concurrent)))
4449 (synopsis "Unified web application interface for Ruby")
4450 (description "Rack provides a minimal, modular and adaptable interface for
4451 developing web applications in Ruby. By wrapping HTTP requests and responses,
4452 it unifies the API for web servers, web frameworks, and software in between
4453 into a single method call.")
4454 (home-page "https://rack.github.io/")
4455 (license license:expat)))
4456
4457 (define-public ruby-rack-test
4458 (package
4459 (name "ruby-rack-test")
4460 (version "0.8.3")
4461 (source
4462 (origin
4463 (method url-fetch)
4464 (uri (rubygems-uri "rack-test" version))
4465 (sha256
4466 (base32
4467 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
4468 (build-system ruby-build-system)
4469 (arguments
4470 ;; Disable tests because of circular dependencies: requires sinatra,
4471 ;; which requires rack-protection, which requires rack-test. Instead
4472 ;; simply require the library.
4473 `(#:phases
4474 (modify-phases %standard-phases
4475 (replace 'check
4476 (lambda _
4477 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
4478 (propagated-inputs
4479 `(("ruby-rack" ,ruby-rack)))
4480 (synopsis "Testing API for Rack applications")
4481 (description
4482 "Rack::Test is a small, simple testing API for Rack applications. It can
4483 be used on its own or as a reusable starting point for Web frameworks and
4484 testing libraries to build on.")
4485 (home-page "https://github.com/rack-test/rack-test")
4486 (license license:expat)))
4487
4488 (define-public ruby-rack-protection
4489 (package
4490 (name "ruby-rack-protection")
4491 (version "2.0.3")
4492 (source
4493 (origin
4494 (method url-fetch)
4495 (uri (rubygems-uri "rack-protection" version))
4496 (sha256
4497 (base32
4498 "1z5598qipilmnf45428jnxi63ykrgvnyywa5ckpr52zv2vpd8jdp"))))
4499 (build-system ruby-build-system)
4500 (arguments
4501 '(;; Tests missing from the gem.
4502 #:tests? #f))
4503 (propagated-inputs
4504 `(("ruby-rack" ,ruby-rack)))
4505 (native-inputs
4506 `(("bundler" ,bundler)
4507 ("ruby-rspec" ,ruby-rspec-2)
4508 ("ruby-rack-test" ,ruby-rack-test)))
4509 (synopsis "Rack middleware that protects against typical web attacks")
4510 (description "Rack middleware that can be used to protect against typical
4511 web attacks. It can protect all Rack apps, including Rails. For instance, it
4512 protects against cross site request forgery, cross site scripting,
4513 clickjacking, directory traversal, session hijacking and IP spoofing.")
4514 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
4515 (license license:expat)))
4516
4517 (define-public ruby-rainbow
4518 (package
4519 (name "ruby-rainbow")
4520 (version "3.0.0")
4521 (source
4522 (origin
4523 (method url-fetch)
4524 (uri (rubygems-uri "rainbow" version))
4525 (sha256
4526 (base32
4527 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
4528 (build-system ruby-build-system)
4529 (arguments
4530 '(#:phases
4531 (modify-phases %standard-phases
4532 ;; Run rspec directly, to avoid requiring Rubocop which is used from
4533 ;; the Rakefile.
4534 (replace 'check
4535 (lambda* (#:key tests? #:allow-other-keys)
4536 (when tests?
4537 (invoke "rspec"))
4538 #t)))))
4539 (native-inputs
4540 `(("bundler" ,bundler)
4541 ("ruby-rspec" ,ruby-rspec)))
4542 (synopsis "Colorize printed text on ANSI terminals")
4543 (description
4544 "@code{rainbow} provides a string presenter object to colorize strings by
4545 wrapping them in ANSI escape codes.")
4546 (home-page "https://github.com/sickill/rainbow")
4547 (license license:expat)))
4548
4549 (define-public ruby-rr
4550 (package
4551 (name "ruby-rr")
4552 (version "1.2.1")
4553 (source
4554 (origin
4555 (method url-fetch)
4556 (uri (rubygems-uri "rr" version))
4557 (sha256
4558 (base32
4559 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
4560 (build-system ruby-build-system)
4561 (arguments
4562 '(#:tests? #f)) ; test files not included
4563 (native-inputs
4564 `(("bundler" ,bundler)
4565 ("ruby-rspec" ,ruby-rspec)))
4566 (synopsis "Ruby test double framework")
4567 (description
4568 "RR is a test double framework that features a rich selection of double
4569 techniques and a terse syntax.")
4570 (home-page "https://rr.github.io/rr/")
4571 (license license:expat)))
4572
4573 (define-public ruby-rest-client
4574 (package
4575 (name "ruby-rest-client")
4576 (version "2.0.2")
4577 (source
4578 (origin
4579 (method url-fetch)
4580 (uri (rubygems-uri "rest-client" version))
4581 (sha256
4582 (base32
4583 "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
4584 (build-system ruby-build-system)
4585 (arguments
4586 '(#:phases
4587 (modify-phases %standard-phases
4588 (add-before 'check 'remove-unnecessary-development-dependencies
4589 (lambda _
4590 (substitute* "rest-client.gemspec"
4591 ;; Remove rubocop as it's unused. Rubocop also indirectly
4592 ;; depends on this package through ruby-parser and ruby-ast so
4593 ;; this avoids a dependency loop.
4594 ((".*rubocop.*") "\n")
4595 ;; Remove pry as it's unused, it's a debugging tool
4596 ((".*pry.*") "\n")
4597 ;; Remove an unnecessarily strict rdoc dependency
4598 ((".*rdoc.*") "\n"))
4599 #t))
4600 (add-before 'check 'delete-network-dependent-tests
4601 (lambda _
4602 (delete-file "spec/integration/request_spec.rb")
4603 (delete-file "spec/integration/httpbin_spec.rb")
4604 #t)))))
4605 (propagated-inputs
4606 `(("ruby-http-cookie" ,ruby-http-cookie)
4607 ("ruby-mime-types" ,ruby-mime-types)
4608 ("ruby-netrc" ,ruby-netrc)))
4609 (native-inputs
4610 `(("bundler" ,bundler)
4611 ("ruby-webmock", ruby-webmock-2)
4612 ("ruby-rspec", ruby-rspec)))
4613 (synopsis "Simple HTTP and REST client for Ruby")
4614 (description
4615 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
4616 inspired by the Sinatra microframework style of specifying actions:
4617 @code{get}, @code{put}, @code{post}, @code{delete}.")
4618 (home-page "https://github.com/rest-client/rest-client")
4619 (license license:expat)))
4620
4621 (define-public ruby-rubocop
4622 (package
4623 (name "ruby-rubocop")
4624 (version "0.64.0")
4625 (source
4626 (origin
4627 (method url-fetch)
4628 (uri (rubygems-uri "rubocop" version))
4629 (sha256
4630 (base32
4631 "07shi6kncwhkvlh9ci9rgccrjsq4448hbic3yrakh2w65ppynvbj"))))
4632 (build-system ruby-build-system)
4633 (arguments
4634 '(;; No included tests
4635 #:tests? #f))
4636 (propagated-inputs
4637 `(("ruby-parser" ,ruby-parser)
4638 ("ruby-powerpack" ,ruby-powerpack)
4639 ("ruby-rainbow" ,ruby-rainbow)
4640 ("ruby-progressbar" ,ruby-progressbar)
4641 ("ruby-parallel" ,ruby-parallel)
4642 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
4643 ("ruby-unicode-display-width" ,ruby-unicode-display-width)))
4644 (synopsis "Ruby code style checking tool")
4645 (description
4646 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
4647 the community-driven Ruby Style Guide.")
4648 (home-page "https://github.com/rubocop-hq/rubocop")
4649 (license license:expat)))
4650
4651 (define-public ruby-contest
4652 (package
4653 (name "ruby-contest")
4654 (version "0.1.3")
4655 (source
4656 (origin
4657 (method url-fetch)
4658 (uri (rubygems-uri "contest" version))
4659 (sha256
4660 (base32
4661 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
4662 (build-system ruby-build-system)
4663 (synopsis "Write declarative tests using nested contexts")
4664 (description
4665 "Contest allows writing declarative @code{Test::Unit} tests using nested
4666 contexts without performance penalties.")
4667 (home-page "https://github.com/citrusbyte/contest")
4668 (license license:expat)))
4669
4670 (define-public ruby-creole
4671 (package
4672 (name "ruby-creole")
4673 (version "0.5.0")
4674 (source
4675 (origin
4676 (method url-fetch)
4677 (uri (rubygems-uri "creole" version))
4678 (sha256
4679 (base32
4680 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
4681 (build-system ruby-build-system)
4682 (native-inputs
4683 `(("ruby-bacon" ,ruby-bacon)))
4684 (synopsis "Creole markup language converter")
4685 (description
4686 "Creole is a lightweight markup language and this library for converting
4687 creole to @code{HTML}.")
4688 (home-page "https://github.com/minad/creole")
4689 (license license:ruby)))
4690
4691 (define-public ruby-docile
4692 (package
4693 (name "ruby-docile")
4694 (version "1.1.5")
4695 (source
4696 (origin
4697 (method url-fetch)
4698 (uri (rubygems-uri "docile" version))
4699 (sha256
4700 (base32
4701 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
4702 (build-system ruby-build-system)
4703 (arguments
4704 '(#:tests? #f)) ; needs github-markup, among others
4705 (synopsis "Ruby EDSL helper library")
4706 (description "Docile is a Ruby library that provides an interface for
4707 creating embedded domain specific languages (EDSLs) that manipulate existing
4708 Ruby classes.")
4709 (home-page "https://ms-ati.github.io/docile/")
4710 (license license:expat)))
4711
4712 (define-public ruby-gherkin
4713 (package
4714 (name "ruby-gherkin")
4715 (version "5.1.0")
4716 (source
4717 (origin
4718 (method url-fetch)
4719 (uri (rubygems-uri "gherkin" version))
4720 (sha256
4721 (base32
4722 "1cgcdchwwdm10rsk44frjwqd4ihprhxjbm799nscqy2q1raqfj5s"))))
4723 (build-system ruby-build-system)
4724 (native-inputs
4725 `(("bundler" ,bundler)))
4726 (arguments
4727 '(#:tests? #f)) ; needs simplecov, among others
4728 (synopsis "Gherkin parser for Ruby")
4729 (description "Gherkin is a parser and compiler for the Gherkin language.
4730 It is intended be used by all Cucumber implementations to parse
4731 @file{.feature} files.")
4732 (home-page "https://github.com/cucumber-attic/gherkin")
4733 (license license:expat)))
4734
4735 (define-public ruby-aruba
4736 (package
4737 (name "ruby-aruba")
4738 (version "0.14.8")
4739 (source
4740 (origin
4741 (method url-fetch)
4742 (uri (rubygems-uri "aruba" version))
4743 (sha256
4744 (base32
4745 "0zdd81l1lp0x78sxa6kkfqclpj5il3xl70nz05wqv2sfzzhqydxh"))))
4746 (build-system ruby-build-system)
4747 (arguments
4748 '(#:test-target "spec"
4749 #:phases
4750 (modify-phases %standard-phases
4751 (add-after 'unpack 'patch
4752 (lambda _
4753 (substitute* "spec/aruba/api_spec.rb"
4754 ;; This resolves some errors in the specs
4755 ;;
4756 ;; undefined method `parse' for Time:Class
4757 (("require 'spec_helper'")
4758 "require 'spec_helper'\nrequire 'time'"))
4759 ;; Avoid shebang issues in this spec file
4760 (substitute* "spec/aruba/matchers/command_spec.rb"
4761 (("/usr/bin/env bash")
4762 (which "bash")))
4763 #t))
4764 (add-before 'check 'remove-unnecessary-dependencies
4765 (lambda _
4766 (substitute* "Gemfile"
4767 ((".*byebug.*") "\n")
4768 ((".*pry.*") "\n")
4769 ((".*yaml.*") "\n")
4770 ((".*bcat.*") "\n")
4771 ((".*kramdown.*") "\n")
4772 ((".*rubocop.*") "\n")
4773 ((".*cucumber-pro.*") "\n")
4774 ((".*cucumber.*") "\n")
4775 ((".*license_finder.*") "\n")
4776 ((".*rake.*") "gem 'rake'\n")
4777 ((".*simplecov.*") "\n")
4778 ((".*relish.*") "\n"))
4779 (substitute* "spec/spec_helper.rb"
4780 ((".*simplecov.*") "")
4781 (("^SimpleCov.*") ""))
4782 (substitute* "aruba.gemspec"
4783 (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
4784 "spec.add_runtime_dependency 'cucumber'"))
4785 #t))
4786 (add-before 'check 'set-home
4787 (lambda _ (setenv "HOME" "/tmp") #t)))))
4788 (native-inputs
4789 `(("bundler" ,bundler)
4790 ("ruby-rspec" ,ruby-rspec)
4791 ("ruby-fuubar" ,ruby-fuubar)))
4792 (propagated-inputs
4793 `(("ruby-childprocess" ,ruby-childprocess)
4794 ("ruby-contracts" ,ruby-contracts)
4795 ("ruby-cucumber" ,ruby-cucumber)
4796 ("ruby-ffi" ,ruby-ffi)
4797 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
4798 ("ruby-thor" ,ruby-thor)
4799 ("ruby-yard" ,ruby-yard)))
4800 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
4801 (description
4802 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
4803 command-line applications. It supports applications written in any
4804 language.")
4805 (home-page "https://github.com/cucumber/aruba")
4806 (license license:expat)))
4807
4808 ;; A version of ruby-aruba without tests run so that circular dependencies can
4809 ;; be avoided.
4810 (define ruby-aruba-without-tests
4811 (package
4812 (inherit ruby-aruba)
4813 (arguments '(#:tests? #f))
4814 (propagated-inputs
4815 `(("ruby-cucumber" ,ruby-cucumber-without-tests)
4816 ,@(alist-delete "ruby-cucumber"
4817 (package-propagated-inputs ruby-aruba))))
4818 (native-inputs '())))
4819
4820 (define-public ruby-cucumber
4821 (package
4822 (name "ruby-cucumber")
4823 (version "3.1.2")
4824 (source
4825 (origin
4826 (method git-fetch)
4827 (uri (git-reference
4828 (url "https://github.com/cucumber/cucumber-ruby.git")
4829 (commit (string-append "v" version))))
4830 (file-name (git-file-name name version))
4831 (sha256
4832 (base32
4833 "0764wp2cjg60qa3l69q1dxda5g06a01n5w92szqbf89d2hgl47n3"))))
4834 (build-system ruby-build-system)
4835 (arguments
4836 '(#:test-target "spec"
4837 #:phases
4838 (modify-phases %standard-phases
4839 ;; Don't run or require rubocop, the code linting tool, as this is a
4840 ;; bit unnecessary.
4841 (add-after 'unpack 'dont-run-rubocop
4842 (lambda _
4843 (substitute* "Rakefile"
4844 ((".*rubocop/rake\\_task.*") "")
4845 ((".*RuboCop.*") ""))
4846 #t)))))
4847 (propagated-inputs
4848 `(("ruby-builder" ,ruby-builder)
4849 ("ruby-cucumber-core" ,ruby-cucumber-core)
4850 ("ruby-cucumber-wire" ,ruby-cucumber-wire)
4851 ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
4852 ("ruby-diff-lcs" ,ruby-diff-lcs)
4853 ("ruby-gherkin" ,ruby-gherkin)
4854 ("ruby-multi-json" ,ruby-multi-json)
4855 ("ruby-multi-test" ,ruby-multi-test)))
4856 (native-inputs
4857 `(("bundler" ,bundler)
4858 ;; Use a untested version of aruba, to avoid a circular dependency, as
4859 ;; ruby-aruba depends on ruby-cucumber.
4860 ("ruby-aruba", ruby-aruba-without-tests)
4861 ("ruby-rspec" ,ruby-rspec)
4862 ("ruby-pry" ,ruby-pry)
4863 ("ruby-nokogiri" ,ruby-nokogiri)))
4864 (synopsis "Describe automated tests in plain language")
4865 (description
4866 "Cucumber is a tool for running automated tests written in plain
4867 language. It's designed to support a Behaviour Driven Development (BDD)
4868 software development workflow.")
4869 (home-page "https://cucumber.io/")
4870 (license license:expat)))
4871
4872 (define ruby-cucumber-without-tests
4873 (package (inherit ruby-cucumber)
4874 (arguments
4875 '(#:tests? #f))
4876 (native-inputs
4877 '())))
4878
4879 (define-public ruby-cucumber-core
4880 (package
4881 (name "ruby-cucumber-core")
4882 ;; Stick to major version 3, until version 4 of Cucumber is released.
4883 (version "3.2.1")
4884 (source
4885 (origin
4886 (method url-fetch)
4887 (uri (rubygems-uri "cucumber-core" version))
4888 (sha256
4889 (base32
4890 "1iavlh8hqj9lwljbpkw06259gdicbr1bdb6pbj5yy3n8szgr8k3c"))))
4891 (build-system ruby-build-system)
4892 (propagated-inputs
4893 `(("ruby-backports" ,ruby-backports)
4894 ("ruby-gherkin" ,ruby-gherkin)
4895 ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
4896 (native-inputs
4897 `(("bundler" ,bundler)))
4898 (arguments
4899 '(#:tests? #f)) ; needs simplecov, among others
4900 (synopsis "Core library for the Cucumber BDD app")
4901 (description "Cucumber is a tool for running automated tests
4902 written in plain language. Because they're written in plain language,
4903 they can be read by anyone on your team. Because they can be read by
4904 anyone, you can use them to help improve communication, collaboration
4905 and trust on your team.")
4906 (home-page "https://cucumber.io/")
4907 (license license:expat)))
4908
4909 (define-public ruby-cucumber-expressions
4910 (package
4911 (name "ruby-cucumber-expressions")
4912 (version "6.0.1")
4913 (source
4914 (origin
4915 (method url-fetch)
4916 (uri (rubygems-uri "cucumber-expressions" version))
4917 (sha256
4918 (base32
4919 "0zwmv6hznyz9vk81f5dhwcr9jhxx2vmbk8yyazayvllvhy0fkpdw"))))
4920 (build-system ruby-build-system)
4921 (arguments
4922 '(#:test-target "spec"))
4923 (native-inputs
4924 `(("bundler" ,bundler)
4925 ("ruby-rspec" ,ruby-rspec)
4926 ("ruby-simplecov" ,ruby-simplecov)))
4927 (synopsis "Simpler alternative to Regular Expressions")
4928 (description "Cucumber Expressions offer similar functionality to Regular
4929 Expressions, with a syntax that is easier to read and write. Cucumber
4930 Expressions are extensible with parameter types.")
4931 (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
4932 (license license:expat)))
4933
4934 (define-public ruby-cucumber-wire
4935 (package
4936 (name "ruby-cucumber-wire")
4937 ;; Package version 0.0.1 initially, as this is what's needed by Cucumber
4938 ;; 3, and Cucumber 4 hasn't been released yet.
4939 (version "0.0.1")
4940 (source
4941 (origin
4942 (method url-fetch)
4943 (uri (rubygems-uri "cucumber-wire" version))
4944 (sha256
4945 (base32
4946 "09ymvqb0sbw2if1nxg8rcj33sf0va88ancq5nmp8g01dfwzwma2f"))))
4947 (build-system ruby-build-system)
4948 (arguments
4949 '(;; TODO: Currently, the tests can't be run as cucumber is required,
4950 ;; which would lead to a circular dependency.
4951 #:tests? #f
4952 #:test-target "default"
4953 #:phases
4954 (modify-phases %standard-phases
4955 (add-before 'check 'set-CUCUMBER_USE_RELEASED_GEMS
4956 (lambda _
4957 (setenv "CUCUMBER_USE_RELEASED_GEMS" "true")
4958 #t)))))
4959 (native-inputs
4960 `(("bundler" ,bundler)
4961 ("ruby-rspec" ,ruby-rspec)))
4962 (synopsis "Cucumber wire protocol plugin")
4963 (description
4964 "Cucumber's wire protocol allows step definitions to be implemented and
4965 invoked on any platform.")
4966 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
4967 (license license:expat)))
4968
4969 (define-public ruby-cucumber-tag-expressions
4970 (package
4971 (name "ruby-cucumber-tag-expressions")
4972 (version "1.1.1")
4973 (source
4974 (origin
4975 (method url-fetch)
4976 (uri (rubygems-uri "cucumber-tag_expressions" version))
4977 (sha256
4978 (base32
4979 "0cvmbljybws0qzjs1l67fvr9gqr005l8jk1ni5gcsis9pfmqh3vc"))))
4980 (build-system ruby-build-system)
4981 (arguments
4982 '(#:phases
4983 (modify-phases %standard-phases
4984 (replace 'check
4985 (lambda _
4986 (invoke "rspec")
4987 #t)))))
4988 (native-inputs
4989 `(("ruby-rspec" ,ruby-rspec)))
4990 (synopsis "Cucumber tag expressions for Ruby")
4991 (description
4992 "Cucumber tag expression parser for Ruby. A tag expression is an infix
4993 boolean expression used by Cucumber.")
4994 (home-page "https://github.com/cucumber/tag-expressions-ruby")
4995 (license license:expat)))
4996
4997 (define-public ruby-bio-logger
4998 (package
4999 (name "ruby-bio-logger")
5000 (version "1.0.1")
5001 (source
5002 (origin
5003 (method url-fetch)
5004 (uri (rubygems-uri "bio-logger" version))
5005 (sha256
5006 (base32
5007 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
5008 (build-system ruby-build-system)
5009 (arguments
5010 `(#:tests? #f)) ; rake errors, missing shoulda
5011 (propagated-inputs
5012 `(("ruby-log4r" ,ruby-log4r)))
5013 (synopsis "Log4r wrapper for Ruby")
5014 (description "Bio-logger is a wrapper around Log4r adding extra logging
5015 features such as filtering and fine grained logging.")
5016 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
5017 (license license:expat)))
5018
5019 (define-public ruby-yajl-ruby
5020 (package
5021 (name "ruby-yajl-ruby")
5022 (version "1.4.1")
5023 (source
5024 (origin
5025 (method url-fetch)
5026 (uri (rubygems-uri "yajl-ruby" version))
5027 (sha256
5028 (base32
5029 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
5030 (build-system ruby-build-system)
5031 (arguments
5032 '(#:test-target "spec"
5033 #:phases
5034 (modify-phases %standard-phases
5035 (add-before 'check 'patch-test-to-update-load-path
5036 (lambda _
5037 (substitute* "spec/parsing/large_number_spec.rb"
5038 (("require \"yajl\"")
5039 "$LOAD_PATH << 'lib'; require 'yajl'"))
5040 #t)))))
5041 (native-inputs
5042 `(("ruby-rake-compiler" ,ruby-rake-compiler)
5043 ("ruby-rspec" ,ruby-rspec)))
5044 (synopsis "Streaming JSON parsing and encoding library for Ruby")
5045 (description
5046 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
5047 is compatible with the JSON gem, so yajl-ruby can act as a drop in
5048 replacement.
5049
5050 A modified copy of yajl is used, and included in the package.")
5051 (home-page "https://github.com/brianmario/yajl-ruby")
5052 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
5053 license:bsd-3)))) ; Included, modified copy of yajl
5054
5055 (define-public ruby-yard
5056 (package
5057 (name "ruby-yard")
5058 (version "0.9.16")
5059 (source
5060 (origin
5061 (method url-fetch)
5062 ;; Tests do not pass if we build from the distributed gem.
5063 (uri (string-append "https://github.com/lsegal/yard/archive/v"
5064 version ".tar.gz"))
5065 (file-name (string-append name "-" version ".tar.gz"))
5066 (sha256
5067 (base32
5068 "0sqpbayy9sb406jh0zqg6qha1xds863qz9531dh6vp58hc00clfq"))))
5069 (build-system ruby-build-system)
5070 (arguments
5071 `(#:phases
5072 (modify-phases %standard-phases
5073 (replace 'check
5074 (lambda _
5075 ;; $HOME needs to be set to somewhere writeable for tests to run
5076 (setenv "HOME" "/tmp")
5077 ;; Run tests without using 'rake' to avoid dependencies.
5078 (invoke "rspec"))))))
5079 (native-inputs
5080 `(("ruby-rspec" ,ruby-rspec)
5081 ("ruby-rack" ,ruby-rack)))
5082 (synopsis "Documentation generation tool for Ruby")
5083 (description
5084 "YARD is a documentation generation tool for the Ruby programming
5085 language. It enables the user to generate consistent, usable documentation
5086 that can be exported to a number of formats very easily, and also supports
5087 extending for custom Ruby constructs such as custom class level definitions.")
5088 (home-page "https://yardoc.org")
5089 (license license:expat)))
5090
5091 (define-public ruby-clap
5092 (package
5093 (name "ruby-clap")
5094 (version "1.0.0")
5095 (source (origin
5096 (method url-fetch)
5097 (uri (rubygems-uri "clap" version))
5098 (sha256
5099 (base32
5100 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
5101 (build-system ruby-build-system)
5102 ;; Clap needs cutest for running tests, but cutest needs clap.
5103 (arguments `(#:tests? #f))
5104 (synopsis "Command line argument parsing for simple applications")
5105 (description
5106 "Clap provides command line argument parsing features. It covers the
5107 simple case of executing code based on the flags or parameters passed.")
5108 (home-page "https://github.com/djanowski/cutest")
5109 (license license:expat)))
5110
5111 (define-public ruby-cutest
5112 (package
5113 (name "ruby-cutest")
5114 (version "1.2.2")
5115 (source (origin
5116 (method url-fetch)
5117 (uri (rubygems-uri "cutest" version))
5118 (sha256
5119 (base32
5120 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
5121 (build-system ruby-build-system)
5122 (propagated-inputs
5123 `(("ruby-clap" ,ruby-clap)))
5124 (synopsis "Run tests in separate processes")
5125 (description
5126 "Cutest runs tests in separate processes to avoid shared state.")
5127 (home-page "https://github.com/djanowski/cutest")
5128 (license license:expat)))
5129
5130 (define-public ruby-pygmentize
5131 (package
5132 (name "ruby-pygmentize")
5133 (version "0.0.3")
5134 (source (origin
5135 (method url-fetch)
5136 (uri (rubygems-uri "pygmentize" version))
5137 (sha256
5138 (base32
5139 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
5140 (build-system ruby-build-system)
5141 (arguments
5142 `(#:phases
5143 (modify-phases %standard-phases
5144 (add-after 'unpack 'fix-pygmentize-path
5145 (lambda _
5146 (substitute* "lib/pygmentize.rb"
5147 (("\"/usr/bin/env python.*")
5148 (string-append "\"" (which "pygmentize") "\"\n")))
5149 #t))
5150 (add-after 'build 'do-not-use-vendor-directory
5151 (lambda _
5152 ;; Remove bundled pygments sources
5153 ;; FIXME: ruby-build-system does not support snippets.
5154 (delete-file-recursively "vendor")
5155 (substitute* "pygmentize.gemspec"
5156 (("\"vendor/\\*\\*/\\*\",") ""))
5157 #t)))))
5158 (inputs
5159 `(("pygments" ,python-pygments)))
5160 (native-inputs
5161 `(("ruby-cutest" ,ruby-cutest)
5162 ("ruby-nokogiri" ,ruby-nokogiri)))
5163 (synopsis "Thin Ruby wrapper around pygmentize")
5164 (description
5165 "Pygmentize provides a simple way to call pygmentize from within a Ruby
5166 application.")
5167 (home-page "https://github.com/djanowski/pygmentize")
5168 (license license:expat)))
5169
5170 (define-public ruby-eventmachine
5171 (package
5172 (name "ruby-eventmachine")
5173 (version "1.2.7")
5174 (source
5175 (origin
5176 (method url-fetch)
5177 (uri (rubygems-uri "eventmachine" version))
5178 (sha256
5179 (base32
5180 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
5181 (build-system ruby-build-system)
5182 (arguments
5183 '(#:tests? #f)) ; test suite tries to connect to google.com
5184 (native-inputs
5185 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
5186 (synopsis "Single-threaded network event framework for Ruby")
5187 (description
5188 "EventMachine implements a single-threaded engine for arbitrary network
5189 communications. EventMachine wraps all interactions with sockets, allowing
5190 programs to concentrate on the implementation of network protocols. It can be
5191 used to create both network servers and clients.")
5192 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
5193 (home-page "https://github.com/eventmachine/eventmachine")
5194 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
5195
5196 (define-public ruby-ruby-engine
5197 (package
5198 (name "ruby-ruby-engine")
5199 (version "1.0.1")
5200 (source
5201 (origin
5202 (method url-fetch)
5203 (uri (rubygems-uri "ruby_engine" version))
5204 (sha256
5205 (base32
5206 "1d0sd4q50zkcqhr395wj1wpn2ql52r0fpwhzjfvi1bljml7k546v"))))
5207 (build-system ruby-build-system)
5208 (arguments
5209 `(#:phases
5210 (modify-phases %standard-phases
5211 (add-before 'check 'clean-up
5212 (lambda _
5213 (delete-file "Gemfile.lock")
5214 (substitute* "ruby_engine.gemspec"
5215 ;; Remove unnecessary imports that would entail further
5216 ;; dependencies.
5217 ((".*<rdoc.*") "")
5218 ((".*<rubygems-tasks.*") "")
5219 ;; Remove extraneous .gem file
5220 (("\\\"pkg/ruby_engine-1.0.0.gem\\\",") "")
5221 ;; Soften rake dependency
5222 (("%q<rake>.freeze, \\[\\\"~> 10.0\\\"\\]")
5223 "%q<rake>.freeze, [\">= 10.0\"]")
5224 ;; Soften the rspec dependency
5225 (("%q<rspec>.freeze, \\[\\\"~> 2.4\\\"\\]")
5226 "%q<rspec>.freeze, [\">= 2.4\"]"))
5227 (substitute* "Rakefile"
5228 (("require 'rubygems/tasks'") "")
5229 (("Gem::Tasks.new") ""))
5230 ;; Remove extraneous .gem file that otherwise gets installed.
5231 (delete-file "pkg/ruby_engine-1.0.0.gem")
5232 #t)))))
5233 (native-inputs
5234 `(("bundler" ,bundler)
5235 ("ruby-rake" ,ruby-rake)
5236 ("ruby-rspec" ,ruby-rspec)))
5237 (synopsis "Simplifies checking for Ruby implementation")
5238 (description
5239 "@code{ruby_engine} provides an RubyEngine class that can be used to
5240 check which implementation of Ruby is in use. It can provide the interpreter
5241 name and provides query methods such as @{RubyEngine.mri?}.")
5242 (home-page "https://github.com/janlelis/ruby_engine")
5243 (license license:expat)))
5244
5245 (define-public ruby-turn
5246 (package
5247 (name "ruby-turn")
5248 (version "0.9.7")
5249 (source
5250 (origin
5251 (method url-fetch)
5252 (uri (rubygems-uri "turn" version))
5253 (sha256
5254 (base32
5255 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
5256 (build-system ruby-build-system)
5257 (arguments
5258 `(#:phases
5259 (modify-phases %standard-phases
5260 ;; Tests fail because turn changes its environment so can no longer
5261 ;; find test/unit. Instead simply test if the executable runs
5262 ;; without issue.
5263 (replace 'check
5264 (lambda _
5265 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
5266 (propagated-inputs
5267 `(("ruby-ansi" ,ruby-ansi)
5268 ("ruby-minitest" ,ruby-minitest-4)))
5269 (synopsis "Alternate set of alternative runners for MiniTest")
5270 (description
5271 "TURN provides a set of alternative runners for MiniTest which are both
5272 colorful and informative. TURN displays each test on a separate line with
5273 failures being displayed immediately instead of at the end of the tests. Note
5274 that TURN is no longer being maintained.")
5275 (home-page "http://rubygems.org/gems/turn")
5276 (license license:expat)))
5277
5278 (define-public ruby-mimemagic
5279 (package
5280 (name "ruby-mimemagic")
5281 (version "0.3.2")
5282 (source
5283 (origin
5284 (method url-fetch)
5285 (uri (rubygems-uri "mimemagic" version))
5286 (sha256
5287 (base32
5288 "00ibc1mhvdfyfyl103xwb45621nwyqxf124cni5hyfhag0fn1c3q"))))
5289 (build-system ruby-build-system)
5290 (arguments
5291 '(#:phases
5292 (modify-phases %standard-phases
5293 ;; This phase breaks the tests, as it patches some of the test data.
5294 (delete 'patch-source-shebangs))))
5295 (native-inputs
5296 `(("ruby-bacon" ,ruby-bacon)))
5297 (synopsis "Ruby library for MIME detection by extension or content")
5298 (description
5299 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
5300 extension or content, using the freedesktop.org.xml shared-mime-info
5301 database.")
5302 (home-page "https://github.com/minad/mimemagic")
5303 (license license:expat)))
5304
5305 (define-public ruby-mime-types-data
5306 (package
5307 (name "ruby-mime-types-data")
5308 (version "3.2016.0521")
5309 (source
5310 (origin
5311 (method url-fetch)
5312 (uri (rubygems-uri "mime-types-data" version))
5313 (sha256
5314 (base32
5315 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
5316 (build-system ruby-build-system)
5317 (native-inputs
5318 `(("ruby-hoe" ,ruby-hoe)))
5319 (synopsis "Registry for information about MIME media type definitions")
5320 (description
5321 "@code{mime-types-data} provides a registry for information about
5322 Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
5323 be used with the Ruby mime-types library or other software to determine
5324 defined filename extensions for MIME types, or to use filename extensions to
5325 look up the likely MIME type definitions.")
5326 (home-page "https://github.com/mime-types/mime-types-data/")
5327 (license license:expat)))
5328
5329 (define-public ruby-mime-types
5330 (package
5331 (name "ruby-mime-types")
5332 (version "3.1")
5333 (source
5334 (origin
5335 (method url-fetch)
5336 (uri (rubygems-uri "mime-types" version))
5337 (sha256
5338 (base32
5339 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
5340 (build-system ruby-build-system)
5341 (propagated-inputs
5342 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
5343 (native-inputs
5344 `(("ruby-hoe" ,ruby-hoe)
5345 ("ruby-fivemat" ,ruby-fivemat)
5346 ("ruby-minitest-focus" ,ruby-minitest-focus)
5347 ("ruby-minitest-rg" ,ruby-minitest-rg)
5348 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
5349 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
5350 (synopsis "Library and registry for MIME content type definitions")
5351 (description "The mime-types library provides a library and registry for
5352 information about Multipurpose Internet Mail Extensions (MIME) content type
5353 definitions. It can be used to determine defined filename extensions for MIME
5354 types, or to use filename extensions to look up the likely MIME type
5355 definitions.")
5356 (home-page "https://github.com/mime-types/ruby-mime-types")
5357 (license license:expat)))
5358
5359 (define-public ruby-fivemat
5360 (package
5361 (name "ruby-fivemat")
5362 (version "1.3.6")
5363 (source
5364 (origin
5365 (method url-fetch)
5366 (uri (rubygems-uri "fivemat" version))
5367 (sha256
5368 (base32
5369 "006n7b09vviv5bs5hv2ccmjxw9iw3brcsm3xh3dhzfncsknz4jp7"))))
5370 (build-system ruby-build-system)
5371 (arguments
5372 `(#:tests? #f)) ; no tests
5373 (synopsis "Each test file given its own line of dots")
5374 (description
5375 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
5376 its own line of dots during testing. It aims to provide test output that is
5377 neither too verbose nor too minimal.")
5378 (home-page "https://github.com/tpope/fivemat")
5379 (license license:expat)))
5380
5381 (define-public ruby-sqlite3
5382 (package
5383 (name "ruby-sqlite3")
5384 (version "1.3.13")
5385 (source
5386 (origin
5387 (method url-fetch)
5388 (uri (rubygems-uri "sqlite3" version))
5389 (sha256
5390 (base32
5391 "01ifzp8nwzqppda419c9wcvr8n82ysmisrs0hph9pdmv1lpa4f5i"))))
5392 (build-system ruby-build-system)
5393 (arguments
5394 `(#:phases
5395 (modify-phases %standard-phases
5396 (add-before 'check 'adjust-failing-test
5397 (lambda _
5398 ;; XXX: This test fails with SQLite versions >= 3.21.
5399 ;; See <https://github.com/sparklemotion/sqlite3-ruby/issues/226>.
5400 (substitute* "test/test_integration_resultset.rb"
5401 (("\"integer\", \"text\"") "\"INTEGER\", \"text\""))
5402 #t))
5403 (add-before 'check 'add-gemtest-file
5404 ;; This file exists in the repository but is not distributed.
5405 (lambda _ (invoke "touch" ".gemtest"))))))
5406 (inputs
5407 `(("sqlite" ,sqlite)))
5408 (native-inputs
5409 `(("ruby-hoe" ,ruby-hoe)
5410 ("ruby-rake-compiler" ,ruby-rake-compiler)
5411 ("ruby-mini-portile" ,ruby-mini-portile)))
5412 (synopsis "Interface with SQLite3 databases")
5413 (description
5414 "This module allows Ruby programs to interface with the SQLite3 database
5415 engine.")
5416 (home-page
5417 "https://github.com/sparklemotion/sqlite3-ruby")
5418 (license license:bsd-3)))
5419
5420 (define-public ruby-shoulda-context
5421 (package
5422 (name "ruby-shoulda-context")
5423 (version "1.2.2")
5424 (source
5425 (origin
5426 (method url-fetch)
5427 (uri (rubygems-uri "shoulda-context" version))
5428 (sha256
5429 (base32
5430 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
5431 (build-system ruby-build-system)
5432 (arguments
5433 `(#:phases
5434 (modify-phases %standard-phases
5435 (replace 'check
5436 (lambda _
5437 ;; Do not run tests to avoid circular dependence with rails.
5438 ;; Instead just import the library to test.
5439 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
5440 (synopsis "Test::Unit context framework extracted from Shoulda")
5441 (description
5442 "@code{shoulda-context} is the context framework extracted from Shoulda.
5443 Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
5444 context, setup, and should blocks combine to produce natural test method
5445 names.")
5446 (home-page "https://github.com/thoughtbot/shoulda-context")
5447 (license license:expat)))
5448
5449 (define-public ruby-shoulda-matchers
5450 (package
5451 (name "ruby-shoulda-matchers")
5452 (version "3.1.2")
5453 (source
5454 (origin
5455 (method url-fetch)
5456 (uri (rubygems-uri "shoulda-matchers" version))
5457 (sha256
5458 (base32
5459 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
5460 (build-system ruby-build-system)
5461 (arguments
5462 `(#:phases
5463 (modify-phases %standard-phases
5464 (replace 'check
5465 (lambda _
5466 ;; Do not run tests to avoid circular dependence with rails. Instead
5467 ;; just import the library to test.
5468 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
5469 (propagated-inputs
5470 `(("ruby-activesupport" ,ruby-activesupport)))
5471 (synopsis "Collection of testing matchers extracted from Shoulda")
5472 (description
5473 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
5474 test common Rails functionality. These tests would otherwise be much longer,
5475 more complex, and error-prone.")
5476 (home-page "https://github.com/thoughtbot/shoulda-matchers")
5477 (license license:expat)))
5478
5479 (define-public ruby-shoulda-matchers-2
5480 (package
5481 (inherit ruby-shoulda-matchers)
5482 (version "2.8.0")
5483 (source (origin
5484 (method url-fetch)
5485 (uri (rubygems-uri "shoulda-matchers" version))
5486 (sha256
5487 (base32
5488 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
5489
5490 (define-public ruby-shoulda
5491 (package
5492 (name "ruby-shoulda")
5493 (version "3.5.0")
5494 (source
5495 (origin
5496 (method url-fetch)
5497 (uri (rubygems-uri "shoulda" version))
5498 (sha256
5499 (base32
5500 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
5501 (build-system ruby-build-system)
5502 (arguments
5503 `(#:phases
5504 (modify-phases %standard-phases
5505 (replace 'check
5506 ;; Don't run tests to avoid circular dependence with rails. Instead
5507 ;; just import the library to test.
5508 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
5509 (propagated-inputs
5510 `(("ruby-shoulda-context" ,ruby-shoulda-context)
5511 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
5512 (synopsis "Context framework and matchers for testing")
5513 (description
5514 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
5515 @code{shoulda-matchers} providing tools for writing tests.")
5516 (home-page "https://github.com/thoughtbot/shoulda")
5517 (license license:expat)))
5518
5519 (define-public ruby-unf
5520 (package
5521 (name "ruby-unf")
5522 (version "0.1.4")
5523 (source
5524 (origin
5525 (method url-fetch)
5526 (uri (rubygems-uri "unf" version))
5527 (sha256
5528 (base32
5529 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
5530 (build-system ruby-build-system)
5531 (arguments
5532 `(#:phases
5533 (modify-phases %standard-phases
5534 (add-before 'check 'add-dependency-to-bundler
5535 (lambda _
5536 ;; test-unit is required but not provided by the bundler
5537 ;; environment. This is fixed in the upstream repository but fix
5538 ;; has not been released.
5539 (substitute* "Gemfile"
5540 (("^gemspec") "gem 'test-unit'\ngemspec"))
5541 #t)))))
5542 (propagated-inputs
5543 `(("ruby-unf-ext" ,ruby-unf-ext)))
5544 (native-inputs
5545 `(("ruby-shoulda" ,ruby-shoulda)
5546 ("bundler" ,bundler)
5547 ("ruby-test-unit" ,ruby-test-unit)))
5548 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
5549 (description
5550 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
5551 support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
5552 @code{java.text.Normalizer} on JRuby.")
5553 (home-page "https://github.com/knu/ruby-unf")
5554 (license license:bsd-2)))
5555
5556 (define-public ruby-webmock-2
5557 (package
5558 (name "ruby-webmock")
5559 (version "2.3.2")
5560 (source
5561 (origin
5562 (method url-fetch)
5563 (uri (rubygems-uri "webmock" version))
5564 (sha256
5565 (base32
5566 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))
5567 (build-system ruby-build-system)
5568 (native-inputs
5569 `(("bundler" ,bundler)
5570 ("ruby-rspec" ,ruby-rspec)))
5571 (propagated-inputs
5572 `(("ruby-addressable" ,ruby-addressable)
5573 ("ruby-crack" ,ruby-crack)
5574 ("ruby-hashdiff" ,ruby-hashdiff)))
5575 (synopsis "Allows stubbing and setting expectations on HTTP requests")
5576 (description
5577 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
5578 requests. This is useful when testing software.")
5579 (home-page "https://github.com/bblimke/webmock")
5580 (license license:expat)))
5581
5582 (define-public ruby-unicode-display-width
5583 (package
5584 (name "ruby-unicode-display-width")
5585 (version "1.4.1")
5586 (source
5587 (origin
5588 (method url-fetch)
5589 (uri (rubygems-uri "unicode-display_width" version))
5590 (sha256
5591 (base32
5592 "0bq528fibi8s0jmxz0xzlgzggdq0x4fx46wfqz49478pv8gb2diq"))))
5593 (build-system ruby-build-system)
5594 (arguments
5595 '(;; Test data not included.
5596 #:tests? #f))
5597 (synopsis "Determine the monospace display width of Ruby strings")
5598 (description
5599 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
5600 display width of strings in Ruby.")
5601 (home-page "https://github.com/janlelis/unicode-display_width")
5602 (license license:expat)))
5603
5604 ;; There is another gem called 'ruby-version' so we use an underscore in this
5605 ;; name
5606 (define-public ruby_version
5607 (package
5608 (name "ruby_version")
5609 (version "1.0.1")
5610 (source
5611 (origin
5612 (method url-fetch)
5613 (uri (rubygems-uri "ruby_version" version))
5614 (sha256
5615 (base32
5616 "0854i1bjy56176anr05l5m0vc81nl53c7fyfg7sljj62m1d64dgj"))))
5617 (build-system ruby-build-system)
5618 (arguments
5619 '(#:phases
5620 (modify-phases %standard-phases
5621 (add-before 'check 'fix-dependencies
5622 (lambda _
5623 ;; Remove the Gemfile.lock, as we want to use Guix packages at
5624 ;; whatever versions.
5625 (delete-file "Gemfile.lock")
5626 ;; Remove the incldued gem file as it's unnecessary.
5627 (delete-file "pkg/ruby_version-1.0.0.gem")
5628 (substitute* "ruby_version.gemspec"
5629 ;; Don't require rdoc and rubygems-tasks as they're unnecessary
5630 ((".*rdoc.*") "\n")
5631 ((".*rubygems-tasks.*") "\n")
5632 ;; Accept any version of rake and rspec
5633 (("%q<rake.*") "%q<rake>)\n")
5634 (("%q<rspec.*") "%q<rspec>)\n"))
5635 ;; Remove the use of rubygems-tasks from the Rakefile, as it's
5636 ;; unnecessary.
5637 (substitute* "Rakefile"
5638 (("^require 'rubygems/tasks'") "")
5639 (("Gem::Tasks.new") ""))
5640 #t)))))
5641 (native-inputs
5642 `(("bundler" ,bundler)
5643 ("ruby-rspec" ,ruby-rspec)))
5644 (synopsis "Ruby library to help check the Ruby version")
5645 (description
5646 "@code{ruby_version} provides a @code{RubyVersion} module to simplify
5647 checking for the right Ruby version in software.")
5648 (home-page "https://github.com/janlelis/ruby_version")
5649 (license license:expat)))
5650
5651 (define-public ruby-websocket-driver
5652 (package
5653 (name "ruby-websocket-driver")
5654 (version "0.7.0")
5655 (source
5656 (origin
5657 (method url-fetch)
5658 (uri (rubygems-uri "websocket-driver" version))
5659 (sha256
5660 (base32
5661 "1551k3fs3kkb3ghqfj3n5lps0ikb9pyrdnzmvgfdxy8574n4g1dn"))))
5662 (build-system ruby-build-system)
5663 (arguments
5664 '(;; No included tests
5665 #:tests? #f))
5666 (propagated-inputs
5667 `(("ruby-websocket-extensions" ,ruby-websocket-extensions)))
5668 (synopsis "WebSocket protocol handler with pluggable I/O")
5669 (description
5670 "@code{websocket-driver} provides a complete implementation of the
5671 WebSocket protocols that can be hooked up to any TCP library")
5672 (home-page "https://github.com/faye/websocket-driver-ruby")
5673 (license license:expat)))
5674
5675 (define-public ruby-websocket-extensions
5676 (package
5677 (name "ruby-websocket-extensions")
5678 (version "0.1.3")
5679 (source
5680 (origin
5681 (method url-fetch)
5682 (uri (rubygems-uri "websocket-extensions" version))
5683 (sha256
5684 (base32
5685 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
5686 (build-system ruby-build-system)
5687 (arguments
5688 '(;; No included tests
5689 #:tests? #f))
5690 (synopsis "Generic extension manager for WebSocket connections")
5691 (description
5692 "@code{websocket-extensions} provides a container for registering
5693 extension plugins.")
5694 (home-page "https://github.com/faye/websocket-extensions-ruby")
5695 (license license:expat)))
5696
5697 (define-public ruby-domain-name
5698 (package
5699 (name "ruby-domain-name")
5700 (version "0.5.20180417")
5701 (source
5702 (origin
5703 (method url-fetch)
5704 (uri (rubygems-uri "domain_name" version))
5705 (sha256
5706 (base32
5707 "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v"))))
5708 (build-system ruby-build-system)
5709 (arguments
5710 `(#:phases
5711 (modify-phases %standard-phases
5712 (add-before 'check 'fix-versions
5713 (lambda _
5714 ;; Fix NameError that appears to already be fixed upstream.
5715 (substitute* "Rakefile"
5716 (("DomainName::VERSION")
5717 "Bundler::GemHelper.gemspec.version"))
5718 ;; Loosen unnecessarily strict test-unit version specification.
5719 (substitute* "domain_name.gemspec"
5720 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
5721 #t)))))
5722 (propagated-inputs
5723 `(("ruby-unf" ,ruby-unf)))
5724 (native-inputs
5725 `(("ruby-shoulda" ,ruby-shoulda)
5726 ("bundler" ,bundler)
5727 ("ruby-test-unit" ,ruby-test-unit)))
5728 (synopsis "Domain name manipulation library")
5729 (description
5730 "@code{domain_name} is a Domain name manipulation library. It parses a
5731 domain name ready for extracting the registered domain and TLD (Top Level
5732 Domain). It can also be used for cookie domain validation based on the Public
5733 Suffix List.")
5734 (home-page "https://github.com/knu/ruby-domain_name")
5735 (license license:bsd-2)))
5736
5737 (define-public ruby-http-cookie
5738 (package
5739 (name "ruby-http-cookie")
5740 (version "1.0.3")
5741 (source
5742 (origin
5743 (method url-fetch)
5744 (uri (rubygems-uri "http-cookie" version))
5745 (sha256
5746 (base32
5747 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
5748 (build-system ruby-build-system)
5749 (arguments
5750 `(#:phases
5751 (modify-phases %standard-phases
5752 (add-before 'check 'add-dependency-to-bundler
5753 (lambda _
5754 ;; Fix NameError
5755 (substitute* "Rakefile"
5756 (("HTTP::Cookie::VERSION")
5757 "Bundler::GemHelper.gemspec.version"))
5758 #t)))))
5759 (propagated-inputs
5760 `(("ruby-domain-name" ,ruby-domain-name)))
5761 (native-inputs
5762 `(("rubysimplecov" ,ruby-simplecov)
5763 ("bundler" ,bundler)
5764 ("ruby-sqlite3" ,ruby-sqlite3)
5765 ("ruby-test-unit" ,ruby-test-unit)))
5766 (synopsis "Handle HTTP Cookies based on RFC 6265")
5767 (description
5768 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
5769 RFC 6265. It has been designed with security, standards compliance and
5770 compatibility in mind, to behave just the same as today's major web browsers.
5771 It has built-in support for the legacy @code{cookies.txt} and
5772 @code{cookies.sqlite} formats of Mozilla Firefox.")
5773 (home-page "https://github.com/sparklemotion/http-cookie")
5774 (license license:expat)))
5775
5776 (define-public ruby-httpclient
5777 (package
5778 (name "ruby-httpclient")
5779 (version "2.8.3")
5780 (source
5781 (origin
5782 (method url-fetch)
5783 (uri (rubygems-uri "httpclient" version))
5784 (sha256
5785 (base32
5786 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
5787 (build-system ruby-build-system)
5788 (arguments
5789 '(;; TODO: Some tests currently fail
5790 ;; ------
5791 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
5792 ;; 2 omissions, 0 notifications
5793 ;; 91.866% passed
5794 ;; ------
5795 ;; 6.49 tests/s, 22.41 assertions/s
5796 #:tests? #f
5797 #:phases
5798 (modify-phases %standard-phases
5799 (replace 'check
5800 (lambda* (#:key tests? #:allow-other-keys)
5801 (if tests?
5802 (invoke "ruby"
5803 "-Ilib"
5804 "test/runner.rb")
5805 #t))))))
5806 (native-inputs
5807 `(("ruby-rack" ,ruby-rack)))
5808 (synopsis
5809 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
5810 (description
5811 "The @code{httpclient} ruby library provides functionality related to
5812 HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
5813 Cookie, multithreading and authentication (digest, NTLM) support.
5814
5815 Also provided is a @command{httpclient} command, which can perform HTTP
5816 requests either using arguments or with an interactive prompt.")
5817 (home-page "https://github.com/nahi/httpclient")
5818 (license license:ruby)))
5819
5820 (define-public ruby-ansi
5821 (package
5822 (name "ruby-ansi")
5823 (version "1.5.0")
5824 (source
5825 (origin
5826 (method url-fetch)
5827 ;; Fetch from GitHub as the gem does not contain testing code.
5828 (uri (string-append "https://github.com/rubyworks/ansi/archive/"
5829 version ".tar.gz"))
5830 (file-name (string-append name "-" version ".tar.gz"))
5831 (sha256
5832 (base32
5833 "1zdip30hivyipi8hndhb457bhiz033awd00bgrsk5axjrwp6zhly"))))
5834 (build-system ruby-build-system)
5835 (arguments
5836 `(#:phases
5837 (modify-phases %standard-phases
5838 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
5839 ;; cycle ansi, qed, ansi. Instead simply test that the library can
5840 ;; be require'd.
5841 (replace 'check
5842 (lambda _
5843 (invoke "ruby" "-Ilib" "-r" "ansi")))
5844 (add-before 'validate-runpath 'replace-broken-symlink
5845 (lambda* (#:key outputs #:allow-other-keys)
5846 (let* ((out (assoc-ref outputs "out"))
5847 (file (string-append
5848 out "/lib/ruby/vendor_ruby/gems/ansi-"
5849 ,version "/lib/ansi.yml")))
5850 ;; XXX: This symlink is broken since ruby 2.4.
5851 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
5852 (delete-file file)
5853 (symlink "../.index" file)
5854 #t))))))
5855 (synopsis "ANSI escape code related libraries")
5856 (description
5857 "This package is a collection of ANSI escape code related libraries
5858 enabling ANSI colorization and stylization of console output. Included in the
5859 library are the @code{Code} module, which defines ANSI codes as constants and
5860 methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
5861 @code{ProgressBar}, and a @code{String} subclass. The library also includes a
5862 @code{Terminal} module which provides information about the current output
5863 device.")
5864 (home-page "https://rubyworks.github.io/ansi")
5865 (license license:bsd-2)))
5866
5867 (define-public ruby-systemu
5868 (package
5869 (name "ruby-systemu")
5870 (version "2.6.5")
5871 (source
5872 (origin
5873 (method url-fetch)
5874 (uri (rubygems-uri "systemu" version))
5875 (sha256
5876 (base32
5877 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
5878 (build-system ruby-build-system)
5879 (arguments
5880 `(#:phases
5881 (modify-phases %standard-phases
5882 (add-before 'check 'set-version
5883 (lambda _
5884 (setenv "VERSION" ,version)
5885 #t)))))
5886 (synopsis "Capture of stdout/stderr and handling of child processes")
5887 (description
5888 "Systemu can be used on any platform to return status, stdout, and stderr
5889 of any command. Unlike other methods like @code{open3} and @code{popen4}
5890 there is no danger of full pipes or threading issues hanging your process or
5891 subprocess.")
5892 (home-page "https://github.com/ahoward/systemu")
5893 (license license:ruby)))
5894
5895 (define-public ruby-bio-commandeer
5896 (package
5897 (name "ruby-bio-commandeer")
5898 (version "0.4.0")
5899 (source
5900 (origin
5901 (method url-fetch)
5902 (uri (rubygems-uri "bio-commandeer" version))
5903 (sha256
5904 (base32
5905 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
5906 (build-system ruby-build-system)
5907 (arguments
5908 `(#:phases
5909 (modify-phases %standard-phases
5910 (replace 'check
5911 ;; Run test without calling 'rake' so that jeweler is
5912 ;; not required as an input.
5913 (lambda _
5914 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
5915 (propagated-inputs
5916 `(("ruby-bio-logger" ,ruby-bio-logger)
5917 ("ruby-systemu" ,ruby-systemu)))
5918 (native-inputs
5919 `(("bundler" ,bundler)
5920 ("ruby-rspec" ,ruby-rspec)))
5921 (synopsis "Simplified running of shell commands from within Ruby")
5922 (description
5923 "Bio-commandeer provides an opinionated method of running shell commands
5924 from within Ruby. The advantage of bio-commandeer over other methods of
5925 running external commands is that when something goes wrong, messages printed
5926 to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
5927 detail to ease debugging.")
5928 (home-page "https://github.com/wwood/bioruby-commandeer")
5929 (license license:expat)))
5930
5931 (define-public ruby-rubytest
5932 (package
5933 (name "ruby-rubytest")
5934 (version "0.8.1")
5935 (source
5936 (origin
5937 (method url-fetch)
5938 (uri (rubygems-uri "rubytest" version))
5939 (sha256
5940 (base32
5941 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
5942 (build-system ruby-build-system)
5943 (arguments
5944 ;; Disable regular testing to break the cycle rubytest, qed, brass,
5945 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
5946 ;; simply test that the library can be require'd.
5947 `(#:phases
5948 (modify-phases %standard-phases
5949 (replace 'check
5950 (lambda _
5951 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
5952 (propagated-inputs
5953 `(("ruby-ansi" ,ruby-ansi)))
5954 (synopsis "Universal test harness for Ruby")
5955 (description
5956 "Rubytest is a testing meta-framework for Ruby. It can handle any
5957 compliant test framework and can run tests from multiple frameworks in a
5958 single pass.")
5959 (home-page "https://rubyworks.github.io/rubytest")
5960 (license license:bsd-2)))
5961
5962 (define-public ruby-brass
5963 (package
5964 (name "ruby-brass")
5965 (version "1.2.1")
5966 (source
5967 (origin
5968 (method url-fetch)
5969 (uri (rubygems-uri "brass" version))
5970 (sha256
5971 (base32
5972 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
5973 (build-system ruby-build-system)
5974 (arguments
5975 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
5976 ;; Instead simply test that the library can be require'd.
5977 `(#:phases
5978 (modify-phases %standard-phases
5979 (replace 'check
5980 (lambda _
5981 (invoke "ruby" "-Ilib" "-r" "brass"))))))
5982 (synopsis "Basic foundational assertions framework")
5983 (description
5984 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
5985 foundational assertions framework for other assertion and test frameworks to
5986 make use of.")
5987 (home-page "https://rubyworks.github.io/brass")
5988 (license license:bsd-2)))
5989
5990 (define-public ruby-qed
5991 (package
5992 (name "ruby-qed")
5993 (version "2.9.2")
5994 (source
5995 (origin
5996 (method url-fetch)
5997 (uri (rubygems-uri "qed" version))
5998 (sha256
5999 (base32
6000 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
6001 (build-system ruby-build-system)
6002 (arguments
6003 ;; Disable testing to break the cycle qed, ansi, qed, among others.
6004 ;; Instead simply test that the executable runs using --copyright.
6005 `(#:phases
6006 (modify-phases %standard-phases
6007 (replace 'check
6008 (lambda _
6009 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
6010 (propagated-inputs
6011 `(("ruby-ansi" ,ruby-ansi)
6012 ("ruby-brass" ,ruby-brass)))
6013 (synopsis "Test framework utilizing literate programming techniques")
6014 (description
6015 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
6016 @dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
6017 Development} (BDD) utilizing Literate Programming techniques. QED sits
6018 somewhere between lower-level testing tools like @code{Test::Unit} and
6019 requirement specifications systems like Cucumber.")
6020 (home-page "https://rubyworks.github.io/qed")
6021 (license license:bsd-2)))
6022
6023 (define-public ruby-ae
6024 (package
6025 (name "ruby-ae")
6026 (version "1.8.2")
6027 (source
6028 (origin
6029 (method url-fetch)
6030 ;; Fetch from github so tests are included.
6031 (uri (string-append
6032 "https://github.com/rubyworks/ae/archive/"
6033 version ".tar.gz"))
6034 (file-name (string-append name "-" version ".tar.gz"))
6035 (sha256
6036 (base32
6037 "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl"))))
6038 (build-system ruby-build-system)
6039 (arguments
6040 `(#:phases
6041 (modify-phases %standard-phases
6042 (replace 'check
6043 (lambda _ (invoke "qed")))
6044 (add-before 'validate-runpath 'replace-broken-symlink
6045 (lambda* (#:key outputs #:allow-other-keys)
6046 (let* ((out (assoc-ref outputs "out"))
6047 (file (string-append
6048 out "/lib/ruby/vendor_ruby/gems/ae-"
6049 ,version "/lib/ae.yml")))
6050 ;; XXX: This symlink is broken since ruby 2.4.
6051 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
6052 (delete-file file)
6053 (symlink "../.index" file)
6054 #t))))))
6055 (propagated-inputs
6056 `(("ruby-ansi" ,ruby-ansi)))
6057 (native-inputs
6058 `(("ruby-qed" ,ruby-qed)))
6059 (synopsis "Assertions library")
6060 (description
6061 "Assertive Expressive (AE) is an assertions library specifically designed
6062 for reuse by other test frameworks.")
6063 (home-page "https://rubyworks.github.io/ae")
6064 (license license:bsd-2)))
6065
6066 (define-public ruby-lemon
6067 (package
6068 (name "ruby-lemon")
6069 (version "0.9.1")
6070 (source
6071 (origin
6072 (method url-fetch)
6073 (uri (rubygems-uri "lemon" version))
6074 (sha256
6075 (base32
6076 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
6077 (build-system ruby-build-system)
6078 (arguments
6079 `(#:phases
6080 (modify-phases %standard-phases
6081 (replace 'check (lambda _ (invoke "qed"))))))
6082 (propagated-inputs
6083 `(("ruby-ae" ,ruby-ae)
6084 ("ruby-ansi" ,ruby-ansi)
6085 ("ruby-rubytest" ,ruby-rubytest)))
6086 (native-inputs
6087 `(("ruby-qed" ,ruby-qed)))
6088 (synopsis "Test framework correlating code structure and test unit")
6089 (description
6090 "Lemon is a unit testing framework that enforces highly formal
6091 case-to-class and unit-to-method test construction. This enforcement can help
6092 focus concern on individual units of behavior.")
6093 (home-page "https://rubyworks.github.io/lemon")
6094 (license license:bsd-2)))
6095
6096 (define-public ruby-rubytest-cli
6097 (package
6098 (name "ruby-rubytest-cli")
6099 (version "0.2.0")
6100 (source
6101 (origin
6102 (method url-fetch)
6103 (uri (rubygems-uri "rubytest-cli" version))
6104 (sha256
6105 (base32
6106 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
6107 (build-system ruby-build-system)
6108 (arguments
6109 `(#:tests? #f)) ; no tests
6110 (propagated-inputs
6111 `(("ruby-ansi" ,ruby-ansi)
6112 ("ruby-rubytest" ,ruby-rubytest)))
6113 (synopsis "Command-line interface for rubytest")
6114 (description
6115 "Rubytest CLI is a command-line interface for running tests for
6116 Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
6117 (home-page "https://rubyworks.github.io/rubytest-cli")
6118 (license license:bsd-2)))
6119
6120 (define-public ruby-hashery
6121 (package
6122 (name "ruby-hashery")
6123 (version "2.1.2")
6124 (source
6125 (origin
6126 (method url-fetch)
6127 (uri (rubygems-uri "hashery" version))
6128 (sha256
6129 (base32
6130 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
6131 (build-system ruby-build-system)
6132 (arguments
6133 `(#:phases
6134 (modify-phases %standard-phases
6135 (replace 'check
6136 (lambda _
6137 (invoke "qed")
6138 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
6139 (native-inputs
6140 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
6141 ("ruby-qed" ,ruby-qed)
6142 ("ruby-lemon" ,ruby-lemon)))
6143 (synopsis "Hash-like classes with extra features")
6144 (description
6145 "The Hashery is a tight collection of @code{Hash}-like classes.
6146 Included are the auto-sorting @code{Dictionary} class, the efficient
6147 @code{LRUHash}, the flexible @code{OpenHash} and the convenient
6148 @code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
6149 defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
6150 standard @code{Hash} making it possible to subclass and augment to fit any
6151 specific use case.")
6152 (home-page "https://rubyworks.github.io/hashery")
6153 (license license:bsd-2)))
6154
6155 (define-public ruby-rc4
6156 (package
6157 (name "ruby-rc4")
6158 (version "0.1.5")
6159 (source
6160 (origin
6161 (method url-fetch)
6162 (uri (rubygems-uri "ruby-rc4" version))
6163 (sha256
6164 (base32
6165 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
6166 (build-system ruby-build-system)
6167 (arguments
6168 `(#:phases
6169 (modify-phases %standard-phases
6170 (replace 'check
6171 (lambda _
6172 (invoke "rspec" "spec/rc4_spec.rb"))))))
6173 (native-inputs
6174 `(("ruby-rspec" ,ruby-rspec-2)))
6175 (synopsis "Implementation of the RC4 algorithm")
6176 (description
6177 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
6178 (home-page "https://github.com/caiges/Ruby-RC4")
6179 (license license:expat)))
6180
6181 (define-public ruby-afm
6182 (package
6183 (name "ruby-afm")
6184 (version "0.2.2")
6185 (source
6186 (origin
6187 (method url-fetch)
6188 (uri (rubygems-uri "afm" version))
6189 (sha256
6190 (base32
6191 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
6192 (build-system ruby-build-system)
6193 (native-inputs
6194 `(("bundler" ,bundler)))
6195 (synopsis "Read Adobe Font Metrics (afm) files")
6196 (description
6197 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
6198 files and use the data therein.")
6199 (home-page "https://github.com/halfbyte/afm")
6200 (license license:expat)))
6201
6202 (define-public ruby-ascii85
6203 (package
6204 (name "ruby-ascii85")
6205 (version "1.0.3")
6206 (source
6207 (origin
6208 (method url-fetch)
6209 (uri (rubygems-uri "Ascii85" version))
6210 (sha256
6211 (base32
6212 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
6213 (build-system ruby-build-system)
6214 (native-inputs
6215 `(("bundler" ,bundler)))
6216 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
6217 (description
6218 "This library provides methods to encode and decode Ascii85
6219 binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
6220 @dfn{Portable Document Format} (PDF) file formats.")
6221 (home-page "https://github.com/datawraith/ascii85gem")
6222 (license license:expat)))
6223
6224 (define-public ruby-ttfunk
6225 (package
6226 (name "ruby-ttfunk")
6227 (version "1.5.1")
6228 (source
6229 (origin
6230 (method url-fetch)
6231 ;; fetch from github as the gem does not contain testing code
6232 (uri (string-append
6233 "https://github.com/prawnpdf/ttfunk/archive/"
6234 version ".tar.gz"))
6235 (file-name (string-append name "-" version ".tar.gz"))
6236 (sha256
6237 (base32
6238 "1ymcn12n5iws401yz03zsj8rr653fdqq13czsrciq09phgh9jzc5"))))
6239 (build-system ruby-build-system)
6240 (arguments
6241 `(#:test-target "spec"
6242 #:phases
6243 (modify-phases %standard-phases
6244 (add-before 'build 'remove-ssh
6245 (lambda _
6246 ;; remove dependency on an ssh key pair that doesn't exist
6247 (substitute* "ttfunk.gemspec"
6248 (("spec.signing_key.*") ""))
6249 #t))
6250 (add-before 'check 'remove-rubocop
6251 (lambda _
6252 ;; remove rubocop as a dependency as not needed for testing
6253 (substitute* "ttfunk.gemspec"
6254 (("spec.add_development_dependency\\('rubocop'.*") ""))
6255 (substitute* "Rakefile"
6256 (("require 'rubocop/rake_task'") "")
6257 (("RuboCop::RakeTask.new") ""))
6258 #t)))))
6259 (native-inputs
6260 `(("ruby-rspec" ,ruby-rspec)
6261 ("ruby-yard" ,ruby-yard)
6262 ("bundler" ,bundler)))
6263 (synopsis "Font metrics parser for the Prawn PDF generator")
6264 (description
6265 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
6266 part of the Prawn PDF generator.")
6267 (home-page "https://github.com/prawnpdf/ttfunk")
6268 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
6269 ;; for details."
6270 (license (list license:gpl2 license:gpl3 license:ruby))))
6271
6272 (define-public ruby-puma
6273 (package
6274 (name "ruby-puma")
6275 (version "3.9.1")
6276 (source
6277 (origin
6278 (method url-fetch)
6279 ;; Fetch from GitHub because distributed gem does not contain tests.
6280 (uri (string-append "https://github.com/puma/puma/archive/v"
6281 version ".tar.gz"))
6282 (file-name (string-append name "-" version ".tar.gz"))
6283 (sha256
6284 (base32
6285 "03pifga841h17brh4vgia8i2ybh3cmsyg0dbybzdf6dq51wzcxdx"))))
6286 (build-system ruby-build-system)
6287 (arguments
6288 `(#:tests? #f ; Tests require an out-dated version of minitest.
6289 #:phases
6290 (modify-phases %standard-phases
6291 (add-before 'build 'fix-gemspec
6292 (lambda _
6293 (substitute* "puma.gemspec"
6294 (("git ls-files") "find * |sort"))
6295 #t)))))
6296 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
6297 (description
6298 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
6299 for Ruby/Rack applications. Puma is intended for use in both development and
6300 production environments. In order to get the best throughput, it is highly
6301 recommended that you use a Ruby implementation with real threads like Rubinius
6302 or JRuby.")
6303 (home-page "http://puma.io")
6304 (license license:expat)))
6305
6306 (define-public ruby-hoe-git
6307 (package
6308 (name "ruby-hoe-git")
6309 (version "1.6.0")
6310 (source
6311 (origin
6312 (method url-fetch)
6313 (uri (rubygems-uri "hoe-git" version))
6314 (sha256
6315 (base32
6316 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
6317 (build-system ruby-build-system)
6318 (propagated-inputs
6319 `(("ruby-hoe" ,ruby-hoe)
6320 ("git" ,git)))
6321 (synopsis "Hoe plugins for tighter Git integration")
6322 (description
6323 "This package provides a set of Hoe plugins for tighter Git integration.
6324 It provides tasks to automate release tagging and pushing and changelog
6325 generation.")
6326 (home-page "https://github.com/jbarnette/hoe-git")
6327 (license license:expat)))
6328
6329 (define-public ruby-sequel
6330 (package
6331 (name "ruby-sequel")
6332 (version "4.49.0")
6333 (source
6334 (origin
6335 (method url-fetch)
6336 (uri (rubygems-uri "sequel" version))
6337 (sha256
6338 (base32
6339 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
6340 (build-system ruby-build-system)
6341 (arguments
6342 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
6343 (synopsis "Database toolkit for Ruby")
6344 (description "Sequel provides thread safety, connection pooling and a
6345 concise DSL for constructing SQL queries and table schemas. It includes a
6346 comprehensive ORM layer for mapping records to Ruby objects and handling
6347 associated records.")
6348 (home-page "http://sequel.jeremyevans.net")
6349 (license license:expat)))
6350
6351 (define-public ruby-timecop
6352 (package
6353 (name "ruby-timecop")
6354 (version "0.9.1")
6355 (source
6356 (origin
6357 (method url-fetch)
6358 (uri (rubygems-uri "timecop" version))
6359 (sha256
6360 (base32
6361 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
6362 (build-system ruby-build-system)
6363 (arguments
6364 `(#:phases
6365 (modify-phases %standard-phases
6366 (add-before 'check 'set-check-rubylib
6367 (lambda _
6368 ;; Set RUBYLIB so timecop tests finds its own lib.
6369 (setenv "RUBYLIB" "lib")
6370 #t)))))
6371 (native-inputs
6372 `(("bundler" ,bundler)
6373 ("ruby-minitest-rg" ,ruby-minitest-rg)
6374 ("ruby-mocha" ,ruby-mocha)
6375 ("ruby-activesupport" ,ruby-activesupport)))
6376 (synopsis "Test mocks for time-dependent functions")
6377 (description
6378 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
6379 making it easier to test time-dependent code. It provides a unified method to
6380 mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
6381 call.")
6382 (home-page "https://github.com/travisjeffery/timecop")
6383 (license license:expat)))
6384
6385 (define-public ruby-concurrent
6386 (package
6387 (name "ruby-concurrent")
6388 (version "1.0.5")
6389 (source
6390 (origin
6391 (method url-fetch)
6392 ;; Download from GitHub because the rubygems version does not contain
6393 ;; Rakefile.
6394 (uri (string-append
6395 "https://github.com/ruby-concurrency/concurrent-ruby/archive/v"
6396 version
6397 ".tar.gz"))
6398 (file-name (string-append name "-" version ".tar.gz"))
6399 (sha256
6400 (base32
6401 "0qhv0qzsby4iijgwa4s9r88zj8123pmyz1dwaqzdk57xgqll9pny"))
6402 ;; Exclude failing test reported at
6403 ;; https://github.com/ruby-concurrency/concurrent-ruby/issues/534
6404 (patches (search-patches "ruby-concurrent-ignore-broken-test.patch"
6405 "ruby-concurrent-test-arm.patch"))))
6406 (build-system ruby-build-system)
6407 (arguments
6408 `(#:test-target "spec"
6409 #:phases
6410 (modify-phases %standard-phases
6411 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
6412 (lambda _
6413 ;; Delete extra gemspec files so 'first-gemspec' chooses the
6414 ;; correct one.
6415 (delete-file "concurrent-ruby-edge.gemspec")
6416 (delete-file "concurrent-ruby-ext.gemspec")
6417 #t))
6418 (add-before 'build 'replace-git-ls-files2
6419 (lambda _
6420 (substitute* "support/file_map.rb"
6421 (("git ls-files") "find * |sort"))
6422 #t))
6423 (add-before 'check 'rake-compile
6424 ;; Fix the test error described at
6425 ;; https://github.com/ruby-concurrency/concurrent-ruby/pull/408
6426 (lambda _ (invoke "rake" "compile")))
6427 (add-before 'check 'remove-timecop-dependency
6428 ;; Remove timecop-dependent tests as having timecop as a depedency
6429 ;; causes circular depedencies.
6430 (lambda _
6431 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
6432 (delete-file "spec/concurrent/scheduled_task_spec.rb")
6433 #t)))))
6434 (native-inputs
6435 `(("ruby-rake-compiler" ,ruby-rake-compiler)
6436 ("ruby-rspec" ,ruby-rspec)))
6437 (synopsis "Concurrency tools for Ruby")
6438 (description
6439 "This library provides modern concurrency tools including agents,
6440 futures, promises, thread pools, actors, supervisors, and more. It is
6441 inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
6442 patterns.")
6443 (home-page "http://www.concurrent-ruby.com")
6444 (license license:expat)))
6445
6446 (define-public ruby-pkg-config
6447 (package
6448 (name "ruby-pkg-config")
6449 (version "1.2.5")
6450 (source
6451 (origin
6452 (method url-fetch)
6453 (uri (rubygems-uri "pkg-config" version))
6454 (sha256
6455 (base32
6456 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
6457 (build-system ruby-build-system)
6458 (arguments
6459 ;; Tests require extra files not included in the gem.
6460 `(#:tests? #f))
6461 (synopsis "Detect libraries for compiling Ruby native extensions")
6462 (description
6463 "@code{pkg-config} can be used in your extconf.rb to properly detect need
6464 libraries for compiling Ruby native extensions.")
6465 (home-page "https://github.com/ruby-gnome2/pkg-config")
6466 (license license:lgpl2.0+)))
6467
6468 (define-public ruby-net-http-digest-auth
6469 (package
6470 (name "ruby-net-http-digest-auth")
6471 (version "1.4.1")
6472 (source
6473 (origin
6474 (method url-fetch)
6475 (uri (rubygems-uri "net-http-digest_auth" version))
6476 (sha256
6477 (base32
6478 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
6479 (build-system ruby-build-system)
6480 (native-inputs
6481 `(("ruby-hoe" ,ruby-hoe)))
6482 (synopsis "RFC 2617 HTTP digest authentication library")
6483 (description
6484 "This library implements HTTP's digest authentication scheme based on
6485 RFC 2617. This enables the use of the digest authentication scheme instead
6486 of the more insecure basic authentication scheme.")
6487 (home-page "https://github.com/drbrain/net-http-digest_auth")
6488 (license license:expat)))
6489
6490 (define-public ruby-mail
6491 (package
6492 (name "ruby-mail")
6493 (version "2.6.6")
6494 (source
6495 (origin
6496 (method url-fetch)
6497 (uri (rubygems-uri "mail" version))
6498 (sha256
6499 (base32
6500 "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
6501 (build-system ruby-build-system)
6502 (propagated-inputs
6503 `(("ruby-mime-types" ,ruby-mime-types)))
6504 (arguments
6505 ;; Tests require extra gems not included in the Gemfile.
6506 ;; XXX: Try enabling this for the next version with mini_mime.
6507 `(#:tests? #f))
6508 (synopsis "Mail library for Ruby")
6509 (description
6510 "Mail is an internet library for Ruby that is designed to handle email
6511 generation, parsing and sending. The purpose of this library is to provide
6512 a single point of access to handle all email functions, including sending
6513 and receiving emails. All network type actions are done through proxy
6514 methods to @code{Net::SMTP}, @code{Net::POP3} etc.
6515
6516 Mail has been designed with a very simple object oriented system that
6517 really opens up the email messages you are parsing, if you know what you
6518 are doing, you can fiddle with every last bit of your email directly.")
6519 (home-page "https://github.com/mikel/mail")
6520 (license license:expat)))
6521
6522 (define-public ruby-mathn
6523 (package
6524 (name "ruby-mathn")
6525 (version "0.1.0")
6526 (source
6527 (origin
6528 (method url-fetch)
6529 (uri (rubygems-uri "mathn" version))
6530 (sha256
6531 (base32
6532 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
6533 (build-system ruby-build-system)
6534 (native-inputs
6535 `(("bundler" ,bundler)
6536 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6537 (synopsis "Extends math operations for increased precision")
6538 (description
6539 "This gem makes mathematical operations more precise in Ruby and
6540 integrates other mathematical standard libraries. Prior to Ruby 2.5,
6541 @code{mathn} was part of the Ruby standard library.")
6542 (home-page "https://github.com/ruby/mathn")
6543 (license license:bsd-2)))
6544
6545 (define-public ruby-code-statistics
6546 (package
6547 (name "ruby-code-statistics")
6548 (version "0.2.13")
6549 (source
6550 (origin
6551 (method url-fetch)
6552 (uri (rubygems-uri "code_statistics" version))
6553 (sha256
6554 (base32
6555 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
6556 (build-system ruby-build-system)
6557 (arguments
6558 `(#:tests? #f)) ; Not all test code is included in gem.
6559 (synopsis "Port of the rails 'rake stats' method")
6560 (description
6561 "This gem is a port of the rails 'rake stats' method so it can be made
6562 more robust and work for non rails projects.")
6563 (home-page "http://github.com/danmayer/code_statistics")
6564 (license license:expat)))
6565
6566 (define-public ruby-rubypants
6567 (package
6568 (name "ruby-rubypants")
6569 (version "0.6.0")
6570 (source (origin
6571 (method url-fetch)
6572 (uri (rubygems-uri "rubypants" version))
6573 (sha256
6574 (base32
6575 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
6576 (build-system ruby-build-system)
6577 (arguments
6578 '(#:tests? #f)) ; need Codecov
6579 (synopsis "Port of the smart-quotes library SmartyPants")
6580 (description
6581 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
6582 original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
6583 and BBEdit that easily translates plain ASCII punctuation characters into
6584 smart typographic punctuation HTML entities.")
6585 (home-page "https://github.com/jmcnevin/rubypants")
6586 (license license:bsd-2)))
6587
6588 (define-public ruby-org-ruby
6589 (package
6590 (name "ruby-org-ruby")
6591 (version "0.9.12")
6592 (source (origin
6593 (method url-fetch)
6594 (uri (rubygems-uri "org-ruby" version))
6595 (sha256
6596 (base32
6597 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
6598 (build-system ruby-build-system)
6599 (arguments
6600 '(#:tests? #f)) ; no rakefile
6601 (propagated-inputs
6602 `(("ruby-rubypants" ,ruby-rubypants)))
6603 (synopsis "Org-mode parser written in Ruby")
6604 (description
6605 "Org-ruby is an org-mode parser written in Ruby. The most significant
6606 thing this library does today is convert org-mode files to HTML or Textile or
6607 Markdown.")
6608 (home-page "https://github.com/wallyqs/org-ruby")
6609 (license license:expat)))
6610
6611 (define-public ruby-rake
6612 (package
6613 (name "ruby-rake")
6614 (version "12.3.1")
6615 (source
6616 (origin
6617 (method url-fetch)
6618 (uri (rubygems-uri "rake" version))
6619 (sha256
6620 (base32
6621 "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg"))))
6622 (build-system ruby-build-system)
6623 (native-inputs
6624 `(("bundler" ,bundler)))
6625 (synopsis "Rake is a Make-like program implemented in Ruby")
6626 (description
6627 "Rake is a Make-like program where tasks and dependencies are specified
6628 in standard Ruby syntax.")
6629 (home-page "https://github.com/ruby/rake")
6630 (license license:expat)))
6631
6632 (define-public ruby-childprocess-0.6
6633 (package
6634 (name "ruby-childprocess")
6635 (version "0.6.3")
6636 (source
6637 (origin
6638 (method url-fetch)
6639 (uri (rubygems-uri "childprocess" version))
6640 (sha256
6641 (base32
6642 "1p3f43scdzx9zxmy2kw5zsc3az6v46nq4brwcxmnscjy4w4racbv"))))
6643 (build-system ruby-build-system)
6644 (arguments
6645 `(#:tests? #f))
6646 (native-inputs
6647 `(("bundler" ,bundler)
6648 ("ruby-rspec" ,ruby-rspec)))
6649 (propagated-inputs
6650 `(("ruby-ffi" ,ruby-ffi)))
6651 (synopsis "Control external programs running in the background, in Ruby")
6652 (description "@code{childprocess} provides a gem to control external
6653 programs running in the background, in Ruby.")
6654 (home-page "http://github.com/enkessler/childprocess")
6655 (license license:expat)))
6656
6657 (define-public ruby-childprocess
6658 (package
6659 (inherit ruby-childprocess-0.6)
6660 (name "ruby-childprocess")
6661 (version "0.9.0")
6662 (source
6663 (origin
6664 (method url-fetch)
6665 (uri (rubygems-uri "childprocess" version))
6666 (sha256
6667 (base32
6668 "0a61922kmvcxyj5l70fycapr87gz1dzzlkfpq85rfqk5vdh3d28p"))))))
6669
6670 (define-public ruby-public-suffix
6671 (package
6672 (name "ruby-public-suffix")
6673 (version "3.0.3")
6674 (source (origin
6675 (method url-fetch)
6676 (uri (rubygems-uri "public_suffix" version))
6677 (sha256
6678 (base32
6679 "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l"))))
6680 (build-system ruby-build-system)
6681 (arguments
6682 '(#:phases
6683 (modify-phases %standard-phases
6684 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
6685 ;; including it as an input can lead to circular dependencies.
6686 (add-after 'unpack 'remove-rubocop-from-Rakefile
6687 (lambda _
6688 (substitute* "Rakefile"
6689 (("require \"rubocop/rake\\_task\"") "")
6690 (("RuboCop::RakeTask\\.new") ""))
6691 #t)))))
6692 (native-inputs
6693 `(("bundler" ,bundler)
6694 ("ruby-yard" ,ruby-yard)
6695 ("ruby-mocha" ,ruby-mocha)
6696 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
6697 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
6698 (synopsis "Domain name parser")
6699 (description "The gem @code{public_suffix} is a domain name parser,
6700 written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
6701 is one under which Internet users can (or historically could) directly
6702 register names. Some examples of public suffixes are @code{.com},
6703 @code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
6704 all known public suffixes.")
6705 (license license:expat)))
6706
6707 (define-public ruby-addressable
6708 (package
6709 (name "ruby-addressable")
6710 (version "2.6.0")
6711 (source (origin
6712 (method url-fetch)
6713 (uri (rubygems-uri "addressable" version))
6714 (sha256
6715 (base32
6716 "0bcm2hchn897xjhqj9zzsxf3n9xhddymj4lsclz508f4vw3av46l"))))
6717 (build-system ruby-build-system)
6718 (arguments
6719 '(#:test-target "spec"
6720 #:phases
6721 (modify-phases %standard-phases
6722 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
6723 (lambda _
6724 (substitute* "Gemfile"
6725 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
6726 ((".*launchy.*") "")
6727 ((".*rake.*") "gem 'rake'\n")
6728 ((".*redcarpet.*") ""))
6729 #t))
6730 (add-before 'check 'delete-network-dependent-test
6731 (lambda _
6732 (delete-file "spec/addressable/net_http_compat_spec.rb")
6733 #t)))))
6734 (native-inputs
6735 `(("ruby-rspec" ,ruby-rspec)
6736 ("bundler" ,bundler)
6737 ("ruby-idn-ruby" ,ruby-idn-ruby)
6738 ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
6739 ("ruby-rspec-its", ruby-rspec-its)
6740 ("ruby-yard" ,ruby-yard)
6741 ("ruby-simplecov" ,ruby-simplecov)))
6742 (propagated-inputs
6743 `(("ruby-public-suffix" ,ruby-public-suffix)))
6744 (home-page "https://github.com/sporkmonger/addressable")
6745 (synopsis "Alternative URI implementation")
6746 (description "Addressable is a replacement for the URI implementation that
6747 is part of Ruby's standard library. It more closely conforms to RFC 3986,
6748 RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
6749 (license license:asl2.0)))
6750
6751 (define-public ruby-colorator
6752 (package
6753 (name "ruby-colorator")
6754 (version "1.1.0")
6755 (source (origin
6756 (method url-fetch)
6757 (uri (rubygems-uri "colorator" version))
6758 (sha256
6759 (base32
6760 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
6761 (build-system ruby-build-system)
6762 (arguments
6763 ;; No test target
6764 `(#:tests? #f))
6765 (home-page "http://octopress.org/colorator/")
6766 (synopsis "Terminal color library")
6767 (description "Colorator is a Ruby gem that helps you colorize your text
6768 for the terminal.")
6769 (license license:expat)))
6770
6771 (define-public ruby-command-line-reporter
6772 (package
6773 (name "ruby-command-line-reporter")
6774 (version "4.0.0")
6775 (source (origin
6776 (method url-fetch)
6777 (uri (rubygems-uri "command_line_reporter" version))
6778 (sha256
6779 (base32
6780 "1qma35xrb772whxwy1rs9bicb9d6lvz0s2dd2dnn4fr6zcbcxc0a"))))
6781 (build-system ruby-build-system)
6782 (arguments
6783 ;; No Rakefile
6784 `(#:tests? #f
6785 #:phases
6786 (modify-phases %standard-phases
6787 (add-before 'build 'fix-dependencies
6788 (lambda _
6789 (substitute* ".gemspec"
6790 ;; colored is unmaintained
6791 (("colored") "colorator")
6792 ;; colorator version
6793 (("= 1.2") "= 1.1"))
6794 #t)))))
6795 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
6796 (home-page "https://github.com/wbailey/command_line_reporter")
6797 (synopsis "Report production while executing Ruby scripts")
6798 (description "This gem provides a DSL that makes it easy to write reports
6799 of various types in ruby. It eliminates the need to litter your source with
6800 puts statements, instead providing a more readable, expressive interface to
6801 your application.")
6802 (license license:asl2.0)))
6803
6804 (define-public ruby-command-line-reporter-3
6805 (package
6806 (inherit ruby-command-line-reporter)
6807 (version "3.3.6")
6808 (source (origin
6809 (method url-fetch)
6810 (uri (rubygems-uri "command_line_reporter" version))
6811 (sha256
6812 (base32
6813 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
6814
6815 (define-public ruby-rdoc
6816 (package
6817 (name "ruby-rdoc")
6818 (version "6.0.4")
6819 (source
6820 (origin
6821 (method url-fetch)
6822 (uri (rubygems-uri "rdoc" version))
6823 (sha256
6824 (base32
6825 "0anv42cqcdc6g4n386mrva7mgav5i0c2ry3yzvzzc6z6hymkmcr7"))))
6826 (build-system ruby-build-system)
6827 (native-inputs
6828 `(("bundler" ,bundler)))
6829 (home-page "https://ruby.github.io/rdoc/")
6830 (synopsis "HTML and command-line documentation utility")
6831 (description "RDoc produces HTML and command-line documentation for Ruby
6832 projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
6833 documentation from the command-line.")
6834 (license license:gpl2+)))
6835
6836 (define-public ruby-sass-listen
6837 (package
6838 (name "ruby-sass-listen")
6839 (version "4.0.0")
6840 (source (origin
6841 (method url-fetch)
6842 (uri (rubygems-uri "sass-listen" version))
6843 (sha256
6844 (base32
6845 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
6846 (build-system ruby-build-system)
6847 (arguments
6848 ;; No test target
6849 `(#:tests? #f))
6850 (propagated-inputs
6851 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
6852 ("ruby-rb-inotify" ,ruby-rb-inotify)))
6853 (home-page "https://github.com/sass/listen")
6854 (synopsis "File modification notification library")
6855 (description "The Listen gem listens to file modifications and notifies you
6856 about the changes.")
6857 (license license:expat)))
6858
6859 (define-public ruby-terminfo
6860 (package
6861 (name "ruby-terminfo")
6862 (version "0.1.1")
6863 (source
6864 (origin
6865 (method url-fetch)
6866 (uri (rubygems-uri "ruby-terminfo" version))
6867 (sha256
6868 (base32
6869 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
6870 (build-system ruby-build-system)
6871 (arguments
6872 `(#:test-target "test"
6873 ;; Rakefile requires old packages and would need modification to
6874 ;; work with current software.
6875 #:tests? #f))
6876 (inputs
6877 `(("ncurses" ,ncurses)))
6878 (native-inputs
6879 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
6880 ("ruby-rdoc" ,ruby-rdoc)))
6881 (home-page "http://www.a-k-r.org/ruby-terminfo/")
6882 (synopsis "Terminfo binding for Ruby")
6883 (description "Ruby-terminfo provides terminfo binding for Ruby.")
6884 (license license:bsd-3)))
6885
6886 (define-public ruby-diffy
6887 (package
6888 (name "ruby-diffy")
6889 (version "3.2.1")
6890 (source
6891 (origin
6892 (method url-fetch)
6893 (uri (rubygems-uri "diffy" version))
6894 (sha256
6895 (base32
6896 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
6897 (build-system ruby-build-system)
6898 (arguments
6899 ;; No tests
6900 `(#:tests? #f))
6901 (native-inputs
6902 `(("ruby-rspec" ,ruby-rspec)))
6903 (home-page "https://github.com/samg/diffy")
6904 (synopsis "Convenient diffing in ruby")
6905 (description "Diffy provides a convenient way to generate a diff from two
6906 strings or files.")
6907 (license license:expat)))
6908
6909 (define-public ruby-sass-spec
6910 (package
6911 (name "ruby-sass-spec")
6912 (version "3.5.4")
6913 (source (origin
6914 (method url-fetch)
6915 (uri (string-append "https://github.com/sass/sass-spec/archive/v"
6916 version ".tar.gz"))
6917 (file-name (string-append name "-" version ".tar.gz"))
6918 (sha256
6919 (base32
6920 "0nx8lp7c9qa58w489crgqa3c489xsyarn1a8h4np9mwwfqm1h3rr"))))
6921 (build-system ruby-build-system)
6922 (propagated-inputs
6923 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
6924 ("ruby-diffy" ,ruby-diffy)
6925 ("ruby-terminfo" ,ruby-terminfo)))
6926 (arguments
6927 `(;; This package contains tests for a sass implementation, and the to
6928 ;; avoid any circular dependencies, the tests are not run here
6929 #:tests? #f
6930 #:phases
6931 (modify-phases %standard-phases
6932 (add-after 'unpack 'patch-test
6933 (lambda _
6934 (delete-file "spec/values/colors/alpha_hex-3.5/error")
6935 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
6936 (("string") "color")))))))
6937 (home-page "https://github.com/sass/sass-spec")
6938 (synopsis "Test suite for Sass")
6939 (description "Sass Spec is a test suite for Sass. Test cases are all in
6940 the @file{spec} directory.")
6941 (license license:expat)))
6942
6943 (define-public ruby-sass
6944 (package
6945 (name "ruby-sass")
6946 (version "3.6.0")
6947 (source (origin
6948 (method url-fetch)
6949 (uri (rubygems-uri "sass" version))
6950 (sha256
6951 (base32
6952 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
6953 (build-system ruby-build-system)
6954 (propagated-inputs
6955 `(("ruby-sass-listen" ,ruby-sass-listen)))
6956 (native-inputs
6957 `(("ruby-sass-spec" ,ruby-sass-spec)
6958 ("ruby-mathn" ,ruby-mathn)))
6959 (home-page "http://sass-lang.com/")
6960 (synopsis "CSS extension language")
6961 (description "Sass is a CSS extension language. It extends CSS with
6962 features that don't exist yet like variables, nesting, mixins and inheritance.")
6963 (license license:expat)))
6964
6965 (define-public ruby-jekyll-sass-converter
6966 (package
6967 (name "ruby-jekyll-sass-converter")
6968 (version "1.5.2")
6969 (source (origin
6970 (method url-fetch)
6971 (uri (rubygems-uri "jekyll-sass-converter" version))
6972 (sha256
6973 (base32
6974 "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk"))))
6975 (build-system ruby-build-system)
6976 (propagated-inputs
6977 `(("ruby-sass" ,ruby-sass)))
6978 (arguments
6979 ;; No rakefile
6980 `(#:tests? #f))
6981 (home-page "https://github.com/jekyll/jekyll-sass-converter")
6982 (synopsis "Sass converter for Jekyll")
6983 (description "This gem provide built-in support for the Sass converter
6984 in Jekyll.")
6985 (license license:expat)))
6986
6987 (define-public ruby-jekyll-watch
6988 (package
6989 (name "ruby-jekyll-watch")
6990 (version "2.0.0")
6991 (source (origin
6992 (method url-fetch)
6993 (uri (rubygems-uri "jekyll-watch" version))
6994 (sha256
6995 (base32
6996 "0m7scvj3ki8bmyx5v8pzibpg6my10nycnc28lip98dskf8iakprp"))))
6997 (build-system ruby-build-system)
6998 (propagated-inputs
6999 `(("ruby-listen-3.0" ,ruby-listen-3.0)))
7000 (arguments
7001 ;; No rakefile
7002 `(#:tests? #f))
7003 (home-page "https://github.com/jekyll/jekyll-watch")
7004 (synopsis "Jekyll auto-rebuild support")
7005 (description "This gems add the @code{--watch} switch to the jekyll CLI
7006 interface. It allows Jekyll to rebuild your site when a file changes.")
7007 (license license:expat)))
7008
7009 (define-public ruby-parallel
7010 (package
7011 (name "ruby-parallel")
7012 (version "1.13.0")
7013 (source
7014 (origin
7015 (method git-fetch)
7016 (uri (git-reference
7017 (url "https://github.com/grosser/parallel.git")
7018 (commit (string-append "v" version))))
7019 (file-name (git-file-name name version))
7020 (sha256
7021 (base32
7022 "1isqzbqxz2ndad4i5z3lb9ldrhaijfncj8bmffv04sq44sv87ikv"))))
7023 (build-system ruby-build-system)
7024 (arguments
7025 `(;; TODO 3 test failures
7026 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
7027 ;; open unnecessary pipes
7028 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
7029 ;; SQLite in processes
7030 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
7031 ;; SQLite in threads
7032 #:tests? #f
7033 #:test-target "rspec-rerun:spec"
7034 #:phases
7035 (modify-phases %standard-phases
7036 (add-after 'unpack 'patch-Gemfile
7037 (lambda _
7038 (substitute* "Gemfile"
7039 (("gem 'rspec-legacy_formatters'") "")
7040 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
7041 (add-before 'check 'delete-Gemfile.lock
7042 (lambda _
7043 ;; Bundler isn't being used for fetching dependendencies, so
7044 ;; delete the Gemfile.lock
7045 (delete-file "Gemfile.lock")
7046 #t))
7047 (add-before 'build 'patch-gemspec
7048 (lambda _
7049 (substitute* "parallel.gemspec"
7050 (("git ls-files") "find"))
7051 #t)))))
7052 (native-inputs
7053 `(("ruby-rspec" ,ruby-rspec)
7054 ("ruby-rspec-rerun" ,ruby-rspec-rerun)
7055 ("bundler" ,bundler)
7056 ("ruby-activerecord" ,ruby-activerecord)
7057 ("ruby-progressbar" ,ruby-progressbar)
7058 ("ruby-bump" ,ruby-bump)
7059 ("procps" ,procps)
7060 ("lsof" ,lsof)
7061 ("ruby-mysql2" ,ruby-mysql2)
7062 ("ruby-sqlite3" ,ruby-sqlite3)
7063 ("ruby-i18n" ,ruby-i18n)))
7064 (home-page "https://github.com/grosser/parallel")
7065 (synopsis "Parallel processing in Ruby")
7066 (description "Parallel allows you to run any code in parallel Processes
7067 (to use all CPUs) or Threads(to speedup blocking operations). It is best
7068 suited for map-reduce or e.g. parallel downloads/uploads.")
7069 (license license:expat)))
7070
7071 (define-public ruby-cane
7072 (package
7073 (name "ruby-cane")
7074 (version "3.0.0")
7075 (source (origin
7076 (method url-fetch)
7077 (uri (rubygems-uri "cane" version))
7078 (sha256
7079 (base32
7080 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
7081 (build-system ruby-build-system)
7082 (arguments `(#:tests? #f)); No rakefile
7083 (home-page "https://github.com/square/cane")
7084 (propagated-inputs
7085 `(("ruby-parallel" ,ruby-parallel)))
7086 (synopsis "Code quality threshold checking")
7087 (description "Cane fails your build if code quality thresholds are not met.")
7088 (license license:asl2.0)))
7089
7090 (define-public ruby-morecane
7091 (package
7092 (name "ruby-morecane")
7093 (version "0.2.0")
7094 (source (origin
7095 (method url-fetch)
7096 (uri (rubygems-uri "morecane" version))
7097 (sha256
7098 (base32
7099 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
7100 (build-system ruby-build-system)
7101 (home-page "https://github.com/yob/morecane")
7102 (arguments `(#:tests? #f)); No rakefile
7103 (propagated-inputs
7104 `(("ruby-parallel" ,ruby-parallel)))
7105 (synopsis "Extra checks for cane")
7106 (description "The cane gem provides a great framework for running quality
7107 checks over your ruby project as part of continuous integration build. It
7108 comes with a few checks out of the box, but also provides an API for loading
7109 custom checks. This gem provides a set of additional checks.")
7110 (license license:expat)))
7111
7112 (define-public ruby-pdf-reader
7113 (package
7114 (name "ruby-pdf-reader")
7115 (version "2.1.0")
7116 (source (origin
7117 (method url-fetch)
7118 (uri (rubygems-uri "pdf-reader" version))
7119 (sha256
7120 (base32
7121 "1b3ig4wpcgdbqa7yw0ahwbmikkkywn2a22bfmrknl5ls7g066x45"))))
7122 (build-system ruby-build-system)
7123 (arguments `(#:test-target "spec"))
7124 (native-inputs
7125 `(("bundler" ,bundler)
7126 ("ruby-rspec" ,ruby-rspec)
7127 ("ruby-cane" ,ruby-cane)
7128 ("ruby-morecane" ,ruby-morecane)))
7129 (propagated-inputs
7130 `(("ruby-afm" ,ruby-afm)
7131 ("ruby-ascii85" ,ruby-ascii85)
7132 ("ruby-hashery" ,ruby-hashery)
7133 ("ruby-rc4" ,ruby-rc4)
7134 ("ruby-ttfunk" ,ruby-ttfunk)))
7135 (home-page "https://github.com/yob/pdf-reader")
7136 (synopsis "PDF parser in Ruby")
7137 (description "The PDF::Reader library implements a PDF parser conforming as
7138 much as possible to the PDF specification from Adobe. It provides programmatic
7139 access to the contents of a PDF file with a high degree of flexibility.")
7140 (license license:gpl3+)))
7141
7142 (define-public ruby-pdf-inspector
7143 (package
7144 (name "ruby-pdf-inspector")
7145 (version "1.3.0")
7146 (source (origin
7147 (method url-fetch)
7148 (uri (rubygems-uri "pdf-inspector" version))
7149 (sha256
7150 (base32
7151 "1g853az4xzgqxr5xiwhb76g4sqmjg4s79mm35mp676zjsrwpa47w"))))
7152 (build-system ruby-build-system)
7153 (propagated-inputs
7154 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
7155 (arguments `(#:tests? #f)); No rakefile
7156 (home-page "https://github.com/prawnpdf/pdf-inspector")
7157 (synopsis "Analysis classes for inspecting PDF output")
7158 (description "This library provides a number of PDF::Reader based tools for
7159 use in testing PDF output. Presently, the primary purpose of this tool is to
7160 support the tests found in Prawn, a pure Ruby PDF generation library.")
7161 (license license:gpl3+)))
7162
7163 (define-public ruby-pdf-core
7164 (package
7165 (name "ruby-pdf-core")
7166 (version "0.8.1")
7167 (source (origin
7168 (method url-fetch)
7169 (uri (rubygems-uri "pdf-core" version))
7170 (sha256
7171 (base32
7172 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
7173 (build-system ruby-build-system)
7174 (arguments
7175 ; No test target
7176 `(#:tests? #f))
7177 (home-page "https://github.com/prawnpdf/pdf-core")
7178 (synopsis "Low level PDF features for Prawn")
7179 (description "This is an experimental gem that extracts low-level PDF
7180 functionality from Prawn.")
7181 (license license:gpl3+)))
7182
7183 (define-public ruby-prawn
7184 (package
7185 (name "ruby-prawn")
7186 (version "2.2.2")
7187 (source (origin
7188 (method url-fetch)
7189 (uri (rubygems-uri "prawn" version))
7190 (sha256
7191 (base32
7192 "1qdjf1v6sfl44g3rqxlg8k4jrzkwaxgvh2l4xws97a8f3xv4na4m"))))
7193 (build-system ruby-build-system)
7194 (arguments
7195 ; No tests
7196 `(#:tests? #f
7197 #:phases
7198 (modify-phases %standard-phases
7199 (add-before 'build 'fix-dependencies
7200 (lambda _
7201 (substitute* "prawn.gemspec"
7202 (("~> 0.7.0") "~> 0.7"))
7203 #t)))))
7204 (propagated-inputs
7205 `(("ruby-pdf-core" ,ruby-pdf-core)
7206 ("ruby-ttfunk" ,ruby-ttfunk)))
7207 (native-inputs
7208 `(("bundler" ,bundler)
7209 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
7210 ("ruby-rspec" ,ruby-rspec)
7211 ("ruby-simplecov" ,ruby-simplecov)
7212 ("ruby-yard" ,ruby-yard)))
7213 (home-page "http://prawnpdf.org/api-docs/2.0/")
7214 (synopsis "PDF generation for Ruby")
7215 (description "Prawn is a pure Ruby PDF generation library.")
7216 (license license:gpl3+)))
7217
7218 (define-public ruby-prawn-table
7219 (package
7220 (name "ruby-prawn-table")
7221 (version "0.2.2")
7222 (source (origin
7223 (method url-fetch)
7224 (uri (rubygems-uri "prawn-table" version))
7225 (sha256
7226 (base32
7227 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
7228 (build-system ruby-build-system)
7229 (propagated-inputs
7230 `(("ruby-prawn" ,ruby-prawn)
7231 ("ruby-pdf-inspector" ,ruby-pdf-inspector)))
7232 (native-inputs
7233 `(("bundler" ,bundler)
7234 ("ruby-yard" ,ruby-yard)
7235 ("ruby-mocha" ,ruby-mocha)
7236 ("ruby-coderay" ,ruby-coderay)
7237 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
7238 ("ruby-simplecov" ,ruby-simplecov)
7239 ("ruby-rspec-2" ,ruby-rspec-2)))
7240 (arguments
7241 '(;; TODO: 1 test fails
7242 ;; Failure/Error: pdf.page_count.should == 1
7243 ;; expected: 1
7244 ;; got: 2 (using ==)
7245 ;; # ./spec/table_spec.rb:1308
7246 ;;
7247 ;; 225 examples, 1 failure
7248 #:tests? #f
7249 #:phases
7250 (modify-phases %standard-phases
7251 (add-before 'check 'patch-gemspec
7252 (lambda _
7253 (substitute* "prawn-table.gemspec"
7254 ;; Loosen the requirement for pdf-inspector
7255 (("~> 1\\.1\\.0") ">= 0")
7256 ;; Loosen the requirement for pdf-reader
7257 (("~> 1\\.2") ">= 0"))))
7258 (replace 'check
7259 (lambda* (#:key tests? #:allow-other-keys)
7260 (when tests?
7261 (invoke "rspec"))
7262 #t)))))
7263 (home-page "https://github.com/prawnpdf/prawn-table")
7264 (synopsis "Tables support for Prawn")
7265 (description "This gem provides tables support for Prawn.")
7266 (license license:gpl3+)))
7267
7268 (define-public ruby-kramdown
7269 (package
7270 (name "ruby-kramdown")
7271 (version "1.17.0")
7272 (source (origin
7273 (method url-fetch)
7274 (uri (rubygems-uri "kramdown" version))
7275 (sha256
7276 (base32
7277 "1n1c4jmrh5ig8iv1rw81s4mw4xsp4v97hvf8zkigv4hn5h542qjq"))))
7278 (build-system ruby-build-system)
7279 (arguments `(#:tests? #f)); FIXME: some test failures
7280 (native-inputs
7281 `(("ruby-prawn" ,ruby-prawn)
7282 ("ruby-prawn-table" ,ruby-prawn-table)))
7283 (home-page "https://kramdown.gettalong.org/")
7284 (synopsis "Markdown parsing and converting library")
7285 (description "Kramdown is a library for parsing and converting a superset
7286 of Markdown. It is completely written in Ruby, supports standard Markdown
7287 (with some minor modifications) and various extensions that have been made
7288 popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
7289 (license license:expat)))
7290
7291 (define-public ruby-http-parser.rb
7292 (package
7293 (name "ruby-http-parser.rb")
7294 (version "0.6.0")
7295 (source
7296 (origin
7297 (method url-fetch)
7298 (uri (rubygems-uri "http_parser.rb" version))
7299 (sha256
7300 (base32
7301 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
7302 (build-system ruby-build-system)
7303 (arguments
7304 ;; No tests
7305 `(#:tests? #f))
7306 (native-inputs
7307 `(("ruby-rake-compiler" ,ruby-rake-compiler)
7308 ("ruby-rspec" ,ruby-rspec)))
7309 (home-page "https://github.com/tmm1/http_parser.rb")
7310 (synopsis "HTTP parser un Ruby")
7311 (description "This gem is a simple callback-based HTTP request/response
7312 parser for writing http servers, clients and proxies.")
7313 (license license:expat)))
7314
7315 (define-public ruby-em-websocket
7316 (package
7317 (name "ruby-em-websocket")
7318 (version "0.5.1")
7319 (source
7320 (origin
7321 (method url-fetch)
7322 (uri (rubygems-uri "em-websocket" version))
7323 (sha256
7324 (base32
7325 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
7326 (build-system ruby-build-system)
7327 (arguments
7328 ;; No tests
7329 `(#:tests? #f))
7330 (propagated-inputs
7331 `(("ruby-eventmachine" ,ruby-eventmachine)
7332 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
7333 (native-inputs
7334 `(("bundler" ,bundler)
7335 ("ruby-rspec" ,ruby-rspec)))
7336 (home-page "https://github.com/igrigorik/em-websocket")
7337 (synopsis "EventMachine based WebSocket server")
7338 (description "Em-websocket is an EventMachine based WebSocket server
7339 implementation.")
7340 (license license:expat)))
7341
7342 (define-public ruby-rouge
7343 (package
7344 (name "ruby-rouge")
7345 (version "3.2.1")
7346 (source (origin
7347 (method url-fetch)
7348 (uri (rubygems-uri "rouge" version))
7349 (sha256
7350 (base32
7351 "0h79gn2wmn1wix2d27lgiaimccyj8gvizrllyym500pir408x62f"))))
7352 (build-system ruby-build-system)
7353 (arguments `(#:tests? #f)); No rakefile
7354 (home-page "http://rouge.jneen.net/")
7355 (synopsis "Code highlighter")
7356 (description "Rouge is a code highlighter written in Ruby. It supports more
7357 than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
7358 is compatible with stylesheets designed for pygments.")
7359 (license (list
7360 ;; rouge is licensed under expat
7361 license:expat
7362 ;; pygments is licensed under bsd-2
7363 license:bsd-2))))
7364
7365 (define-public ruby-rouge-2
7366 (package
7367 (inherit ruby-rouge)
7368 (version "2.2.1")
7369 (source (origin
7370 (method url-fetch)
7371 (uri (rubygems-uri "rouge" version))
7372 (sha256
7373 (base32
7374 "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs"))))))
7375
7376 (define-public ruby-hashie
7377 (package
7378 (name "ruby-hashie")
7379 (version "3.6.0")
7380 (source (origin
7381 (method url-fetch)
7382 (uri (rubygems-uri "hashie" version))
7383 (sha256
7384 (base32
7385 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
7386 (build-system ruby-build-system)
7387 (native-inputs
7388 `(("bundler" ,bundler)))
7389 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
7390 (home-page "https://github.com/intridea/hashie")
7391 (synopsis "Extensions to Ruby Hashes")
7392 (description "Hashie is a collection of classes and mixins that make Ruby
7393 hashes more powerful.")
7394 (license license:expat)))
7395
7396 (define-public ruby-heredoc-unindent
7397 (package
7398 (name "ruby-heredoc-unindent")
7399 (version "1.2.0")
7400 (source (origin
7401 (method url-fetch)
7402 (uri (rubygems-uri "heredoc_unindent" version))
7403 (sha256
7404 (base32
7405 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
7406 (build-system ruby-build-system)
7407 (native-inputs
7408 `(("ruby-hoe" ,ruby-hoe)))
7409 (home-page "https://github.com/adrianomitre/heredoc_unindent")
7410 (synopsis "Heredoc indentation cleaner")
7411 (description "This gem removes common margin from indented strings, such
7412 as the ones produced by indented heredocs. In other words, it strips out
7413 leading whitespace chars at the beginning of each line, but only as much as
7414 the line with the smallest margin.
7415
7416 It is acknowledged that many strings defined by heredocs are just code and
7417 fact is that most parsers are insensitive to indentation. If, however, the
7418 strings are to be used otherwise, be it for printing or testing, the extra
7419 indentation will probably be an issue and hence this gem.")
7420 (license license:expat)))
7421
7422 (define-public ruby-safe-yaml
7423 (package
7424 (name "ruby-safe-yaml")
7425 (version "1.0.4")
7426 (source
7427 (origin
7428 ;; TODO Fetch from the git repository so a patch can be applied
7429 (method git-fetch)
7430 (uri (git-reference
7431 (url "https://github.com/dtao/safe_yaml.git")
7432 (commit version)))
7433 (file-name (git-file-name name version))
7434 (sha256
7435 (base32
7436 "1wnln8xdy8g6kwdj4amm8773xwffqxpf2sxslk6jjh2wxsy1lrig"))
7437 (patches
7438 (search-patches "ruby-safe-yaml-add-require-time.patch"))))
7439 (build-system ruby-build-system)
7440 (native-inputs
7441 `(("ruby-rspec" ,ruby-rspec)
7442 ("ruby-hashie" ,ruby-hashie)
7443 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
7444 (arguments
7445 '(#:test-target "spec"
7446 #:phases
7447 (modify-phases %standard-phases
7448 (add-before 'check 'set-TZ
7449 (lambda _
7450 ;; This test is dependent on the timezone
7451 ;; spec/transform/to_date_spec.rb:35
7452 ;; # SafeYAML::Transform::ToDate converts times to the local
7453 ;; timezone
7454 (setenv "TZ" "UTC-11")
7455 #t)))))
7456 (home-page "https://github.com/dtao/safe_yaml")
7457 (synopsis "YAML parser")
7458 (description "The SafeYAML gem provides an alternative implementation of
7459 YAML.load suitable for accepting user input in Ruby applications.")
7460 (license license:expat)))
7461
7462 (define-public ruby-mercenary
7463 (package
7464 (name "ruby-mercenary")
7465 (version "0.3.6")
7466 (source (origin
7467 (method url-fetch)
7468 (uri (rubygems-uri "mercenary" version))
7469 (sha256
7470 (base32
7471 "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"))))
7472 (build-system ruby-build-system)
7473 (arguments `(#:test-target "spec"))
7474 (native-inputs
7475 `(("bundler" ,bundler)))
7476 (home-page "https://github.com/jekyll/mercenary")
7477 (synopsis "Command-line apps library in Ruby")
7478 (description "Mercenary is a lightweight and flexible library for writing
7479 command-line apps in Ruby.")
7480 (license license:expat)))
7481
7482 (define-public ruby-liquid
7483 (package
7484 (name "ruby-liquid")
7485 (version "4.0.0")
7486 (source (origin
7487 (method url-fetch)
7488 (uri (rubygems-uri "liquid" version))
7489 (sha256
7490 (base32
7491 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
7492 (build-system ruby-build-system)
7493 (arguments `(#:tests? #f)); No rakefile
7494 (home-page "https://shopify.github.io/liquid/")
7495 (synopsis "Template language")
7496 (description "Liquid is a template language written in Ruby. It is used
7497 to load dynamic content on storefronts.")
7498 (license license:expat)))
7499
7500 (define-public ruby-forwardable-extended
7501 (package
7502 (name "ruby-forwardable-extended")
7503 (version "2.6.0")
7504 (source (origin
7505 (method url-fetch)
7506 (uri (rubygems-uri "forwardable-extended" version))
7507 (sha256
7508 (base32
7509 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
7510 (build-system ruby-build-system)
7511 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
7512 (home-page "https://github.com/envygeeks/forwardable-extended")
7513 (synopsis "Delegation to hashes and instance variables in Forwardable")
7514 (description "Forwardable Extended provides more @code{Forwardable}
7515 methods for your source as @code{Forwardable::Extended}.")
7516 (license license:expat)))
7517
7518 (define-public ruby-pathutil
7519 (package
7520 (name "ruby-pathutil")
7521 (version "0.16.1")
7522 (source (origin
7523 (method url-fetch)
7524 (uri (rubygems-uri "pathutil" version))
7525 (sha256
7526 (base32
7527 "0wc18ms1rzi44lpjychyw2a96jcmgxqdvy2949r4vvb5f4p0lgvz"))))
7528 (build-system ruby-build-system)
7529 (propagated-inputs
7530 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
7531 (native-inputs
7532 `(("bundler" ,bundler)
7533 ("ruby-rspec" ,ruby-rspec)))
7534 ;; Fails with: cannot load such file --
7535 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
7536 (arguments `(#:tests? #f))
7537 (home-page "https://github.com/envygeeks/pathutil")
7538 (synopsis "Extended implementation of Pathname")
7539 (description "Pathutil tries to be a faster pure Ruby implementation of
7540 Pathname.")
7541 (license license:expat)))
7542
7543 (define-public jekyll
7544 (package
7545 (name "jekyll")
7546 (version "3.8.3")
7547 (source (origin
7548 (method url-fetch)
7549 (uri (rubygems-uri "jekyll" version))
7550 (sha256
7551 (base32
7552 "1iw90wihk9dscgmppf5v6lysg3kjmnx50mjyl4gghkdb4spw97xk"))))
7553 (build-system ruby-build-system)
7554 (arguments
7555 ;; No rakefile, but a test subdirectory
7556 `(#:tests? #f
7557 #:phases
7558 (modify-phases %standard-phases
7559 (add-before 'build 'fix-i18n
7560 (lambda _
7561 (substitute* ".gemspec"
7562 (("~> 0.7") ">= 0.7"))
7563 #t)))))
7564 (propagated-inputs
7565 `(("ruby-addressable" ,ruby-addressable)
7566 ("ruby-colorator" ,ruby-colorator)
7567 ("ruby-em-websocket" ,ruby-em-websocket)
7568 ("ruby-i18n" ,ruby-i18n)
7569 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
7570 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
7571 ("ruby-kramdown" ,ruby-kramdown)
7572 ("ruby-liquid" ,ruby-liquid)
7573 ("ruby-mercenary" ,ruby-mercenary)
7574 ("ruby-pathutil" ,ruby-pathutil)
7575 ("ruby-rouge" ,ruby-rouge-2)
7576 ("ruby-safe-yaml" ,ruby-safe-yaml)))
7577 (home-page "https://jekyllrb.com/")
7578 (synopsis "Static site generator")
7579 (description "Jekyll is a simple, blog aware, static site generator.")
7580 (license license:expat)))
7581
7582 (define-public ruby-jekyll-paginate-v2
7583 (package
7584 (name "ruby-jekyll-paginate-v2")
7585 (version "2.0.0")
7586 (source (origin
7587 (method url-fetch)
7588 (uri (rubygems-uri "jekyll-paginate-v2" version))
7589 (sha256
7590 (base32
7591 "154bfpyml6abxww9868hhyfvxasl8qhsc5zy2q30c7dxaj0igdib"))))
7592 (build-system ruby-build-system)
7593 (propagated-inputs
7594 `(("jekyll" ,jekyll)))
7595 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
7596 (synopsis "Pagination Generator for Jekyll 3")
7597 (description "The Pagination Generator forms the core of the pagination
7598 logic in Jekyll. It calculates and generates the pagination pages.")
7599 (license license:expat)))
7600
7601 (define-public ruby-faraday
7602 (package
7603 (name "ruby-faraday")
7604 (version "0.15.4")
7605 (source
7606 (origin
7607 (method url-fetch)
7608 (uri (rubygems-uri "faraday" version))
7609 (sha256
7610 (base32
7611 "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0"))))
7612 (build-system ruby-build-system)
7613 (arguments
7614 '(#:tests? #f))
7615 (propagated-inputs
7616 `(("ruby-multipart-post" ,ruby-multipart-post)))
7617 (synopsis "Ruby HTTP/REST API client library")
7618 (description
7619 "Faraday is a HTTP/REST API client library which provides a common
7620 interface over different adapters.")
7621 (home-page "https://github.com/lostisland/faraday")
7622 (license license:expat)))
7623
7624 (define-public ruby-nio4r
7625 (package
7626 (name "ruby-nio4r")
7627 (version "2.3.1")
7628 (source
7629 (origin
7630 (method url-fetch)
7631 (uri (rubygems-uri "nio4r" version))
7632 (sha256
7633 (base32
7634 "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr"))))
7635 (build-system ruby-build-system)
7636 (arguments
7637 '(#:phases
7638 (modify-phases %standard-phases
7639 (add-after 'unpack 'remove-unnecessary-dependencies
7640 (lambda _
7641 (substitute* "spec/spec_helper.rb"
7642 ;; Coveralls is for uploading test coverage information to an
7643 ;; online service, and thus unnecessary for building the Guix
7644 ;; package
7645 (("require \"coveralls\"") "")
7646 (("Coveralls\\.wear!") "")
7647 ;; Remove rspec/retry as we are not retrying the tests
7648 (("require \"rspec/retry\"") "")
7649 (("config\\.display_try_failure_messages = true") "")
7650 (("config\\.verbose_retry = true") ""))
7651 #t))
7652 (add-before 'check 'compile
7653 (lambda _
7654 (invoke "rake" "compile")
7655 #t))
7656 (replace 'check
7657 (lambda* (#:key tests? #:allow-other-keys)
7658 (when tests?
7659 (invoke "rspec"))
7660 #t)))))
7661 (native-inputs
7662 `(("bundler" ,bundler)
7663 ("ruby-rake-compiler" ,ruby-rake-compiler)
7664 ("ruby-rspec" ,ruby-rspec)
7665 ("ruby-rubocop" ,ruby-rubocop)))
7666 (synopsis "New I/O for Ruby")
7667 (description
7668 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
7669 for scalable network clients and servers.")
7670 (home-page "https://github.com/socketry/nio4r")
7671 (license license:expat)))
7672
7673 (define-public ruby-globalid
7674 (package
7675 (name "ruby-globalid")
7676 (version "0.4.2")
7677 (source
7678 (origin
7679 (method url-fetch)
7680 (uri (rubygems-uri "globalid" version))
7681 (sha256
7682 (base32
7683 "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"))))
7684 (build-system ruby-build-system)
7685 (arguments
7686 '(;; No included tests
7687 #:tests? #f))
7688 (propagated-inputs
7689 `(("ruby-activesupport" ,ruby-activesupport)))
7690 (synopsis "Generate URIs idenfitying model instances in Ruby")
7691 (description
7692 "@code{GlobalID} provides a way to generate URIs from a model in Ruby that
7693 uniquely identify it.")
7694 (home-page "https://rubyonrails.org/")
7695 (license license:expat)))
7696
7697 (define-public ruby-sprockets
7698 (package
7699 (name "ruby-sprockets")
7700 (version "3.7.2")
7701 (source
7702 (origin
7703 (method url-fetch)
7704 (uri (rubygems-uri "sprockets" version))
7705 (sha256
7706 (base32
7707 "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"))))
7708 (build-system ruby-build-system)
7709 (arguments
7710 '(;; No included tests
7711 #:tests? #f))
7712 (propagated-inputs
7713 `(("ruby-concurrent" ,ruby-concurrent)
7714 ("ruby-rack" ,ruby-rack)))
7715 (synopsis "Sprockets is a Rack-based asset packaging system")
7716 (description
7717 "Sprockets is a Rack-based asset packaging system that concatenates and
7718 serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
7719 (home-page "https://github.com/rails/sprockets")
7720 (license license:expat)))