gnu: Add ruby-mimemagic.
[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>
bf3be6a5 8;;; Copyright © 2017 ng0 <ng0@n0.is>
0899352f 9;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
de429a93 10;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
4237af85 11;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
6a9d2266 12;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
6ef8c59a
PP
13;;;
14;;; This file is part of GNU Guix.
15;;;
16;;; GNU Guix is free software; you can redistribute it and/or modify it
17;;; under the terms of the GNU General Public License as published by
18;;; the Free Software Foundation; either version 3 of the License, or (at
19;;; your option) any later version.
20;;;
21;;; GNU Guix is distributed in the hope that it will be useful, but
22;;; WITHOUT ANY WARRANTY; without even the implied warranty of
23;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24;;; GNU General Public License for more details.
25;;;
26;;; You should have received a copy of the GNU General Public License
27;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
28
29(define-module (gnu packages ruby)
30 #:use-module ((guix licenses) #:prefix license:)
31 #:use-module (gnu packages)
1db791d5 32 #:use-module (gnu packages base)
6ef8c59a 33 #:use-module (gnu packages compression)
4a9e0585 34 #:use-module (gnu packages databases)
6ef8c59a 35 #:use-module (gnu packages readline)
6ef8c59a 36 #:use-module (gnu packages autotools)
ad79eb55 37 #:use-module (gnu packages java)
6ef8c59a 38 #:use-module (gnu packages libffi)
fe5dd5f4 39 #:use-module (gnu packages networking)
ac09beba 40 #:use-module (gnu packages python)
763624f5 41 #:use-module (gnu packages ragel)
cc2b77df 42 #:use-module (gnu packages tls)
66e20863 43 #:use-module (gnu packages version-control)
6ef8c59a
PP
44 #:use-module (guix packages)
45 #:use-module (guix download)
bda0c139 46 #:use-module (guix git-download)
6ef8c59a 47 #:use-module (guix utils)
acf735f2 48 #:use-module (guix build-system gnu)
e920bfca 49 #:use-module (gnu packages xml)
c2c4e5b2 50 #:use-module (gnu packages web)
acf735f2 51 #:use-module (guix build-system ruby))
6ef8c59a
PP
52
53(define-public ruby
54 (package
55 (name "ruby")
02f21a87 56 (version "2.4.3")
6ef8c59a
PP
57 (source
58 (origin
59 (method url-fetch)
6becfdff
MW
60 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
61 (version-major+minor version)
12d39eb5 62 "/ruby-" version ".tar.xz"))
6ef8c59a
PP
63 (sha256
64 (base32
02f21a87 65 "0l9bv67dgsphk42lmiskhrnh47hbyj6rfg2rcjx22xivpx07srr3"))
ff9d1a2f 66 (patches (search-patches "ruby-rubygems-276-for-ruby24.patch"))
65e84e31
BW
67 (modules '((guix build utils)))
68 (snippet `(begin
69 ;; Remove bundled libffi
c033c195 70 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
65e84e31 71 #t))))
6ef8c59a
PP
72 (build-system gnu-build-system)
73 (arguments
74 `(#:test-target "test"
6ef8c59a 75 #:phases
9656b8be 76 (modify-phases %standard-phases
65e84e31 77 (add-before 'configure 'replace-bin-sh-and-remove-libffi
9656b8be
BW
78 (lambda _
79 (substitute* '("Makefile.in"
80 "ext/pty/pty.c"
81 "io.c"
82 "lib/mkmf.rb"
83 "process.c"
84 "test/rubygems/test_gem_ext_configure_builder.rb"
85 "test/rdoc/test_rdoc_parser.rb"
86 "test/ruby/test_rubyoptions.rb"
87 "test/ruby/test_process.rb"
88 "test/ruby/test_system.rb"
89 "tool/rbinstall.rb")
90 (("/bin/sh") (which "sh")))
91 #t)))))
6ef8c59a
PP
92 (inputs
93 `(("readline" ,readline)
6ef8c59a
PP
94 ("openssl" ,openssl)
95 ("libffi" ,libffi)
96 ("gdbm" ,gdbm)
97 ("zlib" ,zlib)))
98 (native-search-paths
99 (list (search-path-specification
100 (variable "GEM_PATH")
3cb3fa67 101 (files (list (string-append "lib/ruby/vendor_ruby"))))))
6becfdff 102 (synopsis "Programming language interpreter")
6ef8c59a
PP
103 (description "Ruby is a dynamic object-oriented programming language with
104a focus on simplicity and productivity.")
bf3be6a5 105 (home-page "https://www.ruby-lang.org")
6ef8c59a
PP
106 (license license:ruby)))
107
98bb983c 108(define-public ruby-2.3
800a7dd5
BW
109 (package
110 (inherit ruby)
2713e399 111 (version "2.3.6")
800a7dd5
BW
112 (source
113 (origin
114 (method url-fetch)
115 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
116 (version-major+minor version)
117 "/ruby-" version ".tar.xz"))
118 (sha256
119 (base32
2713e399 120 "0mlz0mk7yyxia37k8fdv8m8a72h61nfbns28430h796l4an6kng0"))
800a7dd5
BW
121 (modules '((guix build utils)))
122 (snippet `(begin
123 ;; Remove bundled libffi
124 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
125 #t))))))
126
65e84e31
BW
127(define-public ruby-2.2
128 (package (inherit ruby)
263c56d2 129 (version "2.2.9")
65e84e31
BW
130 (source
131 (origin
132 (method url-fetch)
133 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
134 (version-major+minor version)
135 "/ruby-" version ".tar.xz"))
136 (sha256
137 (base32
263c56d2 138 "0p18xykx8dm5mmlx5n5243z67lj4vbvwr70bnc5x12am22ql8fri"))))))
65e84e31 139
9942e803
PP
140(define-public ruby-2.1
141 (package (inherit ruby)
a754eaf1 142 (version "2.1.10")
9942e803
PP
143 (source
144 (origin
145 (method url-fetch)
146 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
147 (version-major+minor version)
148 "/ruby-" version ".tar.bz2"))
149 (sha256
150 (base32
a754eaf1 151 "1wglbd599mlwxfcb2xgqcxi2shr363pjn5dpbv11m04si9bpaim7"))))
9942e803
PP
152 (arguments
153 `(#:test-target "test"
154 #:parallel-tests? #f
155 #:phases
dc1d3cde
KK
156 (modify-phases %standard-phases
157 (add-before 'configure 'replace-bin-sh
158 (lambda _
159 (substitute* '("Makefile.in"
160 "ext/pty/pty.c"
161 "io.c"
162 "lib/mkmf.rb"
163 "process.c")
164 (("/bin/sh") (which "sh")))
3cb3fa67 165 #t)))))))
9942e803 166
218ee89b
PP
167(define-public ruby-1.8
168 (package (inherit ruby)
218ee89b
PP
169 (version "1.8.7-p374")
170 (source
171 (origin
172 (method url-fetch)
6becfdff
MW
173 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
174 (version-major+minor version)
175 "/ruby-" version ".tar.bz2"))
218ee89b
PP
176 (sha256
177 (base32
178 "1qq7khilwkayrhwmzlxk83scrmiqfi7lgsn4c63znyvz2c1lgqxl"))))
179 (native-search-paths '())
180 (arguments
181 `(#:test-target "test"
182 #:parallel-tests? #f
183 #:phases
dc1d3cde
KK
184 (modify-phases %standard-phases
185 (add-before 'configure 'replace-bin-sh
186 (lambda _
187 (substitute* '("Makefile.in"
188 "ext/pty/pty.c"
189 "io.c"
190 "lib/mkmf.rb"
191 "process.c")
192 (("/bin/sh") (which "sh")))
193 #t)))))))
218ee89b 194
823ed097
CB
195(define-public ruby-highline
196 (package
197 (name "ruby-highline")
405cb5ab 198 (version "1.7.10")
823ed097
CB
199 (source
200 (origin
201 (method url-fetch)
202 (uri (rubygems-uri "highline" version))
203 (sha256
204 (base32
405cb5ab 205 "01ib7jp85xjc4gh4jg0wyzllm46hwv8p0w1m4c75pbgi41fps50y"))))
823ed097
CB
206 (build-system ruby-build-system)
207 (arguments
208 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
209 (native-inputs
210 `(("bundler" ,bundler)
211 ("ruby-code-statistics" ,ruby-code-statistics)))
212 (synopsis
213 "HighLine helps you build command-line interfaces")
214 (description
215 "HighLine provides a high-level IO library that provides validation,
216type conversion, and more for command-line interfaces. HighLine also includes
217a menu system for providing multiple options to the user.")
218 (home-page "https://github.com/JEG2/highline")
219 (license (list license:gpl2 license:ruby))))
220
bda0c139
DT
221(define-public ruby-hoe
222 (package
223 (name "ruby-hoe")
05f2f8bc 224 (version "3.16.2")
bda0c139 225 (source (origin
e83c6d00
DT
226 (method url-fetch)
227 (uri (rubygems-uri "hoe" version))
bda0c139
DT
228 (sha256
229 (base32
05f2f8bc 230 "12q6dn2irsfamdbjpqvs0dwl4i1vl7wflxrcg972h9jw0ds38f3a"))))
bda0c139 231 (build-system ruby-build-system)
bda0c139
DT
232 (synopsis "Ruby project management helper")
233 (description
234 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
235maintain, and release projects and includes a dynamic plug-in system allowing
236for easy extensibility. Hoe ships with plug-ins for all the usual project
237tasks including rdoc generation, testing, packaging, deployment, and
238announcement.")
2f3800e5 239 (home-page "https://www.zenspider.com/projects/hoe.html")
bda0c139
DT
240 (license license:expat)))
241
022170dc
PP
242(define-public ruby-rake-compiler
243 (package
244 (name "ruby-rake-compiler")
0cd7b816 245 (version "1.0.4")
022170dc
PP
246 (source (origin
247 (method url-fetch)
e83c6d00 248 (uri (rubygems-uri "rake-compiler" version))
022170dc
PP
249 (sha256
250 (base32
0cd7b816 251 "1xpdi4w8zaklk1i9ps8g3k0icw3v5fcks092l84w28rgrpx82qip"))))
022170dc
PP
252 (build-system ruby-build-system)
253 (arguments
e83c6d00 254 '(#:tests? #f)) ; needs cucumber
022170dc 255 (synopsis "Building and packaging helper for Ruby native extensions")
e881752c 256 (description "Rake-compiler provides a framework for building and
022170dc
PP
257packaging native C and Java extensions in Ruby.")
258 (home-page "https://github.com/rake-compiler/rake-compiler")
259 (license license:expat)))
260
acf735f2
DT
261(define-public ruby-i18n
262 (package
263 (name "ruby-i18n")
0bfdfd37 264 (version "0.7.0")
acf735f2
DT
265 (source (origin
266 (method url-fetch)
e83c6d00 267 (uri (rubygems-uri "i18n" version))
acf735f2
DT
268 (sha256
269 (base32
0bfdfd37 270 "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758"))))
acf735f2
DT
271 (build-system ruby-build-system)
272 (arguments
0bfdfd37 273 '(#:tests? #f)) ; no tests
acf735f2
DT
274 (synopsis "Internationalization library for Ruby")
275 (description "Ruby i18n is an internationalization and localization
276solution for Ruby programs. It features translation and localization,
277interpolation of values to translations, pluralization, customizable
278transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
279translation data, custom key/scope separator, custom exception handlers, and
280an extensible architecture with a swappable backend.")
7bf837fd 281 (home-page "https://github.com/svenfuchs/i18n")
acf735f2 282 (license license:expat)))
eb0c2dd6
DT
283
284;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
285;; dependencies use RSpec for their test suites! To avoid these circular
286;; dependencies, we disable tests for all of the RSpec-related packages.
287(define ruby-rspec-support
288 (package
289 (name "ruby-rspec-support")
2d9f1c06 290 (version "3.5.0")
eb0c2dd6
DT
291 (source (origin
292 (method url-fetch)
e83c6d00 293 (uri (rubygems-uri "rspec-support" version))
eb0c2dd6
DT
294 (sha256
295 (base32
2d9f1c06 296 "10vf3k3d472y573mag2kzfsfrf6rv355s13kadnpryk8d36yq5r0"))))
eb0c2dd6
DT
297 (build-system ruby-build-system)
298 (arguments
299 '(#:tests? #f)) ; avoid dependency cycles
300 (synopsis "RSpec support library")
301 (description "Support utilities for RSpec gems.")
302 (home-page "https://github.com/rspec/rspec-support")
303 (license license:expat)))
304
305(define-public ruby-rspec-core
306 (package
307 (name "ruby-rspec-core")
c5949118 308 (version "3.5.4")
eb0c2dd6
DT
309 (source (origin
310 (method url-fetch)
e83c6d00 311 (uri (rubygems-uri "rspec-core" version))
eb0c2dd6
DT
312 (sha256
313 (base32
c5949118 314 "1nacs062qbr98fx6czf1vwppn1js956nv2c8vfwj6i65axdfs46i"))))
eb0c2dd6
DT
315 (build-system ruby-build-system)
316 (arguments
317 '(#:tests? #f)) ; avoid dependency cycles
318 (propagated-inputs
319 `(("ruby-rspec-support" ,ruby-rspec-support)))
320 (synopsis "RSpec core library")
321 (description "Rspec-core provides the RSpec test runner and example
322groups.")
323 (home-page "https://github.com/rspec/rspec-core")
324 (license license:expat)))
e6962009 325
64c318f2
BW
326(define-public ruby-rspec-core-2
327 (package (inherit ruby-rspec-core)
328 (version "2.14.8")
329 (source (origin
330 (method url-fetch)
331 (uri (rubygems-uri "rspec-core" version))
332 (sha256
333 (base32
334 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
335 (propagated-inputs `())))
336
20c05ea9 337(define-public ruby-diff-lcs
e6962009
DT
338 (package
339 (name "ruby-diff-lcs")
e2fcef39 340 (version "1.3")
e6962009
DT
341 (source (origin
342 (method url-fetch)
e83c6d00 343 (uri (rubygems-uri "diff-lcs" version))
e6962009
DT
344 (sha256
345 (base32
e2fcef39 346 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
e6962009
DT
347 (build-system ruby-build-system)
348 (arguments
349 '(#:tests? #f)) ; avoid dependency cycles
350 (synopsis "Compute the difference between two Enumerable sequences")
351 (description "Diff::LCS computes the difference between two Enumerable
352sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
353It includes utilities to create a simple HTML diff output format and a
354standard diff-like tool.")
355 (home-page "https://github.com/halostatue/diff-lcs")
356 (license license:expat)))
357
358(define-public ruby-rspec-expectations
359 (package
360 (name "ruby-rspec-expectations")
2d9f1c06 361 (version "3.5.0")
e6962009
DT
362 (source (origin
363 (method url-fetch)
e83c6d00 364 (uri (rubygems-uri "rspec-expectations" version))
e6962009
DT
365 (sha256
366 (base32
2d9f1c06 367 "0bbqfrb1x8gmwf8x2xhhwvvlhwbbafq4isbvlibxi6jk602f09gs"))))
e6962009
DT
368 (build-system ruby-build-system)
369 (arguments
370 '(#:tests? #f)) ; avoid dependency cycles
371 (propagated-inputs
372 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 373 ("ruby-diff-lcs" ,ruby-diff-lcs)))
e881752c 374 (synopsis "RSpec expectations library")
e6962009
DT
375 (description "Rspec-expectations provides a simple API to express expected
376outcomes of a code example.")
377 (home-page "https://github.com/rspec/rspec-expectations")
378 (license license:expat)))
4f2a0cac 379
fb157f25
BW
380(define-public ruby-rspec-expectations-2
381 (package (inherit ruby-rspec-expectations)
382 (version "2.14.5")
383 (source (origin
384 (method url-fetch)
385 (uri (rubygems-uri "rspec-expectations" version))
386 (sha256
387 (base32
388 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
389 (propagated-inputs
390 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
391
4f2a0cac
DT
392(define-public ruby-rspec-mocks
393 (package
394 (name "ruby-rspec-mocks")
2d9f1c06 395 (version "3.5.0")
4f2a0cac
DT
396 (source (origin
397 (method url-fetch)
e83c6d00 398 (uri (rubygems-uri "rspec-mocks" version))
4f2a0cac
DT
399 (sha256
400 (base32
2d9f1c06 401 "0nl3ksivh9wwrjjd47z5dggrwx40v6gpb3a0gzbp1gs06a5dmk24"))))
4f2a0cac
DT
402 (build-system ruby-build-system)
403 (arguments
404 '(#:tests? #f)) ; avoid dependency cycles
405 (propagated-inputs
406 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 407 ("ruby-diff-lcs" ,ruby-diff-lcs)))
4f2a0cac
DT
408 (synopsis "RSpec stubbing and mocking library")
409 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
410support for stubbing and mocking.")
411 (home-page "https://github.com/rspec/rspec-mocks")
412 (license license:expat)))
d4fde1f2 413
6da9adeb
BW
414(define-public ruby-rspec-mocks-2
415 (package (inherit ruby-rspec-mocks)
416 (version "2.14.6")
417 (source (origin
418 (method url-fetch)
419 (uri (rubygems-uri "rspec-mocks" version))
420 (sha256
421 (base32
422 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
423 (propagated-inputs
424 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
425
d4fde1f2
DT
426(define-public ruby-rspec
427 (package
428 (name "ruby-rspec")
2d9f1c06 429 (version "3.5.0")
d4fde1f2
DT
430 (source (origin
431 (method url-fetch)
e83c6d00 432 (uri (rubygems-uri "rspec" version))
d4fde1f2
DT
433 (sha256
434 (base32
2d9f1c06 435 "16g3mmih999f0b6vcz2c3qsc7ks5zy4lj1rzjh8hf6wk531nvc6s"))))
d4fde1f2
DT
436 (build-system ruby-build-system)
437 (arguments
438 '(#:tests? #f)) ; avoid dependency cycles
439 (propagated-inputs
440 `(("ruby-rspec-core" ,ruby-rspec-core)
441 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
442 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
443 (synopsis "Behavior-driven development framework for Ruby")
444 (description "RSpec is a behavior-driven development (BDD) framework for
445Ruby. This meta-package includes the RSpec test runner, along with the
446expectations and mocks frameworks.")
447 (home-page "http://rspec.info/")
448 (license license:expat)))
2cbc105b 449
5ac984b3
BW
450(define-public ruby-rspec-2
451 (package (inherit ruby-rspec)
452 (version "2.14.1")
453 (source (origin
454 (method url-fetch)
455 (uri (rubygems-uri "rspec" version))
456 (sha256
457 (base32
458 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
459 (propagated-inputs
460 `(("ruby-rspec-core" ,ruby-rspec-core-2)
461 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
462 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
463
2cbc105b
DT
464;; Bundler is yet another source of circular dependencies, so we must disable
465;; its test suite as well.
466(define-public bundler
467 (package
468 (name "bundler")
29a33257 469 (version "1.15.4")
2cbc105b
DT
470 (source (origin
471 (method url-fetch)
e83c6d00 472 (uri (rubygems-uri "bundler" version))
2cbc105b
DT
473 (sha256
474 (base32
29a33257 475 "0wl4r7wbwdq68xidfv4hhzfb1spb6lmhbspwlzrg4pf1l6ipxlgs"))))
2cbc105b
DT
476 (build-system ruby-build-system)
477 (arguments
478 '(#:tests? #f)) ; avoid dependency cycles
479 (synopsis "Ruby gem bundler")
480 (description "Bundler automatically downloads and installs a list of gems
481specified in a \"Gemfile\", as well as their dependencies.")
2f3800e5 482 (home-page "https://bundler.io/")
2cbc105b 483 (license license:expat)))
98b87b82 484
cf36174f
RW
485(define-public ruby-builder
486 (package
487 (name "ruby-builder")
42b48db2 488 (version "3.2.3")
cf36174f
RW
489 (source (origin
490 (method url-fetch)
491 (uri (rubygems-uri "builder" version))
492 (sha256
493 (base32
42b48db2 494 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
cf36174f
RW
495 (build-system ruby-build-system)
496 (arguments
497 `(#:phases
498 (modify-phases %standard-phases
499 (add-after 'unpack 'do-not-use-rvm
500 (lambda _
501 (substitute* "rakelib/tags.rake"
502 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
503 #t)))))
504 (synopsis "Ruby library to create structured data")
505 (description "Builder provides a number of builder objects that make it
506easy to create structured data. Currently the following builder objects are
507supported: XML Markup and XML Events.")
508 (home-page "https://github.com/jimweirich/builder")
509 (license license:expat)))
510
ad79eb55
RW
511(define-public ruby-rjb
512 (package
513 (name "ruby-rjb")
aeb4e61e 514 (version "1.5.5")
ad79eb55
RW
515 (source (origin
516 (method url-fetch)
517 (uri (rubygems-uri "rjb" version))
518 (sha256
519 (base32
aeb4e61e 520 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
ad79eb55
RW
521 (build-system ruby-build-system)
522 (arguments
523 `(#:tests? #f ; no rakefile
524 #:phases
525 (modify-phases %standard-phases
526 (add-before 'build 'set-java-home
527 (lambda* (#:key inputs #:allow-other-keys)
528 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
529 #t)))))
530 (native-inputs
d2540f80 531 `(("jdk" ,icedtea "jdk")))
ad79eb55
RW
532 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
533 (description "RJB is a bridge program that connects Ruby and Java via the
534Java Native Interface.")
2f3800e5 535 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
ad79eb55
RW
536 (license license:lgpl2.1+)))
537
f9ae2c06
PP
538(define-public ruby-log4r
539 (package
540 (name "ruby-log4r")
541 (version "1.1.10")
542 (source
543 (origin
544 (method url-fetch)
545 (uri (rubygems-uri "log4r" version))
546 (sha256
547 (base32
548 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
549 (build-system ruby-build-system)
550 (arguments
551 '(#:tests? #f)) ; no Rakefile in gem
552 (synopsis "Flexible logging library for Ruby")
553 (description "Comprehensive and flexible logging library written
554in Ruby for use in Ruby programs. It features a hierarchical logging
555system of any number of levels, custom level names, logger
556inheritance, multiple output destinations per log event, execution
557tracing, custom formatting, thread safteyness, XML and YAML
558configuration, and more.")
559 (home-page "http://log4r.rubyforge.org/")
560 (license license:bsd-3)))
561
71a03c29
RW
562(define-public ruby-atoulme-antwrap
563 (package
564 (name "ruby-atoulme-antwrap")
565 (version "0.7.5")
566 (source (origin
567 (method url-fetch)
568 (uri (rubygems-uri "atoulme-Antwrap" version))
569 (sha256
570 (base32
571 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
572 (build-system ruby-build-system)
573 ;; Test data required for most of the tests are not included.
574 (arguments `(#:tests? #f))
575 (native-inputs
576 `(("ruby-hoe" ,ruby-hoe)))
577 (inputs
578 `(("ruby-rjb" ,ruby-rjb)))
579 (synopsis "Ruby wrapper for the Ant build tool")
580 (description "Antwrap is a Ruby module that wraps the Apache Ant build
581tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
582script.")
583 (home-page "http://rubyforge.org/projects/antwrap/")
584 (license license:expat)))
585
fe1ddad5
RW
586(define-public ruby-atoulme-saikuro
587 (package
588 (name "ruby-atoulme-saikuro")
589 (version "1.2.1")
590 (source (origin
591 (method url-fetch)
592 (uri (rubygems-uri "atoulme-Saikuro" version))
593 (sha256
594 (base32
595 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
596 (build-system ruby-build-system)
597 ;; FIXME: There are no unit tests. The tests are demonstrations of the
598 ;; "saikuro" tool.
599 (arguments `(#:tests? #f))
600 (synopsis "Cyclomatic complexity analyzer")
601 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
602given Ruby source code Saikuro will generate a report listing the cyclomatic
603complexity of each method found. In addition, Saikuro counts the number of
604lines per method and can generate a listing of the number of tokens on each
605line of code.")
606 (home-page "http://www.github.com/atoulme/Saikuro")
607 ;; File headers contain the BSD-3 license and the README.rdoc says that
608 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
609 ;; of the Expat license.
610 (license license:bsd-3)))
611
2f9e0b68
RW
612(define-public ruby-ci-reporter
613 (package
614 (name "ruby-ci-reporter")
615 (version "2.0.0")
616 (source (origin
617 (method url-fetch)
618 (uri (rubygems-uri "ci_reporter" version))
619 (sha256
620 (base32
621 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
622 (build-system ruby-build-system)
623 (arguments
624 `(#:test-target "rspec"))
625 (propagated-inputs
626 `(("ruby-builder" ,ruby-builder)))
627 (native-inputs
628 `(("bundler" ,bundler)
629 ("ruby-rspec" ,ruby-rspec)))
630 (synopsis "Generate XML reports of runs test")
631 (description
632 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
633you to generate XML reports of your test runs. The resulting files can be
634read by a continuous integration system that understands Ant's JUnit report
635format.")
636 (home-page "https://github.com/nicksieger/ci_reporter")
637 (license license:expat)))
638
fe5dd5f4
CB
639(define-public ruby-czmq-ffi-gen
640 (package
641 (name "ruby-czmq-ffi-gen")
642 (version "0.13.0")
643 (source
644 (origin
645 (method url-fetch)
646 (uri (rubygems-uri "czmq-ffi-gen" version))
647 (sha256
648 (base32
649 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
650 (build-system ruby-build-system)
651 (arguments
652 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
653 #:phases
654 (modify-phases %standard-phases
655 (add-after 'unpack 'patch-lib_dirs
656 (lambda* (#:key inputs #:allow-other-keys)
657 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
658 (("lib\\_dirs = \\[.*\\]")
659 (string-append "lib_dirs = ['"
660 (assoc-ref inputs "czmq") "/lib"
661 "']")))
662 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
663 (("lib\\_dirs = \\[.*\\]")
664 (string-append "lib_dirs = ['"
665 (assoc-ref inputs "zeromq") "/lib"
666 "']"))))))))
667 (inputs
668 `(("zeromq" ,zeromq)
669 ("czmq" ,czmq)))
670 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
671 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
672 (description
673 "These Ruby bindings are not intended to be directly used, but rather
674used by higher level bindings like those provided by CZTop.")
675 (home-page
676 "https://github.com/paddor/czmq-ffi-gen")
677 (license license:isc)))
678
d0afff26
CB
679(define-public ruby-cztop
680 (package
681 (name "ruby-cztop")
682 (version "0.12.2")
683 (source
684 (origin
685 (method url-fetch)
686 (uri (rubygems-uri "cztop" version))
687 (sha256
688 (base32
689 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
690 (build-system ruby-build-system)
691 (arguments
692 '(#:test-target "spec"
693 #:phases
694 (modify-phases %standard-phases
695 (add-after 'unpack 'patch-lib_paths
696 (lambda* (#:key inputs #:allow-other-keys)
697 (substitute* "lib/cztop/poller/zmq.rb"
698 (("lib\\_paths = \\[.*\\]")
699 (string-append "lib_paths = ['"
700 (assoc-ref inputs "zeromq") "/lib"
701 "']"))))))))
702 (native-inputs
703 `(("bundler" ,bundler)
704 ("ruby-rspec" ,ruby-rspec)))
705 (inputs
706 `(("zeromq" ,zeromq)))
707 (propagated-inputs
708 `(("ruby-czmq-ffi-gen" ,ruby-czmq-ffi-gen)))
709 (synopsis "CZMQ Ruby bindings")
710 (description
711 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
712CZMQ. The focus of of CZTop is on being easy to use and providing first class
713support for security mechanisms.")
714 (home-page "https://github.com/paddor/cztop")
715 (license license:isc)))
716
b004fb6a
RW
717(define-public ruby-saikuro-treemap
718 (package
719 (name "ruby-saikuro-treemap")
720 (version "0.2.0")
721 (source (origin
722 (method url-fetch)
723 (uri (rubygems-uri "saikuro_treemap" version))
724 (sha256
725 (base32
726 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
727 (build-system ruby-build-system)
728 ;; Some of the tests fail because the generated JSON has keys in a
729 ;; different order. This is a problem with the test suite rather than any
730 ;; of the involved libraries.
731 (arguments `(#:tests? #f))
732 (propagated-inputs
733 `(("ruby-json-pure" ,ruby-json-pure)
734 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
735 (synopsis "Generate complexity treemap based on saikuro analysis")
736 (description
737 "This gem generates a treemap showing the complexity of Ruby code on
738which it is run. It uses Saikuro under the covers to analyze Ruby code
739complexity.")
7bf837fd 740 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
b004fb6a
RW
741 (license license:expat)))
742
cef87ed6
CB
743(define-public ruby-options
744 (package
745 (name "ruby-options")
746 (version "2.3.2")
747 (source
748 (origin
749 (method url-fetch)
750 (uri (rubygems-uri "options" version))
751 (sha256
752 (base32
753 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
754 (build-system ruby-build-system)
755 (arguments
756 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
757 #:phases
758 (modify-phases %standard-phases
759 (add-before 'check 'set-LIB
760 (lambda _
761 ;; This is used in the Rakefile, and setting it avoids an issue
762 ;; with running the tests.
763 (setenv "LIB" "options"))))))
764 (synopsis "Ruby library to parse options from *args cleanly")
765 (description
766 "The @code{options} library helps with parsing keyword options in Ruby
767functions.")
768 (home-page "https://github.com/ahoward/options")
769 (license license:ruby)))
770
cc53e630
RW
771(define-public ruby-orderedhash
772 (package
773 (name "ruby-orderedhash")
774 (version "0.0.6")
775 (source (origin
776 (method url-fetch)
777 (uri (rubygems-uri "orderedhash" version))
778 (sha256
779 (base32
780 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
781 (build-system ruby-build-system)
782 (arguments
783 '(#:tests? #f)) ; no test suite
784 (synopsis "Ruby library providing an order-preserving hash")
785 (description "Orderedhash is a Ruby library providing a hash
786implementation that preserves the order of items and features some array-like
787extensions.")
788 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
789 (license license:public-domain)))
790
28c5d42d
PP
791(define-public ruby-libxml
792 (package
793 (name "ruby-libxml")
acbc5062 794 (version "3.0.0")
28c5d42d
PP
795 (source
796 (origin
797 (method url-fetch)
798 (uri (rubygems-uri "libxml-ruby" version))
799 (sha256
800 (base32
acbc5062 801 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
28c5d42d
PP
802 (build-system ruby-build-system)
803 (inputs
804 `(("zlib" ,zlib)
805 ("libxml2" ,libxml2)))
806 (arguments
807 '(#:tests? #f ; test suite hangs for unknown reason
808 #:gem-flags
809 (list "--"
810 (string-append "--with-xml2-include="
811 (assoc-ref %build-inputs "libxml2")
812 "/include/libxml2" ))))
813 (synopsis "Ruby bindings for GNOME Libxml2")
814 (description "The Libxml-Ruby project provides Ruby language bindings for
815the GNOME Libxml2 XML toolkit.")
2f3800e5 816 (home-page "https://xml4r.github.com/libxml-ruby")
28c5d42d
PP
817 (license license:expat)))
818
8b9bde07
RW
819(define-public ruby-xml-simple
820 (package
821 (name "ruby-xml-simple")
822 (version "1.1.5")
823 (source (origin
824 (method url-fetch)
825 (uri (rubygems-uri "xml-simple" version))
826 (sha256
827 (base32
828 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
829 (build-system ruby-build-system)
830 (arguments
831 '(#:tests? #f)) ; no test suite
832 (synopsis "Simple Ruby library for XML processing")
833 (description "This library provides a simple API for XML processing in
834Ruby.")
835 (home-page "https://github.com/maik/xml-simple")
836 (license license:ruby)))
837
2cb3ab48
RW
838(define-public ruby-thor
839 (package
840 (name "ruby-thor")
2e8cd862 841 (version "0.19.4")
2cb3ab48
RW
842 (source (origin
843 (method url-fetch)
844 (uri (rubygems-uri "thor" version))
845 (sha256
846 (base32
2e8cd862 847 "01n5dv9kql60m6a00zc0r66jvaxx98qhdny3klyj0p3w34pad2ns"))))
2cb3ab48
RW
848 (build-system ruby-build-system)
849 (arguments
850 '(#:tests? #f)) ; no test suite
851 (native-inputs
852 `(("bundler" ,bundler)))
853 (synopsis "Ruby toolkit for building command-line interfaces")
854 (description "Thor is a toolkit for building powerful command-line
855interfaces.")
856 (home-page "http://whatisthor.com/")
857 (license license:expat)))
858
ec79018e
RW
859(define-public ruby-lumberjack
860 (package
861 (name "ruby-lumberjack")
e32dfb74 862 (version "1.0.12")
ec79018e
RW
863 (source (origin
864 (method url-fetch)
865 (uri (rubygems-uri "lumberjack" version))
866 (sha256
867 (base32
e32dfb74 868 "0yz26k9mi0djx1qvlmvdw1xw2yf7a2rkfmnb2j0d28kms33xpibp"))))
ec79018e
RW
869 (build-system ruby-build-system)
870 (native-inputs
8be62d3f
BW
871 `(("ruby-rspec" ,ruby-rspec)
872 ("ruby-timecop" ,ruby-timecop)))
ec79018e
RW
873 (synopsis "Logging utility library for Ruby")
874 (description "Lumberjack is a simple logging utility that can be a drop in
875replacement for Logger or ActiveSupport::BufferedLogger. It provides support
876for automatically rolling log files even with multiple processes writing the
877same log file.")
7bf837fd 878 (home-page "https://github.com/bdurand/lumberjack")
ec79018e
RW
879 (license license:expat)))
880
70b4cf38
RW
881(define-public ruby-nenv
882 (package
883 (name "ruby-nenv")
12313cd0 884 (version "0.3.0")
70b4cf38
RW
885 (source (origin
886 (method url-fetch)
887 (uri (rubygems-uri "nenv" version))
888 (sha256
889 (base32
12313cd0 890 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
70b4cf38
RW
891 (build-system ruby-build-system)
892 (arguments
893 `(#:tests? #f)) ; no tests included
894 (native-inputs
895 `(("ruby-rspec" ,ruby-rspec)
896 ("bundler" ,bundler)))
897 (synopsis "Ruby interface for modifying the environment")
898 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
899and inspect the environment.")
900 (home-page "https://github.com/e2/nenv")
901 (license license:expat)))
902
8d9e9f28
RW
903(define-public ruby-permutation
904 (package
905 (name "ruby-permutation")
906 (version "0.1.8")
907 (source (origin
908 (method url-fetch)
909 (uri (rubygems-uri "permutation" version))
910 (sha256
911 (base32
912 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
913 (build-system ruby-build-system)
914 (arguments
915 `(#:phases
916 (modify-phases %standard-phases
917 (add-after 'unpack 'fix-rakefile
918 (lambda _
919 (substitute* "Rakefile"
920 (("require 'rake/gempackagetask'")
921 "require 'rubygems/package_task'")
922 (("include Config") ""))
923 #t))
924 (replace 'check
925 (lambda _
926 (zero? (system* "ruby" "-Ilib" "test/test.rb")))))))
927 (synopsis "Library to perform operations with sequence permutations")
928 (description "This package provides a Ruby library to perform different
929operations with permutations of sequences, such as strings and arrays.")
2f3800e5 930 (home-page "https://flori.github.io/permutation")
8d9e9f28
RW
931 (license license:gpl2))) ; GPL 2 only
932
c5d14d42
RW
933(define-public ruby-shellany
934 (package
935 (name "ruby-shellany")
936 (version "0.0.1")
937 (source (origin
938 (method url-fetch)
939 (uri (rubygems-uri "shellany" version))
940 (sha256
941 (base32
942 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
943 (build-system ruby-build-system)
944 (arguments
945 `(#:test-target "default"
946 #:phases
947 (modify-phases %standard-phases
948 (add-after 'unpack 'fix-version-test
949 (lambda _
950 (substitute* "spec/shellany_spec.rb"
951 (("^RSpec") "require \"shellany\"\nRSpec"))
952 #t)))))
953 (native-inputs
954 `(("ruby-rspec" ,ruby-rspec)
955 ("ruby-nenv" ,ruby-nenv)
956 ("bundler" ,bundler)))
957 (synopsis "Capture command output")
958 (description "Shellany is a Ruby library providing functions to capture
959the output produced by running shell commands.")
960 (home-page "https://rubygems.org/gems/shellany")
961 (license license:expat)))
962
d152162f
RW
963(define-public ruby-notiffany
964 (package
965 (name "ruby-notiffany")
a7ca218c 966 (version "0.1.1")
d152162f
RW
967 (source (origin
968 (method url-fetch)
969 (uri (rubygems-uri "notiffany" version))
970 (sha256
971 (base32
a7ca218c 972 "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx"))))
d152162f
RW
973 (build-system ruby-build-system)
974 ;; Tests are not included in the gem.
975 (arguments `(#:tests? #f))
976 (propagated-inputs
977 `(("ruby-shellany" ,ruby-shellany)
978 ("ruby-nenv" ,ruby-nenv)))
979 (native-inputs
980 `(("bundler" ,bundler)))
981 (synopsis "Wrapper libray for notification libraries")
982 (description "Notiffany is a Ruby wrapper libray for notification
983libraries such as Libnotify.")
984 (home-page "https://github.com/guard/notiffany")
985 (license license:expat)))
986
8528365b
RW
987(define-public ruby-formatador
988 (package
989 (name "ruby-formatador")
990 (version "0.2.5")
991 (source (origin
992 (method url-fetch)
993 (uri (rubygems-uri "formatador" version))
994 (sha256
995 (base32
996 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
997 (build-system ruby-build-system)
998 ;; Circular dependency: Tests require ruby-shindo, which requires
999 ;; ruby-formatador at runtime.
1000 (arguments `(#:tests? #f))
1001 (synopsis "Ruby library to format text on stdout")
1002 (description "Formatador is a Ruby library to format text printed to the
1003standard output stream.")
7bf837fd 1004 (home-page "https://github.com/geemus/formatador")
8528365b
RW
1005 (license license:expat)))
1006
7ac4610f
RW
1007(define-public ruby-shindo
1008 (package
1009 (name "ruby-shindo")
1010 (version "0.3.8")
1011 (source (origin
1012 (method url-fetch)
1013 (uri (rubygems-uri "shindo" version))
1014 (sha256
1015 (base32
1016 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
1017 (build-system ruby-build-system)
1018 (arguments
1019 `(#:test-target "shindo_tests"
1020 #:phases
1021 (modify-phases %standard-phases
1022 (add-after 'unpack 'fix-tests
1023 (lambda _
1024 (substitute* "Rakefile"
1025 (("system \"shindo") "system \"./bin/shindo")
1026 ;; This test doesn't work, so we disable it.
1027 (("fail \"The build_error test should fail") "#"))
1028 #t)))))
1029 (propagated-inputs
1030 `(("ruby-formatador" ,ruby-formatador)))
1031 (synopsis "Simple depth first Ruby testing")
1032 (description "Shindo is a simple depth first testing library for Ruby.")
1033 (home-page "https://github.com/geemus/shindo")
1034 (license license:expat)))
1035
f13636f2
RW
1036(define-public ruby-rubygems-tasks
1037 (package
1038 (name "ruby-rubygems-tasks")
1039 (version "0.2.4")
1040 (source (origin
1041 (method url-fetch)
1042 (uri (rubygems-uri "rubygems-tasks" version))
1043 (sha256
1044 (base32
1045 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
1046 (build-system ruby-build-system)
1047 ;; Tests need Internet access.
1048 (arguments `(#:tests? #f))
1049 (native-inputs
1050 `(("ruby-rspec" ,ruby-rspec)
1051 ("ruby-yard" ,ruby-yard)))
1052 (synopsis "Rake tasks for managing and releasing Ruby Gems")
1053 (description "Rubygems-task provides Rake tasks for managing and releasing
1054Ruby Gems.")
1055 (home-page "https://github.com/postmodern/rubygems-tasks")
1056 (license license:expat)))
1057
cb6bc5df
CB
1058(define-public ruby-rubyzip
1059 (package
1060 (name "ruby-rubyzip")
1061 (version "1.2.1")
1062 (source
1063 (origin
1064 (method url-fetch)
1065 (uri (rubygems-uri "rubyzip" version))
1066 (sha256
1067 (base32
1068 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
1069 (build-system ruby-build-system)
1070 (arguments
1071 '(#:phases
1072 (modify-phases %standard-phases
1073 (add-before 'check 'patch-tests
1074 (lambda* (#:key inputs #:allow-other-keys)
1075 (substitute* "test/gentestfiles.rb"
1076 (("/usr/bin/zip")
1077 (string-append
1078 (assoc-ref inputs "zip") "/bin/zip")))
1079 (substitute* "test/input_stream_test.rb"
1080 (("/usr/bin/env ruby") (which "ruby")))
1081 #t)))))
1082 (native-inputs
1083 `(("bundler" ,bundler)
1084 ("ruby-simplecov" ,ruby-simplecov)
1085 ("zip" ,zip)
1086 ("unzip" ,unzip)))
1087 (synopsis "Ruby module is for reading and writing zip files")
1088 (description
1089 "The rubyzip module provides ways to read from and create zip files.")
1090 (home-page "http://github.com/rubyzip/rubyzip")
1091 (license license:bsd-2)))
1092
58b59742
RW
1093(define-public ruby-simplecov-html
1094 (package
1095 (name "ruby-simplecov-html")
53fd476f 1096 (version "0.10.2")
58b59742
RW
1097 (source (origin
1098 (method url-fetch)
1099 (uri (rubygems-uri "simplecov-html" version))
1100 (sha256
1101 (base32
53fd476f 1102 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
58b59742 1103 (build-system ruby-build-system)
8b749cf3 1104 (arguments `(#:tests? #f)) ; there are no tests
58b59742
RW
1105 (native-inputs
1106 `(("bundler" ,bundler)))
1107 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
1108 (description "This package provides the default HTML formatter for
1109the SimpleCov code coverage tool for Ruby version 1.9 and above.")
1110 (home-page "https://github.com/colszowka/simplecov-html")
1111 (license license:expat)))
1112
a84fa2ad
RW
1113(define-public ruby-simplecov
1114 (package
1115 (name "ruby-simplecov")
1b107245 1116 (version "0.12.0")
a84fa2ad
RW
1117 (source (origin
1118 (method url-fetch)
1119 (uri (rubygems-uri "simplecov" version))
1120 (sha256
1121 (base32
1b107245 1122 "0ffhyrfnq2zm2mc1742a4hqy475g3qa1zf6yfldwg1ldh5sn3qbx"))))
a84fa2ad
RW
1123 (build-system ruby-build-system)
1124 ;; Simplecov depends on rubocop for code style checking at build time.
1125 ;; Rubocop needs simplecov at build time.
1126 (arguments `(#:tests? #f))
1127 (propagated-inputs
1128 `(("ruby-json" ,ruby-json)
1129 ("ruby-docile" ,ruby-docile)
1130 ("ruby-simplecov-html" ,ruby-simplecov-html)))
1131 (native-inputs
1132 `(("bundler" ,bundler)))
1133 (synopsis "Code coverage framework for Ruby")
1134 (description "SimpleCov is a code coverage framework for Ruby with a
1135powerful configuration library and automatic merging of coverage across test
1136suites.")
7bf837fd 1137 (home-page "https://github.com/colszowka/simplecov")
a84fa2ad
RW
1138 (license license:expat)))
1139
98b87b82
DT
1140(define-public ruby-useragent
1141 (package
1142 (name "ruby-useragent")
3b0e45c8 1143 (version "0.16.8")
98b87b82
DT
1144 (source (origin
1145 (method url-fetch)
e83c6d00 1146 (uri (rubygems-uri "useragent" version))
98b87b82
DT
1147 (sha256
1148 (base32
3b0e45c8 1149 "1139cjqyv1hk1qcw89k81ajjkqyakqgbcyvmfrsmjqi8yn9kgqhq"))))
98b87b82
DT
1150 (build-system ruby-build-system)
1151 (arguments
e83c6d00 1152 '(#:tests? #f)) ; no test suite
98b87b82
DT
1153 (synopsis "HTTP user agent parser for Ruby")
1154 (description "UserAgent is a Ruby library that parses and compares HTTP
1155User Agents.")
1156 (home-page "https://github.com/gshutler/useragent")
1157 (license license:expat)))
96086cc5
DT
1158
1159(define-public ruby-bacon
1160 (package
1161 (name "ruby-bacon")
e83c6d00 1162 (version "1.2.0")
96086cc5
DT
1163 (source (origin
1164 (method url-fetch)
e83c6d00 1165 (uri (rubygems-uri "bacon" version))
96086cc5
DT
1166 (sha256
1167 (base32
e83c6d00 1168 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
96086cc5 1169 (build-system ruby-build-system)
96086cc5
DT
1170 (synopsis "Small RSpec clone")
1171 (description "Bacon is a small RSpec clone providing all essential
1172features.")
1173 (home-page "https://github.com/chneukirchen/bacon")
1174 (license license:expat)))
de59d316 1175
a8d2bf3c
CB
1176(define-public ruby-bacon-bits
1177 (package
1178 (name "ruby-bacon-bits")
1179 (version "0.1.0")
1180 (source
1181 (origin
1182 (method url-fetch)
1183 (uri (rubygems-uri "bacon-bits" version))
1184 (sha256
1185 (base32
1186 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
1187 (build-system ruby-build-system)
1188 (arguments
1189 ;; No tests
1190 '(#:tests? #f))
1191 (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
1192 (synopsis "Extensions to Bacon, for disabling tests, before and after
1193blocks and more")
1194 (description
1195 "This extends the bacon testing framework with useful extensions to
1196disable tests, have before and after blocks that run once and more.")
1197 (home-page "https://github.com/cldwalker/bacon-bits")
1198 (license license:expat)))
1199
e259bdf0
DT
1200(define-public ruby-connection-pool
1201 (package
1202 (name "ruby-connection-pool")
a3179a73 1203 (version "2.2.1")
e259bdf0
DT
1204 (source (origin
1205 (method url-fetch)
e83c6d00 1206 (uri (rubygems-uri "connection_pool" version))
e259bdf0
DT
1207 (sha256
1208 (base32
a3179a73 1209 "17vpaj6kyf2i8bimaxz7rg1kyadf4d10642ja67qiqlhwgczl2w7"))))
e259bdf0
DT
1210 (build-system ruby-build-system)
1211 (native-inputs
1212 `(("bundler" ,bundler)))
1213 (synopsis "Generic connection pool for Ruby")
1214 (description "Connection_pool provides a generic connection pooling
1215interface for Ruby programs.")
1216 (home-page "https://github.com/mperham/connection_pool")
1217 (license license:expat)))
4c0aeb44
DT
1218
1219(define-public ruby-net-http-persistent
1220 (package
1221 (name "ruby-net-http-persistent")
185ea446 1222 (version "3.0.0")
4c0aeb44
DT
1223 (source (origin
1224 (method url-fetch)
e83c6d00 1225 (uri (rubygems-uri "net-http-persistent" version))
4c0aeb44
DT
1226 (sha256
1227 (base32
185ea446 1228 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
4c0aeb44 1229 (build-system ruby-build-system)
4c0aeb44
DT
1230 (native-inputs
1231 `(("ruby-connection-pool" ,ruby-connection-pool)
1232 ("ruby-hoe" ,ruby-hoe)))
1233 (synopsis "Persistent HTTP connection manager")
1234 (description "Net::HTTP::Persistent manages persistent HTTP connections
1235using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
1236 (home-page "https://github.com/drbrain/net-http-persistent")
1237 (license license:expat)))
afbbdf77 1238
f88bacaf
RW
1239(define-public ruby-power-assert
1240 (package
1241 (name "ruby-power-assert")
3918146b 1242 (version "0.2.7")
f88bacaf
RW
1243 (source (origin
1244 (method url-fetch)
1245 (uri (rubygems-uri "power_assert" version))
1246 (sha256
1247 (base32
3918146b 1248 "0ka6w71lcan4wgf111xi3pcn9ma9lhakv31jg8w007nwzi0xfjbi"))))
f88bacaf
RW
1249 (build-system ruby-build-system)
1250 (native-inputs
1251 `(("bundler" ,bundler)))
1252 (synopsis "Assert library with descriptive assertion messages")
1253 (description "Power-assert is an assertion library providing descriptive
1254assertion messages for tests.")
1255 (home-page "https://github.com/k-tsj/power_assert")
1256 (license (list license:bsd-2 license:ruby))))
1257
347eb21e
RW
1258(define-public ruby-locale
1259 (package
1260 (name "ruby-locale")
1261 (version "2.1.2")
1262 (source (origin
1263 (method url-fetch)
1264 (uri (rubygems-uri "locale" version))
1265 (sha256
1266 (base32
1267 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
1268 (build-system ruby-build-system)
1269 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1270 ;; which needs ruby-gettext, which needs ruby-locale. To break the
1271 ;; dependency cycle we disable tests.
1272 (arguments `(#:tests? #f))
1273 (native-inputs
1274 `(("bundler" ,bundler)
1275 ("ruby-yard" ,ruby-yard)))
1276 (synopsis "Ruby library providing basic localization APIs")
1277 (description
1278 "Ruby-Locale is the pure ruby library which provides basic APIs for
1279localization.")
1280 (home-page "https://github.com/ruby-gettext/locale")
1281 (license (list license:lgpl3+ license:ruby))))
1282
e2333ea3
RW
1283(define-public ruby-text
1284 (package
1285 (name "ruby-text")
1286 (version "1.3.1")
1287 (source (origin
1288 (method url-fetch)
1289 (uri (rubygems-uri "text" version))
1290 (sha256
1291 (base32
1292 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
1293 (build-system ruby-build-system)
1294 (synopsis "Collection of text algorithms for Ruby")
1295 (description
1296 "This package provides a collection of text algorithms: Levenshtein,
1297Soundex, Metaphone, Double Metaphone, Porter Stemming.")
7bf837fd 1298 (home-page "https://github.com/threedaymonk/text")
e2333ea3
RW
1299 (license license:expat)))
1300
c1f52261
RW
1301(define-public ruby-gettext
1302 (package
1303 (name "ruby-gettext")
1304 (version "3.1.7")
1305 (source (origin
1306 (method url-fetch)
1307 (uri (rubygems-uri "gettext" version))
1308 (sha256
1309 (base32
1310 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
1311 (build-system ruby-build-system)
1312 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1313 ;; which needs ruby-gettext. To break the dependency cycle we disable
1314 ;; tests.
1315 (arguments `(#:tests? #f))
1316 (propagated-inputs
1317 `(("ruby-locale" ,ruby-locale)
1318 ("ruby-text" ,ruby-text)))
1319 (native-inputs
1320 `(("bundler" ,bundler)
1321 ("ruby-yard" ,ruby-yard)))
1322 (synopsis "GNU gettext-like program for Ruby")
1323 (description
1324 "Gettext is a GNU gettext-like program for Ruby. The catalog
1325file (po-file) used is the same as that used by GNU gettext, allowing you to
1326use GNU gettext tools for maintenance.")
2f3800e5 1327 (home-page "https://ruby-gettext.github.com/")
c1f52261
RW
1328 (license (list license:lgpl3+ license:ruby))))
1329
cc5aeb8c
RW
1330(define-public ruby-packnga
1331 (package
1332 (name "ruby-packnga")
1d60c436 1333 (version "1.0.4")
cc5aeb8c
RW
1334 (source (origin
1335 (method url-fetch)
1336 (uri (rubygems-uri "packnga" version))
1337 (sha256
1338 (base32
1d60c436 1339 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
cc5aeb8c
RW
1340 (build-system ruby-build-system)
1341 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
1342 ;; To break the dependency cycle we disable tests.
1343 (arguments `(#:tests? #f))
1344 (propagated-inputs
1345 `(("ruby-gettext" ,ruby-gettext)
1346 ("ruby-yard" ,ruby-yard)))
1347 (native-inputs
1348 `(("bundler" ,bundler)))
1349 (synopsis "Utility library to package internationalized libraries")
1350 (description
1351 "Packnga is a library to translate to many languages using YARD.")
1352 (home-page "http://ranguba.org/packnga/")
1353 (license license:lgpl2.0+)))
1354
3383f5bd
RW
1355(define-public ruby-test-unit
1356 (package
1357 (name "ruby-test-unit")
d74d96e4 1358 (version "3.2.5")
3383f5bd
RW
1359 (source (origin
1360 (method url-fetch)
1361 (uri (rubygems-uri "test-unit" version))
1362 (sha256
1363 (base32
d74d96e4 1364 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
3383f5bd
RW
1365 (build-system ruby-build-system)
1366 (propagated-inputs
1367 `(("ruby-power-assert" ,ruby-power-assert)))
1368 (native-inputs
1369 `(("bundler" ,bundler)
1370 ("ruby-packnga" ,ruby-packnga)
1371 ("ruby-yard" ,ruby-yard)))
1372 (synopsis "Unit testing framework for Ruby")
1373 (description "@code{Test::Unit} is unit testing framework for Ruby, based
1374on xUnit principles. These were originally designed by Kent Beck, creator of
1375extreme programming software development methodology, for Smalltalk's SUnit.
1376It allows writing tests, checking results and automated testing in Ruby.")
2f3800e5 1377 (home-page "https://test-unit.github.io/")
3383f5bd
RW
1378 (license (list license:psfl license:ruby))))
1379
25d6d49b
RW
1380(define-public ruby-metaclass
1381 (package
1382 (name "ruby-metaclass")
1383 (version "0.0.4")
1384 (source (origin
1385 (method url-fetch)
1386 (uri (rubygems-uri "metaclass" version))
1387 (sha256
1388 (base32
1389 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
1390 (build-system ruby-build-system)
1391 (arguments
1392 `(#:phases
1393 (modify-phases %standard-phases
1394 (add-after 'unpack 'add-test-unit-to-search-path
761e7042 1395 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 1396 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
1397 (substitute* "Rakefile"
1398 (("t\\.libs << \"test\"" line)
1399 (string-append line "; t.libs << \""
3cb3fa67 1400 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
1401 "/gems/test-unit-"
1402 ,(package-version ruby-test-unit)
1403 "/lib\""))))
1404 #t)))))
25d6d49b
RW
1405 (native-inputs
1406 `(("bundler" ,bundler)
1407 ("ruby-test-unit" ,ruby-test-unit)))
1408 (synopsis "Ruby library adding metaclass method to all objects")
1409 (description
1410 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
1411objects.")
7bf837fd 1412 (home-page "https://github.com/floehopper/metaclass")
25d6d49b
RW
1413 (license license:expat)))
1414
21f7b7bd
RW
1415(define-public ruby-blankslate
1416 (package
1417 (name "ruby-blankslate")
1418 (version "3.1.3")
1419 (source (origin
1420 (method url-fetch)
1421 (uri (rubygems-uri "blankslate" version))
1422 (sha256
1423 (base32
1424 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
1425 (build-system ruby-build-system)
1426 (arguments
1427 `(#:phases
1428 (modify-phases %standard-phases
1429 (replace 'check
1430 (lambda _ (zero? (system* "rspec" "spec/")))))))
1431 (native-inputs
1432 `(("bundler" ,bundler)
1433 ("ruby-rspec" ,ruby-rspec)))
1434 (synopsis "Abstract base class with no predefined methods")
1435 (description
1436 "BlankSlate provides an abstract base class with no predefined
1437methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
1438as a base class when writing classes that depend upon
1439@code{method_missing} (e.g. dynamic proxies).")
7bf837fd 1440 (home-page "https://github.com/masover/blankslate")
21f7b7bd
RW
1441 (license license:expat)))
1442
afdb437c
CB
1443(define-public ruby-bond
1444 (package
1445 (name "ruby-bond")
1446 (version "0.5.1")
1447 (source
1448 (origin
1449 (method url-fetch)
1450 (uri (rubygems-uri "bond" version))
1451 (sha256
1452 (base32
1453 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
1454 (build-system ruby-build-system)
1455 (native-inputs
1456 `(("ruby-bacon" ,ruby-bacon)
1457 ("ruby-bacon-bits" ,ruby-bacon-bits)
1458 ("ruby-mocha-on-bacon" ,ruby-mocha-on-bacon)))
1459 (synopsis "Bond can provide custom autocompletion for arguments, methods
1460and more")
1461 (description
1462 "Bond can autocomplete argument(s) to methods, uniquely completing per
1463module, per method and per argument. Bond provides a configuration system and
1464a DSL for creating custom completions and completion rules. Bond can also
1465load completions that ship with gems. Bond is able to offer more than irb's
1466completion since it uses the full line of input when completing as opposed to
1467irb's last-word approach.")
1468 (home-page "http://tagaholic.me/bond/")
1469 (license license:expat)))
1470
4016ba3f
RW
1471(define-public ruby-instantiator
1472 (package
1473 (name "ruby-instantiator")
1474 (version "0.0.6")
1475 (source (origin
1476 (method url-fetch)
1477 (uri (rubygems-uri "instantiator" version))
1478 (sha256
1479 (base32
1480 "0mfmqhg9xrv9i8i1kmphf15ywddhivyh2z3ccl0xjw8qy54zr21i"))))
1481 (build-system ruby-build-system)
1482 (arguments
1483 `(#:phases
1484 (modify-phases %standard-phases
1485 (add-after 'unpack 'add-test-unit-to-search-path
761e7042 1486 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 1487 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
1488 (substitute* "Rakefile"
1489 (("t\\.libs << \"test\"" line)
1490 (string-append line "; t.libs << \""
3cb3fa67 1491 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
1492 "/gems/test-unit-"
1493 ,(package-version ruby-test-unit)
1494 "/lib\""))))
1495 #t)))))
4016ba3f
RW
1496 (propagated-inputs
1497 `(("ruby-blankslate" ,ruby-blankslate)))
1498 (native-inputs
1499 `(("bundler" ,bundler)
1500 ("ruby-test-unit" ,ruby-test-unit)))
1501 (synopsis "Instantiate an arbitrary Ruby class")
1502 (description
1503 "Instantiator lets you instantiate an arbitrary Ruby class without
1504knowing anything about the constructor.")
1505 (home-page "https://github.com/floehopper/instantiator")
1506 (license license:expat)))
1507
97aee8d3
RW
1508(define-public ruby-introspection
1509 (package
1510 (name "ruby-introspection")
98ff58a5 1511 (version "0.0.4")
97aee8d3
RW
1512 (source (origin
1513 (method url-fetch)
1514 (uri (rubygems-uri "introspection" version))
1515 (sha256
1516 (base32
98ff58a5 1517 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
97aee8d3
RW
1518 (build-system ruby-build-system)
1519 (arguments
1520 `(#:phases
1521 (modify-phases %standard-phases
1522 (add-after 'unpack 'add-test-unit-to-search-path
1523 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 1524 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
1525 (substitute* "Rakefile"
1526 (("t\\.libs << \"test\"" line)
1527 (string-append line "; t.libs << \""
3cb3fa67 1528 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
1529 "/gems/test-unit-"
1530 ,(package-version ruby-test-unit)
1531 "/lib\""))))
97aee8d3
RW
1532 #t)))))
1533 (propagated-inputs
1534 `(("ruby-instantiator" ,ruby-instantiator)
1535 ("ruby-metaclass" ,ruby-metaclass)))
1536 (native-inputs
1537 `(("bundler" ,bundler)
1538 ("ruby-blankslate" ,ruby-blankslate)
1539 ("ruby-test-unit" ,ruby-test-unit)))
1540 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
1541 (description
1542 "Introspection provides tools to inspect the hierarchy of method
1543definitions on a Ruby object.")
1544 (home-page "https://github.com/floehopper/introspection")
1545 (license license:expat)))
1546
d93062fd
RW
1547(define-public ruby-redcarpet
1548 (package
1549 (name "ruby-redcarpet")
5ca48923 1550 (version "3.4.0")
d93062fd
RW
1551 (source (origin
1552 (method url-fetch)
1553 (uri (rubygems-uri "redcarpet" version))
1554 (sha256
1555 (base32
5ca48923 1556 "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7"))))
d93062fd
RW
1557 (build-system ruby-build-system)
1558 (arguments
1559 `(#:phases
1560 (modify-phases %standard-phases
1561 ;; The gem archive does not include the conformance tests.
1562 (add-after 'unpack 'disable-conformance-tests
1563 (lambda _
1564 (substitute* "Rakefile"
1565 (("task :test => %w\\[test:unit test:conformance\\]")
1566 "task :test => %w[test:unit]"))
1567 #t)))))
1568 (native-inputs
1569 `(("bundler" ,bundler)
1570 ("ruby-test-unit" ,ruby-test-unit)
1571 ("ruby-rake-compiler" ,ruby-rake-compiler)))
1572 (synopsis "Extensible Markdown to (X)HTML converter")
1573 (description
1574 "Redcarpet is an extensible Ruby library for Markdown processing and
1575conversion to (X)HTML.")
7bf837fd 1576 (home-page "https://github.com/vmg/redcarpet")
d93062fd
RW
1577 (license license:expat)))
1578
4f2a52ae
RW
1579(define-public ruby-mocha
1580 (package
1581 (name "ruby-mocha")
1582 (version "1.1.0")
1583 (source (origin
1584 (method url-fetch)
1585 (uri (rubygems-uri "mocha" version))
1586 (sha256
1587 (base32
1588 "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
1589 (build-system ruby-build-system)
1590 (arguments
1591 `(#:phases
1592 (modify-phases %standard-phases
1593 (add-after 'unpack 'add-test-unit-to-search-path
1594 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 1595 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
1596 (substitute* "Rakefile"
1597 (("t\\.libs << 'test'" line)
1598 (string-append line "; t.libs << \""
3cb3fa67 1599 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
1600 "/gems/test-unit-"
1601 ,(package-version ruby-test-unit)
1602 "/lib\""))))
4f2a52ae
RW
1603 #t))
1604 (add-before 'check 'use-latest-redcarpet
1605 (lambda _
1606 (substitute* "mocha.gemspec"
71596c3c
BW
1607 (("<redcarpet>.freeze, \\[\"~> 1\"\\]")
1608 "<redcarpet>.freeze, [\">= 3\"]"))
4f2a52ae
RW
1609 #t))
1610 (add-before 'check 'hardcode-version
1611 (lambda _
1612 ;; Mocha is undefined at build time
1613 (substitute* "Rakefile"
1614 (("#\\{Mocha::VERSION\\}") ,version))
1615 #t))
1616 (add-before 'check 'remove-failing-test
1617 ;; FIXME: This test fails for reasons unrelated to Guix packaging.
1618 (lambda _
1619 (delete-file "test/acceptance/stubbing_nil_test.rb")
1620 #t)))))
1621 (propagated-inputs
1622 `(("ruby-metaclass" ,ruby-metaclass)))
1623 (native-inputs
1624 `(("bundler" ,bundler)
1625 ("ruby-yard" ,ruby-yard)
1626 ("ruby-introspection" ,ruby-introspection)
1627 ("ruby-test-unit" ,ruby-test-unit)
1628 ("ruby-redcarpet" ,ruby-redcarpet)))
1629 (synopsis "Mocking and stubbing library for Ruby")
1630 (description
1631 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
1632allows mocking and stubbing of methods on real (non-mock) classes.")
1633 (home-page "http://gofreerange.com/mocha/docs")
1634 (license license:expat)))
1635
cf646acf
CB
1636(define-public ruby-mocha-on-bacon
1637 (package
1638 (name "ruby-mocha-on-bacon")
1639 (version "0.2.3")
1640 (source
1641 (origin
1642 (method url-fetch)
1643 (uri (rubygems-uri "mocha-on-bacon" version))
1644 (sha256
1645 (base32
1646 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
1647 (build-system ruby-build-system)
1648 (arguments
1649 ;; rubygems.org release missing tests
1650 '(#:tests? #f))
1651 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
1652 (synopsis "Mocha adapter for Bacon")
1653 (description
1654 "This package provides a Mocha adapter for Bacon, allowing you to use the
1655Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
1656 (home-page
1657 "https://github.com/alloy/mocha-on-bacon")
1658 (license license:expat)))
1659
2c84ba7e
RW
1660(define-public ruby-net-ssh
1661 (package
1662 (name "ruby-net-ssh")
a7938625 1663 (version "4.1.0")
2c84ba7e
RW
1664 (source (origin
1665 (method url-fetch)
1666 (uri (rubygems-uri "net-ssh" version))
1667 (sha256
1668 (base32
a7938625 1669 "013p5jb4wy0cq7x7036piw2a3s1i9p752ki1srx2m289mpz4ml3q"))))
2c84ba7e
RW
1670 (build-system ruby-build-system)
1671 (native-inputs
a7938625
MB
1672 `(("bundler" ,bundler)
1673 ("ruby-mocha" ,ruby-mocha)
2c84ba7e
RW
1674 ("ruby-test-unit" ,ruby-test-unit)))
1675 (synopsis "Ruby implementation of the SSH2 client protocol")
1676 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
1677client protocol. It allows you to write programs that invoke and interact
1678with processes on remote servers, via SSH2.")
1679 (home-page "https://github.com/net-ssh/net-ssh")
1680 (license license:expat)))
1681
2206e948
DT
1682(define-public ruby-minitest
1683 (package
1684 (name "ruby-minitest")
483846ac 1685 (version "5.10.3")
2206e948 1686 (source (origin
e83c6d00
DT
1687 (method url-fetch)
1688 (uri (rubygems-uri "minitest" version))
2206e948
DT
1689 (sha256
1690 (base32
483846ac 1691 "05521clw19lrksqgvg2kmm025pvdhdaniix52vmbychrn2jm7kz2"))))
2206e948 1692 (build-system ruby-build-system)
2206e948
DT
1693 (native-inputs
1694 `(("ruby-hoe" ,ruby-hoe)))
1695 (synopsis "Small test suite library for Ruby")
1696 (description "Minitest provides a complete suite of Ruby testing
1697facilities supporting TDD, BDD, mocking, and benchmarking.")
1698 (home-page "https://github.com/seattlerb/minitest")
1699 (license license:expat)))
1700
1db6e09f
RW
1701;; This is the last release of Minitest 4, which is used by some packages.
1702(define-public ruby-minitest-4
1703 (package (inherit ruby-minitest)
1704 (version "4.7.5")
1705 (source (origin
1706 (method url-fetch)
1707 (uri (rubygems-uri "minitest" version))
1708 (sha256
1709 (base32
1710 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
1711 (arguments
1712 `(#:phases
1713 (modify-phases %standard-phases
1714 (add-after 'unpack 'remove-unsupported-method
1715 (lambda _
1716 (substitute* "Rakefile"
1717 (("self\\.rubyforge_name = .*") ""))
9a7017eb
BW
1718 #t))
1719 (add-after 'build 'exclude-failing-tests
1720 (lambda _
1721 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
1722 ;; Fixnum.
1723 (delete-file "test/minitest/test_minitest_spec.rb")
1724 #t)))))))
1db6e09f 1725
35130835
DT
1726(define-public ruby-minitest-sprint
1727 (package
1728 (name "ruby-minitest-sprint")
1729 (version "1.1.0")
1730 (source (origin
e83c6d00
DT
1731 (method url-fetch)
1732 (uri (rubygems-uri "minitest-sprint" version))
35130835
DT
1733 (sha256
1734 (base32
e83c6d00 1735 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
35130835 1736 (build-system ruby-build-system)
35130835
DT
1737 (native-inputs
1738 `(("ruby-hoe" ,ruby-hoe)
1739 ("ruby-minitest" ,ruby-minitest)))
1740 (synopsis "Fast test suite runner for minitest")
1741 (description "Minitest-sprint is a test runner for minitest that makes it
1742easier to re-run individual failing tests.")
1743 (home-page "https://github.com/seattlerb/minitest-sprint")
1744 (license license:expat)))
1745
0808e361
DT
1746(define-public ruby-minitest-bacon
1747 (package
1748 (name "ruby-minitest-bacon")
6f9652b0 1749 (version "1.0.3")
0808e361 1750 (source (origin
e83c6d00
DT
1751 (method url-fetch)
1752 (uri (rubygems-uri "minitest-bacon" version))
0808e361
DT
1753 (sha256
1754 (base32
6f9652b0 1755 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
0808e361 1756 (build-system ruby-build-system)
0808e361
DT
1757 (native-inputs
1758 `(("ruby-hoe" ,ruby-hoe)))
1759 (inputs
1760 `(("ruby-minitest" ,ruby-minitest)))
1761 (synopsis "Bacon compatibility library for minitest")
1762 (description "Minitest-bacon extends minitest with bacon-like
1763functionality, making it easier to migrate test suites from bacon to minitest.")
1764 (home-page "https://github.com/seattlerb/minitest-bacon")
1765 (license license:expat)))
1766
39dc0eb5
BW
1767(define-public ruby-minitest-focus
1768 (package
1769 (name "ruby-minitest-focus")
1770 (version "1.1.2")
1771 (source
1772 (origin
1773 (method url-fetch)
1774 (uri (rubygems-uri "minitest-focus" version))
1775 (sha256
1776 (base32
1777 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
1778 (build-system ruby-build-system)
1779 (propagated-inputs
1780 `(("ruby-minitest" ,ruby-minitest)))
1781 (native-inputs
1782 `(("ruby-hoe" ,ruby-hoe)))
1783 (synopsis "Allows a few specific tests to be focused on")
1784 (description
1785 "@code{minitest-focus} gives the ability focus on a few tests with ease
1786without having to use command-line arguments. It introduces a @code{focus}
1787class method for use in testing classes, specifying that the next defined test
1788is to be run.")
1789 (home-page "https://github.com/seattlerb/minitest-focus")
1790 (license license:expat)))
1791
99fc5cd5
BW
1792(define-public ruby-minitest-pretty-diff
1793 ;; Use git reference because gem is out of date and does not contain testing
1794 ;; script. There are no releases on GitHub.
1795 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
1796 (package
1797 (name "ruby-minitest-pretty-diff")
1798 (version (string-append "0.1-1." (string-take commit 8)))
1799 (source (origin
1800 (method git-fetch)
1801 (uri (git-reference
1802 (url "https://github.com/adammck/minitest-pretty_diff.git")
1803 (commit commit)))
1804 (file-name (string-append name "-" version "-checkout"))
1805 (sha256
1806 (base32
1807 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
1808 (build-system ruby-build-system)
1809 (arguments
1810 `(#:phases
1811 (modify-phases %standard-phases
1812 (replace 'check
1813 (lambda _
1814 (zero? (system* "script/test")))))))
1815 (native-inputs
1816 `(("bundler" ,bundler)
1817 ("ruby-turn" ,ruby-turn)))
1818 (synopsis "Pretty-print hashes and arrays in MiniTest")
1819 (description
1820 "@code{minitest-pretty_diff} monkey-patches
1821@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
1822diffing them. This makes it easier to spot differences between nested
1823structures when tests fail.")
1824 (home-page "https://github.com/adammck/minitest-pretty_diff")
1825 (license license:expat))))
1826
685d0d2f
BW
1827(define-public ruby-minitest-moar
1828 (package
1829 (name "ruby-minitest-moar")
1830 (version "0.0.4")
1831 (source
1832 (origin
1833 (method url-fetch)
1834 (uri (rubygems-uri "minitest-moar" version))
1835 (sha256
1836 (base32
1837 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
1838 (build-system ruby-build-system)
1839 (arguments
1840 `(#:phases
1841 (modify-phases %standard-phases
1842 (add-before 'check 'clean-dependencies
1843 (lambda _
1844 ;; Remove all gems defined in the Gemfile because these are not
1845 ;; truly needed.
1846 (substitute* "Gemfile"
1847 (("gem .*") ""))
1848 ;; Remove byebug as not needed to run tests.
1849 (substitute* "test/test_helper.rb"
1850 (("require 'byebug'") ""))
1851 #t)))))
1852 (native-inputs
1853 `(("bundler" ,bundler)
1854 ("ruby-minitest" ,ruby-minitest)))
1855 (synopsis "Extra features and changes to MiniTest")
1856 (description "@code{MiniTest Moar} add some additional features and
1857changes some default behaviours in MiniTest. For instance, Moar replaces the
1858MiniTest @code{Object#stub} with a global @code{stub} method.")
1859 (home-page "https://github.com/dockyard/minitest-moar")
1860 (license license:expat)))
1861
e07ef1d6
BW
1862(define-public ruby-minitest-bonus-assertions
1863 (package
1864 (name "ruby-minitest-bonus-assertions")
c9e261b7 1865 (version "3.0")
e07ef1d6
BW
1866 (source
1867 (origin
1868 (method url-fetch)
1869 (uri (rubygems-uri "minitest-bonus-assertions" version))
1870 (sha256
1871 (base32
c9e261b7 1872 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
e07ef1d6
BW
1873 (build-system ruby-build-system)
1874 (arguments
1875 `(#:phases
1876 (modify-phases %standard-phases
1877 (add-before 'check 'clean-dependencies
1878 (lambda _
1879 ;; Remove unneeded require statement that would entail another
1880 ;; dependency.
1881 (substitute* "test/minitest_config.rb"
1882 (("require 'minitest/bisect'") ""))
1883 #t)))))
1884 (native-inputs
1885 `(("ruby-hoe" ,ruby-hoe)
1886 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
1887 ("ruby-minitest-focus" ,ruby-minitest-focus)
1888 ("ruby-minitest-moar" ,ruby-minitest-moar)))
1889 (synopsis "Bonus assertions for @code{Minitest}")
1890 (description
1891 "Minitest bonus assertions provides extra MiniTest assertions. For
1892instance, it provides @code{assert_true}, @code{assert_false} and
1893@code{assert_set_equal}.")
1894 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
1895 (license license:expat)))
1896
e582fa93
BW
1897(define-public ruby-minitest-rg
1898 (package
1899 (name "ruby-minitest-rg")
1900 (version "5.2.0")
1901 (source
1902 (origin
1903 (method url-fetch)
1904 (uri (rubygems-uri "minitest-rg" version))
1905 (sha256
1906 (base32
1907 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
1908 (build-system ruby-build-system)
1909 (arguments
1910 ;; Some tests fail even outside Guix, so disable tests.
1911 ;; https://github.com/blowmage/minitest-rg/issues/12
1912 ;; https://github.com/blowmage/minitest-rg/pull/13
1913 `(#:tests? #f))
1914 (propagated-inputs
1915 `(("ruby-minitest" ,ruby-minitest)))
1916 (synopsis "Coloured output for Minitest")
1917 (description
1918 "@code{minitest-rg} changes the colour of the output from Minitest.")
1919 (home-page "http://blowmage.com/minitest-rg")
1920 (license license:expat)))
1921
2a96dbe6
BW
1922(define-public ruby-minitest-hooks
1923 (package
1924 (name "ruby-minitest-hooks")
d21c6686 1925 (version "1.4.1")
2a96dbe6
BW
1926 (source
1927 (origin
1928 (method url-fetch)
1929 (uri (rubygems-uri "minitest-hooks" version))
1930 (sha256
1931 (base32
d21c6686 1932 "05bngfyxwq1cflk568nhddgfrmws5ff6kiqax4skklsjnh71ykbi"))))
2a96dbe6
BW
1933 (build-system ruby-build-system)
1934 (arguments
1935 '(#:test-target "spec"))
1936 (native-inputs
1937 `(("ruby-sequel" ,ruby-sequel)
1938 ("ruby-sqlite3" ,ruby-sqlite3)))
1939 (synopsis "Hooks for the minitest framework")
1940 (description
1941 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
1942@code{around_all} hooks for Minitest. This allows, for instance, running each
1943suite of specs inside a database transaction, running each spec inside its own
1944savepoint inside that transaction. This can significantly speed up testing
1945for specs that share expensive database setup code.")
7bf837fd 1946 (home-page "https://github.com/jeremyevans/minitest-hooks")
2a96dbe6
BW
1947 (license license:expat)))
1948
afbbdf77
DT
1949(define-public ruby-daemons
1950 (package
1951 (name "ruby-daemons")
f03153db 1952 (version "1.2.5")
afbbdf77
DT
1953 (source (origin
1954 (method url-fetch)
e83c6d00 1955 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
1956 (sha256
1957 (base32
f03153db 1958 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
afbbdf77
DT
1959 (build-system ruby-build-system)
1960 (arguments
1961 `(#:tests? #f)) ; no test suite
1962 (synopsis "Daemonize Ruby programs")
1963 (description "Daemons provides a way to wrap existing Ruby scripts to be
1964run as a daemon and to be controlled by simple start/stop/restart commands.")
1965 (home-page "https://github.com/thuehlinger/daemons")
1966 (license license:expat)))
b03eb6ac
CB
1967
1968(define-public ruby-data_uri
1969 (package
1970 (name "ruby-data_uri")
1971 (version "0.1.0")
1972 (source
1973 (origin
1974 (method url-fetch)
1975 (uri (rubygems-uri "data_uri" version))
1976 (sha256
1977 (base32
1978 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
1979 (build-system ruby-build-system)
1980 (synopsis "URI class for parsing data URIs")
1981 (description
1982 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
1983embedded inside a URI. The URI::Data class provides support for parsing these
1984URIs using the normal URI.parse method.")
1985 (home-page "https://github.com/dball/data_uri")
1986 (license license:expat)))
66e20863
DT
1987
1988(define-public ruby-git
1989 (package
1990 (name "ruby-git")
ceaff59e 1991 (version "1.3.0")
66e20863
DT
1992 (source (origin
1993 (method url-fetch)
e83c6d00 1994 (uri (rubygems-uri "git" version))
66e20863
DT
1995 (sha256
1996 (base32
ceaff59e 1997 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
66e20863
DT
1998 (build-system ruby-build-system)
1999 (arguments
e83c6d00
DT
2000 `(#:tests? #f ; no tests
2001 #:phases (modify-phases %standard-phases
2002 (add-after 'install 'patch-git-binary
2003 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
2004 ;; Make the default git binary an absolute path to the
2005 ;; store.
e83c6d00
DT
2006 (let ((git (string-append (assoc-ref inputs "git")
2007 "/bin/git"))
3cb3fa67
CB
2008 (config (string-append
2009 (assoc-ref outputs "out")
2010 "/lib/ruby/vendor_ruby/gems/git-"
2011 ,version "/lib/git/config.rb")))
e83c6d00 2012 (substitute* (list config)
66e20863
DT
2013 (("'git'")
2014 (string-append "'" git "'")))
e83c6d00 2015 #t))))))
66e20863
DT
2016 (inputs
2017 `(("git" ,git)))
2018 (synopsis "Ruby wrappers for Git")
2019 (description "Ruby/Git is a Ruby library that can be used to create, read
2020and manipulate Git repositories by wrapping system calls to the git binary.")
2021 (home-page "https://github.com/schacon/ruby-git")
2022 (license license:expat)))
71d3e2c2
DT
2023
2024(define-public ruby-slop
2025 (package
2026 (name "ruby-slop")
d14e5eaa 2027 (version "4.5.0")
71d3e2c2
DT
2028 (source (origin
2029 (method url-fetch)
e83c6d00 2030 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
2031 (sha256
2032 (base32
d14e5eaa 2033 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
71d3e2c2
DT
2034 (build-system ruby-build-system)
2035 (native-inputs
2036 `(("ruby-minitest" ,ruby-minitest)))
2037 (synopsis "Ruby command line option parser")
2038 (description "Slop provides a Ruby domain specific language for gathering
2039options and parsing command line flags.")
2040 (home-page "https://github.com/leejarvis/slop")
2041 (license license:expat)))
e778a549 2042
5337f8b9
DT
2043(define-public ruby-slop-3
2044 (package (inherit ruby-slop)
2045 (version "3.6.0")
2046 (source (origin
2047 (method url-fetch)
2048 (uri (rubygems-uri "slop" version))
2049 (sha256
2050 (base32
2051 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
2052
e778a549
DT
2053(define-public ruby-multipart-post
2054 (package
2055 (name "ruby-multipart-post")
2056 (version "2.0.0")
2057 (source (origin
2058 (method url-fetch)
e83c6d00 2059 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
2060 (sha256
2061 (base32
e83c6d00 2062 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
2063 (build-system ruby-build-system)
2064 (native-inputs
2065 `(("bundler" ,bundler)))
2066 (synopsis "Multipart POST library for Ruby")
2067 (description "Multipart-Post Adds multipart POST capability to Ruby's
2068net/http library.")
2069 (home-page "https://github.com/nicksieger/multipart-post")
2070 (license license:expat)))
f8da3af0 2071
9a97e7ce
CB
2072(define-public ruby-multi-json
2073 (package
2074 (name "ruby-multi-json")
2075 (version "1.12.2")
2076 (source
2077 (origin
2078 (method url-fetch)
2079 (uri (rubygems-uri "multi_json" version))
2080 (sha256
2081 (base32
2082 "1raim9ddjh672m32psaa9niw67ywzjbxbdb8iijx3wv9k5b0pk2x"))))
2083 (build-system ruby-build-system)
2084 (arguments
2085 '(#:tests? #f)) ;; No testsuite included in the gem.
2086 (synopsis "Common interface to multiple JSON libraries for Ruby")
2087 (description
2088 "This package provides a common interface to multiple JSON libraries,
2089including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
2090NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
2091 (home-page "http://github.com/intridea/multi_json")
2092 (license license:expat)))
2093
f8da3af0
DT
2094(define-public ruby-arel
2095 (package
2096 (name "ruby-arel")
8e5ff250 2097 (version "8.0.0")
f8da3af0
DT
2098 (source (origin
2099 (method url-fetch)
2100 (uri (rubygems-uri "arel" version))
2101 (sha256
2102 (base32
8e5ff250 2103 "0nw0qbc6ph625p6n3maqq9f527vz3nbl0hk72fbyka8jzsmplxzl"))))
f8da3af0
DT
2104 (build-system ruby-build-system)
2105 (arguments '(#:tests? #f)) ; no tests
2106 (home-page "https://github.com/rails/arel")
2107 (synopsis "SQL AST manager for Ruby")
6f23e2fb
TGR
2108 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
2109Ruby. It simplifies the generation of complex SQL queries and adapts to
2110various relational database implementations.")
f8da3af0 2111 (license license:expat)))
616eaead
DT
2112
2113(define-public ruby-minitar
bfaf8efd
BW
2114 ;; We package from the GitHub source to fix the security issue reported at
2115 ;; https://github.com/halostatue/minitar/issues/16.
2116 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
2117 (package
2118 (name "ruby-minitar")
2119 (version (string-append "0.5.4-1." (string-take commit 8)))
2120 (source
2121 (origin
2122 (method git-fetch)
2123 (uri (git-reference
2124 (url "https://github.com/halostatue/minitar.git")
2125 (commit commit)))
2126 (file-name (string-append name "-" version "-checkout"))
2127 (sha256
2128 (base32
2129 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
2130 (build-system ruby-build-system)
2131 (arguments
2132 '(#:tests? #f)) ; missing a gemspec
2133 (synopsis "Ruby library and utility for handling tar archives")
2134 (description
2135 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
616eaead 2136that provides the ability to deal with POSIX tar archive files.")
bfaf8efd
BW
2137 (home-page "http://www.github.com/atoulme/minitar")
2138 (license (list license:gpl2+ license:ruby)))))
bea1c0e2
DT
2139
2140(define-public ruby-mini-portile
2141 (package
2142 (name "ruby-mini-portile")
2143 (version "0.6.2")
2144 (source
2145 (origin
2146 (method url-fetch)
2147 (uri (rubygems-uri "mini_portile" version))
2148 (sha256
2149 (base32
2150 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
2151 (build-system ruby-build-system)
2152 (arguments
2153 '(#:tests? #f)) ; tests require network access
2154 (synopsis "Ports system for Ruby developers")
2155 (description "Mini-portile is a port/recipe system for Ruby developers.
2156It provides a standard way to compile against specific versions of libraries
2157to reproduce user environments.")
7bf837fd 2158 (home-page "https://github.com/flavorjones/mini_portile")
bea1c0e2 2159 (license license:expat)))
e920bfca 2160
d000fc92
BW
2161(define-public ruby-mini-portile-2
2162 (package (inherit ruby-mini-portile)
26f4a377 2163 (version "2.2.0")
d000fc92
BW
2164 (source (origin
2165 (method url-fetch)
2166 (uri (rubygems-uri "mini_portile2" version))
2167 (sha256
2168 (base32
26f4a377 2169 "0g5bpgy08q0nc0anisg3yvwc1gc3inl854fcrg48wvg7glqd6dpm"))))))
d000fc92 2170
e920bfca
DT
2171(define-public ruby-nokogiri
2172 (package
2173 (name "ruby-nokogiri")
efb94fda 2174 (version "1.8.0")
e920bfca
DT
2175 (source (origin
2176 (method url-fetch)
2177 (uri (rubygems-uri "nokogiri" version))
2178 (sha256
2179 (base32
efb94fda 2180 "1nffsyx1xjg6v5n9rrbi8y1arrcx2i5f21cp6clgh9iwiqkr7rnn"))))
e920bfca
DT
2181 (build-system ruby-build-system)
2182 (arguments
2183 ;; Tests fail because Nokogiri can only test with an installed extension,
2184 ;; and also because many test framework dependencies are missing.
7b01f250 2185 `(#:tests? #f
e920bfca
DT
2186 #:gem-flags (list "--" "--use-system-libraries"
2187 (string-append "--with-xml2-include="
2188 (assoc-ref %build-inputs "libxml2")
5e7f1b0b
BW
2189 "/include/libxml2" ))
2190 #:phases
2191 (modify-phases %standard-phases
7b01f250
BW
2192 (add-before 'build 'patch-extconf
2193 ;; 'pkg-config' is not included in the GEM_PATH during
2194 ;; installation, so we add it directly to the load path.
2195 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2196 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
7b01f250
BW
2197 (substitute* "ext/nokogiri/extconf.rb"
2198 (("gem 'pkg-config'.*")
2199 (string-append "$:.unshift '"
3cb3fa67 2200 pkg-config "/lib/ruby/vendor_ruby"
7b01f250
BW
2201 "/gems/pkg-config-"
2202 ,(package-version ruby-pkg-config)
2203 "/lib'\n"))))
5e7f1b0b 2204 #t)))))
e920bfca 2205 (native-inputs
7b01f250 2206 `(("ruby-hoe" ,ruby-hoe)))
e920bfca
DT
2207 (inputs
2208 `(("zlib" ,zlib)
2209 ("libxml2" ,libxml2)
2210 ("libxslt" ,libxslt)))
2211 (propagated-inputs
7b01f250
BW
2212 `(("ruby-mini-portile" ,ruby-mini-portile-2)
2213 ("ruby-pkg-config" ,ruby-pkg-config)))
e920bfca
DT
2214 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
2215 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
2216both CSS3 selector and XPath 1.0 support.")
2217 (home-page "http://www.nokogiri.org/")
2218 (license license:expat)))
30b0b725
DT
2219
2220(define-public ruby-method-source
2221 (package
2222 (name "ruby-method-source")
c8355037 2223 (version "0.9.0")
30b0b725
DT
2224 (source
2225 (origin
2226 (method url-fetch)
2227 (uri (rubygems-uri "method_source" version))
2228 (sha256
2229 (base32
c8355037 2230 "0xqj21j3vfq4ldia6i2akhn2qd84m0iqcnsl49kfpq3xk6x0dzgn"))))
30b0b725 2231 (build-system ruby-build-system)
c8355037
BW
2232 (arguments
2233 `(#:test-target "spec"))
30b0b725 2234 (native-inputs
c8355037 2235 `(("ruby-rspec" ,ruby-rspec)
30b0b725
DT
2236 ("git" ,git)))
2237 (synopsis "Retrieve the source code for Ruby methods")
2238 (description "Method_source retrieves the source code for Ruby methods.
2239Additionally, it can extract source code from Proc and Lambda objects or just
2240extract comments.")
2241 (home-page "https://github.com/banister/method_source")
2242 (license license:expat)))
2e3fdea4
DT
2243
2244(define-public ruby-coderay
2245 (package
2246 (name "ruby-coderay")
5cf0997a 2247 (version "1.1.2")
2e3fdea4
DT
2248 (source
2249 (origin
2250 (method url-fetch)
2251 (uri (rubygems-uri "coderay" version))
2252 (sha256
2253 (base32
5cf0997a 2254 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
2e3fdea4
DT
2255 (build-system ruby-build-system)
2256 (arguments
2257 '(#:tests? #f)) ; missing test files
2258 (synopsis "Ruby syntax highlighting library")
2259 (description "Coderay is a Ruby library that provides syntax highlighting
2260for select languages.")
2261 (home-page "http://coderay.rubychan.de")
2262 (license license:expat)))
96e76083 2263
268643b9
CB
2264(define-public ruby-progress_bar
2265 (package
2266 (name "ruby-progress_bar")
2267 (version "1.1.0")
2268 (source
2269 (origin
2270 (method url-fetch)
2271 (uri (rubygems-uri "progress_bar" version))
2272 (sha256
2273 (base32
2274 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
2275 (build-system ruby-build-system)
2276 (arguments
2277 '(#:test-target "spec"))
2278 (propagated-inputs
2279 `(("ruby-highline" ,ruby-highline)
2280 ("ruby-options" ,ruby-options)))
2281 (native-inputs
2282 `(("bundler" ,bundler)
2283 ("ruby-rspec" ,ruby-rspec)
2284 ("ruby-timecop" ,ruby-timecop)))
2285 (synopsis
2286 "Ruby library for displaying progress bars")
2287 (description
2288 "ProgressBar is a simple library for displaying progress bars. The
2289maximum value is configurable, and additional information can be displayed
2290like the percentage completion, estimated time remaining, elapsed time and
2291rate.")
2292 (home-page "https://github.com/paul/progress_bar")
2293 (license license:wtfpl2)))
2294
96e76083
DT
2295(define-public ruby-pry
2296 (package
2297 (name "ruby-pry")
1bf02b20 2298 (version "0.11.3")
96e76083
DT
2299 (source
2300 (origin
2301 (method url-fetch)
2302 (uri (rubygems-uri "pry" version))
2303 (sha256
2304 (base32
1bf02b20 2305 "1mh312k3y94sj0pi160wpia0ps8f4kmzvm505i6bvwynfdh7v30g"))))
96e76083
DT
2306 (build-system ruby-build-system)
2307 (arguments
2308 '(#:tests? #f)) ; no tests
2309 (propagated-inputs
2310 `(("ruby-coderay" ,ruby-coderay)
1960d4fd 2311 ("ruby-method-source" ,ruby-method-source)))
96e76083
DT
2312 (synopsis "Ruby REPL")
2313 (description "Pry is an IRB alternative and runtime developer console for
2314Ruby. It features syntax highlighting, a plugin architecture, runtime
2315invocation, and source and documentation browsing.")
2f3800e5 2316 (home-page "https://pryrepl.org")
96e76083 2317 (license license:expat)))
1415792a 2318
051deeb7
RW
2319(define-public ruby-guard
2320 (package
2321 (name "ruby-guard")
2322 (version "2.13.0")
2323 (source (origin
2324 (method url-fetch)
2325 ;; The gem does not include a Rakefile, nor does it contain a
2326 ;; gemspec file, nor does it come with the tests. This is why
2327 ;; we fetch the tarball from Github.
2328 (uri (string-append "https://github.com/guard/guard/archive/v"
2329 version ".tar.gz"))
2330 (file-name (string-append name "-" version ".tar.gz"))
2331 (sha256
2332 (base32
2333 "1hwj0yi17k6f5axrm0k2bb7fq71dlp0zfywmd7pij9iimbppcca0"))))
2334 (build-system ruby-build-system)
2335 (arguments
2336 `(#:tests? #f ; tests require cucumber
2337 #:phases
2338 (modify-phases %standard-phases
2339 (add-after 'unpack 'remove-git-ls-files
2340 (lambda* (#:key outputs #:allow-other-keys)
2341 (substitute* "guard.gemspec"
2342 (("git ls-files -z") "find . -type f -print0"))
2343 #t))
2344 (replace 'build
2345 (lambda _
2346 (zero? (system* "gem" "build" "guard.gemspec")))))))
2347 (propagated-inputs
2348 `(("ruby-formatador" ,ruby-formatador)
2349 ("ruby-listen" ,ruby-listen)
2350 ("ruby-lumberjack" ,ruby-lumberjack)
2351 ("ruby-nenv" ,ruby-nenv)
2352 ("ruby-notiffany" ,ruby-notiffany)
2353 ("ruby-pry" ,ruby-pry)
2354 ("ruby-shellany" ,ruby-shellany)
2355 ("ruby-thor" ,ruby-thor)))
2356 (native-inputs
2357 `(("bundler" ,bundler)
2358 ("ruby-rspec" ,ruby-rspec)))
2359 (synopsis "Tool to handle events on file system modifications")
2360 (description
2361 "Guard is a command line tool to easily handle events on file system
2362modifications. Guard automates various tasks by running custom rules whenever
2363file or directories are modified.")
2364 (home-page "http://guardgem.org/")
2365 (license license:expat)))
2366
1415792a
DT
2367(define-public ruby-thread-safe
2368 (package
2369 (name "ruby-thread-safe")
313dd5dd 2370 (version "0.3.6")
1415792a
DT
2371 (source
2372 (origin
2373 (method url-fetch)
2374 (uri (rubygems-uri "thread_safe" version))
2375 (sha256
2376 (base32
313dd5dd 2377 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
1415792a
DT
2378 (build-system ruby-build-system)
2379 (arguments
2380 '(#:tests? #f)) ; needs simplecov, among others
2381 (synopsis "Thread-safe utilities for Ruby")
2382 (description "The thread_safe library provides thread-safe collections and
2383utilities for Ruby.")
2384 (home-page "https://github.com/ruby-concurrency/thread_safe")
2385 (license license:asl2.0)))
08a1b701
DT
2386
2387(define-public ruby-tzinfo
2388 (package
2389 (name "ruby-tzinfo")
4237af85 2390 (version "1.2.4")
08a1b701
DT
2391 (source
2392 (origin
2393 (method url-fetch)
2394 (uri (rubygems-uri "tzinfo" version))
2395 (sha256
2396 (base32
4237af85 2397 "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp"))))
08a1b701
DT
2398 (build-system ruby-build-system)
2399 (propagated-inputs
2400 `(("ruby-thread-safe" ,ruby-thread-safe)))
2401 (synopsis "Time zone library for Ruby")
2402 (description "TZInfo is a Ruby library that provides daylight savings
2403aware transformations between times in different time zones.")
2f3800e5 2404 (home-page "https://tzinfo.github.io")
1e12924a
BW
2405 (license license:expat)))
2406
2407(define-public ruby-tzinfo-data
2408 (package
2409 (name "ruby-tzinfo-data")
92513191 2410 (version "1.2017.3")
1e12924a
BW
2411 (source
2412 (origin
2413 (method url-fetch)
2414 ;; Download from GitHub because the rubygems version does not contain
2415 ;; Rakefile or tests.
2416 (uri (string-append
2417 "https://github.com/tzinfo/tzinfo-data/archive/v"
2418 version
2419 ".tar.gz"))
2420 (file-name (string-append name "-" version ".tar.gz"))
2421 (sha256
2422 (base32
92513191 2423 "01wff7syqzikbxalbg3isgxasmvzicr85bzadzkb6bf20bip4v54"))
1e12924a
BW
2424 ;; Remove the known test failure.
2425 ;; https://github.com/tzinfo/tzinfo-data/issues/10
2426 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
2427 (patches (search-patches
2428 "ruby-tzinfo-data-ignore-broken-test.patch"))))
2429 (build-system ruby-build-system)
2430 (propagated-inputs
2431 `(("ruby-tzinfo" ,ruby-tzinfo)))
2432 (synopsis "Data from the IANA Time Zone database")
2433 (description
2434 "This library provides @code{TZInfo::Data}, which contains data from the
2435IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
2f3800e5 2436 (home-page "https://tzinfo.github.io")
08a1b701 2437 (license license:expat)))
c99e2247 2438
48e6851f
RW
2439(define-public ruby-rb-inotify
2440 (package
2441 (name "ruby-rb-inotify")
32bbfea8 2442 (version "0.9.10")
48e6851f
RW
2443 (source
2444 (origin
2445 (method url-fetch)
2446 (uri (rubygems-uri "rb-inotify" version))
2447 (sha256
2448 (base32
32bbfea8 2449 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
48e6851f
RW
2450 (build-system ruby-build-system)
2451 (arguments
2452 '(#:tests? #f ; there are no tests
2453 #:phases
2454 (modify-phases %standard-phases
2455 ;; Building the gemspec with rake is not working here since it is
2456 ;; generated with Jeweler. It is also unnecessary because the
2457 ;; existing gemspec does not use any development tools to generate a
2458 ;; list of files.
2459 (replace 'build
2460 (lambda _
2461 (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
2462 (propagated-inputs
2463 `(("ruby-ffi" ,ruby-ffi)))
2464 (native-inputs
2465 `(("ruby-yard" ,ruby-yard)))
2466 (synopsis "Ruby wrapper for Linux's inotify")
2467 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
2468kernel subsystem for monitoring changes to files and directories.")
2469 (home-page "https://github.com/nex3/rb-inotify")
2470 (license license:expat)))
2471
a75bdfce
RW
2472(define-public ruby-pry-editline
2473 (package
2474 (name "ruby-pry-editline")
2475 (version "1.1.2")
2476 (source (origin
2477 (method url-fetch)
2478 (uri (rubygems-uri "pry-editline" version))
2479 (sha256
2480 (base32
2481 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
2482 (build-system ruby-build-system)
2483 (arguments `(#:tests? #f)) ; no tests included
2484 (native-inputs
2485 `(("bundler" ,bundler)))
2486 (synopsis "Open the current REPL line in an editor")
2487 (description
2488 "This gem provides a plugin for the Ruby REPL to enable opening the
2489current line in an external editor.")
2490 (home-page "https://github.com/tpope/pry-editline")
2491 (license license:expat)))
2492
d3b20a02
RW
2493(define-public ruby-sdoc
2494 (package
2495 (name "ruby-sdoc")
fdf3a68d 2496 (version "0.4.2")
d3b20a02
RW
2497 (source (origin
2498 (method url-fetch)
2499 (uri (rubygems-uri "sdoc" version))
2500 (sha256
2501 (base32
fdf3a68d 2502 "0qhvy10vnmrqcgh8494m13kd5ag9c3sczzhfasv8j0294ylk679n"))))
d3b20a02
RW
2503 (build-system ruby-build-system)
2504 (arguments
2505 `(#:phases
2506 (modify-phases %standard-phases
fc29d5e6 2507 (add-before 'check 'set-rubylib-and-patch-gemfile
d3b20a02 2508 (lambda _
fdf3a68d 2509 (setenv "RUBYLIB" "lib")
fc29d5e6
BW
2510 (substitute* "sdoc.gemspec"
2511 (("s.add_runtime_dependency.*") "\n")
2512 (("s.add_dependency.*") "\n"))
2513 (substitute* "Gemfile"
2514 (("gem \"rake\".*")
2515 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
d3b20a02
RW
2516 #t)))))
2517 (propagated-inputs
2518 `(("ruby-json" ,ruby-json)))
2519 (native-inputs
2520 `(("bundler" ,bundler)
fdf3a68d
BW
2521 ("ruby-minitest" ,ruby-minitest)
2522 ("ruby-hoe" ,ruby-hoe)))
d3b20a02
RW
2523 (synopsis "Generate searchable RDoc documentation")
2524 (description
2525 "SDoc is an RDoc documentation generator to build searchable HTML
2526documentation for Ruby code.")
7bf837fd 2527 (home-page "https://github.com/voloko/sdoc")
d3b20a02
RW
2528 (license license:expat)))
2529
70b002aa
RW
2530(define-public ruby-tins
2531 (package
2532 (name "ruby-tins")
fbefd6ff 2533 (version "1.15.0")
70b002aa
RW
2534 (source (origin
2535 (method url-fetch)
2536 (uri (rubygems-uri "tins" version))
2537 (sha256
2538 (base32
fbefd6ff 2539 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
70b002aa
RW
2540 (build-system ruby-build-system)
2541 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
2542 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
2543 ;; the gemspec.
2544 (arguments
2545 `(#:tests? #f ; there are no tests
2546 #:phases
2547 (modify-phases %standard-phases
2548 (replace 'build
2549 (lambda _
2550 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
2551 ;; causes an error.
2552 (substitute* "tins.gemspec"
2553 (("\"lib/spruz\", ") ""))
2554 (zero? (system* "gem" "build" "tins.gemspec")))))))
2555 (synopsis "Assorted tools for Ruby")
2556 (description "Tins is a Ruby library providing assorted tools.")
2557 (home-page "https://github.com/flori/tins")
2558 (license license:expat)))
2559
bc8277e4
RW
2560(define-public ruby-gem-hadar
2561 (package
2562 (name "ruby-gem-hadar")
3fd577e3 2563 (version "1.9.1")
bc8277e4
RW
2564 (source (origin
2565 (method url-fetch)
2566 (uri (rubygems-uri "gem_hadar" version))
2567 (sha256
2568 (base32
3fd577e3 2569 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
bc8277e4
RW
2570 (build-system ruby-build-system)
2571 ;; This gem needs itself at development time. We disable rebuilding of the
2572 ;; gemspec to avoid this loop.
2573 (arguments
2574 `(#:tests? #f ; there are no tests
2575 #:phases
2576 (modify-phases %standard-phases
2577 (replace 'build
2578 (lambda _
2579 (zero? (system* "gem" "build" "gem_hadar.gemspec")))))))
2580 (propagated-inputs
2581 `(("git" ,git)
2582 ("ruby-tins" ,ruby-tins)
3fd577e3 2583 ("ruby-yard" ,ruby-yard)))
bc8277e4
RW
2584 (synopsis "Library for the development of Ruby gems")
2585 (description
2586 "This library contains some useful functionality to support the
2587development of Ruby gems.")
2588 (home-page "https://github.com/flori/gem_hadar")
2589 (license license:expat)))
2590
d8cafe29
RW
2591(define-public ruby-minitest-tu-shim
2592 (package
2593 (name "ruby-minitest-tu-shim")
2594 (version "1.3.3")
2595 (source (origin
2596 (method url-fetch)
2597 (uri (rubygems-uri "minitest_tu_shim" version))
2598 (sha256
2599 (base32
2600 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
2601 (build-system ruby-build-system)
2602 (arguments
2603 `(#:phases
2604 (modify-phases %standard-phases
2605 (add-after 'unpack 'fix-test-include-path
2606 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2607 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
761e7042
BW
2608 (substitute* "Rakefile"
2609 (("Hoe\\.add_include_dirs .*")
2610 (string-append "Hoe.add_include_dirs \""
3cb3fa67 2611 minitest "/lib/ruby/vendor_ruby"
761e7042
BW
2612 "/gems/minitest-"
2613 ,(package-version ruby-minitest-4)
2614 "/lib" "\""))))
2615 #t))
d8cafe29
RW
2616 (add-before 'check 'fix-test-assumptions
2617 (lambda _
2618 ;; The test output includes the file name, so a couple of tests
2619 ;; fail. Changing the regular expressions slightly fixes this
2620 ;; problem.
2621 (substitute* "test/test_mini_test.rb"
2622 (("output.sub!\\(.*, 'FILE:LINE'\\)")
2623 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
2624 (("gsub\\(/.*, 'FILE:LINE'\\)")
2625 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
2626 #t)))))
2627 (propagated-inputs
2628 `(("ruby-minitest-4" ,ruby-minitest-4)))
2629 (native-inputs
2630 `(("ruby-hoe" ,ruby-hoe)))
2631 (synopsis "Adapter library between minitest and test/unit")
2632 (description
2633 "This library bridges the gap between the small and fast minitest and
2634Ruby's large and slower test/unit.")
2635 (home-page "https://rubygems.org/gems/minitest_tu_shim")
2636 (license license:expat)))
2637
fd83a212
RW
2638(define-public ruby-term-ansicolor
2639 (package
2640 (name "ruby-term-ansicolor")
f3a6311a 2641 (version "1.6.0")
fd83a212
RW
2642 (source (origin
2643 (method url-fetch)
2644 (uri (rubygems-uri "term-ansicolor" version))
2645 (sha256
2646 (base32
f3a6311a 2647 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
fd83a212
RW
2648 (build-system ruby-build-system)
2649 ;; Rebuilding the gemspec seems to require git, even though this is not a
2650 ;; git repository, so we just build the gem from the existing gemspec.
2651 (arguments
2652 `(#:phases
2653 (modify-phases %standard-phases
2654 (replace 'build
2655 (lambda _
2656 (zero? (system* "gem" "build" "term-ansicolor.gemspec")))))))
2657 (propagated-inputs
2658 `(("ruby-tins" ,ruby-tins)))
2659 (native-inputs
2660 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2661 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
2662 (synopsis "Ruby library to control the attributes of terminal output")
2663 (description
2664 "This Ruby library uses ANSI escape sequences to control the attributes
2665of terminal output.")
2f3800e5 2666 (home-page "https://flori.github.io/term-ansicolor/")
fd83a212
RW
2667 ;; There is no mention of the "or later" clause.
2668 (license license:gpl2)))
2669
6e376ca4
RW
2670(define-public ruby-pstree
2671 (package
2672 (name "ruby-pstree")
2673 (version "0.1.0")
2674 (source (origin
2675 (method url-fetch)
2676 (uri (rubygems-uri "pstree" version))
2677 (sha256
2678 (base32
2679 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
2680 (build-system ruby-build-system)
2681 (native-inputs
2682 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2683 ("bundler" ,bundler)))
2684 (synopsis "Create a process tree data structure")
2685 (description
2686 "This library uses the output of the @code{ps} command to create a
2687process tree data structure for the current host.")
2f3800e5 2688 (home-page "https://github.com/flori/pstree")
6e376ca4
RW
2689 ;; There is no mention of the "or later" clause.
2690 (license license:gpl2)))
2691
53239b5f
RW
2692(define-public ruby-utils
2693 (package
2694 (name "ruby-utils")
cd698b6e 2695 (version "0.9.0")
53239b5f
RW
2696 (source (origin
2697 (method url-fetch)
2698 (uri (rubygems-uri "utils" version))
2699 (sha256
2700 (base32
cd698b6e 2701 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
53239b5f
RW
2702 (build-system ruby-build-system)
2703 (propagated-inputs
2704 `(("ruby-tins" ,ruby-tins)
2705 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
2706 ("ruby-pstree" ,ruby-pstree)
2707 ("ruby-pry-editline" ,ruby-pry-editline)))
2708 (native-inputs
2709 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2710 ("bundler" ,bundler)))
2711 (synopsis "Command line tools for working with Ruby")
2712 (description
2713 "This package provides assorted command line tools that may be useful
2714when working with Ruby code.")
2715 (home-page "https://github.com/flori/utils")
2716 ;; There is no mention of the "or later" clause.
2717 (license license:gpl2)))
2718
c99e2247
DT
2719(define-public ruby-json
2720 (package
2721 (name "ruby-json")
a281acce 2722 (version "2.1.0")
c99e2247
DT
2723 (source
2724 (origin
2725 (method url-fetch)
2726 (uri (rubygems-uri "json" version))
2727 (sha256
2728 (base32
a281acce 2729 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
c99e2247
DT
2730 (build-system ruby-build-system)
2731 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
2732 (synopsis "JSON library for Ruby")
2733 (description "This Ruby library provides a JSON implementation written as
2734a native C extension.")
2735 (home-page "http://json-jruby.rubyforge.org/")
2736 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 2737
763624f5
RW
2738(define-public ruby-json-pure
2739 (package
2740 (name "ruby-json-pure")
ac01cb07 2741 (version "2.1.0")
763624f5
RW
2742 (source (origin
2743 (method url-fetch)
2744 (uri (rubygems-uri "json_pure" version))
2745 (sha256
2746 (base32
ac01cb07 2747 "12yf9fmhr4c2jm3xl20vf1qyz5i63vc8a6ngz9j0f86nqwhmi2as"))))
763624f5
RW
2748 (build-system ruby-build-system)
2749 (arguments
ac01cb07 2750 `(#:phases
763624f5 2751 (modify-phases %standard-phases
ac01cb07 2752 (add-after 'unpack 'fix-rakefile
763624f5 2753 (lambda _
ac01cb07
BW
2754 (substitute* "Rakefile"
2755 ;; Since this is not a git repository, do not call 'git'.
2756 (("`git ls-files`") "`find . -type f |sort`")
2757 ;; Loosen dependency constraint.
2758 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
2759 #t))
2760 (add-after 'replace-git-ls-files 'regenerate-gemspec
2761 (lambda _
2762 ;; Regenerate gemspec so loosened dependency constraints are
2763 ;; propagated.
2764 (zero? (system* "rake" "gemspec")))))))
763624f5 2765 (native-inputs
ac01cb07 2766 `(("bundler" ,bundler)
0c9f73cd
TGR
2767 ("ragel" ,ragel)
2768 ("ruby-simplecov" ,ruby-simplecov)
2769 ("ruby-test-unit" ,ruby-test-unit)))
763624f5
RW
2770 (synopsis "JSON implementation in pure Ruby")
2771 (description
2772 "This package provides a JSON implementation written in pure Ruby.")
2f3800e5 2773 (home-page "https://flori.github.com/json")
763624f5
RW
2774 (license license:ruby)))
2775
16b324cd
RW
2776;; Even though this package only provides bindings for a Mac OSX API it is
2777;; required by "ruby-listen" at runtime.
2778(define-public ruby-rb-fsevent
2779 (package
2780 (name "ruby-rb-fsevent")
56ccada3 2781 (version "0.10.2")
16b324cd
RW
2782 (source (origin
2783 (method url-fetch)
2784 (uri (rubygems-uri "rb-fsevent" version))
2785 (sha256
2786 (base32
56ccada3 2787 "1fbpmjypwxkb8r7y1kmhmyp6gawa4byw0yb3jc3dn9ly4ld9lizf"))))
16b324cd
RW
2788 (build-system ruby-build-system)
2789 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
2790 ;; "listen", which needs "rb-fsevent" at runtime.
2791 (arguments `(#:tests? #f))
2792 (synopsis "FSEvents API with signals catching")
2793 (description
2794 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
2795 (home-page "https://rubygems.org/gems/rb-fsevent")
2796 (license license:expat)))
2797
b86be2ad
RW
2798(define-public ruby-listen
2799 (package
2800 (name "ruby-listen")
c3b36fa1 2801 (version "3.1.5")
b86be2ad
RW
2802 (source
2803 (origin
2804 (method url-fetch)
2805 (uri (rubygems-uri "listen" version))
2806 (sha256
2807 (base32
c3b36fa1 2808 "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx"))))
b86be2ad
RW
2809 (build-system ruby-build-system)
2810 (arguments '(#:tests? #f)) ; no tests
2811 (propagated-inputs
cf1a01f4
RW
2812 `(("ruby-rb-inotify" ,ruby-rb-inotify)
2813 ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
b86be2ad
RW
2814 (synopsis "Listen to file modifications")
2815 (description "The Listen gem listens to file modifications and notifies
2816you about the changes.")
2817 (home-page "https://github.com/guard/listen")
2818 (license license:expat)))
2819
5ff89a1b
DT
2820(define-public ruby-activesupport
2821 (package
2822 (name "ruby-activesupport")
d8661f52 2823 (version "5.1.4")
5ff89a1b
DT
2824 (source
2825 (origin
2826 (method url-fetch)
2827 (uri (rubygems-uri "activesupport" version))
2828 (sha256
2829 (base32
d8661f52 2830 "0sgf4rsfr7jcaqsx0wwzx4l4k9xsjlwv0mzl08pxiyp1qzyx8scr"))))
5ff89a1b
DT
2831 (build-system ruby-build-system)
2832 (arguments
2af45e50
BW
2833 `(#:phases
2834 (modify-phases %standard-phases
2835 (replace 'check
2836 (lambda _
2837 ;; There is no tests, instead attempt to load the library.
2838 (zero? (system* "ruby" "-Ilib" "-r" "active_support")))))))
5ff89a1b 2839 (propagated-inputs
2af45e50
BW
2840 `(("ruby-concurrent" ,ruby-concurrent)
2841 ("ruby-i18n" ,ruby-i18n)
5ff89a1b 2842 ("ruby-minitest" ,ruby-minitest)
606ee9a1
BW
2843 ("ruby-tzinfo" ,ruby-tzinfo)
2844 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
5ff89a1b
DT
2845 (synopsis "Ruby on Rails utility library")
2846 (description "ActiveSupport is a toolkit of support libraries and Ruby
2847core extensions extracted from the Rails framework. It includes support for
2848multibyte strings, internationalization, time zones, and testing.")
2849 (home-page "http://www.rubyonrails.org")
2850 (license license:expat)))
f847ad7b 2851
3996f0aa
RW
2852(define-public ruby-crass
2853 (package
2854 (name "ruby-crass")
fb812f7a 2855 (version "1.0.3")
3996f0aa
RW
2856 (source (origin
2857 (method url-fetch)
2858 (uri (rubygems-uri "crass" version))
2859 (sha256
2860 (base32
fb812f7a 2861 "1czijxlagzpzwchr2ldrgfi7kywg08idjpq37ndcmwh4fmz72c4l"))))
3996f0aa
RW
2862 (build-system ruby-build-system)
2863 (native-inputs
2864 `(("bundler" ,bundler)
2865 ("ruby-minitest" ,ruby-minitest)))
2866 (synopsis "Pure Ruby CSS parser")
2867 (description
2868 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
2869 (home-page "https://github.com/rgrove/crass/")
2870 (license license:expat)))
2871
c2c4e5b2 2872(define-public ruby-nokogumbo
f1ae7c62
BW
2873 (let ((commit "fb51ff299a1c34346837580b6d1d9a60fadf5dbd"))
2874 (package
2875 (name "ruby-nokogumbo")
2876 (version (string-append "1.4.7-1." (string-take commit 8)))
2877 (source (origin
2878 ;; We use the git reference, because there's no Rakefile in the
2879 ;; published gem and the tarball on Github is outdated.
2880 (method git-fetch)
2881 (uri (git-reference
2882 (url "https://github.com/rubys/nokogumbo.git")
2883 (commit "d56f954d20a")))
2884 (file-name (string-append name "-" version "-checkout"))
2885 (sha256
2886 (base32
2887 "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
2888 (build-system ruby-build-system)
2889 (arguments
2890 `(#:modules ((guix build ruby-build-system)
2891 (guix build utils)
2892 (ice-9 rdelim))
2893 #:phases
2894 (modify-phases %standard-phases
5c31e981 2895 (add-after 'unpack 'build-gemspec
f1ae7c62
BW
2896 (lambda _
2897 (substitute* "Rakefile"
2898 ;; Build Makefile even without a copy of gumbo-parser sources
2899 (("'gumbo-parser/src',") "")
2900 ;; We don't bundle gumbo-parser sources
2901 (("'gumbo-parser/src/\\*',") "")
2902 (("'gumbo-parser/visualc/include/\\*',") "")
2903 ;; The definition of SOURCES will be cut in gemspec, and
2904 ;; "FileList" will be undefined.
2905 (("SOURCES \\+ FileList\\[")
2906 "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
2907
2908 ;; Copy the Rakefile and cut out the gemspec.
2909 (copy-file "Rakefile" ".gemspec")
2910 (with-atomic-file-replacement ".gemspec"
2911 (lambda (in out)
2912 (let loop ((line (read-line in 'concat))
2913 (skipping? #t))
2914 (if (eof-object? line)
2915 #t
2916 (let ((skip-next? (if skipping?
2917 (not (string-prefix? "SPEC =" line))
2918 (string-prefix? "end" line))))
2919 (when (or (not skipping?)
2920 (and skipping? (not skip-next?)))
2921 (format #t "~a" line)
2922 (display line out))
2923 (loop (read-line in 'concat) skip-next?))))))
2924 #t)))))
2925 (inputs
2926 `(("gumbo-parser" ,gumbo-parser)))
2927 (propagated-inputs
2928 `(("ruby-nokogiri" ,ruby-nokogiri)))
2929 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
2930 (description
2931 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
c2c4e5b2 2932access the result as a Nokogiri parsed document.")
f1ae7c62
BW
2933 (home-page "https://github.com/rubys/nokogumbo/")
2934 (license license:asl2.0))))
c2c4e5b2 2935
d56ff88b
RW
2936(define-public ruby-sanitize
2937 (package
2938 (name "ruby-sanitize")
2939 (version "4.0.0")
2940 (source (origin
2941 (method url-fetch)
2942 ;; The gem does not include the Rakefile, so we download the
2943 ;; release tarball from Github.
2944 (uri (string-append "https://github.com/rgrove/"
2945 "sanitize/archive/v" version ".tar.gz"))
2946 (file-name (string-append name "-" version ".tar.gz"))
2947 (sha256
2948 (base32
2949 "055xnj38l60gxnnng76kpy2l2jbrp0byjdyq17jw79w7l4b40znr"))))
2950 (build-system ruby-build-system)
2951 (propagated-inputs
2952 `(("ruby-crass" ,ruby-crass)
2953 ("ruby-nokogiri" ,ruby-nokogiri)
2954 ("ruby-nokogumbo" ,ruby-nokogumbo)))
2955 (native-inputs
2956 `(("bundler" ,bundler)
2957 ("ruby-minitest" ,ruby-minitest)
2958 ("ruby-redcarpet" ,ruby-redcarpet)
2959 ("ruby-yard" ,ruby-yard)))
2960 (synopsis "Whitelist-based HTML and CSS sanitizer")
2961 (description
2962 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
2963acceptable elements, attributes, and CSS properties, Sanitize will remove all
2964unacceptable HTML and/or CSS from a string.")
2965 (home-page "https://github.com/rgrove/sanitize/")
2966 (license license:expat)))
2967
f847ad7b
DT
2968(define-public ruby-ox
2969 (package
2970 (name "ruby-ox")
263c0dbf 2971 (version "2.6.0")
f847ad7b
DT
2972 (source
2973 (origin
2974 (method url-fetch)
2975 (uri (rubygems-uri "ox" version))
2976 (sha256
2977 (base32
263c0dbf 2978 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
f847ad7b
DT
2979 (build-system ruby-build-system)
2980 (arguments
2981 '(#:tests? #f)) ; no tests
2982 (synopsis "Optimized XML library for Ruby")
2983 (description
2984 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
2985written as a native C extension. It was designed to be an alternative to
2986Nokogiri and other Ruby XML parsers for generic XML parsing and as an
2987alternative to Marshal for Object serialization. ")
2988 (home-page "http://www.ohler.com/ox")
2989 (license license:expat)))
4a9e0585 2990
0c4e7625
RW
2991(define-public ruby-redcloth
2992 (package
2993 (name "ruby-redcloth")
2a91494e 2994 (version "4.3.2")
0c4e7625
RW
2995 (source (origin
2996 (method url-fetch)
2997 (uri (rubygems-uri "RedCloth" version))
2998 (sha256
2999 (base32
2a91494e 3000 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
0c4e7625
RW
3001 (build-system ruby-build-system)
3002 (arguments
3003 `(#:tests? #f ; no tests
3004 #:phases
3005 (modify-phases %standard-phases
3006 ;; Redcloth has complicated rake tasks to build various versions for
3007 ;; multiple targets using RVM. We don't want this so we just use the
3008 ;; existing gemspec.
3009 (replace 'build
3010 (lambda _
0076f5a9 3011 (zero? (system* "gem" "build" "redcloth.gemspec")))))))
0c4e7625
RW
3012 (native-inputs
3013 `(("bundler" ,bundler)
3014 ("ruby-diff-lcs" ,ruby-diff-lcs)
3015 ("ruby-rspec-2" ,ruby-rspec-2)))
3016 (synopsis "Textile markup language parser for Ruby")
3017 (description
3018 "RedCloth is a Ruby parser for the Textile markup language.")
3019 (home-page "http://redcloth.org")
3020 (license license:expat)))
3021
4a9e0585
DT
3022(define-public ruby-pg
3023 (package
3024 (name "ruby-pg")
ce5f5230 3025 (version "0.21.0")
4a9e0585
DT
3026 (source
3027 (origin
3028 (method url-fetch)
3029 (uri (rubygems-uri "pg" version))
3030 (sha256
3031 (base32
ce5f5230 3032 "00vhasqwc4f98qb4wxqn2h07fjwzhp5lwyi41j2gndi2g02wrdqh"))))
4a9e0585
DT
3033 (build-system ruby-build-system)
3034 (arguments
3035 '(#:test-target "spec"))
3036 (native-inputs
3037 `(("ruby-rake-compiler" ,ruby-rake-compiler)
3038 ("ruby-hoe" ,ruby-hoe)
3039 ("ruby-rspec" ,ruby-rspec)))
3040 (inputs
abd78128 3041 `(("postgresql" ,postgresql-9.6)))
4a9e0585
DT
3042 (synopsis "Ruby interface to PostgreSQL")
3043 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
3044with PostgreSQL 8.4 and later.")
3045 (home-page "https://bitbucket.org/ged/ruby-pg")
3046 (license license:ruby)))
468e5657
DT
3047
3048(define-public ruby-byebug
3049 (package
3050 (name "ruby-byebug")
d5489a61 3051 (version "9.0.6")
468e5657
DT
3052 (source
3053 (origin
3054 (method url-fetch)
3055 (uri (rubygems-uri "byebug" version))
3056 (sha256
3057 (base32
d5489a61 3058 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
468e5657
DT
3059 (build-system ruby-build-system)
3060 (arguments
3061 '(#:tests? #f)) ; no tests
3062 (synopsis "Debugger for Ruby 2")
3063 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
3064TracePoint C API for execution control and the Debug Inspector C API for call
3065stack navigation. The core component provides support that front-ends can
3066build on. It provides breakpoint handling and bindings for stack frames among
3067other things and it comes with a command line interface.")
7bf837fd 3068 (home-page "https://github.com/deivid-rodriguez/byebug")
468e5657 3069 (license license:bsd-2)))
64b6ccc3 3070
5799bc2b
RW
3071(define-public ruby-netrc
3072 (package
3073 (name "ruby-netrc")
3074 (version "0.11.0")
3075 (source (origin
3076 (method url-fetch)
3077 (uri (rubygems-uri "netrc" version))
3078 (sha256
3079 (base32
3080 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
3081 (build-system ruby-build-system)
3082 (arguments
3083 `(#:phases
3084 (modify-phases %standard-phases
3085 (replace 'check
3086 ;; There is no Rakefile and minitest can only run one file at once,
3087 ;; so we have to iterate over all test files.
3088 (lambda _
3089 (and (map (lambda (file)
3090 (zero? (system* "ruby" "-Itest" file)))
3091 (find-files "./test" "test_.*\\.rb"))))))))
3092 (native-inputs
3093 `(("ruby-minitest" ,ruby-minitest)))
3094 (synopsis "Library to read and update netrc files")
3095 (description
3096 "This library can read and update netrc files, preserving formatting
3097including comments and whitespace.")
3098 (home-page "https://github.com/geemus/netrc")
3099 (license license:expat)))
3100
3a6989ce
RW
3101(define-public ruby-unf-ext
3102 (package
3103 (name "ruby-unf-ext")
3104 (version "0.0.7.1")
3105 (source (origin
3106 (method url-fetch)
3107 (uri (rubygems-uri "unf_ext" version))
3108 (sha256
3109 (base32
3110 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
3111 (build-system ruby-build-system)
b809cc9a
RW
3112 (arguments
3113 `(#:phases
3114 (modify-phases %standard-phases
3115 (add-after 'build 'build-ext
3116 (lambda _ (zero? (system* "rake" "compile:unf_ext")))))))
3a6989ce
RW
3117 (native-inputs
3118 `(("bundler" ,bundler)
3119 ("ruby-rake-compiler" ,ruby-rake-compiler)
3120 ("ruby-test-unit" ,ruby-test-unit)))
3121 (synopsis "Unicode normalization form support library")
3122 (description
3123 "This package provides unicode normalization form support for Ruby.")
3124 (home-page "https://github.com/knu/ruby-unf_ext")
3125 (license license:expat)))
3126
2632a067 3127(define-public ruby-tdiff
5071f17b
BW
3128 ;; Use a newer than released snapshot so that rspec-2 is not required.
3129 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
3130 (package
3131 (name "ruby-tdiff")
3132 (version (string-append "0.3.3-1." (string-take commit 8)))
3133 (source (origin
3134 (method git-fetch)
3135 (uri (git-reference
3136 (url "https://github.com/postmodern/tdiff.git")
3137 (commit commit)))
3138 (file-name (string-append name "-" version "-checkout"))
3139 (sha256
3140 (base32
3141 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
3142 (build-system ruby-build-system)
3143 (native-inputs
3144 `(("ruby-rspec" ,ruby-rspec)
3145 ("ruby-yard" ,ruby-yard)
3146 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
3147 (synopsis "Calculate the differences between two tree-like structures")
3148 (description
3149 "This library provides functions to calculate the differences between two
2632a067 3150tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
5071f17b
BW
3151 (home-page "https://github.com/postmodern/tdiff")
3152 (license license:expat))))
2632a067 3153
f60f5002 3154(define-public ruby-nokogiri-diff
5b0c223a
BW
3155 ;; Use a newer than released snapshot so that rspec-2 is not required.
3156 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
3157 (package
3158 (name "ruby-nokogiri-diff")
3159 (version (string-append "0.2.0-1." (string-take commit 8)))
3160 (source (origin
3161 (method git-fetch)
3162 (uri (git-reference
3163 (url "https://github.com/postmodern/nokogiri-diff.git")
3164 (commit commit)))
3165 (file-name (string-append name "-" version "-checkout"))
3166 (sha256
3167 (base32
3168 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
3169 (build-system ruby-build-system)
3170 (propagated-inputs
3171 `(("ruby-tdiff" ,ruby-tdiff)
3172 ("ruby-nokogiri" ,ruby-nokogiri)))
3173 (native-inputs
3174 `(("ruby-rspec" ,ruby-rspec)
3175 ("ruby-yard" ,ruby-yard)
3176 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
3177 (synopsis "Calculate the differences between two XML/HTML documents")
3178 (description
3179 "@code{Nokogiri::Diff} adds the ability to calculate the
f60f5002 3180differences (added or removed nodes) between two XML/HTML documents.")
5b0c223a
BW
3181 (home-page "https://github.com/postmodern/nokogiri-diff")
3182 (license license:expat))))
f60f5002 3183
64b6ccc3
DT
3184(define-public ruby-rack
3185 (package
3186 (name "ruby-rack")
8d171471 3187 (version "2.0.3")
64b6ccc3
DT
3188 (source
3189 (origin
3190 (method url-fetch)
1db791d5
BW
3191 ;; Download from GitHub so that the patch can be applied.
3192 (uri (string-append
3193 "https://github.com/rack/rack/archive/"
3194 version
3195 ".tar.gz"))
3196 (file-name (string-append name "-" version ".tar.gz"))
64b6ccc3
DT
3197 (sha256
3198 (base32
8d171471 3199 "12bnqrcg43x9hsswjqg31qqwk8cwj2fh0d2m179y20bjghhn54kx"))
1db791d5
BW
3200 ;; Ignore test which fails inside the build environment but works
3201 ;; outside.
3202 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
64b6ccc3
DT
3203 (build-system ruby-build-system)
3204 (arguments
3205 '(#:phases
3206 (modify-phases %standard-phases
3207 (add-before 'check 'fix-tests
3208 (lambda _
3209 ;; A few of the tests use the length of a file on disk for
3210 ;; Content-Length and Content-Range headers. However, this file
3211 ;; has a shebang in it which an earlier phase patches, growing
3212 ;; the file size from 193 to 239 bytes when the store prefix is
3213 ;; "/gnu/store".
3214 (let ((size-diff (- (string-length (which "ruby"))
3215 (string-length "/usr/bin/env ruby"))))
3216 (substitute* '("test/spec_file.rb")
3217 (("193")
3218 (number->string (+ 193 size-diff)))
3219 (("bytes(.)22-33" all delimiter)
3220 (string-append "bytes"
3221 delimiter
3222 (number->string (+ 22 size-diff))
3223 "-"
3224 (number->string (+ 33 size-diff))))))
3225 #t)))))
3226 (native-inputs
1db791d5
BW
3227 `(("ruby-minitest" ,ruby-minitest)
3228 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
3229 ("which" ,which)))
3230 (propagated-inputs
3231 `(("ruby-concurrent" ,ruby-concurrent)))
64b6ccc3
DT
3232 (synopsis "Unified web application interface for Ruby")
3233 (description "Rack provides a minimal, modular and adaptable interface for
3234developing web applications in Ruby. By wrapping HTTP requests and responses,
3235it unifies the API for web servers, web frameworks, and software in between
3236into a single method call.")
2f3800e5 3237 (home-page "https://rack.github.io/")
64b6ccc3 3238 (license license:expat)))
62e4cc5a 3239
6aaa815e
PP
3240(define-public ruby-docile
3241 (package
3242 (name "ruby-docile")
3243 (version "1.1.5")
3244 (source
3245 (origin
3246 (method url-fetch)
3247 (uri (rubygems-uri "docile" version))
3248 (sha256
3249 (base32
3250 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
3251 (build-system ruby-build-system)
3252 (arguments
3253 '(#:tests? #f)) ; needs github-markup, among others
3254 (synopsis "Ruby EDSL helper library")
3255 (description "Docile is a Ruby library that provides an interface for
3256creating embedded domain specific languages (EDSLs) that manipulate existing
3257Ruby classes.")
3258 (home-page "https://ms-ati.github.io/docile/")
3259 (license license:expat)))
3260
44514637 3261(define-public ruby-gherkin
62e4cc5a 3262 (package
44514637 3263 (name "ruby-gherkin")
8929f0a4 3264 (version "4.1.3")
62e4cc5a
PP
3265 (source
3266 (origin
3267 (method url-fetch)
44514637 3268 (uri (rubygems-uri "gherkin" version))
62e4cc5a
PP
3269 (sha256
3270 (base32
8929f0a4 3271 "1d18r8mf2qyd9jbq9xxvca8adyysdzvwdy8v9c2s5hrd6p02kg79"))))
62e4cc5a
PP
3272 (build-system ruby-build-system)
3273 (native-inputs
3274 `(("bundler" ,bundler)))
3275 (arguments
3276 '(#:tests? #f)) ; needs simplecov, among others
3277 (synopsis "Gherkin parser for Ruby")
44514637
BW
3278 (description "Gherkin is a parser and compiler for the Gherkin language.
3279It is intended be used by all Cucumber implementations to parse '.feature'
3280files.")
62e4cc5a
PP
3281 (home-page "https://github.com/cucumber/gherkin3")
3282 (license license:expat)))
cd89fecb
PP
3283
3284(define-public ruby-cucumber-core
3285 (package
3286 (name "ruby-cucumber-core")
dc97df2e 3287 (version "2.0.0")
cd89fecb
PP
3288 (source
3289 (origin
3290 (method url-fetch)
3291 (uri (rubygems-uri "cucumber-core" version))
3292 (sha256
3293 (base32
dc97df2e 3294 "136hnvqv444qyxzcgy1k60y4i6cn3sn9lbqr4wan9dzz1yzllqbm"))))
cd89fecb
PP
3295 (build-system ruby-build-system)
3296 (propagated-inputs
44514637 3297 `(("ruby-gherkin" ,ruby-gherkin)))
cd89fecb
PP
3298 (native-inputs
3299 `(("bundler" ,bundler)))
3300 (arguments
3301 '(#:tests? #f)) ; needs simplecov, among others
3302 (synopsis "Core library for the Cucumber BDD app")
3303 (description "Cucumber is a tool for running automated tests
3304written in plain language. Because they're written in plain language,
3305they can be read by anyone on your team. Because they can be read by
3306anyone, you can use them to help improve communication, collaboration
3307and trust on your team.")
3308 (home-page "https://cucumber.io/")
3309 (license license:expat)))
212d563d
PP
3310
3311(define-public ruby-bio-logger
3312 (package
3313 (name "ruby-bio-logger")
3314 (version "1.0.1")
3315 (source
3316 (origin
3317 (method url-fetch)
3318 (uri (rubygems-uri "bio-logger" version))
3319 (sha256
3320 (base32
3321 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
3322 (build-system ruby-build-system)
3323 (arguments
3324 `(#:tests? #f)) ; rake errors, missing shoulda
3325 (propagated-inputs
3326 `(("ruby-log4r" ,ruby-log4r)))
3327 (synopsis "Log4r wrapper for Ruby")
3328 (description "Bio-logger is a wrapper around Log4r adding extra logging
3329features such as filtering and fine grained logging.")
3330 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
3331 (license license:expat)))
07f61cb2
BW
3332
3333(define-public ruby-yard
6499893e
BW
3334 (package
3335 (name "ruby-yard")
3336 (version "0.9.6")
3337 (source
3338 (origin
3339 (method url-fetch)
3340 ;; Tests do not pass if we build from the distributed gem.
3341 (uri (string-append "https://github.com/lsegal/yard/archive/v"
3a3e3099 3342 version ".tar.gz"))
6499893e
BW
3343 (file-name (string-append name "-" version ".tar.gz"))
3344 (sha256
3345 (base32
3346 "0rsz4bghgx7fryzyhlz8wlnd2m9xgyvf1xhrq58mnzfrrfm41bdg"))))
3347 (build-system ruby-build-system)
3348 (arguments
3349 `(#:phases
3350 (modify-phases %standard-phases
3351 (replace 'check
3352 (lambda _
3353 ;; $HOME needs to be set to somewhere writeable for tests to run
3354 (setenv "HOME" "/tmp")
3355 ;; Run tests without using 'rake' to avoid dependencies.
3356 (zero? (system* "rspec")))))))
3357 (native-inputs
3358 `(("ruby-rspec" ,ruby-rspec)
3359 ("ruby-rack" ,ruby-rack)))
3360 (synopsis "Documentation generation tool for Ruby")
3361 (description
3362 "YARD is a documentation generation tool for the Ruby programming
07f61cb2
BW
3363language. It enables the user to generate consistent, usable documentation
3364that can be exported to a number of formats very easily, and also supports
3365extending for custom Ruby constructs such as custom class level definitions.")
2f3800e5 3366 (home-page "https://yardoc.org")
6499893e 3367 (license license:expat)))
2cbcd23a 3368
ad686ef3
RW
3369(define-public ruby-clap
3370 (package
3371 (name "ruby-clap")
3372 (version "1.0.0")
3373 (source (origin
3374 (method url-fetch)
3375 (uri (rubygems-uri "clap" version))
3376 (sha256
3377 (base32
3378 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
3379 (build-system ruby-build-system)
3380 ;; Clap needs cutest for running tests, but cutest needs clap.
3381 (arguments `(#:tests? #f))
3382 (synopsis "Command line argument parsing for simple applications")
3383 (description
3384 "Clap provides command line argument parsing features. It covers the
3385simple case of executing code based on the flags or parameters passed.")
3386 (home-page "https://github.com/djanowski/cutest")
0c80451e
RW
3387 (license license:expat)))
3388
3389(define-public ruby-cutest
3390 (package
3391 (name "ruby-cutest")
3392 (version "1.2.2")
3393 (source (origin
3394 (method url-fetch)
3395 (uri (rubygems-uri "cutest" version))
3396 (sha256
3397 (base32
3398 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
3399 (build-system ruby-build-system)
3400 (propagated-inputs
3401 `(("ruby-clap" ,ruby-clap)))
3402 (synopsis "Run tests in separate processes")
3403 (description
3404 "Cutest runs tests in separate processes to avoid shared state.")
3405 (home-page "https://github.com/djanowski/cutest")
ad686ef3
RW
3406 (license license:expat)))
3407
ac09beba
RW
3408(define-public ruby-pygmentize
3409 (package
3410 (name "ruby-pygmentize")
3411 (version "0.0.3")
3412 (source (origin
3413 (method url-fetch)
3414 (uri (rubygems-uri "pygmentize" version))
3415 (sha256
3416 (base32
3417 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
3418 (build-system ruby-build-system)
3419 (arguments
3420 `(#:phases
3421 (modify-phases %standard-phases
3422 (add-after 'unpack 'fix-pygmentize-path
3423 (lambda _
3424 (substitute* "lib/pygmentize.rb"
3425 (("\"/usr/bin/env python.*")
3426 (string-append "\"" (which "pygmentize") "\"\n")))
3427 #t))
3428 (add-after 'build 'do-not-use-vendor-directory
3429 (lambda _
3430 ;; Remove bundled pygments sources
3431 ;; FIXME: ruby-build-system does not support snippets.
3432 (delete-file-recursively "vendor")
3433 (substitute* "pygmentize.gemspec"
3434 (("\"vendor/\\*\\*/\\*\",") ""))
3435 #t)))))
3436 (inputs
3437 `(("pygments" ,python-pygments)))
3438 (native-inputs
3439 `(("ruby-cutest" ,ruby-cutest)
3440 ("ruby-nokogiri" ,ruby-nokogiri)))
3441 (synopsis "Thin Ruby wrapper around pygmentize")
3442 (description
3443 "Pygmentize provides a simple way to call pygmentize from within a Ruby
3444application.")
3445 (home-page "https://github.com/djanowski/pygmentize")
3446 (license license:expat)))
3447
2cbcd23a
DT
3448(define-public ruby-eventmachine
3449 (package
3450 (name "ruby-eventmachine")
30caad50 3451 (version "1.2.5")
2cbcd23a
DT
3452 (source
3453 (origin
3454 (method url-fetch)
3455 (uri (rubygems-uri "eventmachine" version))
3456 (sha256
3457 (base32
30caad50 3458 "075hdw0fgzldgss3xaqm2dk545736khcvv1fmzbf1sgdlkyh1v8z"))))
2cbcd23a
DT
3459 (build-system ruby-build-system)
3460 (arguments
3461 '(#:tests? #f)) ; test suite tries to connect to google.com
3462 (native-inputs
3463 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
3464 (synopsis "Single-threaded network event framework for Ruby")
3465 (description
3466 "EventMachine implements a single-threaded engine for arbitrary network
3467communications. EventMachine wraps all interactions with sockets, allowing
3468programs to concentrate on the implementation of network protocols. It can be
3469used to create both network servers and clients.")
3470 (home-page "http://rubyeventmachine.com")
3471 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
7d3a1a2d 3472
8092e333
BW
3473(define-public ruby-turn
3474 (package
3475 (name "ruby-turn")
3476 (version "0.9.7")
3477 (source
3478 (origin
3479 (method url-fetch)
3480 (uri (rubygems-uri "turn" version))
3481 (sha256
3482 (base32
3483 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
3484 (build-system ruby-build-system)
3485 (arguments
3486 `(#:phases
3487 (modify-phases %standard-phases
3488 ;; Tests fail because turn changes its environment so can no longer
3489 ;; find test/unit. Instead simply test if the executable runs
3490 ;; without issue.
3491 (replace 'check
3492 (lambda _
3493 (zero? (system* "ruby" "-Ilib" "bin/turn" "-h")))))))
3494 (propagated-inputs
3495 `(("ruby-ansi" ,ruby-ansi)
3496 ("ruby-minitest" ,ruby-minitest-4)))
3497 (synopsis "Alternate set of alternative runners for MiniTest")
3498 (description
3499 "TURN provides a set of alternative runners for MiniTest which are both
3500colorful and informative. TURN displays each test on a separate line with
3501failures being displayed immediately instead of at the end of the tests. Note
3502that TURN is no longer being maintained.")
3503 (home-page "http://rubygems.org/gems/turn")
3504 (license license:expat)))
3505
8279b1d3
CB
3506(define-public ruby-mimemagic
3507 (package
3508 (name "ruby-mimemagic")
3509 (version "0.3.2")
3510 (source
3511 (origin
3512 (method url-fetch)
3513 (uri (rubygems-uri "mimemagic" version))
3514 (sha256
3515 (base32
3516 "00ibc1mhvdfyfyl103xwb45621nwyqxf124cni5hyfhag0fn1c3q"))))
3517 (build-system ruby-build-system)
3518 (arguments
3519 '(#:phases
3520 (modify-phases %standard-phases
3521 ;; This phase breaks the tests, as it patches some of the test data.
3522 (delete 'patch-source-shebangs))))
3523 (native-inputs
3524 `(("ruby-bacon" ,ruby-bacon)))
3525 (synopsis "Ruby library for MIME detection by extension or content")
3526 (description
3527 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
3528extension or content, using the freedesktop.org.xml shared-mime-info
3529database.")
3530 (home-page "https://github.com/minad/mimemagic")
3531 (license license:expat)))
3532
32d1c06f
BW
3533(define-public ruby-mime-types-data
3534 (package
3535 (name "ruby-mime-types-data")
f49511db 3536 (version "3.2016.0521")
32d1c06f
BW
3537 (source
3538 (origin
3539 (method url-fetch)
3540 (uri (rubygems-uri "mime-types-data" version))
3541 (sha256
3542 (base32
f49511db 3543 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
32d1c06f
BW
3544 (build-system ruby-build-system)
3545 (native-inputs
3546 `(("ruby-hoe" ,ruby-hoe)))
3547 (synopsis "Registry for information about MIME media type definitions")
3548 (description
3549 "@code{mime-types-data} provides a registry for information about
3550Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
3551be used with the Ruby mime-types library or other software to determine
3552defined filename extensions for MIME types, or to use filename extensions to
3553look up the likely MIME type definitions.")
3554 (home-page "https://github.com/mime-types/mime-types-data/")
3555 (license license:expat)))
3556
d39b606c
BW
3557(define-public ruby-mime-types
3558 (package
3559 (name "ruby-mime-types")
803bcc81 3560 (version "3.1")
d39b606c
BW
3561 (source
3562 (origin
3563 (method url-fetch)
3564 (uri (rubygems-uri "mime-types" version))
3565 (sha256
3566 (base32
803bcc81 3567 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
d39b606c
BW
3568 (build-system ruby-build-system)
3569 (propagated-inputs
3570 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
3571 (native-inputs
3572 `(("ruby-hoe" ,ruby-hoe)
3573 ("ruby-fivemat" ,ruby-fivemat)
3574 ("ruby-minitest-focus" ,ruby-minitest-focus)
3575 ("ruby-minitest-rg" ,ruby-minitest-rg)
803bcc81
BW
3576 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
3577 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
d39b606c
BW
3578 (synopsis "Library and registry for MIME content type definitions")
3579 (description "The mime-types library provides a library and registry for
3580information about Multipurpose Internet Mail Extensions (MIME) content type
3581definitions. It can be used to determine defined filename extensions for MIME
3582types, or to use filename extensions to look up the likely MIME type
3583definitions.")
3584 (home-page "https://github.com/mime-types/ruby-mime-types")
3585 (license license:expat)))
3586
eb5e0bd9
BW
3587(define-public ruby-fivemat
3588 (package
3589 (name "ruby-fivemat")
56822223 3590 (version "1.3.5")
eb5e0bd9
BW
3591 (source
3592 (origin
3593 (method url-fetch)
3594 (uri (rubygems-uri "fivemat" version))
3595 (sha256
3596 (base32
56822223 3597 "0ij7n250gk5c1g34rsbwjnpcv64gk4vsas8lkz8fac4wbygvk6z1"))))
eb5e0bd9
BW
3598 (build-system ruby-build-system)
3599 (arguments
3600 `(#:tests? #f)) ; no tests
3601 (synopsis "Each test file given its own line of dots")
3602 (description
3603 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
3604its own line of dots during testing. It aims to provide test output that is
3605neither too verbose nor too minimal.")
3606 (home-page "https://github.com/tpope/fivemat")
3607 (license license:expat)))
3608
4fea500b
BW
3609(define-public ruby-sqlite3
3610 (package
3611 (name "ruby-sqlite3")
cba53c60 3612 (version "1.3.13")
4fea500b
BW
3613 (source
3614 (origin
3615 (method url-fetch)
3616 (uri (rubygems-uri "sqlite3" version))
3617 (sha256
3618 (base32
cba53c60 3619 "01ifzp8nwzqppda419c9wcvr8n82ysmisrs0hph9pdmv1lpa4f5i"))))
4fea500b
BW
3620 (build-system ruby-build-system)
3621 (arguments
3622 `(#:phases
3623 (modify-phases %standard-phases
54a93355
MB
3624 (add-before 'check 'adjust-failing-test
3625 (lambda _
3626 ;; XXX: This test fails with SQLite versions >= 3.21.
3627 ;; See <https://github.com/sparklemotion/sqlite3-ruby/issues/226>.
3628 (substitute* "test/test_integration_resultset.rb"
3629 (("\"integer\", \"text\"") "\"INTEGER\", \"text\""))
3630 #t))
4fea500b
BW
3631 (add-before 'check 'add-gemtest-file
3632 ;; This file exists in the repository but is not distributed.
3633 (lambda _ (zero? (system* "touch" ".gemtest")))))))
3634 (inputs
3635 `(("sqlite" ,sqlite)))
3636 (native-inputs
3637 `(("ruby-hoe" ,ruby-hoe)
3638 ("ruby-rake-compiler" ,ruby-rake-compiler)
3639 ("ruby-mini-portile" ,ruby-mini-portile)))
3640 (synopsis "Interface with SQLite3 databases")
3641 (description
3642 "This module allows Ruby programs to interface with the SQLite3 database
3643engine.")
3644 (home-page
3645 "https://github.com/sparklemotion/sqlite3-ruby")
3646 (license license:bsd-3)))
3647
4dfa39cc
BW
3648(define-public ruby-shoulda-context
3649 (package
3650 (name "ruby-shoulda-context")
e7d1d472 3651 (version "1.2.2")
4dfa39cc
BW
3652 (source
3653 (origin
3654 (method url-fetch)
3655 (uri (rubygems-uri "shoulda-context" version))
3656 (sha256
3657 (base32
e7d1d472 3658 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
4dfa39cc
BW
3659 (build-system ruby-build-system)
3660 (arguments
3661 `(#:phases
3662 (modify-phases %standard-phases
3663 (replace 'check
3664 (lambda _
3665 ;; Do not run tests to avoid circular dependence with rails.
3666 ;; Instead just import the library to test.
3667 (zero? (system* "ruby" "-Ilib" "-r" "shoulda-context")))))))
3668 (synopsis "Test::Unit context framework extracted from Shoulda")
3669 (description
3670 "@code{shoulda-context} is the context framework extracted from Shoulda.
3671Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
3672context, setup, and should blocks combine to produce natural test method
3673names.")
3674 (home-page "https://github.com/thoughtbot/shoulda-context")
3675 (license license:expat)))
3676
e4fea008
BW
3677(define-public ruby-shoulda-matchers
3678 (package
3679 (name "ruby-shoulda-matchers")
d1c1f368 3680 (version "3.1.2")
e4fea008
BW
3681 (source
3682 (origin
3683 (method url-fetch)
3684 (uri (rubygems-uri "shoulda-matchers" version))
3685 (sha256
3686 (base32
d1c1f368 3687 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
e4fea008
BW
3688 (build-system ruby-build-system)
3689 (arguments
3690 `(#:phases
3691 (modify-phases %standard-phases
e4fea008
BW
3692 (replace 'check
3693 (lambda _
3694 ;; Do not run tests to avoid circular dependence with rails. Instead
3695 ;; just import the library to test.
3696 (zero? (system* "ruby" "-Ilib" "-r" "shoulda-matchers")))))))
3697 (propagated-inputs
3698 `(("ruby-activesupport" ,ruby-activesupport)))
3699 (synopsis "Collection of testing matchers extracted from Shoulda")
3700 (description
3701 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
3702test common Rails functionality. These tests would otherwise be much longer,
3703more complex, and error-prone.")
3704 (home-page "https://github.com/thoughtbot/shoulda-matchers")
3705 (license license:expat)))
3706
3885c58b
BW
3707(define-public ruby-shoulda-matchers-2
3708 (package
3709 (inherit ruby-shoulda-matchers)
3710 (version "2.8.0")
3711 (source (origin
3712 (method url-fetch)
3713 (uri (rubygems-uri "shoulda-matchers" version))
3714 (sha256
3715 (base32
3716 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
3717
6f390716
BW
3718(define-public ruby-shoulda
3719 (package
3720 (name "ruby-shoulda")
3721 (version "3.5.0")
3722 (source
3723 (origin
3724 (method url-fetch)
3725 (uri (rubygems-uri "shoulda" version))
3726 (sha256
3727 (base32
3728 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
3729 (build-system ruby-build-system)
3730 (arguments
3731 `(#:phases
3732 (modify-phases %standard-phases
3733 (replace 'check
3734 ;; Don't run tests to avoid circular dependence with rails. Instead
3735 ;; just import the library to test.
3736 (lambda _ (zero? (system* "ruby" "-Ilib" "-r" "shoulda")))))))
3737 (propagated-inputs
3738 `(("ruby-shoulda-context" ,ruby-shoulda-context)
3739 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
3740 (synopsis "Context framework and matchers for testing")
3741 (description
3742 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
3743@code{shoulda-matchers} providing tools for writing tests.")
3744 (home-page "https://github.com/thoughtbot/shoulda")
3745 (license license:expat)))
3746
3b44bcdf
BW
3747(define-public ruby-unf
3748 (package
3749 (name "ruby-unf")
3750 (version "0.1.4")
3751 (source
3752 (origin
3753 (method url-fetch)
3754 (uri (rubygems-uri "unf" version))
3755 (sha256
3756 (base32
3757 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
3758 (build-system ruby-build-system)
3759 (arguments
3760 `(#:phases
3761 (modify-phases %standard-phases
3762 (add-before 'check 'add-dependency-to-bundler
3763 (lambda _
3764 ;; test-unit is required but not provided by the bundler
3765 ;; environment. This is fixed in the upstream repository but fix
3766 ;; has not been released.
3767 (substitute* "Gemfile"
3768 (("^gemspec") "gem 'test-unit'\ngemspec"))
3769 #t)))))
3770 (propagated-inputs
3771 `(("ruby-unf-ext" ,ruby-unf-ext)))
3772 (native-inputs
3773 `(("ruby-shoulda" ,ruby-shoulda)
3774 ("bundler" ,bundler)
3775 ("ruby-test-unit" ,ruby-test-unit)))
3776 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
3777 (description
3778 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
3779support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
3780@code{java.text.Normalizer} on JRuby.")
3781 (home-page "https://github.com/knu/ruby-unf")
3782 (license license:bsd-2)))
3783
5799aadd
BW
3784(define-public ruby-domain-name
3785 (package
3786 (name "ruby-domain-name")
5620bd45 3787 (version "0.5.20170404")
5799aadd
BW
3788 (source
3789 (origin
3790 (method url-fetch)
3791 (uri (rubygems-uri "domain_name" version))
3792 (sha256
3793 (base32
5620bd45 3794 "12hs8yijhak7p2hf1xkh98g0mnp5phq3mrrhywzaxpwz1gw5r3kf"))))
5799aadd
BW
3795 (build-system ruby-build-system)
3796 (arguments
3797 `(#:phases
3798 (modify-phases %standard-phases
3799 (add-before 'check 'fix-versions
3800 (lambda _
3801 ;; Fix NameError that appears to already be fixed upstream.
3802 (substitute* "Rakefile"
3803 (("DomainName::VERSION")
3804 "Bundler::GemHelper.gemspec.version"))
3805 ;; Loosen unnecessarily strict test-unit version specification.
3806 (substitute* "domain_name.gemspec"
71596c3c 3807 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
5799aadd
BW
3808 #t)))))
3809 (propagated-inputs
3810 `(("ruby-unf" ,ruby-unf)))
3811 (native-inputs
3812 `(("ruby-shoulda" ,ruby-shoulda)
3813 ("bundler" ,bundler)
3814 ("ruby-test-unit" ,ruby-test-unit)))
3815 (synopsis "Domain name manipulation library")
3816 (description
3817 "@code{domain_name} is a Domain name manipulation library. It parses a
3818domain name ready for extracting the registered domain and TLD (Top Level
3819Domain). It can also be used for cookie domain validation based on the Public
3820Suffix List.")
3821 (home-page "https://github.com/knu/ruby-domain_name")
3822 (license license:bsd-2)))
3823
d114ceeb
BW
3824(define-public ruby-http-cookie
3825 (package
3826 (name "ruby-http-cookie")
2a2eb07d 3827 (version "1.0.3")
d114ceeb
BW
3828 (source
3829 (origin
3830 (method url-fetch)
3831 (uri (rubygems-uri "http-cookie" version))
3832 (sha256
3833 (base32
2a2eb07d 3834 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
d114ceeb
BW
3835 (build-system ruby-build-system)
3836 (arguments
3837 `(#:phases
3838 (modify-phases %standard-phases
3839 (add-before 'check 'add-dependency-to-bundler
3840 (lambda _
3841 ;; Fix NameError
3842 (substitute* "Rakefile"
3843 (("HTTP::Cookie::VERSION")
3844 "Bundler::GemHelper.gemspec.version"))
3845 #t)))))
3846 (propagated-inputs
3847 `(("ruby-domain-name" ,ruby-domain-name)))
3848 (native-inputs
3849 `(("rubysimplecov" ,ruby-simplecov)
3850 ("bundler" ,bundler)
3851 ("ruby-sqlite3" ,ruby-sqlite3)
3852 ("ruby-test-unit" ,ruby-test-unit)))
3853 (synopsis "Handle HTTP Cookies based on RFC 6265")
3854 (description
3855 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
3856RFC 6265. It has been designed with security, standards compliance and
3857compatibility in mind, to behave just the same as today's major web browsers.
3858It has built-in support for the legacy @code{cookies.txt} and
3859@code{cookies.sqlite} formats of Mozilla Firefox.")
3860 (home-page "https://github.com/sparklemotion/http-cookie")
3861 (license license:expat)))
3862
1c8e6fd3
CB
3863(define-public ruby-httpclient
3864 (package
3865 (name "ruby-httpclient")
3866 (version "2.8.3")
3867 (source
3868 (origin
3869 (method url-fetch)
3870 (uri (rubygems-uri "httpclient" version))
3871 (sha256
3872 (base32
3873 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
3874 (build-system ruby-build-system)
3875 (arguments
3876 '(;; TODO: Some tests currently fail
3877 ;; ------
3878 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
3879 ;; 2 omissions, 0 notifications
3880 ;; 91.866% passed
3881 ;; ------
3882 ;; 6.49 tests/s, 22.41 assertions/s
3883 #:tests? #f
3884 #:phases
3885 (modify-phases %standard-phases
3886 (replace 'check
3887 (lambda* (#:key tests? #:allow-other-keys)
3888 (if tests?
3889 (zero?
3890 (system* "ruby"
3891 "-Ilib"
3892 "test/runner.rb"))
0076f5a9 3893 #t))))))
1c8e6fd3
CB
3894 (native-inputs
3895 `(("ruby-rack" ,ruby-rack)))
3896 (synopsis
3897 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
3898 (description
3899 "The @code{httpclient} ruby library provides functionality related to
3900HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
3901Cookie, multithreading and authentication (digest, NTLM) support.
3902
3903Also provided is a @command{httpclient} command, which can perform HTTP
3904requests either using arguments or with an interactive prompt.")
3905 (home-page "https://github.com/nahi/httpclient")
3906 (license license:ruby)))
3907
7d3a1a2d
BW
3908(define-public ruby-ansi
3909 (package
3910 (name "ruby-ansi")
3911 (version "1.5.0")
3912 (source
3913 (origin
3914 (method url-fetch)
3915 ;; Fetch from GitHub as the gem does not contain testing code.
3916 (uri (string-append "https://github.com/rubyworks/ansi/archive/"
3917 version ".tar.gz"))
3918 (file-name (string-append name "-" version ".tar.gz"))
3919 (sha256
3920 (base32
3921 "1zdip30hivyipi8hndhb457bhiz033awd00bgrsk5axjrwp6zhly"))))
3922 (build-system ruby-build-system)
3923 (arguments
3924 `(#:phases
3925 (modify-phases %standard-phases
3926 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
3927 ;; cycle ansi, qed, ansi. Instead simply test that the library can
3928 ;; be require'd.
3929 (replace 'check
3930 (lambda _
0899352f
MB
3931 (zero? (system* "ruby" "-Ilib" "-r" "ansi"))))
3932 (add-before 'validate-runpath 'replace-broken-symlink
3933 (lambda* (#:key outputs #:allow-other-keys)
3934 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
3935 (file (string-append
3936 out "/lib/ruby/vendor_ruby/gems/ansi-"
3937 ,version "/lib/ansi.yml")))
0899352f
MB
3938 ;; XXX: This symlink is broken since ruby 2.4.
3939 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
3940 (delete-file file)
3941 (symlink "../.index" file)
3942 #t))))))
7d3a1a2d
BW
3943 (synopsis "ANSI escape code related libraries")
3944 (description
3945 "This package is a collection of ANSI escape code related libraries
3946enabling ANSI colorization and stylization of console output. Included in the
3947library are the @code{Code} module, which defines ANSI codes as constants and
3948methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
3949@code{ProgressBar}, and a @code{String} subclass. The library also includes a
3950@code{Terminal} module which provides information about the current output
3951device.")
2f3800e5 3952 (home-page "https://rubyworks.github.io/ansi")
7d3a1a2d 3953 (license license:bsd-2)))
7c033c46
BW
3954
3955(define-public ruby-systemu
3956 (package
3957 (name "ruby-systemu")
3958 (version "2.6.5")
3959 (source
3960 (origin
3961 (method url-fetch)
3962 (uri (rubygems-uri "systemu" version))
3963 (sha256
3964 (base32
3965 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
3966 (build-system ruby-build-system)
3967 (arguments
3968 `(#:phases
3969 (modify-phases %standard-phases
3970 (add-before 'check 'set-version
3971 (lambda _
3972 (setenv "VERSION" ,version)
3973 #t)))))
3974 (synopsis "Capture of stdout/stderr and handling of child processes")
3975 (description
3976 "Systemu can be used on any platform to return status, stdout, and stderr
3977of any command. Unlike other methods like @code{open3} and @code{popen4}
3978there is no danger of full pipes or threading issues hanging your process or
3979subprocess.")
3980 (home-page "https://github.com/ahoward/systemu")
3981 (license license:ruby)))
3d84a99e
BW
3982
3983(define-public ruby-bio-commandeer
3984 (package
3985 (name "ruby-bio-commandeer")
37b08547 3986 (version "0.4.0")
3d84a99e
BW
3987 (source
3988 (origin
3989 (method url-fetch)
3990 (uri (rubygems-uri "bio-commandeer" version))
3991 (sha256
3992 (base32
37b08547 3993 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
3d84a99e
BW
3994 (build-system ruby-build-system)
3995 (arguments
3996 `(#:phases
3997 (modify-phases %standard-phases
3998 (replace 'check
3999 ;; Run test without calling 'rake' so that jeweler is
4000 ;; not required as an input.
4001 (lambda _
4002 (zero? (system* "rspec" "spec/bio-commandeer_spec.rb")))))))
4003 (propagated-inputs
4004 `(("ruby-bio-logger" ,ruby-bio-logger)
4005 ("ruby-systemu" ,ruby-systemu)))
4006 (native-inputs
4007 `(("bundler" ,bundler)
4008 ("ruby-rspec" ,ruby-rspec)))
4009 (synopsis "Simplified running of shell commands from within Ruby")
4010 (description
4011 "Bio-commandeer provides an opinionated method of running shell commands
4012from within Ruby. The advantage of bio-commandeer over other methods of
4013running external commands is that when something goes wrong, messages printed
4014to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
4015detail to ease debugging.")
7bf837fd 4016 (home-page "https://github.com/wwood/bioruby-commandeer")
3d84a99e 4017 (license license:expat)))
7c8131c7
BW
4018
4019(define-public ruby-rubytest
4020 (package
4021 (name "ruby-rubytest")
4022 (version "0.8.1")
4023 (source
4024 (origin
4025 (method url-fetch)
4026 (uri (rubygems-uri "rubytest" version))
4027 (sha256
4028 (base32
4029 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
4030 (build-system ruby-build-system)
4031 (arguments
4032 ;; Disable regular testing to break the cycle rubytest, qed, brass,
4033 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
4034 ;; simply test that the library can be require'd.
4035 `(#:phases
4036 (modify-phases %standard-phases
4037 (replace 'check
4038 (lambda _
4039 (zero? (system* "ruby" "-Ilib" "-r" "rubytest")))))))
4040 (propagated-inputs
4041 `(("ruby-ansi" ,ruby-ansi)))
4042 (synopsis "Universal test harness for Ruby")
4043 (description
4044 "Rubytest is a testing meta-framework for Ruby. It can handle any
4045compliant test framework and can run tests from multiple frameworks in a
4046single pass.")
2f3800e5 4047 (home-page "https://rubyworks.github.io/rubytest")
7c8131c7 4048 (license license:bsd-2)))
90fcedf2
BW
4049
4050(define-public ruby-brass
4051 (package
4052 (name "ruby-brass")
4053 (version "1.2.1")
4054 (source
4055 (origin
4056 (method url-fetch)
4057 (uri (rubygems-uri "brass" version))
4058 (sha256
4059 (base32
4060 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
4061 (build-system ruby-build-system)
4062 (arguments
4063 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
4064 ;; Instead simply test that the library can be require'd.
4065 `(#:phases
4066 (modify-phases %standard-phases
4067 (replace 'check
4068 (lambda _
4069 (zero? (system* "ruby" "-Ilib" "-r" "brass")))))))
4070 (synopsis "Basic foundational assertions framework")
4071 (description
4072 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
4073foundational assertions framework for other assertion and test frameworks to
4074make use of.")
2f3800e5 4075 (home-page "https://rubyworks.github.io/brass")
90fcedf2 4076 (license license:bsd-2)))
120fc74b
BW
4077
4078(define-public ruby-qed
4079 (package
4080 (name "ruby-qed")
4081 (version "2.9.2")
4082 (source
4083 (origin
4084 (method url-fetch)
4085 (uri (rubygems-uri "qed" version))
4086 (sha256
4087 (base32
4088 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
4089 (build-system ruby-build-system)
4090 (arguments
4091 ;; Disable testing to break the cycle qed, ansi, qed, among others.
4092 ;; Instead simply test that the executable runs using --copyright.
4093 `(#:phases
4094 (modify-phases %standard-phases
4095 (replace 'check
4096 (lambda _
4097 (zero? (system* "ruby" "-Ilib" "bin/qed" "--copyright")))))))
4098 (propagated-inputs
4099 `(("ruby-ansi" ,ruby-ansi)
4100 ("ruby-brass" ,ruby-brass)))
4101 (synopsis "Test framework utilizing literate programming techniques")
4102 (description
4103 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
4104@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
4105Development} (BDD) utilizing Literate Programming techniques. QED sits
4106somewhere between lower-level testing tools like @code{Test::Unit} and
4107requirement specifications systems like Cucumber.")
2f3800e5 4108 (home-page "https://rubyworks.github.io/qed")
120fc74b 4109 (license license:bsd-2)))
9273ee8f
BW
4110
4111(define-public ruby-ae
4112 (package
4113 (name "ruby-ae")
4114 (version "1.8.2")
4115 (source
4116 (origin
4117 (method url-fetch)
4118 ;; Fetch from github so tests are included.
4119 (uri (string-append
4120 "https://github.com/rubyworks/ae/archive/"
4121 version ".tar.gz"))
4122 (file-name (string-append name "-" version ".tar.gz"))
4123 (sha256
4124 (base32
4125 "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl"))))
4126 (build-system ruby-build-system)
4127 (arguments
4128 `(#:phases
4129 (modify-phases %standard-phases
4130 (replace 'check
de6f6efd
MB
4131 (lambda _ (zero? (system* "qed"))))
4132 (add-before 'validate-runpath 'replace-broken-symlink
4133 (lambda* (#:key outputs #:allow-other-keys)
4134 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
4135 (file (string-append
4136 out "/lib/ruby/vendor_ruby/gems/ae-"
4137 ,version "/lib/ae.yml")))
de6f6efd
MB
4138 ;; XXX: This symlink is broken since ruby 2.4.
4139 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
4140 (delete-file file)
4141 (symlink "../.index" file)
4142 #t))))))
9273ee8f
BW
4143 (propagated-inputs
4144 `(("ruby-ansi" ,ruby-ansi)))
4145 (native-inputs
4146 `(("ruby-qed" ,ruby-qed)))
4147 (synopsis "Assertions library")
4148 (description
4149 "Assertive Expressive (AE) is an assertions library specifically designed
4150for reuse by other test frameworks.")
2f3800e5 4151 (home-page "https://rubyworks.github.io/ae")
9273ee8f 4152 (license license:bsd-2)))
78bb471f
BW
4153
4154(define-public ruby-lemon
4155 (package
4156 (name "ruby-lemon")
4157 (version "0.9.1")
4158 (source
4159 (origin
4160 (method url-fetch)
4161 (uri (rubygems-uri "lemon" version))
4162 (sha256
4163 (base32
4164 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
4165 (build-system ruby-build-system)
4166 (arguments
4167 `(#:phases
4168 (modify-phases %standard-phases
4169 (replace 'check (lambda _ (zero? (system* "qed")))))))
4170 (propagated-inputs
4171 `(("ruby-ae" ,ruby-ae)
4172 ("ruby-ansi" ,ruby-ansi)
4173 ("ruby-rubytest" ,ruby-rubytest)))
4174 (native-inputs
4175 `(("ruby-qed" ,ruby-qed)))
4176 (synopsis "Test framework correlating code structure and test unit")
4177 (description
4178 "Lemon is a unit testing framework that enforces highly formal
4179case-to-class and unit-to-method test construction. This enforcement can help
4180focus concern on individual units of behavior.")
2f3800e5 4181 (home-page "https://rubyworks.github.io/lemon")
78bb471f 4182 (license license:bsd-2)))
0832804e
BW
4183
4184(define-public ruby-rubytest-cli
4185 (package
4186 (name "ruby-rubytest-cli")
4187 (version "0.2.0")
4188 (source
4189 (origin
4190 (method url-fetch)
4191 (uri (rubygems-uri "rubytest-cli" version))
4192 (sha256
4193 (base32
4194 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
4195 (build-system ruby-build-system)
4196 (arguments
4197 `(#:tests? #f)) ; no tests
4198 (propagated-inputs
4199 `(("ruby-ansi" ,ruby-ansi)
4200 ("ruby-rubytest" ,ruby-rubytest)))
4201 (synopsis "Command-line interface for rubytest")
4202 (description
4203 "Rubytest CLI is a command-line interface for running tests for
4204Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
2f3800e5 4205 (home-page "https://rubyworks.github.io/rubytest-cli")
0832804e 4206 (license license:bsd-2)))
72ccbfe3
BW
4207
4208(define-public ruby-hashery
4209 (package
4210 (name "ruby-hashery")
cba96208 4211 (version "2.1.2")
72ccbfe3
BW
4212 (source
4213 (origin
4214 (method url-fetch)
4215 (uri (rubygems-uri "hashery" version))
4216 (sha256
4217 (base32
cba96208 4218 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
72ccbfe3
BW
4219 (build-system ruby-build-system)
4220 (arguments
4221 `(#:phases
4222 (modify-phases %standard-phases
4223 (replace 'check
4224 (lambda _
4225 (and (zero? (system* "qed"))
4226 (zero? (system* "rubytest" "-Ilib" "-Itest" "test/"))))))))
4227 (native-inputs
4228 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
4229 ("ruby-qed" ,ruby-qed)
4230 ("ruby-lemon" ,ruby-lemon)))
4231 (synopsis "Hash-like classes with extra features")
4232 (description
4233 "The Hashery is a tight collection of @code{Hash}-like classes.
4234Included are the auto-sorting @code{Dictionary} class, the efficient
4235@code{LRUHash}, the flexible @code{OpenHash} and the convenient
4236@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
4237defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
4238standard @code{Hash} making it possible to subclass and augment to fit any
4239specific use case.")
2f3800e5 4240 (home-page "https://rubyworks.github.io/hashery")
72ccbfe3 4241 (license license:bsd-2)))
1f1d71e0
BW
4242
4243(define-public ruby-rc4
4244 (package
4245 (name "ruby-rc4")
4246 (version "0.1.5")
4247 (source
4248 (origin
4249 (method url-fetch)
4250 (uri (rubygems-uri "ruby-rc4" version))
4251 (sha256
4252 (base32
4253 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
4254 (build-system ruby-build-system)
4255 (arguments
4256 `(#:phases
4257 (modify-phases %standard-phases
4258 (replace 'check
4259 (lambda _
4260 (zero? (system* "rspec" "spec/rc4_spec.rb")))))))
4261 (native-inputs
4262 `(("ruby-rspec" ,ruby-rspec-2)))
4263 (synopsis "Implementation of the RC4 algorithm")
4264 (description
4265 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
4266 (home-page "https://github.com/caiges/Ruby-RC4")
4267 (license license:expat)))
f3e085a8
BW
4268
4269(define-public ruby-afm
4270 (package
4271 (name "ruby-afm")
4272 (version "0.2.2")
4273 (source
4274 (origin
4275 (method url-fetch)
4276 (uri (rubygems-uri "afm" version))
4277 (sha256
4278 (base32
4279 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
4280 (build-system ruby-build-system)
4281 (native-inputs
4282 `(("bundler" ,bundler)))
4283 (synopsis "Read Adobe Font Metrics (afm) files")
4284 (description
4285 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
4286files and use the data therein.")
7bf837fd 4287 (home-page "https://github.com/halfbyte/afm")
f3e085a8 4288 (license license:expat)))
acb6be42
BW
4289
4290(define-public ruby-ascii85
4291 (package
4292 (name "ruby-ascii85")
4293 (version "1.0.2")
4294 (source
4295 (origin
4296 (method url-fetch)
4297 (uri (rubygems-uri "Ascii85" version))
4298 (sha256
4299 (base32
4300 "0j95sbxd18kc8rhcnvl1w37kflqpax1r12h1x47gh4xxn3mz4m7q"))))
4301 (build-system ruby-build-system)
4302 (native-inputs
4303 `(("bundler" ,bundler)))
4304 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
4305 (description
4306 "This library provides methods to encode and decode Ascii85
4307binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
4308@dfn{Portable Document Format} (PDF) file formats.")
4309 (home-page "https://github.com/datawraith/ascii85gem")
4310 (license license:expat)))
edf8caae
BW
4311
4312(define-public ruby-ttfunk
4313 (package
4314 (name "ruby-ttfunk")
4315 (version "1.4.0")
4316 (source
4317 (origin
4318 (method url-fetch)
4319 ;; fetch from github as the gem does not contain testing code
4320 (uri (string-append
4321 "https://github.com/prawnpdf/ttfunk/archive/"
4322 version ".tar.gz"))
4323 (file-name (string-append name "-" version ".tar.gz"))
4324 (sha256
4325 (base32
4326 "1izq84pnm9niyvkzp8k0vl232q9zj41hwmp9na9fzycfh1pbnsl6"))))
4327 (build-system ruby-build-system)
4328 (arguments
4329 `(#:test-target "spec"
4330 #:phases
4331 (modify-phases %standard-phases
4332 (add-before 'check 'remove-rubocop
4333 (lambda _
4334 ;; remove rubocop as a dependency as not needed for testing
4335 (substitute* "ttfunk.gemspec"
4336 (("spec.add_development_dependency\\('rubocop'.*") ""))
4337 (substitute* "Rakefile"
4338 (("require 'rubocop/rake_task'") "")
4339 (("Rubocop::RakeTask.new") ""))
4340 #t)))))
4341 (native-inputs
4342 `(("ruby-rspec" ,ruby-rspec)
4343 ("bundler" ,bundler)))
4344 (synopsis "Font metrics parser for the Prawn PDF generator")
4345 (description
4346 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
4347part of the Prawn PDF generator.")
4348 (home-page "https://github.com/prawnpdf/ttfunk")
4349 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
4350 ;; for details."
4351 (license (list license:gpl2 license:gpl3 license:ruby))))
cbdd428c 4352
9270298f
BW
4353(define-public ruby-puma
4354 (package
4355 (name "ruby-puma")
63755fcd 4356 (version "3.9.1")
9270298f
BW
4357 (source
4358 (origin
4359 (method url-fetch)
4360 ;; Fetch from GitHub because distributed gem does not contain tests.
4361 (uri (string-append "https://github.com/puma/puma/archive/v"
4362 version ".tar.gz"))
4363 (file-name (string-append name "-" version ".tar.gz"))
4364 (sha256
4365 (base32
63755fcd 4366 "03pifga841h17brh4vgia8i2ybh3cmsyg0dbybzdf6dq51wzcxdx"))))
9270298f
BW
4367 (build-system ruby-build-system)
4368 (arguments
63755fcd
BW
4369 `(#:tests? #f ; Tests require an out-dated version of minitest.
4370 #:phases
9270298f
BW
4371 (modify-phases %standard-phases
4372 (add-before 'build 'fix-gemspec
4373 (lambda _
4374 (substitute* "puma.gemspec"
4375 (("git ls-files") "find * |sort"))
4376 #t)))))
9270298f
BW
4377 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
4378 (description
4379 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
4380for Ruby/Rack applications. Puma is intended for use in both development and
4381production environments. In order to get the best throughput, it is highly
4382recommended that you use a Ruby implementation with real threads like Rubinius
4383or JRuby.")
4384 (home-page "http://puma.io")
4385 (license license:expat)))
4386
b0813490
BW
4387(define-public ruby-hoe-git
4388 (package
4389 (name "ruby-hoe-git")
4390 (version "1.6.0")
4391 (source
4392 (origin
4393 (method url-fetch)
4394 (uri (rubygems-uri "hoe-git" version))
4395 (sha256
4396 (base32
4397 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
4398 (build-system ruby-build-system)
4399 (propagated-inputs
4400 `(("ruby-hoe" ,ruby-hoe)
4401 ("git" ,git)))
4402 (synopsis "Hoe plugins for tighter Git integration")
4403 (description
4404 "This package provides a set of Hoe plugins for tighter Git integration.
4405It provides tasks to automate release tagging and pushing and changelog
4406generation.")
7bf837fd 4407 (home-page "https://github.com/jbarnette/hoe-git")
b0813490
BW
4408 (license license:expat)))
4409
cbdd428c
BW
4410(define-public ruby-sequel
4411 (package
4412 (name "ruby-sequel")
65a7f09c 4413 (version "4.49.0")
cbdd428c
BW
4414 (source
4415 (origin
4416 (method url-fetch)
4417 (uri (rubygems-uri "sequel" version))
4418 (sha256
4419 (base32
65a7f09c 4420 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
cbdd428c
BW
4421 (build-system ruby-build-system)
4422 (arguments
4423 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
4424 (synopsis "Database toolkit for Ruby")
4425 (description "Sequel provides thread safety, connection pooling and a
4426concise DSL for constructing SQL queries and table schemas. It includes a
4427comprehensive ORM layer for mapping records to Ruby objects and handling
4428associated records.")
4429 (home-page "http://sequel.jeremyevans.net")
4430 (license license:expat)))
3cc78097
BW
4431
4432(define-public ruby-timecop
4433 (package
4434 (name "ruby-timecop")
3d4a5eb5 4435 (version "0.9.1")
3cc78097
BW
4436 (source
4437 (origin
4438 (method url-fetch)
4439 (uri (rubygems-uri "timecop" version))
4440 (sha256
4441 (base32
3d4a5eb5 4442 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
3cc78097
BW
4443 (build-system ruby-build-system)
4444 (arguments
4445 `(#:phases
4446 (modify-phases %standard-phases
4447 (add-before 'check 'set-check-rubylib
4448 (lambda _
4449 ;; Set RUBYLIB so timecop tests finds its own lib.
4450 (setenv "RUBYLIB" "lib")
4451 #t)))))
4452 (native-inputs
4453 `(("bundler" ,bundler)
4454 ("ruby-minitest-rg" ,ruby-minitest-rg)
4455 ("ruby-mocha" ,ruby-mocha)
4456 ("ruby-activesupport" ,ruby-activesupport)))
66e07664 4457 (synopsis "Test mocks for time-dependent functions")
3cc78097
BW
4458 (description
4459 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
4460making it easier to test time-dependent code. It provides a unified method to
4461mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
4462call.")
4463 (home-page "https://github.com/travisjeffery/timecop")
4464 (license license:expat)))
4465
dae620b8
BW
4466(define-public ruby-concurrent
4467 (package
4468 (name "ruby-concurrent")
21aecec1 4469 (version "1.0.5")
dae620b8
BW
4470 (source
4471 (origin
4472 (method url-fetch)
4473 ;; Download from GitHub because the rubygems version does not contain
4474 ;; Rakefile.
4475 (uri (string-append
4476 "https://github.com/ruby-concurrency/concurrent-ruby/archive/v"
4477 version
4478 ".tar.gz"))
4479 (file-name (string-append name "-" version ".tar.gz"))
4480 (sha256
4481 (base32
21aecec1 4482 "0qhv0qzsby4iijgwa4s9r88zj8123pmyz1dwaqzdk57xgqll9pny"))
dae620b8
BW
4483 ;; Exclude failing test reported at
4484 ;; https://github.com/ruby-concurrency/concurrent-ruby/issues/534
402b03e6
LC
4485 (patches (search-patches "ruby-concurrent-ignore-broken-test.patch"
4486 "ruby-concurrent-test-arm.patch"))))
dae620b8
BW
4487 (build-system ruby-build-system)
4488 (arguments
4489 `(#:test-target "spec"
4490 #:phases
4491 (modify-phases %standard-phases
520e89eb 4492 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
dae620b8
BW
4493 (lambda _
4494 ;; Delete extra gemspec files so 'first-gemspec' chooses the
4495 ;; correct one.
4496 (delete-file "concurrent-ruby-edge.gemspec")
4497 (delete-file "concurrent-ruby-ext.gemspec")
4498 #t))
520e89eb
BW
4499 (add-before 'build 'replace-git-ls-files2
4500 (lambda _
4501 (substitute* "support/file_map.rb"
4502 (("git ls-files") "find * |sort"))
4503 #t))
dae620b8
BW
4504 (add-before 'check 'rake-compile
4505 ;; Fix the test error described at
4506 ;; https://github.com/ruby-concurrency/concurrent-ruby/pull/408
9019b37f
BW
4507 (lambda _ (zero? (system* "rake" "compile"))))
4508 (add-before 'check 'remove-timecop-dependency
4509 ;; Remove timecop-dependent tests as having timecop as a depedency
4510 ;; causes circular depedencies.
4511 (lambda _
4512 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
4513 (delete-file "spec/concurrent/scheduled_task_spec.rb")
4514 #t)))))
dae620b8
BW
4515 (native-inputs
4516 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9019b37f 4517 ("ruby-rspec" ,ruby-rspec)))
dae620b8
BW
4518 (synopsis "Concurrency tools for Ruby")
4519 (description
4520 "This library provides modern concurrency tools including agents,
4521futures, promises, thread pools, actors, supervisors, and more. It is
4522inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
4523patterns.")
4524 (home-page "http://www.concurrent-ruby.com")
4525 (license license:expat)))
2de61e34
BW
4526
4527(define-public ruby-pkg-config
4528 (package
4529 (name "ruby-pkg-config")
884a80dd 4530 (version "1.2.5")
2de61e34
BW
4531 (source
4532 (origin
4533 (method url-fetch)
4534 (uri (rubygems-uri "pkg-config" version))
4535 (sha256
4536 (base32
884a80dd 4537 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
2de61e34
BW
4538 (build-system ruby-build-system)
4539 (arguments
4540 ;; Tests require extra files not included in the gem.
4541 `(#:tests? #f))
4542 (synopsis "Detect libraries for compiling Ruby native extensions")
4543 (description
4544 "@code{pkg-config} can be used in your extconf.rb to properly detect need
4545libraries for compiling Ruby native extensions.")
4546 (home-page "https://github.com/ruby-gnome2/pkg-config")
4547 (license license:lgpl2.0+)))
6689c636
MFM
4548
4549(define-public ruby-net-http-digest-auth
4550 (package
4551 (name "ruby-net-http-digest-auth")
ba074a85 4552 (version "1.4.1")
6689c636
MFM
4553 (source
4554 (origin
4555 (method url-fetch)
4556 (uri (rubygems-uri "net-http-digest_auth" version))
4557 (sha256
4558 (base32
ba074a85 4559 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
6689c636
MFM
4560 (build-system ruby-build-system)
4561 (native-inputs
4562 `(("ruby-hoe" ,ruby-hoe)))
4563 (synopsis "RFC 2617 HTTP digest authentication library")
4564 (description
4565 "This library implements HTTP's digest authentication scheme based on
4566RFC 2617. This enables the use of the digest authentication scheme instead
4567of the more insecure basic authentication scheme.")
7bf837fd 4568 (home-page "https://github.com/drbrain/net-http-digest_auth")
6689c636 4569 (license license:expat)))
06116573 4570
4571(define-public ruby-mail
4572 (package
4573 (name "ruby-mail")
04de0cb5 4574 (version "2.6.6")
06116573 4575 (source
4576 (origin
4577 (method url-fetch)
4578 (uri (rubygems-uri "mail" version))
4579 (sha256
4580 (base32
04de0cb5 4581 "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
06116573 4582 (build-system ruby-build-system)
4583 (propagated-inputs
4584 `(("ruby-mime-types" ,ruby-mime-types)))
4585 (arguments
4586 ;; Tests require extra gems not included in the Gemfile.
4587 ;; XXX: Try enabling this for the next version with mini_mime.
4588 `(#:tests? #f))
4589 (synopsis "Mail library for Ruby")
4590 (description
4591 "Mail is an internet library for Ruby that is designed to handle email
4592generation, parsing and sending. The purpose of this library is to provide
4593a single point of access to handle all email functions, including sending
4594and receiving emails. All network type actions are done through proxy
4595methods to @code{Net::SMTP}, @code{Net::POP3} etc.
4596
4597Mail has been designed with a very simple object oriented system that
4598really opens up the email messages you are parsing, if you know what you
4599are doing, you can fiddle with every last bit of your email directly.")
4600 (home-page "https://github.com/mikel/mail")
4601 (license license:expat)))
9b4c8e1b
BW
4602
4603(define-public ruby-code-statistics
4604 (package
4605 (name "ruby-code-statistics")
4606 (version "0.2.13")
4607 (source
4608 (origin
4609 (method url-fetch)
4610 (uri (rubygems-uri "code_statistics" version))
4611 (sha256
4612 (base32
4613 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
4614 (build-system ruby-build-system)
4615 (arguments
4616 `(#:tests? #f)) ; Not all test code is included in gem.
4617 (synopsis "Port of the rails 'rake stats' method")
4618 (description
4619 "This gem is a port of the rails 'rake stats' method so it can be made
4620more robust and work for non rails projects.")
4621 (home-page "http://github.com/danmayer/code_statistics")
4622 (license license:expat)))
f90c25c1
CL
4623
4624(define-public ruby-rubypants
4625 (package
4626 (name "ruby-rubypants")
4627 (version "0.6.0")
4628 (source (origin
4629 (method url-fetch)
4630 (uri (rubygems-uri "rubypants" version))
4631 (sha256
4632 (base32
4633 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
4634 (build-system ruby-build-system)
4635 (arguments
4636 '(#:tests? #f)) ; need Codecov
4637 (synopsis "Port of the smart-quotes library SmartyPants")
4638 (description
4639 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
4640original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
4641and BBEdit that easily translates plain ASCII punctuation characters into
4642smart typographic punctuation HTML entities.")
4643 (home-page "https://github.com/jmcnevin/rubypants")
4644 (license license:bsd-2)))
beb34835
CL
4645
4646(define-public ruby-org-ruby
4647 (package
4648 (name "ruby-org-ruby")
4649 (version "0.9.12")
4650 (source (origin
4651 (method url-fetch)
4652 (uri (rubygems-uri "org-ruby" version))
4653 (sha256
4654 (base32
4655 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
4656 (build-system ruby-build-system)
4657 (arguments
4658 '(#:tests? #f)) ; no rakefile
4659 (propagated-inputs
4660 `(("ruby-rubypants" ,ruby-rubypants)))
4661 (synopsis "Org-mode parser written in Ruby")
4662 (description
4663 "Org-ruby is an org-mode parser written in Ruby. The most significant
4664thing this library does today is convert org-mode files to HTML or Textile or
4665Markdown.")
4666 (home-page "https://github.com/wallyqs/org-ruby")
4667 (license license:expat)))