gnu: Add ruby-minitest-4.
[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>
b416aadf 3;;; Copyright © 2014, 2015 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>
64c318f2 7;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
6ef8c59a
PP
8;;;
9;;; This file is part of GNU Guix.
10;;;
11;;; GNU Guix is free software; you can redistribute it and/or modify it
12;;; under the terms of the GNU General Public License as published by
13;;; the Free Software Foundation; either version 3 of the License, or (at
14;;; your option) any later version.
15;;;
16;;; GNU Guix is distributed in the hope that it will be useful, but
17;;; WITHOUT ANY WARRANTY; without even the implied warranty of
18;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19;;; GNU General Public License for more details.
20;;;
21;;; You should have received a copy of the GNU General Public License
22;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
23
24(define-module (gnu packages ruby)
25 #:use-module ((guix licenses) #:prefix license:)
26 #:use-module (gnu packages)
27 #:use-module (gnu packages compression)
4a9e0585 28 #:use-module (gnu packages databases)
6ef8c59a 29 #:use-module (gnu packages readline)
6ef8c59a 30 #:use-module (gnu packages autotools)
ad79eb55 31 #:use-module (gnu packages java)
6ef8c59a 32 #:use-module (gnu packages libffi)
cc2b77df 33 #:use-module (gnu packages tls)
66e20863 34 #:use-module (gnu packages version-control)
6ef8c59a
PP
35 #:use-module (guix packages)
36 #:use-module (guix download)
bda0c139 37 #:use-module (guix git-download)
6ef8c59a 38 #:use-module (guix utils)
acf735f2 39 #:use-module (guix build-system gnu)
e920bfca 40 #:use-module (gnu packages xml)
acf735f2 41 #:use-module (guix build-system ruby))
6ef8c59a
PP
42
43(define-public ruby
44 (package
45 (name "ruby")
686b1bab 46 (version "2.2.3")
6ef8c59a
PP
47 (source
48 (origin
49 (method url-fetch)
6becfdff
MW
50 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
51 (version-major+minor version)
12d39eb5 52 "/ruby-" version ".tar.xz"))
6ef8c59a
PP
53 (sha256
54 (base32
686b1bab 55 "19x8gs67klgc3ag815jpin83jn2nv1akgjcgayd6v3h1xplr1v66"))))
6ef8c59a
PP
56 (build-system gnu-build-system)
57 (arguments
58 `(#:test-target "test"
59 #:parallel-tests? #f
60 #:phases
12d39eb5
DT
61 (alist-cons-before
62 'configure 'replace-bin-sh
6ef8c59a 63 (lambda _
12d39eb5
DT
64 (substitute* '("Makefile.in"
65 "ext/pty/pty.c"
66 "io.c"
67 "lib/mkmf.rb"
68 "process.c"
69 "test/rubygems/test_gem_ext_configure_builder.rb"
70 "test/rdoc/test_rdoc_parser.rb"
71 "test/ruby/test_rubyoptions.rb"
72 "test/ruby/test_process.rb"
73 "test/ruby/test_system.rb"
74 "tool/rbinstall.rb")
75 (("/bin/sh") (which "sh"))))
76 %standard-phases)))
6ef8c59a
PP
77 (inputs
78 `(("readline" ,readline)
6ef8c59a
PP
79 ("openssl" ,openssl)
80 ("libffi" ,libffi)
81 ("gdbm" ,gdbm)
82 ("zlib" ,zlib)))
83 (native-search-paths
84 (list (search-path-specification
85 (variable "GEM_PATH")
af070955
LC
86 (files (list (string-append "lib/ruby/gems/"
87 (version-major+minor version)
88 ".0"))))))
6becfdff 89 (synopsis "Programming language interpreter")
6ef8c59a
PP
90 (description "Ruby is a dynamic object-oriented programming language with
91a focus on simplicity and productivity.")
92 (home-page "https://ruby-lang.org")
93 (license license:ruby)))
94
9942e803
PP
95(define-public ruby-2.1
96 (package (inherit ruby)
97 (version "2.1.6")
98 (source
99 (origin
100 (method url-fetch)
101 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
102 (version-major+minor version)
103 "/ruby-" version ".tar.bz2"))
104 (sha256
105 (base32
106 "1sbcmbhadcxk0509svwxbm2vvgmpf3xjxr1397bgp9x46nz36lkv"))))
107 (arguments
108 `(#:test-target "test"
109 #:parallel-tests? #f
110 #:phases
111 (alist-cons-before
112 'configure 'replace-bin-sh
113 (lambda _
114 (substitute* '("Makefile.in"
115 "ext/pty/pty.c"
116 "io.c"
117 "lib/mkmf.rb"
118 "process.c")
119 (("/bin/sh") (which "sh"))))
120 %standard-phases)))
121 (native-search-paths
122 (list (search-path-specification
123 (variable "GEM_PATH")
124 (files (list (string-append "lib/ruby/gems/"
125 (version-major+minor version)
126 ".0"))))))))
127
218ee89b
PP
128(define-public ruby-1.8
129 (package (inherit ruby)
218ee89b
PP
130 (version "1.8.7-p374")
131 (source
132 (origin
133 (method url-fetch)
6becfdff
MW
134 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
135 (version-major+minor version)
136 "/ruby-" version ".tar.bz2"))
218ee89b
PP
137 (sha256
138 (base32
139 "1qq7khilwkayrhwmzlxk83scrmiqfi7lgsn4c63znyvz2c1lgqxl"))))
140 (native-search-paths '())
141 (arguments
142 `(#:test-target "test"
143 #:parallel-tests? #f
144 #:phases
145 (alist-cons-before
146 'configure 'replace-bin-sh
147 (lambda _
148 (substitute* '("Makefile.in"
149 "ext/pty/pty.c"
150 "io.c"
151 "lib/mkmf.rb"
152 "process.c")
153 (("/bin/sh") (which "sh"))))
154 %standard-phases)))))
155
bda0c139
DT
156(define-public ruby-hoe
157 (package
158 (name "ruby-hoe")
159 (version "3.13.1")
160 (source (origin
e83c6d00
DT
161 (method url-fetch)
162 (uri (rubygems-uri "hoe" version))
bda0c139
DT
163 (sha256
164 (base32
e83c6d00 165 "1mac13krdrasn9819dd65xj27kklfy0xdbj3p6s2ij4vlcb46h8q"))) )
bda0c139 166 (build-system ruby-build-system)
bda0c139
DT
167 (synopsis "Ruby project management helper")
168 (description
169 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
170maintain, and release projects and includes a dynamic plug-in system allowing
171for easy extensibility. Hoe ships with plug-ins for all the usual project
172tasks including rdoc generation, testing, packaging, deployment, and
173announcement.")
174 (home-page "http://www.zenspider.com/projects/hoe.html")
175 (license license:expat)))
176
022170dc
PP
177(define-public ruby-rake-compiler
178 (package
179 (name "ruby-rake-compiler")
180 (version "0.9.5")
181 (source (origin
182 (method url-fetch)
e83c6d00 183 (uri (rubygems-uri "rake-compiler" version))
022170dc
PP
184 (sha256
185 (base32
e83c6d00 186 "1k8im2vzj849xdgjk6wafspkiwwapqwm738majchb4dnhnsk64cx"))))
022170dc
PP
187 (build-system ruby-build-system)
188 (arguments
e83c6d00 189 '(#:tests? #f)) ; needs cucumber
022170dc 190 (synopsis "Building and packaging helper for Ruby native extensions")
e881752c 191 (description "Rake-compiler provides a framework for building and
022170dc
PP
192packaging native C and Java extensions in Ruby.")
193 (home-page "https://github.com/rake-compiler/rake-compiler")
194 (license license:expat)))
195
acf735f2
DT
196(define-public ruby-i18n
197 (package
198 (name "ruby-i18n")
0bfdfd37 199 (version "0.7.0")
acf735f2
DT
200 (source (origin
201 (method url-fetch)
e83c6d00 202 (uri (rubygems-uri "i18n" version))
acf735f2
DT
203 (sha256
204 (base32
0bfdfd37 205 "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758"))))
acf735f2
DT
206 (build-system ruby-build-system)
207 (arguments
0bfdfd37 208 '(#:tests? #f)) ; no tests
acf735f2
DT
209 (synopsis "Internationalization library for Ruby")
210 (description "Ruby i18n is an internationalization and localization
211solution for Ruby programs. It features translation and localization,
212interpolation of values to translations, pluralization, customizable
213transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
214translation data, custom key/scope separator, custom exception handlers, and
215an extensible architecture with a swappable backend.")
216 (home-page "http://github.com/svenfuchs/i18n")
217 (license license:expat)))
eb0c2dd6
DT
218
219;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
220;; dependencies use RSpec for their test suites! To avoid these circular
221;; dependencies, we disable tests for all of the RSpec-related packages.
222(define ruby-rspec-support
223 (package
224 (name "ruby-rspec-support")
225 (version "3.2.2")
226 (source (origin
227 (method url-fetch)
e83c6d00 228 (uri (rubygems-uri "rspec-support" version))
eb0c2dd6
DT
229 (sha256
230 (base32
e83c6d00 231 "194zry5195ls2hni7r9824vqb5d3qfg4jb15fgj8glfy0rvw3zxl"))))
eb0c2dd6
DT
232 (build-system ruby-build-system)
233 (arguments
234 '(#:tests? #f)) ; avoid dependency cycles
235 (synopsis "RSpec support library")
236 (description "Support utilities for RSpec gems.")
237 (home-page "https://github.com/rspec/rspec-support")
238 (license license:expat)))
239
240(define-public ruby-rspec-core
241 (package
242 (name "ruby-rspec-core")
243 (version "3.2.3")
244 (source (origin
245 (method url-fetch)
e83c6d00 246 (uri (rubygems-uri "rspec-core" version))
eb0c2dd6
DT
247 (sha256
248 (base32
e83c6d00 249 "0k2471iw30gc2cvv67damrx666pmsvx8l0ahk3hm20dhfnmcmpvv"))))
eb0c2dd6
DT
250 (build-system ruby-build-system)
251 (arguments
252 '(#:tests? #f)) ; avoid dependency cycles
253 (propagated-inputs
254 `(("ruby-rspec-support" ,ruby-rspec-support)))
255 (synopsis "RSpec core library")
256 (description "Rspec-core provides the RSpec test runner and example
257groups.")
258 (home-page "https://github.com/rspec/rspec-core")
259 (license license:expat)))
e6962009 260
64c318f2
BW
261(define-public ruby-rspec-core-2
262 (package (inherit ruby-rspec-core)
263 (version "2.14.8")
264 (source (origin
265 (method url-fetch)
266 (uri (rubygems-uri "rspec-core" version))
267 (sha256
268 (base32
269 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
270 (propagated-inputs `())))
271
20c05ea9 272(define-public ruby-diff-lcs
e6962009
DT
273 (package
274 (name "ruby-diff-lcs")
275 (version "1.2.5")
276 (source (origin
277 (method url-fetch)
e83c6d00 278 (uri (rubygems-uri "diff-lcs" version))
e6962009
DT
279 (sha256
280 (base32
e83c6d00 281 "1vf9civd41bnqi6brr5d9jifdw73j9khc6fkhfl1f8r9cpkdvlx1"))))
e6962009
DT
282 (build-system ruby-build-system)
283 (arguments
284 '(#:tests? #f)) ; avoid dependency cycles
285 (synopsis "Compute the difference between two Enumerable sequences")
286 (description "Diff::LCS computes the difference between two Enumerable
287sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
288It includes utilities to create a simple HTML diff output format and a
289standard diff-like tool.")
290 (home-page "https://github.com/halostatue/diff-lcs")
291 (license license:expat)))
292
293(define-public ruby-rspec-expectations
294 (package
295 (name "ruby-rspec-expectations")
296 (version "3.2.1")
297 (source (origin
298 (method url-fetch)
e83c6d00 299 (uri (rubygems-uri "rspec-expectations" version))
e6962009
DT
300 (sha256
301 (base32
e83c6d00 302 "01kmchabgpdcaqdsqg8r0g5gy385xhp1k1jsds3w264ypin17n14"))))
e6962009
DT
303 (build-system ruby-build-system)
304 (arguments
305 '(#:tests? #f)) ; avoid dependency cycles
306 (propagated-inputs
307 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 308 ("ruby-diff-lcs" ,ruby-diff-lcs)))
e881752c 309 (synopsis "RSpec expectations library")
e6962009
DT
310 (description "Rspec-expectations provides a simple API to express expected
311outcomes of a code example.")
312 (home-page "https://github.com/rspec/rspec-expectations")
313 (license license:expat)))
4f2a0cac 314
fb157f25
BW
315(define-public ruby-rspec-expectations-2
316 (package (inherit ruby-rspec-expectations)
317 (version "2.14.5")
318 (source (origin
319 (method url-fetch)
320 (uri (rubygems-uri "rspec-expectations" version))
321 (sha256
322 (base32
323 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
324 (propagated-inputs
325 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
326
4f2a0cac
DT
327(define-public ruby-rspec-mocks
328 (package
329 (name "ruby-rspec-mocks")
330 (version "3.2.1")
331 (source (origin
332 (method url-fetch)
e83c6d00 333 (uri (rubygems-uri "rspec-mocks" version))
4f2a0cac
DT
334 (sha256
335 (base32
e83c6d00 336 "09yig1lwgxl8fsns71z3xhv7wkg7zvagydh37pvaqpw92dz55jv2"))))
4f2a0cac
DT
337 (build-system ruby-build-system)
338 (arguments
339 '(#:tests? #f)) ; avoid dependency cycles
340 (propagated-inputs
341 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 342 ("ruby-diff-lcs" ,ruby-diff-lcs)))
4f2a0cac
DT
343 (synopsis "RSpec stubbing and mocking library")
344 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
345support for stubbing and mocking.")
346 (home-page "https://github.com/rspec/rspec-mocks")
347 (license license:expat)))
d4fde1f2 348
6da9adeb
BW
349(define-public ruby-rspec-mocks-2
350 (package (inherit ruby-rspec-mocks)
351 (version "2.14.6")
352 (source (origin
353 (method url-fetch)
354 (uri (rubygems-uri "rspec-mocks" version))
355 (sha256
356 (base32
357 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
358 (propagated-inputs
359 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
360
d4fde1f2
DT
361(define-public ruby-rspec
362 (package
363 (name "ruby-rspec")
364 (version "3.2.0")
365 (source (origin
366 (method url-fetch)
e83c6d00 367 (uri (rubygems-uri "rspec" version))
d4fde1f2
DT
368 (sha256
369 (base32
e83c6d00 370 "0lkz01j4yxcwb3g5w6r1l9khnyw3sxib4rrh4npd2pxh390fcc4f"))))
d4fde1f2
DT
371 (build-system ruby-build-system)
372 (arguments
373 '(#:tests? #f)) ; avoid dependency cycles
374 (propagated-inputs
375 `(("ruby-rspec-core" ,ruby-rspec-core)
376 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
377 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
378 (synopsis "Behavior-driven development framework for Ruby")
379 (description "RSpec is a behavior-driven development (BDD) framework for
380Ruby. This meta-package includes the RSpec test runner, along with the
381expectations and mocks frameworks.")
382 (home-page "http://rspec.info/")
383 (license license:expat)))
2cbc105b 384
5ac984b3
BW
385(define-public ruby-rspec-2
386 (package (inherit ruby-rspec)
387 (version "2.14.1")
388 (source (origin
389 (method url-fetch)
390 (uri (rubygems-uri "rspec" version))
391 (sha256
392 (base32
393 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
394 (propagated-inputs
395 `(("ruby-rspec-core" ,ruby-rspec-core-2)
396 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
397 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
398
2cbc105b
DT
399;; Bundler is yet another source of circular dependencies, so we must disable
400;; its test suite as well.
401(define-public bundler
402 (package
403 (name "bundler")
38b327a9 404 (version "1.10.6")
2cbc105b
DT
405 (source (origin
406 (method url-fetch)
e83c6d00 407 (uri (rubygems-uri "bundler" version))
2cbc105b
DT
408 (sha256
409 (base32
38b327a9 410 "1vlzfq0bkkj4jyq6av0y55mh5nj5n0f3mfbmmifwgkh44g8k6agv"))))
2cbc105b
DT
411 (build-system ruby-build-system)
412 (arguments
413 '(#:tests? #f)) ; avoid dependency cycles
414 (synopsis "Ruby gem bundler")
415 (description "Bundler automatically downloads and installs a list of gems
416specified in a \"Gemfile\", as well as their dependencies.")
417 (home-page "http://bundler.io/")
418 (license license:expat)))
98b87b82 419
cf36174f
RW
420(define-public ruby-builder
421 (package
422 (name "ruby-builder")
423 (version "3.2.2")
424 (source (origin
425 (method url-fetch)
426 (uri (rubygems-uri "builder" version))
427 (sha256
428 (base32
429 "14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2"))))
430 (build-system ruby-build-system)
431 (arguments
432 `(#:phases
433 (modify-phases %standard-phases
434 (add-after 'unpack 'do-not-use-rvm
435 (lambda _
436 (substitute* "rakelib/tags.rake"
437 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
438 #t)))))
439 (synopsis "Ruby library to create structured data")
440 (description "Builder provides a number of builder objects that make it
441easy to create structured data. Currently the following builder objects are
442supported: XML Markup and XML Events.")
443 (home-page "https://github.com/jimweirich/builder")
444 (license license:expat)))
445
ad79eb55
RW
446(define-public ruby-rjb
447 (package
448 (name "ruby-rjb")
449 (version "1.5.3")
450 (source (origin
451 (method url-fetch)
452 (uri (rubygems-uri "rjb" version))
453 (sha256
454 (base32
455 "0gzs92dagk981s4vrymnqg0vll783b9k564j0cdgp167nc5a2zg4"))))
456 (build-system ruby-build-system)
457 (arguments
458 `(#:tests? #f ; no rakefile
459 #:phases
460 (modify-phases %standard-phases
461 (add-before 'build 'set-java-home
462 (lambda* (#:key inputs #:allow-other-keys)
463 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
464 #t)))))
465 (native-inputs
466 `(("jdk" ,icedtea7 "jdk")))
467 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
468 (description "RJB is a bridge program that connects Ruby and Java via the
469Java Native Interface.")
470 (home-page "http://www.artonx.org/collabo/backyard/?RubyJavaBridge")
471 (license license:lgpl2.1+)))
472
f9ae2c06
PP
473(define-public ruby-log4r
474 (package
475 (name "ruby-log4r")
476 (version "1.1.10")
477 (source
478 (origin
479 (method url-fetch)
480 (uri (rubygems-uri "log4r" version))
481 (sha256
482 (base32
483 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
484 (build-system ruby-build-system)
485 (arguments
486 '(#:tests? #f)) ; no Rakefile in gem
487 (synopsis "Flexible logging library for Ruby")
488 (description "Comprehensive and flexible logging library written
489in Ruby for use in Ruby programs. It features a hierarchical logging
490system of any number of levels, custom level names, logger
491inheritance, multiple output destinations per log event, execution
492tracing, custom formatting, thread safteyness, XML and YAML
493configuration, and more.")
494 (home-page "http://log4r.rubyforge.org/")
495 (license license:bsd-3)))
496
71a03c29
RW
497(define-public ruby-atoulme-antwrap
498 (package
499 (name "ruby-atoulme-antwrap")
500 (version "0.7.5")
501 (source (origin
502 (method url-fetch)
503 (uri (rubygems-uri "atoulme-Antwrap" version))
504 (sha256
505 (base32
506 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
507 (build-system ruby-build-system)
508 ;; Test data required for most of the tests are not included.
509 (arguments `(#:tests? #f))
510 (native-inputs
511 `(("ruby-hoe" ,ruby-hoe)))
512 (inputs
513 `(("ruby-rjb" ,ruby-rjb)))
514 (synopsis "Ruby wrapper for the Ant build tool")
515 (description "Antwrap is a Ruby module that wraps the Apache Ant build
516tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
517script.")
518 (home-page "http://rubyforge.org/projects/antwrap/")
519 (license license:expat)))
520
fe1ddad5
RW
521(define-public ruby-atoulme-saikuro
522 (package
523 (name "ruby-atoulme-saikuro")
524 (version "1.2.1")
525 (source (origin
526 (method url-fetch)
527 (uri (rubygems-uri "atoulme-Saikuro" version))
528 (sha256
529 (base32
530 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
531 (build-system ruby-build-system)
532 ;; FIXME: There are no unit tests. The tests are demonstrations of the
533 ;; "saikuro" tool.
534 (arguments `(#:tests? #f))
535 (synopsis "Cyclomatic complexity analyzer")
536 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
537given Ruby source code Saikuro will generate a report listing the cyclomatic
538complexity of each method found. In addition, Saikuro counts the number of
539lines per method and can generate a listing of the number of tokens on each
540line of code.")
541 (home-page "http://www.github.com/atoulme/Saikuro")
542 ;; File headers contain the BSD-3 license and the README.rdoc says that
543 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
544 ;; of the Expat license.
545 (license license:bsd-3)))
546
2f9e0b68
RW
547(define-public ruby-ci-reporter
548 (package
549 (name "ruby-ci-reporter")
550 (version "2.0.0")
551 (source (origin
552 (method url-fetch)
553 (uri (rubygems-uri "ci_reporter" version))
554 (sha256
555 (base32
556 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
557 (build-system ruby-build-system)
558 (arguments
559 `(#:test-target "rspec"))
560 (propagated-inputs
561 `(("ruby-builder" ,ruby-builder)))
562 (native-inputs
563 `(("bundler" ,bundler)
564 ("ruby-rspec" ,ruby-rspec)))
565 (synopsis "Generate XML reports of runs test")
566 (description
567 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
568you to generate XML reports of your test runs. The resulting files can be
569read by a continuous integration system that understands Ant's JUnit report
570format.")
571 (home-page "https://github.com/nicksieger/ci_reporter")
572 (license license:expat)))
573
cc53e630
RW
574(define-public ruby-orderedhash
575 (package
576 (name "ruby-orderedhash")
577 (version "0.0.6")
578 (source (origin
579 (method url-fetch)
580 (uri (rubygems-uri "orderedhash" version))
581 (sha256
582 (base32
583 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
584 (build-system ruby-build-system)
585 (arguments
586 '(#:tests? #f)) ; no test suite
587 (synopsis "Ruby library providing an order-preserving hash")
588 (description "Orderedhash is a Ruby library providing a hash
589implementation that preserves the order of items and features some array-like
590extensions.")
591 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
592 (license license:public-domain)))
593
28c5d42d
PP
594(define-public ruby-libxml
595 (package
596 (name "ruby-libxml")
597 (version "2.8.0")
598 (source
599 (origin
600 (method url-fetch)
601 (uri (rubygems-uri "libxml-ruby" version))
602 (sha256
603 (base32
604 "1dhjqp4r9vkdp00l6h1cj8qfndzxlhlxk6b9g0w4v55gz857ilhb"))))
605 (build-system ruby-build-system)
606 (inputs
607 `(("zlib" ,zlib)
608 ("libxml2" ,libxml2)))
609 (arguments
610 '(#:tests? #f ; test suite hangs for unknown reason
611 #:gem-flags
612 (list "--"
613 (string-append "--with-xml2-include="
614 (assoc-ref %build-inputs "libxml2")
615 "/include/libxml2" ))))
616 (synopsis "Ruby bindings for GNOME Libxml2")
617 (description "The Libxml-Ruby project provides Ruby language bindings for
618the GNOME Libxml2 XML toolkit.")
619 (home-page "http://xml4r.github.com/libxml-ruby")
620 (license license:expat)))
621
8b9bde07
RW
622(define-public ruby-xml-simple
623 (package
624 (name "ruby-xml-simple")
625 (version "1.1.5")
626 (source (origin
627 (method url-fetch)
628 (uri (rubygems-uri "xml-simple" version))
629 (sha256
630 (base32
631 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
632 (build-system ruby-build-system)
633 (arguments
634 '(#:tests? #f)) ; no test suite
635 (synopsis "Simple Ruby library for XML processing")
636 (description "This library provides a simple API for XML processing in
637Ruby.")
638 (home-page "https://github.com/maik/xml-simple")
639 (license license:ruby)))
640
2cb3ab48
RW
641(define-public ruby-thor
642 (package
643 (name "ruby-thor")
644 (version "0.19.1")
645 (source (origin
646 (method url-fetch)
647 (uri (rubygems-uri "thor" version))
648 (sha256
649 (base32
650 "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z"))))
651 (build-system ruby-build-system)
652 (arguments
653 '(#:tests? #f)) ; no test suite
654 (native-inputs
655 `(("bundler" ,bundler)))
656 (synopsis "Ruby toolkit for building command-line interfaces")
657 (description "Thor is a toolkit for building powerful command-line
658interfaces.")
659 (home-page "http://whatisthor.com/")
660 (license license:expat)))
661
ec79018e
RW
662(define-public ruby-lumberjack
663 (package
664 (name "ruby-lumberjack")
665 (version "1.0.9")
666 (source (origin
667 (method url-fetch)
668 (uri (rubygems-uri "lumberjack" version))
669 (sha256
670 (base32
671 "162frm2bwy58pj8ccsdqa4a6i0csrhb9h5l3inhkl1ivgfc8814l"))))
672 (build-system ruby-build-system)
673 (native-inputs
674 `(("ruby-rspec" ,ruby-rspec)))
675 (synopsis "Logging utility library for Ruby")
676 (description "Lumberjack is a simple logging utility that can be a drop in
677replacement for Logger or ActiveSupport::BufferedLogger. It provides support
678for automatically rolling log files even with multiple processes writing the
679same log file.")
680 (home-page "http://github.com/bdurand/lumberjack")
681 (license license:expat)))
682
70b4cf38
RW
683(define-public ruby-nenv
684 (package
685 (name "ruby-nenv")
686 (version "0.2.0")
687 (source (origin
688 (method url-fetch)
689 (uri (rubygems-uri "nenv" version))
690 (sha256
691 (base32
692 "152wxwri0afwgnxdf93gi6wjl9rr5z7vwp8ln0gpa3rddbfc27s6"))))
693 (build-system ruby-build-system)
694 (arguments
695 `(#:tests? #f)) ; no tests included
696 (native-inputs
697 `(("ruby-rspec" ,ruby-rspec)
698 ("bundler" ,bundler)))
699 (synopsis "Ruby interface for modifying the environment")
700 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
701and inspect the environment.")
702 (home-page "https://github.com/e2/nenv")
703 (license license:expat)))
704
8d9e9f28
RW
705(define-public ruby-permutation
706 (package
707 (name "ruby-permutation")
708 (version "0.1.8")
709 (source (origin
710 (method url-fetch)
711 (uri (rubygems-uri "permutation" version))
712 (sha256
713 (base32
714 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
715 (build-system ruby-build-system)
716 (arguments
717 `(#:phases
718 (modify-phases %standard-phases
719 (add-after 'unpack 'fix-rakefile
720 (lambda _
721 (substitute* "Rakefile"
722 (("require 'rake/gempackagetask'")
723 "require 'rubygems/package_task'")
724 (("include Config") ""))
725 #t))
726 (replace 'check
727 (lambda _
728 (zero? (system* "ruby" "-Ilib" "test/test.rb")))))))
729 (synopsis "Library to perform operations with sequence permutations")
730 (description "This package provides a Ruby library to perform different
731operations with permutations of sequences, such as strings and arrays.")
732 (home-page "http://flori.github.io/permutation")
733 (license license:gpl2))) ; GPL 2 only
734
c5d14d42
RW
735(define-public ruby-shellany
736 (package
737 (name "ruby-shellany")
738 (version "0.0.1")
739 (source (origin
740 (method url-fetch)
741 (uri (rubygems-uri "shellany" version))
742 (sha256
743 (base32
744 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
745 (build-system ruby-build-system)
746 (arguments
747 `(#:test-target "default"
748 #:phases
749 (modify-phases %standard-phases
750 (add-after 'unpack 'fix-version-test
751 (lambda _
752 (substitute* "spec/shellany_spec.rb"
753 (("^RSpec") "require \"shellany\"\nRSpec"))
754 #t)))))
755 (native-inputs
756 `(("ruby-rspec" ,ruby-rspec)
757 ("ruby-nenv" ,ruby-nenv)
758 ("bundler" ,bundler)))
759 (synopsis "Capture command output")
760 (description "Shellany is a Ruby library providing functions to capture
761the output produced by running shell commands.")
762 (home-page "https://rubygems.org/gems/shellany")
763 (license license:expat)))
764
d152162f
RW
765(define-public ruby-notiffany
766 (package
767 (name "ruby-notiffany")
768 (version "0.0.7")
769 (source (origin
770 (method url-fetch)
771 (uri (rubygems-uri "notiffany" version))
772 (sha256
773 (base32
774 "1v5x1w59qq85r6dpv3y9ga34dfd7hka1qxyiykaw7gm0i6kggbhi"))))
775 (build-system ruby-build-system)
776 ;; Tests are not included in the gem.
777 (arguments `(#:tests? #f))
778 (propagated-inputs
779 `(("ruby-shellany" ,ruby-shellany)
780 ("ruby-nenv" ,ruby-nenv)))
781 (native-inputs
782 `(("bundler" ,bundler)))
783 (synopsis "Wrapper libray for notification libraries")
784 (description "Notiffany is a Ruby wrapper libray for notification
785libraries such as Libnotify.")
786 (home-page "https://github.com/guard/notiffany")
787 (license license:expat)))
788
8528365b
RW
789(define-public ruby-formatador
790 (package
791 (name "ruby-formatador")
792 (version "0.2.5")
793 (source (origin
794 (method url-fetch)
795 (uri (rubygems-uri "formatador" version))
796 (sha256
797 (base32
798 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
799 (build-system ruby-build-system)
800 ;; Circular dependency: Tests require ruby-shindo, which requires
801 ;; ruby-formatador at runtime.
802 (arguments `(#:tests? #f))
803 (synopsis "Ruby library to format text on stdout")
804 (description "Formatador is a Ruby library to format text printed to the
805standard output stream.")
806 (home-page "http://github.com/geemus/formatador")
807 (license license:expat)))
808
7ac4610f
RW
809(define-public ruby-shindo
810 (package
811 (name "ruby-shindo")
812 (version "0.3.8")
813 (source (origin
814 (method url-fetch)
815 (uri (rubygems-uri "shindo" version))
816 (sha256
817 (base32
818 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
819 (build-system ruby-build-system)
820 (arguments
821 `(#:test-target "shindo_tests"
822 #:phases
823 (modify-phases %standard-phases
824 (add-after 'unpack 'fix-tests
825 (lambda _
826 (substitute* "Rakefile"
827 (("system \"shindo") "system \"./bin/shindo")
828 ;; This test doesn't work, so we disable it.
829 (("fail \"The build_error test should fail") "#"))
830 #t)))))
831 (propagated-inputs
832 `(("ruby-formatador" ,ruby-formatador)))
833 (synopsis "Simple depth first Ruby testing")
834 (description "Shindo is a simple depth first testing library for Ruby.")
835 (home-page "https://github.com/geemus/shindo")
836 (license license:expat)))
837
f13636f2
RW
838(define-public ruby-rubygems-tasks
839 (package
840 (name "ruby-rubygems-tasks")
841 (version "0.2.4")
842 (source (origin
843 (method url-fetch)
844 (uri (rubygems-uri "rubygems-tasks" version))
845 (sha256
846 (base32
847 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
848 (build-system ruby-build-system)
849 ;; Tests need Internet access.
850 (arguments `(#:tests? #f))
851 (native-inputs
852 `(("ruby-rspec" ,ruby-rspec)
853 ("ruby-yard" ,ruby-yard)))
854 (synopsis "Rake tasks for managing and releasing Ruby Gems")
855 (description "Rubygems-task provides Rake tasks for managing and releasing
856Ruby Gems.")
857 (home-page "https://github.com/postmodern/rubygems-tasks")
858 (license license:expat)))
859
2417fce3
RW
860(define-public ruby-ffi
861 (package
862 (name "ruby-ffi")
863 (version "1.9.10")
864 (source (origin
865 (method url-fetch)
866 (uri (rubygems-uri "ffi" version))
867 (sha256
868 (base32
869 "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj"))))
870 (build-system ruby-build-system)
871 ;; FIXME: Before running tests the build system attempts to build libffi
872 ;; from sources.
873 (arguments `(#:tests? #f))
874 (native-inputs
875 `(("ruby-rake-compiler" ,ruby-rake-compiler)
876 ("ruby-rspec" ,ruby-rspec)
877 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
878 (inputs
879 `(("libffi" ,libffi)))
880 (synopsis "Ruby foreign function interface library")
881 (description "Ruby-FFI is a Ruby extension for programmatically loading
882dynamic libraries, binding functions within them, and calling those functions
883from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby
884and JRuby.")
885 (home-page "http://wiki.github.com/ffi/ffi")
886 (license license:bsd-3)))
887
58b59742
RW
888(define-public ruby-simplecov-html
889 (package
890 (name "ruby-simplecov-html")
891 (version "0.10.0")
892 (source (origin
893 (method url-fetch)
894 (uri (rubygems-uri "simplecov-html" version))
895 (sha256
896 (base32
8b749cf3 897 "1qni8g0xxglkx25w54qcfbi4wjkpvmb28cb7rj5zk3iqynjcdrqf"))))
58b59742 898 (build-system ruby-build-system)
8b749cf3 899 (arguments `(#:tests? #f)) ; there are no tests
58b59742
RW
900 (native-inputs
901 `(("bundler" ,bundler)))
902 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
903 (description "This package provides the default HTML formatter for
904the SimpleCov code coverage tool for Ruby version 1.9 and above.")
905 (home-page "https://github.com/colszowka/simplecov-html")
906 (license license:expat)))
907
a84fa2ad
RW
908(define-public ruby-simplecov
909 (package
910 (name "ruby-simplecov")
911 (version "0.10.0")
912 (source (origin
913 (method url-fetch)
914 (uri (rubygems-uri "simplecov" version))
915 (sha256
916 (base32
917 "1q2iq2vgrdvvla5y907gkmqx6ry2qvnvc7a90hlcbwgp1w0sv6z4"))))
918 (build-system ruby-build-system)
919 ;; Simplecov depends on rubocop for code style checking at build time.
920 ;; Rubocop needs simplecov at build time.
921 (arguments `(#:tests? #f))
922 (propagated-inputs
923 `(("ruby-json" ,ruby-json)
924 ("ruby-docile" ,ruby-docile)
925 ("ruby-simplecov-html" ,ruby-simplecov-html)))
926 (native-inputs
927 `(("bundler" ,bundler)))
928 (synopsis "Code coverage framework for Ruby")
929 (description "SimpleCov is a code coverage framework for Ruby with a
930powerful configuration library and automatic merging of coverage across test
931suites.")
932 (home-page "http://github.com/colszowka/simplecov")
933 (license license:expat)))
934
98b87b82
DT
935(define-public ruby-useragent
936 (package
937 (name "ruby-useragent")
938 (version "0.13.3")
939 (source (origin
940 (method url-fetch)
e83c6d00 941 (uri (rubygems-uri "useragent" version))
98b87b82
DT
942 (sha256
943 (base32
e83c6d00 944 "0kz7yyz7528bv4a2kfymvkcm8whqcddhmgaw1ksw1d90n30hhkpc"))))
98b87b82
DT
945 (build-system ruby-build-system)
946 (arguments
e83c6d00 947 '(#:tests? #f)) ; no test suite
98b87b82
DT
948 (synopsis "HTTP user agent parser for Ruby")
949 (description "UserAgent is a Ruby library that parses and compares HTTP
950User Agents.")
951 (home-page "https://github.com/gshutler/useragent")
952 (license license:expat)))
96086cc5
DT
953
954(define-public ruby-bacon
955 (package
956 (name "ruby-bacon")
e83c6d00 957 (version "1.2.0")
96086cc5
DT
958 (source (origin
959 (method url-fetch)
e83c6d00 960 (uri (rubygems-uri "bacon" version))
96086cc5
DT
961 (sha256
962 (base32
e83c6d00 963 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
96086cc5 964 (build-system ruby-build-system)
96086cc5
DT
965 (synopsis "Small RSpec clone")
966 (description "Bacon is a small RSpec clone providing all essential
967features.")
968 (home-page "https://github.com/chneukirchen/bacon")
969 (license license:expat)))
de59d316
DT
970
971(define-public ruby-arel
972 (package
973 (name "ruby-arel")
974 (version "6.0.0")
975 (source (origin
976 (method url-fetch)
e83c6d00 977 (uri (rubygems-uri "arel" version))
de59d316
DT
978 (sha256
979 (base32
e83c6d00 980 "18wnfnzr2i5p3fygsddjbi1cimws6823nbk8drxidmnj8jz7h0ar"))))
de59d316 981 (build-system ruby-build-system)
e83c6d00
DT
982 (arguments
983 '(#:tests? #f)) ; no test suite
de59d316
DT
984 (synopsis "SQL AST manager for Ruby")
985 (description "Arel is a SQL AST manager for Ruby. It simplifies the
986generation of complex SQL queries and adapts to various relational database
987implementations.")
988 (home-page "https://github.com/rails/arel")
989 (license license:expat)))
e259bdf0
DT
990
991(define-public ruby-connection-pool
992 (package
993 (name "ruby-connection-pool")
994 (version "2.2.0")
995 (source (origin
996 (method url-fetch)
e83c6d00 997 (uri (rubygems-uri "connection_pool" version))
e259bdf0
DT
998 (sha256
999 (base32
e83c6d00 1000 "1b2bb3k39ni5mzcnqlv9y4yjkbin20s7dkwzp0jw2jf1rmzcgrmy"))))
e259bdf0
DT
1001 (build-system ruby-build-system)
1002 (native-inputs
1003 `(("bundler" ,bundler)))
1004 (synopsis "Generic connection pool for Ruby")
1005 (description "Connection_pool provides a generic connection pooling
1006interface for Ruby programs.")
1007 (home-page "https://github.com/mperham/connection_pool")
1008 (license license:expat)))
4c0aeb44
DT
1009
1010(define-public ruby-net-http-persistent
1011 (package
1012 (name "ruby-net-http-persistent")
1013 (version "2.9.4")
1014 (source (origin
1015 (method url-fetch)
e83c6d00 1016 (uri (rubygems-uri "net-http-persistent" version))
4c0aeb44
DT
1017 (sha256
1018 (base32
e83c6d00 1019 "1y9fhaax0d9kkslyiqi1zys6cvpaqx9a0y0cywp24rpygwh4s9r4"))))
4c0aeb44 1020 (build-system ruby-build-system)
4c0aeb44
DT
1021 (native-inputs
1022 `(("ruby-connection-pool" ,ruby-connection-pool)
1023 ("ruby-hoe" ,ruby-hoe)))
1024 (synopsis "Persistent HTTP connection manager")
1025 (description "Net::HTTP::Persistent manages persistent HTTP connections
1026using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
1027 (home-page "https://github.com/drbrain/net-http-persistent")
1028 (license license:expat)))
afbbdf77 1029
f88bacaf
RW
1030(define-public ruby-power-assert
1031 (package
1032 (name "ruby-power-assert")
1033 (version "0.2.6")
1034 (source (origin
1035 (method url-fetch)
1036 (uri (rubygems-uri "power_assert" version))
1037 (sha256
1038 (base32
1039 "0gbj379jhnff8rbb6m3kzdm282szjz1a021xzxa38d1bnswj2jx3"))))
1040 (build-system ruby-build-system)
1041 (native-inputs
1042 `(("bundler" ,bundler)))
1043 (synopsis "Assert library with descriptive assertion messages")
1044 (description "Power-assert is an assertion library providing descriptive
1045assertion messages for tests.")
1046 (home-page "https://github.com/k-tsj/power_assert")
1047 (license (list license:bsd-2 license:ruby))))
1048
347eb21e
RW
1049(define-public ruby-locale
1050 (package
1051 (name "ruby-locale")
1052 (version "2.1.2")
1053 (source (origin
1054 (method url-fetch)
1055 (uri (rubygems-uri "locale" version))
1056 (sha256
1057 (base32
1058 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
1059 (build-system ruby-build-system)
1060 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1061 ;; which needs ruby-gettext, which needs ruby-locale. To break the
1062 ;; dependency cycle we disable tests.
1063 (arguments `(#:tests? #f))
1064 (native-inputs
1065 `(("bundler" ,bundler)
1066 ("ruby-yard" ,ruby-yard)))
1067 (synopsis "Ruby library providing basic localization APIs")
1068 (description
1069 "Ruby-Locale is the pure ruby library which provides basic APIs for
1070localization.")
1071 (home-page "https://github.com/ruby-gettext/locale")
1072 (license (list license:lgpl3+ license:ruby))))
1073
e2333ea3
RW
1074(define-public ruby-text
1075 (package
1076 (name "ruby-text")
1077 (version "1.3.1")
1078 (source (origin
1079 (method url-fetch)
1080 (uri (rubygems-uri "text" version))
1081 (sha256
1082 (base32
1083 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
1084 (build-system ruby-build-system)
1085 (synopsis "Collection of text algorithms for Ruby")
1086 (description
1087 "This package provides a collection of text algorithms: Levenshtein,
1088Soundex, Metaphone, Double Metaphone, Porter Stemming.")
1089 (home-page "http://github.com/threedaymonk/text")
1090 (license license:expat)))
1091
c1f52261
RW
1092(define-public ruby-gettext
1093 (package
1094 (name "ruby-gettext")
1095 (version "3.1.7")
1096 (source (origin
1097 (method url-fetch)
1098 (uri (rubygems-uri "gettext" version))
1099 (sha256
1100 (base32
1101 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
1102 (build-system ruby-build-system)
1103 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1104 ;; which needs ruby-gettext. To break the dependency cycle we disable
1105 ;; tests.
1106 (arguments `(#:tests? #f))
1107 (propagated-inputs
1108 `(("ruby-locale" ,ruby-locale)
1109 ("ruby-text" ,ruby-text)))
1110 (native-inputs
1111 `(("bundler" ,bundler)
1112 ("ruby-yard" ,ruby-yard)))
1113 (synopsis "GNU gettext-like program for Ruby")
1114 (description
1115 "Gettext is a GNU gettext-like program for Ruby. The catalog
1116file (po-file) used is the same as that used by GNU gettext, allowing you to
1117use GNU gettext tools for maintenance.")
1118 (home-page "http://ruby-gettext.github.com/")
1119 (license (list license:lgpl3+ license:ruby))))
1120
cc5aeb8c
RW
1121(define-public ruby-packnga
1122 (package
1123 (name "ruby-packnga")
1124 (version "1.0.1")
1125 (source (origin
1126 (method url-fetch)
1127 (uri (rubygems-uri "packnga" version))
1128 (sha256
1129 (base32
1130 "1i71yhvlkvi5fp3m8jl9317cnddkbnrcy0syrmiw4y1lrq0cbncj"))))
1131 (build-system ruby-build-system)
1132 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
1133 ;; To break the dependency cycle we disable tests.
1134 (arguments `(#:tests? #f))
1135 (propagated-inputs
1136 `(("ruby-gettext" ,ruby-gettext)
1137 ("ruby-yard" ,ruby-yard)))
1138 (native-inputs
1139 `(("bundler" ,bundler)))
1140 (synopsis "Utility library to package internationalized libraries")
1141 (description
1142 "Packnga is a library to translate to many languages using YARD.")
1143 (home-page "http://ranguba.org/packnga/")
1144 (license license:lgpl2.0+)))
1145
3383f5bd
RW
1146(define-public ruby-test-unit
1147 (package
1148 (name "ruby-test-unit")
1149 (version "3.1.5")
1150 (source (origin
1151 (method url-fetch)
1152 (uri (rubygems-uri "test-unit" version))
1153 (sha256
1154 (base32
1155 "0jxznjzwmrlp8wqjxsd06qbiddffn68pdhz6nrqpjbiln1z3af4w"))))
1156 (build-system ruby-build-system)
1157 (propagated-inputs
1158 `(("ruby-power-assert" ,ruby-power-assert)))
1159 (native-inputs
1160 `(("bundler" ,bundler)
1161 ("ruby-packnga" ,ruby-packnga)
1162 ("ruby-yard" ,ruby-yard)))
1163 (synopsis "Unit testing framework for Ruby")
1164 (description "@code{Test::Unit} is unit testing framework for Ruby, based
1165on xUnit principles. These were originally designed by Kent Beck, creator of
1166extreme programming software development methodology, for Smalltalk's SUnit.
1167It allows writing tests, checking results and automated testing in Ruby.")
1168 (home-page "http://test-unit.github.io/")
1169 (license (list license:psfl license:ruby))))
1170
25d6d49b
RW
1171(define-public ruby-metaclass
1172 (package
1173 (name "ruby-metaclass")
1174 (version "0.0.4")
1175 (source (origin
1176 (method url-fetch)
1177 (uri (rubygems-uri "metaclass" version))
1178 (sha256
1179 (base32
1180 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
1181 (build-system ruby-build-system)
1182 (arguments
1183 `(#:phases
1184 (modify-phases %standard-phases
1185 (add-after 'unpack 'add-test-unit-to-search-path
1186 (lambda* (#:key inputs #:allow-other-keys)
1187 (substitute* "Rakefile"
1188 (("t\\.libs << \"test\"" line)
1189 (string-append line "; t.libs << \""
1190 (assoc-ref inputs "ruby-test-unit")
1191 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1192 ,(package-version ruby-test-unit)
1193 "/lib\"")))
1194 #t)))))
1195 (native-inputs
1196 `(("bundler" ,bundler)
1197 ("ruby-test-unit" ,ruby-test-unit)))
1198 (synopsis "Ruby library adding metaclass method to all objects")
1199 (description
1200 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
1201objects.")
1202 (home-page "http://github.com/floehopper/metaclass")
1203 (license license:expat)))
1204
21f7b7bd
RW
1205(define-public ruby-blankslate
1206 (package
1207 (name "ruby-blankslate")
1208 (version "3.1.3")
1209 (source (origin
1210 (method url-fetch)
1211 (uri (rubygems-uri "blankslate" version))
1212 (sha256
1213 (base32
1214 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
1215 (build-system ruby-build-system)
1216 (arguments
1217 `(#:phases
1218 (modify-phases %standard-phases
1219 (replace 'check
1220 (lambda _ (zero? (system* "rspec" "spec/")))))))
1221 (native-inputs
1222 `(("bundler" ,bundler)
1223 ("ruby-rspec" ,ruby-rspec)))
1224 (synopsis "Abstract base class with no predefined methods")
1225 (description
1226 "BlankSlate provides an abstract base class with no predefined
1227methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
1228as a base class when writing classes that depend upon
1229@code{method_missing} (e.g. dynamic proxies).")
1230 (home-page "http://github.com/masover/blankslate")
1231 (license license:expat)))
1232
4016ba3f
RW
1233(define-public ruby-instantiator
1234 (package
1235 (name "ruby-instantiator")
1236 (version "0.0.6")
1237 (source (origin
1238 (method url-fetch)
1239 (uri (rubygems-uri "instantiator" version))
1240 (sha256
1241 (base32
1242 "0mfmqhg9xrv9i8i1kmphf15ywddhivyh2z3ccl0xjw8qy54zr21i"))))
1243 (build-system ruby-build-system)
1244 (arguments
1245 `(#:phases
1246 (modify-phases %standard-phases
1247 (add-after 'unpack 'add-test-unit-to-search-path
1248 (lambda* (#:key inputs #:allow-other-keys)
1249 (substitute* "Rakefile"
1250 (("t\\.libs << \"test\"" line)
1251 (string-append line "; t.libs << \""
1252 (assoc-ref inputs "ruby-test-unit")
1253 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1254 ,(package-version ruby-test-unit)
1255 "/lib\"")))
1256 #t)))))
1257 (propagated-inputs
1258 `(("ruby-blankslate" ,ruby-blankslate)))
1259 (native-inputs
1260 `(("bundler" ,bundler)
1261 ("ruby-test-unit" ,ruby-test-unit)))
1262 (synopsis "Instantiate an arbitrary Ruby class")
1263 (description
1264 "Instantiator lets you instantiate an arbitrary Ruby class without
1265knowing anything about the constructor.")
1266 (home-page "https://github.com/floehopper/instantiator")
1267 (license license:expat)))
1268
97aee8d3
RW
1269(define-public ruby-introspection
1270 (package
1271 (name "ruby-introspection")
1272 (version "0.0.3")
1273 (source (origin
1274 (method url-fetch)
1275 (uri (rubygems-uri "introspection" version))
1276 (sha256
1277 (base32
1278 "0g1j71sqfxbqk32wj7d0bkd3dlayfqzprfq3dbr0rq107xbxjcrr"))))
1279 (build-system ruby-build-system)
1280 (arguments
1281 `(#:phases
1282 (modify-phases %standard-phases
1283 (add-after 'unpack 'add-test-unit-to-search-path
1284 (lambda* (#:key inputs #:allow-other-keys)
1285 (substitute* "Rakefile"
1286 (("t\\.libs << \"test\"" line)
1287 (string-append line "; t.libs << \""
1288 (assoc-ref inputs "ruby-test-unit")
1289 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1290 ,(package-version ruby-test-unit)
1291 "/lib\"")))
1292 #t)))))
1293 (propagated-inputs
1294 `(("ruby-instantiator" ,ruby-instantiator)
1295 ("ruby-metaclass" ,ruby-metaclass)))
1296 (native-inputs
1297 `(("bundler" ,bundler)
1298 ("ruby-blankslate" ,ruby-blankslate)
1299 ("ruby-test-unit" ,ruby-test-unit)))
1300 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
1301 (description
1302 "Introspection provides tools to inspect the hierarchy of method
1303definitions on a Ruby object.")
1304 (home-page "https://github.com/floehopper/introspection")
1305 (license license:expat)))
1306
d93062fd
RW
1307(define-public ruby-redcarpet
1308 (package
1309 (name "ruby-redcarpet")
1310 (version "3.3.3")
1311 (source (origin
1312 (method url-fetch)
1313 (uri (rubygems-uri "redcarpet" version))
1314 (sha256
1315 (base32
1316 "14i3wypp97bpk20679d1csy88q4hsgfqbnqw6mryl77m2g0d09pk"))))
1317 (build-system ruby-build-system)
1318 (arguments
1319 `(#:phases
1320 (modify-phases %standard-phases
1321 ;; The gem archive does not include the conformance tests.
1322 (add-after 'unpack 'disable-conformance-tests
1323 (lambda _
1324 (substitute* "Rakefile"
1325 (("task :test => %w\\[test:unit test:conformance\\]")
1326 "task :test => %w[test:unit]"))
1327 #t)))))
1328 (native-inputs
1329 `(("bundler" ,bundler)
1330 ("ruby-test-unit" ,ruby-test-unit)
1331 ("ruby-rake-compiler" ,ruby-rake-compiler)))
1332 (synopsis "Extensible Markdown to (X)HTML converter")
1333 (description
1334 "Redcarpet is an extensible Ruby library for Markdown processing and
1335conversion to (X)HTML.")
1336 (home-page "http://github.com/vmg/redcarpet")
1337 (license license:expat)))
1338
4f2a52ae
RW
1339(define-public ruby-mocha
1340 (package
1341 (name "ruby-mocha")
1342 (version "1.1.0")
1343 (source (origin
1344 (method url-fetch)
1345 (uri (rubygems-uri "mocha" version))
1346 (sha256
1347 (base32
1348 "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
1349 (build-system ruby-build-system)
1350 (arguments
1351 `(#:phases
1352 (modify-phases %standard-phases
1353 (add-after 'unpack 'add-test-unit-to-search-path
1354 (lambda* (#:key inputs #:allow-other-keys)
1355 (substitute* "Rakefile"
1356 (("t\\.libs << 'test'" line)
1357 (string-append line "; t.libs << \""
1358 (assoc-ref inputs "ruby-test-unit")
1359 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1360 ,(package-version ruby-test-unit)
1361 "/lib\"")))
1362 #t))
1363 (add-before 'check 'use-latest-redcarpet
1364 (lambda _
1365 (substitute* "mocha.gemspec"
1366 (("<redcarpet>, \\[\"~> 1\"\\]")
1367 "<redcarpet>, [\">= 3\"]"))
1368 #t))
1369 (add-before 'check 'hardcode-version
1370 (lambda _
1371 ;; Mocha is undefined at build time
1372 (substitute* "Rakefile"
1373 (("#\\{Mocha::VERSION\\}") ,version))
1374 #t))
1375 (add-before 'check 'remove-failing-test
1376 ;; FIXME: This test fails for reasons unrelated to Guix packaging.
1377 (lambda _
1378 (delete-file "test/acceptance/stubbing_nil_test.rb")
1379 #t)))))
1380 (propagated-inputs
1381 `(("ruby-metaclass" ,ruby-metaclass)))
1382 (native-inputs
1383 `(("bundler" ,bundler)
1384 ("ruby-yard" ,ruby-yard)
1385 ("ruby-introspection" ,ruby-introspection)
1386 ("ruby-test-unit" ,ruby-test-unit)
1387 ("ruby-redcarpet" ,ruby-redcarpet)))
1388 (synopsis "Mocking and stubbing library for Ruby")
1389 (description
1390 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
1391allows mocking and stubbing of methods on real (non-mock) classes.")
1392 (home-page "http://gofreerange.com/mocha/docs")
1393 (license license:expat)))
1394
2c84ba7e
RW
1395(define-public ruby-net-ssh
1396 (package
1397 (name "ruby-net-ssh")
1398 (version "3.0.1")
1399 (source (origin
1400 (method url-fetch)
1401 (uri (rubygems-uri "net-ssh" version))
1402 (sha256
1403 (base32
1404 "1dzqkgwi9xm6mbfk1rkk17rzmz8m5xakqi21w1b97ybng6kkw0hf"))))
1405 (build-system ruby-build-system)
1406 (native-inputs
1407 `(("ruby-mocha" ,ruby-mocha)
1408 ("ruby-test-unit" ,ruby-test-unit)))
1409 (synopsis "Ruby implementation of the SSH2 client protocol")
1410 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
1411client protocol. It allows you to write programs that invoke and interact
1412with processes on remote servers, via SSH2.")
1413 (home-page "https://github.com/net-ssh/net-ssh")
1414 (license license:expat)))
1415
2206e948
DT
1416(define-public ruby-minitest
1417 (package
1418 (name "ruby-minitest")
1419 (version "5.7.0")
1420 (source (origin
e83c6d00
DT
1421 (method url-fetch)
1422 (uri (rubygems-uri "minitest" version))
2206e948
DT
1423 (sha256
1424 (base32
e83c6d00 1425 "0rxqfakp629mp3vwda7zpgb57lcns5znkskikbfd0kriwv8i1vq8"))))
2206e948 1426 (build-system ruby-build-system)
2206e948
DT
1427 (native-inputs
1428 `(("ruby-hoe" ,ruby-hoe)))
1429 (synopsis "Small test suite library for Ruby")
1430 (description "Minitest provides a complete suite of Ruby testing
1431facilities supporting TDD, BDD, mocking, and benchmarking.")
1432 (home-page "https://github.com/seattlerb/minitest")
1433 (license license:expat)))
1434
1db6e09f
RW
1435;; This is the last release of Minitest 4, which is used by some packages.
1436(define-public ruby-minitest-4
1437 (package (inherit ruby-minitest)
1438 (version "4.7.5")
1439 (source (origin
1440 (method url-fetch)
1441 (uri (rubygems-uri "minitest" version))
1442 (sha256
1443 (base32
1444 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
1445 (arguments
1446 `(#:phases
1447 (modify-phases %standard-phases
1448 (add-after 'unpack 'remove-unsupported-method
1449 (lambda _
1450 (substitute* "Rakefile"
1451 (("self\\.rubyforge_name = .*") ""))
1452 #t)))))))
1453
35130835
DT
1454(define-public ruby-minitest-sprint
1455 (package
1456 (name "ruby-minitest-sprint")
1457 (version "1.1.0")
1458 (source (origin
e83c6d00
DT
1459 (method url-fetch)
1460 (uri (rubygems-uri "minitest-sprint" version))
35130835
DT
1461 (sha256
1462 (base32
e83c6d00 1463 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
35130835 1464 (build-system ruby-build-system)
35130835
DT
1465 (native-inputs
1466 `(("ruby-hoe" ,ruby-hoe)
1467 ("ruby-minitest" ,ruby-minitest)))
1468 (synopsis "Fast test suite runner for minitest")
1469 (description "Minitest-sprint is a test runner for minitest that makes it
1470easier to re-run individual failing tests.")
1471 (home-page "https://github.com/seattlerb/minitest-sprint")
1472 (license license:expat)))
1473
0808e361
DT
1474(define-public ruby-minitest-bacon
1475 (package
1476 (name "ruby-minitest-bacon")
1477 (version "1.0.2")
1478 (source (origin
e83c6d00
DT
1479 (method url-fetch)
1480 (uri (rubygems-uri "minitest-bacon" version))
0808e361
DT
1481 (sha256
1482 (base32
e83c6d00 1483 "0cm7r68422743i3b6fm4rrm0r6cnnjmglq5gcmmgl1f0rk5hnf6r"))))
0808e361 1484 (build-system ruby-build-system)
0808e361
DT
1485 (native-inputs
1486 `(("ruby-hoe" ,ruby-hoe)))
1487 (inputs
1488 `(("ruby-minitest" ,ruby-minitest)))
1489 (synopsis "Bacon compatibility library for minitest")
1490 (description "Minitest-bacon extends minitest with bacon-like
1491functionality, making it easier to migrate test suites from bacon to minitest.")
1492 (home-page "https://github.com/seattlerb/minitest-bacon")
1493 (license license:expat)))
1494
afbbdf77
DT
1495(define-public ruby-daemons
1496 (package
1497 (name "ruby-daemons")
1498 (version "1.2.2")
1499 (source (origin
1500 (method url-fetch)
e83c6d00 1501 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
1502 (sha256
1503 (base32
e83c6d00 1504 "121c7vkimg3baxga69xvdkwxiq8wkmxqvdbyqi5i82vhih5d3cn3"))))
afbbdf77
DT
1505 (build-system ruby-build-system)
1506 (arguments
1507 `(#:tests? #f)) ; no test suite
1508 (synopsis "Daemonize Ruby programs")
1509 (description "Daemons provides a way to wrap existing Ruby scripts to be
1510run as a daemon and to be controlled by simple start/stop/restart commands.")
1511 (home-page "https://github.com/thuehlinger/daemons")
1512 (license license:expat)))
66e20863
DT
1513
1514(define-public ruby-git
1515 (package
1516 (name "ruby-git")
1517 (version "1.2.9.1")
1518 (source (origin
1519 (method url-fetch)
e83c6d00 1520 (uri (rubygems-uri "git" version))
66e20863
DT
1521 (sha256
1522 (base32
e83c6d00 1523 "1sqfj8lmhl7c5zamcckkpik4izfph2zkv6krw0i8mzj5pdws5acs"))))
66e20863
DT
1524 (build-system ruby-build-system)
1525 (arguments
e83c6d00
DT
1526 `(#:tests? #f ; no tests
1527 #:phases (modify-phases %standard-phases
1528 (add-after 'install 'patch-git-binary
1529 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
1530 ;; Make the default git binary an absolute path to the
1531 ;; store.
e83c6d00
DT
1532 (let ((git (string-append (assoc-ref inputs "git")
1533 "/bin/git"))
1534 (config (string-append (getenv "GEM_HOME")
1535 "/gems/git-" ,version
1536 "/lib/git/config.rb")))
1537 (substitute* (list config)
66e20863
DT
1538 (("'git'")
1539 (string-append "'" git "'")))
e83c6d00 1540 #t))))))
66e20863
DT
1541 (inputs
1542 `(("git" ,git)))
1543 (synopsis "Ruby wrappers for Git")
1544 (description "Ruby/Git is a Ruby library that can be used to create, read
1545and manipulate Git repositories by wrapping system calls to the git binary.")
1546 (home-page "https://github.com/schacon/ruby-git")
1547 (license license:expat)))
71d3e2c2
DT
1548
1549(define-public ruby-slop
1550 (package
1551 (name "ruby-slop")
1552 (version "4.1.0")
1553 (source (origin
1554 (method url-fetch)
e83c6d00 1555 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
1556 (sha256
1557 (base32
e83c6d00 1558 "0dj0ps6v1mqd02k84mgwd7hp578n2bzl7c51h3grdhxfl3jkfsj5"))))
71d3e2c2
DT
1559 (build-system ruby-build-system)
1560 (native-inputs
1561 `(("ruby-minitest" ,ruby-minitest)))
1562 (synopsis "Ruby command line option parser")
1563 (description "Slop provides a Ruby domain specific language for gathering
1564options and parsing command line flags.")
1565 (home-page "https://github.com/leejarvis/slop")
1566 (license license:expat)))
e778a549 1567
5337f8b9
DT
1568(define-public ruby-slop-3
1569 (package (inherit ruby-slop)
1570 (version "3.6.0")
1571 (source (origin
1572 (method url-fetch)
1573 (uri (rubygems-uri "slop" version))
1574 (sha256
1575 (base32
1576 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
1577
e778a549
DT
1578(define-public ruby-multipart-post
1579 (package
1580 (name "ruby-multipart-post")
1581 (version "2.0.0")
1582 (source (origin
1583 (method url-fetch)
e83c6d00 1584 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
1585 (sha256
1586 (base32
e83c6d00 1587 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
1588 (build-system ruby-build-system)
1589 (native-inputs
1590 `(("bundler" ,bundler)))
1591 (synopsis "Multipart POST library for Ruby")
1592 (description "Multipart-Post Adds multipart POST capability to Ruby's
1593net/http library.")
1594 (home-page "https://github.com/nicksieger/multipart-post")
1595 (license license:expat)))
f8da3af0
DT
1596
1597(define-public ruby-arel
1598 (package
1599 (name "ruby-arel")
1600 (version "6.0.3")
1601 (source (origin
1602 (method url-fetch)
1603 (uri (rubygems-uri "arel" version))
1604 (sha256
1605 (base32
1606 "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk"))))
1607 (build-system ruby-build-system)
1608 (arguments '(#:tests? #f)) ; no tests
1609 (home-page "https://github.com/rails/arel")
1610 (synopsis "SQL AST manager for Ruby")
1611 (description "Arel is a SQL AST manager for Ruby. It simplifies the
1612generation of complex SQL queries and is compatible with various RDBMSes.")
1613 (license license:expat)))
616eaead
DT
1614
1615(define-public ruby-minitar
1616 (package
1617 (name "ruby-minitar")
1618 (version "0.5.4")
1619 (source
1620 (origin
1621 (method url-fetch)
1622 (uri (rubygems-uri "minitar" version))
1623 (sha256
1624 (base32
1625 "1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka"))))
1626 (build-system ruby-build-system)
1627 (arguments
1628 '(#:tests? #f)) ; missing a gemspec
1629 (synopsis "Ruby library and utility for handling tar archives")
1630 (description
1631 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
1632that provides the ability to deal with POSIX tar archive files.")
1633 (home-page "http://www.github.com/atoulme/minitar")
1634 (license (list license:gpl2+ license:ruby))))
bea1c0e2
DT
1635
1636(define-public ruby-mini-portile
1637 (package
1638 (name "ruby-mini-portile")
1639 (version "0.6.2")
1640 (source
1641 (origin
1642 (method url-fetch)
1643 (uri (rubygems-uri "mini_portile" version))
1644 (sha256
1645 (base32
1646 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
1647 (build-system ruby-build-system)
1648 (arguments
1649 '(#:tests? #f)) ; tests require network access
1650 (synopsis "Ports system for Ruby developers")
1651 (description "Mini-portile is a port/recipe system for Ruby developers.
1652It provides a standard way to compile against specific versions of libraries
1653to reproduce user environments.")
1654 (home-page "http://github.com/flavorjones/mini_portile")
1655 (license license:expat)))
e920bfca
DT
1656
1657(define-public ruby-nokogiri
1658 (package
1659 (name "ruby-nokogiri")
1660 (version "1.6.6.2")
1661 (source (origin
1662 (method url-fetch)
1663 (uri (rubygems-uri "nokogiri" version))
1664 (sha256
1665 (base32
1666 "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30"))))
1667 (build-system ruby-build-system)
1668 (arguments
1669 ;; Tests fail because Nokogiri can only test with an installed extension,
1670 ;; and also because many test framework dependencies are missing.
1671 '(#:tests? #f
1672 #:gem-flags (list "--" "--use-system-libraries"
1673 (string-append "--with-xml2-include="
1674 (assoc-ref %build-inputs "libxml2")
1675 "/include/libxml2" ))))
1676 (native-inputs
1677 `(("ruby-hoe" ,ruby-hoe)
1678 ("ruby-rake-compiler", ruby-rake-compiler)))
1679 (inputs
1680 `(("zlib" ,zlib)
1681 ("libxml2" ,libxml2)
1682 ("libxslt" ,libxslt)))
1683 (propagated-inputs
1684 `(("ruby-mini-portile" ,ruby-mini-portile)))
1685 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
1686 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
1687both CSS3 selector and XPath 1.0 support.")
1688 (home-page "http://www.nokogiri.org/")
1689 (license license:expat)))
30b0b725
DT
1690
1691(define-public ruby-method-source
1692 (package
1693 (name "ruby-method-source")
1694 (version "0.8.2")
1695 (source
1696 (origin
1697 (method url-fetch)
1698 (uri (rubygems-uri "method_source" version))
1699 (sha256
1700 (base32
1701 "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
1702 (build-system ruby-build-system)
1703 (native-inputs
1704 `(("ruby-bacon" ,ruby-bacon)
1705 ("git" ,git)))
1706 (synopsis "Retrieve the source code for Ruby methods")
1707 (description "Method_source retrieves the source code for Ruby methods.
1708Additionally, it can extract source code from Proc and Lambda objects or just
1709extract comments.")
1710 (home-page "https://github.com/banister/method_source")
1711 (license license:expat)))
2e3fdea4
DT
1712
1713(define-public ruby-coderay
1714 (package
1715 (name "ruby-coderay")
1716 (version "1.1.0")
1717 (source
1718 (origin
1719 (method url-fetch)
1720 (uri (rubygems-uri "coderay" version))
1721 (sha256
1722 (base32
1723 "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
1724 (build-system ruby-build-system)
1725 (arguments
1726 '(#:tests? #f)) ; missing test files
1727 (synopsis "Ruby syntax highlighting library")
1728 (description "Coderay is a Ruby library that provides syntax highlighting
1729for select languages.")
1730 (home-page "http://coderay.rubychan.de")
1731 (license license:expat)))
96e76083
DT
1732
1733(define-public ruby-pry
1734 (package
1735 (name "ruby-pry")
1736 (version "0.10.1")
1737 (source
1738 (origin
1739 (method url-fetch)
1740 (uri (rubygems-uri "pry" version))
1741 (sha256
1742 (base32
1743 "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
1744 (build-system ruby-build-system)
1745 (arguments
1746 '(#:tests? #f)) ; no tests
1747 (propagated-inputs
1748 `(("ruby-coderay" ,ruby-coderay)
1749 ("ruby-method-source" ,ruby-method-source)
1750 ("ruby-slop" ,ruby-slop-3)))
1751 (synopsis "Ruby REPL")
1752 (description "Pry is an IRB alternative and runtime developer console for
1753Ruby. It features syntax highlighting, a plugin architecture, runtime
1754invocation, and source and documentation browsing.")
1755 (home-page "http://pryrepl.org")
1756 (license license:expat)))
1415792a
DT
1757
1758(define-public ruby-thread-safe
1759 (package
1760 (name "ruby-thread-safe")
1761 (version "0.3.5")
1762 (source
1763 (origin
1764 (method url-fetch)
1765 (uri (rubygems-uri "thread_safe" version))
1766 (sha256
1767 (base32
1768 "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
1769 (build-system ruby-build-system)
1770 (arguments
1771 '(#:tests? #f)) ; needs simplecov, among others
1772 (synopsis "Thread-safe utilities for Ruby")
1773 (description "The thread_safe library provides thread-safe collections and
1774utilities for Ruby.")
1775 (home-page "https://github.com/ruby-concurrency/thread_safe")
1776 (license license:asl2.0)))
08a1b701
DT
1777
1778(define-public ruby-tzinfo
1779 (package
1780 (name "ruby-tzinfo")
1781 (version "1.2.2")
1782 (source
1783 (origin
1784 (method url-fetch)
1785 (uri (rubygems-uri "tzinfo" version))
1786 (sha256
1787 (base32
1788 "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
1789 (build-system ruby-build-system)
1790 (propagated-inputs
1791 `(("ruby-thread-safe" ,ruby-thread-safe)))
1792 (synopsis "Time zone library for Ruby")
1793 (description "TZInfo is a Ruby library that provides daylight savings
1794aware transformations between times in different time zones.")
1795 (home-page "http://tzinfo.github.io")
1796 (license license:expat)))
c99e2247 1797
48e6851f
RW
1798(define-public ruby-rb-inotify
1799 (package
1800 (name "ruby-rb-inotify")
1801 (version "0.9.5")
1802 (source
1803 (origin
1804 (method url-fetch)
1805 (uri (rubygems-uri "rb-inotify" version))
1806 (sha256
1807 (base32
1808 "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"))))
1809 (build-system ruby-build-system)
1810 (arguments
1811 '(#:tests? #f ; there are no tests
1812 #:phases
1813 (modify-phases %standard-phases
1814 ;; Building the gemspec with rake is not working here since it is
1815 ;; generated with Jeweler. It is also unnecessary because the
1816 ;; existing gemspec does not use any development tools to generate a
1817 ;; list of files.
1818 (replace 'build
1819 (lambda _
1820 (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
1821 (propagated-inputs
1822 `(("ruby-ffi" ,ruby-ffi)))
1823 (native-inputs
1824 `(("ruby-yard" ,ruby-yard)))
1825 (synopsis "Ruby wrapper for Linux's inotify")
1826 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
1827kernel subsystem for monitoring changes to files and directories.")
1828 (home-page "https://github.com/nex3/rb-inotify")
1829 (license license:expat)))
1830
a75bdfce
RW
1831(define-public ruby-pry-editline
1832 (package
1833 (name "ruby-pry-editline")
1834 (version "1.1.2")
1835 (source (origin
1836 (method url-fetch)
1837 (uri (rubygems-uri "pry-editline" version))
1838 (sha256
1839 (base32
1840 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
1841 (build-system ruby-build-system)
1842 (arguments `(#:tests? #f)) ; no tests included
1843 (native-inputs
1844 `(("bundler" ,bundler)))
1845 (synopsis "Open the current REPL line in an editor")
1846 (description
1847 "This gem provides a plugin for the Ruby REPL to enable opening the
1848current line in an external editor.")
1849 (home-page "https://github.com/tpope/pry-editline")
1850 (license license:expat)))
1851
d3b20a02
RW
1852(define-public ruby-sdoc
1853 (package
1854 (name "ruby-sdoc")
1855 (version "0.4.1")
1856 (source (origin
1857 (method url-fetch)
1858 (uri (rubygems-uri "sdoc" version))
1859 (sha256
1860 (base32
1861 "16xyfair1j4irfkd6sxvmdcak957z71lwkvhglrznfpkalfnqyqp"))))
1862 (build-system ruby-build-system)
1863 (arguments
1864 `(#:phases
1865 (modify-phases %standard-phases
1866 (add-after 'build 'relax-minitest-requirement
1867 (lambda _
1868 (substitute* "sdoc.gemspec"
1869 (("<minitest>, \\[\"~> 4\\.0\"\\]")
1870 "<minitest>, [\">= 4.0\"]"))
1871 #t)))))
1872 (propagated-inputs
1873 `(("ruby-json" ,ruby-json)))
1874 (native-inputs
1875 `(("bundler" ,bundler)
1876 ("ruby-minitest" ,ruby-minitest)))
1877 (synopsis "Generate searchable RDoc documentation")
1878 (description
1879 "SDoc is an RDoc documentation generator to build searchable HTML
1880documentation for Ruby code.")
1881 (home-page "http://github.com/voloko/sdoc")
1882 (license license:expat)))
1883
70b002aa
RW
1884(define-public ruby-tins
1885 (package
1886 (name "ruby-tins")
1887 (version "1.7.0")
1888 (source (origin
1889 (method url-fetch)
1890 (uri (rubygems-uri "tins" version))
1891 (sha256
1892 (base32
1893 "1060h8dgnjl9az0sv1b74yrni8d4mh3x858wq6yfbfdf5dxrfl0a"))))
1894 (build-system ruby-build-system)
1895 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
1896 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
1897 ;; the gemspec.
1898 (arguments
1899 `(#:tests? #f ; there are no tests
1900 #:phases
1901 (modify-phases %standard-phases
1902 (replace 'build
1903 (lambda _
1904 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
1905 ;; causes an error.
1906 (substitute* "tins.gemspec"
1907 (("\"lib/spruz\", ") ""))
1908 (zero? (system* "gem" "build" "tins.gemspec")))))))
1909 (synopsis "Assorted tools for Ruby")
1910 (description "Tins is a Ruby library providing assorted tools.")
1911 (home-page "https://github.com/flori/tins")
1912 (license license:expat)))
1913
c99e2247
DT
1914(define-public ruby-json
1915 (package
1916 (name "ruby-json")
1917 (version "1.8.3")
1918 (source
1919 (origin
1920 (method url-fetch)
1921 (uri (rubygems-uri "json" version))
1922 (sha256
1923 (base32
1924 "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
1925 (build-system ruby-build-system)
1926 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
1927 (synopsis "JSON library for Ruby")
1928 (description "This Ruby library provides a JSON implementation written as
1929a native C extension.")
1930 (home-page "http://json-jruby.rubyforge.org/")
1931 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 1932
b86be2ad
RW
1933(define-public ruby-listen
1934 (package
1935 (name "ruby-listen")
1936 (version "3.0.3")
1937 (source
1938 (origin
1939 (method url-fetch)
1940 (uri (rubygems-uri "listen" version))
1941 (sha256
1942 (base32
1943 "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
1944 (build-system ruby-build-system)
1945 (arguments '(#:tests? #f)) ; no tests
1946 (propagated-inputs
1947 ;; FIXME: omitting "ruby-rb-fsevent" which is only for MacOS.
1948 `(("ruby-rb-inotify" ,ruby-rb-inotify)))
1949 (synopsis "Listen to file modifications")
1950 (description "The Listen gem listens to file modifications and notifies
1951you about the changes.")
1952 (home-page "https://github.com/guard/listen")
1953 (license license:expat)))
1954
5ff89a1b
DT
1955(define-public ruby-activesupport
1956 (package
1957 (name "ruby-activesupport")
1958 (version "4.2.4")
1959 (source
1960 (origin
1961 (method url-fetch)
1962 (uri (rubygems-uri "activesupport" version))
1963 (sha256
1964 (base32
1965 "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
1966 (build-system ruby-build-system)
1967 (arguments
1968 '(#:tests? #f)) ; no tests
1969 (propagated-inputs
1970 `(("ruby-i18n" ,ruby-i18n)
1971 ("ruby-json" ,ruby-json)
1972 ("ruby-minitest" ,ruby-minitest)
1973 ("ruby-thread-safe" ,ruby-thread-safe)
1974 ("ruby-tzinfo" ,ruby-tzinfo)))
1975 (synopsis "Ruby on Rails utility library")
1976 (description "ActiveSupport is a toolkit of support libraries and Ruby
1977core extensions extracted from the Rails framework. It includes support for
1978multibyte strings, internationalization, time zones, and testing.")
1979 (home-page "http://www.rubyonrails.org")
1980 (license license:expat)))
f847ad7b
DT
1981
1982(define-public ruby-ox
1983 (package
1984 (name "ruby-ox")
1985 (version "2.2.1")
1986 (source
1987 (origin
1988 (method url-fetch)
1989 (uri (rubygems-uri "ox" version))
1990 (sha256
1991 (base32
1992 "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
1993 (build-system ruby-build-system)
1994 (arguments
1995 '(#:tests? #f)) ; no tests
1996 (synopsis "Optimized XML library for Ruby")
1997 (description
1998 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
1999written as a native C extension. It was designed to be an alternative to
2000Nokogiri and other Ruby XML parsers for generic XML parsing and as an
2001alternative to Marshal for Object serialization. ")
2002 (home-page "http://www.ohler.com/ox")
2003 (license license:expat)))
4a9e0585
DT
2004
2005(define-public ruby-pg
2006 (package
2007 (name "ruby-pg")
2008 (version "0.18.2")
2009 (source
2010 (origin
2011 (method url-fetch)
2012 (uri (rubygems-uri "pg" version))
2013 (sha256
2014 (base32
2015 "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
2016 (build-system ruby-build-system)
2017 (arguments
2018 '(#:test-target "spec"))
2019 (native-inputs
2020 `(("ruby-rake-compiler" ,ruby-rake-compiler)
2021 ("ruby-hoe" ,ruby-hoe)
2022 ("ruby-rspec" ,ruby-rspec)))
2023 (inputs
2024 `(("postgresql" ,postgresql)))
2025 (synopsis "Ruby interface to PostgreSQL")
2026 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
2027with PostgreSQL 8.4 and later.")
2028 (home-page "https://bitbucket.org/ged/ruby-pg")
2029 (license license:ruby)))
468e5657
DT
2030
2031(define-public ruby-byebug
2032 (package
2033 (name "ruby-byebug")
2034 (version "6.0.2")
2035 (source
2036 (origin
2037 (method url-fetch)
2038 (uri (rubygems-uri "byebug" version))
2039 (sha256
2040 (base32
2041 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
2042 (build-system ruby-build-system)
2043 (arguments
2044 '(#:tests? #f)) ; no tests
2045 (synopsis "Debugger for Ruby 2")
2046 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
2047TracePoint C API for execution control and the Debug Inspector C API for call
2048stack navigation. The core component provides support that front-ends can
2049build on. It provides breakpoint handling and bindings for stack frames among
2050other things and it comes with a command line interface.")
2051 (home-page "http://github.com/deivid-rodriguez/byebug")
2052 (license license:bsd-2)))
64b6ccc3
DT
2053
2054(define-public ruby-rack
2055 (package
2056 (name "ruby-rack")
2057 (version "1.6.4")
2058 (source
2059 (origin
2060 (method url-fetch)
2061 (uri (rubygems-uri "rack" version))
2062 (sha256
2063 (base32
2064 "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
2065 (build-system ruby-build-system)
2066 (arguments
2067 '(#:phases
2068 (modify-phases %standard-phases
2069 (add-before 'check 'fix-tests
2070 (lambda _
2071 ;; A few of the tests use the length of a file on disk for
2072 ;; Content-Length and Content-Range headers. However, this file
2073 ;; has a shebang in it which an earlier phase patches, growing
2074 ;; the file size from 193 to 239 bytes when the store prefix is
2075 ;; "/gnu/store".
2076 (let ((size-diff (- (string-length (which "ruby"))
2077 (string-length "/usr/bin/env ruby"))))
2078 (substitute* '("test/spec_file.rb")
2079 (("193")
2080 (number->string (+ 193 size-diff)))
2081 (("bytes(.)22-33" all delimiter)
2082 (string-append "bytes"
2083 delimiter
2084 (number->string (+ 22 size-diff))
2085 "-"
2086 (number->string (+ 33 size-diff))))))
2087 #t)))))
2088 (native-inputs
2089 `(("ruby-bacon" ,ruby-bacon)))
2090 (synopsis "Unified web application interface for Ruby")
2091 (description "Rack provides a minimal, modular and adaptable interface for
2092developing web applications in Ruby. By wrapping HTTP requests and responses,
2093it unifies the API for web servers, web frameworks, and software in between
2094into a single method call.")
2095 (home-page "http://rack.github.io/")
2096 (license license:expat)))
62e4cc5a 2097
6aaa815e
PP
2098(define-public ruby-docile
2099 (package
2100 (name "ruby-docile")
2101 (version "1.1.5")
2102 (source
2103 (origin
2104 (method url-fetch)
2105 (uri (rubygems-uri "docile" version))
2106 (sha256
2107 (base32
2108 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
2109 (build-system ruby-build-system)
2110 (arguments
2111 '(#:tests? #f)) ; needs github-markup, among others
2112 (synopsis "Ruby EDSL helper library")
2113 (description "Docile is a Ruby library that provides an interface for
2114creating embedded domain specific languages (EDSLs) that manipulate existing
2115Ruby classes.")
2116 (home-page "https://ms-ati.github.io/docile/")
2117 (license license:expat)))
2118
62e4cc5a
PP
2119(define-public ruby-gherkin3
2120 (package
2121 (name "ruby-gherkin3")
2122 (version "3.1.1")
2123 (source
2124 (origin
2125 (method url-fetch)
2126 (uri (rubygems-uri "gherkin3" version))
2127 (sha256
2128 (base32
2129 "0xsyxhqa1gwcxzvsdy4didaiq5vam8ma3fbwbw2w60via4k6r1z9"))))
2130 (build-system ruby-build-system)
2131 (native-inputs
2132 `(("bundler" ,bundler)))
2133 (arguments
2134 '(#:tests? #f)) ; needs simplecov, among others
2135 (synopsis "Gherkin parser for Ruby")
2136 (description "Gherkin 3 is a parser and compiler for the Gherkin language.
2137It is intended to replace Gherkin 2 and be used by all Cucumber
2138implementations to parse '.feature' files.")
2139 (home-page "https://github.com/cucumber/gherkin3")
2140 (license license:expat)))
cd89fecb
PP
2141
2142(define-public ruby-cucumber-core
2143 (package
2144 (name "ruby-cucumber-core")
2145 (version "1.3.0")
2146 (source
2147 (origin
2148 (method url-fetch)
2149 (uri (rubygems-uri "cucumber-core" version))
2150 (sha256
2151 (base32
2152 "12mrzf0s96izpq0k10lahlkgwc4fjs0zfs344rh8r8h3w3jyppr8"))))
2153 (build-system ruby-build-system)
2154 (propagated-inputs
2155 `(("ruby-gherkin3" ,ruby-gherkin3)))
2156 (native-inputs
2157 `(("bundler" ,bundler)))
2158 (arguments
2159 '(#:tests? #f)) ; needs simplecov, among others
2160 (synopsis "Core library for the Cucumber BDD app")
2161 (description "Cucumber is a tool for running automated tests
2162written in plain language. Because they're written in plain language,
2163they can be read by anyone on your team. Because they can be read by
2164anyone, you can use them to help improve communication, collaboration
2165and trust on your team.")
2166 (home-page "https://cucumber.io/")
2167 (license license:expat)))
212d563d
PP
2168
2169(define-public ruby-bio-logger
2170 (package
2171 (name "ruby-bio-logger")
2172 (version "1.0.1")
2173 (source
2174 (origin
2175 (method url-fetch)
2176 (uri (rubygems-uri "bio-logger" version))
2177 (sha256
2178 (base32
2179 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
2180 (build-system ruby-build-system)
2181 (arguments
2182 `(#:tests? #f)) ; rake errors, missing shoulda
2183 (propagated-inputs
2184 `(("ruby-log4r" ,ruby-log4r)))
2185 (synopsis "Log4r wrapper for Ruby")
2186 (description "Bio-logger is a wrapper around Log4r adding extra logging
2187features such as filtering and fine grained logging.")
2188 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
2189 (license license:expat)))
07f61cb2
BW
2190
2191(define-public ruby-yard
2192 (package
2193 (name "ruby-yard")
2194 (version "0.8.7.6")
2195 (source
2196 (origin
2197 (method url-fetch)
2198 (uri (rubygems-uri "yard" version))
2199 (sha256
2200 (base32
2201 "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x"))))
2202 (build-system ruby-build-system)
2203 (arguments
2204 `(#:test-target "specs"
2205 #:phases
2206 (modify-phases %standard-phases
2207 (add-before 'check 'set-HOME
2208 ;; $HOME needs to be set to somewhere writeable for tests to run
2209 (lambda _ (setenv "HOME" "/tmp") #t)))))
2210 (native-inputs
2211 `(("ruby-rspec" ,ruby-rspec-2)
2212 ("ruby-rack" ,ruby-rack)))
2213 (synopsis "Documentation generation tool for Ruby")
2214 (description
2215 "YARD is a documentation generation tool for the Ruby programming
2216language. It enables the user to generate consistent, usable documentation
2217that can be exported to a number of formats very easily, and also supports
2218extending for custom Ruby constructs such as custom class level definitions.")
2219 (home-page "http://yardoc.org")
2220 (license license:expat)))
2cbcd23a
DT
2221
2222(define-public ruby-eventmachine
2223 (package
2224 (name "ruby-eventmachine")
2225 (version "1.0.8")
2226 (source
2227 (origin
2228 (method url-fetch)
2229 (uri (rubygems-uri "eventmachine" version))
2230 (sha256
2231 (base32
2232 "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp"))))
2233 (build-system ruby-build-system)
2234 (arguments
2235 '(#:tests? #f)) ; test suite tries to connect to google.com
2236 (native-inputs
2237 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
2238 (synopsis "Single-threaded network event framework for Ruby")
2239 (description
2240 "EventMachine implements a single-threaded engine for arbitrary network
2241communications. EventMachine wraps all interactions with sockets, allowing
2242programs to concentrate on the implementation of network protocols. It can be
2243used to create both network servers and clients.")
2244 (home-page "http://rubyeventmachine.com")
2245 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT