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