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