gnu: Add ruby-sdoc.
[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
35130835
DT
1435(define-public ruby-minitest-sprint
1436 (package
1437 (name "ruby-minitest-sprint")
1438 (version "1.1.0")
1439 (source (origin
e83c6d00
DT
1440 (method url-fetch)
1441 (uri (rubygems-uri "minitest-sprint" version))
35130835
DT
1442 (sha256
1443 (base32
e83c6d00 1444 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
35130835 1445 (build-system ruby-build-system)
35130835
DT
1446 (native-inputs
1447 `(("ruby-hoe" ,ruby-hoe)
1448 ("ruby-minitest" ,ruby-minitest)))
1449 (synopsis "Fast test suite runner for minitest")
1450 (description "Minitest-sprint is a test runner for minitest that makes it
1451easier to re-run individual failing tests.")
1452 (home-page "https://github.com/seattlerb/minitest-sprint")
1453 (license license:expat)))
1454
0808e361
DT
1455(define-public ruby-minitest-bacon
1456 (package
1457 (name "ruby-minitest-bacon")
1458 (version "1.0.2")
1459 (source (origin
e83c6d00
DT
1460 (method url-fetch)
1461 (uri (rubygems-uri "minitest-bacon" version))
0808e361
DT
1462 (sha256
1463 (base32
e83c6d00 1464 "0cm7r68422743i3b6fm4rrm0r6cnnjmglq5gcmmgl1f0rk5hnf6r"))))
0808e361 1465 (build-system ruby-build-system)
0808e361
DT
1466 (native-inputs
1467 `(("ruby-hoe" ,ruby-hoe)))
1468 (inputs
1469 `(("ruby-minitest" ,ruby-minitest)))
1470 (synopsis "Bacon compatibility library for minitest")
1471 (description "Minitest-bacon extends minitest with bacon-like
1472functionality, making it easier to migrate test suites from bacon to minitest.")
1473 (home-page "https://github.com/seattlerb/minitest-bacon")
1474 (license license:expat)))
1475
afbbdf77
DT
1476(define-public ruby-daemons
1477 (package
1478 (name "ruby-daemons")
1479 (version "1.2.2")
1480 (source (origin
1481 (method url-fetch)
e83c6d00 1482 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
1483 (sha256
1484 (base32
e83c6d00 1485 "121c7vkimg3baxga69xvdkwxiq8wkmxqvdbyqi5i82vhih5d3cn3"))))
afbbdf77
DT
1486 (build-system ruby-build-system)
1487 (arguments
1488 `(#:tests? #f)) ; no test suite
1489 (synopsis "Daemonize Ruby programs")
1490 (description "Daemons provides a way to wrap existing Ruby scripts to be
1491run as a daemon and to be controlled by simple start/stop/restart commands.")
1492 (home-page "https://github.com/thuehlinger/daemons")
1493 (license license:expat)))
66e20863
DT
1494
1495(define-public ruby-git
1496 (package
1497 (name "ruby-git")
1498 (version "1.2.9.1")
1499 (source (origin
1500 (method url-fetch)
e83c6d00 1501 (uri (rubygems-uri "git" version))
66e20863
DT
1502 (sha256
1503 (base32
e83c6d00 1504 "1sqfj8lmhl7c5zamcckkpik4izfph2zkv6krw0i8mzj5pdws5acs"))))
66e20863
DT
1505 (build-system ruby-build-system)
1506 (arguments
e83c6d00
DT
1507 `(#:tests? #f ; no tests
1508 #:phases (modify-phases %standard-phases
1509 (add-after 'install 'patch-git-binary
1510 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
1511 ;; Make the default git binary an absolute path to the
1512 ;; store.
e83c6d00
DT
1513 (let ((git (string-append (assoc-ref inputs "git")
1514 "/bin/git"))
1515 (config (string-append (getenv "GEM_HOME")
1516 "/gems/git-" ,version
1517 "/lib/git/config.rb")))
1518 (substitute* (list config)
66e20863
DT
1519 (("'git'")
1520 (string-append "'" git "'")))
e83c6d00 1521 #t))))))
66e20863
DT
1522 (inputs
1523 `(("git" ,git)))
1524 (synopsis "Ruby wrappers for Git")
1525 (description "Ruby/Git is a Ruby library that can be used to create, read
1526and manipulate Git repositories by wrapping system calls to the git binary.")
1527 (home-page "https://github.com/schacon/ruby-git")
1528 (license license:expat)))
71d3e2c2
DT
1529
1530(define-public ruby-slop
1531 (package
1532 (name "ruby-slop")
1533 (version "4.1.0")
1534 (source (origin
1535 (method url-fetch)
e83c6d00 1536 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
1537 (sha256
1538 (base32
e83c6d00 1539 "0dj0ps6v1mqd02k84mgwd7hp578n2bzl7c51h3grdhxfl3jkfsj5"))))
71d3e2c2
DT
1540 (build-system ruby-build-system)
1541 (native-inputs
1542 `(("ruby-minitest" ,ruby-minitest)))
1543 (synopsis "Ruby command line option parser")
1544 (description "Slop provides a Ruby domain specific language for gathering
1545options and parsing command line flags.")
1546 (home-page "https://github.com/leejarvis/slop")
1547 (license license:expat)))
e778a549 1548
5337f8b9
DT
1549(define-public ruby-slop-3
1550 (package (inherit ruby-slop)
1551 (version "3.6.0")
1552 (source (origin
1553 (method url-fetch)
1554 (uri (rubygems-uri "slop" version))
1555 (sha256
1556 (base32
1557 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
1558
e778a549
DT
1559(define-public ruby-multipart-post
1560 (package
1561 (name "ruby-multipart-post")
1562 (version "2.0.0")
1563 (source (origin
1564 (method url-fetch)
e83c6d00 1565 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
1566 (sha256
1567 (base32
e83c6d00 1568 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
1569 (build-system ruby-build-system)
1570 (native-inputs
1571 `(("bundler" ,bundler)))
1572 (synopsis "Multipart POST library for Ruby")
1573 (description "Multipart-Post Adds multipart POST capability to Ruby's
1574net/http library.")
1575 (home-page "https://github.com/nicksieger/multipart-post")
1576 (license license:expat)))
f8da3af0
DT
1577
1578(define-public ruby-arel
1579 (package
1580 (name "ruby-arel")
1581 (version "6.0.3")
1582 (source (origin
1583 (method url-fetch)
1584 (uri (rubygems-uri "arel" version))
1585 (sha256
1586 (base32
1587 "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk"))))
1588 (build-system ruby-build-system)
1589 (arguments '(#:tests? #f)) ; no tests
1590 (home-page "https://github.com/rails/arel")
1591 (synopsis "SQL AST manager for Ruby")
1592 (description "Arel is a SQL AST manager for Ruby. It simplifies the
1593generation of complex SQL queries and is compatible with various RDBMSes.")
1594 (license license:expat)))
616eaead
DT
1595
1596(define-public ruby-minitar
1597 (package
1598 (name "ruby-minitar")
1599 (version "0.5.4")
1600 (source
1601 (origin
1602 (method url-fetch)
1603 (uri (rubygems-uri "minitar" version))
1604 (sha256
1605 (base32
1606 "1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka"))))
1607 (build-system ruby-build-system)
1608 (arguments
1609 '(#:tests? #f)) ; missing a gemspec
1610 (synopsis "Ruby library and utility for handling tar archives")
1611 (description
1612 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
1613that provides the ability to deal with POSIX tar archive files.")
1614 (home-page "http://www.github.com/atoulme/minitar")
1615 (license (list license:gpl2+ license:ruby))))
bea1c0e2
DT
1616
1617(define-public ruby-mini-portile
1618 (package
1619 (name "ruby-mini-portile")
1620 (version "0.6.2")
1621 (source
1622 (origin
1623 (method url-fetch)
1624 (uri (rubygems-uri "mini_portile" version))
1625 (sha256
1626 (base32
1627 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
1628 (build-system ruby-build-system)
1629 (arguments
1630 '(#:tests? #f)) ; tests require network access
1631 (synopsis "Ports system for Ruby developers")
1632 (description "Mini-portile is a port/recipe system for Ruby developers.
1633It provides a standard way to compile against specific versions of libraries
1634to reproduce user environments.")
1635 (home-page "http://github.com/flavorjones/mini_portile")
1636 (license license:expat)))
e920bfca
DT
1637
1638(define-public ruby-nokogiri
1639 (package
1640 (name "ruby-nokogiri")
1641 (version "1.6.6.2")
1642 (source (origin
1643 (method url-fetch)
1644 (uri (rubygems-uri "nokogiri" version))
1645 (sha256
1646 (base32
1647 "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30"))))
1648 (build-system ruby-build-system)
1649 (arguments
1650 ;; Tests fail because Nokogiri can only test with an installed extension,
1651 ;; and also because many test framework dependencies are missing.
1652 '(#:tests? #f
1653 #:gem-flags (list "--" "--use-system-libraries"
1654 (string-append "--with-xml2-include="
1655 (assoc-ref %build-inputs "libxml2")
1656 "/include/libxml2" ))))
1657 (native-inputs
1658 `(("ruby-hoe" ,ruby-hoe)
1659 ("ruby-rake-compiler", ruby-rake-compiler)))
1660 (inputs
1661 `(("zlib" ,zlib)
1662 ("libxml2" ,libxml2)
1663 ("libxslt" ,libxslt)))
1664 (propagated-inputs
1665 `(("ruby-mini-portile" ,ruby-mini-portile)))
1666 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
1667 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
1668both CSS3 selector and XPath 1.0 support.")
1669 (home-page "http://www.nokogiri.org/")
1670 (license license:expat)))
30b0b725
DT
1671
1672(define-public ruby-method-source
1673 (package
1674 (name "ruby-method-source")
1675 (version "0.8.2")
1676 (source
1677 (origin
1678 (method url-fetch)
1679 (uri (rubygems-uri "method_source" version))
1680 (sha256
1681 (base32
1682 "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
1683 (build-system ruby-build-system)
1684 (native-inputs
1685 `(("ruby-bacon" ,ruby-bacon)
1686 ("git" ,git)))
1687 (synopsis "Retrieve the source code for Ruby methods")
1688 (description "Method_source retrieves the source code for Ruby methods.
1689Additionally, it can extract source code from Proc and Lambda objects or just
1690extract comments.")
1691 (home-page "https://github.com/banister/method_source")
1692 (license license:expat)))
2e3fdea4
DT
1693
1694(define-public ruby-coderay
1695 (package
1696 (name "ruby-coderay")
1697 (version "1.1.0")
1698 (source
1699 (origin
1700 (method url-fetch)
1701 (uri (rubygems-uri "coderay" version))
1702 (sha256
1703 (base32
1704 "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
1705 (build-system ruby-build-system)
1706 (arguments
1707 '(#:tests? #f)) ; missing test files
1708 (synopsis "Ruby syntax highlighting library")
1709 (description "Coderay is a Ruby library that provides syntax highlighting
1710for select languages.")
1711 (home-page "http://coderay.rubychan.de")
1712 (license license:expat)))
96e76083
DT
1713
1714(define-public ruby-pry
1715 (package
1716 (name "ruby-pry")
1717 (version "0.10.1")
1718 (source
1719 (origin
1720 (method url-fetch)
1721 (uri (rubygems-uri "pry" version))
1722 (sha256
1723 (base32
1724 "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
1725 (build-system ruby-build-system)
1726 (arguments
1727 '(#:tests? #f)) ; no tests
1728 (propagated-inputs
1729 `(("ruby-coderay" ,ruby-coderay)
1730 ("ruby-method-source" ,ruby-method-source)
1731 ("ruby-slop" ,ruby-slop-3)))
1732 (synopsis "Ruby REPL")
1733 (description "Pry is an IRB alternative and runtime developer console for
1734Ruby. It features syntax highlighting, a plugin architecture, runtime
1735invocation, and source and documentation browsing.")
1736 (home-page "http://pryrepl.org")
1737 (license license:expat)))
1415792a
DT
1738
1739(define-public ruby-thread-safe
1740 (package
1741 (name "ruby-thread-safe")
1742 (version "0.3.5")
1743 (source
1744 (origin
1745 (method url-fetch)
1746 (uri (rubygems-uri "thread_safe" version))
1747 (sha256
1748 (base32
1749 "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
1750 (build-system ruby-build-system)
1751 (arguments
1752 '(#:tests? #f)) ; needs simplecov, among others
1753 (synopsis "Thread-safe utilities for Ruby")
1754 (description "The thread_safe library provides thread-safe collections and
1755utilities for Ruby.")
1756 (home-page "https://github.com/ruby-concurrency/thread_safe")
1757 (license license:asl2.0)))
08a1b701
DT
1758
1759(define-public ruby-tzinfo
1760 (package
1761 (name "ruby-tzinfo")
1762 (version "1.2.2")
1763 (source
1764 (origin
1765 (method url-fetch)
1766 (uri (rubygems-uri "tzinfo" version))
1767 (sha256
1768 (base32
1769 "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
1770 (build-system ruby-build-system)
1771 (propagated-inputs
1772 `(("ruby-thread-safe" ,ruby-thread-safe)))
1773 (synopsis "Time zone library for Ruby")
1774 (description "TZInfo is a Ruby library that provides daylight savings
1775aware transformations between times in different time zones.")
1776 (home-page "http://tzinfo.github.io")
1777 (license license:expat)))
c99e2247 1778
48e6851f
RW
1779(define-public ruby-rb-inotify
1780 (package
1781 (name "ruby-rb-inotify")
1782 (version "0.9.5")
1783 (source
1784 (origin
1785 (method url-fetch)
1786 (uri (rubygems-uri "rb-inotify" version))
1787 (sha256
1788 (base32
1789 "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"))))
1790 (build-system ruby-build-system)
1791 (arguments
1792 '(#:tests? #f ; there are no tests
1793 #:phases
1794 (modify-phases %standard-phases
1795 ;; Building the gemspec with rake is not working here since it is
1796 ;; generated with Jeweler. It is also unnecessary because the
1797 ;; existing gemspec does not use any development tools to generate a
1798 ;; list of files.
1799 (replace 'build
1800 (lambda _
1801 (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
1802 (propagated-inputs
1803 `(("ruby-ffi" ,ruby-ffi)))
1804 (native-inputs
1805 `(("ruby-yard" ,ruby-yard)))
1806 (synopsis "Ruby wrapper for Linux's inotify")
1807 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
1808kernel subsystem for monitoring changes to files and directories.")
1809 (home-page "https://github.com/nex3/rb-inotify")
1810 (license license:expat)))
1811
a75bdfce
RW
1812(define-public ruby-pry-editline
1813 (package
1814 (name "ruby-pry-editline")
1815 (version "1.1.2")
1816 (source (origin
1817 (method url-fetch)
1818 (uri (rubygems-uri "pry-editline" version))
1819 (sha256
1820 (base32
1821 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
1822 (build-system ruby-build-system)
1823 (arguments `(#:tests? #f)) ; no tests included
1824 (native-inputs
1825 `(("bundler" ,bundler)))
1826 (synopsis "Open the current REPL line in an editor")
1827 (description
1828 "This gem provides a plugin for the Ruby REPL to enable opening the
1829current line in an external editor.")
1830 (home-page "https://github.com/tpope/pry-editline")
1831 (license license:expat)))
1832
d3b20a02
RW
1833(define-public ruby-sdoc
1834 (package
1835 (name "ruby-sdoc")
1836 (version "0.4.1")
1837 (source (origin
1838 (method url-fetch)
1839 (uri (rubygems-uri "sdoc" version))
1840 (sha256
1841 (base32
1842 "16xyfair1j4irfkd6sxvmdcak957z71lwkvhglrznfpkalfnqyqp"))))
1843 (build-system ruby-build-system)
1844 (arguments
1845 `(#:phases
1846 (modify-phases %standard-phases
1847 (add-after 'build 'relax-minitest-requirement
1848 (lambda _
1849 (substitute* "sdoc.gemspec"
1850 (("<minitest>, \\[\"~> 4\\.0\"\\]")
1851 "<minitest>, [\">= 4.0\"]"))
1852 #t)))))
1853 (propagated-inputs
1854 `(("ruby-json" ,ruby-json)))
1855 (native-inputs
1856 `(("bundler" ,bundler)
1857 ("ruby-minitest" ,ruby-minitest)))
1858 (synopsis "Generate searchable RDoc documentation")
1859 (description
1860 "SDoc is an RDoc documentation generator to build searchable HTML
1861documentation for Ruby code.")
1862 (home-page "http://github.com/voloko/sdoc")
1863 (license license:expat)))
1864
c99e2247
DT
1865(define-public ruby-json
1866 (package
1867 (name "ruby-json")
1868 (version "1.8.3")
1869 (source
1870 (origin
1871 (method url-fetch)
1872 (uri (rubygems-uri "json" version))
1873 (sha256
1874 (base32
1875 "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
1876 (build-system ruby-build-system)
1877 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
1878 (synopsis "JSON library for Ruby")
1879 (description "This Ruby library provides a JSON implementation written as
1880a native C extension.")
1881 (home-page "http://json-jruby.rubyforge.org/")
1882 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 1883
b86be2ad
RW
1884(define-public ruby-listen
1885 (package
1886 (name "ruby-listen")
1887 (version "3.0.3")
1888 (source
1889 (origin
1890 (method url-fetch)
1891 (uri (rubygems-uri "listen" version))
1892 (sha256
1893 (base32
1894 "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
1895 (build-system ruby-build-system)
1896 (arguments '(#:tests? #f)) ; no tests
1897 (propagated-inputs
1898 ;; FIXME: omitting "ruby-rb-fsevent" which is only for MacOS.
1899 `(("ruby-rb-inotify" ,ruby-rb-inotify)))
1900 (synopsis "Listen to file modifications")
1901 (description "The Listen gem listens to file modifications and notifies
1902you about the changes.")
1903 (home-page "https://github.com/guard/listen")
1904 (license license:expat)))
1905
5ff89a1b
DT
1906(define-public ruby-activesupport
1907 (package
1908 (name "ruby-activesupport")
1909 (version "4.2.4")
1910 (source
1911 (origin
1912 (method url-fetch)
1913 (uri (rubygems-uri "activesupport" version))
1914 (sha256
1915 (base32
1916 "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
1917 (build-system ruby-build-system)
1918 (arguments
1919 '(#:tests? #f)) ; no tests
1920 (propagated-inputs
1921 `(("ruby-i18n" ,ruby-i18n)
1922 ("ruby-json" ,ruby-json)
1923 ("ruby-minitest" ,ruby-minitest)
1924 ("ruby-thread-safe" ,ruby-thread-safe)
1925 ("ruby-tzinfo" ,ruby-tzinfo)))
1926 (synopsis "Ruby on Rails utility library")
1927 (description "ActiveSupport is a toolkit of support libraries and Ruby
1928core extensions extracted from the Rails framework. It includes support for
1929multibyte strings, internationalization, time zones, and testing.")
1930 (home-page "http://www.rubyonrails.org")
1931 (license license:expat)))
f847ad7b
DT
1932
1933(define-public ruby-ox
1934 (package
1935 (name "ruby-ox")
1936 (version "2.2.1")
1937 (source
1938 (origin
1939 (method url-fetch)
1940 (uri (rubygems-uri "ox" version))
1941 (sha256
1942 (base32
1943 "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
1944 (build-system ruby-build-system)
1945 (arguments
1946 '(#:tests? #f)) ; no tests
1947 (synopsis "Optimized XML library for Ruby")
1948 (description
1949 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
1950written as a native C extension. It was designed to be an alternative to
1951Nokogiri and other Ruby XML parsers for generic XML parsing and as an
1952alternative to Marshal for Object serialization. ")
1953 (home-page "http://www.ohler.com/ox")
1954 (license license:expat)))
4a9e0585
DT
1955
1956(define-public ruby-pg
1957 (package
1958 (name "ruby-pg")
1959 (version "0.18.2")
1960 (source
1961 (origin
1962 (method url-fetch)
1963 (uri (rubygems-uri "pg" version))
1964 (sha256
1965 (base32
1966 "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
1967 (build-system ruby-build-system)
1968 (arguments
1969 '(#:test-target "spec"))
1970 (native-inputs
1971 `(("ruby-rake-compiler" ,ruby-rake-compiler)
1972 ("ruby-hoe" ,ruby-hoe)
1973 ("ruby-rspec" ,ruby-rspec)))
1974 (inputs
1975 `(("postgresql" ,postgresql)))
1976 (synopsis "Ruby interface to PostgreSQL")
1977 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
1978with PostgreSQL 8.4 and later.")
1979 (home-page "https://bitbucket.org/ged/ruby-pg")
1980 (license license:ruby)))
468e5657
DT
1981
1982(define-public ruby-byebug
1983 (package
1984 (name "ruby-byebug")
1985 (version "6.0.2")
1986 (source
1987 (origin
1988 (method url-fetch)
1989 (uri (rubygems-uri "byebug" version))
1990 (sha256
1991 (base32
1992 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
1993 (build-system ruby-build-system)
1994 (arguments
1995 '(#:tests? #f)) ; no tests
1996 (synopsis "Debugger for Ruby 2")
1997 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
1998TracePoint C API for execution control and the Debug Inspector C API for call
1999stack navigation. The core component provides support that front-ends can
2000build on. It provides breakpoint handling and bindings for stack frames among
2001other things and it comes with a command line interface.")
2002 (home-page "http://github.com/deivid-rodriguez/byebug")
2003 (license license:bsd-2)))
64b6ccc3
DT
2004
2005(define-public ruby-rack
2006 (package
2007 (name "ruby-rack")
2008 (version "1.6.4")
2009 (source
2010 (origin
2011 (method url-fetch)
2012 (uri (rubygems-uri "rack" version))
2013 (sha256
2014 (base32
2015 "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
2016 (build-system ruby-build-system)
2017 (arguments
2018 '(#:phases
2019 (modify-phases %standard-phases
2020 (add-before 'check 'fix-tests
2021 (lambda _
2022 ;; A few of the tests use the length of a file on disk for
2023 ;; Content-Length and Content-Range headers. However, this file
2024 ;; has a shebang in it which an earlier phase patches, growing
2025 ;; the file size from 193 to 239 bytes when the store prefix is
2026 ;; "/gnu/store".
2027 (let ((size-diff (- (string-length (which "ruby"))
2028 (string-length "/usr/bin/env ruby"))))
2029 (substitute* '("test/spec_file.rb")
2030 (("193")
2031 (number->string (+ 193 size-diff)))
2032 (("bytes(.)22-33" all delimiter)
2033 (string-append "bytes"
2034 delimiter
2035 (number->string (+ 22 size-diff))
2036 "-"
2037 (number->string (+ 33 size-diff))))))
2038 #t)))))
2039 (native-inputs
2040 `(("ruby-bacon" ,ruby-bacon)))
2041 (synopsis "Unified web application interface for Ruby")
2042 (description "Rack provides a minimal, modular and adaptable interface for
2043developing web applications in Ruby. By wrapping HTTP requests and responses,
2044it unifies the API for web servers, web frameworks, and software in between
2045into a single method call.")
2046 (home-page "http://rack.github.io/")
2047 (license license:expat)))
62e4cc5a 2048
6aaa815e
PP
2049(define-public ruby-docile
2050 (package
2051 (name "ruby-docile")
2052 (version "1.1.5")
2053 (source
2054 (origin
2055 (method url-fetch)
2056 (uri (rubygems-uri "docile" version))
2057 (sha256
2058 (base32
2059 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
2060 (build-system ruby-build-system)
2061 (arguments
2062 '(#:tests? #f)) ; needs github-markup, among others
2063 (synopsis "Ruby EDSL helper library")
2064 (description "Docile is a Ruby library that provides an interface for
2065creating embedded domain specific languages (EDSLs) that manipulate existing
2066Ruby classes.")
2067 (home-page "https://ms-ati.github.io/docile/")
2068 (license license:expat)))
2069
62e4cc5a
PP
2070(define-public ruby-gherkin3
2071 (package
2072 (name "ruby-gherkin3")
2073 (version "3.1.1")
2074 (source
2075 (origin
2076 (method url-fetch)
2077 (uri (rubygems-uri "gherkin3" version))
2078 (sha256
2079 (base32
2080 "0xsyxhqa1gwcxzvsdy4didaiq5vam8ma3fbwbw2w60via4k6r1z9"))))
2081 (build-system ruby-build-system)
2082 (native-inputs
2083 `(("bundler" ,bundler)))
2084 (arguments
2085 '(#:tests? #f)) ; needs simplecov, among others
2086 (synopsis "Gherkin parser for Ruby")
2087 (description "Gherkin 3 is a parser and compiler for the Gherkin language.
2088It is intended to replace Gherkin 2 and be used by all Cucumber
2089implementations to parse '.feature' files.")
2090 (home-page "https://github.com/cucumber/gherkin3")
2091 (license license:expat)))
cd89fecb
PP
2092
2093(define-public ruby-cucumber-core
2094 (package
2095 (name "ruby-cucumber-core")
2096 (version "1.3.0")
2097 (source
2098 (origin
2099 (method url-fetch)
2100 (uri (rubygems-uri "cucumber-core" version))
2101 (sha256
2102 (base32
2103 "12mrzf0s96izpq0k10lahlkgwc4fjs0zfs344rh8r8h3w3jyppr8"))))
2104 (build-system ruby-build-system)
2105 (propagated-inputs
2106 `(("ruby-gherkin3" ,ruby-gherkin3)))
2107 (native-inputs
2108 `(("bundler" ,bundler)))
2109 (arguments
2110 '(#:tests? #f)) ; needs simplecov, among others
2111 (synopsis "Core library for the Cucumber BDD app")
2112 (description "Cucumber is a tool for running automated tests
2113written in plain language. Because they're written in plain language,
2114they can be read by anyone on your team. Because they can be read by
2115anyone, you can use them to help improve communication, collaboration
2116and trust on your team.")
2117 (home-page "https://cucumber.io/")
2118 (license license:expat)))
212d563d
PP
2119
2120(define-public ruby-bio-logger
2121 (package
2122 (name "ruby-bio-logger")
2123 (version "1.0.1")
2124 (source
2125 (origin
2126 (method url-fetch)
2127 (uri (rubygems-uri "bio-logger" version))
2128 (sha256
2129 (base32
2130 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
2131 (build-system ruby-build-system)
2132 (arguments
2133 `(#:tests? #f)) ; rake errors, missing shoulda
2134 (propagated-inputs
2135 `(("ruby-log4r" ,ruby-log4r)))
2136 (synopsis "Log4r wrapper for Ruby")
2137 (description "Bio-logger is a wrapper around Log4r adding extra logging
2138features such as filtering and fine grained logging.")
2139 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
2140 (license license:expat)))
07f61cb2
BW
2141
2142(define-public ruby-yard
2143 (package
2144 (name "ruby-yard")
2145 (version "0.8.7.6")
2146 (source
2147 (origin
2148 (method url-fetch)
2149 (uri (rubygems-uri "yard" version))
2150 (sha256
2151 (base32
2152 "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x"))))
2153 (build-system ruby-build-system)
2154 (arguments
2155 `(#:test-target "specs"
2156 #:phases
2157 (modify-phases %standard-phases
2158 (add-before 'check 'set-HOME
2159 ;; $HOME needs to be set to somewhere writeable for tests to run
2160 (lambda _ (setenv "HOME" "/tmp") #t)))))
2161 (native-inputs
2162 `(("ruby-rspec" ,ruby-rspec-2)
2163 ("ruby-rack" ,ruby-rack)))
2164 (synopsis "Documentation generation tool for Ruby")
2165 (description
2166 "YARD is a documentation generation tool for the Ruby programming
2167language. It enables the user to generate consistent, usable documentation
2168that can be exported to a number of formats very easily, and also supports
2169extending for custom Ruby constructs such as custom class level definitions.")
2170 (home-page "http://yardoc.org")
2171 (license license:expat)))
2cbcd23a
DT
2172
2173(define-public ruby-eventmachine
2174 (package
2175 (name "ruby-eventmachine")
2176 (version "1.0.8")
2177 (source
2178 (origin
2179 (method url-fetch)
2180 (uri (rubygems-uri "eventmachine" version))
2181 (sha256
2182 (base32
2183 "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp"))))
2184 (build-system ruby-build-system)
2185 (arguments
2186 '(#:tests? #f)) ; test suite tries to connect to google.com
2187 (native-inputs
2188 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
2189 (synopsis "Single-threaded network event framework for Ruby")
2190 (description
2191 "EventMachine implements a single-threaded engine for arbitrary network
2192communications. EventMachine wraps all interactions with sockets, allowing
2193programs to concentrate on the implementation of network protocols. It can be
2194used to create both network servers and clients.")
2195 (home-page "http://rubyeventmachine.com")
2196 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT