lint: Add 'check-texinfo-markup' checker.
[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>
6ef8c59a 3;;; Copyright © 2014 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>
6ef8c59a
PP
7;;;
8;;; This file is part of GNU Guix.
9;;;
10;;; GNU Guix is free software; you can redistribute it and/or modify it
11;;; under the terms of the GNU General Public License as published by
12;;; the Free Software Foundation; either version 3 of the License, or (at
13;;; your option) any later version.
14;;;
15;;; GNU Guix is distributed in the hope that it will be useful, but
16;;; WITHOUT ANY WARRANTY; without even the implied warranty of
17;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18;;; GNU General Public License for more details.
19;;;
20;;; You should have received a copy of the GNU General Public License
21;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
22
23(define-module (gnu packages ruby)
24 #:use-module ((guix licenses) #:prefix license:)
25 #:use-module (gnu packages)
26 #:use-module (gnu packages compression)
4a9e0585 27 #:use-module (gnu packages databases)
6ef8c59a 28 #:use-module (gnu packages readline)
6ef8c59a 29 #:use-module (gnu packages autotools)
ad79eb55 30 #:use-module (gnu packages java)
6ef8c59a
PP
31 #:use-module (gnu packages libffi)
32 #:use-module (gnu packages gdbm)
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
20c05ea9 261(define-public ruby-diff-lcs
e6962009
DT
262 (package
263 (name "ruby-diff-lcs")
264 (version "1.2.5")
265 (source (origin
266 (method url-fetch)
e83c6d00 267 (uri (rubygems-uri "diff-lcs" version))
e6962009
DT
268 (sha256
269 (base32
e83c6d00 270 "1vf9civd41bnqi6brr5d9jifdw73j9khc6fkhfl1f8r9cpkdvlx1"))))
e6962009
DT
271 (build-system ruby-build-system)
272 (arguments
273 '(#:tests? #f)) ; avoid dependency cycles
274 (synopsis "Compute the difference between two Enumerable sequences")
275 (description "Diff::LCS computes the difference between two Enumerable
276sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
277It includes utilities to create a simple HTML diff output format and a
278standard diff-like tool.")
279 (home-page "https://github.com/halostatue/diff-lcs")
280 (license license:expat)))
281
282(define-public ruby-rspec-expectations
283 (package
284 (name "ruby-rspec-expectations")
285 (version "3.2.1")
286 (source (origin
287 (method url-fetch)
e83c6d00 288 (uri (rubygems-uri "rspec-expectations" version))
e6962009
DT
289 (sha256
290 (base32
e83c6d00 291 "01kmchabgpdcaqdsqg8r0g5gy385xhp1k1jsds3w264ypin17n14"))))
e6962009
DT
292 (build-system ruby-build-system)
293 (arguments
294 '(#:tests? #f)) ; avoid dependency cycles
295 (propagated-inputs
296 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 297 ("ruby-diff-lcs" ,ruby-diff-lcs)))
e881752c 298 (synopsis "RSpec expectations library")
e6962009
DT
299 (description "Rspec-expectations provides a simple API to express expected
300outcomes of a code example.")
301 (home-page "https://github.com/rspec/rspec-expectations")
302 (license license:expat)))
4f2a0cac
DT
303
304(define-public ruby-rspec-mocks
305 (package
306 (name "ruby-rspec-mocks")
307 (version "3.2.1")
308 (source (origin
309 (method url-fetch)
e83c6d00 310 (uri (rubygems-uri "rspec-mocks" version))
4f2a0cac
DT
311 (sha256
312 (base32
e83c6d00 313 "09yig1lwgxl8fsns71z3xhv7wkg7zvagydh37pvaqpw92dz55jv2"))))
4f2a0cac
DT
314 (build-system ruby-build-system)
315 (arguments
316 '(#:tests? #f)) ; avoid dependency cycles
317 (propagated-inputs
318 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 319 ("ruby-diff-lcs" ,ruby-diff-lcs)))
4f2a0cac
DT
320 (synopsis "RSpec stubbing and mocking library")
321 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
322support for stubbing and mocking.")
323 (home-page "https://github.com/rspec/rspec-mocks")
324 (license license:expat)))
d4fde1f2
DT
325
326(define-public ruby-rspec
327 (package
328 (name "ruby-rspec")
329 (version "3.2.0")
330 (source (origin
331 (method url-fetch)
e83c6d00 332 (uri (rubygems-uri "rspec" version))
d4fde1f2
DT
333 (sha256
334 (base32
e83c6d00 335 "0lkz01j4yxcwb3g5w6r1l9khnyw3sxib4rrh4npd2pxh390fcc4f"))))
d4fde1f2
DT
336 (build-system ruby-build-system)
337 (arguments
338 '(#:tests? #f)) ; avoid dependency cycles
339 (propagated-inputs
340 `(("ruby-rspec-core" ,ruby-rspec-core)
341 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
342 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
343 (synopsis "Behavior-driven development framework for Ruby")
344 (description "RSpec is a behavior-driven development (BDD) framework for
345Ruby. This meta-package includes the RSpec test runner, along with the
346expectations and mocks frameworks.")
347 (home-page "http://rspec.info/")
348 (license license:expat)))
2cbc105b
DT
349
350;; Bundler is yet another source of circular dependencies, so we must disable
351;; its test suite as well.
352(define-public bundler
353 (package
354 (name "bundler")
38b327a9 355 (version "1.10.6")
2cbc105b
DT
356 (source (origin
357 (method url-fetch)
e83c6d00 358 (uri (rubygems-uri "bundler" version))
2cbc105b
DT
359 (sha256
360 (base32
38b327a9 361 "1vlzfq0bkkj4jyq6av0y55mh5nj5n0f3mfbmmifwgkh44g8k6agv"))))
2cbc105b
DT
362 (build-system ruby-build-system)
363 (arguments
364 '(#:tests? #f)) ; avoid dependency cycles
365 (synopsis "Ruby gem bundler")
366 (description "Bundler automatically downloads and installs a list of gems
367specified in a \"Gemfile\", as well as their dependencies.")
368 (home-page "http://bundler.io/")
369 (license license:expat)))
98b87b82 370
cf36174f
RW
371(define-public ruby-builder
372 (package
373 (name "ruby-builder")
374 (version "3.2.2")
375 (source (origin
376 (method url-fetch)
377 (uri (rubygems-uri "builder" version))
378 (sha256
379 (base32
380 "14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2"))))
381 (build-system ruby-build-system)
382 (arguments
383 `(#:phases
384 (modify-phases %standard-phases
385 (add-after 'unpack 'do-not-use-rvm
386 (lambda _
387 (substitute* "rakelib/tags.rake"
388 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
389 #t)))))
390 (synopsis "Ruby library to create structured data")
391 (description "Builder provides a number of builder objects that make it
392easy to create structured data. Currently the following builder objects are
393supported: XML Markup and XML Events.")
394 (home-page "https://github.com/jimweirich/builder")
395 (license license:expat)))
396
ad79eb55
RW
397(define-public ruby-rjb
398 (package
399 (name "ruby-rjb")
400 (version "1.5.3")
401 (source (origin
402 (method url-fetch)
403 (uri (rubygems-uri "rjb" version))
404 (sha256
405 (base32
406 "0gzs92dagk981s4vrymnqg0vll783b9k564j0cdgp167nc5a2zg4"))))
407 (build-system ruby-build-system)
408 (arguments
409 `(#:tests? #f ; no rakefile
410 #:phases
411 (modify-phases %standard-phases
412 (add-before 'build 'set-java-home
413 (lambda* (#:key inputs #:allow-other-keys)
414 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
415 #t)))))
416 (native-inputs
417 `(("jdk" ,icedtea7 "jdk")))
418 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
419 (description "RJB is a bridge program that connects Ruby and Java via the
420Java Native Interface.")
421 (home-page "http://www.artonx.org/collabo/backyard/?RubyJavaBridge")
422 (license license:lgpl2.1+)))
423
71a03c29
RW
424(define-public ruby-atoulme-antwrap
425 (package
426 (name "ruby-atoulme-antwrap")
427 (version "0.7.5")
428 (source (origin
429 (method url-fetch)
430 (uri (rubygems-uri "atoulme-Antwrap" version))
431 (sha256
432 (base32
433 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
434 (build-system ruby-build-system)
435 ;; Test data required for most of the tests are not included.
436 (arguments `(#:tests? #f))
437 (native-inputs
438 `(("ruby-hoe" ,ruby-hoe)))
439 (inputs
440 `(("ruby-rjb" ,ruby-rjb)))
441 (synopsis "Ruby wrapper for the Ant build tool")
442 (description "Antwrap is a Ruby module that wraps the Apache Ant build
443tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
444script.")
445 (home-page "http://rubyforge.org/projects/antwrap/")
446 (license license:expat)))
447
cc53e630
RW
448(define-public ruby-orderedhash
449 (package
450 (name "ruby-orderedhash")
451 (version "0.0.6")
452 (source (origin
453 (method url-fetch)
454 (uri (rubygems-uri "orderedhash" version))
455 (sha256
456 (base32
457 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
458 (build-system ruby-build-system)
459 (arguments
460 '(#:tests? #f)) ; no test suite
461 (synopsis "Ruby library providing an order-preserving hash")
462 (description "Orderedhash is a Ruby library providing a hash
463implementation that preserves the order of items and features some array-like
464extensions.")
465 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
466 (license license:public-domain)))
467
8b9bde07
RW
468(define-public ruby-xml-simple
469 (package
470 (name "ruby-xml-simple")
471 (version "1.1.5")
472 (source (origin
473 (method url-fetch)
474 (uri (rubygems-uri "xml-simple" version))
475 (sha256
476 (base32
477 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
478 (build-system ruby-build-system)
479 (arguments
480 '(#:tests? #f)) ; no test suite
481 (synopsis "Simple Ruby library for XML processing")
482 (description "This library provides a simple API for XML processing in
483Ruby.")
484 (home-page "https://github.com/maik/xml-simple")
485 (license license:ruby)))
486
2cb3ab48
RW
487(define-public ruby-thor
488 (package
489 (name "ruby-thor")
490 (version "0.19.1")
491 (source (origin
492 (method url-fetch)
493 (uri (rubygems-uri "thor" version))
494 (sha256
495 (base32
496 "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z"))))
497 (build-system ruby-build-system)
498 (arguments
499 '(#:tests? #f)) ; no test suite
500 (native-inputs
501 `(("bundler" ,bundler)))
502 (synopsis "Ruby toolkit for building command-line interfaces")
503 (description "Thor is a toolkit for building powerful command-line
504interfaces.")
505 (home-page "http://whatisthor.com/")
506 (license license:expat)))
507
98b87b82
DT
508(define-public ruby-useragent
509 (package
510 (name "ruby-useragent")
511 (version "0.13.3")
512 (source (origin
513 (method url-fetch)
e83c6d00 514 (uri (rubygems-uri "useragent" version))
98b87b82
DT
515 (sha256
516 (base32
e83c6d00 517 "0kz7yyz7528bv4a2kfymvkcm8whqcddhmgaw1ksw1d90n30hhkpc"))))
98b87b82
DT
518 (build-system ruby-build-system)
519 (arguments
e83c6d00 520 '(#:tests? #f)) ; no test suite
98b87b82
DT
521 (synopsis "HTTP user agent parser for Ruby")
522 (description "UserAgent is a Ruby library that parses and compares HTTP
523User Agents.")
524 (home-page "https://github.com/gshutler/useragent")
525 (license license:expat)))
96086cc5
DT
526
527(define-public ruby-bacon
528 (package
529 (name "ruby-bacon")
e83c6d00 530 (version "1.2.0")
96086cc5
DT
531 (source (origin
532 (method url-fetch)
e83c6d00 533 (uri (rubygems-uri "bacon" version))
96086cc5
DT
534 (sha256
535 (base32
e83c6d00 536 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
96086cc5 537 (build-system ruby-build-system)
96086cc5
DT
538 (synopsis "Small RSpec clone")
539 (description "Bacon is a small RSpec clone providing all essential
540features.")
541 (home-page "https://github.com/chneukirchen/bacon")
542 (license license:expat)))
de59d316
DT
543
544(define-public ruby-arel
545 (package
546 (name "ruby-arel")
547 (version "6.0.0")
548 (source (origin
549 (method url-fetch)
e83c6d00 550 (uri (rubygems-uri "arel" version))
de59d316
DT
551 (sha256
552 (base32
e83c6d00 553 "18wnfnzr2i5p3fygsddjbi1cimws6823nbk8drxidmnj8jz7h0ar"))))
de59d316 554 (build-system ruby-build-system)
e83c6d00
DT
555 (arguments
556 '(#:tests? #f)) ; no test suite
de59d316
DT
557 (synopsis "SQL AST manager for Ruby")
558 (description "Arel is a SQL AST manager for Ruby. It simplifies the
559generation of complex SQL queries and adapts to various relational database
560implementations.")
561 (home-page "https://github.com/rails/arel")
562 (license license:expat)))
e259bdf0
DT
563
564(define-public ruby-connection-pool
565 (package
566 (name "ruby-connection-pool")
567 (version "2.2.0")
568 (source (origin
569 (method url-fetch)
e83c6d00 570 (uri (rubygems-uri "connection_pool" version))
e259bdf0
DT
571 (sha256
572 (base32
e83c6d00 573 "1b2bb3k39ni5mzcnqlv9y4yjkbin20s7dkwzp0jw2jf1rmzcgrmy"))))
e259bdf0
DT
574 (build-system ruby-build-system)
575 (native-inputs
576 `(("bundler" ,bundler)))
577 (synopsis "Generic connection pool for Ruby")
578 (description "Connection_pool provides a generic connection pooling
579interface for Ruby programs.")
580 (home-page "https://github.com/mperham/connection_pool")
581 (license license:expat)))
4c0aeb44
DT
582
583(define-public ruby-net-http-persistent
584 (package
585 (name "ruby-net-http-persistent")
586 (version "2.9.4")
587 (source (origin
588 (method url-fetch)
e83c6d00 589 (uri (rubygems-uri "net-http-persistent" version))
4c0aeb44
DT
590 (sha256
591 (base32
e83c6d00 592 "1y9fhaax0d9kkslyiqi1zys6cvpaqx9a0y0cywp24rpygwh4s9r4"))))
4c0aeb44 593 (build-system ruby-build-system)
4c0aeb44
DT
594 (native-inputs
595 `(("ruby-connection-pool" ,ruby-connection-pool)
596 ("ruby-hoe" ,ruby-hoe)))
597 (synopsis "Persistent HTTP connection manager")
598 (description "Net::HTTP::Persistent manages persistent HTTP connections
599using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
600 (home-page "https://github.com/drbrain/net-http-persistent")
601 (license license:expat)))
afbbdf77 602
2206e948
DT
603(define-public ruby-minitest
604 (package
605 (name "ruby-minitest")
606 (version "5.7.0")
607 (source (origin
e83c6d00
DT
608 (method url-fetch)
609 (uri (rubygems-uri "minitest" version))
2206e948
DT
610 (sha256
611 (base32
e83c6d00 612 "0rxqfakp629mp3vwda7zpgb57lcns5znkskikbfd0kriwv8i1vq8"))))
2206e948 613 (build-system ruby-build-system)
2206e948
DT
614 (native-inputs
615 `(("ruby-hoe" ,ruby-hoe)))
616 (synopsis "Small test suite library for Ruby")
617 (description "Minitest provides a complete suite of Ruby testing
618facilities supporting TDD, BDD, mocking, and benchmarking.")
619 (home-page "https://github.com/seattlerb/minitest")
620 (license license:expat)))
621
35130835
DT
622(define-public ruby-minitest-sprint
623 (package
624 (name "ruby-minitest-sprint")
625 (version "1.1.0")
626 (source (origin
e83c6d00
DT
627 (method url-fetch)
628 (uri (rubygems-uri "minitest-sprint" version))
35130835
DT
629 (sha256
630 (base32
e83c6d00 631 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
35130835 632 (build-system ruby-build-system)
35130835
DT
633 (native-inputs
634 `(("ruby-hoe" ,ruby-hoe)
635 ("ruby-minitest" ,ruby-minitest)))
636 (synopsis "Fast test suite runner for minitest")
637 (description "Minitest-sprint is a test runner for minitest that makes it
638easier to re-run individual failing tests.")
639 (home-page "https://github.com/seattlerb/minitest-sprint")
640 (license license:expat)))
641
0808e361
DT
642(define-public ruby-minitest-bacon
643 (package
644 (name "ruby-minitest-bacon")
645 (version "1.0.2")
646 (source (origin
e83c6d00
DT
647 (method url-fetch)
648 (uri (rubygems-uri "minitest-bacon" version))
0808e361
DT
649 (sha256
650 (base32
e83c6d00 651 "0cm7r68422743i3b6fm4rrm0r6cnnjmglq5gcmmgl1f0rk5hnf6r"))))
0808e361 652 (build-system ruby-build-system)
0808e361
DT
653 (native-inputs
654 `(("ruby-hoe" ,ruby-hoe)))
655 (inputs
656 `(("ruby-minitest" ,ruby-minitest)))
657 (synopsis "Bacon compatibility library for minitest")
658 (description "Minitest-bacon extends minitest with bacon-like
659functionality, making it easier to migrate test suites from bacon to minitest.")
660 (home-page "https://github.com/seattlerb/minitest-bacon")
661 (license license:expat)))
662
afbbdf77
DT
663(define-public ruby-daemons
664 (package
665 (name "ruby-daemons")
666 (version "1.2.2")
667 (source (origin
668 (method url-fetch)
e83c6d00 669 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
670 (sha256
671 (base32
e83c6d00 672 "121c7vkimg3baxga69xvdkwxiq8wkmxqvdbyqi5i82vhih5d3cn3"))))
afbbdf77
DT
673 (build-system ruby-build-system)
674 (arguments
675 `(#:tests? #f)) ; no test suite
676 (synopsis "Daemonize Ruby programs")
677 (description "Daemons provides a way to wrap existing Ruby scripts to be
678run as a daemon and to be controlled by simple start/stop/restart commands.")
679 (home-page "https://github.com/thuehlinger/daemons")
680 (license license:expat)))
66e20863
DT
681
682(define-public ruby-git
683 (package
684 (name "ruby-git")
685 (version "1.2.9.1")
686 (source (origin
687 (method url-fetch)
e83c6d00 688 (uri (rubygems-uri "git" version))
66e20863
DT
689 (sha256
690 (base32
e83c6d00 691 "1sqfj8lmhl7c5zamcckkpik4izfph2zkv6krw0i8mzj5pdws5acs"))))
66e20863
DT
692 (build-system ruby-build-system)
693 (arguments
e83c6d00
DT
694 `(#:tests? #f ; no tests
695 #:phases (modify-phases %standard-phases
696 (add-after 'install 'patch-git-binary
697 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
698 ;; Make the default git binary an absolute path to the
699 ;; store.
e83c6d00
DT
700 (let ((git (string-append (assoc-ref inputs "git")
701 "/bin/git"))
702 (config (string-append (getenv "GEM_HOME")
703 "/gems/git-" ,version
704 "/lib/git/config.rb")))
705 (substitute* (list config)
66e20863
DT
706 (("'git'")
707 (string-append "'" git "'")))
e83c6d00 708 #t))))))
66e20863
DT
709 (inputs
710 `(("git" ,git)))
711 (synopsis "Ruby wrappers for Git")
712 (description "Ruby/Git is a Ruby library that can be used to create, read
713and manipulate Git repositories by wrapping system calls to the git binary.")
714 (home-page "https://github.com/schacon/ruby-git")
715 (license license:expat)))
71d3e2c2
DT
716
717(define-public ruby-slop
718 (package
719 (name "ruby-slop")
720 (version "4.1.0")
721 (source (origin
722 (method url-fetch)
e83c6d00 723 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
724 (sha256
725 (base32
e83c6d00 726 "0dj0ps6v1mqd02k84mgwd7hp578n2bzl7c51h3grdhxfl3jkfsj5"))))
71d3e2c2
DT
727 (build-system ruby-build-system)
728 (native-inputs
729 `(("ruby-minitest" ,ruby-minitest)))
730 (synopsis "Ruby command line option parser")
731 (description "Slop provides a Ruby domain specific language for gathering
732options and parsing command line flags.")
733 (home-page "https://github.com/leejarvis/slop")
734 (license license:expat)))
e778a549 735
5337f8b9
DT
736(define-public ruby-slop-3
737 (package (inherit ruby-slop)
738 (version "3.6.0")
739 (source (origin
740 (method url-fetch)
741 (uri (rubygems-uri "slop" version))
742 (sha256
743 (base32
744 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
745
e778a549
DT
746(define-public ruby-multipart-post
747 (package
748 (name "ruby-multipart-post")
749 (version "2.0.0")
750 (source (origin
751 (method url-fetch)
e83c6d00 752 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
753 (sha256
754 (base32
e83c6d00 755 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
756 (build-system ruby-build-system)
757 (native-inputs
758 `(("bundler" ,bundler)))
759 (synopsis "Multipart POST library for Ruby")
760 (description "Multipart-Post Adds multipart POST capability to Ruby's
761net/http library.")
762 (home-page "https://github.com/nicksieger/multipart-post")
763 (license license:expat)))
f8da3af0
DT
764
765(define-public ruby-arel
766 (package
767 (name "ruby-arel")
768 (version "6.0.3")
769 (source (origin
770 (method url-fetch)
771 (uri (rubygems-uri "arel" version))
772 (sha256
773 (base32
774 "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk"))))
775 (build-system ruby-build-system)
776 (arguments '(#:tests? #f)) ; no tests
777 (home-page "https://github.com/rails/arel")
778 (synopsis "SQL AST manager for Ruby")
779 (description "Arel is a SQL AST manager for Ruby. It simplifies the
780generation of complex SQL queries and is compatible with various RDBMSes.")
781 (license license:expat)))
616eaead
DT
782
783(define-public ruby-minitar
784 (package
785 (name "ruby-minitar")
786 (version "0.5.4")
787 (source
788 (origin
789 (method url-fetch)
790 (uri (rubygems-uri "minitar" version))
791 (sha256
792 (base32
793 "1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka"))))
794 (build-system ruby-build-system)
795 (arguments
796 '(#:tests? #f)) ; missing a gemspec
797 (synopsis "Ruby library and utility for handling tar archives")
798 (description
799 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
800that provides the ability to deal with POSIX tar archive files.")
801 (home-page "http://www.github.com/atoulme/minitar")
802 (license (list license:gpl2+ license:ruby))))
bea1c0e2
DT
803
804(define-public ruby-mini-portile
805 (package
806 (name "ruby-mini-portile")
807 (version "0.6.2")
808 (source
809 (origin
810 (method url-fetch)
811 (uri (rubygems-uri "mini_portile" version))
812 (sha256
813 (base32
814 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
815 (build-system ruby-build-system)
816 (arguments
817 '(#:tests? #f)) ; tests require network access
818 (synopsis "Ports system for Ruby developers")
819 (description "Mini-portile is a port/recipe system for Ruby developers.
820It provides a standard way to compile against specific versions of libraries
821to reproduce user environments.")
822 (home-page "http://github.com/flavorjones/mini_portile")
823 (license license:expat)))
e920bfca
DT
824
825(define-public ruby-nokogiri
826 (package
827 (name "ruby-nokogiri")
828 (version "1.6.6.2")
829 (source (origin
830 (method url-fetch)
831 (uri (rubygems-uri "nokogiri" version))
832 (sha256
833 (base32
834 "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30"))))
835 (build-system ruby-build-system)
836 (arguments
837 ;; Tests fail because Nokogiri can only test with an installed extension,
838 ;; and also because many test framework dependencies are missing.
839 '(#:tests? #f
840 #:gem-flags (list "--" "--use-system-libraries"
841 (string-append "--with-xml2-include="
842 (assoc-ref %build-inputs "libxml2")
843 "/include/libxml2" ))))
844 (native-inputs
845 `(("ruby-hoe" ,ruby-hoe)
846 ("ruby-rake-compiler", ruby-rake-compiler)))
847 (inputs
848 `(("zlib" ,zlib)
849 ("libxml2" ,libxml2)
850 ("libxslt" ,libxslt)))
851 (propagated-inputs
852 `(("ruby-mini-portile" ,ruby-mini-portile)))
853 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
854 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
855both CSS3 selector and XPath 1.0 support.")
856 (home-page "http://www.nokogiri.org/")
857 (license license:expat)))
30b0b725
DT
858
859(define-public ruby-method-source
860 (package
861 (name "ruby-method-source")
862 (version "0.8.2")
863 (source
864 (origin
865 (method url-fetch)
866 (uri (rubygems-uri "method_source" version))
867 (sha256
868 (base32
869 "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
870 (build-system ruby-build-system)
871 (native-inputs
872 `(("ruby-bacon" ,ruby-bacon)
873 ("git" ,git)))
874 (synopsis "Retrieve the source code for Ruby methods")
875 (description "Method_source retrieves the source code for Ruby methods.
876Additionally, it can extract source code from Proc and Lambda objects or just
877extract comments.")
878 (home-page "https://github.com/banister/method_source")
879 (license license:expat)))
2e3fdea4
DT
880
881(define-public ruby-coderay
882 (package
883 (name "ruby-coderay")
884 (version "1.1.0")
885 (source
886 (origin
887 (method url-fetch)
888 (uri (rubygems-uri "coderay" version))
889 (sha256
890 (base32
891 "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
892 (build-system ruby-build-system)
893 (arguments
894 '(#:tests? #f)) ; missing test files
895 (synopsis "Ruby syntax highlighting library")
896 (description "Coderay is a Ruby library that provides syntax highlighting
897for select languages.")
898 (home-page "http://coderay.rubychan.de")
899 (license license:expat)))
96e76083
DT
900
901(define-public ruby-pry
902 (package
903 (name "ruby-pry")
904 (version "0.10.1")
905 (source
906 (origin
907 (method url-fetch)
908 (uri (rubygems-uri "pry" version))
909 (sha256
910 (base32
911 "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
912 (build-system ruby-build-system)
913 (arguments
914 '(#:tests? #f)) ; no tests
915 (propagated-inputs
916 `(("ruby-coderay" ,ruby-coderay)
917 ("ruby-method-source" ,ruby-method-source)
918 ("ruby-slop" ,ruby-slop-3)))
919 (synopsis "Ruby REPL")
920 (description "Pry is an IRB alternative and runtime developer console for
921Ruby. It features syntax highlighting, a plugin architecture, runtime
922invocation, and source and documentation browsing.")
923 (home-page "http://pryrepl.org")
924 (license license:expat)))
1415792a
DT
925
926(define-public ruby-thread-safe
927 (package
928 (name "ruby-thread-safe")
929 (version "0.3.5")
930 (source
931 (origin
932 (method url-fetch)
933 (uri (rubygems-uri "thread_safe" version))
934 (sha256
935 (base32
936 "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
937 (build-system ruby-build-system)
938 (arguments
939 '(#:tests? #f)) ; needs simplecov, among others
940 (synopsis "Thread-safe utilities for Ruby")
941 (description "The thread_safe library provides thread-safe collections and
942utilities for Ruby.")
943 (home-page "https://github.com/ruby-concurrency/thread_safe")
944 (license license:asl2.0)))
08a1b701
DT
945
946(define-public ruby-tzinfo
947 (package
948 (name "ruby-tzinfo")
949 (version "1.2.2")
950 (source
951 (origin
952 (method url-fetch)
953 (uri (rubygems-uri "tzinfo" version))
954 (sha256
955 (base32
956 "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
957 (build-system ruby-build-system)
958 (propagated-inputs
959 `(("ruby-thread-safe" ,ruby-thread-safe)))
960 (synopsis "Time zone library for Ruby")
961 (description "TZInfo is a Ruby library that provides daylight savings
962aware transformations between times in different time zones.")
963 (home-page "http://tzinfo.github.io")
964 (license license:expat)))
c99e2247
DT
965
966(define-public ruby-json
967 (package
968 (name "ruby-json")
969 (version "1.8.3")
970 (source
971 (origin
972 (method url-fetch)
973 (uri (rubygems-uri "json" version))
974 (sha256
975 (base32
976 "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
977 (build-system ruby-build-system)
978 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
979 (synopsis "JSON library for Ruby")
980 (description "This Ruby library provides a JSON implementation written as
981a native C extension.")
982 (home-page "http://json-jruby.rubyforge.org/")
983 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b
DT
984
985(define-public ruby-activesupport
986 (package
987 (name "ruby-activesupport")
988 (version "4.2.4")
989 (source
990 (origin
991 (method url-fetch)
992 (uri (rubygems-uri "activesupport" version))
993 (sha256
994 (base32
995 "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
996 (build-system ruby-build-system)
997 (arguments
998 '(#:tests? #f)) ; no tests
999 (propagated-inputs
1000 `(("ruby-i18n" ,ruby-i18n)
1001 ("ruby-json" ,ruby-json)
1002 ("ruby-minitest" ,ruby-minitest)
1003 ("ruby-thread-safe" ,ruby-thread-safe)
1004 ("ruby-tzinfo" ,ruby-tzinfo)))
1005 (synopsis "Ruby on Rails utility library")
1006 (description "ActiveSupport is a toolkit of support libraries and Ruby
1007core extensions extracted from the Rails framework. It includes support for
1008multibyte strings, internationalization, time zones, and testing.")
1009 (home-page "http://www.rubyonrails.org")
1010 (license license:expat)))
f847ad7b
DT
1011
1012(define-public ruby-ox
1013 (package
1014 (name "ruby-ox")
1015 (version "2.2.1")
1016 (source
1017 (origin
1018 (method url-fetch)
1019 (uri (rubygems-uri "ox" version))
1020 (sha256
1021 (base32
1022 "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
1023 (build-system ruby-build-system)
1024 (arguments
1025 '(#:tests? #f)) ; no tests
1026 (synopsis "Optimized XML library for Ruby")
1027 (description
1028 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
1029written as a native C extension. It was designed to be an alternative to
1030Nokogiri and other Ruby XML parsers for generic XML parsing and as an
1031alternative to Marshal for Object serialization. ")
1032 (home-page "http://www.ohler.com/ox")
1033 (license license:expat)))
4a9e0585
DT
1034
1035(define-public ruby-pg
1036 (package
1037 (name "ruby-pg")
1038 (version "0.18.2")
1039 (source
1040 (origin
1041 (method url-fetch)
1042 (uri (rubygems-uri "pg" version))
1043 (sha256
1044 (base32
1045 "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
1046 (build-system ruby-build-system)
1047 (arguments
1048 '(#:test-target "spec"))
1049 (native-inputs
1050 `(("ruby-rake-compiler" ,ruby-rake-compiler)
1051 ("ruby-hoe" ,ruby-hoe)
1052 ("ruby-rspec" ,ruby-rspec)))
1053 (inputs
1054 `(("postgresql" ,postgresql)))
1055 (synopsis "Ruby interface to PostgreSQL")
1056 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
1057with PostgreSQL 8.4 and later.")
1058 (home-page "https://bitbucket.org/ged/ruby-pg")
1059 (license license:ruby)))
468e5657
DT
1060
1061(define-public ruby-byebug
1062 (package
1063 (name "ruby-byebug")
1064 (version "6.0.2")
1065 (source
1066 (origin
1067 (method url-fetch)
1068 (uri (rubygems-uri "byebug" version))
1069 (sha256
1070 (base32
1071 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
1072 (build-system ruby-build-system)
1073 (arguments
1074 '(#:tests? #f)) ; no tests
1075 (synopsis "Debugger for Ruby 2")
1076 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
1077TracePoint C API for execution control and the Debug Inspector C API for call
1078stack navigation. The core component provides support that front-ends can
1079build on. It provides breakpoint handling and bindings for stack frames among
1080other things and it comes with a command line interface.")
1081 (home-page "http://github.com/deivid-rodriguez/byebug")
1082 (license license:bsd-2)))
64b6ccc3
DT
1083
1084(define-public ruby-rack
1085 (package
1086 (name "ruby-rack")
1087 (version "1.6.4")
1088 (source
1089 (origin
1090 (method url-fetch)
1091 (uri (rubygems-uri "rack" version))
1092 (sha256
1093 (base32
1094 "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
1095 (build-system ruby-build-system)
1096 (arguments
1097 '(#:phases
1098 (modify-phases %standard-phases
1099 (add-before 'check 'fix-tests
1100 (lambda _
1101 ;; A few of the tests use the length of a file on disk for
1102 ;; Content-Length and Content-Range headers. However, this file
1103 ;; has a shebang in it which an earlier phase patches, growing
1104 ;; the file size from 193 to 239 bytes when the store prefix is
1105 ;; "/gnu/store".
1106 (let ((size-diff (- (string-length (which "ruby"))
1107 (string-length "/usr/bin/env ruby"))))
1108 (substitute* '("test/spec_file.rb")
1109 (("193")
1110 (number->string (+ 193 size-diff)))
1111 (("bytes(.)22-33" all delimiter)
1112 (string-append "bytes"
1113 delimiter
1114 (number->string (+ 22 size-diff))
1115 "-"
1116 (number->string (+ 33 size-diff))))))
1117 #t)))))
1118 (native-inputs
1119 `(("ruby-bacon" ,ruby-bacon)))
1120 (synopsis "Unified web application interface for Ruby")
1121 (description "Rack provides a minimal, modular and adaptable interface for
1122developing web applications in Ruby. By wrapping HTTP requests and responses,
1123it unifies the API for web servers, web frameworks, and software in between
1124into a single method call.")
1125 (home-page "http://rack.github.io/")
1126 (license license:expat)))