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