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