gnu: Add ruby-power-assert.
[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
cc53e630
RW
521(define-public ruby-orderedhash
522 (package
523 (name "ruby-orderedhash")
524 (version "0.0.6")
525 (source (origin
526 (method url-fetch)
527 (uri (rubygems-uri "orderedhash" version))
528 (sha256
529 (base32
530 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
531 (build-system ruby-build-system)
532 (arguments
533 '(#:tests? #f)) ; no test suite
534 (synopsis "Ruby library providing an order-preserving hash")
535 (description "Orderedhash is a Ruby library providing a hash
536implementation that preserves the order of items and features some array-like
537extensions.")
538 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
539 (license license:public-domain)))
540
28c5d42d
PP
541(define-public ruby-libxml
542 (package
543 (name "ruby-libxml")
544 (version "2.8.0")
545 (source
546 (origin
547 (method url-fetch)
548 (uri (rubygems-uri "libxml-ruby" version))
549 (sha256
550 (base32
551 "1dhjqp4r9vkdp00l6h1cj8qfndzxlhlxk6b9g0w4v55gz857ilhb"))))
552 (build-system ruby-build-system)
553 (inputs
554 `(("zlib" ,zlib)
555 ("libxml2" ,libxml2)))
556 (arguments
557 '(#:tests? #f ; test suite hangs for unknown reason
558 #:gem-flags
559 (list "--"
560 (string-append "--with-xml2-include="
561 (assoc-ref %build-inputs "libxml2")
562 "/include/libxml2" ))))
563 (synopsis "Ruby bindings for GNOME Libxml2")
564 (description "The Libxml-Ruby project provides Ruby language bindings for
565the GNOME Libxml2 XML toolkit.")
566 (home-page "http://xml4r.github.com/libxml-ruby")
567 (license license:expat)))
568
8b9bde07
RW
569(define-public ruby-xml-simple
570 (package
571 (name "ruby-xml-simple")
572 (version "1.1.5")
573 (source (origin
574 (method url-fetch)
575 (uri (rubygems-uri "xml-simple" version))
576 (sha256
577 (base32
578 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
579 (build-system ruby-build-system)
580 (arguments
581 '(#:tests? #f)) ; no test suite
582 (synopsis "Simple Ruby library for XML processing")
583 (description "This library provides a simple API for XML processing in
584Ruby.")
585 (home-page "https://github.com/maik/xml-simple")
586 (license license:ruby)))
587
2cb3ab48
RW
588(define-public ruby-thor
589 (package
590 (name "ruby-thor")
591 (version "0.19.1")
592 (source (origin
593 (method url-fetch)
594 (uri (rubygems-uri "thor" version))
595 (sha256
596 (base32
597 "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z"))))
598 (build-system ruby-build-system)
599 (arguments
600 '(#:tests? #f)) ; no test suite
601 (native-inputs
602 `(("bundler" ,bundler)))
603 (synopsis "Ruby toolkit for building command-line interfaces")
604 (description "Thor is a toolkit for building powerful command-line
605interfaces.")
606 (home-page "http://whatisthor.com/")
607 (license license:expat)))
608
ec79018e
RW
609(define-public ruby-lumberjack
610 (package
611 (name "ruby-lumberjack")
612 (version "1.0.9")
613 (source (origin
614 (method url-fetch)
615 (uri (rubygems-uri "lumberjack" version))
616 (sha256
617 (base32
618 "162frm2bwy58pj8ccsdqa4a6i0csrhb9h5l3inhkl1ivgfc8814l"))))
619 (build-system ruby-build-system)
620 (native-inputs
621 `(("ruby-rspec" ,ruby-rspec)))
622 (synopsis "Logging utility library for Ruby")
623 (description "Lumberjack is a simple logging utility that can be a drop in
624replacement for Logger or ActiveSupport::BufferedLogger. It provides support
625for automatically rolling log files even with multiple processes writing the
626same log file.")
627 (home-page "http://github.com/bdurand/lumberjack")
628 (license license:expat)))
629
70b4cf38
RW
630(define-public ruby-nenv
631 (package
632 (name "ruby-nenv")
633 (version "0.2.0")
634 (source (origin
635 (method url-fetch)
636 (uri (rubygems-uri "nenv" version))
637 (sha256
638 (base32
639 "152wxwri0afwgnxdf93gi6wjl9rr5z7vwp8ln0gpa3rddbfc27s6"))))
640 (build-system ruby-build-system)
641 (arguments
642 `(#:tests? #f)) ; no tests included
643 (native-inputs
644 `(("ruby-rspec" ,ruby-rspec)
645 ("bundler" ,bundler)))
646 (synopsis "Ruby interface for modifying the environment")
647 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
648and inspect the environment.")
649 (home-page "https://github.com/e2/nenv")
650 (license license:expat)))
651
8d9e9f28
RW
652(define-public ruby-permutation
653 (package
654 (name "ruby-permutation")
655 (version "0.1.8")
656 (source (origin
657 (method url-fetch)
658 (uri (rubygems-uri "permutation" version))
659 (sha256
660 (base32
661 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
662 (build-system ruby-build-system)
663 (arguments
664 `(#:phases
665 (modify-phases %standard-phases
666 (add-after 'unpack 'fix-rakefile
667 (lambda _
668 (substitute* "Rakefile"
669 (("require 'rake/gempackagetask'")
670 "require 'rubygems/package_task'")
671 (("include Config") ""))
672 #t))
673 (replace 'check
674 (lambda _
675 (zero? (system* "ruby" "-Ilib" "test/test.rb")))))))
676 (synopsis "Library to perform operations with sequence permutations")
677 (description "This package provides a Ruby library to perform different
678operations with permutations of sequences, such as strings and arrays.")
679 (home-page "http://flori.github.io/permutation")
680 (license license:gpl2))) ; GPL 2 only
681
c5d14d42
RW
682(define-public ruby-shellany
683 (package
684 (name "ruby-shellany")
685 (version "0.0.1")
686 (source (origin
687 (method url-fetch)
688 (uri (rubygems-uri "shellany" version))
689 (sha256
690 (base32
691 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
692 (build-system ruby-build-system)
693 (arguments
694 `(#:test-target "default"
695 #:phases
696 (modify-phases %standard-phases
697 (add-after 'unpack 'fix-version-test
698 (lambda _
699 (substitute* "spec/shellany_spec.rb"
700 (("^RSpec") "require \"shellany\"\nRSpec"))
701 #t)))))
702 (native-inputs
703 `(("ruby-rspec" ,ruby-rspec)
704 ("ruby-nenv" ,ruby-nenv)
705 ("bundler" ,bundler)))
706 (synopsis "Capture command output")
707 (description "Shellany is a Ruby library providing functions to capture
708the output produced by running shell commands.")
709 (home-page "https://rubygems.org/gems/shellany")
710 (license license:expat)))
711
d152162f
RW
712(define-public ruby-notiffany
713 (package
714 (name "ruby-notiffany")
715 (version "0.0.7")
716 (source (origin
717 (method url-fetch)
718 (uri (rubygems-uri "notiffany" version))
719 (sha256
720 (base32
721 "1v5x1w59qq85r6dpv3y9ga34dfd7hka1qxyiykaw7gm0i6kggbhi"))))
722 (build-system ruby-build-system)
723 ;; Tests are not included in the gem.
724 (arguments `(#:tests? #f))
725 (propagated-inputs
726 `(("ruby-shellany" ,ruby-shellany)
727 ("ruby-nenv" ,ruby-nenv)))
728 (native-inputs
729 `(("bundler" ,bundler)))
730 (synopsis "Wrapper libray for notification libraries")
731 (description "Notiffany is a Ruby wrapper libray for notification
732libraries such as Libnotify.")
733 (home-page "https://github.com/guard/notiffany")
734 (license license:expat)))
735
8528365b
RW
736(define-public ruby-formatador
737 (package
738 (name "ruby-formatador")
739 (version "0.2.5")
740 (source (origin
741 (method url-fetch)
742 (uri (rubygems-uri "formatador" version))
743 (sha256
744 (base32
745 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
746 (build-system ruby-build-system)
747 ;; Circular dependency: Tests require ruby-shindo, which requires
748 ;; ruby-formatador at runtime.
749 (arguments `(#:tests? #f))
750 (synopsis "Ruby library to format text on stdout")
751 (description "Formatador is a Ruby library to format text printed to the
752standard output stream.")
753 (home-page "http://github.com/geemus/formatador")
754 (license license:expat)))
755
7ac4610f
RW
756(define-public ruby-shindo
757 (package
758 (name "ruby-shindo")
759 (version "0.3.8")
760 (source (origin
761 (method url-fetch)
762 (uri (rubygems-uri "shindo" version))
763 (sha256
764 (base32
765 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
766 (build-system ruby-build-system)
767 (arguments
768 `(#:test-target "shindo_tests"
769 #:phases
770 (modify-phases %standard-phases
771 (add-after 'unpack 'fix-tests
772 (lambda _
773 (substitute* "Rakefile"
774 (("system \"shindo") "system \"./bin/shindo")
775 ;; This test doesn't work, so we disable it.
776 (("fail \"The build_error test should fail") "#"))
777 #t)))))
778 (propagated-inputs
779 `(("ruby-formatador" ,ruby-formatador)))
780 (synopsis "Simple depth first Ruby testing")
781 (description "Shindo is a simple depth first testing library for Ruby.")
782 (home-page "https://github.com/geemus/shindo")
783 (license license:expat)))
784
f13636f2
RW
785(define-public ruby-rubygems-tasks
786 (package
787 (name "ruby-rubygems-tasks")
788 (version "0.2.4")
789 (source (origin
790 (method url-fetch)
791 (uri (rubygems-uri "rubygems-tasks" version))
792 (sha256
793 (base32
794 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
795 (build-system ruby-build-system)
796 ;; Tests need Internet access.
797 (arguments `(#:tests? #f))
798 (native-inputs
799 `(("ruby-rspec" ,ruby-rspec)
800 ("ruby-yard" ,ruby-yard)))
801 (synopsis "Rake tasks for managing and releasing Ruby Gems")
802 (description "Rubygems-task provides Rake tasks for managing and releasing
803Ruby Gems.")
804 (home-page "https://github.com/postmodern/rubygems-tasks")
805 (license license:expat)))
806
2417fce3
RW
807(define-public ruby-ffi
808 (package
809 (name "ruby-ffi")
810 (version "1.9.10")
811 (source (origin
812 (method url-fetch)
813 (uri (rubygems-uri "ffi" version))
814 (sha256
815 (base32
816 "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj"))))
817 (build-system ruby-build-system)
818 ;; FIXME: Before running tests the build system attempts to build libffi
819 ;; from sources.
820 (arguments `(#:tests? #f))
821 (native-inputs
822 `(("ruby-rake-compiler" ,ruby-rake-compiler)
823 ("ruby-rspec" ,ruby-rspec)
824 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
825 (inputs
826 `(("libffi" ,libffi)))
827 (synopsis "Ruby foreign function interface library")
828 (description "Ruby-FFI is a Ruby extension for programmatically loading
829dynamic libraries, binding functions within them, and calling those functions
830from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby
831and JRuby.")
832 (home-page "http://wiki.github.com/ffi/ffi")
833 (license license:bsd-3)))
834
58b59742
RW
835(define-public ruby-simplecov-html
836 (package
837 (name "ruby-simplecov-html")
838 (version "0.10.0")
839 (source (origin
840 (method url-fetch)
841 (uri (rubygems-uri "simplecov-html" version))
842 (sha256
843 (base32
844 "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj"))))
845 (build-system ruby-build-system)
846 (native-inputs
847 `(("bundler" ,bundler)))
848 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
849 (description "This package provides the default HTML formatter for
850the SimpleCov code coverage tool for Ruby version 1.9 and above.")
851 (home-page "https://github.com/colszowka/simplecov-html")
852 (license license:expat)))
853
98b87b82
DT
854(define-public ruby-useragent
855 (package
856 (name "ruby-useragent")
857 (version "0.13.3")
858 (source (origin
859 (method url-fetch)
e83c6d00 860 (uri (rubygems-uri "useragent" version))
98b87b82
DT
861 (sha256
862 (base32
e83c6d00 863 "0kz7yyz7528bv4a2kfymvkcm8whqcddhmgaw1ksw1d90n30hhkpc"))))
98b87b82
DT
864 (build-system ruby-build-system)
865 (arguments
e83c6d00 866 '(#:tests? #f)) ; no test suite
98b87b82
DT
867 (synopsis "HTTP user agent parser for Ruby")
868 (description "UserAgent is a Ruby library that parses and compares HTTP
869User Agents.")
870 (home-page "https://github.com/gshutler/useragent")
871 (license license:expat)))
96086cc5
DT
872
873(define-public ruby-bacon
874 (package
875 (name "ruby-bacon")
e83c6d00 876 (version "1.2.0")
96086cc5
DT
877 (source (origin
878 (method url-fetch)
e83c6d00 879 (uri (rubygems-uri "bacon" version))
96086cc5
DT
880 (sha256
881 (base32
e83c6d00 882 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
96086cc5 883 (build-system ruby-build-system)
96086cc5
DT
884 (synopsis "Small RSpec clone")
885 (description "Bacon is a small RSpec clone providing all essential
886features.")
887 (home-page "https://github.com/chneukirchen/bacon")
888 (license license:expat)))
de59d316
DT
889
890(define-public ruby-arel
891 (package
892 (name "ruby-arel")
893 (version "6.0.0")
894 (source (origin
895 (method url-fetch)
e83c6d00 896 (uri (rubygems-uri "arel" version))
de59d316
DT
897 (sha256
898 (base32
e83c6d00 899 "18wnfnzr2i5p3fygsddjbi1cimws6823nbk8drxidmnj8jz7h0ar"))))
de59d316 900 (build-system ruby-build-system)
e83c6d00
DT
901 (arguments
902 '(#:tests? #f)) ; no test suite
de59d316
DT
903 (synopsis "SQL AST manager for Ruby")
904 (description "Arel is a SQL AST manager for Ruby. It simplifies the
905generation of complex SQL queries and adapts to various relational database
906implementations.")
907 (home-page "https://github.com/rails/arel")
908 (license license:expat)))
e259bdf0
DT
909
910(define-public ruby-connection-pool
911 (package
912 (name "ruby-connection-pool")
913 (version "2.2.0")
914 (source (origin
915 (method url-fetch)
e83c6d00 916 (uri (rubygems-uri "connection_pool" version))
e259bdf0
DT
917 (sha256
918 (base32
e83c6d00 919 "1b2bb3k39ni5mzcnqlv9y4yjkbin20s7dkwzp0jw2jf1rmzcgrmy"))))
e259bdf0
DT
920 (build-system ruby-build-system)
921 (native-inputs
922 `(("bundler" ,bundler)))
923 (synopsis "Generic connection pool for Ruby")
924 (description "Connection_pool provides a generic connection pooling
925interface for Ruby programs.")
926 (home-page "https://github.com/mperham/connection_pool")
927 (license license:expat)))
4c0aeb44
DT
928
929(define-public ruby-net-http-persistent
930 (package
931 (name "ruby-net-http-persistent")
932 (version "2.9.4")
933 (source (origin
934 (method url-fetch)
e83c6d00 935 (uri (rubygems-uri "net-http-persistent" version))
4c0aeb44
DT
936 (sha256
937 (base32
e83c6d00 938 "1y9fhaax0d9kkslyiqi1zys6cvpaqx9a0y0cywp24rpygwh4s9r4"))))
4c0aeb44 939 (build-system ruby-build-system)
4c0aeb44
DT
940 (native-inputs
941 `(("ruby-connection-pool" ,ruby-connection-pool)
942 ("ruby-hoe" ,ruby-hoe)))
943 (synopsis "Persistent HTTP connection manager")
944 (description "Net::HTTP::Persistent manages persistent HTTP connections
945using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
946 (home-page "https://github.com/drbrain/net-http-persistent")
947 (license license:expat)))
afbbdf77 948
f88bacaf
RW
949(define-public ruby-power-assert
950 (package
951 (name "ruby-power-assert")
952 (version "0.2.6")
953 (source (origin
954 (method url-fetch)
955 (uri (rubygems-uri "power_assert" version))
956 (sha256
957 (base32
958 "0gbj379jhnff8rbb6m3kzdm282szjz1a021xzxa38d1bnswj2jx3"))))
959 (build-system ruby-build-system)
960 (native-inputs
961 `(("bundler" ,bundler)))
962 (synopsis "Assert library with descriptive assertion messages")
963 (description "Power-assert is an assertion library providing descriptive
964assertion messages for tests.")
965 (home-page "https://github.com/k-tsj/power_assert")
966 (license (list license:bsd-2 license:ruby))))
967
2206e948
DT
968(define-public ruby-minitest
969 (package
970 (name "ruby-minitest")
971 (version "5.7.0")
972 (source (origin
e83c6d00
DT
973 (method url-fetch)
974 (uri (rubygems-uri "minitest" version))
2206e948
DT
975 (sha256
976 (base32
e83c6d00 977 "0rxqfakp629mp3vwda7zpgb57lcns5znkskikbfd0kriwv8i1vq8"))))
2206e948 978 (build-system ruby-build-system)
2206e948
DT
979 (native-inputs
980 `(("ruby-hoe" ,ruby-hoe)))
981 (synopsis "Small test suite library for Ruby")
982 (description "Minitest provides a complete suite of Ruby testing
983facilities supporting TDD, BDD, mocking, and benchmarking.")
984 (home-page "https://github.com/seattlerb/minitest")
985 (license license:expat)))
986
35130835
DT
987(define-public ruby-minitest-sprint
988 (package
989 (name "ruby-minitest-sprint")
990 (version "1.1.0")
991 (source (origin
e83c6d00
DT
992 (method url-fetch)
993 (uri (rubygems-uri "minitest-sprint" version))
35130835
DT
994 (sha256
995 (base32
e83c6d00 996 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
35130835 997 (build-system ruby-build-system)
35130835
DT
998 (native-inputs
999 `(("ruby-hoe" ,ruby-hoe)
1000 ("ruby-minitest" ,ruby-minitest)))
1001 (synopsis "Fast test suite runner for minitest")
1002 (description "Minitest-sprint is a test runner for minitest that makes it
1003easier to re-run individual failing tests.")
1004 (home-page "https://github.com/seattlerb/minitest-sprint")
1005 (license license:expat)))
1006
0808e361
DT
1007(define-public ruby-minitest-bacon
1008 (package
1009 (name "ruby-minitest-bacon")
1010 (version "1.0.2")
1011 (source (origin
e83c6d00
DT
1012 (method url-fetch)
1013 (uri (rubygems-uri "minitest-bacon" version))
0808e361
DT
1014 (sha256
1015 (base32
e83c6d00 1016 "0cm7r68422743i3b6fm4rrm0r6cnnjmglq5gcmmgl1f0rk5hnf6r"))))
0808e361 1017 (build-system ruby-build-system)
0808e361
DT
1018 (native-inputs
1019 `(("ruby-hoe" ,ruby-hoe)))
1020 (inputs
1021 `(("ruby-minitest" ,ruby-minitest)))
1022 (synopsis "Bacon compatibility library for minitest")
1023 (description "Minitest-bacon extends minitest with bacon-like
1024functionality, making it easier to migrate test suites from bacon to minitest.")
1025 (home-page "https://github.com/seattlerb/minitest-bacon")
1026 (license license:expat)))
1027
afbbdf77
DT
1028(define-public ruby-daemons
1029 (package
1030 (name "ruby-daemons")
1031 (version "1.2.2")
1032 (source (origin
1033 (method url-fetch)
e83c6d00 1034 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
1035 (sha256
1036 (base32
e83c6d00 1037 "121c7vkimg3baxga69xvdkwxiq8wkmxqvdbyqi5i82vhih5d3cn3"))))
afbbdf77
DT
1038 (build-system ruby-build-system)
1039 (arguments
1040 `(#:tests? #f)) ; no test suite
1041 (synopsis "Daemonize Ruby programs")
1042 (description "Daemons provides a way to wrap existing Ruby scripts to be
1043run as a daemon and to be controlled by simple start/stop/restart commands.")
1044 (home-page "https://github.com/thuehlinger/daemons")
1045 (license license:expat)))
66e20863
DT
1046
1047(define-public ruby-git
1048 (package
1049 (name "ruby-git")
1050 (version "1.2.9.1")
1051 (source (origin
1052 (method url-fetch)
e83c6d00 1053 (uri (rubygems-uri "git" version))
66e20863
DT
1054 (sha256
1055 (base32
e83c6d00 1056 "1sqfj8lmhl7c5zamcckkpik4izfph2zkv6krw0i8mzj5pdws5acs"))))
66e20863
DT
1057 (build-system ruby-build-system)
1058 (arguments
e83c6d00
DT
1059 `(#:tests? #f ; no tests
1060 #:phases (modify-phases %standard-phases
1061 (add-after 'install 'patch-git-binary
1062 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
1063 ;; Make the default git binary an absolute path to the
1064 ;; store.
e83c6d00
DT
1065 (let ((git (string-append (assoc-ref inputs "git")
1066 "/bin/git"))
1067 (config (string-append (getenv "GEM_HOME")
1068 "/gems/git-" ,version
1069 "/lib/git/config.rb")))
1070 (substitute* (list config)
66e20863
DT
1071 (("'git'")
1072 (string-append "'" git "'")))
e83c6d00 1073 #t))))))
66e20863
DT
1074 (inputs
1075 `(("git" ,git)))
1076 (synopsis "Ruby wrappers for Git")
1077 (description "Ruby/Git is a Ruby library that can be used to create, read
1078and manipulate Git repositories by wrapping system calls to the git binary.")
1079 (home-page "https://github.com/schacon/ruby-git")
1080 (license license:expat)))
71d3e2c2
DT
1081
1082(define-public ruby-slop
1083 (package
1084 (name "ruby-slop")
1085 (version "4.1.0")
1086 (source (origin
1087 (method url-fetch)
e83c6d00 1088 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
1089 (sha256
1090 (base32
e83c6d00 1091 "0dj0ps6v1mqd02k84mgwd7hp578n2bzl7c51h3grdhxfl3jkfsj5"))))
71d3e2c2
DT
1092 (build-system ruby-build-system)
1093 (native-inputs
1094 `(("ruby-minitest" ,ruby-minitest)))
1095 (synopsis "Ruby command line option parser")
1096 (description "Slop provides a Ruby domain specific language for gathering
1097options and parsing command line flags.")
1098 (home-page "https://github.com/leejarvis/slop")
1099 (license license:expat)))
e778a549 1100
5337f8b9
DT
1101(define-public ruby-slop-3
1102 (package (inherit ruby-slop)
1103 (version "3.6.0")
1104 (source (origin
1105 (method url-fetch)
1106 (uri (rubygems-uri "slop" version))
1107 (sha256
1108 (base32
1109 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
1110
e778a549
DT
1111(define-public ruby-multipart-post
1112 (package
1113 (name "ruby-multipart-post")
1114 (version "2.0.0")
1115 (source (origin
1116 (method url-fetch)
e83c6d00 1117 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
1118 (sha256
1119 (base32
e83c6d00 1120 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
1121 (build-system ruby-build-system)
1122 (native-inputs
1123 `(("bundler" ,bundler)))
1124 (synopsis "Multipart POST library for Ruby")
1125 (description "Multipart-Post Adds multipart POST capability to Ruby's
1126net/http library.")
1127 (home-page "https://github.com/nicksieger/multipart-post")
1128 (license license:expat)))
f8da3af0
DT
1129
1130(define-public ruby-arel
1131 (package
1132 (name "ruby-arel")
1133 (version "6.0.3")
1134 (source (origin
1135 (method url-fetch)
1136 (uri (rubygems-uri "arel" version))
1137 (sha256
1138 (base32
1139 "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk"))))
1140 (build-system ruby-build-system)
1141 (arguments '(#:tests? #f)) ; no tests
1142 (home-page "https://github.com/rails/arel")
1143 (synopsis "SQL AST manager for Ruby")
1144 (description "Arel is a SQL AST manager for Ruby. It simplifies the
1145generation of complex SQL queries and is compatible with various RDBMSes.")
1146 (license license:expat)))
616eaead
DT
1147
1148(define-public ruby-minitar
1149 (package
1150 (name "ruby-minitar")
1151 (version "0.5.4")
1152 (source
1153 (origin
1154 (method url-fetch)
1155 (uri (rubygems-uri "minitar" version))
1156 (sha256
1157 (base32
1158 "1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka"))))
1159 (build-system ruby-build-system)
1160 (arguments
1161 '(#:tests? #f)) ; missing a gemspec
1162 (synopsis "Ruby library and utility for handling tar archives")
1163 (description
1164 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
1165that provides the ability to deal with POSIX tar archive files.")
1166 (home-page "http://www.github.com/atoulme/minitar")
1167 (license (list license:gpl2+ license:ruby))))
bea1c0e2
DT
1168
1169(define-public ruby-mini-portile
1170 (package
1171 (name "ruby-mini-portile")
1172 (version "0.6.2")
1173 (source
1174 (origin
1175 (method url-fetch)
1176 (uri (rubygems-uri "mini_portile" version))
1177 (sha256
1178 (base32
1179 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
1180 (build-system ruby-build-system)
1181 (arguments
1182 '(#:tests? #f)) ; tests require network access
1183 (synopsis "Ports system for Ruby developers")
1184 (description "Mini-portile is a port/recipe system for Ruby developers.
1185It provides a standard way to compile against specific versions of libraries
1186to reproduce user environments.")
1187 (home-page "http://github.com/flavorjones/mini_portile")
1188 (license license:expat)))
e920bfca
DT
1189
1190(define-public ruby-nokogiri
1191 (package
1192 (name "ruby-nokogiri")
1193 (version "1.6.6.2")
1194 (source (origin
1195 (method url-fetch)
1196 (uri (rubygems-uri "nokogiri" version))
1197 (sha256
1198 (base32
1199 "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30"))))
1200 (build-system ruby-build-system)
1201 (arguments
1202 ;; Tests fail because Nokogiri can only test with an installed extension,
1203 ;; and also because many test framework dependencies are missing.
1204 '(#:tests? #f
1205 #:gem-flags (list "--" "--use-system-libraries"
1206 (string-append "--with-xml2-include="
1207 (assoc-ref %build-inputs "libxml2")
1208 "/include/libxml2" ))))
1209 (native-inputs
1210 `(("ruby-hoe" ,ruby-hoe)
1211 ("ruby-rake-compiler", ruby-rake-compiler)))
1212 (inputs
1213 `(("zlib" ,zlib)
1214 ("libxml2" ,libxml2)
1215 ("libxslt" ,libxslt)))
1216 (propagated-inputs
1217 `(("ruby-mini-portile" ,ruby-mini-portile)))
1218 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
1219 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
1220both CSS3 selector and XPath 1.0 support.")
1221 (home-page "http://www.nokogiri.org/")
1222 (license license:expat)))
30b0b725
DT
1223
1224(define-public ruby-method-source
1225 (package
1226 (name "ruby-method-source")
1227 (version "0.8.2")
1228 (source
1229 (origin
1230 (method url-fetch)
1231 (uri (rubygems-uri "method_source" version))
1232 (sha256
1233 (base32
1234 "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
1235 (build-system ruby-build-system)
1236 (native-inputs
1237 `(("ruby-bacon" ,ruby-bacon)
1238 ("git" ,git)))
1239 (synopsis "Retrieve the source code for Ruby methods")
1240 (description "Method_source retrieves the source code for Ruby methods.
1241Additionally, it can extract source code from Proc and Lambda objects or just
1242extract comments.")
1243 (home-page "https://github.com/banister/method_source")
1244 (license license:expat)))
2e3fdea4
DT
1245
1246(define-public ruby-coderay
1247 (package
1248 (name "ruby-coderay")
1249 (version "1.1.0")
1250 (source
1251 (origin
1252 (method url-fetch)
1253 (uri (rubygems-uri "coderay" version))
1254 (sha256
1255 (base32
1256 "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
1257 (build-system ruby-build-system)
1258 (arguments
1259 '(#:tests? #f)) ; missing test files
1260 (synopsis "Ruby syntax highlighting library")
1261 (description "Coderay is a Ruby library that provides syntax highlighting
1262for select languages.")
1263 (home-page "http://coderay.rubychan.de")
1264 (license license:expat)))
96e76083
DT
1265
1266(define-public ruby-pry
1267 (package
1268 (name "ruby-pry")
1269 (version "0.10.1")
1270 (source
1271 (origin
1272 (method url-fetch)
1273 (uri (rubygems-uri "pry" version))
1274 (sha256
1275 (base32
1276 "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
1277 (build-system ruby-build-system)
1278 (arguments
1279 '(#:tests? #f)) ; no tests
1280 (propagated-inputs
1281 `(("ruby-coderay" ,ruby-coderay)
1282 ("ruby-method-source" ,ruby-method-source)
1283 ("ruby-slop" ,ruby-slop-3)))
1284 (synopsis "Ruby REPL")
1285 (description "Pry is an IRB alternative and runtime developer console for
1286Ruby. It features syntax highlighting, a plugin architecture, runtime
1287invocation, and source and documentation browsing.")
1288 (home-page "http://pryrepl.org")
1289 (license license:expat)))
1415792a
DT
1290
1291(define-public ruby-thread-safe
1292 (package
1293 (name "ruby-thread-safe")
1294 (version "0.3.5")
1295 (source
1296 (origin
1297 (method url-fetch)
1298 (uri (rubygems-uri "thread_safe" version))
1299 (sha256
1300 (base32
1301 "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
1302 (build-system ruby-build-system)
1303 (arguments
1304 '(#:tests? #f)) ; needs simplecov, among others
1305 (synopsis "Thread-safe utilities for Ruby")
1306 (description "The thread_safe library provides thread-safe collections and
1307utilities for Ruby.")
1308 (home-page "https://github.com/ruby-concurrency/thread_safe")
1309 (license license:asl2.0)))
08a1b701
DT
1310
1311(define-public ruby-tzinfo
1312 (package
1313 (name "ruby-tzinfo")
1314 (version "1.2.2")
1315 (source
1316 (origin
1317 (method url-fetch)
1318 (uri (rubygems-uri "tzinfo" version))
1319 (sha256
1320 (base32
1321 "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
1322 (build-system ruby-build-system)
1323 (propagated-inputs
1324 `(("ruby-thread-safe" ,ruby-thread-safe)))
1325 (synopsis "Time zone library for Ruby")
1326 (description "TZInfo is a Ruby library that provides daylight savings
1327aware transformations between times in different time zones.")
1328 (home-page "http://tzinfo.github.io")
1329 (license license:expat)))
c99e2247 1330
48e6851f
RW
1331(define-public ruby-rb-inotify
1332 (package
1333 (name "ruby-rb-inotify")
1334 (version "0.9.5")
1335 (source
1336 (origin
1337 (method url-fetch)
1338 (uri (rubygems-uri "rb-inotify" version))
1339 (sha256
1340 (base32
1341 "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"))))
1342 (build-system ruby-build-system)
1343 (arguments
1344 '(#:tests? #f ; there are no tests
1345 #:phases
1346 (modify-phases %standard-phases
1347 ;; Building the gemspec with rake is not working here since it is
1348 ;; generated with Jeweler. It is also unnecessary because the
1349 ;; existing gemspec does not use any development tools to generate a
1350 ;; list of files.
1351 (replace 'build
1352 (lambda _
1353 (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
1354 (propagated-inputs
1355 `(("ruby-ffi" ,ruby-ffi)))
1356 (native-inputs
1357 `(("ruby-yard" ,ruby-yard)))
1358 (synopsis "Ruby wrapper for Linux's inotify")
1359 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
1360kernel subsystem for monitoring changes to files and directories.")
1361 (home-page "https://github.com/nex3/rb-inotify")
1362 (license license:expat)))
1363
c99e2247
DT
1364(define-public ruby-json
1365 (package
1366 (name "ruby-json")
1367 (version "1.8.3")
1368 (source
1369 (origin
1370 (method url-fetch)
1371 (uri (rubygems-uri "json" version))
1372 (sha256
1373 (base32
1374 "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
1375 (build-system ruby-build-system)
1376 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
1377 (synopsis "JSON library for Ruby")
1378 (description "This Ruby library provides a JSON implementation written as
1379a native C extension.")
1380 (home-page "http://json-jruby.rubyforge.org/")
1381 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 1382
b86be2ad
RW
1383(define-public ruby-listen
1384 (package
1385 (name "ruby-listen")
1386 (version "3.0.3")
1387 (source
1388 (origin
1389 (method url-fetch)
1390 (uri (rubygems-uri "listen" version))
1391 (sha256
1392 (base32
1393 "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
1394 (build-system ruby-build-system)
1395 (arguments '(#:tests? #f)) ; no tests
1396 (propagated-inputs
1397 ;; FIXME: omitting "ruby-rb-fsevent" which is only for MacOS.
1398 `(("ruby-rb-inotify" ,ruby-rb-inotify)))
1399 (synopsis "Listen to file modifications")
1400 (description "The Listen gem listens to file modifications and notifies
1401you about the changes.")
1402 (home-page "https://github.com/guard/listen")
1403 (license license:expat)))
1404
5ff89a1b
DT
1405(define-public ruby-activesupport
1406 (package
1407 (name "ruby-activesupport")
1408 (version "4.2.4")
1409 (source
1410 (origin
1411 (method url-fetch)
1412 (uri (rubygems-uri "activesupport" version))
1413 (sha256
1414 (base32
1415 "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
1416 (build-system ruby-build-system)
1417 (arguments
1418 '(#:tests? #f)) ; no tests
1419 (propagated-inputs
1420 `(("ruby-i18n" ,ruby-i18n)
1421 ("ruby-json" ,ruby-json)
1422 ("ruby-minitest" ,ruby-minitest)
1423 ("ruby-thread-safe" ,ruby-thread-safe)
1424 ("ruby-tzinfo" ,ruby-tzinfo)))
1425 (synopsis "Ruby on Rails utility library")
1426 (description "ActiveSupport is a toolkit of support libraries and Ruby
1427core extensions extracted from the Rails framework. It includes support for
1428multibyte strings, internationalization, time zones, and testing.")
1429 (home-page "http://www.rubyonrails.org")
1430 (license license:expat)))
f847ad7b
DT
1431
1432(define-public ruby-ox
1433 (package
1434 (name "ruby-ox")
1435 (version "2.2.1")
1436 (source
1437 (origin
1438 (method url-fetch)
1439 (uri (rubygems-uri "ox" version))
1440 (sha256
1441 (base32
1442 "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
1443 (build-system ruby-build-system)
1444 (arguments
1445 '(#:tests? #f)) ; no tests
1446 (synopsis "Optimized XML library for Ruby")
1447 (description
1448 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
1449written as a native C extension. It was designed to be an alternative to
1450Nokogiri and other Ruby XML parsers for generic XML parsing and as an
1451alternative to Marshal for Object serialization. ")
1452 (home-page "http://www.ohler.com/ox")
1453 (license license:expat)))
4a9e0585
DT
1454
1455(define-public ruby-pg
1456 (package
1457 (name "ruby-pg")
1458 (version "0.18.2")
1459 (source
1460 (origin
1461 (method url-fetch)
1462 (uri (rubygems-uri "pg" version))
1463 (sha256
1464 (base32
1465 "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
1466 (build-system ruby-build-system)
1467 (arguments
1468 '(#:test-target "spec"))
1469 (native-inputs
1470 `(("ruby-rake-compiler" ,ruby-rake-compiler)
1471 ("ruby-hoe" ,ruby-hoe)
1472 ("ruby-rspec" ,ruby-rspec)))
1473 (inputs
1474 `(("postgresql" ,postgresql)))
1475 (synopsis "Ruby interface to PostgreSQL")
1476 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
1477with PostgreSQL 8.4 and later.")
1478 (home-page "https://bitbucket.org/ged/ruby-pg")
1479 (license license:ruby)))
468e5657
DT
1480
1481(define-public ruby-byebug
1482 (package
1483 (name "ruby-byebug")
1484 (version "6.0.2")
1485 (source
1486 (origin
1487 (method url-fetch)
1488 (uri (rubygems-uri "byebug" version))
1489 (sha256
1490 (base32
1491 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
1492 (build-system ruby-build-system)
1493 (arguments
1494 '(#:tests? #f)) ; no tests
1495 (synopsis "Debugger for Ruby 2")
1496 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
1497TracePoint C API for execution control and the Debug Inspector C API for call
1498stack navigation. The core component provides support that front-ends can
1499build on. It provides breakpoint handling and bindings for stack frames among
1500other things and it comes with a command line interface.")
1501 (home-page "http://github.com/deivid-rodriguez/byebug")
1502 (license license:bsd-2)))
64b6ccc3
DT
1503
1504(define-public ruby-rack
1505 (package
1506 (name "ruby-rack")
1507 (version "1.6.4")
1508 (source
1509 (origin
1510 (method url-fetch)
1511 (uri (rubygems-uri "rack" version))
1512 (sha256
1513 (base32
1514 "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
1515 (build-system ruby-build-system)
1516 (arguments
1517 '(#:phases
1518 (modify-phases %standard-phases
1519 (add-before 'check 'fix-tests
1520 (lambda _
1521 ;; A few of the tests use the length of a file on disk for
1522 ;; Content-Length and Content-Range headers. However, this file
1523 ;; has a shebang in it which an earlier phase patches, growing
1524 ;; the file size from 193 to 239 bytes when the store prefix is
1525 ;; "/gnu/store".
1526 (let ((size-diff (- (string-length (which "ruby"))
1527 (string-length "/usr/bin/env ruby"))))
1528 (substitute* '("test/spec_file.rb")
1529 (("193")
1530 (number->string (+ 193 size-diff)))
1531 (("bytes(.)22-33" all delimiter)
1532 (string-append "bytes"
1533 delimiter
1534 (number->string (+ 22 size-diff))
1535 "-"
1536 (number->string (+ 33 size-diff))))))
1537 #t)))))
1538 (native-inputs
1539 `(("ruby-bacon" ,ruby-bacon)))
1540 (synopsis "Unified web application interface for Ruby")
1541 (description "Rack provides a minimal, modular and adaptable interface for
1542developing web applications in Ruby. By wrapping HTTP requests and responses,
1543it unifies the API for web servers, web frameworks, and software in between
1544into a single method call.")
1545 (home-page "http://rack.github.io/")
1546 (license license:expat)))
62e4cc5a 1547
6aaa815e
PP
1548(define-public ruby-docile
1549 (package
1550 (name "ruby-docile")
1551 (version "1.1.5")
1552 (source
1553 (origin
1554 (method url-fetch)
1555 (uri (rubygems-uri "docile" version))
1556 (sha256
1557 (base32
1558 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
1559 (build-system ruby-build-system)
1560 (arguments
1561 '(#:tests? #f)) ; needs github-markup, among others
1562 (synopsis "Ruby EDSL helper library")
1563 (description "Docile is a Ruby library that provides an interface for
1564creating embedded domain specific languages (EDSLs) that manipulate existing
1565Ruby classes.")
1566 (home-page "https://ms-ati.github.io/docile/")
1567 (license license:expat)))
1568
62e4cc5a
PP
1569(define-public ruby-gherkin3
1570 (package
1571 (name "ruby-gherkin3")
1572 (version "3.1.1")
1573 (source
1574 (origin
1575 (method url-fetch)
1576 (uri (rubygems-uri "gherkin3" version))
1577 (sha256
1578 (base32
1579 "0xsyxhqa1gwcxzvsdy4didaiq5vam8ma3fbwbw2w60via4k6r1z9"))))
1580 (build-system ruby-build-system)
1581 (native-inputs
1582 `(("bundler" ,bundler)))
1583 (arguments
1584 '(#:tests? #f)) ; needs simplecov, among others
1585 (synopsis "Gherkin parser for Ruby")
1586 (description "Gherkin 3 is a parser and compiler for the Gherkin language.
1587It is intended to replace Gherkin 2 and be used by all Cucumber
1588implementations to parse '.feature' files.")
1589 (home-page "https://github.com/cucumber/gherkin3")
1590 (license license:expat)))
cd89fecb
PP
1591
1592(define-public ruby-cucumber-core
1593 (package
1594 (name "ruby-cucumber-core")
1595 (version "1.3.0")
1596 (source
1597 (origin
1598 (method url-fetch)
1599 (uri (rubygems-uri "cucumber-core" version))
1600 (sha256
1601 (base32
1602 "12mrzf0s96izpq0k10lahlkgwc4fjs0zfs344rh8r8h3w3jyppr8"))))
1603 (build-system ruby-build-system)
1604 (propagated-inputs
1605 `(("ruby-gherkin3" ,ruby-gherkin3)))
1606 (native-inputs
1607 `(("bundler" ,bundler)))
1608 (arguments
1609 '(#:tests? #f)) ; needs simplecov, among others
1610 (synopsis "Core library for the Cucumber BDD app")
1611 (description "Cucumber is a tool for running automated tests
1612written in plain language. Because they're written in plain language,
1613they can be read by anyone on your team. Because they can be read by
1614anyone, you can use them to help improve communication, collaboration
1615and trust on your team.")
1616 (home-page "https://cucumber.io/")
1617 (license license:expat)))
212d563d
PP
1618
1619(define-public ruby-bio-logger
1620 (package
1621 (name "ruby-bio-logger")
1622 (version "1.0.1")
1623 (source
1624 (origin
1625 (method url-fetch)
1626 (uri (rubygems-uri "bio-logger" version))
1627 (sha256
1628 (base32
1629 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
1630 (build-system ruby-build-system)
1631 (arguments
1632 `(#:tests? #f)) ; rake errors, missing shoulda
1633 (propagated-inputs
1634 `(("ruby-log4r" ,ruby-log4r)))
1635 (synopsis "Log4r wrapper for Ruby")
1636 (description "Bio-logger is a wrapper around Log4r adding extra logging
1637features such as filtering and fine grained logging.")
1638 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
1639 (license license:expat)))
07f61cb2
BW
1640
1641(define-public ruby-yard
1642 (package
1643 (name "ruby-yard")
1644 (version "0.8.7.6")
1645 (source
1646 (origin
1647 (method url-fetch)
1648 (uri (rubygems-uri "yard" version))
1649 (sha256
1650 (base32
1651 "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x"))))
1652 (build-system ruby-build-system)
1653 (arguments
1654 `(#:test-target "specs"
1655 #:phases
1656 (modify-phases %standard-phases
1657 (add-before 'check 'set-HOME
1658 ;; $HOME needs to be set to somewhere writeable for tests to run
1659 (lambda _ (setenv "HOME" "/tmp") #t)))))
1660 (native-inputs
1661 `(("ruby-rspec" ,ruby-rspec-2)
1662 ("ruby-rack" ,ruby-rack)))
1663 (synopsis "Documentation generation tool for Ruby")
1664 (description
1665 "YARD is a documentation generation tool for the Ruby programming
1666language. It enables the user to generate consistent, usable documentation
1667that can be exported to a number of formats very easily, and also supports
1668extending for custom Ruby constructs such as custom class level definitions.")
1669 (home-page "http://yardoc.org")
1670 (license license:expat)))
2cbcd23a
DT
1671
1672(define-public ruby-eventmachine
1673 (package
1674 (name "ruby-eventmachine")
1675 (version "1.0.8")
1676 (source
1677 (origin
1678 (method url-fetch)
1679 (uri (rubygems-uri "eventmachine" version))
1680 (sha256
1681 (base32
1682 "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp"))))
1683 (build-system ruby-build-system)
1684 (arguments
1685 '(#:tests? #f)) ; test suite tries to connect to google.com
1686 (native-inputs
1687 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
1688 (synopsis "Single-threaded network event framework for Ruby")
1689 (description
1690 "EventMachine implements a single-threaded engine for arbitrary network
1691communications. EventMachine wraps all interactions with sockets, allowing
1692programs to concentrate on the implementation of network protocols. It can be
1693used to create both network servers and clients.")
1694 (home-page "http://rubyeventmachine.com")
1695 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT