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