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