gnu: Add ruby-minitest-reporters.
[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
e2c9a9cc
CB
2469(define-public ruby-minitest-reporters
2470 (package
2471 (name "ruby-minitest-reporters")
2472 (version "1.3.6")
2473 (source
2474 (origin
2475 (method url-fetch)
2476 (uri (rubygems-uri "minitest-reporters" version))
2477 (sha256
2478 (base32
2479 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
2480 (build-system ruby-build-system)
2481 (arguments
2482 '(#:phases
2483 (modify-phases %standard-phases
2484 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
2485 ;; including it as an input can lead to circular dependencies.
2486 (add-after 'unpack 'remove-rubocop-from-Rakefile
2487 (lambda _
2488 (substitute* "Rakefile"
2489 (("require 'rubocop/rake\\_task'") "")
2490 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
2491 #t))
2492 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
2493 (lambda _
2494 (substitute* "minitest-reporters.gemspec"
2495 ((".*%q<rubocop>.*") "\n"))
2496 #t)))))
2497 (propagated-inputs
2498 `(("ruby-ansi" ,ruby-ansi)
2499 ("ruby-builder" ,ruby-builder)
2500 ("ruby-minitest" ,ruby-minitest)
2501 ("ruby-progressbar" ,ruby-progressbar)))
2502 (native-inputs
2503 `(("bundler" ,bundler)
2504 ("ruby-maruku" ,ruby-maruku)))
2505 (synopsis "Enhanced reporting for Minitest tests")
2506 (description
2507 "@code{minitest/reporters} provides a custom Minitest runner to improve
2508how the test state is reported. A number of different reporters are
2509available, including a spec reporter, progress bar reporter, a HTML
2510reporter.")
2511 (home-page "https://github.com/kern/minitest-reporters")
2512 (license license:expat)))
2513
e582fa93
BW
2514(define-public ruby-minitest-rg
2515 (package
2516 (name "ruby-minitest-rg")
2517 (version "5.2.0")
2518 (source
2519 (origin
2520 (method url-fetch)
2521 (uri (rubygems-uri "minitest-rg" version))
2522 (sha256
2523 (base32
2524 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
2525 (build-system ruby-build-system)
2526 (arguments
2527 ;; Some tests fail even outside Guix, so disable tests.
2528 ;; https://github.com/blowmage/minitest-rg/issues/12
2529 ;; https://github.com/blowmage/minitest-rg/pull/13
2530 `(#:tests? #f))
2531 (propagated-inputs
2532 `(("ruby-minitest" ,ruby-minitest)))
2533 (synopsis "Coloured output for Minitest")
2534 (description
2535 "@code{minitest-rg} changes the colour of the output from Minitest.")
2536 (home-page "http://blowmage.com/minitest-rg")
2537 (license license:expat)))
2538
2a96dbe6
BW
2539(define-public ruby-minitest-hooks
2540 (package
2541 (name "ruby-minitest-hooks")
eaaf8b12 2542 (version "1.4.2")
2a96dbe6
BW
2543 (source
2544 (origin
2545 (method url-fetch)
2546 (uri (rubygems-uri "minitest-hooks" version))
2547 (sha256
2548 (base32
eaaf8b12 2549 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
2a96dbe6
BW
2550 (build-system ruby-build-system)
2551 (arguments
2552 '(#:test-target "spec"))
2553 (native-inputs
2554 `(("ruby-sequel" ,ruby-sequel)
2555 ("ruby-sqlite3" ,ruby-sqlite3)))
2556 (synopsis "Hooks for the minitest framework")
2557 (description
2558 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
2559@code{around_all} hooks for Minitest. This allows, for instance, running each
2560suite of specs inside a database transaction, running each spec inside its own
2561savepoint inside that transaction. This can significantly speed up testing
2562for specs that share expensive database setup code.")
7bf837fd 2563 (home-page "https://github.com/jeremyevans/minitest-hooks")
2a96dbe6
BW
2564 (license license:expat)))
2565
afbbdf77
DT
2566(define-public ruby-daemons
2567 (package
2568 (name "ruby-daemons")
f03153db 2569 (version "1.2.5")
afbbdf77
DT
2570 (source (origin
2571 (method url-fetch)
e83c6d00 2572 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
2573 (sha256
2574 (base32
f03153db 2575 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
afbbdf77
DT
2576 (build-system ruby-build-system)
2577 (arguments
2578 `(#:tests? #f)) ; no test suite
2579 (synopsis "Daemonize Ruby programs")
2580 (description "Daemons provides a way to wrap existing Ruby scripts to be
2581run as a daemon and to be controlled by simple start/stop/restart commands.")
2582 (home-page "https://github.com/thuehlinger/daemons")
2583 (license license:expat)))
b03eb6ac
CB
2584
2585(define-public ruby-data_uri
2586 (package
2587 (name "ruby-data_uri")
2588 (version "0.1.0")
2589 (source
2590 (origin
2591 (method url-fetch)
2592 (uri (rubygems-uri "data_uri" version))
2593 (sha256
2594 (base32
2595 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
2596 (build-system ruby-build-system)
2597 (synopsis "URI class for parsing data URIs")
2598 (description
2599 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
2600embedded inside a URI. The URI::Data class provides support for parsing these
2601URIs using the normal URI.parse method.")
2602 (home-page "https://github.com/dball/data_uri")
2603 (license license:expat)))
66e20863
DT
2604
2605(define-public ruby-git
2606 (package
2607 (name "ruby-git")
ceaff59e 2608 (version "1.3.0")
66e20863
DT
2609 (source (origin
2610 (method url-fetch)
e83c6d00 2611 (uri (rubygems-uri "git" version))
66e20863
DT
2612 (sha256
2613 (base32
ceaff59e 2614 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
66e20863
DT
2615 (build-system ruby-build-system)
2616 (arguments
e83c6d00
DT
2617 `(#:tests? #f ; no tests
2618 #:phases (modify-phases %standard-phases
2619 (add-after 'install 'patch-git-binary
2620 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
2621 ;; Make the default git binary an absolute path to the
2622 ;; store.
e83c6d00
DT
2623 (let ((git (string-append (assoc-ref inputs "git")
2624 "/bin/git"))
3cb3fa67
CB
2625 (config (string-append
2626 (assoc-ref outputs "out")
2627 "/lib/ruby/vendor_ruby/gems/git-"
2628 ,version "/lib/git/config.rb")))
e83c6d00 2629 (substitute* (list config)
66e20863
DT
2630 (("'git'")
2631 (string-append "'" git "'")))
e83c6d00 2632 #t))))))
66e20863
DT
2633 (inputs
2634 `(("git" ,git)))
2635 (synopsis "Ruby wrappers for Git")
2636 (description "Ruby/Git is a Ruby library that can be used to create, read
2637and manipulate Git repositories by wrapping system calls to the git binary.")
2638 (home-page "https://github.com/schacon/ruby-git")
2639 (license license:expat)))
71d3e2c2
DT
2640
2641(define-public ruby-slop
2642 (package
2643 (name "ruby-slop")
d14e5eaa 2644 (version "4.5.0")
71d3e2c2
DT
2645 (source (origin
2646 (method url-fetch)
e83c6d00 2647 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
2648 (sha256
2649 (base32
d14e5eaa 2650 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
71d3e2c2
DT
2651 (build-system ruby-build-system)
2652 (native-inputs
2653 `(("ruby-minitest" ,ruby-minitest)))
2654 (synopsis "Ruby command line option parser")
2655 (description "Slop provides a Ruby domain specific language for gathering
2656options and parsing command line flags.")
2657 (home-page "https://github.com/leejarvis/slop")
2658 (license license:expat)))
e778a549 2659
5337f8b9
DT
2660(define-public ruby-slop-3
2661 (package (inherit ruby-slop)
2662 (version "3.6.0")
2663 (source (origin
2664 (method url-fetch)
2665 (uri (rubygems-uri "slop" version))
2666 (sha256
2667 (base32
2668 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
2669
e778a549
DT
2670(define-public ruby-multipart-post
2671 (package
2672 (name "ruby-multipart-post")
2673 (version "2.0.0")
2674 (source (origin
2675 (method url-fetch)
e83c6d00 2676 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
2677 (sha256
2678 (base32
e83c6d00 2679 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
2680 (build-system ruby-build-system)
2681 (native-inputs
2682 `(("bundler" ,bundler)))
2683 (synopsis "Multipart POST library for Ruby")
2684 (description "Multipart-Post Adds multipart POST capability to Ruby's
2685net/http library.")
2686 (home-page "https://github.com/nicksieger/multipart-post")
2687 (license license:expat)))
f8da3af0 2688
9a97e7ce
CB
2689(define-public ruby-multi-json
2690 (package
2691 (name "ruby-multi-json")
1b6f5475 2692 (version "1.13.1")
9a97e7ce
CB
2693 (source
2694 (origin
2695 (method url-fetch)
1b6f5475
BW
2696 ;; Tests are not distributed at rubygems.org so download from GitHub
2697 ;; instead.
2698 (uri (string-append "https://github.com/intridea/multi_json/archive/v"
2699 version ".tar.gz"))
2700 (file-name (string-append name "-" version ".tar.gz"))
9a97e7ce
CB
2701 (sha256
2702 (base32
1b6f5475 2703 "1s64xqvrnrxmb59v6b2kchnisawg5ai9ky1w60dy6z6ws9la1xv4"))))
9a97e7ce
CB
2704 (build-system ruby-build-system)
2705 (arguments
1b6f5475
BW
2706 `(#:phases
2707 (modify-phases %standard-phases
2708 (add-after 'unpack 'remove-signing-key-reference
2709 (lambda _
2710 (substitute* "multi_json.gemspec"
2711 ((".*spec.signing_key.*") ""))
2712 #t)))))
2713 (native-inputs
2714 `(("bundler" ,bundler)
2715 ("ruby-rspec" ,ruby-rspec)
2716 ("ruby-yard" ,ruby-yard)
2717 ("ruby-json-pure" ,ruby-json-pure)
2718 ("ruby-oj" ,ruby-oj)
2719 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
9a97e7ce
CB
2720 (synopsis "Common interface to multiple JSON libraries for Ruby")
2721 (description
2722 "This package provides a common interface to multiple JSON libraries,
2723including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
2724NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
1b6f5475 2725 (home-page "https://github.com/intridea/multi_json")
9a97e7ce
CB
2726 (license license:expat)))
2727
5edef88b
BW
2728(define-public ruby-multi-test
2729 (package
2730 (name "ruby-multi-test")
2731 (version "0.1.2")
2732 (source
2733 (origin
2734 (method url-fetch)
2735 (uri (rubygems-uri "multi_test" version))
2736 (sha256
2737 (base32
2738 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
2739 (build-system ruby-build-system)
2740 (arguments
2741 '(;; Tests require different sets of specific gem versions to be available,
2742 ;; and there is no gemfile that specifies the newest versions of
2743 ;; dependencies to be tested.
2744 #:tests? #f))
2745 (synopsis
2746 "Interface to testing libraries loaded into a running Ruby process")
2747 (description
2748 "@code{multi_test} provides a uniform interface onto whatever testing
2749libraries that have been loaded into a running Ruby process to help control
2750rogue test/unit/autorun requires.")
2751 (home-page "https://github.com/cucumber/multi_test")
9a97e7ce
CB
2752 (license license:expat)))
2753
f8da3af0
DT
2754(define-public ruby-arel
2755 (package
2756 (name "ruby-arel")
8e5ff250 2757 (version "8.0.0")
f8da3af0
DT
2758 (source (origin
2759 (method url-fetch)
2760 (uri (rubygems-uri "arel" version))
2761 (sha256
2762 (base32
8e5ff250 2763 "0nw0qbc6ph625p6n3maqq9f527vz3nbl0hk72fbyka8jzsmplxzl"))))
f8da3af0
DT
2764 (build-system ruby-build-system)
2765 (arguments '(#:tests? #f)) ; no tests
2766 (home-page "https://github.com/rails/arel")
2767 (synopsis "SQL AST manager for Ruby")
6f23e2fb
TGR
2768 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
2769Ruby. It simplifies the generation of complex SQL queries and adapts to
2770various relational database implementations.")
f8da3af0 2771 (license license:expat)))
616eaead
DT
2772
2773(define-public ruby-minitar
bfaf8efd
BW
2774 ;; We package from the GitHub source to fix the security issue reported at
2775 ;; https://github.com/halostatue/minitar/issues/16.
2776 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
2777 (package
2778 (name "ruby-minitar")
2779 (version (string-append "0.5.4-1." (string-take commit 8)))
2780 (source
2781 (origin
2782 (method git-fetch)
2783 (uri (git-reference
2784 (url "https://github.com/halostatue/minitar.git")
2785 (commit commit)))
2786 (file-name (string-append name "-" version "-checkout"))
2787 (sha256
2788 (base32
2789 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
2790 (build-system ruby-build-system)
2791 (arguments
2792 '(#:tests? #f)) ; missing a gemspec
2793 (synopsis "Ruby library and utility for handling tar archives")
2794 (description
2795 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
616eaead 2796that provides the ability to deal with POSIX tar archive files.")
bfaf8efd
BW
2797 (home-page "http://www.github.com/atoulme/minitar")
2798 (license (list license:gpl2+ license:ruby)))))
bea1c0e2
DT
2799
2800(define-public ruby-mini-portile
2801 (package
2802 (name "ruby-mini-portile")
2803 (version "0.6.2")
2804 (source
2805 (origin
2806 (method url-fetch)
2807 (uri (rubygems-uri "mini_portile" version))
2808 (sha256
2809 (base32
2810 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
2811 (build-system ruby-build-system)
2812 (arguments
2813 '(#:tests? #f)) ; tests require network access
2814 (synopsis "Ports system for Ruby developers")
2815 (description "Mini-portile is a port/recipe system for Ruby developers.
2816It provides a standard way to compile against specific versions of libraries
2817to reproduce user environments.")
7bf837fd 2818 (home-page "https://github.com/flavorjones/mini_portile")
bea1c0e2 2819 (license license:expat)))
e920bfca 2820
d000fc92
BW
2821(define-public ruby-mini-portile-2
2822 (package (inherit ruby-mini-portile)
26f4a377 2823 (version "2.2.0")
d000fc92
BW
2824 (source (origin
2825 (method url-fetch)
2826 (uri (rubygems-uri "mini_portile2" version))
2827 (sha256
2828 (base32
26f4a377 2829 "0g5bpgy08q0nc0anisg3yvwc1gc3inl854fcrg48wvg7glqd6dpm"))))))
d000fc92 2830
e920bfca
DT
2831(define-public ruby-nokogiri
2832 (package
2833 (name "ruby-nokogiri")
efb94fda 2834 (version "1.8.0")
e920bfca
DT
2835 (source (origin
2836 (method url-fetch)
2837 (uri (rubygems-uri "nokogiri" version))
2838 (sha256
2839 (base32
efb94fda 2840 "1nffsyx1xjg6v5n9rrbi8y1arrcx2i5f21cp6clgh9iwiqkr7rnn"))))
e920bfca
DT
2841 (build-system ruby-build-system)
2842 (arguments
2843 ;; Tests fail because Nokogiri can only test with an installed extension,
2844 ;; and also because many test framework dependencies are missing.
7b01f250 2845 `(#:tests? #f
e920bfca
DT
2846 #:gem-flags (list "--" "--use-system-libraries"
2847 (string-append "--with-xml2-include="
2848 (assoc-ref %build-inputs "libxml2")
5e7f1b0b
BW
2849 "/include/libxml2" ))
2850 #:phases
2851 (modify-phases %standard-phases
7b01f250
BW
2852 (add-before 'build 'patch-extconf
2853 ;; 'pkg-config' is not included in the GEM_PATH during
2854 ;; installation, so we add it directly to the load path.
2855 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2856 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
7b01f250
BW
2857 (substitute* "ext/nokogiri/extconf.rb"
2858 (("gem 'pkg-config'.*")
2859 (string-append "$:.unshift '"
3cb3fa67 2860 pkg-config "/lib/ruby/vendor_ruby"
7b01f250
BW
2861 "/gems/pkg-config-"
2862 ,(package-version ruby-pkg-config)
2863 "/lib'\n"))))
5e7f1b0b 2864 #t)))))
e920bfca 2865 (native-inputs
7b01f250 2866 `(("ruby-hoe" ,ruby-hoe)))
e920bfca
DT
2867 (inputs
2868 `(("zlib" ,zlib)
2869 ("libxml2" ,libxml2)
2870 ("libxslt" ,libxslt)))
2871 (propagated-inputs
7b01f250
BW
2872 `(("ruby-mini-portile" ,ruby-mini-portile-2)
2873 ("ruby-pkg-config" ,ruby-pkg-config)))
e920bfca
DT
2874 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
2875 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
2876both CSS3 selector and XPath 1.0 support.")
2877 (home-page "http://www.nokogiri.org/")
2878 (license license:expat)))
30b0b725
DT
2879
2880(define-public ruby-method-source
2881 (package
2882 (name "ruby-method-source")
c8355037 2883 (version "0.9.0")
30b0b725
DT
2884 (source
2885 (origin
2886 (method url-fetch)
2887 (uri (rubygems-uri "method_source" version))
2888 (sha256
2889 (base32
c8355037 2890 "0xqj21j3vfq4ldia6i2akhn2qd84m0iqcnsl49kfpq3xk6x0dzgn"))))
30b0b725 2891 (build-system ruby-build-system)
c8355037
BW
2892 (arguments
2893 `(#:test-target "spec"))
30b0b725 2894 (native-inputs
c8355037 2895 `(("ruby-rspec" ,ruby-rspec)
30b0b725
DT
2896 ("git" ,git)))
2897 (synopsis "Retrieve the source code for Ruby methods")
2898 (description "Method_source retrieves the source code for Ruby methods.
2899Additionally, it can extract source code from Proc and Lambda objects or just
2900extract comments.")
2901 (home-page "https://github.com/banister/method_source")
2902 (license license:expat)))
2e3fdea4
DT
2903
2904(define-public ruby-coderay
2905 (package
2906 (name "ruby-coderay")
5cf0997a 2907 (version "1.1.2")
2e3fdea4
DT
2908 (source
2909 (origin
2910 (method url-fetch)
2911 (uri (rubygems-uri "coderay" version))
2912 (sha256
2913 (base32
5cf0997a 2914 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
2e3fdea4
DT
2915 (build-system ruby-build-system)
2916 (arguments
2917 '(#:tests? #f)) ; missing test files
2918 (synopsis "Ruby syntax highlighting library")
2919 (description "Coderay is a Ruby library that provides syntax highlighting
2920for select languages.")
2921 (home-page "http://coderay.rubychan.de")
2922 (license license:expat)))
96e76083 2923
54993457
CB
2924(define-public ruby-parser
2925 (package
2926 (name "ruby-parser")
2927 (version "2.6.0.0")
2928 (source
2929 (origin
2930 (method url-fetch)
2931 (uri (rubygems-uri "parser" version))
2932 (sha256
2933 (base32
2934 "1hhz2k5417vr2k1llwqgjdnmyrhlpqicy0y2arr6r1gp04fg9wlm"))))
2935 (build-system ruby-build-system)
2936 (native-inputs
2937 `(("bundler" ,bundler)
2938 ("ruby-cliver" ,ruby-cliver)
2939 ("ruby-simplecov" ,ruby-simplecov)
2940 ("ruby-racc" ,ruby-racc)))
2941 (inputs
2942 `(("ragel" ,ragel)))
2943 (propagated-inputs
2944 `(("ruby-ast" ,ruby-ast)))
2945 (synopsis "Ruby parser written in pure Ruby")
2946 (description
2947 "This package provides a Ruby parser written in pure Ruby.")
2948 (home-page "https://github.com/whitequark/parser")
2949 (license license:expat)))
2950
268643b9
CB
2951(define-public ruby-progress_bar
2952 (package
2953 (name "ruby-progress_bar")
2954 (version "1.1.0")
2955 (source
2956 (origin
2957 (method url-fetch)
2958 (uri (rubygems-uri "progress_bar" version))
2959 (sha256
2960 (base32
2961 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
2962 (build-system ruby-build-system)
2963 (arguments
2964 '(#:test-target "spec"))
2965 (propagated-inputs
2966 `(("ruby-highline" ,ruby-highline)
2967 ("ruby-options" ,ruby-options)))
2968 (native-inputs
2969 `(("bundler" ,bundler)
2970 ("ruby-rspec" ,ruby-rspec)
2971 ("ruby-timecop" ,ruby-timecop)))
2972 (synopsis
2973 "Ruby library for displaying progress bars")
2974 (description
2975 "ProgressBar is a simple library for displaying progress bars. The
2976maximum value is configurable, and additional information can be displayed
2977like the percentage completion, estimated time remaining, elapsed time and
2978rate.")
2979 (home-page "https://github.com/paul/progress_bar")
2980 (license license:wtfpl2)))
2981
158a9253
CB
2982(define-public ruby-progressbar
2983 (package
2984 (name "ruby-progressbar")
2985 (version "1.10.0")
2986 (source
2987 (origin
2988 (method url-fetch)
2989 (uri (rubygems-uri "ruby-progressbar" version))
2990 (sha256
2991 (base32
2992 "1cv2ym3rl09svw8940ny67bav7b2db4ms39i4raaqzkf59jmhglk"))))
2993 (build-system ruby-build-system)
2994 (arguments
2995 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
2996 #:tests? #f))
2997 (synopsis "Text progress bar library for Ruby")
2998 (description
2999 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
3000The output can be customized with a formatting system.")
3001 (home-page "https://github.com/jfelchner/ruby-progressbar")
3002 (license license:expat)))
3003
96e76083
DT
3004(define-public ruby-pry
3005 (package
3006 (name "ruby-pry")
1bf02b20 3007 (version "0.11.3")
96e76083
DT
3008 (source
3009 (origin
3010 (method url-fetch)
3011 (uri (rubygems-uri "pry" version))
3012 (sha256
3013 (base32
1bf02b20 3014 "1mh312k3y94sj0pi160wpia0ps8f4kmzvm505i6bvwynfdh7v30g"))))
96e76083
DT
3015 (build-system ruby-build-system)
3016 (arguments
3017 '(#:tests? #f)) ; no tests
3018 (propagated-inputs
3019 `(("ruby-coderay" ,ruby-coderay)
1960d4fd 3020 ("ruby-method-source" ,ruby-method-source)))
96e76083
DT
3021 (synopsis "Ruby REPL")
3022 (description "Pry is an IRB alternative and runtime developer console for
3023Ruby. It features syntax highlighting, a plugin architecture, runtime
3024invocation, and source and documentation browsing.")
2f3800e5 3025 (home-page "https://pryrepl.org")
96e76083 3026 (license license:expat)))
1415792a 3027
051deeb7
RW
3028(define-public ruby-guard
3029 (package
3030 (name "ruby-guard")
3031 (version "2.13.0")
3032 (source (origin
3033 (method url-fetch)
3034 ;; The gem does not include a Rakefile, nor does it contain a
3035 ;; gemspec file, nor does it come with the tests. This is why
3036 ;; we fetch the tarball from Github.
3037 (uri (string-append "https://github.com/guard/guard/archive/v"
3038 version ".tar.gz"))
3039 (file-name (string-append name "-" version ".tar.gz"))
3040 (sha256
3041 (base32
3042 "1hwj0yi17k6f5axrm0k2bb7fq71dlp0zfywmd7pij9iimbppcca0"))))
3043 (build-system ruby-build-system)
3044 (arguments
3045 `(#:tests? #f ; tests require cucumber
3046 #:phases
3047 (modify-phases %standard-phases
3048 (add-after 'unpack 'remove-git-ls-files
3049 (lambda* (#:key outputs #:allow-other-keys)
3050 (substitute* "guard.gemspec"
3051 (("git ls-files -z") "find . -type f -print0"))
3052 #t))
3053 (replace 'build
3054 (lambda _
9923d5a4 3055 (invoke "gem" "build" "guard.gemspec"))))))
051deeb7
RW
3056 (propagated-inputs
3057 `(("ruby-formatador" ,ruby-formatador)
3058 ("ruby-listen" ,ruby-listen)
3059 ("ruby-lumberjack" ,ruby-lumberjack)
3060 ("ruby-nenv" ,ruby-nenv)
3061 ("ruby-notiffany" ,ruby-notiffany)
3062 ("ruby-pry" ,ruby-pry)
3063 ("ruby-shellany" ,ruby-shellany)
3064 ("ruby-thor" ,ruby-thor)))
3065 (native-inputs
3066 `(("bundler" ,bundler)
3067 ("ruby-rspec" ,ruby-rspec)))
3068 (synopsis "Tool to handle events on file system modifications")
3069 (description
3070 "Guard is a command line tool to easily handle events on file system
3071modifications. Guard automates various tasks by running custom rules whenever
3072file or directories are modified.")
3073 (home-page "http://guardgem.org/")
3074 (license license:expat)))
3075
1415792a
DT
3076(define-public ruby-thread-safe
3077 (package
3078 (name "ruby-thread-safe")
313dd5dd 3079 (version "0.3.6")
1415792a
DT
3080 (source
3081 (origin
3082 (method url-fetch)
3083 (uri (rubygems-uri "thread_safe" version))
3084 (sha256
3085 (base32
313dd5dd 3086 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
1415792a
DT
3087 (build-system ruby-build-system)
3088 (arguments
3089 '(#:tests? #f)) ; needs simplecov, among others
3090 (synopsis "Thread-safe utilities for Ruby")
3091 (description "The thread_safe library provides thread-safe collections and
3092utilities for Ruby.")
3093 (home-page "https://github.com/ruby-concurrency/thread_safe")
3094 (license license:asl2.0)))
08a1b701
DT
3095
3096(define-public ruby-tzinfo
3097 (package
3098 (name "ruby-tzinfo")
4237af85 3099 (version "1.2.4")
08a1b701
DT
3100 (source
3101 (origin
3102 (method url-fetch)
3103 (uri (rubygems-uri "tzinfo" version))
3104 (sha256
3105 (base32
4237af85 3106 "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp"))))
08a1b701
DT
3107 (build-system ruby-build-system)
3108 (propagated-inputs
3109 `(("ruby-thread-safe" ,ruby-thread-safe)))
3110 (synopsis "Time zone library for Ruby")
3111 (description "TZInfo is a Ruby library that provides daylight savings
3112aware transformations between times in different time zones.")
2f3800e5 3113 (home-page "https://tzinfo.github.io")
1e12924a
BW
3114 (license license:expat)))
3115
3116(define-public ruby-tzinfo-data
3117 (package
3118 (name "ruby-tzinfo-data")
92513191 3119 (version "1.2017.3")
1e12924a
BW
3120 (source
3121 (origin
3122 (method url-fetch)
3123 ;; Download from GitHub because the rubygems version does not contain
3124 ;; Rakefile or tests.
3125 (uri (string-append
3126 "https://github.com/tzinfo/tzinfo-data/archive/v"
3127 version
3128 ".tar.gz"))
3129 (file-name (string-append name "-" version ".tar.gz"))
3130 (sha256
3131 (base32
92513191 3132 "01wff7syqzikbxalbg3isgxasmvzicr85bzadzkb6bf20bip4v54"))
1e12924a
BW
3133 ;; Remove the known test failure.
3134 ;; https://github.com/tzinfo/tzinfo-data/issues/10
3135 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
3136 (patches (search-patches
3137 "ruby-tzinfo-data-ignore-broken-test.patch"))))
3138 (build-system ruby-build-system)
3139 (propagated-inputs
3140 `(("ruby-tzinfo" ,ruby-tzinfo)))
3141 (synopsis "Data from the IANA Time Zone database")
3142 (description
3143 "This library provides @code{TZInfo::Data}, which contains data from the
3144IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
2f3800e5 3145 (home-page "https://tzinfo.github.io")
08a1b701 3146 (license license:expat)))
c99e2247 3147
48e6851f
RW
3148(define-public ruby-rb-inotify
3149 (package
3150 (name "ruby-rb-inotify")
32bbfea8 3151 (version "0.9.10")
48e6851f
RW
3152 (source
3153 (origin
3154 (method url-fetch)
3155 (uri (rubygems-uri "rb-inotify" version))
3156 (sha256
3157 (base32
32bbfea8 3158 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
48e6851f
RW
3159 (build-system ruby-build-system)
3160 (arguments
3161 '(#:tests? #f ; there are no tests
3162 #:phases
3163 (modify-phases %standard-phases
3164 ;; Building the gemspec with rake is not working here since it is
3165 ;; generated with Jeweler. It is also unnecessary because the
3166 ;; existing gemspec does not use any development tools to generate a
3167 ;; list of files.
3168 (replace 'build
3169 (lambda _
9923d5a4 3170 (invoke "gem" "build" "rb-inotify.gemspec"))))))
48e6851f
RW
3171 (propagated-inputs
3172 `(("ruby-ffi" ,ruby-ffi)))
3173 (native-inputs
3174 `(("ruby-yard" ,ruby-yard)))
3175 (synopsis "Ruby wrapper for Linux's inotify")
3176 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
3177kernel subsystem for monitoring changes to files and directories.")
3178 (home-page "https://github.com/nex3/rb-inotify")
3179 (license license:expat)))
3180
a75bdfce
RW
3181(define-public ruby-pry-editline
3182 (package
3183 (name "ruby-pry-editline")
3184 (version "1.1.2")
3185 (source (origin
3186 (method url-fetch)
3187 (uri (rubygems-uri "pry-editline" version))
3188 (sha256
3189 (base32
3190 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
3191 (build-system ruby-build-system)
3192 (arguments `(#:tests? #f)) ; no tests included
3193 (native-inputs
3194 `(("bundler" ,bundler)))
3195 (synopsis "Open the current REPL line in an editor")
3196 (description
3197 "This gem provides a plugin for the Ruby REPL to enable opening the
3198current line in an external editor.")
3199 (home-page "https://github.com/tpope/pry-editline")
3200 (license license:expat)))
3201
d3b20a02
RW
3202(define-public ruby-sdoc
3203 (package
3204 (name "ruby-sdoc")
fdf3a68d 3205 (version "0.4.2")
d3b20a02
RW
3206 (source (origin
3207 (method url-fetch)
3208 (uri (rubygems-uri "sdoc" version))
3209 (sha256
3210 (base32
fdf3a68d 3211 "0qhvy10vnmrqcgh8494m13kd5ag9c3sczzhfasv8j0294ylk679n"))))
d3b20a02
RW
3212 (build-system ruby-build-system)
3213 (arguments
3214 `(#:phases
3215 (modify-phases %standard-phases
fc29d5e6 3216 (add-before 'check 'set-rubylib-and-patch-gemfile
d3b20a02 3217 (lambda _
fdf3a68d 3218 (setenv "RUBYLIB" "lib")
fc29d5e6
BW
3219 (substitute* "sdoc.gemspec"
3220 (("s.add_runtime_dependency.*") "\n")
3221 (("s.add_dependency.*") "\n"))
3222 (substitute* "Gemfile"
3223 (("gem \"rake\".*")
3224 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
d3b20a02
RW
3225 #t)))))
3226 (propagated-inputs
3227 `(("ruby-json" ,ruby-json)))
3228 (native-inputs
3229 `(("bundler" ,bundler)
fdf3a68d
BW
3230 ("ruby-minitest" ,ruby-minitest)
3231 ("ruby-hoe" ,ruby-hoe)))
d3b20a02
RW
3232 (synopsis "Generate searchable RDoc documentation")
3233 (description
3234 "SDoc is an RDoc documentation generator to build searchable HTML
3235documentation for Ruby code.")
7bf837fd 3236 (home-page "https://github.com/voloko/sdoc")
d3b20a02
RW
3237 (license license:expat)))
3238
70b002aa
RW
3239(define-public ruby-tins
3240 (package
3241 (name "ruby-tins")
fbefd6ff 3242 (version "1.15.0")
70b002aa
RW
3243 (source (origin
3244 (method url-fetch)
3245 (uri (rubygems-uri "tins" version))
3246 (sha256
3247 (base32
fbefd6ff 3248 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
70b002aa
RW
3249 (build-system ruby-build-system)
3250 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
3251 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
3252 ;; the gemspec.
3253 (arguments
3254 `(#:tests? #f ; there are no tests
3255 #:phases
3256 (modify-phases %standard-phases
3257 (replace 'build
3258 (lambda _
3259 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
3260 ;; causes an error.
3261 (substitute* "tins.gemspec"
3262 (("\"lib/spruz\", ") ""))
9923d5a4 3263 (invoke "gem" "build" "tins.gemspec"))))))
70b002aa
RW
3264 (synopsis "Assorted tools for Ruby")
3265 (description "Tins is a Ruby library providing assorted tools.")
3266 (home-page "https://github.com/flori/tins")
3267 (license license:expat)))
3268
bc8277e4
RW
3269(define-public ruby-gem-hadar
3270 (package
3271 (name "ruby-gem-hadar")
3fd577e3 3272 (version "1.9.1")
bc8277e4
RW
3273 (source (origin
3274 (method url-fetch)
3275 (uri (rubygems-uri "gem_hadar" version))
3276 (sha256
3277 (base32
3fd577e3 3278 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
bc8277e4
RW
3279 (build-system ruby-build-system)
3280 ;; This gem needs itself at development time. We disable rebuilding of the
3281 ;; gemspec to avoid this loop.
3282 (arguments
3283 `(#:tests? #f ; there are no tests
3284 #:phases
3285 (modify-phases %standard-phases
3286 (replace 'build
3287 (lambda _
9923d5a4 3288 (invoke "gem" "build" "gem_hadar.gemspec"))))))
bc8277e4
RW
3289 (propagated-inputs
3290 `(("git" ,git)
3291 ("ruby-tins" ,ruby-tins)
3fd577e3 3292 ("ruby-yard" ,ruby-yard)))
bc8277e4
RW
3293 (synopsis "Library for the development of Ruby gems")
3294 (description
3295 "This library contains some useful functionality to support the
3296development of Ruby gems.")
3297 (home-page "https://github.com/flori/gem_hadar")
3298 (license license:expat)))
3299
d8cafe29
RW
3300(define-public ruby-minitest-tu-shim
3301 (package
3302 (name "ruby-minitest-tu-shim")
3303 (version "1.3.3")
3304 (source (origin
3305 (method url-fetch)
3306 (uri (rubygems-uri "minitest_tu_shim" version))
3307 (sha256
3308 (base32
3309 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
3310 (build-system ruby-build-system)
3311 (arguments
3312 `(#:phases
3313 (modify-phases %standard-phases
3314 (add-after 'unpack 'fix-test-include-path
3315 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 3316 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
761e7042
BW
3317 (substitute* "Rakefile"
3318 (("Hoe\\.add_include_dirs .*")
3319 (string-append "Hoe.add_include_dirs \""
3cb3fa67 3320 minitest "/lib/ruby/vendor_ruby"
761e7042
BW
3321 "/gems/minitest-"
3322 ,(package-version ruby-minitest-4)
3323 "/lib" "\""))))
3324 #t))
d8cafe29
RW
3325 (add-before 'check 'fix-test-assumptions
3326 (lambda _
3327 ;; The test output includes the file name, so a couple of tests
3328 ;; fail. Changing the regular expressions slightly fixes this
3329 ;; problem.
3330 (substitute* "test/test_mini_test.rb"
3331 (("output.sub!\\(.*, 'FILE:LINE'\\)")
3332 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
3333 (("gsub\\(/.*, 'FILE:LINE'\\)")
3334 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
3335 #t)))))
3336 (propagated-inputs
3337 `(("ruby-minitest-4" ,ruby-minitest-4)))
3338 (native-inputs
3339 `(("ruby-hoe" ,ruby-hoe)))
3340 (synopsis "Adapter library between minitest and test/unit")
3341 (description
3342 "This library bridges the gap between the small and fast minitest and
3343Ruby's large and slower test/unit.")
3344 (home-page "https://rubygems.org/gems/minitest_tu_shim")
3345 (license license:expat)))
3346
fd83a212
RW
3347(define-public ruby-term-ansicolor
3348 (package
3349 (name "ruby-term-ansicolor")
f3a6311a 3350 (version "1.6.0")
fd83a212
RW
3351 (source (origin
3352 (method url-fetch)
3353 (uri (rubygems-uri "term-ansicolor" version))
3354 (sha256
3355 (base32
f3a6311a 3356 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
fd83a212
RW
3357 (build-system ruby-build-system)
3358 ;; Rebuilding the gemspec seems to require git, even though this is not a
3359 ;; git repository, so we just build the gem from the existing gemspec.
3360 (arguments
3361 `(#:phases
3362 (modify-phases %standard-phases
39ecb977
CB
3363 (add-after 'unpack 'fix-test
3364 (lambda -
3365 (substitute* "tests/hsl_triple_test.rb"
3366 (("0\\\\\\.0%")
3367 "0\\.?0?%"))))
fd83a212
RW
3368 (replace 'build
3369 (lambda _
9923d5a4 3370 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
fd83a212
RW
3371 (propagated-inputs
3372 `(("ruby-tins" ,ruby-tins)))
3373 (native-inputs
3374 `(("ruby-gem-hadar" ,ruby-gem-hadar)
3375 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
3376 (synopsis "Ruby library to control the attributes of terminal output")
3377 (description
3378 "This Ruby library uses ANSI escape sequences to control the attributes
3379of terminal output.")
2f3800e5 3380 (home-page "https://flori.github.io/term-ansicolor/")
fd83a212
RW
3381 ;; There is no mention of the "or later" clause.
3382 (license license:gpl2)))
3383
6e376ca4
RW
3384(define-public ruby-pstree
3385 (package
3386 (name "ruby-pstree")
3387 (version "0.1.0")
3388 (source (origin
3389 (method url-fetch)
3390 (uri (rubygems-uri "pstree" version))
3391 (sha256
3392 (base32
3393 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
3394 (build-system ruby-build-system)
3395 (native-inputs
3396 `(("ruby-gem-hadar" ,ruby-gem-hadar)
3397 ("bundler" ,bundler)))
3398 (synopsis "Create a process tree data structure")
3399 (description
3400 "This library uses the output of the @code{ps} command to create a
3401process tree data structure for the current host.")
2f3800e5 3402 (home-page "https://github.com/flori/pstree")
6e376ca4
RW
3403 ;; There is no mention of the "or later" clause.
3404 (license license:gpl2)))
3405
53239b5f
RW
3406(define-public ruby-utils
3407 (package
3408 (name "ruby-utils")
cd698b6e 3409 (version "0.9.0")
53239b5f
RW
3410 (source (origin
3411 (method url-fetch)
3412 (uri (rubygems-uri "utils" version))
3413 (sha256
3414 (base32
cd698b6e 3415 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
53239b5f
RW
3416 (build-system ruby-build-system)
3417 (propagated-inputs
3418 `(("ruby-tins" ,ruby-tins)
3419 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
3420 ("ruby-pstree" ,ruby-pstree)
3421 ("ruby-pry-editline" ,ruby-pry-editline)))
3422 (native-inputs
3423 `(("ruby-gem-hadar" ,ruby-gem-hadar)
3424 ("bundler" ,bundler)))
3425 (synopsis "Command line tools for working with Ruby")
3426 (description
3427 "This package provides assorted command line tools that may be useful
3428when working with Ruby code.")
3429 (home-page "https://github.com/flori/utils")
3430 ;; There is no mention of the "or later" clause.
3431 (license license:gpl2)))
3432
433f10b5
CB
3433(define-public ruby-jaro-winkler
3434 (package
3435 (name "ruby-jaro-winkler")
3436 (version "1.5.2")
3437 (source
3438 (origin
3439 (method url-fetch)
3440 (uri (rubygems-uri "jaro_winkler" version))
3441 (sha256
3442 (base32
3443 "1zz27z88qznix4r65gd9h56gl177snlfpgv10b0s69vi8qpl909l"))))
3444 (build-system ruby-build-system)
3445 (arguments
3446 '(;; No included tests
3447 #:tests? #f))
3448 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
3449 (description
3450 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
3451algorithm. It is written as a C extension and will fallback to a pure Ruby
3452implementation on platforms where this is unsupported.")
3453 (home-page "https://github.com/tonytonyjan/jaro_winkler")
3454 (license license:expat)))
3455
c99e2247
DT
3456(define-public ruby-json
3457 (package
3458 (name "ruby-json")
a281acce 3459 (version "2.1.0")
c99e2247
DT
3460 (source
3461 (origin
3462 (method url-fetch)
3463 (uri (rubygems-uri "json" version))
3464 (sha256
3465 (base32
a281acce 3466 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
c99e2247
DT
3467 (build-system ruby-build-system)
3468 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
3469 (synopsis "JSON library for Ruby")
3470 (description "This Ruby library provides a JSON implementation written as
3471a native C extension.")
3472 (home-page "http://json-jruby.rubyforge.org/")
3473 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 3474
763624f5
RW
3475(define-public ruby-json-pure
3476 (package
3477 (name "ruby-json-pure")
ac01cb07 3478 (version "2.1.0")
763624f5
RW
3479 (source (origin
3480 (method url-fetch)
3481 (uri (rubygems-uri "json_pure" version))
3482 (sha256
3483 (base32
ac01cb07 3484 "12yf9fmhr4c2jm3xl20vf1qyz5i63vc8a6ngz9j0f86nqwhmi2as"))))
763624f5
RW
3485 (build-system ruby-build-system)
3486 (arguments
ac01cb07 3487 `(#:phases
763624f5 3488 (modify-phases %standard-phases
ac01cb07 3489 (add-after 'unpack 'fix-rakefile
763624f5 3490 (lambda _
ac01cb07
BW
3491 (substitute* "Rakefile"
3492 ;; Since this is not a git repository, do not call 'git'.
3493 (("`git ls-files`") "`find . -type f |sort`")
3494 ;; Loosen dependency constraint.
3495 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
3496 #t))
3497 (add-after 'replace-git-ls-files 'regenerate-gemspec
3498 (lambda _
3499 ;; Regenerate gemspec so loosened dependency constraints are
3500 ;; propagated.
17cfb7ae
CB
3501 (invoke "rake" "gemspec")))
3502 (add-after 'regenerate-gemspec 'fix-json-java.gemspec
3503 (lambda _
3504 ;; This gemspec doesn't look to be generated by the above
3505 ;; command, so patch it separately.
3506 (substitute* "json-java.gemspec"
3507 (("%q<test-unit>\\.freeze, \\[\"~> 2\\.0\"\\]")
3508 "%q<test-unit>.freeze, [\">= 2.0\"]"))
3509 #t)))))
763624f5 3510 (native-inputs
ac01cb07 3511 `(("bundler" ,bundler)
0c9f73cd
TGR
3512 ("ragel" ,ragel)
3513 ("ruby-simplecov" ,ruby-simplecov)
3514 ("ruby-test-unit" ,ruby-test-unit)))
763624f5
RW
3515 (synopsis "JSON implementation in pure Ruby")
3516 (description
3517 "This package provides a JSON implementation written in pure Ruby.")
2f3800e5 3518 (home-page "https://flori.github.com/json")
763624f5
RW
3519 (license license:ruby)))
3520
16b324cd
RW
3521;; Even though this package only provides bindings for a Mac OSX API it is
3522;; required by "ruby-listen" at runtime.
3523(define-public ruby-rb-fsevent
3524 (package
3525 (name "ruby-rb-fsevent")
b0ef15ed 3526 (version "0.10.3")
16b324cd
RW
3527 (source (origin
3528 (method url-fetch)
3529 (uri (rubygems-uri "rb-fsevent" version))
3530 (sha256
3531 (base32
b0ef15ed 3532 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
16b324cd
RW
3533 (build-system ruby-build-system)
3534 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
3535 ;; "listen", which needs "rb-fsevent" at runtime.
3536 (arguments `(#:tests? #f))
3537 (synopsis "FSEvents API with signals catching")
3538 (description
3539 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
3540 (home-page "https://rubygems.org/gems/rb-fsevent")
3541 (license license:expat)))
3542
b86be2ad
RW
3543(define-public ruby-listen
3544 (package
3545 (name "ruby-listen")
c3b36fa1 3546 (version "3.1.5")
b86be2ad
RW
3547 (source
3548 (origin
3549 (method url-fetch)
3550 (uri (rubygems-uri "listen" version))
3551 (sha256
3552 (base32
c3b36fa1 3553 "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx"))))
b86be2ad
RW
3554 (build-system ruby-build-system)
3555 (arguments '(#:tests? #f)) ; no tests
3556 (propagated-inputs
cf1a01f4
RW
3557 `(("ruby-rb-inotify" ,ruby-rb-inotify)
3558 ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
b86be2ad
RW
3559 (synopsis "Listen to file modifications")
3560 (description "The Listen gem listens to file modifications and notifies
3561you about the changes.")
3562 (home-page "https://github.com/guard/listen")
3563 (license license:expat)))
3564
88ed727f
JL
3565(define-public ruby-listen-3.0
3566 (package
3567 (inherit ruby-listen)
3568 (version "3.0.8")
3569 (source (origin
3570 (method url-fetch)
3571 (uri (rubygems-uri "listen" version))
3572 (sha256
3573 (base32
3574 "1l0y7hbyfiwpvk172r28hsdqsifq1ls39hsfmzi1vy4ll0smd14i"))))))
3575
5ff89a1b
DT
3576(define-public ruby-activesupport
3577 (package
3578 (name "ruby-activesupport")
ef381322 3579 (version "5.2.1")
5ff89a1b
DT
3580 (source
3581 (origin
3582 (method url-fetch)
3583 (uri (rubygems-uri "activesupport" version))
3584 (sha256
3585 (base32
ef381322 3586 "0ziy6xk31k4fs115cdkba1ys4i8nzcyri7a2jig7nx7k5h7li6l2"))))
5ff89a1b
DT
3587 (build-system ruby-build-system)
3588 (arguments
2af45e50
BW
3589 `(#:phases
3590 (modify-phases %standard-phases
3591 (replace 'check
3592 (lambda _
9923d5a4
TGR
3593 ;; There are no tests, instead attempt to load the library.
3594 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
5ff89a1b 3595 (propagated-inputs
2af45e50
BW
3596 `(("ruby-concurrent" ,ruby-concurrent)
3597 ("ruby-i18n" ,ruby-i18n)
5ff89a1b 3598 ("ruby-minitest" ,ruby-minitest)
606ee9a1
BW
3599 ("ruby-tzinfo" ,ruby-tzinfo)
3600 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
5ff89a1b
DT
3601 (synopsis "Ruby on Rails utility library")
3602 (description "ActiveSupport is a toolkit of support libraries and Ruby
3603core extensions extracted from the Rails framework. It includes support for
3604multibyte strings, internationalization, time zones, and testing.")
3605 (home-page "http://www.rubyonrails.org")
3606 (license license:expat)))
f847ad7b 3607
3996f0aa
RW
3608(define-public ruby-crass
3609 (package
3610 (name "ruby-crass")
a0e0f9d7 3611 (version "1.0.4")
3996f0aa
RW
3612 (source (origin
3613 (method url-fetch)
3614 (uri (rubygems-uri "crass" version))
3615 (sha256
3616 (base32
a0e0f9d7 3617 "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi"))))
3996f0aa
RW
3618 (build-system ruby-build-system)
3619 (native-inputs
3620 `(("bundler" ,bundler)
3621 ("ruby-minitest" ,ruby-minitest)))
3622 (synopsis "Pure Ruby CSS parser")
3623 (description
3624 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
3625 (home-page "https://github.com/rgrove/crass/")
3626 (license license:expat)))
3627
c2c4e5b2 3628(define-public ruby-nokogumbo
f1ae7c62
BW
3629 (let ((commit "fb51ff299a1c34346837580b6d1d9a60fadf5dbd"))
3630 (package
3631 (name "ruby-nokogumbo")
3632 (version (string-append "1.4.7-1." (string-take commit 8)))
3633 (source (origin
3634 ;; We use the git reference, because there's no Rakefile in the
3635 ;; published gem and the tarball on Github is outdated.
3636 (method git-fetch)
3637 (uri (git-reference
3638 (url "https://github.com/rubys/nokogumbo.git")
3639 (commit "d56f954d20a")))
3640 (file-name (string-append name "-" version "-checkout"))
3641 (sha256
3642 (base32
3643 "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
3644 (build-system ruby-build-system)
3645 (arguments
3646 `(#:modules ((guix build ruby-build-system)
3647 (guix build utils)
3648 (ice-9 rdelim))
3649 #:phases
3650 (modify-phases %standard-phases
5c31e981 3651 (add-after 'unpack 'build-gemspec
f1ae7c62
BW
3652 (lambda _
3653 (substitute* "Rakefile"
3654 ;; Build Makefile even without a copy of gumbo-parser sources
3655 (("'gumbo-parser/src',") "")
3656 ;; We don't bundle gumbo-parser sources
3657 (("'gumbo-parser/src/\\*',") "")
3658 (("'gumbo-parser/visualc/include/\\*',") "")
3659 ;; The definition of SOURCES will be cut in gemspec, and
3660 ;; "FileList" will be undefined.
3661 (("SOURCES \\+ FileList\\[")
3662 "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
3663
3664 ;; Copy the Rakefile and cut out the gemspec.
3665 (copy-file "Rakefile" ".gemspec")
3666 (with-atomic-file-replacement ".gemspec"
3667 (lambda (in out)
3668 (let loop ((line (read-line in 'concat))
3669 (skipping? #t))
3670 (if (eof-object? line)
3671 #t
3672 (let ((skip-next? (if skipping?
3673 (not (string-prefix? "SPEC =" line))
3674 (string-prefix? "end" line))))
3675 (when (or (not skipping?)
3676 (and skipping? (not skip-next?)))
3677 (format #t "~a" line)
3678 (display line out))
3679 (loop (read-line in 'concat) skip-next?))))))
3680 #t)))))
3681 (inputs
3682 `(("gumbo-parser" ,gumbo-parser)))
3683 (propagated-inputs
3684 `(("ruby-nokogiri" ,ruby-nokogiri)))
3685 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
3686 (description
3687 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
c2c4e5b2 3688access the result as a Nokogiri parsed document.")
f1ae7c62
BW
3689 (home-page "https://github.com/rubys/nokogumbo/")
3690 (license license:asl2.0))))
c2c4e5b2 3691
d56ff88b
RW
3692(define-public ruby-sanitize
3693 (package
3694 (name "ruby-sanitize")
f812145e 3695 (version "4.6.3")
d56ff88b
RW
3696 (source (origin
3697 (method url-fetch)
3698 ;; The gem does not include the Rakefile, so we download the
3699 ;; release tarball from Github.
3700 (uri (string-append "https://github.com/rgrove/"
3701 "sanitize/archive/v" version ".tar.gz"))
3702 (file-name (string-append name "-" version ".tar.gz"))
3703 (sha256
3704 (base32
f812145e 3705 "1fmqppwif3cm8h79006jfzkdnlxxzlry9kzk03psk0d5xpg55ycc"))))
d56ff88b
RW
3706 (build-system ruby-build-system)
3707 (propagated-inputs
3708 `(("ruby-crass" ,ruby-crass)
3709 ("ruby-nokogiri" ,ruby-nokogiri)
3710 ("ruby-nokogumbo" ,ruby-nokogumbo)))
3711 (native-inputs
3712 `(("bundler" ,bundler)
3713 ("ruby-minitest" ,ruby-minitest)
3714 ("ruby-redcarpet" ,ruby-redcarpet)
3715 ("ruby-yard" ,ruby-yard)))
3716 (synopsis "Whitelist-based HTML and CSS sanitizer")
3717 (description
3718 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
3719acceptable elements, attributes, and CSS properties, Sanitize will remove all
3720unacceptable HTML and/or CSS from a string.")
3721 (home-page "https://github.com/rgrove/sanitize/")
3722 (license license:expat)))
3723
ed4b6b18
BW
3724(define-public ruby-oj
3725 (package
3726 (name "ruby-oj")
3727 (version "3.6.7")
3728 (source
3729 (origin
3730 (method url-fetch)
3731 ;; Version on rubygems.org does not contain Rakefile, so download from
3732 ;; GitHub instead.
3733 (uri (string-append "https://github.com/ohler55/oj/archive/v"
3734 version ".tar.gz"))
3735 (file-name (string-append name "-" version ".tar.gz"))
3736 (sha256
3737 (base32
3738 "1x28ga72jxlnmsd8g8c0fw81vlh54r0qgagw2lxsd3x3la091g2h"))))
3739 (build-system ruby-build-system)
3740 (arguments
3741 '(#:test-target "test_all"
3742 #:phases
3743 (modify-phases %standard-phases
3744 (add-before 'check 'disable-bundler
3745 (lambda _
3746 (substitute* "Rakefile"
3747 (("Bundler\\.with_clean_env") "1.times")
3748 (("bundle exec ") "")))))))
3749 (native-inputs
3750 `(("bundler" ,bundler)
3751 ("ruby-rspec" ,ruby-rspec)
3752 ("ruby-rake-compiler" ,ruby-rake-compiler)))
3753 (synopsis "JSON parser for Ruby optimized for speed")
3754 (description
3755 "Oj is a JSON parser and generator for Ruby, where the encoding and
3756decoding of JSON is implemented as a C extension to Ruby.")
3757 (home-page "http://www.ohler.com/oj")
3758 (license (list license:expat ; Ruby code
3759 license:bsd-3)))) ; extension code
3760
f847ad7b
DT
3761(define-public ruby-ox
3762 (package
3763 (name "ruby-ox")
263c0dbf 3764 (version "2.6.0")
f847ad7b
DT
3765 (source
3766 (origin
3767 (method url-fetch)
3768 (uri (rubygems-uri "ox" version))
3769 (sha256
3770 (base32
263c0dbf 3771 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
f847ad7b
DT
3772 (build-system ruby-build-system)
3773 (arguments
3774 '(#:tests? #f)) ; no tests
3775 (synopsis "Optimized XML library for Ruby")
3776 (description
3777 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
3778written as a native C extension. It was designed to be an alternative to
3779Nokogiri and other Ruby XML parsers for generic XML parsing and as an
3780alternative to Marshal for Object serialization. ")
3781 (home-page "http://www.ohler.com/ox")
3782 (license license:expat)))
4a9e0585 3783
0c4e7625
RW
3784(define-public ruby-redcloth
3785 (package
3786 (name "ruby-redcloth")
2a91494e 3787 (version "4.3.2")
0c4e7625
RW
3788 (source (origin
3789 (method url-fetch)
3790 (uri (rubygems-uri "RedCloth" version))
3791 (sha256
3792 (base32
2a91494e 3793 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
0c4e7625
RW
3794 (build-system ruby-build-system)
3795 (arguments
3796 `(#:tests? #f ; no tests
3797 #:phases
3798 (modify-phases %standard-phases
3799 ;; Redcloth has complicated rake tasks to build various versions for
3800 ;; multiple targets using RVM. We don't want this so we just use the
3801 ;; existing gemspec.
3802 (replace 'build
3803 (lambda _
9923d5a4 3804 (invoke "gem" "build" "redcloth.gemspec"))))))
0c4e7625
RW
3805 (native-inputs
3806 `(("bundler" ,bundler)
3807 ("ruby-diff-lcs" ,ruby-diff-lcs)
3808 ("ruby-rspec-2" ,ruby-rspec-2)))
3809 (synopsis "Textile markup language parser for Ruby")
3810 (description
3811 "RedCloth is a Ruby parser for the Textile markup language.")
3812 (home-page "http://redcloth.org")
3813 (license license:expat)))
3814
4a9e0585
DT
3815(define-public ruby-pg
3816 (package
3817 (name "ruby-pg")
4db80f8b 3818 (version "1.1.3")
4a9e0585
DT
3819 (source
3820 (origin
3821 (method url-fetch)
3822 (uri (rubygems-uri "pg" version))
3823 (sha256
3824 (base32
4db80f8b 3825 "1pnjw3rspdfjssxyf42jnbsdlgri8ylysimp0s28wxb93k6ff2qb"))))
4a9e0585
DT
3826 (build-system ruby-build-system)
3827 (arguments
3828 '(#:test-target "spec"))
3829 (native-inputs
3830 `(("ruby-rake-compiler" ,ruby-rake-compiler)
3831 ("ruby-hoe" ,ruby-hoe)
3832 ("ruby-rspec" ,ruby-rspec)))
3833 (inputs
abd78128 3834 `(("postgresql" ,postgresql-9.6)))
4a9e0585
DT
3835 (synopsis "Ruby interface to PostgreSQL")
3836 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
4db80f8b 3837with PostgreSQL 9.0 and later.")
4a9e0585
DT
3838 (home-page "https://bitbucket.org/ged/ruby-pg")
3839 (license license:ruby)))
468e5657
DT
3840
3841(define-public ruby-byebug
3842 (package
3843 (name "ruby-byebug")
d5489a61 3844 (version "9.0.6")
468e5657
DT
3845 (source
3846 (origin
3847 (method url-fetch)
3848 (uri (rubygems-uri "byebug" version))
3849 (sha256
3850 (base32
d5489a61 3851 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
468e5657
DT
3852 (build-system ruby-build-system)
3853 (arguments
3854 '(#:tests? #f)) ; no tests
3855 (synopsis "Debugger for Ruby 2")
3856 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
3857TracePoint C API for execution control and the Debug Inspector C API for call
3858stack navigation. The core component provides support that front-ends can
3859build on. It provides breakpoint handling and bindings for stack frames among
3860other things and it comes with a command line interface.")
7bf837fd 3861 (home-page "https://github.com/deivid-rodriguez/byebug")
468e5657 3862 (license license:bsd-2)))
64b6ccc3 3863
5799bc2b
RW
3864(define-public ruby-netrc
3865 (package
3866 (name "ruby-netrc")
3867 (version "0.11.0")
3868 (source (origin
3869 (method url-fetch)
3870 (uri (rubygems-uri "netrc" version))
3871 (sha256
3872 (base32
3873 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
3874 (build-system ruby-build-system)
3875 (arguments
3876 `(#:phases
3877 (modify-phases %standard-phases
3878 (replace 'check
3879 ;; There is no Rakefile and minitest can only run one file at once,
3880 ;; so we have to iterate over all test files.
3881 (lambda _
9923d5a4
TGR
3882 (map (lambda (file)
3883 (invoke "ruby" "-Itest" file))
3884 (find-files "./test" "test_.*\\.rb")))))))
5799bc2b
RW
3885 (native-inputs
3886 `(("ruby-minitest" ,ruby-minitest)))
3887 (synopsis "Library to read and update netrc files")
3888 (description
3889 "This library can read and update netrc files, preserving formatting
3890including comments and whitespace.")
3891 (home-page "https://github.com/geemus/netrc")
3892 (license license:expat)))
3893
3a6989ce
RW
3894(define-public ruby-unf-ext
3895 (package
3896 (name "ruby-unf-ext")
3897 (version "0.0.7.1")
3898 (source (origin
3899 (method url-fetch)
3900 (uri (rubygems-uri "unf_ext" version))
3901 (sha256
3902 (base32
3903 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
3904 (build-system ruby-build-system)
b809cc9a
RW
3905 (arguments
3906 `(#:phases
3907 (modify-phases %standard-phases
3908 (add-after 'build 'build-ext
9923d5a4 3909 (lambda _ (invoke "rake" "compile:unf_ext"))))))
3a6989ce
RW
3910 (native-inputs
3911 `(("bundler" ,bundler)
3912 ("ruby-rake-compiler" ,ruby-rake-compiler)
3913 ("ruby-test-unit" ,ruby-test-unit)))
3914 (synopsis "Unicode normalization form support library")
3915 (description
3916 "This package provides unicode normalization form support for Ruby.")
3917 (home-page "https://github.com/knu/ruby-unf_ext")
3918 (license license:expat)))
3919
2632a067 3920(define-public ruby-tdiff
5071f17b
BW
3921 ;; Use a newer than released snapshot so that rspec-2 is not required.
3922 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
3923 (package
3924 (name "ruby-tdiff")
3925 (version (string-append "0.3.3-1." (string-take commit 8)))
3926 (source (origin
3927 (method git-fetch)
3928 (uri (git-reference
3929 (url "https://github.com/postmodern/tdiff.git")
3930 (commit commit)))
3931 (file-name (string-append name "-" version "-checkout"))
3932 (sha256
3933 (base32
3934 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
3935 (build-system ruby-build-system)
3936 (native-inputs
3937 `(("ruby-rspec" ,ruby-rspec)
3938 ("ruby-yard" ,ruby-yard)
3939 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
3940 (synopsis "Calculate the differences between two tree-like structures")
3941 (description
3942 "This library provides functions to calculate the differences between two
2632a067 3943tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
5071f17b
BW
3944 (home-page "https://github.com/postmodern/tdiff")
3945 (license license:expat))))
2632a067 3946
f60f5002 3947(define-public ruby-nokogiri-diff
5b0c223a
BW
3948 ;; Use a newer than released snapshot so that rspec-2 is not required.
3949 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
3950 (package
3951 (name "ruby-nokogiri-diff")
3952 (version (string-append "0.2.0-1." (string-take commit 8)))
3953 (source (origin
3954 (method git-fetch)
3955 (uri (git-reference
3956 (url "https://github.com/postmodern/nokogiri-diff.git")
3957 (commit commit)))
3958 (file-name (string-append name "-" version "-checkout"))
3959 (sha256
3960 (base32
3961 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
3962 (build-system ruby-build-system)
3963 (propagated-inputs
3964 `(("ruby-tdiff" ,ruby-tdiff)
3965 ("ruby-nokogiri" ,ruby-nokogiri)))
3966 (native-inputs
3967 `(("ruby-rspec" ,ruby-rspec)
3968 ("ruby-yard" ,ruby-yard)
3969 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
3970 (synopsis "Calculate the differences between two XML/HTML documents")
3971 (description
3972 "@code{Nokogiri::Diff} adds the ability to calculate the
f60f5002 3973differences (added or removed nodes) between two XML/HTML documents.")
5b0c223a
BW
3974 (home-page "https://github.com/postmodern/nokogiri-diff")
3975 (license license:expat))))
f60f5002 3976
6dc21310
CB
3977(define-public ruby-racc
3978 (package
3979 (name "ruby-racc")
3980 (version "1.4.14")
3981 (source
3982 (origin
3983 (method url-fetch)
3984 (uri (rubygems-uri "racc" version))
3985 (sha256
3986 (base32
3987 "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
3988 (build-system ruby-build-system)
3989 (native-inputs
3990 `(("ruby-hoe" ,ruby-hoe)
3991 ("ruby-rake-compiler" ,ruby-rake-compiler)))
3992 (synopsis "LALR(1) parser generator for Ruby")
3993 (description
3994 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
3995generates Ruby program.")
3996 (home-page "http://i.loveruby.net/en/projects/racc/")
3997 (license (list
3998 ;; Generally licensed under the LGPL2.1, and some files also
3999 ;; available under the same license as Ruby.
4000 license:lgpl2.1
4001 license:ruby))))
4002
64b6ccc3
DT
4003(define-public ruby-rack
4004 (package
4005 (name "ruby-rack")
288d2480 4006 (version "2.0.6")
64b6ccc3
DT
4007 (source
4008 (origin
4009 (method url-fetch)
1db791d5
BW
4010 ;; Download from GitHub so that the patch can be applied.
4011 (uri (string-append
4012 "https://github.com/rack/rack/archive/"
4013 version
4014 ".tar.gz"))
4015 (file-name (string-append name "-" version ".tar.gz"))
64b6ccc3
DT
4016 (sha256
4017 (base32
288d2480 4018 "0pb3g5ymvbf07xaxcn51dpqv3djlxavckp3qkxsjdxiqznb0d9p1"))
1db791d5
BW
4019 ;; Ignore test which fails inside the build environment but works
4020 ;; outside.
4021 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
64b6ccc3
DT
4022 (build-system ruby-build-system)
4023 (arguments
4024 '(#:phases
4025 (modify-phases %standard-phases
4026 (add-before 'check 'fix-tests
4027 (lambda _
4028 ;; A few of the tests use the length of a file on disk for
4029 ;; Content-Length and Content-Range headers. However, this file
4030 ;; has a shebang in it which an earlier phase patches, growing
4031 ;; the file size from 193 to 239 bytes when the store prefix is
4032 ;; "/gnu/store".
4033 (let ((size-diff (- (string-length (which "ruby"))
4034 (string-length "/usr/bin/env ruby"))))
4035 (substitute* '("test/spec_file.rb")
4036 (("193")
4037 (number->string (+ 193 size-diff)))
4038 (("bytes(.)22-33" all delimiter)
4039 (string-append "bytes"
4040 delimiter
4041 (number->string (+ 22 size-diff))
4042 "-"
4043 (number->string (+ 33 size-diff))))))
4044 #t)))))
4045 (native-inputs
1db791d5
BW
4046 `(("ruby-minitest" ,ruby-minitest)
4047 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
4048 ("which" ,which)))
4049 (propagated-inputs
4050 `(("ruby-concurrent" ,ruby-concurrent)))
64b6ccc3
DT
4051 (synopsis "Unified web application interface for Ruby")
4052 (description "Rack provides a minimal, modular and adaptable interface for
4053developing web applications in Ruby. By wrapping HTTP requests and responses,
4054it unifies the API for web servers, web frameworks, and software in between
4055into a single method call.")
2f3800e5 4056 (home-page "https://rack.github.io/")
64b6ccc3 4057 (license license:expat)))
62e4cc5a 4058
20a0f804
BW
4059(define-public ruby-rack-test
4060 (package
4061 (name "ruby-rack-test")
4062 (version "0.8.3")
4063 (source
4064 (origin
4065 (method url-fetch)
4066 (uri (rubygems-uri "rack-test" version))
4067 (sha256
4068 (base32
4069 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
4070 (build-system ruby-build-system)
4071 (arguments
4072 ;; Disable tests because of circular dependencies: requires sinatra,
4073 ;; which requires rack-protection, which requires rack-test. Instead
4074 ;; simply require the library.
4075 `(#:phases
4076 (modify-phases %standard-phases
4077 (replace 'check
4078 (lambda _
4079 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
4080 (propagated-inputs
4081 `(("ruby-rack" ,ruby-rack)))
4082 (synopsis "Testing API for Rack applications")
4083 (description
4084 "Rack::Test is a small, simple testing API for Rack applications. It can
4085be used on its own or as a reusable starting point for Web frameworks and
4086testing libraries to build on.")
4087 (home-page "https://github.com/rack-test/rack-test")
4088 (license license:expat)))
4089
a0a7e690
BW
4090(define-public ruby-rack-protection
4091 (package
4092 (name "ruby-rack-protection")
603822b0 4093 (version "2.0.3")
a0a7e690
BW
4094 (source
4095 (origin
4096 (method url-fetch)
4097 (uri (rubygems-uri "rack-protection" version))
4098 (sha256
4099 (base32
603822b0 4100 "1z5598qipilmnf45428jnxi63ykrgvnyywa5ckpr52zv2vpd8jdp"))))
a0a7e690
BW
4101 (build-system ruby-build-system)
4102 (arguments
fafeeaa2 4103 '(;; Tests missing from the gem.
a0a7e690
BW
4104 #:tests? #f))
4105 (propagated-inputs
4106 `(("ruby-rack" ,ruby-rack)))
4107 (native-inputs
4108 `(("bundler" ,bundler)
4109 ("ruby-rspec" ,ruby-rspec-2)
4110 ("ruby-rack-test" ,ruby-rack-test)))
4111 (synopsis "Rack middleware that protects against typical web attacks")
4112 (description "Rack middleware that can be used to protect against typical
4113web attacks. It can protect all Rack apps, including Rails. For instance, it
4114protects against cross site request forgery, cross site scripting,
4115clickjacking, directory traversal, session hijacking and IP spoofing.")
4116 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
4117 (license license:expat)))
4118
6edabcb2
CB
4119(define-public ruby-rainbow
4120 (package
4121 (name "ruby-rainbow")
4122 (version "3.0.0")
4123 (source
4124 (origin
4125 (method url-fetch)
4126 (uri (rubygems-uri "rainbow" version))
4127 (sha256
4128 (base32
4129 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
4130 (build-system ruby-build-system)
4131 (arguments
4132 '(#:phases
4133 (modify-phases %standard-phases
4134 ;; Run rspec directly, to avoid requiring Rubocop which is used from
4135 ;; the Rakefile.
4136 (replace 'check
4137 (lambda* (#:key tests? #:allow-other-keys)
4138 (when tests?
4139 (invoke "rspec"))
4140 #t)))))
4141 (native-inputs
4142 `(("bundler" ,bundler)
4143 ("ruby-rspec" ,ruby-rspec)))
4144 (synopsis "Colorize printed text on ANSI terminals")
4145 (description
4146 "@code{rainbow} provides a string presenter object to colorize strings by
4147wrapping them in ANSI escape codes.")
4148 (home-page "https://github.com/sickill/rainbow")
79193b20
CB
4149 (license license:expat)))
4150
4151(define-public ruby-rest-client
4152 (package
4153 (name "ruby-rest-client")
4154 (version "2.0.2")
4155 (source
4156 (origin
4157 (method url-fetch)
4158 (uri (rubygems-uri "rest-client" version))
4159 (sha256
4160 (base32
4161 "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
4162 (build-system ruby-build-system)
4163 (arguments
4164 '(#:phases
4165 (modify-phases %standard-phases
4166 (add-before 'check 'remove-unnecessary-development-dependencies
4167 (lambda _
4168 (substitute* "rest-client.gemspec"
4169 ;; Remove rubocop as it's unused. Rubocop also indirectly
4170 ;; depends on this package through ruby-parser and ruby-ast so
4171 ;; this avoids a dependency loop.
4172 ((".*rubocop.*") "\n")
4173 ;; Remove pry as it's unused, it's a debugging tool
4174 ((".*pry.*") "\n")
4175 ;; Remove an unnecessarily strict rdoc dependency
4176 ((".*rdoc.*") "\n"))
4177 #t))
4178 (add-before 'check 'delete-network-dependent-tests
4179 (lambda _
4180 (delete-file "spec/integration/request_spec.rb")
4181 (delete-file "spec/integration/httpbin_spec.rb")
4182 #t)))))
4183 (propagated-inputs
4184 `(("ruby-http-cookie" ,ruby-http-cookie)
4185 ("ruby-mime-types" ,ruby-mime-types)
4186 ("ruby-netrc" ,ruby-netrc)))
4187 (native-inputs
4188 `(("bundler" ,bundler)
4189 ("ruby-webmock", ruby-webmock-2)
4190 ("ruby-rspec", ruby-rspec)))
4191 (synopsis "Simple HTTP and REST client for Ruby")
4192 (description
4193 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
4194inspired by the Sinatra microframework style of specifying actions:
4195@code{get}, @code{put}, @code{post}, @code{delete}.")
4196 (home-page "https://github.com/rest-client/rest-client")
6edabcb2
CB
4197 (license license:expat)))
4198
5d8fe6de
CB
4199(define-public ruby-rubocop
4200 (package
4201 (name "ruby-rubocop")
4202 (version "0.64.0")
4203 (source
4204 (origin
4205 (method url-fetch)
4206 (uri (rubygems-uri "rubocop" version))
4207 (sha256
4208 (base32
4209 "07shi6kncwhkvlh9ci9rgccrjsq4448hbic3yrakh2w65ppynvbj"))))
4210 (build-system ruby-build-system)
4211 (arguments
4212 '(;; No included tests
4213 #:tests? #f))
4214 (propagated-inputs
4215 `(("ruby-parser" ,ruby-parser)
4216 ("ruby-powerpack" ,ruby-powerpack)
4217 ("ruby-rainbow" ,ruby-rainbow)
4218 ("ruby-progressbar" ,ruby-progressbar)
4219 ("ruby-parallel" ,ruby-parallel)
4220 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
4221 ("ruby-unicode-display-width" ,ruby-unicode-display-width)))
4222 (synopsis "Ruby code style checking tool")
4223 (description
4224 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
4225the community-driven Ruby Style Guide.")
4226 (home-page "https://github.com/rubocop-hq/rubocop")
4227 (license license:expat)))
4228
6ef85256
BW
4229(define-public ruby-contest
4230 (package
4231 (name "ruby-contest")
4232 (version "0.1.3")
4233 (source
4234 (origin
4235 (method url-fetch)
4236 (uri (rubygems-uri "contest" version))
4237 (sha256
4238 (base32
4239 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
4240 (build-system ruby-build-system)
4241 (synopsis "Write declarative tests using nested contexts")
4242 (description
4243 "Contest allows writing declarative @code{Test::Unit} tests using nested
4244contexts without performance penalties.")
4245 (home-page "https://github.com/citrusbyte/contest")
4246 (license license:expat)))
4247
c4550f75
BW
4248(define-public ruby-creole
4249 (package
4250 (name "ruby-creole")
4251 (version "0.5.0")
4252 (source
4253 (origin
4254 (method url-fetch)
4255 (uri (rubygems-uri "creole" version))
4256 (sha256
4257 (base32
4258 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
4259 (build-system ruby-build-system)
4260 (native-inputs
4261 `(("ruby-bacon" ,ruby-bacon)))
4262 (synopsis "Creole markup language converter")
4263 (description
4264 "Creole is a lightweight markup language and this library for converting
4265creole to @code{HTML}.")
4266 (home-page "https://github.com/minad/creole")
4267 (license license:ruby)))
4268
6aaa815e
PP
4269(define-public ruby-docile
4270 (package
4271 (name "ruby-docile")
4272 (version "1.1.5")
4273 (source
4274 (origin
4275 (method url-fetch)
4276 (uri (rubygems-uri "docile" version))
4277 (sha256
4278 (base32
4279 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
4280 (build-system ruby-build-system)
4281 (arguments
4282 '(#:tests? #f)) ; needs github-markup, among others
4283 (synopsis "Ruby EDSL helper library")
4284 (description "Docile is a Ruby library that provides an interface for
4285creating embedded domain specific languages (EDSLs) that manipulate existing
4286Ruby classes.")
4287 (home-page "https://ms-ati.github.io/docile/")
4288 (license license:expat)))
4289
44514637 4290(define-public ruby-gherkin
62e4cc5a 4291 (package
44514637 4292 (name "ruby-gherkin")
aada5f6f 4293 (version "5.1.0")
62e4cc5a
PP
4294 (source
4295 (origin
4296 (method url-fetch)
44514637 4297 (uri (rubygems-uri "gherkin" version))
62e4cc5a
PP
4298 (sha256
4299 (base32
aada5f6f 4300 "1cgcdchwwdm10rsk44frjwqd4ihprhxjbm799nscqy2q1raqfj5s"))))
62e4cc5a
PP
4301 (build-system ruby-build-system)
4302 (native-inputs
4303 `(("bundler" ,bundler)))
4304 (arguments
4305 '(#:tests? #f)) ; needs simplecov, among others
4306 (synopsis "Gherkin parser for Ruby")
44514637 4307 (description "Gherkin is a parser and compiler for the Gherkin language.
aada5f6f
CB
4308It is intended be used by all Cucumber implementations to parse
4309@file{.feature} files.")
4310 (home-page "https://github.com/cucumber-attic/gherkin")
62e4cc5a 4311 (license license:expat)))
cd89fecb 4312
15b16c2c
CB
4313(define-public ruby-aruba
4314 (package
4315 (name "ruby-aruba")
4316 (version "0.14.8")
4317 (source
4318 (origin
4319 (method url-fetch)
4320 (uri (rubygems-uri "aruba" version))
4321 (sha256
4322 (base32
4323 "0zdd81l1lp0x78sxa6kkfqclpj5il3xl70nz05wqv2sfzzhqydxh"))))
4324 (build-system ruby-build-system)
4325 (arguments
4326 '(#:test-target "spec"
4327 #:phases
4328 (modify-phases %standard-phases
4329 (add-after 'unpack 'patch
4330 (lambda _
4331 (substitute* "spec/aruba/api_spec.rb"
4332 ;; This resolves some errors in the specs
4333 ;;
4334 ;; undefined method `parse' for Time:Class
4335 (("require 'spec_helper'")
4336 "require 'spec_helper'\nrequire 'time'"))
4337 ;; Avoid shebang issues in this spec file
4338 (substitute* "spec/aruba/matchers/command_spec.rb"
4339 (("/usr/bin/env bash")
4340 (which "bash")))
4341 #t))
4342 (add-before 'check 'remove-unnecessary-dependencies
4343 (lambda _
4344 (substitute* "Gemfile"
4345 ((".*byebug.*") "\n")
4346 ((".*pry.*") "\n")
4347 ((".*yaml.*") "\n")
4348 ((".*bcat.*") "\n")
4349 ((".*kramdown.*") "\n")
4350 ((".*rubocop.*") "\n")
4351 ((".*cucumber-pro.*") "\n")
4352 ((".*cucumber.*") "\n")
4353 ((".*license_finder.*") "\n")
4354 ((".*rake.*") "gem 'rake'\n")
4355 ((".*simplecov.*") "\n")
4356 ((".*relish.*") "\n"))
4357 (substitute* "spec/spec_helper.rb"
4358 ((".*simplecov.*") "")
4359 (("^SimpleCov.*") ""))
4360 (substitute* "aruba.gemspec"
4361 (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
4362 "spec.add_runtime_dependency 'cucumber'"))
4363 #t))
4364 (add-before 'check 'set-home
4365 (lambda _ (setenv "HOME" "/tmp") #t)))))
4366 (native-inputs
4367 `(("bundler" ,bundler)
4368 ("ruby-rspec" ,ruby-rspec)
4369 ("ruby-fuubar" ,ruby-fuubar)))
4370 (propagated-inputs
4371 `(("ruby-childprocess" ,ruby-childprocess)
4372 ("ruby-contracts" ,ruby-contracts)
4373 ("ruby-cucumber" ,ruby-cucumber)
4374 ("ruby-ffi" ,ruby-ffi)
4375 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
4376 ("ruby-thor" ,ruby-thor)
4377 ("ruby-yard" ,ruby-yard)))
4378 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
4379 (description
4380 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
4381command-line applications. It supports applications written in any
4382language.")
4383 (home-page "https://github.com/cucumber/aruba")
4384 (license license:expat)))
4385
4386;; A version of ruby-aruba without tests run so that circular dependencies can
4387;; be avoided.
4388(define ruby-aruba-without-tests
4389 (package
4390 (inherit ruby-aruba)
4391 (arguments '(#:tests? #f))
4392 (propagated-inputs
4393 `(("ruby-cucumber" ,ruby-cucumber-without-tests)
4394 ,@(alist-delete "ruby-cucumber"
4395 (package-propagated-inputs ruby-aruba))))
4396 (native-inputs '())))
4397
4398(define-public ruby-cucumber
4399 (package
4400 (name "ruby-cucumber")
4401 (version "3.1.2")
4402 (source
4403 (origin
4404 (method git-fetch)
4405 (uri (git-reference
4406 (url "https://github.com/cucumber/cucumber-ruby.git")
4407 (commit (string-append "v" version))))
4408 (file-name (git-file-name name version))
4409 (sha256
4410 (base32
4411 "0764wp2cjg60qa3l69q1dxda5g06a01n5w92szqbf89d2hgl47n3"))))
4412 (build-system ruby-build-system)
4413 (arguments
4414 '(#:test-target "spec"
4415 #:phases
4416 (modify-phases %standard-phases
4417 ;; Don't run or require rubocop, the code linting tool, as this is a
4418 ;; bit unnecessary.
4419 (add-after 'unpack 'dont-run-rubocop
4420 (lambda _
4421 (substitute* "Rakefile"
4422 ((".*rubocop/rake\\_task.*") "")
4423 ((".*RuboCop.*") ""))
4424 #t)))))
4425 (propagated-inputs
4426 `(("ruby-builder" ,ruby-builder)
4427 ("ruby-cucumber-core" ,ruby-cucumber-core)
4428 ("ruby-cucumber-wire" ,ruby-cucumber-wire)
4429 ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
4430 ("ruby-diff-lcs" ,ruby-diff-lcs)
4431 ("ruby-gherkin" ,ruby-gherkin)
4432 ("ruby-multi-json" ,ruby-multi-json)
4433 ("ruby-multi-test" ,ruby-multi-test)))
4434 (native-inputs
4435 `(("bundler" ,bundler)
4436 ;; Use a untested version of aruba, to avoid a circular dependency, as
4437 ;; ruby-aruba depends on ruby-cucumber.
4438 ("ruby-aruba", ruby-aruba-without-tests)
4439 ("ruby-rspec" ,ruby-rspec)
4440 ("ruby-pry" ,ruby-pry)
4441 ("ruby-nokogiri" ,ruby-nokogiri)))
4442 (synopsis "Describe automated tests in plain language")
4443 (description
4444 "Cucumber is a tool for running automated tests written in plain
4445language. It's designed to support a Behaviour Driven Development (BDD)
4446software development workflow.")
4447 (home-page "https://cucumber.io/")
4448 (license license:expat)))
4449
4450(define ruby-cucumber-without-tests
4451 (package (inherit ruby-cucumber)
4452 (arguments
4453 '(#:tests? #f))
4454 (native-inputs
4455 '())))
4456
cd89fecb
PP
4457(define-public ruby-cucumber-core
4458 (package
4459 (name "ruby-cucumber-core")
5cd047e8
CB
4460 ;; Stick to major version 3, until version 4 of Cucumber is released.
4461 (version "3.2.1")
cd89fecb
PP
4462 (source
4463 (origin
4464 (method url-fetch)
4465 (uri (rubygems-uri "cucumber-core" version))
4466 (sha256
4467 (base32
5cd047e8 4468 "1iavlh8hqj9lwljbpkw06259gdicbr1bdb6pbj5yy3n8szgr8k3c"))))
cd89fecb
PP
4469 (build-system ruby-build-system)
4470 (propagated-inputs
5cd047e8
CB
4471 `(("ruby-backports" ,ruby-backports)
4472 ("ruby-gherkin" ,ruby-gherkin)
4473 ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
cd89fecb
PP
4474 (native-inputs
4475 `(("bundler" ,bundler)))
4476 (arguments
4477 '(#:tests? #f)) ; needs simplecov, among others
4478 (synopsis "Core library for the Cucumber BDD app")
4479 (description "Cucumber is a tool for running automated tests
4480written in plain language. Because they're written in plain language,
4481they can be read by anyone on your team. Because they can be read by
4482anyone, you can use them to help improve communication, collaboration
4483and trust on your team.")
4484 (home-page "https://cucumber.io/")
4485 (license license:expat)))
212d563d 4486
fb1a8954
CB
4487(define-public ruby-cucumber-expressions
4488 (package
4489 (name "ruby-cucumber-expressions")
4490 (version "6.0.1")
4491 (source
4492 (origin
4493 (method url-fetch)
4494 (uri (rubygems-uri "cucumber-expressions" version))
4495 (sha256
4496 (base32
4497 "0zwmv6hznyz9vk81f5dhwcr9jhxx2vmbk8yyazayvllvhy0fkpdw"))))
4498 (build-system ruby-build-system)
4499 (arguments
4500 '(#:test-target "spec"))
4501 (native-inputs
4502 `(("bundler" ,bundler)
4503 ("ruby-rspec" ,ruby-rspec)
4504 ("ruby-simplecov" ,ruby-simplecov)))
4505 (synopsis "Simpler alternative to Regular Expressions")
4506 (description "Cucumber Expressions offer similar functionality to Regular
4507Expressions, with a syntax that is easier to read and write. Cucumber
4508Expressions are extensible with parameter types.")
4509 (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
4510 (license license:expat)))
4511
ce872770
CB
4512(define-public ruby-cucumber-wire
4513 (package
4514 (name "ruby-cucumber-wire")
4515 ;; Package version 0.0.1 initially, as this is what's needed by Cucumber
4516 ;; 3, and Cucumber 4 hasn't been released yet.
4517 (version "0.0.1")
4518 (source
4519 (origin
4520 (method url-fetch)
4521 (uri (rubygems-uri "cucumber-wire" version))
4522 (sha256
4523 (base32
4524 "09ymvqb0sbw2if1nxg8rcj33sf0va88ancq5nmp8g01dfwzwma2f"))))
4525 (build-system ruby-build-system)
4526 (arguments
4527 '(;; TODO: Currently, the tests can't be run as cucumber is required,
4528 ;; which would lead to a circular dependency.
4529 #:tests? #f
4530 #:test-target "default"
4531 #:phases
4532 (modify-phases %standard-phases
4533 (add-before 'check 'set-CUCUMBER_USE_RELEASED_GEMS
4534 (lambda _
4535 (setenv "CUCUMBER_USE_RELEASED_GEMS" "true")
4536 #t)))))
4537 (native-inputs
4538 `(("bundler" ,bundler)
4539 ("ruby-rspec" ,ruby-rspec)))
4540 (synopsis "Cucumber wire protocol plugin")
4541 (description
4542 "Cucumber's wire protocol allows step definitions to be implemented and
4543invoked on any platform.")
4544 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
4545 (license license:expat)))
4546
0ce8f344
CB
4547(define-public ruby-cucumber-tag-expressions
4548 (package
4549 (name "ruby-cucumber-tag-expressions")
4550 (version "1.1.1")
4551 (source
4552 (origin
4553 (method url-fetch)
4554 (uri (rubygems-uri "cucumber-tag_expressions" version))
4555 (sha256
4556 (base32
4557 "0cvmbljybws0qzjs1l67fvr9gqr005l8jk1ni5gcsis9pfmqh3vc"))))
4558 (build-system ruby-build-system)
4559 (arguments
4560 '(#:phases
4561 (modify-phases %standard-phases
4562 (replace 'check
4563 (lambda _
4564 (invoke "rspec")
4565 #t)))))
4566 (native-inputs
4567 `(("ruby-rspec" ,ruby-rspec)))
4568 (synopsis "Cucumber tag expressions for Ruby")
4569 (description
4570 "Cucumber tag expression parser for Ruby. A tag expression is an infix
4571boolean expression used by Cucumber.")
4572 (home-page "https://github.com/cucumber/tag-expressions-ruby")
4573 (license license:expat)))
4574
212d563d
PP
4575(define-public ruby-bio-logger
4576 (package
4577 (name "ruby-bio-logger")
4578 (version "1.0.1")
4579 (source
4580 (origin
4581 (method url-fetch)
4582 (uri (rubygems-uri "bio-logger" version))
4583 (sha256
4584 (base32
4585 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
4586 (build-system ruby-build-system)
4587 (arguments
4588 `(#:tests? #f)) ; rake errors, missing shoulda
4589 (propagated-inputs
4590 `(("ruby-log4r" ,ruby-log4r)))
4591 (synopsis "Log4r wrapper for Ruby")
4592 (description "Bio-logger is a wrapper around Log4r adding extra logging
4593features such as filtering and fine grained logging.")
4594 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
4595 (license license:expat)))
07f61cb2 4596
2db0f9c8
BW
4597(define-public ruby-yajl-ruby
4598 (package
4599 (name "ruby-yajl-ruby")
4600 (version "1.4.1")
4601 (source
4602 (origin
4603 (method url-fetch)
4604 (uri (rubygems-uri "yajl-ruby" version))
4605 (sha256
4606 (base32
4607 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
4608 (build-system ruby-build-system)
4609 (arguments
4610 '(#:test-target "spec"
4611 #:phases
4612 (modify-phases %standard-phases
4613 (add-before 'check 'patch-test-to-update-load-path
4614 (lambda _
4615 (substitute* "spec/parsing/large_number_spec.rb"
4616 (("require \"yajl\"")
4617 "$LOAD_PATH << 'lib'; require 'yajl'"))
4618 #t)))))
4619 (native-inputs
4620 `(("ruby-rake-compiler" ,ruby-rake-compiler)
4621 ("ruby-rspec" ,ruby-rspec)))
4622 (synopsis "Streaming JSON parsing and encoding library for Ruby")
4623 (description
4624 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
4625is compatible with the JSON gem, so yajl-ruby can act as a drop in
4626replacement.
4627
4628A modified copy of yajl is used, and included in the package.")
4629 (home-page "https://github.com/brianmario/yajl-ruby")
4630 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
4631 license:bsd-3)))) ; Included, modified copy of yajl
4632
07f61cb2 4633(define-public ruby-yard
6499893e
BW
4634 (package
4635 (name "ruby-yard")
50135ff8 4636 (version "0.9.16")
6499893e
BW
4637 (source
4638 (origin
4639 (method url-fetch)
4640 ;; Tests do not pass if we build from the distributed gem.
4641 (uri (string-append "https://github.com/lsegal/yard/archive/v"
3a3e3099 4642 version ".tar.gz"))
6499893e
BW
4643 (file-name (string-append name "-" version ".tar.gz"))
4644 (sha256
4645 (base32
50135ff8 4646 "0sqpbayy9sb406jh0zqg6qha1xds863qz9531dh6vp58hc00clfq"))))
6499893e
BW
4647 (build-system ruby-build-system)
4648 (arguments
4649 `(#:phases
4650 (modify-phases %standard-phases
4651 (replace 'check
4652 (lambda _
4653 ;; $HOME needs to be set to somewhere writeable for tests to run
4654 (setenv "HOME" "/tmp")
4655 ;; Run tests without using 'rake' to avoid dependencies.
9923d5a4 4656 (invoke "rspec"))))))
6499893e
BW
4657 (native-inputs
4658 `(("ruby-rspec" ,ruby-rspec)
4659 ("ruby-rack" ,ruby-rack)))
4660 (synopsis "Documentation generation tool for Ruby")
4661 (description
4662 "YARD is a documentation generation tool for the Ruby programming
07f61cb2
BW
4663language. It enables the user to generate consistent, usable documentation
4664that can be exported to a number of formats very easily, and also supports
4665extending for custom Ruby constructs such as custom class level definitions.")
2f3800e5 4666 (home-page "https://yardoc.org")
6499893e 4667 (license license:expat)))
2cbcd23a 4668
ad686ef3
RW
4669(define-public ruby-clap
4670 (package
4671 (name "ruby-clap")
4672 (version "1.0.0")
4673 (source (origin
4674 (method url-fetch)
4675 (uri (rubygems-uri "clap" version))
4676 (sha256
4677 (base32
4678 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
4679 (build-system ruby-build-system)
4680 ;; Clap needs cutest for running tests, but cutest needs clap.
4681 (arguments `(#:tests? #f))
4682 (synopsis "Command line argument parsing for simple applications")
4683 (description
4684 "Clap provides command line argument parsing features. It covers the
4685simple case of executing code based on the flags or parameters passed.")
4686 (home-page "https://github.com/djanowski/cutest")
0c80451e
RW
4687 (license license:expat)))
4688
4689(define-public ruby-cutest
4690 (package
4691 (name "ruby-cutest")
4692 (version "1.2.2")
4693 (source (origin
4694 (method url-fetch)
4695 (uri (rubygems-uri "cutest" version))
4696 (sha256
4697 (base32
4698 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
4699 (build-system ruby-build-system)
4700 (propagated-inputs
4701 `(("ruby-clap" ,ruby-clap)))
4702 (synopsis "Run tests in separate processes")
4703 (description
4704 "Cutest runs tests in separate processes to avoid shared state.")
4705 (home-page "https://github.com/djanowski/cutest")
ad686ef3
RW
4706 (license license:expat)))
4707
ac09beba
RW
4708(define-public ruby-pygmentize
4709 (package
4710 (name "ruby-pygmentize")
4711 (version "0.0.3")
4712 (source (origin
4713 (method url-fetch)
4714 (uri (rubygems-uri "pygmentize" version))
4715 (sha256
4716 (base32
4717 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
4718 (build-system ruby-build-system)
4719 (arguments
4720 `(#:phases
4721 (modify-phases %standard-phases
4722 (add-after 'unpack 'fix-pygmentize-path
4723 (lambda _
4724 (substitute* "lib/pygmentize.rb"
4725 (("\"/usr/bin/env python.*")
4726 (string-append "\"" (which "pygmentize") "\"\n")))
4727 #t))
4728 (add-after 'build 'do-not-use-vendor-directory
4729 (lambda _
4730 ;; Remove bundled pygments sources
4731 ;; FIXME: ruby-build-system does not support snippets.
4732 (delete-file-recursively "vendor")
4733 (substitute* "pygmentize.gemspec"
4734 (("\"vendor/\\*\\*/\\*\",") ""))
4735 #t)))))
4736 (inputs
4737 `(("pygments" ,python-pygments)))
4738 (native-inputs
4739 `(("ruby-cutest" ,ruby-cutest)
4740 ("ruby-nokogiri" ,ruby-nokogiri)))
4741 (synopsis "Thin Ruby wrapper around pygmentize")
4742 (description
4743 "Pygmentize provides a simple way to call pygmentize from within a Ruby
4744application.")
4745 (home-page "https://github.com/djanowski/pygmentize")
4746 (license license:expat)))
4747
2cbcd23a
DT
4748(define-public ruby-eventmachine
4749 (package
4750 (name "ruby-eventmachine")
c207fa5e 4751 (version "1.2.7")
2cbcd23a
DT
4752 (source
4753 (origin
4754 (method url-fetch)
4755 (uri (rubygems-uri "eventmachine" version))
4756 (sha256
4757 (base32
c207fa5e 4758 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
2cbcd23a
DT
4759 (build-system ruby-build-system)
4760 (arguments
c5d269fb 4761 '(#:tests? #f)) ; test suite tries to connect to google.com
2cbcd23a
DT
4762 (native-inputs
4763 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
4764 (synopsis "Single-threaded network event framework for Ruby")
4765 (description
4766 "EventMachine implements a single-threaded engine for arbitrary network
4767communications. EventMachine wraps all interactions with sockets, allowing
4768programs to concentrate on the implementation of network protocols. It can be
4769used to create both network servers and clients.")
24a26227
TGR
4770 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
4771 (home-page "https://github.com/eventmachine/eventmachine")
2cbcd23a 4772 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
7d3a1a2d 4773
e218b0c8
BW
4774(define-public ruby-ruby-engine
4775 (package
4776 (name "ruby-ruby-engine")
4777 (version "1.0.1")
4778 (source
4779 (origin
4780 (method url-fetch)
4781 (uri (rubygems-uri "ruby_engine" version))
4782 (sha256
4783 (base32
4784 "1d0sd4q50zkcqhr395wj1wpn2ql52r0fpwhzjfvi1bljml7k546v"))))
4785 (build-system ruby-build-system)
4786 (arguments
4787 `(#:phases
4788 (modify-phases %standard-phases
4789 (add-before 'check 'clean-up
4790 (lambda _
4791 (delete-file "Gemfile.lock")
4792 (substitute* "ruby_engine.gemspec"
4793 ;; Remove unnecessary imports that would entail further
4794 ;; dependencies.
4795 ((".*<rdoc.*") "")
4796 ((".*<rubygems-tasks.*") "")
4797 ;; Remove extraneous .gem file
4798 (("\\\"pkg/ruby_engine-1.0.0.gem\\\",") "")
4799 ;; Soften rake dependency
4800 (("%q<rake>.freeze, \\[\\\"~> 10.0\\\"\\]")
4801 "%q<rake>.freeze, [\">= 10.0\"]")
4802 ;; Soften the rspec dependency
4803 (("%q<rspec>.freeze, \\[\\\"~> 2.4\\\"\\]")
4804 "%q<rspec>.freeze, [\">= 2.4\"]"))
4805 (substitute* "Rakefile"
4806 (("require 'rubygems/tasks'") "")
4807 (("Gem::Tasks.new") ""))
4808 ;; Remove extraneous .gem file that otherwise gets installed.
4809 (delete-file "pkg/ruby_engine-1.0.0.gem")
4810 #t)))))
4811 (native-inputs
4812 `(("bundler" ,bundler)
4813 ("ruby-rake" ,ruby-rake)
4814 ("ruby-rspec" ,ruby-rspec)))
4815 (synopsis "Simplifies checking for Ruby implementation")
4816 (description
4817 "@code{ruby_engine} provides an RubyEngine class that can be used to
4818check which implementation of Ruby is in use. It can provide the interpreter
4819name and provides query methods such as @{RubyEngine.mri?}.")
4820 (home-page "https://github.com/janlelis/ruby_engine")
4821 (license license:expat)))
4822
8092e333
BW
4823(define-public ruby-turn
4824 (package
4825 (name "ruby-turn")
4826 (version "0.9.7")
4827 (source
4828 (origin
4829 (method url-fetch)
4830 (uri (rubygems-uri "turn" version))
4831 (sha256
4832 (base32
4833 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
4834 (build-system ruby-build-system)
4835 (arguments
4836 `(#:phases
4837 (modify-phases %standard-phases
4838 ;; Tests fail because turn changes its environment so can no longer
4839 ;; find test/unit. Instead simply test if the executable runs
4840 ;; without issue.
4841 (replace 'check
4842 (lambda _
9923d5a4 4843 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
8092e333
BW
4844 (propagated-inputs
4845 `(("ruby-ansi" ,ruby-ansi)
4846 ("ruby-minitest" ,ruby-minitest-4)))
4847 (synopsis "Alternate set of alternative runners for MiniTest")
4848 (description
4849 "TURN provides a set of alternative runners for MiniTest which are both
4850colorful and informative. TURN displays each test on a separate line with
4851failures being displayed immediately instead of at the end of the tests. Note
4852that TURN is no longer being maintained.")
4853 (home-page "http://rubygems.org/gems/turn")
4854 (license license:expat)))
4855
8279b1d3
CB
4856(define-public ruby-mimemagic
4857 (package
4858 (name "ruby-mimemagic")
4859 (version "0.3.2")
4860 (source
4861 (origin
4862 (method url-fetch)
4863 (uri (rubygems-uri "mimemagic" version))
4864 (sha256
4865 (base32
4866 "00ibc1mhvdfyfyl103xwb45621nwyqxf124cni5hyfhag0fn1c3q"))))
4867 (build-system ruby-build-system)
4868 (arguments
4869 '(#:phases
4870 (modify-phases %standard-phases
4871 ;; This phase breaks the tests, as it patches some of the test data.
4872 (delete 'patch-source-shebangs))))
4873 (native-inputs
4874 `(("ruby-bacon" ,ruby-bacon)))
4875 (synopsis "Ruby library for MIME detection by extension or content")
4876 (description
4877 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
4878extension or content, using the freedesktop.org.xml shared-mime-info
4879database.")
4880 (home-page "https://github.com/minad/mimemagic")
4881 (license license:expat)))
4882
32d1c06f
BW
4883(define-public ruby-mime-types-data
4884 (package
4885 (name "ruby-mime-types-data")
f49511db 4886 (version "3.2016.0521")
32d1c06f
BW
4887 (source
4888 (origin
4889 (method url-fetch)
4890 (uri (rubygems-uri "mime-types-data" version))
4891 (sha256
4892 (base32
f49511db 4893 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
32d1c06f
BW
4894 (build-system ruby-build-system)
4895 (native-inputs
4896 `(("ruby-hoe" ,ruby-hoe)))
4897 (synopsis "Registry for information about MIME media type definitions")
4898 (description
4899 "@code{mime-types-data} provides a registry for information about
4900Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
4901be used with the Ruby mime-types library or other software to determine
4902defined filename extensions for MIME types, or to use filename extensions to
4903look up the likely MIME type definitions.")
4904 (home-page "https://github.com/mime-types/mime-types-data/")
4905 (license license:expat)))
4906
d39b606c
BW
4907(define-public ruby-mime-types
4908 (package
4909 (name "ruby-mime-types")
803bcc81 4910 (version "3.1")
d39b606c
BW
4911 (source
4912 (origin
4913 (method url-fetch)
4914 (uri (rubygems-uri "mime-types" version))
4915 (sha256
4916 (base32
803bcc81 4917 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
d39b606c
BW
4918 (build-system ruby-build-system)
4919 (propagated-inputs
4920 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
4921 (native-inputs
4922 `(("ruby-hoe" ,ruby-hoe)
4923 ("ruby-fivemat" ,ruby-fivemat)
4924 ("ruby-minitest-focus" ,ruby-minitest-focus)
4925 ("ruby-minitest-rg" ,ruby-minitest-rg)
803bcc81
BW
4926 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
4927 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
d39b606c
BW
4928 (synopsis "Library and registry for MIME content type definitions")
4929 (description "The mime-types library provides a library and registry for
4930information about Multipurpose Internet Mail Extensions (MIME) content type
4931definitions. It can be used to determine defined filename extensions for MIME
4932types, or to use filename extensions to look up the likely MIME type
4933definitions.")
4934 (home-page "https://github.com/mime-types/ruby-mime-types")
4935 (license license:expat)))
4936
eb5e0bd9
BW
4937(define-public ruby-fivemat
4938 (package
4939 (name "ruby-fivemat")
7e2a4a6b 4940 (version "1.3.6")
eb5e0bd9
BW
4941 (source
4942 (origin
4943 (method url-fetch)
4944 (uri (rubygems-uri "fivemat" version))
4945 (sha256
4946 (base32
7e2a4a6b 4947 "006n7b09vviv5bs5hv2ccmjxw9iw3brcsm3xh3dhzfncsknz4jp7"))))
eb5e0bd9
BW
4948 (build-system ruby-build-system)
4949 (arguments
4950 `(#:tests? #f)) ; no tests
4951 (synopsis "Each test file given its own line of dots")
4952 (description
4953 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
4954its own line of dots during testing. It aims to provide test output that is
4955neither too verbose nor too minimal.")
4956 (home-page "https://github.com/tpope/fivemat")
4957 (license license:expat)))
4958
4fea500b
BW
4959(define-public ruby-sqlite3
4960 (package
4961 (name "ruby-sqlite3")
cba53c60 4962 (version "1.3.13")
4fea500b
BW
4963 (source
4964 (origin
4965 (method url-fetch)
4966 (uri (rubygems-uri "sqlite3" version))
4967 (sha256
4968 (base32
cba53c60 4969 "01ifzp8nwzqppda419c9wcvr8n82ysmisrs0hph9pdmv1lpa4f5i"))))
4fea500b
BW
4970 (build-system ruby-build-system)
4971 (arguments
4972 `(#:phases
4973 (modify-phases %standard-phases
54a93355
MB
4974 (add-before 'check 'adjust-failing-test
4975 (lambda _
4976 ;; XXX: This test fails with SQLite versions >= 3.21.
4977 ;; See <https://github.com/sparklemotion/sqlite3-ruby/issues/226>.
4978 (substitute* "test/test_integration_resultset.rb"
4979 (("\"integer\", \"text\"") "\"INTEGER\", \"text\""))
4980 #t))
4fea500b
BW
4981 (add-before 'check 'add-gemtest-file
4982 ;; This file exists in the repository but is not distributed.
9923d5a4 4983 (lambda _ (invoke "touch" ".gemtest"))))))
4fea500b
BW
4984 (inputs
4985 `(("sqlite" ,sqlite)))
4986 (native-inputs
4987 `(("ruby-hoe" ,ruby-hoe)
4988 ("ruby-rake-compiler" ,ruby-rake-compiler)
4989 ("ruby-mini-portile" ,ruby-mini-portile)))
4990 (synopsis "Interface with SQLite3 databases")
4991 (description
4992 "This module allows Ruby programs to interface with the SQLite3 database
4993engine.")
4994 (home-page
4995 "https://github.com/sparklemotion/sqlite3-ruby")
4996 (license license:bsd-3)))
4997
4dfa39cc
BW
4998(define-public ruby-shoulda-context
4999 (package
5000 (name "ruby-shoulda-context")
e7d1d472 5001 (version "1.2.2")
4dfa39cc
BW
5002 (source
5003 (origin
5004 (method url-fetch)
5005 (uri (rubygems-uri "shoulda-context" version))
5006 (sha256
5007 (base32
e7d1d472 5008 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
4dfa39cc
BW
5009 (build-system ruby-build-system)
5010 (arguments
5011 `(#:phases
5012 (modify-phases %standard-phases
5013 (replace 'check
5014 (lambda _
5015 ;; Do not run tests to avoid circular dependence with rails.
5016 ;; Instead just import the library to test.
9923d5a4 5017 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
4dfa39cc
BW
5018 (synopsis "Test::Unit context framework extracted from Shoulda")
5019 (description
5020 "@code{shoulda-context} is the context framework extracted from Shoulda.
5021Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
5022context, setup, and should blocks combine to produce natural test method
5023names.")
5024 (home-page "https://github.com/thoughtbot/shoulda-context")
5025 (license license:expat)))
5026
e4fea008
BW
5027(define-public ruby-shoulda-matchers
5028 (package
5029 (name "ruby-shoulda-matchers")
d1c1f368 5030 (version "3.1.2")
e4fea008
BW
5031 (source
5032 (origin
5033 (method url-fetch)
5034 (uri (rubygems-uri "shoulda-matchers" version))
5035 (sha256
5036 (base32
d1c1f368 5037 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
e4fea008
BW
5038 (build-system ruby-build-system)
5039 (arguments
5040 `(#:phases
5041 (modify-phases %standard-phases
e4fea008
BW
5042 (replace 'check
5043 (lambda _
5044 ;; Do not run tests to avoid circular dependence with rails. Instead
5045 ;; just import the library to test.
9923d5a4 5046 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
e4fea008
BW
5047 (propagated-inputs
5048 `(("ruby-activesupport" ,ruby-activesupport)))
5049 (synopsis "Collection of testing matchers extracted from Shoulda")
5050 (description
5051 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
5052test common Rails functionality. These tests would otherwise be much longer,
5053more complex, and error-prone.")
5054 (home-page "https://github.com/thoughtbot/shoulda-matchers")
5055 (license license:expat)))
5056
3885c58b
BW
5057(define-public ruby-shoulda-matchers-2
5058 (package
5059 (inherit ruby-shoulda-matchers)
5060 (version "2.8.0")
5061 (source (origin
5062 (method url-fetch)
5063 (uri (rubygems-uri "shoulda-matchers" version))
5064 (sha256
5065 (base32
5066 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
5067
6f390716
BW
5068(define-public ruby-shoulda
5069 (package
5070 (name "ruby-shoulda")
5071 (version "3.5.0")
5072 (source
5073 (origin
5074 (method url-fetch)
5075 (uri (rubygems-uri "shoulda" version))
5076 (sha256
5077 (base32
5078 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
5079 (build-system ruby-build-system)
5080 (arguments
5081 `(#:phases
5082 (modify-phases %standard-phases
5083 (replace 'check
5084 ;; Don't run tests to avoid circular dependence with rails. Instead
5085 ;; just import the library to test.
9923d5a4 5086 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
6f390716
BW
5087 (propagated-inputs
5088 `(("ruby-shoulda-context" ,ruby-shoulda-context)
5089 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
5090 (synopsis "Context framework and matchers for testing")
5091 (description
5092 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
5093@code{shoulda-matchers} providing tools for writing tests.")
5094 (home-page "https://github.com/thoughtbot/shoulda")
5095 (license license:expat)))
5096
3b44bcdf
BW
5097(define-public ruby-unf
5098 (package
5099 (name "ruby-unf")
5100 (version "0.1.4")
5101 (source
5102 (origin
5103 (method url-fetch)
5104 (uri (rubygems-uri "unf" version))
5105 (sha256
5106 (base32
5107 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
5108 (build-system ruby-build-system)
5109 (arguments
5110 `(#:phases
5111 (modify-phases %standard-phases
5112 (add-before 'check 'add-dependency-to-bundler
5113 (lambda _
5114 ;; test-unit is required but not provided by the bundler
5115 ;; environment. This is fixed in the upstream repository but fix
5116 ;; has not been released.
5117 (substitute* "Gemfile"
5118 (("^gemspec") "gem 'test-unit'\ngemspec"))
5119 #t)))))
5120 (propagated-inputs
5121 `(("ruby-unf-ext" ,ruby-unf-ext)))
5122 (native-inputs
5123 `(("ruby-shoulda" ,ruby-shoulda)
5124 ("bundler" ,bundler)
5125 ("ruby-test-unit" ,ruby-test-unit)))
5126 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
5127 (description
5128 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
5129support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
5130@code{java.text.Normalizer} on JRuby.")
5131 (home-page "https://github.com/knu/ruby-unf")
5132 (license license:bsd-2)))
5133
8c7ae384
CB
5134(define-public ruby-webmock-2
5135 (package
5136 (name "ruby-webmock")
5137 (version "2.3.2")
5138 (source
5139 (origin
5140 (method url-fetch)
5141 (uri (rubygems-uri "webmock" version))
5142 (sha256
5143 (base32
5144 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))
5145 (build-system ruby-build-system)
5146 (native-inputs
5147 `(("bundler" ,bundler)
5148 ("ruby-rspec" ,ruby-rspec)))
5149 (propagated-inputs
5150 `(("ruby-addressable" ,ruby-addressable)
5151 ("ruby-crack" ,ruby-crack)
5152 ("ruby-hashdiff" ,ruby-hashdiff)))
5153 (synopsis "Allows stubbing and setting expectations on HTTP requests")
5154 (description
5155 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
5156requests. This is useful when testing software.")
5157 (home-page "https://github.com/bblimke/webmock")
5158 (license license:expat)))
5159
d8c189ed
CB
5160(define-public ruby-unicode-display-width
5161 (package
5162 (name "ruby-unicode-display-width")
5163 (version "1.4.1")
5164 (source
5165 (origin
5166 (method url-fetch)
5167 (uri (rubygems-uri "unicode-display_width" version))
5168 (sha256
5169 (base32
5170 "0bq528fibi8s0jmxz0xzlgzggdq0x4fx46wfqz49478pv8gb2diq"))))
5171 (build-system ruby-build-system)
5172 (arguments
5173 '(;; Test data not included.
5174 #:tests? #f))
5175 (synopsis "Determine the monospace display width of Ruby strings")
5176 (description
5177 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
5178display width of strings in Ruby.")
5179 (home-page "https://github.com/janlelis/unicode-display_width")
5180 (license license:expat)))
5181
5799aadd
BW
5182(define-public ruby-domain-name
5183 (package
5184 (name "ruby-domain-name")
222999c9 5185 (version "0.5.20180417")
5799aadd
BW
5186 (source
5187 (origin
5188 (method url-fetch)
5189 (uri (rubygems-uri "domain_name" version))
5190 (sha256
5191 (base32
222999c9 5192 "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v"))))
5799aadd
BW
5193 (build-system ruby-build-system)
5194 (arguments
5195 `(#:phases
5196 (modify-phases %standard-phases
5197 (add-before 'check 'fix-versions
5198 (lambda _
5199 ;; Fix NameError that appears to already be fixed upstream.
5200 (substitute* "Rakefile"
5201 (("DomainName::VERSION")
5202 "Bundler::GemHelper.gemspec.version"))
5203 ;; Loosen unnecessarily strict test-unit version specification.
5204 (substitute* "domain_name.gemspec"
71596c3c 5205 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
5799aadd
BW
5206 #t)))))
5207 (propagated-inputs
5208 `(("ruby-unf" ,ruby-unf)))
5209 (native-inputs
5210 `(("ruby-shoulda" ,ruby-shoulda)
5211 ("bundler" ,bundler)
5212 ("ruby-test-unit" ,ruby-test-unit)))
5213 (synopsis "Domain name manipulation library")
5214 (description
5215 "@code{domain_name} is a Domain name manipulation library. It parses a
5216domain name ready for extracting the registered domain and TLD (Top Level
5217Domain). It can also be used for cookie domain validation based on the Public
5218Suffix List.")
5219 (home-page "https://github.com/knu/ruby-domain_name")
5220 (license license:bsd-2)))
5221
d114ceeb
BW
5222(define-public ruby-http-cookie
5223 (package
5224 (name "ruby-http-cookie")
2a2eb07d 5225 (version "1.0.3")
d114ceeb
BW
5226 (source
5227 (origin
5228 (method url-fetch)
5229 (uri (rubygems-uri "http-cookie" version))
5230 (sha256
5231 (base32
2a2eb07d 5232 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
d114ceeb
BW
5233 (build-system ruby-build-system)
5234 (arguments
5235 `(#:phases
5236 (modify-phases %standard-phases
5237 (add-before 'check 'add-dependency-to-bundler
5238 (lambda _
5239 ;; Fix NameError
5240 (substitute* "Rakefile"
5241 (("HTTP::Cookie::VERSION")
5242 "Bundler::GemHelper.gemspec.version"))
5243 #t)))))
5244 (propagated-inputs
5245 `(("ruby-domain-name" ,ruby-domain-name)))
5246 (native-inputs
5247 `(("rubysimplecov" ,ruby-simplecov)
5248 ("bundler" ,bundler)
5249 ("ruby-sqlite3" ,ruby-sqlite3)
5250 ("ruby-test-unit" ,ruby-test-unit)))
5251 (synopsis "Handle HTTP Cookies based on RFC 6265")
5252 (description
5253 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
5254RFC 6265. It has been designed with security, standards compliance and
5255compatibility in mind, to behave just the same as today's major web browsers.
5256It has built-in support for the legacy @code{cookies.txt} and
5257@code{cookies.sqlite} formats of Mozilla Firefox.")
5258 (home-page "https://github.com/sparklemotion/http-cookie")
5259 (license license:expat)))
5260
1c8e6fd3
CB
5261(define-public ruby-httpclient
5262 (package
5263 (name "ruby-httpclient")
5264 (version "2.8.3")
5265 (source
5266 (origin
5267 (method url-fetch)
5268 (uri (rubygems-uri "httpclient" version))
5269 (sha256
5270 (base32
5271 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
5272 (build-system ruby-build-system)
5273 (arguments
5274 '(;; TODO: Some tests currently fail
5275 ;; ------
5276 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
5277 ;; 2 omissions, 0 notifications
5278 ;; 91.866% passed
5279 ;; ------
5280 ;; 6.49 tests/s, 22.41 assertions/s
5281 #:tests? #f
5282 #:phases
5283 (modify-phases %standard-phases
5284 (replace 'check
5285 (lambda* (#:key tests? #:allow-other-keys)
5286 (if tests?
9923d5a4
TGR
5287 (invoke "ruby"
5288 "-Ilib"
5289 "test/runner.rb")
0076f5a9 5290 #t))))))
1c8e6fd3
CB
5291 (native-inputs
5292 `(("ruby-rack" ,ruby-rack)))
5293 (synopsis
5294 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
5295 (description
5296 "The @code{httpclient} ruby library provides functionality related to
5297HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
5298Cookie, multithreading and authentication (digest, NTLM) support.
5299
5300Also provided is a @command{httpclient} command, which can perform HTTP
5301requests either using arguments or with an interactive prompt.")
5302 (home-page "https://github.com/nahi/httpclient")
5303 (license license:ruby)))
5304
7d3a1a2d
BW
5305(define-public ruby-ansi
5306 (package
5307 (name "ruby-ansi")
5308 (version "1.5.0")
5309 (source
5310 (origin
5311 (method url-fetch)
5312 ;; Fetch from GitHub as the gem does not contain testing code.
5313 (uri (string-append "https://github.com/rubyworks/ansi/archive/"
5314 version ".tar.gz"))
5315 (file-name (string-append name "-" version ".tar.gz"))
5316 (sha256
5317 (base32
5318 "1zdip30hivyipi8hndhb457bhiz033awd00bgrsk5axjrwp6zhly"))))
5319 (build-system ruby-build-system)
5320 (arguments
5321 `(#:phases
5322 (modify-phases %standard-phases
5323 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
5324 ;; cycle ansi, qed, ansi. Instead simply test that the library can
5325 ;; be require'd.
5326 (replace 'check
5327 (lambda _
9923d5a4 5328 (invoke "ruby" "-Ilib" "-r" "ansi")))
0899352f
MB
5329 (add-before 'validate-runpath 'replace-broken-symlink
5330 (lambda* (#:key outputs #:allow-other-keys)
5331 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
5332 (file (string-append
5333 out "/lib/ruby/vendor_ruby/gems/ansi-"
5334 ,version "/lib/ansi.yml")))
0899352f
MB
5335 ;; XXX: This symlink is broken since ruby 2.4.
5336 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
5337 (delete-file file)
5338 (symlink "../.index" file)
5339 #t))))))
7d3a1a2d
BW
5340 (synopsis "ANSI escape code related libraries")
5341 (description
5342 "This package is a collection of ANSI escape code related libraries
5343enabling ANSI colorization and stylization of console output. Included in the
5344library are the @code{Code} module, which defines ANSI codes as constants and
5345methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
5346@code{ProgressBar}, and a @code{String} subclass. The library also includes a
5347@code{Terminal} module which provides information about the current output
5348device.")
2f3800e5 5349 (home-page "https://rubyworks.github.io/ansi")
7d3a1a2d 5350 (license license:bsd-2)))
7c033c46
BW
5351
5352(define-public ruby-systemu
5353 (package
5354 (name "ruby-systemu")
5355 (version "2.6.5")
5356 (source
5357 (origin
5358 (method url-fetch)
5359 (uri (rubygems-uri "systemu" version))
5360 (sha256
5361 (base32
5362 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
5363 (build-system ruby-build-system)
5364 (arguments
5365 `(#:phases
5366 (modify-phases %standard-phases
5367 (add-before 'check 'set-version
5368 (lambda _
5369 (setenv "VERSION" ,version)
5370 #t)))))
5371 (synopsis "Capture of stdout/stderr and handling of child processes")
5372 (description
5373 "Systemu can be used on any platform to return status, stdout, and stderr
5374of any command. Unlike other methods like @code{open3} and @code{popen4}
5375there is no danger of full pipes or threading issues hanging your process or
5376subprocess.")
5377 (home-page "https://github.com/ahoward/systemu")
5378 (license license:ruby)))
3d84a99e
BW
5379
5380(define-public ruby-bio-commandeer
5381 (package
5382 (name "ruby-bio-commandeer")
37b08547 5383 (version "0.4.0")
3d84a99e
BW
5384 (source
5385 (origin
5386 (method url-fetch)
5387 (uri (rubygems-uri "bio-commandeer" version))
5388 (sha256
5389 (base32
37b08547 5390 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
3d84a99e
BW
5391 (build-system ruby-build-system)
5392 (arguments
5393 `(#:phases
5394 (modify-phases %standard-phases
5395 (replace 'check
5396 ;; Run test without calling 'rake' so that jeweler is
5397 ;; not required as an input.
5398 (lambda _
9923d5a4 5399 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
3d84a99e
BW
5400 (propagated-inputs
5401 `(("ruby-bio-logger" ,ruby-bio-logger)
5402 ("ruby-systemu" ,ruby-systemu)))
5403 (native-inputs
5404 `(("bundler" ,bundler)
5405 ("ruby-rspec" ,ruby-rspec)))
5406 (synopsis "Simplified running of shell commands from within Ruby")
5407 (description
5408 "Bio-commandeer provides an opinionated method of running shell commands
5409from within Ruby. The advantage of bio-commandeer over other methods of
5410running external commands is that when something goes wrong, messages printed
5411to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
5412detail to ease debugging.")
7bf837fd 5413 (home-page "https://github.com/wwood/bioruby-commandeer")
3d84a99e 5414 (license license:expat)))
7c8131c7
BW
5415
5416(define-public ruby-rubytest
5417 (package
5418 (name "ruby-rubytest")
5419 (version "0.8.1")
5420 (source
5421 (origin
5422 (method url-fetch)
5423 (uri (rubygems-uri "rubytest" version))
5424 (sha256
5425 (base32
5426 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
5427 (build-system ruby-build-system)
5428 (arguments
5429 ;; Disable regular testing to break the cycle rubytest, qed, brass,
5430 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
5431 ;; simply test that the library can be require'd.
5432 `(#:phases
5433 (modify-phases %standard-phases
5434 (replace 'check
5435 (lambda _
9923d5a4 5436 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
7c8131c7
BW
5437 (propagated-inputs
5438 `(("ruby-ansi" ,ruby-ansi)))
5439 (synopsis "Universal test harness for Ruby")
5440 (description
5441 "Rubytest is a testing meta-framework for Ruby. It can handle any
5442compliant test framework and can run tests from multiple frameworks in a
5443single pass.")
2f3800e5 5444 (home-page "https://rubyworks.github.io/rubytest")
7c8131c7 5445 (license license:bsd-2)))
90fcedf2
BW
5446
5447(define-public ruby-brass
5448 (package
5449 (name "ruby-brass")
5450 (version "1.2.1")
5451 (source
5452 (origin
5453 (method url-fetch)
5454 (uri (rubygems-uri "brass" version))
5455 (sha256
5456 (base32
5457 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
5458 (build-system ruby-build-system)
5459 (arguments
5460 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
5461 ;; Instead simply test that the library can be require'd.
5462 `(#:phases
5463 (modify-phases %standard-phases
5464 (replace 'check
5465 (lambda _
9923d5a4 5466 (invoke "ruby" "-Ilib" "-r" "brass"))))))
90fcedf2
BW
5467 (synopsis "Basic foundational assertions framework")
5468 (description
5469 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
5470foundational assertions framework for other assertion and test frameworks to
5471make use of.")
2f3800e5 5472 (home-page "https://rubyworks.github.io/brass")
90fcedf2 5473 (license license:bsd-2)))
120fc74b
BW
5474
5475(define-public ruby-qed
5476 (package
5477 (name "ruby-qed")
5478 (version "2.9.2")
5479 (source
5480 (origin
5481 (method url-fetch)
5482 (uri (rubygems-uri "qed" version))
5483 (sha256
5484 (base32
5485 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
5486 (build-system ruby-build-system)
5487 (arguments
5488 ;; Disable testing to break the cycle qed, ansi, qed, among others.
5489 ;; Instead simply test that the executable runs using --copyright.
5490 `(#:phases
5491 (modify-phases %standard-phases
5492 (replace 'check
5493 (lambda _
9923d5a4 5494 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
120fc74b
BW
5495 (propagated-inputs
5496 `(("ruby-ansi" ,ruby-ansi)
5497 ("ruby-brass" ,ruby-brass)))
5498 (synopsis "Test framework utilizing literate programming techniques")
5499 (description
5500 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
5501@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
5502Development} (BDD) utilizing Literate Programming techniques. QED sits
5503somewhere between lower-level testing tools like @code{Test::Unit} and
5504requirement specifications systems like Cucumber.")
2f3800e5 5505 (home-page "https://rubyworks.github.io/qed")
120fc74b 5506 (license license:bsd-2)))
9273ee8f
BW
5507
5508(define-public ruby-ae
5509 (package
5510 (name "ruby-ae")
5511 (version "1.8.2")
5512 (source
5513 (origin
5514 (method url-fetch)
5515 ;; Fetch from github so tests are included.
5516 (uri (string-append
5517 "https://github.com/rubyworks/ae/archive/"
5518 version ".tar.gz"))
5519 (file-name (string-append name "-" version ".tar.gz"))
5520 (sha256
5521 (base32
5522 "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl"))))
5523 (build-system ruby-build-system)
5524 (arguments
5525 `(#:phases
5526 (modify-phases %standard-phases
5527 (replace 'check
9923d5a4 5528 (lambda _ (invoke "qed")))
de6f6efd
MB
5529 (add-before 'validate-runpath 'replace-broken-symlink
5530 (lambda* (#:key outputs #:allow-other-keys)
5531 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
5532 (file (string-append
5533 out "/lib/ruby/vendor_ruby/gems/ae-"
5534 ,version "/lib/ae.yml")))
de6f6efd
MB
5535 ;; XXX: This symlink is broken since ruby 2.4.
5536 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
5537 (delete-file file)
5538 (symlink "../.index" file)
5539 #t))))))
9273ee8f
BW
5540 (propagated-inputs
5541 `(("ruby-ansi" ,ruby-ansi)))
5542 (native-inputs
5543 `(("ruby-qed" ,ruby-qed)))
5544 (synopsis "Assertions library")
5545 (description
5546 "Assertive Expressive (AE) is an assertions library specifically designed
5547for reuse by other test frameworks.")
2f3800e5 5548 (home-page "https://rubyworks.github.io/ae")
9273ee8f 5549 (license license:bsd-2)))
78bb471f
BW
5550
5551(define-public ruby-lemon
5552 (package
5553 (name "ruby-lemon")
5554 (version "0.9.1")
5555 (source
5556 (origin
5557 (method url-fetch)
5558 (uri (rubygems-uri "lemon" version))
5559 (sha256
5560 (base32
5561 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
5562 (build-system ruby-build-system)
5563 (arguments
5564 `(#:phases
5565 (modify-phases %standard-phases
9923d5a4 5566 (replace 'check (lambda _ (invoke "qed"))))))
78bb471f
BW
5567 (propagated-inputs
5568 `(("ruby-ae" ,ruby-ae)
5569 ("ruby-ansi" ,ruby-ansi)
5570 ("ruby-rubytest" ,ruby-rubytest)))
5571 (native-inputs
5572 `(("ruby-qed" ,ruby-qed)))
5573 (synopsis "Test framework correlating code structure and test unit")
5574 (description
5575 "Lemon is a unit testing framework that enforces highly formal
5576case-to-class and unit-to-method test construction. This enforcement can help
5577focus concern on individual units of behavior.")
2f3800e5 5578 (home-page "https://rubyworks.github.io/lemon")
78bb471f 5579 (license license:bsd-2)))
0832804e
BW
5580
5581(define-public ruby-rubytest-cli
5582 (package
5583 (name "ruby-rubytest-cli")
5584 (version "0.2.0")
5585 (source
5586 (origin
5587 (method url-fetch)
5588 (uri (rubygems-uri "rubytest-cli" version))
5589 (sha256
5590 (base32
5591 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
5592 (build-system ruby-build-system)
5593 (arguments
5594 `(#:tests? #f)) ; no tests
5595 (propagated-inputs
5596 `(("ruby-ansi" ,ruby-ansi)
5597 ("ruby-rubytest" ,ruby-rubytest)))
5598 (synopsis "Command-line interface for rubytest")
5599 (description
5600 "Rubytest CLI is a command-line interface for running tests for
5601Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
2f3800e5 5602 (home-page "https://rubyworks.github.io/rubytest-cli")
0832804e 5603 (license license:bsd-2)))
72ccbfe3
BW
5604
5605(define-public ruby-hashery
5606 (package
5607 (name "ruby-hashery")
cba96208 5608 (version "2.1.2")
72ccbfe3
BW
5609 (source
5610 (origin
5611 (method url-fetch)
5612 (uri (rubygems-uri "hashery" version))
5613 (sha256
5614 (base32
cba96208 5615 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
72ccbfe3
BW
5616 (build-system ruby-build-system)
5617 (arguments
5618 `(#:phases
5619 (modify-phases %standard-phases
5620 (replace 'check
5621 (lambda _
9923d5a4
TGR
5622 (invoke "qed")
5623 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
72ccbfe3
BW
5624 (native-inputs
5625 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
5626 ("ruby-qed" ,ruby-qed)
5627 ("ruby-lemon" ,ruby-lemon)))
5628 (synopsis "Hash-like classes with extra features")
5629 (description
5630 "The Hashery is a tight collection of @code{Hash}-like classes.
5631Included are the auto-sorting @code{Dictionary} class, the efficient
5632@code{LRUHash}, the flexible @code{OpenHash} and the convenient
5633@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
5634defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
5635standard @code{Hash} making it possible to subclass and augment to fit any
5636specific use case.")
2f3800e5 5637 (home-page "https://rubyworks.github.io/hashery")
72ccbfe3 5638 (license license:bsd-2)))
1f1d71e0
BW
5639
5640(define-public ruby-rc4
5641 (package
5642 (name "ruby-rc4")
5643 (version "0.1.5")
5644 (source
5645 (origin
5646 (method url-fetch)
5647 (uri (rubygems-uri "ruby-rc4" version))
5648 (sha256
5649 (base32
5650 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
5651 (build-system ruby-build-system)
5652 (arguments
5653 `(#:phases
5654 (modify-phases %standard-phases
5655 (replace 'check
5656 (lambda _
9923d5a4 5657 (invoke "rspec" "spec/rc4_spec.rb"))))))
1f1d71e0
BW
5658 (native-inputs
5659 `(("ruby-rspec" ,ruby-rspec-2)))
5660 (synopsis "Implementation of the RC4 algorithm")
5661 (description
5662 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
5663 (home-page "https://github.com/caiges/Ruby-RC4")
5664 (license license:expat)))
f3e085a8
BW
5665
5666(define-public ruby-afm
5667 (package
5668 (name "ruby-afm")
5669 (version "0.2.2")
5670 (source
5671 (origin
5672 (method url-fetch)
5673 (uri (rubygems-uri "afm" version))
5674 (sha256
5675 (base32
5676 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
5677 (build-system ruby-build-system)
5678 (native-inputs
5679 `(("bundler" ,bundler)))
5680 (synopsis "Read Adobe Font Metrics (afm) files")
5681 (description
5682 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
5683files and use the data therein.")
7bf837fd 5684 (home-page "https://github.com/halfbyte/afm")
f3e085a8 5685 (license license:expat)))
acb6be42
BW
5686
5687(define-public ruby-ascii85
5688 (package
5689 (name "ruby-ascii85")
5854082a 5690 (version "1.0.3")
acb6be42
BW
5691 (source
5692 (origin
5693 (method url-fetch)
5694 (uri (rubygems-uri "Ascii85" version))
5695 (sha256
5696 (base32
5854082a 5697 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
acb6be42
BW
5698 (build-system ruby-build-system)
5699 (native-inputs
5700 `(("bundler" ,bundler)))
5701 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
5702 (description
5703 "This library provides methods to encode and decode Ascii85
5704binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
5705@dfn{Portable Document Format} (PDF) file formats.")
5706 (home-page "https://github.com/datawraith/ascii85gem")
5707 (license license:expat)))
edf8caae
BW
5708
5709(define-public ruby-ttfunk
5710 (package
5711 (name "ruby-ttfunk")
afb7a3e8 5712 (version "1.5.1")
edf8caae
BW
5713 (source
5714 (origin
5715 (method url-fetch)
5716 ;; fetch from github as the gem does not contain testing code
5717 (uri (string-append
5718 "https://github.com/prawnpdf/ttfunk/archive/"
5719 version ".tar.gz"))
5720 (file-name (string-append name "-" version ".tar.gz"))
5721 (sha256
5722 (base32
afb7a3e8 5723 "1ymcn12n5iws401yz03zsj8rr653fdqq13czsrciq09phgh9jzc5"))))
edf8caae
BW
5724 (build-system ruby-build-system)
5725 (arguments
5726 `(#:test-target "spec"
5727 #:phases
5728 (modify-phases %standard-phases
afb7a3e8
JL
5729 (add-before 'build 'remove-ssh
5730 (lambda _
5731 ;; remove dependency on an ssh key pair that doesn't exist
5732 (substitute* "ttfunk.gemspec"
5733 (("spec.signing_key.*") ""))
5734 #t))
edf8caae
BW
5735 (add-before 'check 'remove-rubocop
5736 (lambda _
5737 ;; remove rubocop as a dependency as not needed for testing
5738 (substitute* "ttfunk.gemspec"
5739 (("spec.add_development_dependency\\('rubocop'.*") ""))
5740 (substitute* "Rakefile"
5741 (("require 'rubocop/rake_task'") "")
afb7a3e8 5742 (("RuboCop::RakeTask.new") ""))
edf8caae
BW
5743 #t)))))
5744 (native-inputs
5745 `(("ruby-rspec" ,ruby-rspec)
afb7a3e8 5746 ("ruby-yard" ,ruby-yard)
edf8caae
BW
5747 ("bundler" ,bundler)))
5748 (synopsis "Font metrics parser for the Prawn PDF generator")
5749 (description
5750 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
5751part of the Prawn PDF generator.")
5752 (home-page "https://github.com/prawnpdf/ttfunk")
5753 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
5754 ;; for details."
5755 (license (list license:gpl2 license:gpl3 license:ruby))))
cbdd428c 5756
9270298f
BW
5757(define-public ruby-puma
5758 (package
5759 (name "ruby-puma")
63755fcd 5760 (version "3.9.1")
9270298f
BW
5761 (source
5762 (origin
5763 (method url-fetch)
5764 ;; Fetch from GitHub because distributed gem does not contain tests.
5765 (uri (string-append "https://github.com/puma/puma/archive/v"
5766 version ".tar.gz"))
5767 (file-name (string-append name "-" version ".tar.gz"))
5768 (sha256
5769 (base32
63755fcd 5770 "03pifga841h17brh4vgia8i2ybh3cmsyg0dbybzdf6dq51wzcxdx"))))
9270298f
BW
5771 (build-system ruby-build-system)
5772 (arguments
63755fcd
BW
5773 `(#:tests? #f ; Tests require an out-dated version of minitest.
5774 #:phases
9270298f
BW
5775 (modify-phases %standard-phases
5776 (add-before 'build 'fix-gemspec
5777 (lambda _
5778 (substitute* "puma.gemspec"
5779 (("git ls-files") "find * |sort"))
5780 #t)))))
9270298f
BW
5781 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
5782 (description
5783 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
5784for Ruby/Rack applications. Puma is intended for use in both development and
5785production environments. In order to get the best throughput, it is highly
5786recommended that you use a Ruby implementation with real threads like Rubinius
5787or JRuby.")
5788 (home-page "http://puma.io")
5789 (license license:expat)))
5790
b0813490
BW
5791(define-public ruby-hoe-git
5792 (package
5793 (name "ruby-hoe-git")
5794 (version "1.6.0")
5795 (source
5796 (origin
5797 (method url-fetch)
5798 (uri (rubygems-uri "hoe-git" version))
5799 (sha256
5800 (base32
5801 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
5802 (build-system ruby-build-system)
5803 (propagated-inputs
5804 `(("ruby-hoe" ,ruby-hoe)
5805 ("git" ,git)))
5806 (synopsis "Hoe plugins for tighter Git integration")
5807 (description
5808 "This package provides a set of Hoe plugins for tighter Git integration.
5809It provides tasks to automate release tagging and pushing and changelog
5810generation.")
7bf837fd 5811 (home-page "https://github.com/jbarnette/hoe-git")
b0813490
BW
5812 (license license:expat)))
5813
cbdd428c
BW
5814(define-public ruby-sequel
5815 (package
5816 (name "ruby-sequel")
65a7f09c 5817 (version "4.49.0")
cbdd428c
BW
5818 (source
5819 (origin
5820 (method url-fetch)
5821 (uri (rubygems-uri "sequel" version))
5822 (sha256
5823 (base32
65a7f09c 5824 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
cbdd428c
BW
5825 (build-system ruby-build-system)
5826 (arguments
5827 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
5828 (synopsis "Database toolkit for Ruby")
5829 (description "Sequel provides thread safety, connection pooling and a
5830concise DSL for constructing SQL queries and table schemas. It includes a
5831comprehensive ORM layer for mapping records to Ruby objects and handling
5832associated records.")
5833 (home-page "http://sequel.jeremyevans.net")
5834 (license license:expat)))
3cc78097
BW
5835
5836(define-public ruby-timecop
5837 (package
5838 (name "ruby-timecop")
3d4a5eb5 5839 (version "0.9.1")
3cc78097
BW
5840 (source
5841 (origin
5842 (method url-fetch)
5843 (uri (rubygems-uri "timecop" version))
5844 (sha256
5845 (base32
3d4a5eb5 5846 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
3cc78097
BW
5847 (build-system ruby-build-system)
5848 (arguments
5849 `(#:phases
5850 (modify-phases %standard-phases
5851 (add-before 'check 'set-check-rubylib
5852 (lambda _
5853 ;; Set RUBYLIB so timecop tests finds its own lib.
5854 (setenv "RUBYLIB" "lib")
5855 #t)))))
5856 (native-inputs
5857 `(("bundler" ,bundler)
5858 ("ruby-minitest-rg" ,ruby-minitest-rg)
5859 ("ruby-mocha" ,ruby-mocha)
5860 ("ruby-activesupport" ,ruby-activesupport)))
66e07664 5861 (synopsis "Test mocks for time-dependent functions")
3cc78097
BW
5862 (description
5863 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
5864making it easier to test time-dependent code. It provides a unified method to
5865mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
5866call.")
5867 (home-page "https://github.com/travisjeffery/timecop")
5868 (license license:expat)))
5869
dae620b8
BW
5870(define-public ruby-concurrent
5871 (package
5872 (name "ruby-concurrent")
21aecec1 5873 (version "1.0.5")
dae620b8
BW
5874 (source
5875 (origin
5876 (method url-fetch)
5877 ;; Download from GitHub because the rubygems version does not contain
5878 ;; Rakefile.
5879 (uri (string-append
5880 "https://github.com/ruby-concurrency/concurrent-ruby/archive/v"
5881 version
5882 ".tar.gz"))
5883 (file-name (string-append name "-" version ".tar.gz"))
5884 (sha256
5885 (base32
21aecec1 5886 "0qhv0qzsby4iijgwa4s9r88zj8123pmyz1dwaqzdk57xgqll9pny"))
dae620b8
BW
5887 ;; Exclude failing test reported at
5888 ;; https://github.com/ruby-concurrency/concurrent-ruby/issues/534
402b03e6
LC
5889 (patches (search-patches "ruby-concurrent-ignore-broken-test.patch"
5890 "ruby-concurrent-test-arm.patch"))))
dae620b8
BW
5891 (build-system ruby-build-system)
5892 (arguments
5893 `(#:test-target "spec"
5894 #:phases
5895 (modify-phases %standard-phases
520e89eb 5896 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
dae620b8
BW
5897 (lambda _
5898 ;; Delete extra gemspec files so 'first-gemspec' chooses the
5899 ;; correct one.
5900 (delete-file "concurrent-ruby-edge.gemspec")
5901 (delete-file "concurrent-ruby-ext.gemspec")
5902 #t))
520e89eb
BW
5903 (add-before 'build 'replace-git-ls-files2
5904 (lambda _
5905 (substitute* "support/file_map.rb"
5906 (("git ls-files") "find * |sort"))
5907 #t))
dae620b8
BW
5908 (add-before 'check 'rake-compile
5909 ;; Fix the test error described at
5910 ;; https://github.com/ruby-concurrency/concurrent-ruby/pull/408
9923d5a4 5911 (lambda _ (invoke "rake" "compile")))
9019b37f
BW
5912 (add-before 'check 'remove-timecop-dependency
5913 ;; Remove timecop-dependent tests as having timecop as a depedency
5914 ;; causes circular depedencies.
5915 (lambda _
5916 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
5917 (delete-file "spec/concurrent/scheduled_task_spec.rb")
5918 #t)))))
dae620b8
BW
5919 (native-inputs
5920 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9019b37f 5921 ("ruby-rspec" ,ruby-rspec)))
dae620b8
BW
5922 (synopsis "Concurrency tools for Ruby")
5923 (description
5924 "This library provides modern concurrency tools including agents,
5925futures, promises, thread pools, actors, supervisors, and more. It is
5926inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
5927patterns.")
5928 (home-page "http://www.concurrent-ruby.com")
5929 (license license:expat)))
2de61e34
BW
5930
5931(define-public ruby-pkg-config
5932 (package
5933 (name "ruby-pkg-config")
884a80dd 5934 (version "1.2.5")
2de61e34
BW
5935 (source
5936 (origin
5937 (method url-fetch)
5938 (uri (rubygems-uri "pkg-config" version))
5939 (sha256
5940 (base32
884a80dd 5941 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
2de61e34
BW
5942 (build-system ruby-build-system)
5943 (arguments
5944 ;; Tests require extra files not included in the gem.
5945 `(#:tests? #f))
5946 (synopsis "Detect libraries for compiling Ruby native extensions")
5947 (description
5948 "@code{pkg-config} can be used in your extconf.rb to properly detect need
5949libraries for compiling Ruby native extensions.")
5950 (home-page "https://github.com/ruby-gnome2/pkg-config")
5951 (license license:lgpl2.0+)))
6689c636
MFM
5952
5953(define-public ruby-net-http-digest-auth
5954 (package
5955 (name "ruby-net-http-digest-auth")
ba074a85 5956 (version "1.4.1")
6689c636
MFM
5957 (source
5958 (origin
5959 (method url-fetch)
5960 (uri (rubygems-uri "net-http-digest_auth" version))
5961 (sha256
5962 (base32
ba074a85 5963 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
6689c636
MFM
5964 (build-system ruby-build-system)
5965 (native-inputs
5966 `(("ruby-hoe" ,ruby-hoe)))
5967 (synopsis "RFC 2617 HTTP digest authentication library")
5968 (description
5969 "This library implements HTTP's digest authentication scheme based on
5970RFC 2617. This enables the use of the digest authentication scheme instead
5971of the more insecure basic authentication scheme.")
7bf837fd 5972 (home-page "https://github.com/drbrain/net-http-digest_auth")
6689c636 5973 (license license:expat)))
06116573 5974
5975(define-public ruby-mail
5976 (package
5977 (name "ruby-mail")
04de0cb5 5978 (version "2.6.6")
06116573 5979 (source
5980 (origin
5981 (method url-fetch)
5982 (uri (rubygems-uri "mail" version))
5983 (sha256
5984 (base32
04de0cb5 5985 "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
06116573 5986 (build-system ruby-build-system)
5987 (propagated-inputs
5988 `(("ruby-mime-types" ,ruby-mime-types)))
5989 (arguments
5990 ;; Tests require extra gems not included in the Gemfile.
5991 ;; XXX: Try enabling this for the next version with mini_mime.
5992 `(#:tests? #f))
5993 (synopsis "Mail library for Ruby")
5994 (description
5995 "Mail is an internet library for Ruby that is designed to handle email
5996generation, parsing and sending. The purpose of this library is to provide
5997a single point of access to handle all email functions, including sending
5998and receiving emails. All network type actions are done through proxy
5999methods to @code{Net::SMTP}, @code{Net::POP3} etc.
6000
6001Mail has been designed with a very simple object oriented system that
6002really opens up the email messages you are parsing, if you know what you
6003are doing, you can fiddle with every last bit of your email directly.")
6004 (home-page "https://github.com/mikel/mail")
6005 (license license:expat)))
9b4c8e1b 6006
4d372cb9
CB
6007(define-public ruby-mathn
6008 (package
6009 (name "ruby-mathn")
6010 (version "0.1.0")
6011 (source
6012 (origin
6013 (method url-fetch)
6014 (uri (rubygems-uri "mathn" version))
6015 (sha256
6016 (base32
6017 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
6018 (build-system ruby-build-system)
6019 (native-inputs
6020 `(("bundler" ,bundler)
6021 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6022 (synopsis "Extends math operations for increased precision")
6023 (description
6024 "This gem makes mathematical operations more precise in Ruby and
6025integrates other mathematical standard libraries. Prior to Ruby 2.5,
6026@code{mathn} was part of the Ruby standard library.")
6027 (home-page "https://github.com/ruby/mathn")
6028 (license license:bsd-2)))
6029
9b4c8e1b
BW
6030(define-public ruby-code-statistics
6031 (package
6032 (name "ruby-code-statistics")
6033 (version "0.2.13")
6034 (source
6035 (origin
6036 (method url-fetch)
6037 (uri (rubygems-uri "code_statistics" version))
6038 (sha256
6039 (base32
6040 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
6041 (build-system ruby-build-system)
6042 (arguments
6043 `(#:tests? #f)) ; Not all test code is included in gem.
6044 (synopsis "Port of the rails 'rake stats' method")
6045 (description
6046 "This gem is a port of the rails 'rake stats' method so it can be made
6047more robust and work for non rails projects.")
6048 (home-page "http://github.com/danmayer/code_statistics")
6049 (license license:expat)))
f90c25c1
CL
6050
6051(define-public ruby-rubypants
6052 (package
6053 (name "ruby-rubypants")
6054 (version "0.6.0")
6055 (source (origin
6056 (method url-fetch)
6057 (uri (rubygems-uri "rubypants" version))
6058 (sha256
6059 (base32
6060 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
6061 (build-system ruby-build-system)
6062 (arguments
6063 '(#:tests? #f)) ; need Codecov
6064 (synopsis "Port of the smart-quotes library SmartyPants")
6065 (description
6066 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
6067original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
6068and BBEdit that easily translates plain ASCII punctuation characters into
6069smart typographic punctuation HTML entities.")
6070 (home-page "https://github.com/jmcnevin/rubypants")
6071 (license license:bsd-2)))
beb34835
CL
6072
6073(define-public ruby-org-ruby
6074 (package
6075 (name "ruby-org-ruby")
6076 (version "0.9.12")
6077 (source (origin
6078 (method url-fetch)
6079 (uri (rubygems-uri "org-ruby" version))
6080 (sha256
6081 (base32
6082 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
6083 (build-system ruby-build-system)
6084 (arguments
6085 '(#:tests? #f)) ; no rakefile
6086 (propagated-inputs
6087 `(("ruby-rubypants" ,ruby-rubypants)))
6088 (synopsis "Org-mode parser written in Ruby")
6089 (description
6090 "Org-ruby is an org-mode parser written in Ruby. The most significant
6091thing this library does today is convert org-mode files to HTML or Textile or
6092Markdown.")
6093 (home-page "https://github.com/wallyqs/org-ruby")
6094 (license license:expat)))
670ee20a
BW
6095
6096(define-public ruby-rake
6097 (package
6098 (name "ruby-rake")
d6fb32b8 6099 (version "12.3.1")
670ee20a
BW
6100 (source
6101 (origin
6102 (method url-fetch)
6103 (uri (rubygems-uri "rake" version))
6104 (sha256
6105 (base32
d6fb32b8 6106 "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg"))))
670ee20a
BW
6107 (build-system ruby-build-system)
6108 (native-inputs
6109 `(("bundler" ,bundler)))
6110 (synopsis "Rake is a Make-like program implemented in Ruby")
6111 (description
6112 "Rake is a Make-like program where tasks and dependencies are specified
6113in standard Ruby syntax.")
6114 (home-page "https://github.com/ruby/rake")
6115 (license license:expat)))
45498f51 6116
1f10e28d 6117(define-public ruby-childprocess-0.6
45498f51
DM
6118 (package
6119 (name "ruby-childprocess")
1f10e28d 6120 (version "0.6.3")
45498f51
DM
6121 (source
6122 (origin
6123 (method url-fetch)
6124 (uri (rubygems-uri "childprocess" version))
6125 (sha256
6126 (base32
1f10e28d 6127 "1p3f43scdzx9zxmy2kw5zsc3az6v46nq4brwcxmnscjy4w4racbv"))))
45498f51
DM
6128 (build-system ruby-build-system)
6129 (arguments
6130 `(#:tests? #f))
6131 (native-inputs
6132 `(("bundler" ,bundler)
6133 ("ruby-rspec" ,ruby-rspec)))
6134 (propagated-inputs
6135 `(("ruby-ffi" ,ruby-ffi)))
6136 (synopsis "Control external programs running in the background, in Ruby")
6137 (description "@code{childprocess} provides a gem to control external
6138programs running in the background, in Ruby.")
6139 (home-page "http://github.com/enkessler/childprocess")
6140 (license license:expat)))
1f10e28d
DM
6141
6142(define-public ruby-childprocess
6143 (package
6144 (inherit ruby-childprocess-0.6)
6145 (name "ruby-childprocess")
6146 (version "0.9.0")
6147 (source
6148 (origin
6149 (method url-fetch)
6150 (uri (rubygems-uri "childprocess" version))
6151 (sha256
6152 (base32
6153 "0a61922kmvcxyj5l70fycapr87gz1dzzlkfpq85rfqk5vdh3d28p"))))))
0d16905b
JL
6154
6155(define-public ruby-public-suffix
6156 (package
6157 (name "ruby-public-suffix")
6158 (version "3.0.3")
6159 (source (origin
6160 (method url-fetch)
6161 (uri (rubygems-uri "public_suffix" version))
6162 (sha256
6163 (base32
6164 "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l"))))
6165 (build-system ruby-build-system)
6166 (arguments
6167 ;; Tests require network
6168 `(#:tests? #f))
6169 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
6170 (synopsis "Domain name parser")
6171 (description "The gem @code{public_suffix} is a domain name parser,
6172written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
6173is one under which Internet users can (or historically could) directly
6174register names. Some examples of public suffixes are @code{.com},
6175@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
6176all known public suffixes.")
6177 (license license:expat)))
6f2c4efb
JL
6178
6179(define-public ruby-addressable
6180 (package
6181 (name "ruby-addressable")
6182 (version "2.5.2")
6183 (source (origin
6184 (method url-fetch)
6185 (uri (rubygems-uri "addressable" version))
6186 (sha256
6187 (base32
6188 "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk"))))
6189 (build-system ruby-build-system)
6190 (propagated-inputs
6191 `(("ruby-public-suffix" ,ruby-public-suffix)))
6192 (arguments
6193 ;; No test target
6194 `(#:tests? #f))
6195 (home-page "https://github.com/sporkmonger/addressable")
6196 (synopsis "Alternative URI implementation")
6197 (description "Addressable is a replacement for the URI implementation that
6198is part of Ruby's standard library. It more closely conforms to RFC 3986,
6199RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
6200 (license license:asl2.0)))
9c7f15c0
JL
6201
6202(define-public ruby-colorator
6203 (package
6204 (name "ruby-colorator")
6205 (version "1.1.0")
6206 (source (origin
6207 (method url-fetch)
6208 (uri (rubygems-uri "colorator" version))
6209 (sha256
6210 (base32
6211 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
6212 (build-system ruby-build-system)
6213 (arguments
6214 ;; No test target
6215 `(#:tests? #f))
6216 (home-page "http://octopress.org/colorator/")
6217 (synopsis "Terminal color library")
6218 (description "Colorator is a Ruby gem that helps you colorize your text
6219for the terminal.")
6220 (license license:expat)))
78b9c291
JL
6221
6222(define-public ruby-command-line-reporter
6223 (package
6224 (name "ruby-command-line-reporter")
6225 (version "4.0.0")
6226 (source (origin
6227 (method url-fetch)
6228 (uri (rubygems-uri "command_line_reporter" version))
6229 (sha256
6230 (base32
6231 "1qma35xrb772whxwy1rs9bicb9d6lvz0s2dd2dnn4fr6zcbcxc0a"))))
6232 (build-system ruby-build-system)
6233 (arguments
6234 ;; No Rakefile
6235 `(#:tests? #f
6236 #:phases
6237 (modify-phases %standard-phases
6238 (add-before 'build 'fix-dependencies
6239 (lambda _
6240 (substitute* ".gemspec"
6241 ;; colored is unmaintained
6242 (("colored") "colorator")
6243 ;; colorator version
6244 (("= 1.2") "= 1.1"))
6245 #t)))))
6246 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
6247 (home-page "https://github.com/wbailey/command_line_reporter")
6248 (synopsis "Report production while executing Ruby scripts")
6249 (description "This gem provides a DSL that makes it easy to write reports
6250of various types in ruby. It eliminates the need to litter your source with
6251puts statements, instead providing a more readable, expressive interface to
6252your application.")
6253 (license license:asl2.0)))
f22c0387
JL
6254
6255(define-public ruby-command-line-reporter-3
6256 (package
6257 (inherit ruby-command-line-reporter)
6258 (version "3.3.6")
6259 (source (origin
6260 (method url-fetch)
6261 (uri (rubygems-uri "command_line_reporter" version))
6262 (sha256
6263 (base32
6264 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
6bba8ecf
JL
6265
6266(define-public ruby-rdoc
6267 (package
6268 (name "ruby-rdoc")
6269 (version "6.0.4")
6270 (source
6271 (origin
6272 (method url-fetch)
6273 (uri (rubygems-uri "rdoc" version))
6274 (sha256
6275 (base32
6276 "0anv42cqcdc6g4n386mrva7mgav5i0c2ry3yzvzzc6z6hymkmcr7"))))
6277 (build-system ruby-build-system)
6278 (native-inputs
6279 `(("bundler" ,bundler)))
6280 (home-page "https://ruby.github.io/rdoc/")
6281 (synopsis "HTML and command-line documentation utility")
6282 (description "RDoc produces HTML and command-line documentation for Ruby
6283projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
6284documentation from the command-line.")
6285 (license license:gpl2+)))
18077ffc
JL
6286
6287(define-public ruby-sass-listen
6288 (package
6289 (name "ruby-sass-listen")
6290 (version "4.0.0")
6291 (source (origin
6292 (method url-fetch)
6293 (uri (rubygems-uri "sass-listen" version))
6294 (sha256
6295 (base32
6296 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
6297 (build-system ruby-build-system)
6298 (arguments
6299 ;; No test target
6300 `(#:tests? #f))
6301 (propagated-inputs
6302 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
6303 ("ruby-rb-inotify" ,ruby-rb-inotify)))
6304 (home-page "https://github.com/sass/listen")
6305 (synopsis "File modification notification library")
6306 (description "The Listen gem listens to file modifications and notifies you
6307about the changes.")
6308 (license license:expat)))
0c8eedc1
JL
6309
6310(define-public ruby-terminfo
6311 (package
6312 (name "ruby-terminfo")
6313 (version "0.1.1")
6314 (source
6315 (origin
6316 (method url-fetch)
6317 (uri (rubygems-uri "ruby-terminfo" version))
6318 (sha256
6319 (base32
6320 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
6321 (build-system ruby-build-system)
6322 (arguments
6323 `(#:test-target "test"
6324 ;; Rakefile requires old packages and would need modification to
6325 ;; work with current software.
6326 #:tests? #f))
6327 (inputs
6328 `(("ncurses" ,ncurses)))
6329 (native-inputs
6330 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
6331 ("ruby-rdoc" ,ruby-rdoc)))
6332 (home-page "http://www.a-k-r.org/ruby-terminfo/")
6333 (synopsis "Terminfo binding for Ruby")
6334 (description "Ruby-terminfo provides terminfo binding for Ruby.")
6335 (license license:bsd-3)))
ddc3a667
JL
6336
6337(define-public ruby-diffy
6338 (package
6339 (name "ruby-diffy")
6340 (version "3.2.1")
6341 (source
6342 (origin
6343 (method url-fetch)
6344 (uri (rubygems-uri "diffy" version))
6345 (sha256
6346 (base32
6347 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
6348 (build-system ruby-build-system)
6349 (arguments
6350 ;; No tests
6351 `(#:tests? #f))
6352 (native-inputs
6353 `(("ruby-rspec" ,ruby-rspec)))
6354 (home-page "https://github.com/samg/diffy")
6355 (synopsis "Convenient diffing in ruby")
6356 (description "Diffy provides a convenient way to generate a diff from two
6357strings or files.")
6358 (license license:expat)))
6456beef
JL
6359
6360(define-public ruby-sass-spec
6361 (package
6362 (name "ruby-sass-spec")
6363 (version "3.5.4")
6364 (source (origin
6365 (method url-fetch)
6366 (uri (string-append "https://github.com/sass/sass-spec/archive/v"
6367 version ".tar.gz"))
6368 (file-name (string-append name "-" version ".tar.gz"))
6369 (sha256
6370 (base32
6371 "0nx8lp7c9qa58w489crgqa3c489xsyarn1a8h4np9mwwfqm1h3rr"))))
6372 (build-system ruby-build-system)
6373 (propagated-inputs
6374 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
6375 ("ruby-diffy" ,ruby-diffy)
6376 ("ruby-terminfo" ,ruby-terminfo)))
6377 (arguments
2c7cb711
CB
6378 `(;; This package contains tests for a sass implementation, and the to
6379 ;; avoid any circular dependencies, the tests are not run here
6380 #:tests? #f
6381 #:phases
6382 (modify-phases %standard-phases
6383 (add-after 'unpack 'patch-test
6384 (lambda _
6385 (delete-file "spec/values/colors/alpha_hex-3.5/error")
6386 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
6387 (("string") "color")))))))
6456beef
JL
6388 (home-page "https://github.com/sass/sass-spec")
6389 (synopsis "Test suite for Sass")
6390 (description "Sass Spec is a test suite for Sass. Test cases are all in
6391the @file{spec} directory.")
6392 (license license:expat)))
f00f4492
JL
6393
6394(define-public ruby-sass
6395 (package
6396 (name "ruby-sass")
11ff2adc 6397 (version "3.6.0")
f00f4492
JL
6398 (source (origin
6399 (method url-fetch)
6400 (uri (rubygems-uri "sass" version))
6401 (sha256
6402 (base32
11ff2adc 6403 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
f00f4492
JL
6404 (build-system ruby-build-system)
6405 (propagated-inputs
6406 `(("ruby-sass-listen" ,ruby-sass-listen)))
6407 (native-inputs
11ff2adc
CB
6408 `(("ruby-sass-spec" ,ruby-sass-spec)
6409 ("ruby-mathn" ,ruby-mathn)))
f00f4492
JL
6410 (home-page "http://sass-lang.com/")
6411 (synopsis "CSS extension language")
6412 (description "Sass is a CSS extension language. It extends CSS with
6413features that don't exist yet like variables, nesting, mixins and inheritance.")
6414 (license license:expat)))
5e242cb4
JL
6415
6416(define-public ruby-jekyll-sass-converter
6417 (package
6418 (name "ruby-jekyll-sass-converter")
6419 (version "1.5.2")
6420 (source (origin
6421 (method url-fetch)
6422 (uri (rubygems-uri "jekyll-sass-converter" version))
6423 (sha256
6424 (base32
6425 "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk"))))
6426 (build-system ruby-build-system)
6427 (propagated-inputs
6428 `(("ruby-sass" ,ruby-sass)))
6429 (arguments
6430 ;; No rakefile
6431 `(#:tests? #f))
6432 (home-page "https://github.com/jekyll/jekyll-sass-converter")
6433 (synopsis "Sass converter for Jekyll")
6434 (description "This gem provide built-in support for the Sass converter
6435in Jekyll.")
6436 (license license:expat)))
ceac6f6f
JL
6437
6438(define-public ruby-jekyll-watch
6439 (package
6440 (name "ruby-jekyll-watch")
6441 (version "2.0.0")
6442 (source (origin
6443 (method url-fetch)
6444 (uri (rubygems-uri "jekyll-watch" version))
6445 (sha256
6446 (base32
6447 "0m7scvj3ki8bmyx5v8pzibpg6my10nycnc28lip98dskf8iakprp"))))
6448 (build-system ruby-build-system)
6449 (propagated-inputs
6450 `(("ruby-listen-3.0" ,ruby-listen-3.0)))
6451 (arguments
6452 ;; No rakefile
6453 `(#:tests? #f))
6454 (home-page "https://github.com/jekyll/jekyll-watch")
6455 (synopsis "Jekyll auto-rebuild support")
6456 (description "This gems add the @code{--watch} switch to the jekyll CLI
6457interface. It allows Jekyll to rebuild your site when a file changes.")
6458 (license license:expat)))
3224a5a8
JL
6459
6460(define-public ruby-parallel
6461 (package
6462 (name "ruby-parallel")
6463 (version "1.12.1")
6464 (source (origin
6465 (method url-fetch)
6466 (uri (rubygems-uri "parallel" version))
6467 (sha256
6468 (base32
6469 "01hj8v1qnyl5ndrs33g8ld8ibk0rbcqdpkpznr04gkbxd11pqn67"))))
6470 (build-system ruby-build-system)
6471 (arguments `(#:tests? #f)); No rakefile
6472 (home-page "https://github.com/grosser/parallel")
6473 (synopsis "Parallel processing in Ruby")
6474 (description "Parallel allows you to run any code in parallel Processes
6475(to use all CPUs) or Threads(to speedup blocking operations). It is best
6476suited for map-reduce or e.g. parallel downloads/uploads.")
6477 (license license:expat)))
83d9f672
JL
6478
6479(define-public ruby-cane
6480 (package
6481 (name "ruby-cane")
6482 (version "3.0.0")
6483 (source (origin
6484 (method url-fetch)
6485 (uri (rubygems-uri "cane" version))
6486 (sha256
6487 (base32
6488 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
6489 (build-system ruby-build-system)
6490 (arguments `(#:tests? #f)); No rakefile
6491 (home-page "https://github.com/square/cane")
6492 (propagated-inputs
6493 `(("ruby-parallel" ,ruby-parallel)))
6494 (synopsis "Code quality threshold checking")
6495 (description "Cane fails your build if code quality thresholds are not met.")
6496 (license license:asl2.0)))
00d71efc
JL
6497
6498(define-public ruby-morecane
6499 (package
6500 (name "ruby-morecane")
6501 (version "0.2.0")
6502 (source (origin
6503 (method url-fetch)
6504 (uri (rubygems-uri "morecane" version))
6505 (sha256
6506 (base32
6507 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
6508 (build-system ruby-build-system)
6509 (home-page "https://github.com/yob/morecane")
6510 (arguments `(#:tests? #f)); No rakefile
6511 (propagated-inputs
6512 `(("ruby-parallel" ,ruby-parallel)))
6513 (synopsis "Extra checks for cane")
6514 (description "The cane gem provides a great framework for running quality
6515checks over your ruby project as part of continuous integration build. It
6516comes with a few checks out of the box, but also provides an API for loading
6517custom checks. This gem provides a set of additional checks.")
6518 (license license:expat)))
abbe629c
JL
6519
6520(define-public ruby-pdf-reader
6521 (package
6522 (name "ruby-pdf-reader")
6523 (version "2.1.0")
6524 (source (origin
6525 (method url-fetch)
6526 (uri (rubygems-uri "pdf-reader" version))
6527 (sha256
6528 (base32
6529 "1b3ig4wpcgdbqa7yw0ahwbmikkkywn2a22bfmrknl5ls7g066x45"))))
6530 (build-system ruby-build-system)
6531 (arguments `(#:test-target "spec"))
6532 (native-inputs
6533 `(("bundler" ,bundler)
6534 ("ruby-rspec" ,ruby-rspec)
6535 ("ruby-cane" ,ruby-cane)
6536 ("ruby-morecane" ,ruby-morecane)))
6537 (propagated-inputs
6538 `(("ruby-afm" ,ruby-afm)
6539 ("ruby-ascii85" ,ruby-ascii85)
6540 ("ruby-hashery" ,ruby-hashery)
6541 ("ruby-rc4" ,ruby-rc4)
6542 ("ruby-ttfunk" ,ruby-ttfunk)))
6543 (home-page "https://github.com/yob/pdf-reader")
6544 (synopsis "PDF parser in Ruby")
6545 (description "The PDF::Reader library implements a PDF parser conforming as
6546much as possible to the PDF specification from Adobe. It provides programmatic
6547access to the contents of a PDF file with a high degree of flexibility.")
6548 (license license:gpl3+)))
461fb859
JL
6549
6550(define-public ruby-pdf-inspector
6551 (package
6552 (name "ruby-pdf-inspector")
6553 (version "1.3.0")
6554 (source (origin
6555 (method url-fetch)
6556 (uri (rubygems-uri "pdf-inspector" version))
6557 (sha256
6558 (base32
6559 "1g853az4xzgqxr5xiwhb76g4sqmjg4s79mm35mp676zjsrwpa47w"))))
6560 (build-system ruby-build-system)
6561 (propagated-inputs
6562 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
6563 (arguments `(#:tests? #f)); No rakefile
6564 (home-page "https://github.com/prawnpdf/pdf-inspector")
6565 (synopsis "Analysis classes for inspecting PDF output")
6566 (description "This library provides a number of PDF::Reader based tools for
6567use in testing PDF output. Presently, the primary purpose of this tool is to
6568support the tests found in Prawn, a pure Ruby PDF generation library.")
6569 (license license:gpl3+)))
770e3b53
JL
6570
6571(define-public ruby-pdf-core
6572 (package
6573 (name "ruby-pdf-core")
6574 (version "0.8.1")
6575 (source (origin
6576 (method url-fetch)
6577 (uri (rubygems-uri "pdf-core" version))
6578 (sha256
6579 (base32
6580 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
6581 (build-system ruby-build-system)
6582 (arguments
6583 ; No test target
6584 `(#:tests? #f))
6585 (home-page "https://github.com/prawnpdf/pdf-core")
6586 (synopsis "Low level PDF features for Prawn")
6587 (description "This is an experimental gem that extracts low-level PDF
6588functionality from Prawn.")
6589 (license license:gpl3+)))
37fbced7 6590
7ad8dd08
JL
6591(define-public ruby-prawn
6592 (package
6593 (name "ruby-prawn")
6594 (version "2.2.2")
6595 (source (origin
6596 (method url-fetch)
6597 (uri (rubygems-uri "prawn" version))
6598 (sha256
6599 (base32
6600 "1qdjf1v6sfl44g3rqxlg8k4jrzkwaxgvh2l4xws97a8f3xv4na4m"))))
6601 (build-system ruby-build-system)
6602 (arguments
6603 ; No tests
6604 `(#:tests? #f
6605 #:phases
6606 (modify-phases %standard-phases
6607 (add-before 'build 'fix-dependencies
6608 (lambda _
6609 (substitute* "prawn.gemspec"
6610 (("~> 0.7.0") "~> 0.7"))
6611 #t)))))
6612 (propagated-inputs
6613 `(("ruby-pdf-core" ,ruby-pdf-core)
6614 ("ruby-ttfunk" ,ruby-ttfunk)))
6615 (native-inputs
6616 `(("bundler" ,bundler)
6617 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
6618 ("ruby-rspec" ,ruby-rspec)
6619 ("ruby-simplecov" ,ruby-simplecov)
6620 ("ruby-yard" ,ruby-yard)))
6621 (home-page "http://prawnpdf.org/api-docs/2.0/")
6622 (synopsis "PDF generation for Ruby")
6623 (description "Prawn is a pure Ruby PDF generation library.")
6624 (license license:gpl3+)))
197ca8ec
JL
6625
6626(define-public ruby-prawn-table
6627 (package
6628 (name "ruby-prawn-table")
6629 (version "0.2.2")
6630 (source (origin
6631 (method url-fetch)
6632 (uri (rubygems-uri "prawn-table" version))
6633 (sha256
6634 (base32
6635 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
6636 (build-system ruby-build-system)
6637 (arguments `(#:tests? #f)); No rakefile
6638 (propagated-inputs
6639 `(("ruby-prawn" ,ruby-prawn)))
6640 (home-page "https://github.com/prawnpdf/prawn-table")
6641 (synopsis "Tables support for Prawn")
6642 (description "This gem provides tables support for Prawn.")
6643 (license license:gpl3+)))
03127069
JL
6644
6645(define-public ruby-kramdown
6646 (package
6647 (name "ruby-kramdown")
6648 (version "1.17.0")
6649 (source (origin
6650 (method url-fetch)
6651 (uri (rubygems-uri "kramdown" version))
6652 (sha256
6653 (base32
6654 "1n1c4jmrh5ig8iv1rw81s4mw4xsp4v97hvf8zkigv4hn5h542qjq"))))
6655 (build-system ruby-build-system)
6656 (arguments `(#:tests? #f)); FIXME: some test failures
6657 (native-inputs
6658 `(("ruby-prawn" ,ruby-prawn)
6659 ("ruby-prawn-table" ,ruby-prawn-table)))
6660 (home-page "https://kramdown.gettalong.org/")
6661 (synopsis "Markdown parsing and converting library")
6662 (description "Kramdown is a library for parsing and converting a superset
6663of Markdown. It is completely written in Ruby, supports standard Markdown
6664(with some minor modifications) and various extensions that have been made
6665popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
6666 (license license:expat)))
fa0063bc
JL
6667
6668(define-public ruby-http-parser.rb
6669 (package
6670 (name "ruby-http-parser.rb")
6671 (version "0.6.0")
6672 (source
6673 (origin
6674 (method url-fetch)
6675 (uri (rubygems-uri "http_parser.rb" version))
6676 (sha256
6677 (base32
6678 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
6679 (build-system ruby-build-system)
6680 (arguments
6681 ;; No tests
6682 `(#:tests? #f))
6683 (native-inputs
6684 `(("ruby-rake-compiler" ,ruby-rake-compiler)
6685 ("ruby-rspec" ,ruby-rspec)))
6686 (home-page "https://github.com/tmm1/http_parser.rb")
6687 (synopsis "HTTP parser un Ruby")
6688 (description "This gem is a simple callback-based HTTP request/response
6689parser for writing http servers, clients and proxies.")
6690 (license license:expat)))
5e2f74bd
JL
6691
6692(define-public ruby-em-websocket
6693 (package
6694 (name "ruby-em-websocket")
6695 (version "0.5.1")
6696 (source
6697 (origin
6698 (method url-fetch)
6699 (uri (rubygems-uri "em-websocket" version))
6700 (sha256
6701 (base32
6702 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
6703 (build-system ruby-build-system)
6704 (arguments
6705 ;; No tests
6706 `(#:tests? #f))
6707 (propagated-inputs
6708 `(("ruby-eventmachine" ,ruby-eventmachine)
6709 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
6710 (native-inputs
6711 `(("bundler" ,bundler)
6712 ("ruby-rspec" ,ruby-rspec)))
6713 (home-page "https://github.com/igrigorik/em-websocket")
6714 (synopsis "EventMachine based WebSocket server")
6715 (description "Em-websocket is an EventMachine based WebSocket server
6716implementation.")
6717 (license license:expat)))
4ce0414b
JL
6718
6719(define-public ruby-rouge
6720 (package
6721 (name "ruby-rouge")
6722 (version "3.2.1")
6723 (source (origin
6724 (method url-fetch)
6725 (uri (rubygems-uri "rouge" version))
6726 (sha256
6727 (base32
6728 "0h79gn2wmn1wix2d27lgiaimccyj8gvizrllyym500pir408x62f"))))
6729 (build-system ruby-build-system)
6730 (arguments `(#:tests? #f)); No rakefile
6731 (home-page "http://rouge.jneen.net/")
6732 (synopsis "Code highlighter")
6733 (description "Rouge is a code highlighter written in Ruby. It supports more
6734than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
6735is compatible with stylesheets designed for pygments.")
6736 (license (list
6737 ;; rouge is licensed under expat
6738 license:expat
6739 ;; pygments is licensed under bsd-2
6740 license:bsd-2))))
2c5028bd
JL
6741
6742(define-public ruby-rouge-2
6743 (package
6744 (inherit ruby-rouge)
6745 (version "2.2.1")
6746 (source (origin
6747 (method url-fetch)
6748 (uri (rubygems-uri "rouge" version))
6749 (sha256
6750 (base32
6751 "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs"))))))
2e072e37
JL
6752
6753(define-public ruby-hashie
6754 (package
6755 (name "ruby-hashie")
6756 (version "3.6.0")
6757 (source (origin
6758 (method url-fetch)
6759 (uri (rubygems-uri "hashie" version))
6760 (sha256
6761 (base32
6762 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
6763 (build-system ruby-build-system)
6764 (native-inputs
6765 `(("bundler" ,bundler)))
6766 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
6767 (home-page "https://github.com/intridea/hashie")
6768 (synopsis "Extensions to Ruby Hashes")
6769 (description "Hashie is a collection of classes and mixins that make Ruby
6770hashes more powerful.")
6771 (license license:expat)))
73bfc125
JL
6772
6773(define-public ruby-heredoc-unindent
6774 (package
6775 (name "ruby-heredoc-unindent")
6776 (version "1.2.0")
6777 (source (origin
6778 (method url-fetch)
6779 (uri (rubygems-uri "heredoc_unindent" version))
6780 (sha256
6781 (base32
6782 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
6783 (build-system ruby-build-system)
6784 (native-inputs
6785 `(("ruby-hoe" ,ruby-hoe)))
6786 (home-page "https://github.com/adrianomitre/heredoc_unindent")
6787 (synopsis "Heredoc indentation cleaner")
6788 (description "This gem removes common margin from indented strings, such
6789as the ones produced by indented heredocs. In other words, it strips out
4f66ae28 6790leading whitespace chars at the beginning of each line, but only as much as
73bfc125
JL
6791the line with the smallest margin.
6792
6793It is acknowledged that many strings defined by heredocs are just code and
6794fact is that most parsers are insensitive to indentation. If, however, the
6795strings are to be used otherwise, be it for printing or testing, the extra
6796indentation will probably be an issue and hence this gem.")
6797 (license license:expat)))
f8ae2ee5
JL
6798
6799(define-public ruby-safe-yaml
6800 (package
6801 (name "ruby-safe-yaml")
6802 (version "1.0.4")
28cf8dab
CB
6803 (source
6804 (origin
6805 ;; TODO Fetch from the git repository so a patch can be applied
6806 (method git-fetch)
6807 (uri (git-reference
6808 (url "https://github.com/dtao/safe_yaml.git")
6809 (commit version)))
6810 (file-name (git-file-name name version))
6811 (sha256
6812 (base32
6813 "1wnln8xdy8g6kwdj4amm8773xwffqxpf2sxslk6jjh2wxsy1lrig"))
6814 (patches
6815 (search-patches "ruby-safe-yaml-add-require-time.patch"))))
f8ae2ee5
JL
6816 (build-system ruby-build-system)
6817 (native-inputs
6818 `(("ruby-rspec" ,ruby-rspec)
6819 ("ruby-hashie" ,ruby-hashie)
6820 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
28cf8dab
CB
6821 (arguments
6822 '(#:test-target "spec"
6823 #:phases
6824 (modify-phases %standard-phases
6825 (add-before 'check 'set-TZ
6826 (lambda _
6827 ;; This test is dependent on the timezone
6828 ;; spec/transform/to_date_spec.rb:35
6829 ;; # SafeYAML::Transform::ToDate converts times to the local
6830 ;; timezone
6831 (setenv "TZ" "UTC-11")
6832 #t)))))
f8ae2ee5
JL
6833 (home-page "https://github.com/dtao/safe_yaml")
6834 (synopsis "YAML parser")
6835 (description "The SafeYAML gem provides an alternative implementation of
6836YAML.load suitable for accepting user input in Ruby applications.")
6837 (license license:expat)))
f1ec4d76
JL
6838
6839(define-public ruby-mercenary
6840 (package
6841 (name "ruby-mercenary")
6842 (version "0.3.6")
6843 (source (origin
6844 (method url-fetch)
6845 (uri (rubygems-uri "mercenary" version))
6846 (sha256
6847 (base32
6848 "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"))))
6849 (build-system ruby-build-system)
6850 (arguments `(#:test-target "spec"))
6851 (native-inputs
6852 `(("bundler" ,bundler)))
6853 (home-page "https://github.com/jekyll/mercenary")
6854 (synopsis "Command-line apps library in Ruby")
6855 (description "Mercenary is a lightweight and flexible library for writing
6856command-line apps in Ruby.")
6857 (license license:expat)))
a13d451e
JL
6858
6859(define-public ruby-liquid
6860 (package
6861 (name "ruby-liquid")
6862 (version "4.0.0")
6863 (source (origin
6864 (method url-fetch)
6865 (uri (rubygems-uri "liquid" version))
6866 (sha256
6867 (base32
6868 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
6869 (build-system ruby-build-system)
6870 (arguments `(#:tests? #f)); No rakefile
6871 (home-page "https://shopify.github.io/liquid/")
6872 (synopsis "Template language")
6873 (description "Liquid is a template language written in Ruby. It is used
6874to load dynamic content on storefronts.")
6875 (license license:expat)))
49395112
JL
6876
6877(define-public ruby-forwardable-extended
6878 (package
6879 (name "ruby-forwardable-extended")
6880 (version "2.6.0")
6881 (source (origin
6882 (method url-fetch)
6883 (uri (rubygems-uri "forwardable-extended" version))
6884 (sha256
6885 (base32
6886 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
6887 (build-system ruby-build-system)
6888 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
6889 (home-page "https://github.com/envygeeks/forwardable-extended")
6890 (synopsis "Delegation to hashes and instance variables in Forwardable")
6891 (description "Forwardable Extended provides more @code{Forwardable}
6892methods for your source as @code{Forwardable::Extended}.")
6893 (license license:expat)))
37296113
JL
6894
6895(define-public ruby-pathutil
6896 (package
6897 (name "ruby-pathutil")
6898 (version "0.16.1")
6899 (source (origin
6900 (method url-fetch)
6901 (uri (rubygems-uri "pathutil" version))
6902 (sha256
6903 (base32
6904 "0wc18ms1rzi44lpjychyw2a96jcmgxqdvy2949r4vvb5f4p0lgvz"))))
6905 (build-system ruby-build-system)
6906 (propagated-inputs
6907 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
6908 (native-inputs
6909 `(("bundler" ,bundler)
6910 ("ruby-rspec" ,ruby-rspec)))
6911 ;; Fails with: cannot load such file --
6912 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
6913 (arguments `(#:tests? #f))
6914 (home-page "https://github.com/envygeeks/pathutil")
6915 (synopsis "Extended implementation of Pathname")
6916 (description "Pathutil tries to be a faster pure Ruby implementation of
6917Pathname.")
6918 (license license:expat)))
49e1dde5
JL
6919
6920(define-public jekyll
6921 (package
6922 (name "jekyll")
6923 (version "3.8.3")
6924 (source (origin
6925 (method url-fetch)
6926 (uri (rubygems-uri "jekyll" version))
6927 (sha256
6928 (base32
6929 "1iw90wihk9dscgmppf5v6lysg3kjmnx50mjyl4gghkdb4spw97xk"))))
6930 (build-system ruby-build-system)
6931 (arguments
6932 ;; No rakefile, but a test subdirectory
6933 `(#:tests? #f
6934 #:phases
6935 (modify-phases %standard-phases
6936 (add-before 'build 'fix-i18n
6937 (lambda _
6938 (substitute* ".gemspec"
6939 (("~> 0.7") ">= 0.7"))
6940 #t)))))
6941 (propagated-inputs
6942 `(("ruby-addressable" ,ruby-addressable)
6943 ("ruby-colorator" ,ruby-colorator)
6944 ("ruby-em-websocket" ,ruby-em-websocket)
6945 ("ruby-i18n" ,ruby-i18n)
6946 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
6947 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
6948 ("ruby-kramdown" ,ruby-kramdown)
6949 ("ruby-liquid" ,ruby-liquid)
6950 ("ruby-mercenary" ,ruby-mercenary)
6951 ("ruby-pathutil" ,ruby-pathutil)
6952 ("ruby-rouge" ,ruby-rouge-2)
6953 ("ruby-safe-yaml" ,ruby-safe-yaml)))
6954 (home-page "https://jekyllrb.com/")
6955 (synopsis "Static site generator")
6956 (description "Jekyll is a simple, blog aware, static site generator.")
6957 (license license:expat)))
37a0f470
JL
6958
6959(define-public ruby-jekyll-paginate-v2
6960 (package
6961 (name "ruby-jekyll-paginate-v2")
6962 (version "2.0.0")
6963 (source (origin
6964 (method url-fetch)
6965 (uri (rubygems-uri "jekyll-paginate-v2" version))
6966 (sha256
6967 (base32
6968 "154bfpyml6abxww9868hhyfvxasl8qhsc5zy2q30c7dxaj0igdib"))))
6969 (build-system ruby-build-system)
6970 (propagated-inputs
6971 `(("jekyll" ,jekyll)))
6972 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
6973 (synopsis "Pagination Generator for Jekyll 3")
6974 (description "The Pagination Generator forms the core of the pagination
6975logic in Jekyll. It calculates and generates the pagination pages.")
6976 (license license:expat)))