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