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