gnu: Add aria2.
[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)
ac09beba 33 #:use-module (gnu packages python)
763624f5 34 #:use-module (gnu packages ragel)
cc2b77df 35 #:use-module (gnu packages tls)
66e20863 36 #:use-module (gnu packages version-control)
6ef8c59a
PP
37 #:use-module (guix packages)
38 #:use-module (guix download)
bda0c139 39 #:use-module (guix git-download)
6ef8c59a 40 #:use-module (guix utils)
acf735f2 41 #:use-module (guix build-system gnu)
e920bfca 42 #:use-module (gnu packages xml)
c2c4e5b2 43 #:use-module (gnu packages web)
acf735f2 44 #:use-module (guix build-system ruby))
6ef8c59a
PP
45
46(define-public ruby
47 (package
48 (name "ruby")
e99711af 49 (version "2.2.4")
6ef8c59a
PP
50 (source
51 (origin
52 (method url-fetch)
6becfdff
MW
53 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
54 (version-major+minor version)
12d39eb5 55 "/ruby-" version ".tar.xz"))
6ef8c59a
PP
56 (sha256
57 (base32
e99711af 58 "0g3ps4q3iz7wj9m45n8xyxzw8nh29ljdqb87b0f6i0p3853gz2yj"))))
6ef8c59a
PP
59 (build-system gnu-build-system)
60 (arguments
61 `(#:test-target "test"
62 #:parallel-tests? #f
63 #:phases
12d39eb5
DT
64 (alist-cons-before
65 'configure 'replace-bin-sh
6ef8c59a 66 (lambda _
12d39eb5
DT
67 (substitute* '("Makefile.in"
68 "ext/pty/pty.c"
69 "io.c"
70 "lib/mkmf.rb"
71 "process.c"
72 "test/rubygems/test_gem_ext_configure_builder.rb"
73 "test/rdoc/test_rdoc_parser.rb"
74 "test/ruby/test_rubyoptions.rb"
75 "test/ruby/test_process.rb"
76 "test/ruby/test_system.rb"
77 "tool/rbinstall.rb")
78 (("/bin/sh") (which "sh"))))
79 %standard-phases)))
6ef8c59a
PP
80 (inputs
81 `(("readline" ,readline)
6ef8c59a
PP
82 ("openssl" ,openssl)
83 ("libffi" ,libffi)
84 ("gdbm" ,gdbm)
85 ("zlib" ,zlib)))
86 (native-search-paths
87 (list (search-path-specification
88 (variable "GEM_PATH")
af070955
LC
89 (files (list (string-append "lib/ruby/gems/"
90 (version-major+minor version)
91 ".0"))))))
6becfdff 92 (synopsis "Programming language interpreter")
6ef8c59a
PP
93 (description "Ruby is a dynamic object-oriented programming language with
94a focus on simplicity and productivity.")
95 (home-page "https://ruby-lang.org")
96 (license license:ruby)))
97
9942e803
PP
98(define-public ruby-2.1
99 (package (inherit ruby)
4c40fa02 100 (version "2.1.8")
9942e803
PP
101 (source
102 (origin
103 (method url-fetch)
104 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
105 (version-major+minor version)
106 "/ruby-" version ".tar.bz2"))
107 (sha256
108 (base32
4c40fa02 109 "11rkbfc90cg9p9mzg32475alf3ddcn9q8a3ar3fwm5xskic0n395"))))
9942e803
PP
110 (arguments
111 `(#:test-target "test"
112 #:parallel-tests? #f
113 #:phases
114 (alist-cons-before
115 'configure 'replace-bin-sh
116 (lambda _
117 (substitute* '("Makefile.in"
118 "ext/pty/pty.c"
119 "io.c"
120 "lib/mkmf.rb"
121 "process.c")
122 (("/bin/sh") (which "sh"))))
123 %standard-phases)))
124 (native-search-paths
125 (list (search-path-specification
126 (variable "GEM_PATH")
127 (files (list (string-append "lib/ruby/gems/"
128 (version-major+minor version)
129 ".0"))))))))
130
218ee89b
PP
131(define-public ruby-1.8
132 (package (inherit ruby)
218ee89b
PP
133 (version "1.8.7-p374")
134 (source
135 (origin
136 (method url-fetch)
6becfdff
MW
137 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
138 (version-major+minor version)
139 "/ruby-" version ".tar.bz2"))
218ee89b
PP
140 (sha256
141 (base32
142 "1qq7khilwkayrhwmzlxk83scrmiqfi7lgsn4c63znyvz2c1lgqxl"))))
143 (native-search-paths '())
144 (arguments
145 `(#:test-target "test"
146 #:parallel-tests? #f
147 #:phases
148 (alist-cons-before
149 'configure 'replace-bin-sh
150 (lambda _
151 (substitute* '("Makefile.in"
152 "ext/pty/pty.c"
153 "io.c"
154 "lib/mkmf.rb"
155 "process.c")
156 (("/bin/sh") (which "sh"))))
157 %standard-phases)))))
158
bda0c139
DT
159(define-public ruby-hoe
160 (package
161 (name "ruby-hoe")
162 (version "3.13.1")
163 (source (origin
e83c6d00
DT
164 (method url-fetch)
165 (uri (rubygems-uri "hoe" version))
bda0c139
DT
166 (sha256
167 (base32
e83c6d00 168 "1mac13krdrasn9819dd65xj27kklfy0xdbj3p6s2ij4vlcb46h8q"))) )
bda0c139 169 (build-system ruby-build-system)
bda0c139
DT
170 (synopsis "Ruby project management helper")
171 (description
172 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
173maintain, and release projects and includes a dynamic plug-in system allowing
174for easy extensibility. Hoe ships with plug-ins for all the usual project
175tasks including rdoc generation, testing, packaging, deployment, and
176announcement.")
177 (home-page "http://www.zenspider.com/projects/hoe.html")
178 (license license:expat)))
179
022170dc
PP
180(define-public ruby-rake-compiler
181 (package
182 (name "ruby-rake-compiler")
183 (version "0.9.5")
184 (source (origin
185 (method url-fetch)
e83c6d00 186 (uri (rubygems-uri "rake-compiler" version))
022170dc
PP
187 (sha256
188 (base32
e83c6d00 189 "1k8im2vzj849xdgjk6wafspkiwwapqwm738majchb4dnhnsk64cx"))))
022170dc
PP
190 (build-system ruby-build-system)
191 (arguments
e83c6d00 192 '(#:tests? #f)) ; needs cucumber
022170dc 193 (synopsis "Building and packaging helper for Ruby native extensions")
e881752c 194 (description "Rake-compiler provides a framework for building and
022170dc
PP
195packaging native C and Java extensions in Ruby.")
196 (home-page "https://github.com/rake-compiler/rake-compiler")
197 (license license:expat)))
198
acf735f2
DT
199(define-public ruby-i18n
200 (package
201 (name "ruby-i18n")
0bfdfd37 202 (version "0.7.0")
acf735f2
DT
203 (source (origin
204 (method url-fetch)
e83c6d00 205 (uri (rubygems-uri "i18n" version))
acf735f2
DT
206 (sha256
207 (base32
0bfdfd37 208 "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758"))))
acf735f2
DT
209 (build-system ruby-build-system)
210 (arguments
0bfdfd37 211 '(#:tests? #f)) ; no tests
acf735f2
DT
212 (synopsis "Internationalization library for Ruby")
213 (description "Ruby i18n is an internationalization and localization
214solution for Ruby programs. It features translation and localization,
215interpolation of values to translations, pluralization, customizable
216transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
217translation data, custom key/scope separator, custom exception handlers, and
218an extensible architecture with a swappable backend.")
219 (home-page "http://github.com/svenfuchs/i18n")
220 (license license:expat)))
eb0c2dd6
DT
221
222;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
223;; dependencies use RSpec for their test suites! To avoid these circular
224;; dependencies, we disable tests for all of the RSpec-related packages.
225(define ruby-rspec-support
226 (package
227 (name "ruby-rspec-support")
228 (version "3.2.2")
229 (source (origin
230 (method url-fetch)
e83c6d00 231 (uri (rubygems-uri "rspec-support" version))
eb0c2dd6
DT
232 (sha256
233 (base32
e83c6d00 234 "194zry5195ls2hni7r9824vqb5d3qfg4jb15fgj8glfy0rvw3zxl"))))
eb0c2dd6
DT
235 (build-system ruby-build-system)
236 (arguments
237 '(#:tests? #f)) ; avoid dependency cycles
238 (synopsis "RSpec support library")
239 (description "Support utilities for RSpec gems.")
240 (home-page "https://github.com/rspec/rspec-support")
241 (license license:expat)))
242
243(define-public ruby-rspec-core
244 (package
245 (name "ruby-rspec-core")
246 (version "3.2.3")
247 (source (origin
248 (method url-fetch)
e83c6d00 249 (uri (rubygems-uri "rspec-core" version))
eb0c2dd6
DT
250 (sha256
251 (base32
e83c6d00 252 "0k2471iw30gc2cvv67damrx666pmsvx8l0ahk3hm20dhfnmcmpvv"))))
eb0c2dd6
DT
253 (build-system ruby-build-system)
254 (arguments
255 '(#:tests? #f)) ; avoid dependency cycles
256 (propagated-inputs
257 `(("ruby-rspec-support" ,ruby-rspec-support)))
258 (synopsis "RSpec core library")
259 (description "Rspec-core provides the RSpec test runner and example
260groups.")
261 (home-page "https://github.com/rspec/rspec-core")
262 (license license:expat)))
e6962009 263
64c318f2
BW
264(define-public ruby-rspec-core-2
265 (package (inherit ruby-rspec-core)
266 (version "2.14.8")
267 (source (origin
268 (method url-fetch)
269 (uri (rubygems-uri "rspec-core" version))
270 (sha256
271 (base32
272 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
273 (propagated-inputs `())))
274
20c05ea9 275(define-public ruby-diff-lcs
e6962009
DT
276 (package
277 (name "ruby-diff-lcs")
278 (version "1.2.5")
279 (source (origin
280 (method url-fetch)
e83c6d00 281 (uri (rubygems-uri "diff-lcs" version))
e6962009
DT
282 (sha256
283 (base32
e83c6d00 284 "1vf9civd41bnqi6brr5d9jifdw73j9khc6fkhfl1f8r9cpkdvlx1"))))
e6962009
DT
285 (build-system ruby-build-system)
286 (arguments
287 '(#:tests? #f)) ; avoid dependency cycles
288 (synopsis "Compute the difference between two Enumerable sequences")
289 (description "Diff::LCS computes the difference between two Enumerable
290sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
291It includes utilities to create a simple HTML diff output format and a
292standard diff-like tool.")
293 (home-page "https://github.com/halostatue/diff-lcs")
294 (license license:expat)))
295
296(define-public ruby-rspec-expectations
297 (package
298 (name "ruby-rspec-expectations")
299 (version "3.2.1")
300 (source (origin
301 (method url-fetch)
e83c6d00 302 (uri (rubygems-uri "rspec-expectations" version))
e6962009
DT
303 (sha256
304 (base32
e83c6d00 305 "01kmchabgpdcaqdsqg8r0g5gy385xhp1k1jsds3w264ypin17n14"))))
e6962009
DT
306 (build-system ruby-build-system)
307 (arguments
308 '(#:tests? #f)) ; avoid dependency cycles
309 (propagated-inputs
310 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 311 ("ruby-diff-lcs" ,ruby-diff-lcs)))
e881752c 312 (synopsis "RSpec expectations library")
e6962009
DT
313 (description "Rspec-expectations provides a simple API to express expected
314outcomes of a code example.")
315 (home-page "https://github.com/rspec/rspec-expectations")
316 (license license:expat)))
4f2a0cac 317
fb157f25
BW
318(define-public ruby-rspec-expectations-2
319 (package (inherit ruby-rspec-expectations)
320 (version "2.14.5")
321 (source (origin
322 (method url-fetch)
323 (uri (rubygems-uri "rspec-expectations" version))
324 (sha256
325 (base32
326 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
327 (propagated-inputs
328 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
329
4f2a0cac
DT
330(define-public ruby-rspec-mocks
331 (package
332 (name "ruby-rspec-mocks")
333 (version "3.2.1")
334 (source (origin
335 (method url-fetch)
e83c6d00 336 (uri (rubygems-uri "rspec-mocks" version))
4f2a0cac
DT
337 (sha256
338 (base32
e83c6d00 339 "09yig1lwgxl8fsns71z3xhv7wkg7zvagydh37pvaqpw92dz55jv2"))))
4f2a0cac
DT
340 (build-system ruby-build-system)
341 (arguments
342 '(#:tests? #f)) ; avoid dependency cycles
343 (propagated-inputs
344 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 345 ("ruby-diff-lcs" ,ruby-diff-lcs)))
4f2a0cac
DT
346 (synopsis "RSpec stubbing and mocking library")
347 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
348support for stubbing and mocking.")
349 (home-page "https://github.com/rspec/rspec-mocks")
350 (license license:expat)))
d4fde1f2 351
6da9adeb
BW
352(define-public ruby-rspec-mocks-2
353 (package (inherit ruby-rspec-mocks)
354 (version "2.14.6")
355 (source (origin
356 (method url-fetch)
357 (uri (rubygems-uri "rspec-mocks" version))
358 (sha256
359 (base32
360 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
361 (propagated-inputs
362 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
363
d4fde1f2
DT
364(define-public ruby-rspec
365 (package
366 (name "ruby-rspec")
367 (version "3.2.0")
368 (source (origin
369 (method url-fetch)
e83c6d00 370 (uri (rubygems-uri "rspec" version))
d4fde1f2
DT
371 (sha256
372 (base32
e83c6d00 373 "0lkz01j4yxcwb3g5w6r1l9khnyw3sxib4rrh4npd2pxh390fcc4f"))))
d4fde1f2
DT
374 (build-system ruby-build-system)
375 (arguments
376 '(#:tests? #f)) ; avoid dependency cycles
377 (propagated-inputs
378 `(("ruby-rspec-core" ,ruby-rspec-core)
379 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
380 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
381 (synopsis "Behavior-driven development framework for Ruby")
382 (description "RSpec is a behavior-driven development (BDD) framework for
383Ruby. This meta-package includes the RSpec test runner, along with the
384expectations and mocks frameworks.")
385 (home-page "http://rspec.info/")
386 (license license:expat)))
2cbc105b 387
5ac984b3
BW
388(define-public ruby-rspec-2
389 (package (inherit ruby-rspec)
390 (version "2.14.1")
391 (source (origin
392 (method url-fetch)
393 (uri (rubygems-uri "rspec" version))
394 (sha256
395 (base32
396 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
397 (propagated-inputs
398 `(("ruby-rspec-core" ,ruby-rspec-core-2)
399 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
400 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
401
2cbc105b
DT
402;; Bundler is yet another source of circular dependencies, so we must disable
403;; its test suite as well.
404(define-public bundler
405 (package
406 (name "bundler")
38b327a9 407 (version "1.10.6")
2cbc105b
DT
408 (source (origin
409 (method url-fetch)
e83c6d00 410 (uri (rubygems-uri "bundler" version))
2cbc105b
DT
411 (sha256
412 (base32
38b327a9 413 "1vlzfq0bkkj4jyq6av0y55mh5nj5n0f3mfbmmifwgkh44g8k6agv"))))
2cbc105b
DT
414 (build-system ruby-build-system)
415 (arguments
416 '(#:tests? #f)) ; avoid dependency cycles
417 (synopsis "Ruby gem bundler")
418 (description "Bundler automatically downloads and installs a list of gems
419specified in a \"Gemfile\", as well as their dependencies.")
420 (home-page "http://bundler.io/")
421 (license license:expat)))
98b87b82 422
cf36174f
RW
423(define-public ruby-builder
424 (package
425 (name "ruby-builder")
426 (version "3.2.2")
427 (source (origin
428 (method url-fetch)
429 (uri (rubygems-uri "builder" version))
430 (sha256
431 (base32
432 "14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2"))))
433 (build-system ruby-build-system)
434 (arguments
435 `(#:phases
436 (modify-phases %standard-phases
437 (add-after 'unpack 'do-not-use-rvm
438 (lambda _
439 (substitute* "rakelib/tags.rake"
440 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
441 #t)))))
442 (synopsis "Ruby library to create structured data")
443 (description "Builder provides a number of builder objects that make it
444easy to create structured data. Currently the following builder objects are
445supported: XML Markup and XML Events.")
446 (home-page "https://github.com/jimweirich/builder")
447 (license license:expat)))
448
ad79eb55
RW
449(define-public ruby-rjb
450 (package
451 (name "ruby-rjb")
452 (version "1.5.3")
453 (source (origin
454 (method url-fetch)
455 (uri (rubygems-uri "rjb" version))
456 (sha256
457 (base32
458 "0gzs92dagk981s4vrymnqg0vll783b9k564j0cdgp167nc5a2zg4"))))
459 (build-system ruby-build-system)
460 (arguments
461 `(#:tests? #f ; no rakefile
462 #:phases
463 (modify-phases %standard-phases
464 (add-before 'build 'set-java-home
465 (lambda* (#:key inputs #:allow-other-keys)
466 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
467 #t)))))
468 (native-inputs
d2540f80 469 `(("jdk" ,icedtea "jdk")))
ad79eb55
RW
470 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
471 (description "RJB is a bridge program that connects Ruby and Java via the
472Java Native Interface.")
473 (home-page "http://www.artonx.org/collabo/backyard/?RubyJavaBridge")
474 (license license:lgpl2.1+)))
475
f9ae2c06
PP
476(define-public ruby-log4r
477 (package
478 (name "ruby-log4r")
479 (version "1.1.10")
480 (source
481 (origin
482 (method url-fetch)
483 (uri (rubygems-uri "log4r" version))
484 (sha256
485 (base32
486 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
487 (build-system ruby-build-system)
488 (arguments
489 '(#:tests? #f)) ; no Rakefile in gem
490 (synopsis "Flexible logging library for Ruby")
491 (description "Comprehensive and flexible logging library written
492in Ruby for use in Ruby programs. It features a hierarchical logging
493system of any number of levels, custom level names, logger
494inheritance, multiple output destinations per log event, execution
495tracing, custom formatting, thread safteyness, XML and YAML
496configuration, and more.")
497 (home-page "http://log4r.rubyforge.org/")
498 (license license:bsd-3)))
499
71a03c29
RW
500(define-public ruby-atoulme-antwrap
501 (package
502 (name "ruby-atoulme-antwrap")
503 (version "0.7.5")
504 (source (origin
505 (method url-fetch)
506 (uri (rubygems-uri "atoulme-Antwrap" version))
507 (sha256
508 (base32
509 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
510 (build-system ruby-build-system)
511 ;; Test data required for most of the tests are not included.
512 (arguments `(#:tests? #f))
513 (native-inputs
514 `(("ruby-hoe" ,ruby-hoe)))
515 (inputs
516 `(("ruby-rjb" ,ruby-rjb)))
517 (synopsis "Ruby wrapper for the Ant build tool")
518 (description "Antwrap is a Ruby module that wraps the Apache Ant build
519tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
520script.")
521 (home-page "http://rubyforge.org/projects/antwrap/")
522 (license license:expat)))
523
fe1ddad5
RW
524(define-public ruby-atoulme-saikuro
525 (package
526 (name "ruby-atoulme-saikuro")
527 (version "1.2.1")
528 (source (origin
529 (method url-fetch)
530 (uri (rubygems-uri "atoulme-Saikuro" version))
531 (sha256
532 (base32
533 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
534 (build-system ruby-build-system)
535 ;; FIXME: There are no unit tests. The tests are demonstrations of the
536 ;; "saikuro" tool.
537 (arguments `(#:tests? #f))
538 (synopsis "Cyclomatic complexity analyzer")
539 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
540given Ruby source code Saikuro will generate a report listing the cyclomatic
541complexity of each method found. In addition, Saikuro counts the number of
542lines per method and can generate a listing of the number of tokens on each
543line of code.")
544 (home-page "http://www.github.com/atoulme/Saikuro")
545 ;; File headers contain the BSD-3 license and the README.rdoc says that
546 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
547 ;; of the Expat license.
548 (license license:bsd-3)))
549
2f9e0b68
RW
550(define-public ruby-ci-reporter
551 (package
552 (name "ruby-ci-reporter")
553 (version "2.0.0")
554 (source (origin
555 (method url-fetch)
556 (uri (rubygems-uri "ci_reporter" version))
557 (sha256
558 (base32
559 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
560 (build-system ruby-build-system)
561 (arguments
562 `(#:test-target "rspec"))
563 (propagated-inputs
564 `(("ruby-builder" ,ruby-builder)))
565 (native-inputs
566 `(("bundler" ,bundler)
567 ("ruby-rspec" ,ruby-rspec)))
568 (synopsis "Generate XML reports of runs test")
569 (description
570 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
571you to generate XML reports of your test runs. The resulting files can be
572read by a continuous integration system that understands Ant's JUnit report
573format.")
574 (home-page "https://github.com/nicksieger/ci_reporter")
575 (license license:expat)))
576
b004fb6a
RW
577(define-public ruby-saikuro-treemap
578 (package
579 (name "ruby-saikuro-treemap")
580 (version "0.2.0")
581 (source (origin
582 (method url-fetch)
583 (uri (rubygems-uri "saikuro_treemap" version))
584 (sha256
585 (base32
586 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
587 (build-system ruby-build-system)
588 ;; Some of the tests fail because the generated JSON has keys in a
589 ;; different order. This is a problem with the test suite rather than any
590 ;; of the involved libraries.
591 (arguments `(#:tests? #f))
592 (propagated-inputs
593 `(("ruby-json-pure" ,ruby-json-pure)
594 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
595 (synopsis "Generate complexity treemap based on saikuro analysis")
596 (description
597 "This gem generates a treemap showing the complexity of Ruby code on
598which it is run. It uses Saikuro under the covers to analyze Ruby code
599complexity.")
600 (home-page "http://github.com/ThoughtWorksStudios/saikuro_treemap")
601 (license license:expat)))
602
cc53e630
RW
603(define-public ruby-orderedhash
604 (package
605 (name "ruby-orderedhash")
606 (version "0.0.6")
607 (source (origin
608 (method url-fetch)
609 (uri (rubygems-uri "orderedhash" version))
610 (sha256
611 (base32
612 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
613 (build-system ruby-build-system)
614 (arguments
615 '(#:tests? #f)) ; no test suite
616 (synopsis "Ruby library providing an order-preserving hash")
617 (description "Orderedhash is a Ruby library providing a hash
618implementation that preserves the order of items and features some array-like
619extensions.")
620 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
621 (license license:public-domain)))
622
28c5d42d
PP
623(define-public ruby-libxml
624 (package
625 (name "ruby-libxml")
626 (version "2.8.0")
627 (source
628 (origin
629 (method url-fetch)
630 (uri (rubygems-uri "libxml-ruby" version))
631 (sha256
632 (base32
633 "1dhjqp4r9vkdp00l6h1cj8qfndzxlhlxk6b9g0w4v55gz857ilhb"))))
634 (build-system ruby-build-system)
635 (inputs
636 `(("zlib" ,zlib)
637 ("libxml2" ,libxml2)))
638 (arguments
639 '(#:tests? #f ; test suite hangs for unknown reason
640 #:gem-flags
641 (list "--"
642 (string-append "--with-xml2-include="
643 (assoc-ref %build-inputs "libxml2")
644 "/include/libxml2" ))))
645 (synopsis "Ruby bindings for GNOME Libxml2")
646 (description "The Libxml-Ruby project provides Ruby language bindings for
647the GNOME Libxml2 XML toolkit.")
648 (home-page "http://xml4r.github.com/libxml-ruby")
649 (license license:expat)))
650
8b9bde07
RW
651(define-public ruby-xml-simple
652 (package
653 (name "ruby-xml-simple")
654 (version "1.1.5")
655 (source (origin
656 (method url-fetch)
657 (uri (rubygems-uri "xml-simple" version))
658 (sha256
659 (base32
660 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
661 (build-system ruby-build-system)
662 (arguments
663 '(#:tests? #f)) ; no test suite
664 (synopsis "Simple Ruby library for XML processing")
665 (description "This library provides a simple API for XML processing in
666Ruby.")
667 (home-page "https://github.com/maik/xml-simple")
668 (license license:ruby)))
669
2cb3ab48
RW
670(define-public ruby-thor
671 (package
672 (name "ruby-thor")
673 (version "0.19.1")
674 (source (origin
675 (method url-fetch)
676 (uri (rubygems-uri "thor" version))
677 (sha256
678 (base32
679 "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z"))))
680 (build-system ruby-build-system)
681 (arguments
682 '(#:tests? #f)) ; no test suite
683 (native-inputs
684 `(("bundler" ,bundler)))
685 (synopsis "Ruby toolkit for building command-line interfaces")
686 (description "Thor is a toolkit for building powerful command-line
687interfaces.")
688 (home-page "http://whatisthor.com/")
689 (license license:expat)))
690
ec79018e
RW
691(define-public ruby-lumberjack
692 (package
693 (name "ruby-lumberjack")
694 (version "1.0.9")
695 (source (origin
696 (method url-fetch)
697 (uri (rubygems-uri "lumberjack" version))
698 (sha256
699 (base32
700 "162frm2bwy58pj8ccsdqa4a6i0csrhb9h5l3inhkl1ivgfc8814l"))))
701 (build-system ruby-build-system)
702 (native-inputs
703 `(("ruby-rspec" ,ruby-rspec)))
704 (synopsis "Logging utility library for Ruby")
705 (description "Lumberjack is a simple logging utility that can be a drop in
706replacement for Logger or ActiveSupport::BufferedLogger. It provides support
707for automatically rolling log files even with multiple processes writing the
708same log file.")
709 (home-page "http://github.com/bdurand/lumberjack")
710 (license license:expat)))
711
70b4cf38
RW
712(define-public ruby-nenv
713 (package
714 (name "ruby-nenv")
715 (version "0.2.0")
716 (source (origin
717 (method url-fetch)
718 (uri (rubygems-uri "nenv" version))
719 (sha256
720 (base32
721 "152wxwri0afwgnxdf93gi6wjl9rr5z7vwp8ln0gpa3rddbfc27s6"))))
722 (build-system ruby-build-system)
723 (arguments
724 `(#:tests? #f)) ; no tests included
725 (native-inputs
726 `(("ruby-rspec" ,ruby-rspec)
727 ("bundler" ,bundler)))
728 (synopsis "Ruby interface for modifying the environment")
729 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
730and inspect the environment.")
731 (home-page "https://github.com/e2/nenv")
732 (license license:expat)))
733
8d9e9f28
RW
734(define-public ruby-permutation
735 (package
736 (name "ruby-permutation")
737 (version "0.1.8")
738 (source (origin
739 (method url-fetch)
740 (uri (rubygems-uri "permutation" version))
741 (sha256
742 (base32
743 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
744 (build-system ruby-build-system)
745 (arguments
746 `(#:phases
747 (modify-phases %standard-phases
748 (add-after 'unpack 'fix-rakefile
749 (lambda _
750 (substitute* "Rakefile"
751 (("require 'rake/gempackagetask'")
752 "require 'rubygems/package_task'")
753 (("include Config") ""))
754 #t))
755 (replace 'check
756 (lambda _
757 (zero? (system* "ruby" "-Ilib" "test/test.rb")))))))
758 (synopsis "Library to perform operations with sequence permutations")
759 (description "This package provides a Ruby library to perform different
760operations with permutations of sequences, such as strings and arrays.")
761 (home-page "http://flori.github.io/permutation")
762 (license license:gpl2))) ; GPL 2 only
763
c5d14d42
RW
764(define-public ruby-shellany
765 (package
766 (name "ruby-shellany")
767 (version "0.0.1")
768 (source (origin
769 (method url-fetch)
770 (uri (rubygems-uri "shellany" version))
771 (sha256
772 (base32
773 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
774 (build-system ruby-build-system)
775 (arguments
776 `(#:test-target "default"
777 #:phases
778 (modify-phases %standard-phases
779 (add-after 'unpack 'fix-version-test
780 (lambda _
781 (substitute* "spec/shellany_spec.rb"
782 (("^RSpec") "require \"shellany\"\nRSpec"))
783 #t)))))
784 (native-inputs
785 `(("ruby-rspec" ,ruby-rspec)
786 ("ruby-nenv" ,ruby-nenv)
787 ("bundler" ,bundler)))
788 (synopsis "Capture command output")
789 (description "Shellany is a Ruby library providing functions to capture
790the output produced by running shell commands.")
791 (home-page "https://rubygems.org/gems/shellany")
792 (license license:expat)))
793
d152162f
RW
794(define-public ruby-notiffany
795 (package
796 (name "ruby-notiffany")
797 (version "0.0.7")
798 (source (origin
799 (method url-fetch)
800 (uri (rubygems-uri "notiffany" version))
801 (sha256
802 (base32
803 "1v5x1w59qq85r6dpv3y9ga34dfd7hka1qxyiykaw7gm0i6kggbhi"))))
804 (build-system ruby-build-system)
805 ;; Tests are not included in the gem.
806 (arguments `(#:tests? #f))
807 (propagated-inputs
808 `(("ruby-shellany" ,ruby-shellany)
809 ("ruby-nenv" ,ruby-nenv)))
810 (native-inputs
811 `(("bundler" ,bundler)))
812 (synopsis "Wrapper libray for notification libraries")
813 (description "Notiffany is a Ruby wrapper libray for notification
814libraries such as Libnotify.")
815 (home-page "https://github.com/guard/notiffany")
816 (license license:expat)))
817
8528365b
RW
818(define-public ruby-formatador
819 (package
820 (name "ruby-formatador")
821 (version "0.2.5")
822 (source (origin
823 (method url-fetch)
824 (uri (rubygems-uri "formatador" version))
825 (sha256
826 (base32
827 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
828 (build-system ruby-build-system)
829 ;; Circular dependency: Tests require ruby-shindo, which requires
830 ;; ruby-formatador at runtime.
831 (arguments `(#:tests? #f))
832 (synopsis "Ruby library to format text on stdout")
833 (description "Formatador is a Ruby library to format text printed to the
834standard output stream.")
835 (home-page "http://github.com/geemus/formatador")
836 (license license:expat)))
837
7ac4610f
RW
838(define-public ruby-shindo
839 (package
840 (name "ruby-shindo")
841 (version "0.3.8")
842 (source (origin
843 (method url-fetch)
844 (uri (rubygems-uri "shindo" version))
845 (sha256
846 (base32
847 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
848 (build-system ruby-build-system)
849 (arguments
850 `(#:test-target "shindo_tests"
851 #:phases
852 (modify-phases %standard-phases
853 (add-after 'unpack 'fix-tests
854 (lambda _
855 (substitute* "Rakefile"
856 (("system \"shindo") "system \"./bin/shindo")
857 ;; This test doesn't work, so we disable it.
858 (("fail \"The build_error test should fail") "#"))
859 #t)))))
860 (propagated-inputs
861 `(("ruby-formatador" ,ruby-formatador)))
862 (synopsis "Simple depth first Ruby testing")
863 (description "Shindo is a simple depth first testing library for Ruby.")
864 (home-page "https://github.com/geemus/shindo")
865 (license license:expat)))
866
f13636f2
RW
867(define-public ruby-rubygems-tasks
868 (package
869 (name "ruby-rubygems-tasks")
870 (version "0.2.4")
871 (source (origin
872 (method url-fetch)
873 (uri (rubygems-uri "rubygems-tasks" version))
874 (sha256
875 (base32
876 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
877 (build-system ruby-build-system)
878 ;; Tests need Internet access.
879 (arguments `(#:tests? #f))
880 (native-inputs
881 `(("ruby-rspec" ,ruby-rspec)
882 ("ruby-yard" ,ruby-yard)))
883 (synopsis "Rake tasks for managing and releasing Ruby Gems")
884 (description "Rubygems-task provides Rake tasks for managing and releasing
885Ruby Gems.")
886 (home-page "https://github.com/postmodern/rubygems-tasks")
887 (license license:expat)))
888
2417fce3
RW
889(define-public ruby-ffi
890 (package
891 (name "ruby-ffi")
892 (version "1.9.10")
893 (source (origin
894 (method url-fetch)
895 (uri (rubygems-uri "ffi" version))
896 (sha256
897 (base32
898 "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj"))))
899 (build-system ruby-build-system)
900 ;; FIXME: Before running tests the build system attempts to build libffi
901 ;; from sources.
902 (arguments `(#:tests? #f))
903 (native-inputs
904 `(("ruby-rake-compiler" ,ruby-rake-compiler)
905 ("ruby-rspec" ,ruby-rspec)
906 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
907 (inputs
908 `(("libffi" ,libffi)))
909 (synopsis "Ruby foreign function interface library")
910 (description "Ruby-FFI is a Ruby extension for programmatically loading
911dynamic libraries, binding functions within them, and calling those functions
912from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby
913and JRuby.")
914 (home-page "http://wiki.github.com/ffi/ffi")
915 (license license:bsd-3)))
916
58b59742
RW
917(define-public ruby-simplecov-html
918 (package
919 (name "ruby-simplecov-html")
920 (version "0.10.0")
921 (source (origin
922 (method url-fetch)
923 (uri (rubygems-uri "simplecov-html" version))
924 (sha256
925 (base32
8b749cf3 926 "1qni8g0xxglkx25w54qcfbi4wjkpvmb28cb7rj5zk3iqynjcdrqf"))))
58b59742 927 (build-system ruby-build-system)
8b749cf3 928 (arguments `(#:tests? #f)) ; there are no tests
58b59742
RW
929 (native-inputs
930 `(("bundler" ,bundler)))
931 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
932 (description "This package provides the default HTML formatter for
933the SimpleCov code coverage tool for Ruby version 1.9 and above.")
934 (home-page "https://github.com/colszowka/simplecov-html")
935 (license license:expat)))
936
a84fa2ad
RW
937(define-public ruby-simplecov
938 (package
939 (name "ruby-simplecov")
940 (version "0.10.0")
941 (source (origin
942 (method url-fetch)
943 (uri (rubygems-uri "simplecov" version))
944 (sha256
945 (base32
946 "1q2iq2vgrdvvla5y907gkmqx6ry2qvnvc7a90hlcbwgp1w0sv6z4"))))
947 (build-system ruby-build-system)
948 ;; Simplecov depends on rubocop for code style checking at build time.
949 ;; Rubocop needs simplecov at build time.
950 (arguments `(#:tests? #f))
951 (propagated-inputs
952 `(("ruby-json" ,ruby-json)
953 ("ruby-docile" ,ruby-docile)
954 ("ruby-simplecov-html" ,ruby-simplecov-html)))
955 (native-inputs
956 `(("bundler" ,bundler)))
957 (synopsis "Code coverage framework for Ruby")
958 (description "SimpleCov is a code coverage framework for Ruby with a
959powerful configuration library and automatic merging of coverage across test
960suites.")
961 (home-page "http://github.com/colszowka/simplecov")
962 (license license:expat)))
963
98b87b82
DT
964(define-public ruby-useragent
965 (package
966 (name "ruby-useragent")
967 (version "0.13.3")
968 (source (origin
969 (method url-fetch)
e83c6d00 970 (uri (rubygems-uri "useragent" version))
98b87b82
DT
971 (sha256
972 (base32
e83c6d00 973 "0kz7yyz7528bv4a2kfymvkcm8whqcddhmgaw1ksw1d90n30hhkpc"))))
98b87b82
DT
974 (build-system ruby-build-system)
975 (arguments
e83c6d00 976 '(#:tests? #f)) ; no test suite
98b87b82
DT
977 (synopsis "HTTP user agent parser for Ruby")
978 (description "UserAgent is a Ruby library that parses and compares HTTP
979User Agents.")
980 (home-page "https://github.com/gshutler/useragent")
981 (license license:expat)))
96086cc5
DT
982
983(define-public ruby-bacon
984 (package
985 (name "ruby-bacon")
e83c6d00 986 (version "1.2.0")
96086cc5
DT
987 (source (origin
988 (method url-fetch)
e83c6d00 989 (uri (rubygems-uri "bacon" version))
96086cc5
DT
990 (sha256
991 (base32
e83c6d00 992 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
96086cc5 993 (build-system ruby-build-system)
96086cc5
DT
994 (synopsis "Small RSpec clone")
995 (description "Bacon is a small RSpec clone providing all essential
996features.")
997 (home-page "https://github.com/chneukirchen/bacon")
998 (license license:expat)))
de59d316
DT
999
1000(define-public ruby-arel
1001 (package
1002 (name "ruby-arel")
1003 (version "6.0.0")
1004 (source (origin
1005 (method url-fetch)
e83c6d00 1006 (uri (rubygems-uri "arel" version))
de59d316
DT
1007 (sha256
1008 (base32
e83c6d00 1009 "18wnfnzr2i5p3fygsddjbi1cimws6823nbk8drxidmnj8jz7h0ar"))))
de59d316 1010 (build-system ruby-build-system)
e83c6d00
DT
1011 (arguments
1012 '(#:tests? #f)) ; no test suite
de59d316
DT
1013 (synopsis "SQL AST manager for Ruby")
1014 (description "Arel is a SQL AST manager for Ruby. It simplifies the
1015generation of complex SQL queries and adapts to various relational database
1016implementations.")
1017 (home-page "https://github.com/rails/arel")
1018 (license license:expat)))
e259bdf0
DT
1019
1020(define-public ruby-connection-pool
1021 (package
1022 (name "ruby-connection-pool")
1023 (version "2.2.0")
1024 (source (origin
1025 (method url-fetch)
e83c6d00 1026 (uri (rubygems-uri "connection_pool" version))
e259bdf0
DT
1027 (sha256
1028 (base32
e83c6d00 1029 "1b2bb3k39ni5mzcnqlv9y4yjkbin20s7dkwzp0jw2jf1rmzcgrmy"))))
e259bdf0
DT
1030 (build-system ruby-build-system)
1031 (native-inputs
1032 `(("bundler" ,bundler)))
1033 (synopsis "Generic connection pool for Ruby")
1034 (description "Connection_pool provides a generic connection pooling
1035interface for Ruby programs.")
1036 (home-page "https://github.com/mperham/connection_pool")
1037 (license license:expat)))
4c0aeb44
DT
1038
1039(define-public ruby-net-http-persistent
1040 (package
1041 (name "ruby-net-http-persistent")
1042 (version "2.9.4")
1043 (source (origin
1044 (method url-fetch)
e83c6d00 1045 (uri (rubygems-uri "net-http-persistent" version))
4c0aeb44
DT
1046 (sha256
1047 (base32
e83c6d00 1048 "1y9fhaax0d9kkslyiqi1zys6cvpaqx9a0y0cywp24rpygwh4s9r4"))))
4c0aeb44 1049 (build-system ruby-build-system)
4c0aeb44
DT
1050 (native-inputs
1051 `(("ruby-connection-pool" ,ruby-connection-pool)
1052 ("ruby-hoe" ,ruby-hoe)))
1053 (synopsis "Persistent HTTP connection manager")
1054 (description "Net::HTTP::Persistent manages persistent HTTP connections
1055using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
1056 (home-page "https://github.com/drbrain/net-http-persistent")
1057 (license license:expat)))
afbbdf77 1058
f88bacaf
RW
1059(define-public ruby-power-assert
1060 (package
1061 (name "ruby-power-assert")
1062 (version "0.2.6")
1063 (source (origin
1064 (method url-fetch)
1065 (uri (rubygems-uri "power_assert" version))
1066 (sha256
1067 (base32
1068 "0gbj379jhnff8rbb6m3kzdm282szjz1a021xzxa38d1bnswj2jx3"))))
1069 (build-system ruby-build-system)
1070 (native-inputs
1071 `(("bundler" ,bundler)))
1072 (synopsis "Assert library with descriptive assertion messages")
1073 (description "Power-assert is an assertion library providing descriptive
1074assertion messages for tests.")
1075 (home-page "https://github.com/k-tsj/power_assert")
1076 (license (list license:bsd-2 license:ruby))))
1077
347eb21e
RW
1078(define-public ruby-locale
1079 (package
1080 (name "ruby-locale")
1081 (version "2.1.2")
1082 (source (origin
1083 (method url-fetch)
1084 (uri (rubygems-uri "locale" version))
1085 (sha256
1086 (base32
1087 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
1088 (build-system ruby-build-system)
1089 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1090 ;; which needs ruby-gettext, which needs ruby-locale. To break the
1091 ;; dependency cycle we disable tests.
1092 (arguments `(#:tests? #f))
1093 (native-inputs
1094 `(("bundler" ,bundler)
1095 ("ruby-yard" ,ruby-yard)))
1096 (synopsis "Ruby library providing basic localization APIs")
1097 (description
1098 "Ruby-Locale is the pure ruby library which provides basic APIs for
1099localization.")
1100 (home-page "https://github.com/ruby-gettext/locale")
1101 (license (list license:lgpl3+ license:ruby))))
1102
e2333ea3
RW
1103(define-public ruby-text
1104 (package
1105 (name "ruby-text")
1106 (version "1.3.1")
1107 (source (origin
1108 (method url-fetch)
1109 (uri (rubygems-uri "text" version))
1110 (sha256
1111 (base32
1112 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
1113 (build-system ruby-build-system)
1114 (synopsis "Collection of text algorithms for Ruby")
1115 (description
1116 "This package provides a collection of text algorithms: Levenshtein,
1117Soundex, Metaphone, Double Metaphone, Porter Stemming.")
1118 (home-page "http://github.com/threedaymonk/text")
1119 (license license:expat)))
1120
c1f52261
RW
1121(define-public ruby-gettext
1122 (package
1123 (name "ruby-gettext")
1124 (version "3.1.7")
1125 (source (origin
1126 (method url-fetch)
1127 (uri (rubygems-uri "gettext" version))
1128 (sha256
1129 (base32
1130 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
1131 (build-system ruby-build-system)
1132 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1133 ;; which needs ruby-gettext. To break the dependency cycle we disable
1134 ;; tests.
1135 (arguments `(#:tests? #f))
1136 (propagated-inputs
1137 `(("ruby-locale" ,ruby-locale)
1138 ("ruby-text" ,ruby-text)))
1139 (native-inputs
1140 `(("bundler" ,bundler)
1141 ("ruby-yard" ,ruby-yard)))
1142 (synopsis "GNU gettext-like program for Ruby")
1143 (description
1144 "Gettext is a GNU gettext-like program for Ruby. The catalog
1145file (po-file) used is the same as that used by GNU gettext, allowing you to
1146use GNU gettext tools for maintenance.")
1147 (home-page "http://ruby-gettext.github.com/")
1148 (license (list license:lgpl3+ license:ruby))))
1149
cc5aeb8c
RW
1150(define-public ruby-packnga
1151 (package
1152 (name "ruby-packnga")
1153 (version "1.0.1")
1154 (source (origin
1155 (method url-fetch)
1156 (uri (rubygems-uri "packnga" version))
1157 (sha256
1158 (base32
1159 "1i71yhvlkvi5fp3m8jl9317cnddkbnrcy0syrmiw4y1lrq0cbncj"))))
1160 (build-system ruby-build-system)
1161 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
1162 ;; To break the dependency cycle we disable tests.
1163 (arguments `(#:tests? #f))
1164 (propagated-inputs
1165 `(("ruby-gettext" ,ruby-gettext)
1166 ("ruby-yard" ,ruby-yard)))
1167 (native-inputs
1168 `(("bundler" ,bundler)))
1169 (synopsis "Utility library to package internationalized libraries")
1170 (description
1171 "Packnga is a library to translate to many languages using YARD.")
1172 (home-page "http://ranguba.org/packnga/")
1173 (license license:lgpl2.0+)))
1174
3383f5bd
RW
1175(define-public ruby-test-unit
1176 (package
1177 (name "ruby-test-unit")
1178 (version "3.1.5")
1179 (source (origin
1180 (method url-fetch)
1181 (uri (rubygems-uri "test-unit" version))
1182 (sha256
1183 (base32
1184 "0jxznjzwmrlp8wqjxsd06qbiddffn68pdhz6nrqpjbiln1z3af4w"))))
1185 (build-system ruby-build-system)
1186 (propagated-inputs
1187 `(("ruby-power-assert" ,ruby-power-assert)))
1188 (native-inputs
1189 `(("bundler" ,bundler)
1190 ("ruby-packnga" ,ruby-packnga)
1191 ("ruby-yard" ,ruby-yard)))
1192 (synopsis "Unit testing framework for Ruby")
1193 (description "@code{Test::Unit} is unit testing framework for Ruby, based
1194on xUnit principles. These were originally designed by Kent Beck, creator of
1195extreme programming software development methodology, for Smalltalk's SUnit.
1196It allows writing tests, checking results and automated testing in Ruby.")
1197 (home-page "http://test-unit.github.io/")
1198 (license (list license:psfl license:ruby))))
1199
25d6d49b
RW
1200(define-public ruby-metaclass
1201 (package
1202 (name "ruby-metaclass")
1203 (version "0.0.4")
1204 (source (origin
1205 (method url-fetch)
1206 (uri (rubygems-uri "metaclass" version))
1207 (sha256
1208 (base32
1209 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
1210 (build-system ruby-build-system)
1211 (arguments
1212 `(#:phases
1213 (modify-phases %standard-phases
1214 (add-after 'unpack 'add-test-unit-to-search-path
1215 (lambda* (#:key inputs #:allow-other-keys)
1216 (substitute* "Rakefile"
1217 (("t\\.libs << \"test\"" line)
1218 (string-append line "; t.libs << \""
1219 (assoc-ref inputs "ruby-test-unit")
1220 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1221 ,(package-version ruby-test-unit)
1222 "/lib\"")))
1223 #t)))))
1224 (native-inputs
1225 `(("bundler" ,bundler)
1226 ("ruby-test-unit" ,ruby-test-unit)))
1227 (synopsis "Ruby library adding metaclass method to all objects")
1228 (description
1229 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
1230objects.")
1231 (home-page "http://github.com/floehopper/metaclass")
1232 (license license:expat)))
1233
21f7b7bd
RW
1234(define-public ruby-blankslate
1235 (package
1236 (name "ruby-blankslate")
1237 (version "3.1.3")
1238 (source (origin
1239 (method url-fetch)
1240 (uri (rubygems-uri "blankslate" version))
1241 (sha256
1242 (base32
1243 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
1244 (build-system ruby-build-system)
1245 (arguments
1246 `(#:phases
1247 (modify-phases %standard-phases
1248 (replace 'check
1249 (lambda _ (zero? (system* "rspec" "spec/")))))))
1250 (native-inputs
1251 `(("bundler" ,bundler)
1252 ("ruby-rspec" ,ruby-rspec)))
1253 (synopsis "Abstract base class with no predefined methods")
1254 (description
1255 "BlankSlate provides an abstract base class with no predefined
1256methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
1257as a base class when writing classes that depend upon
1258@code{method_missing} (e.g. dynamic proxies).")
1259 (home-page "http://github.com/masover/blankslate")
1260 (license license:expat)))
1261
4016ba3f
RW
1262(define-public ruby-instantiator
1263 (package
1264 (name "ruby-instantiator")
1265 (version "0.0.6")
1266 (source (origin
1267 (method url-fetch)
1268 (uri (rubygems-uri "instantiator" version))
1269 (sha256
1270 (base32
1271 "0mfmqhg9xrv9i8i1kmphf15ywddhivyh2z3ccl0xjw8qy54zr21i"))))
1272 (build-system ruby-build-system)
1273 (arguments
1274 `(#:phases
1275 (modify-phases %standard-phases
1276 (add-after 'unpack 'add-test-unit-to-search-path
1277 (lambda* (#:key inputs #:allow-other-keys)
1278 (substitute* "Rakefile"
1279 (("t\\.libs << \"test\"" line)
1280 (string-append line "; t.libs << \""
1281 (assoc-ref inputs "ruby-test-unit")
1282 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1283 ,(package-version ruby-test-unit)
1284 "/lib\"")))
1285 #t)))))
1286 (propagated-inputs
1287 `(("ruby-blankslate" ,ruby-blankslate)))
1288 (native-inputs
1289 `(("bundler" ,bundler)
1290 ("ruby-test-unit" ,ruby-test-unit)))
1291 (synopsis "Instantiate an arbitrary Ruby class")
1292 (description
1293 "Instantiator lets you instantiate an arbitrary Ruby class without
1294knowing anything about the constructor.")
1295 (home-page "https://github.com/floehopper/instantiator")
1296 (license license:expat)))
1297
97aee8d3
RW
1298(define-public ruby-introspection
1299 (package
1300 (name "ruby-introspection")
1301 (version "0.0.3")
1302 (source (origin
1303 (method url-fetch)
1304 (uri (rubygems-uri "introspection" version))
1305 (sha256
1306 (base32
1307 "0g1j71sqfxbqk32wj7d0bkd3dlayfqzprfq3dbr0rq107xbxjcrr"))))
1308 (build-system ruby-build-system)
1309 (arguments
1310 `(#:phases
1311 (modify-phases %standard-phases
1312 (add-after 'unpack 'add-test-unit-to-search-path
1313 (lambda* (#:key inputs #:allow-other-keys)
1314 (substitute* "Rakefile"
1315 (("t\\.libs << \"test\"" line)
1316 (string-append line "; t.libs << \""
1317 (assoc-ref inputs "ruby-test-unit")
1318 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1319 ,(package-version ruby-test-unit)
1320 "/lib\"")))
1321 #t)))))
1322 (propagated-inputs
1323 `(("ruby-instantiator" ,ruby-instantiator)
1324 ("ruby-metaclass" ,ruby-metaclass)))
1325 (native-inputs
1326 `(("bundler" ,bundler)
1327 ("ruby-blankslate" ,ruby-blankslate)
1328 ("ruby-test-unit" ,ruby-test-unit)))
1329 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
1330 (description
1331 "Introspection provides tools to inspect the hierarchy of method
1332definitions on a Ruby object.")
1333 (home-page "https://github.com/floehopper/introspection")
1334 (license license:expat)))
1335
d93062fd
RW
1336(define-public ruby-redcarpet
1337 (package
1338 (name "ruby-redcarpet")
1339 (version "3.3.3")
1340 (source (origin
1341 (method url-fetch)
1342 (uri (rubygems-uri "redcarpet" version))
1343 (sha256
1344 (base32
1345 "14i3wypp97bpk20679d1csy88q4hsgfqbnqw6mryl77m2g0d09pk"))))
1346 (build-system ruby-build-system)
1347 (arguments
1348 `(#:phases
1349 (modify-phases %standard-phases
1350 ;; The gem archive does not include the conformance tests.
1351 (add-after 'unpack 'disable-conformance-tests
1352 (lambda _
1353 (substitute* "Rakefile"
1354 (("task :test => %w\\[test:unit test:conformance\\]")
1355 "task :test => %w[test:unit]"))
1356 #t)))))
1357 (native-inputs
1358 `(("bundler" ,bundler)
1359 ("ruby-test-unit" ,ruby-test-unit)
1360 ("ruby-rake-compiler" ,ruby-rake-compiler)))
1361 (synopsis "Extensible Markdown to (X)HTML converter")
1362 (description
1363 "Redcarpet is an extensible Ruby library for Markdown processing and
1364conversion to (X)HTML.")
1365 (home-page "http://github.com/vmg/redcarpet")
1366 (license license:expat)))
1367
4f2a52ae
RW
1368(define-public ruby-mocha
1369 (package
1370 (name "ruby-mocha")
1371 (version "1.1.0")
1372 (source (origin
1373 (method url-fetch)
1374 (uri (rubygems-uri "mocha" version))
1375 (sha256
1376 (base32
1377 "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
1378 (build-system ruby-build-system)
1379 (arguments
1380 `(#:phases
1381 (modify-phases %standard-phases
1382 (add-after 'unpack 'add-test-unit-to-search-path
1383 (lambda* (#:key inputs #:allow-other-keys)
1384 (substitute* "Rakefile"
1385 (("t\\.libs << 'test'" line)
1386 (string-append line "; t.libs << \""
1387 (assoc-ref inputs "ruby-test-unit")
1388 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1389 ,(package-version ruby-test-unit)
1390 "/lib\"")))
1391 #t))
1392 (add-before 'check 'use-latest-redcarpet
1393 (lambda _
1394 (substitute* "mocha.gemspec"
1395 (("<redcarpet>, \\[\"~> 1\"\\]")
1396 "<redcarpet>, [\">= 3\"]"))
1397 #t))
1398 (add-before 'check 'hardcode-version
1399 (lambda _
1400 ;; Mocha is undefined at build time
1401 (substitute* "Rakefile"
1402 (("#\\{Mocha::VERSION\\}") ,version))
1403 #t))
1404 (add-before 'check 'remove-failing-test
1405 ;; FIXME: This test fails for reasons unrelated to Guix packaging.
1406 (lambda _
1407 (delete-file "test/acceptance/stubbing_nil_test.rb")
1408 #t)))))
1409 (propagated-inputs
1410 `(("ruby-metaclass" ,ruby-metaclass)))
1411 (native-inputs
1412 `(("bundler" ,bundler)
1413 ("ruby-yard" ,ruby-yard)
1414 ("ruby-introspection" ,ruby-introspection)
1415 ("ruby-test-unit" ,ruby-test-unit)
1416 ("ruby-redcarpet" ,ruby-redcarpet)))
1417 (synopsis "Mocking and stubbing library for Ruby")
1418 (description
1419 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
1420allows mocking and stubbing of methods on real (non-mock) classes.")
1421 (home-page "http://gofreerange.com/mocha/docs")
1422 (license license:expat)))
1423
2c84ba7e
RW
1424(define-public ruby-net-ssh
1425 (package
1426 (name "ruby-net-ssh")
1427 (version "3.0.1")
1428 (source (origin
1429 (method url-fetch)
1430 (uri (rubygems-uri "net-ssh" version))
1431 (sha256
1432 (base32
1433 "1dzqkgwi9xm6mbfk1rkk17rzmz8m5xakqi21w1b97ybng6kkw0hf"))))
1434 (build-system ruby-build-system)
1435 (native-inputs
1436 `(("ruby-mocha" ,ruby-mocha)
1437 ("ruby-test-unit" ,ruby-test-unit)))
1438 (synopsis "Ruby implementation of the SSH2 client protocol")
1439 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
1440client protocol. It allows you to write programs that invoke and interact
1441with processes on remote servers, via SSH2.")
1442 (home-page "https://github.com/net-ssh/net-ssh")
1443 (license license:expat)))
1444
2206e948
DT
1445(define-public ruby-minitest
1446 (package
1447 (name "ruby-minitest")
1448 (version "5.7.0")
1449 (source (origin
e83c6d00
DT
1450 (method url-fetch)
1451 (uri (rubygems-uri "minitest" version))
2206e948
DT
1452 (sha256
1453 (base32
e83c6d00 1454 "0rxqfakp629mp3vwda7zpgb57lcns5znkskikbfd0kriwv8i1vq8"))))
2206e948 1455 (build-system ruby-build-system)
2206e948
DT
1456 (native-inputs
1457 `(("ruby-hoe" ,ruby-hoe)))
1458 (synopsis "Small test suite library for Ruby")
1459 (description "Minitest provides a complete suite of Ruby testing
1460facilities supporting TDD, BDD, mocking, and benchmarking.")
1461 (home-page "https://github.com/seattlerb/minitest")
1462 (license license:expat)))
1463
1db6e09f
RW
1464;; This is the last release of Minitest 4, which is used by some packages.
1465(define-public ruby-minitest-4
1466 (package (inherit ruby-minitest)
1467 (version "4.7.5")
1468 (source (origin
1469 (method url-fetch)
1470 (uri (rubygems-uri "minitest" version))
1471 (sha256
1472 (base32
1473 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
1474 (arguments
1475 `(#:phases
1476 (modify-phases %standard-phases
1477 (add-after 'unpack 'remove-unsupported-method
1478 (lambda _
1479 (substitute* "Rakefile"
1480 (("self\\.rubyforge_name = .*") ""))
1481 #t)))))))
1482
35130835
DT
1483(define-public ruby-minitest-sprint
1484 (package
1485 (name "ruby-minitest-sprint")
1486 (version "1.1.0")
1487 (source (origin
e83c6d00
DT
1488 (method url-fetch)
1489 (uri (rubygems-uri "minitest-sprint" version))
35130835
DT
1490 (sha256
1491 (base32
e83c6d00 1492 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
35130835 1493 (build-system ruby-build-system)
35130835
DT
1494 (native-inputs
1495 `(("ruby-hoe" ,ruby-hoe)
1496 ("ruby-minitest" ,ruby-minitest)))
1497 (synopsis "Fast test suite runner for minitest")
1498 (description "Minitest-sprint is a test runner for minitest that makes it
1499easier to re-run individual failing tests.")
1500 (home-page "https://github.com/seattlerb/minitest-sprint")
1501 (license license:expat)))
1502
0808e361
DT
1503(define-public ruby-minitest-bacon
1504 (package
1505 (name "ruby-minitest-bacon")
1506 (version "1.0.2")
1507 (source (origin
e83c6d00
DT
1508 (method url-fetch)
1509 (uri (rubygems-uri "minitest-bacon" version))
0808e361
DT
1510 (sha256
1511 (base32
e83c6d00 1512 "0cm7r68422743i3b6fm4rrm0r6cnnjmglq5gcmmgl1f0rk5hnf6r"))))
0808e361 1513 (build-system ruby-build-system)
0808e361
DT
1514 (native-inputs
1515 `(("ruby-hoe" ,ruby-hoe)))
1516 (inputs
1517 `(("ruby-minitest" ,ruby-minitest)))
1518 (synopsis "Bacon compatibility library for minitest")
1519 (description "Minitest-bacon extends minitest with bacon-like
1520functionality, making it easier to migrate test suites from bacon to minitest.")
1521 (home-page "https://github.com/seattlerb/minitest-bacon")
1522 (license license:expat)))
1523
afbbdf77
DT
1524(define-public ruby-daemons
1525 (package
1526 (name "ruby-daemons")
1527 (version "1.2.2")
1528 (source (origin
1529 (method url-fetch)
e83c6d00 1530 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
1531 (sha256
1532 (base32
e83c6d00 1533 "121c7vkimg3baxga69xvdkwxiq8wkmxqvdbyqi5i82vhih5d3cn3"))))
afbbdf77
DT
1534 (build-system ruby-build-system)
1535 (arguments
1536 `(#:tests? #f)) ; no test suite
1537 (synopsis "Daemonize Ruby programs")
1538 (description "Daemons provides a way to wrap existing Ruby scripts to be
1539run as a daemon and to be controlled by simple start/stop/restart commands.")
1540 (home-page "https://github.com/thuehlinger/daemons")
1541 (license license:expat)))
66e20863
DT
1542
1543(define-public ruby-git
1544 (package
1545 (name "ruby-git")
1546 (version "1.2.9.1")
1547 (source (origin
1548 (method url-fetch)
e83c6d00 1549 (uri (rubygems-uri "git" version))
66e20863
DT
1550 (sha256
1551 (base32
e83c6d00 1552 "1sqfj8lmhl7c5zamcckkpik4izfph2zkv6krw0i8mzj5pdws5acs"))))
66e20863
DT
1553 (build-system ruby-build-system)
1554 (arguments
e83c6d00
DT
1555 `(#:tests? #f ; no tests
1556 #:phases (modify-phases %standard-phases
1557 (add-after 'install 'patch-git-binary
1558 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
1559 ;; Make the default git binary an absolute path to the
1560 ;; store.
e83c6d00
DT
1561 (let ((git (string-append (assoc-ref inputs "git")
1562 "/bin/git"))
1563 (config (string-append (getenv "GEM_HOME")
1564 "/gems/git-" ,version
1565 "/lib/git/config.rb")))
1566 (substitute* (list config)
66e20863
DT
1567 (("'git'")
1568 (string-append "'" git "'")))
e83c6d00 1569 #t))))))
66e20863
DT
1570 (inputs
1571 `(("git" ,git)))
1572 (synopsis "Ruby wrappers for Git")
1573 (description "Ruby/Git is a Ruby library that can be used to create, read
1574and manipulate Git repositories by wrapping system calls to the git binary.")
1575 (home-page "https://github.com/schacon/ruby-git")
1576 (license license:expat)))
71d3e2c2
DT
1577
1578(define-public ruby-slop
1579 (package
1580 (name "ruby-slop")
1581 (version "4.1.0")
1582 (source (origin
1583 (method url-fetch)
e83c6d00 1584 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
1585 (sha256
1586 (base32
e83c6d00 1587 "0dj0ps6v1mqd02k84mgwd7hp578n2bzl7c51h3grdhxfl3jkfsj5"))))
71d3e2c2
DT
1588 (build-system ruby-build-system)
1589 (native-inputs
1590 `(("ruby-minitest" ,ruby-minitest)))
1591 (synopsis "Ruby command line option parser")
1592 (description "Slop provides a Ruby domain specific language for gathering
1593options and parsing command line flags.")
1594 (home-page "https://github.com/leejarvis/slop")
1595 (license license:expat)))
e778a549 1596
5337f8b9
DT
1597(define-public ruby-slop-3
1598 (package (inherit ruby-slop)
1599 (version "3.6.0")
1600 (source (origin
1601 (method url-fetch)
1602 (uri (rubygems-uri "slop" version))
1603 (sha256
1604 (base32
1605 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
1606
e778a549
DT
1607(define-public ruby-multipart-post
1608 (package
1609 (name "ruby-multipart-post")
1610 (version "2.0.0")
1611 (source (origin
1612 (method url-fetch)
e83c6d00 1613 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
1614 (sha256
1615 (base32
e83c6d00 1616 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
1617 (build-system ruby-build-system)
1618 (native-inputs
1619 `(("bundler" ,bundler)))
1620 (synopsis "Multipart POST library for Ruby")
1621 (description "Multipart-Post Adds multipart POST capability to Ruby's
1622net/http library.")
1623 (home-page "https://github.com/nicksieger/multipart-post")
1624 (license license:expat)))
f8da3af0
DT
1625
1626(define-public ruby-arel
1627 (package
1628 (name "ruby-arel")
1629 (version "6.0.3")
1630 (source (origin
1631 (method url-fetch)
1632 (uri (rubygems-uri "arel" version))
1633 (sha256
1634 (base32
1635 "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk"))))
1636 (build-system ruby-build-system)
1637 (arguments '(#:tests? #f)) ; no tests
1638 (home-page "https://github.com/rails/arel")
1639 (synopsis "SQL AST manager for Ruby")
1640 (description "Arel is a SQL AST manager for Ruby. It simplifies the
1641generation of complex SQL queries and is compatible with various RDBMSes.")
1642 (license license:expat)))
616eaead
DT
1643
1644(define-public ruby-minitar
1645 (package
1646 (name "ruby-minitar")
1647 (version "0.5.4")
1648 (source
1649 (origin
1650 (method url-fetch)
1651 (uri (rubygems-uri "minitar" version))
1652 (sha256
1653 (base32
1654 "1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka"))))
1655 (build-system ruby-build-system)
1656 (arguments
1657 '(#:tests? #f)) ; missing a gemspec
1658 (synopsis "Ruby library and utility for handling tar archives")
1659 (description
1660 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
1661that provides the ability to deal with POSIX tar archive files.")
1662 (home-page "http://www.github.com/atoulme/minitar")
1663 (license (list license:gpl2+ license:ruby))))
bea1c0e2
DT
1664
1665(define-public ruby-mini-portile
1666 (package
1667 (name "ruby-mini-portile")
1668 (version "0.6.2")
1669 (source
1670 (origin
1671 (method url-fetch)
1672 (uri (rubygems-uri "mini_portile" version))
1673 (sha256
1674 (base32
1675 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
1676 (build-system ruby-build-system)
1677 (arguments
1678 '(#:tests? #f)) ; tests require network access
1679 (synopsis "Ports system for Ruby developers")
1680 (description "Mini-portile is a port/recipe system for Ruby developers.
1681It provides a standard way to compile against specific versions of libraries
1682to reproduce user environments.")
1683 (home-page "http://github.com/flavorjones/mini_portile")
1684 (license license:expat)))
e920bfca 1685
d000fc92
BW
1686(define-public ruby-mini-portile-2
1687 (package (inherit ruby-mini-portile)
1688 (version "2.0.0")
1689 (source (origin
1690 (method url-fetch)
1691 (uri (rubygems-uri "mini_portile2" version))
1692 (sha256
1693 (base32
1694 "056drbn5m4khdxly1asmiik14nyllswr6sh3wallvsywwdiryz8l"))))))
1695
e920bfca
DT
1696(define-public ruby-nokogiri
1697 (package
1698 (name "ruby-nokogiri")
1b9d4e2e 1699 (version "1.6.7.1")
e920bfca
DT
1700 (source (origin
1701 (method url-fetch)
1702 (uri (rubygems-uri "nokogiri" version))
1703 (sha256
1704 (base32
1b9d4e2e 1705 "12nwv3lad5k2k73aa1d1xy4x577c143ixks6rs70yp78sinbglk2"))))
e920bfca
DT
1706 (build-system ruby-build-system)
1707 (arguments
1708 ;; Tests fail because Nokogiri can only test with an installed extension,
1709 ;; and also because many test framework dependencies are missing.
1710 '(#:tests? #f
1711 #:gem-flags (list "--" "--use-system-libraries"
1712 (string-append "--with-xml2-include="
1713 (assoc-ref %build-inputs "libxml2")
1714 "/include/libxml2" ))))
1715 (native-inputs
1716 `(("ruby-hoe" ,ruby-hoe)
1717 ("ruby-rake-compiler", ruby-rake-compiler)))
1718 (inputs
1719 `(("zlib" ,zlib)
1720 ("libxml2" ,libxml2)
1721 ("libxslt" ,libxslt)))
1722 (propagated-inputs
1b9d4e2e 1723 `(("ruby-mini-portile" ,ruby-mini-portile-2)))
e920bfca
DT
1724 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
1725 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
1726both CSS3 selector and XPath 1.0 support.")
1727 (home-page "http://www.nokogiri.org/")
1728 (license license:expat)))
30b0b725
DT
1729
1730(define-public ruby-method-source
1731 (package
1732 (name "ruby-method-source")
1733 (version "0.8.2")
1734 (source
1735 (origin
1736 (method url-fetch)
1737 (uri (rubygems-uri "method_source" version))
1738 (sha256
1739 (base32
1740 "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
1741 (build-system ruby-build-system)
1742 (native-inputs
1743 `(("ruby-bacon" ,ruby-bacon)
1744 ("git" ,git)))
1745 (synopsis "Retrieve the source code for Ruby methods")
1746 (description "Method_source retrieves the source code for Ruby methods.
1747Additionally, it can extract source code from Proc and Lambda objects or just
1748extract comments.")
1749 (home-page "https://github.com/banister/method_source")
1750 (license license:expat)))
2e3fdea4
DT
1751
1752(define-public ruby-coderay
1753 (package
1754 (name "ruby-coderay")
1755 (version "1.1.0")
1756 (source
1757 (origin
1758 (method url-fetch)
1759 (uri (rubygems-uri "coderay" version))
1760 (sha256
1761 (base32
1762 "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
1763 (build-system ruby-build-system)
1764 (arguments
1765 '(#:tests? #f)) ; missing test files
1766 (synopsis "Ruby syntax highlighting library")
1767 (description "Coderay is a Ruby library that provides syntax highlighting
1768for select languages.")
1769 (home-page "http://coderay.rubychan.de")
1770 (license license:expat)))
96e76083
DT
1771
1772(define-public ruby-pry
1773 (package
1774 (name "ruby-pry")
1775 (version "0.10.1")
1776 (source
1777 (origin
1778 (method url-fetch)
1779 (uri (rubygems-uri "pry" version))
1780 (sha256
1781 (base32
1782 "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
1783 (build-system ruby-build-system)
1784 (arguments
1785 '(#:tests? #f)) ; no tests
1786 (propagated-inputs
1787 `(("ruby-coderay" ,ruby-coderay)
1788 ("ruby-method-source" ,ruby-method-source)
1789 ("ruby-slop" ,ruby-slop-3)))
1790 (synopsis "Ruby REPL")
1791 (description "Pry is an IRB alternative and runtime developer console for
1792Ruby. It features syntax highlighting, a plugin architecture, runtime
1793invocation, and source and documentation browsing.")
1794 (home-page "http://pryrepl.org")
1795 (license license:expat)))
1415792a 1796
051deeb7
RW
1797(define-public ruby-guard
1798 (package
1799 (name "ruby-guard")
1800 (version "2.13.0")
1801 (source (origin
1802 (method url-fetch)
1803 ;; The gem does not include a Rakefile, nor does it contain a
1804 ;; gemspec file, nor does it come with the tests. This is why
1805 ;; we fetch the tarball from Github.
1806 (uri (string-append "https://github.com/guard/guard/archive/v"
1807 version ".tar.gz"))
1808 (file-name (string-append name "-" version ".tar.gz"))
1809 (sha256
1810 (base32
1811 "1hwj0yi17k6f5axrm0k2bb7fq71dlp0zfywmd7pij9iimbppcca0"))))
1812 (build-system ruby-build-system)
1813 (arguments
1814 `(#:tests? #f ; tests require cucumber
1815 #:phases
1816 (modify-phases %standard-phases
1817 (add-after 'unpack 'remove-git-ls-files
1818 (lambda* (#:key outputs #:allow-other-keys)
1819 (substitute* "guard.gemspec"
1820 (("git ls-files -z") "find . -type f -print0"))
1821 #t))
1822 (replace 'build
1823 (lambda _
1824 (zero? (system* "gem" "build" "guard.gemspec")))))))
1825 (propagated-inputs
1826 `(("ruby-formatador" ,ruby-formatador)
1827 ("ruby-listen" ,ruby-listen)
1828 ("ruby-lumberjack" ,ruby-lumberjack)
1829 ("ruby-nenv" ,ruby-nenv)
1830 ("ruby-notiffany" ,ruby-notiffany)
1831 ("ruby-pry" ,ruby-pry)
1832 ("ruby-shellany" ,ruby-shellany)
1833 ("ruby-thor" ,ruby-thor)))
1834 (native-inputs
1835 `(("bundler" ,bundler)
1836 ("ruby-rspec" ,ruby-rspec)))
1837 (synopsis "Tool to handle events on file system modifications")
1838 (description
1839 "Guard is a command line tool to easily handle events on file system
1840modifications. Guard automates various tasks by running custom rules whenever
1841file or directories are modified.")
1842 (home-page "http://guardgem.org/")
1843 (license license:expat)))
1844
1415792a
DT
1845(define-public ruby-thread-safe
1846 (package
1847 (name "ruby-thread-safe")
1848 (version "0.3.5")
1849 (source
1850 (origin
1851 (method url-fetch)
1852 (uri (rubygems-uri "thread_safe" version))
1853 (sha256
1854 (base32
1855 "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
1856 (build-system ruby-build-system)
1857 (arguments
1858 '(#:tests? #f)) ; needs simplecov, among others
1859 (synopsis "Thread-safe utilities for Ruby")
1860 (description "The thread_safe library provides thread-safe collections and
1861utilities for Ruby.")
1862 (home-page "https://github.com/ruby-concurrency/thread_safe")
1863 (license license:asl2.0)))
08a1b701
DT
1864
1865(define-public ruby-tzinfo
1866 (package
1867 (name "ruby-tzinfo")
1868 (version "1.2.2")
1869 (source
1870 (origin
1871 (method url-fetch)
1872 (uri (rubygems-uri "tzinfo" version))
1873 (sha256
1874 (base32
1875 "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
1876 (build-system ruby-build-system)
1877 (propagated-inputs
1878 `(("ruby-thread-safe" ,ruby-thread-safe)))
1879 (synopsis "Time zone library for Ruby")
1880 (description "TZInfo is a Ruby library that provides daylight savings
1881aware transformations between times in different time zones.")
1882 (home-page "http://tzinfo.github.io")
1883 (license license:expat)))
c99e2247 1884
48e6851f
RW
1885(define-public ruby-rb-inotify
1886 (package
1887 (name "ruby-rb-inotify")
1888 (version "0.9.5")
1889 (source
1890 (origin
1891 (method url-fetch)
1892 (uri (rubygems-uri "rb-inotify" version))
1893 (sha256
1894 (base32
1895 "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"))))
1896 (build-system ruby-build-system)
1897 (arguments
1898 '(#:tests? #f ; there are no tests
1899 #:phases
1900 (modify-phases %standard-phases
1901 ;; Building the gemspec with rake is not working here since it is
1902 ;; generated with Jeweler. It is also unnecessary because the
1903 ;; existing gemspec does not use any development tools to generate a
1904 ;; list of files.
1905 (replace 'build
1906 (lambda _
1907 (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
1908 (propagated-inputs
1909 `(("ruby-ffi" ,ruby-ffi)))
1910 (native-inputs
1911 `(("ruby-yard" ,ruby-yard)))
1912 (synopsis "Ruby wrapper for Linux's inotify")
1913 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
1914kernel subsystem for monitoring changes to files and directories.")
1915 (home-page "https://github.com/nex3/rb-inotify")
1916 (license license:expat)))
1917
a75bdfce
RW
1918(define-public ruby-pry-editline
1919 (package
1920 (name "ruby-pry-editline")
1921 (version "1.1.2")
1922 (source (origin
1923 (method url-fetch)
1924 (uri (rubygems-uri "pry-editline" version))
1925 (sha256
1926 (base32
1927 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
1928 (build-system ruby-build-system)
1929 (arguments `(#:tests? #f)) ; no tests included
1930 (native-inputs
1931 `(("bundler" ,bundler)))
1932 (synopsis "Open the current REPL line in an editor")
1933 (description
1934 "This gem provides a plugin for the Ruby REPL to enable opening the
1935current line in an external editor.")
1936 (home-page "https://github.com/tpope/pry-editline")
1937 (license license:expat)))
1938
d3b20a02
RW
1939(define-public ruby-sdoc
1940 (package
1941 (name "ruby-sdoc")
1942 (version "0.4.1")
1943 (source (origin
1944 (method url-fetch)
1945 (uri (rubygems-uri "sdoc" version))
1946 (sha256
1947 (base32
1948 "16xyfair1j4irfkd6sxvmdcak957z71lwkvhglrznfpkalfnqyqp"))))
1949 (build-system ruby-build-system)
1950 (arguments
1951 `(#:phases
1952 (modify-phases %standard-phases
1953 (add-after 'build 'relax-minitest-requirement
1954 (lambda _
1955 (substitute* "sdoc.gemspec"
1956 (("<minitest>, \\[\"~> 4\\.0\"\\]")
1957 "<minitest>, [\">= 4.0\"]"))
1958 #t)))))
1959 (propagated-inputs
1960 `(("ruby-json" ,ruby-json)))
1961 (native-inputs
1962 `(("bundler" ,bundler)
1963 ("ruby-minitest" ,ruby-minitest)))
1964 (synopsis "Generate searchable RDoc documentation")
1965 (description
1966 "SDoc is an RDoc documentation generator to build searchable HTML
1967documentation for Ruby code.")
1968 (home-page "http://github.com/voloko/sdoc")
1969 (license license:expat)))
1970
70b002aa
RW
1971(define-public ruby-tins
1972 (package
1973 (name "ruby-tins")
1974 (version "1.7.0")
1975 (source (origin
1976 (method url-fetch)
1977 (uri (rubygems-uri "tins" version))
1978 (sha256
1979 (base32
1980 "1060h8dgnjl9az0sv1b74yrni8d4mh3x858wq6yfbfdf5dxrfl0a"))))
1981 (build-system ruby-build-system)
1982 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
1983 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
1984 ;; the gemspec.
1985 (arguments
1986 `(#:tests? #f ; there are no tests
1987 #:phases
1988 (modify-phases %standard-phases
1989 (replace 'build
1990 (lambda _
1991 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
1992 ;; causes an error.
1993 (substitute* "tins.gemspec"
1994 (("\"lib/spruz\", ") ""))
1995 (zero? (system* "gem" "build" "tins.gemspec")))))))
1996 (synopsis "Assorted tools for Ruby")
1997 (description "Tins is a Ruby library providing assorted tools.")
1998 (home-page "https://github.com/flori/tins")
1999 (license license:expat)))
2000
bc8277e4
RW
2001(define-public ruby-gem-hadar
2002 (package
2003 (name "ruby-gem-hadar")
2004 (version "1.3.1")
2005 (source (origin
2006 (method url-fetch)
2007 (uri (rubygems-uri "gem_hadar" version))
2008 (sha256
2009 (base32
2010 "1j8qri4m9wf8nbfv0kakrgsv2x8vg10914xgm6f69nw8zi3i39ws"))))
2011 (build-system ruby-build-system)
2012 ;; This gem needs itself at development time. We disable rebuilding of the
2013 ;; gemspec to avoid this loop.
2014 (arguments
2015 `(#:tests? #f ; there are no tests
2016 #:phases
2017 (modify-phases %standard-phases
2018 (replace 'build
2019 (lambda _
2020 (zero? (system* "gem" "build" "gem_hadar.gemspec")))))))
2021 (propagated-inputs
2022 `(("git" ,git)
2023 ("ruby-tins" ,ruby-tins)
2024 ("ruby-sdoc" ,ruby-sdoc)))
2025 (native-inputs
2026 `(("bundler" ,bundler)))
2027 (synopsis "Library for the development of Ruby gems")
2028 (description
2029 "This library contains some useful functionality to support the
2030development of Ruby gems.")
2031 (home-page "https://github.com/flori/gem_hadar")
2032 (license license:expat)))
2033
d8cafe29
RW
2034(define-public ruby-minitest-tu-shim
2035 (package
2036 (name "ruby-minitest-tu-shim")
2037 (version "1.3.3")
2038 (source (origin
2039 (method url-fetch)
2040 (uri (rubygems-uri "minitest_tu_shim" version))
2041 (sha256
2042 (base32
2043 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
2044 (build-system ruby-build-system)
2045 (arguments
2046 `(#:phases
2047 (modify-phases %standard-phases
2048 (add-after 'unpack 'fix-test-include-path
2049 (lambda* (#:key inputs #:allow-other-keys)
2050 (substitute* "Rakefile"
2051 (("Hoe\\.add_include_dirs .*")
2052 (string-append "Hoe.add_include_dirs \""
2053 (assoc-ref inputs "ruby-minitest-4")
2054 "/lib/ruby/gems/2.2.0/gems/minitest-"
2055 ,(package-version ruby-minitest-4)
2056 "/lib" "\"")))))
2057 (add-before 'check 'fix-test-assumptions
2058 (lambda _
2059 ;; The test output includes the file name, so a couple of tests
2060 ;; fail. Changing the regular expressions slightly fixes this
2061 ;; problem.
2062 (substitute* "test/test_mini_test.rb"
2063 (("output.sub!\\(.*, 'FILE:LINE'\\)")
2064 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
2065 (("gsub\\(/.*, 'FILE:LINE'\\)")
2066 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
2067 #t)))))
2068 (propagated-inputs
2069 `(("ruby-minitest-4" ,ruby-minitest-4)))
2070 (native-inputs
2071 `(("ruby-hoe" ,ruby-hoe)))
2072 (synopsis "Adapter library between minitest and test/unit")
2073 (description
2074 "This library bridges the gap between the small and fast minitest and
2075Ruby's large and slower test/unit.")
2076 (home-page "https://rubygems.org/gems/minitest_tu_shim")
2077 (license license:expat)))
2078
fd83a212
RW
2079(define-public ruby-term-ansicolor
2080 (package
2081 (name "ruby-term-ansicolor")
2082 (version "1.3.2")
2083 (source (origin
2084 (method url-fetch)
2085 (uri (rubygems-uri "term-ansicolor" version))
2086 (sha256
2087 (base32
2088 "0ydbbyjmk5p7fsi55ffnkq79jnfqx65c3nj8d9rpgl6sw85ahyys"))))
2089 (build-system ruby-build-system)
2090 ;; Rebuilding the gemspec seems to require git, even though this is not a
2091 ;; git repository, so we just build the gem from the existing gemspec.
2092 (arguments
2093 `(#:phases
2094 (modify-phases %standard-phases
2095 (replace 'build
2096 (lambda _
2097 (zero? (system* "gem" "build" "term-ansicolor.gemspec")))))))
2098 (propagated-inputs
2099 `(("ruby-tins" ,ruby-tins)))
2100 (native-inputs
2101 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2102 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
2103 (synopsis "Ruby library to control the attributes of terminal output")
2104 (description
2105 "This Ruby library uses ANSI escape sequences to control the attributes
2106of terminal output.")
2107 (home-page "http://flori.github.io/term-ansicolor/")
2108 ;; There is no mention of the "or later" clause.
2109 (license license:gpl2)))
2110
6e376ca4
RW
2111(define-public ruby-pstree
2112 (package
2113 (name "ruby-pstree")
2114 (version "0.1.0")
2115 (source (origin
2116 (method url-fetch)
2117 (uri (rubygems-uri "pstree" version))
2118 (sha256
2119 (base32
2120 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
2121 (build-system ruby-build-system)
2122 (native-inputs
2123 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2124 ("bundler" ,bundler)))
2125 (synopsis "Create a process tree data structure")
2126 (description
2127 "This library uses the output of the @code{ps} command to create a
2128process tree data structure for the current host.")
2129 (home-page "http://flori.github.com/pstree")
2130 ;; There is no mention of the "or later" clause.
2131 (license license:gpl2)))
2132
53239b5f
RW
2133(define-public ruby-utils
2134 (package
2135 (name "ruby-utils")
2136 (version "0.2.4")
2137 (source (origin
2138 (method url-fetch)
2139 (uri (rubygems-uri "utils" version))
2140 (sha256
2141 (base32
2142 "0vycgscxf3s1xn4yyfsq54zlh082581ga8azybmqgc4pij6iz2cd"))))
2143 (build-system ruby-build-system)
2144 (propagated-inputs
2145 `(("ruby-tins" ,ruby-tins)
2146 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
2147 ("ruby-pstree" ,ruby-pstree)
2148 ("ruby-pry-editline" ,ruby-pry-editline)))
2149 (native-inputs
2150 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2151 ("bundler" ,bundler)))
2152 (synopsis "Command line tools for working with Ruby")
2153 (description
2154 "This package provides assorted command line tools that may be useful
2155when working with Ruby code.")
2156 (home-page "https://github.com/flori/utils")
2157 ;; There is no mention of the "or later" clause.
2158 (license license:gpl2)))
2159
c99e2247
DT
2160(define-public ruby-json
2161 (package
2162 (name "ruby-json")
2163 (version "1.8.3")
2164 (source
2165 (origin
2166 (method url-fetch)
2167 (uri (rubygems-uri "json" version))
2168 (sha256
2169 (base32
2170 "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
2171 (build-system ruby-build-system)
2172 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
2173 (synopsis "JSON library for Ruby")
2174 (description "This Ruby library provides a JSON implementation written as
2175a native C extension.")
2176 (home-page "http://json-jruby.rubyforge.org/")
2177 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 2178
763624f5
RW
2179(define-public ruby-json-pure
2180 (package
2181 (name "ruby-json-pure")
2182 (version "1.8.3")
2183 (source (origin
2184 (method url-fetch)
2185 (uri (rubygems-uri "json_pure" version))
2186 (sha256
2187 (base32
2188 "025aykr360x6dr1jmg8pmsrx7gr30pws4p1q686vnb48zyw1sc94"))))
2189 (build-system ruby-build-system)
2190 (arguments
2191 `(#:modules ((srfi srfi-1)
2192 (ice-9 regex)
2193 (rnrs io ports)
2194 (guix build ruby-build-system)
2195 (guix build utils))
2196 #:phases
2197 (modify-phases %standard-phases
2198 (add-after 'unpack 'replace-git-ls-files
2199 (lambda _
2200 ;; The existing gemspec file already contains a nice list of
2201 ;; files that belong to the gem. We extract the list from the
2202 ;; gemspec file and then replace the file list in the Rakefile to
2203 ;; get rid of the call to "git ls-files".
2204 (let* ((contents (call-with-input-file "json.gemspec" get-string-all))
2205 ;; Guile is unhappy about the #\nul characters in comments.
2206 (filtered (string-filter (lambda (char)
2207 (not (equal? #\nul char)))
2208 contents))
2209 (files (match:substring
2210 (string-match " s\\.files = ([^]]+\\])" filtered) 1)))
2211 (substitute* "Rakefile"
2212 (("FileList\\[`git ls-files`\\.split\\(/\\\\n/\\)\\]")
2213 (string-append "FileList" files))))
2214 #t)))))
2215 (native-inputs
2216 `(("ruby-permutation" ,ruby-permutation)
2217 ("ruby-utils" ,ruby-utils)
2218 ("ragel" ,ragel)
2219 ("bundler" ,bundler)))
2220 (synopsis "JSON implementation in pure Ruby")
2221 (description
2222 "This package provides a JSON implementation written in pure Ruby.")
2223 (home-page "http://flori.github.com/json")
2224 (license license:ruby)))
2225
16b324cd
RW
2226;; Even though this package only provides bindings for a Mac OSX API it is
2227;; required by "ruby-listen" at runtime.
2228(define-public ruby-rb-fsevent
2229 (package
2230 (name "ruby-rb-fsevent")
2231 (version "0.9.6")
2232 (source (origin
2233 (method url-fetch)
2234 (uri (rubygems-uri "rb-fsevent" version))
2235 (sha256
2236 (base32
2237 "1hq57by28iv0ijz8pk9ynih0xdg7vnl1010xjcijfklrcv89a1j2"))))
2238 (build-system ruby-build-system)
2239 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
2240 ;; "listen", which needs "rb-fsevent" at runtime.
2241 (arguments `(#:tests? #f))
2242 (synopsis "FSEvents API with signals catching")
2243 (description
2244 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
2245 (home-page "https://rubygems.org/gems/rb-fsevent")
2246 (license license:expat)))
2247
b86be2ad
RW
2248(define-public ruby-listen
2249 (package
2250 (name "ruby-listen")
2251 (version "3.0.3")
2252 (source
2253 (origin
2254 (method url-fetch)
2255 (uri (rubygems-uri "listen" version))
2256 (sha256
2257 (base32
2258 "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
2259 (build-system ruby-build-system)
2260 (arguments '(#:tests? #f)) ; no tests
2261 (propagated-inputs
cf1a01f4
RW
2262 `(("ruby-rb-inotify" ,ruby-rb-inotify)
2263 ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
b86be2ad
RW
2264 (synopsis "Listen to file modifications")
2265 (description "The Listen gem listens to file modifications and notifies
2266you about the changes.")
2267 (home-page "https://github.com/guard/listen")
2268 (license license:expat)))
2269
5ff89a1b
DT
2270(define-public ruby-activesupport
2271 (package
2272 (name "ruby-activesupport")
2273 (version "4.2.4")
2274 (source
2275 (origin
2276 (method url-fetch)
2277 (uri (rubygems-uri "activesupport" version))
2278 (sha256
2279 (base32
2280 "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
2281 (build-system ruby-build-system)
2282 (arguments
2283 '(#:tests? #f)) ; no tests
2284 (propagated-inputs
2285 `(("ruby-i18n" ,ruby-i18n)
2286 ("ruby-json" ,ruby-json)
2287 ("ruby-minitest" ,ruby-minitest)
2288 ("ruby-thread-safe" ,ruby-thread-safe)
2289 ("ruby-tzinfo" ,ruby-tzinfo)))
2290 (synopsis "Ruby on Rails utility library")
2291 (description "ActiveSupport is a toolkit of support libraries and Ruby
2292core extensions extracted from the Rails framework. It includes support for
2293multibyte strings, internationalization, time zones, and testing.")
2294 (home-page "http://www.rubyonrails.org")
2295 (license license:expat)))
f847ad7b 2296
3996f0aa
RW
2297(define-public ruby-crass
2298 (package
2299 (name "ruby-crass")
2300 (version "1.0.2")
2301 (source (origin
2302 (method url-fetch)
2303 (uri (rubygems-uri "crass" version))
2304 (sha256
2305 (base32
2306 "1c377r8g7m58y22803iyjgqkkvnnii0pymskda1pardxrzaighj9"))))
2307 (build-system ruby-build-system)
2308 (native-inputs
2309 `(("bundler" ,bundler)
2310 ("ruby-minitest" ,ruby-minitest)))
2311 (synopsis "Pure Ruby CSS parser")
2312 (description
2313 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
2314 (home-page "https://github.com/rgrove/crass/")
2315 (license license:expat)))
2316
c2c4e5b2
RW
2317(define-public ruby-nokogumbo
2318 (package
2319 (name "ruby-nokogumbo")
2320 (version "1.4.6")
2321 (source (origin
2322 ;; We use the git reference, because there's no Rakefile in the
2323 ;; published gem and the tarball on Github is outdated.
2324 (method git-fetch)
2325 (uri (git-reference
2326 (url "https://github.com/rubys/nokogumbo.git")
2327 (commit "d56f954d20a")))
2328 (file-name (string-append name "-" version "-checkout"))
2329 (sha256
2330 (base32
2331 "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
2332 (build-system ruby-build-system)
2333 (arguments
2334 `(#:modules ((guix build ruby-build-system)
2335 (guix build utils)
2336 (ice-9 rdelim))
2337 #:phases
2338 (modify-phases %standard-phases
2339 (add-before 'build 'build-gemspec
2340 (lambda _
2341 (substitute* "Rakefile"
2342 ;; Build Makefile even without a copy of gumbo-parser sources
2343 (("'gumbo-parser/src',") "")
2344 ;; We don't bundle gumbo-parser sources
2345 (("'gumbo-parser/src/\\*',") "")
2346 (("'gumbo-parser/visualc/include/\\*',") "")
2347 ;; The definition of SOURCES will be cut in gemspec, and
2348 ;; "FileList" will be undefined.
2349 (("SOURCES \\+ FileList\\[")
2350 "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
2351
2352 ;; Copy the Rakefile and cut out the gemspec.
2353 (copy-file "Rakefile" ".gemspec")
2354 (with-atomic-file-replacement ".gemspec"
2355 (lambda (in out)
2356 (let loop ((line (read-line in 'concat))
2357 (skipping? #t))
2358 (if (eof-object? line)
2359 #t
2360 (let ((skip-next? (if skipping?
2361 (not (string-prefix? "SPEC =" line))
2362 (string-prefix? "end" line))))
2363 (when (or (not skipping?)
2364 (and skipping? (not skip-next?)))
2365 (format #t "~a" line)
2366 (display line out))
2367 (loop (read-line in 'concat) skip-next?))))))
2368 #t)))))
2369 (inputs
2370 `(("gumbo-parser" ,gumbo-parser)))
2371 (propagated-inputs
2372 `(("ruby-nokogiri" ,ruby-nokogiri)))
2373 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
2374 (description
2375 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
2376access the result as a Nokogiri parsed document.")
2377 (home-page "https://github.com/rubys/nokogumbo/")
2378 (license license:asl2.0)))
2379
d56ff88b
RW
2380(define-public ruby-sanitize
2381 (package
2382 (name "ruby-sanitize")
2383 (version "4.0.0")
2384 (source (origin
2385 (method url-fetch)
2386 ;; The gem does not include the Rakefile, so we download the
2387 ;; release tarball from Github.
2388 (uri (string-append "https://github.com/rgrove/"
2389 "sanitize/archive/v" version ".tar.gz"))
2390 (file-name (string-append name "-" version ".tar.gz"))
2391 (sha256
2392 (base32
2393 "055xnj38l60gxnnng76kpy2l2jbrp0byjdyq17jw79w7l4b40znr"))))
2394 (build-system ruby-build-system)
2395 (propagated-inputs
2396 `(("ruby-crass" ,ruby-crass)
2397 ("ruby-nokogiri" ,ruby-nokogiri)
2398 ("ruby-nokogumbo" ,ruby-nokogumbo)))
2399 (native-inputs
2400 `(("bundler" ,bundler)
2401 ("ruby-minitest" ,ruby-minitest)
2402 ("ruby-redcarpet" ,ruby-redcarpet)
2403 ("ruby-yard" ,ruby-yard)))
2404 (synopsis "Whitelist-based HTML and CSS sanitizer")
2405 (description
2406 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
2407acceptable elements, attributes, and CSS properties, Sanitize will remove all
2408unacceptable HTML and/or CSS from a string.")
2409 (home-page "https://github.com/rgrove/sanitize/")
2410 (license license:expat)))
2411
f847ad7b
DT
2412(define-public ruby-ox
2413 (package
2414 (name "ruby-ox")
2415 (version "2.2.1")
2416 (source
2417 (origin
2418 (method url-fetch)
2419 (uri (rubygems-uri "ox" version))
2420 (sha256
2421 (base32
2422 "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
2423 (build-system ruby-build-system)
2424 (arguments
2425 '(#:tests? #f)) ; no tests
2426 (synopsis "Optimized XML library for Ruby")
2427 (description
2428 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
2429written as a native C extension. It was designed to be an alternative to
2430Nokogiri and other Ruby XML parsers for generic XML parsing and as an
2431alternative to Marshal for Object serialization. ")
2432 (home-page "http://www.ohler.com/ox")
2433 (license license:expat)))
4a9e0585 2434
0c4e7625
RW
2435(define-public ruby-redcloth
2436 (package
2437 (name "ruby-redcloth")
2438 (version "4.2.9")
2439 (source (origin
2440 (method url-fetch)
2441 (uri (rubygems-uri "RedCloth" version))
2442 (sha256
2443 (base32
2444 "06pahxyrckhgb7alsxwhhlx1ib2xsx33793finj01jk8i054bkxl"))))
2445 (build-system ruby-build-system)
2446 (arguments
2447 `(#:tests? #f ; no tests
2448 #:phases
2449 (modify-phases %standard-phases
2450 ;; Redcloth has complicated rake tasks to build various versions for
2451 ;; multiple targets using RVM. We don't want this so we just use the
2452 ;; existing gemspec.
2453 (replace 'build
2454 (lambda _
2455 (zero? (system* "gem" "build" "redcloth.gemspec"))))
2456 ;; Make sure that the "redcloth" executable finds required Ruby
2457 ;; libraries.
2458 (add-after 'install 'wrap-bin-redcloth
2459 (lambda* (#:key outputs #:allow-other-keys)
2460 (wrap-program (string-append (assoc-ref outputs "out")
2461 "/bin/redcloth")
2462 `("GEM_HOME" ":" prefix (,(getenv "GEM_HOME"))))
2463 #t)))))
2464 (native-inputs
2465 `(("bundler" ,bundler)
2466 ("ruby-diff-lcs" ,ruby-diff-lcs)
2467 ("ruby-rspec-2" ,ruby-rspec-2)))
2468 (synopsis "Textile markup language parser for Ruby")
2469 (description
2470 "RedCloth is a Ruby parser for the Textile markup language.")
2471 (home-page "http://redcloth.org")
2472 (license license:expat)))
2473
4a9e0585
DT
2474(define-public ruby-pg
2475 (package
2476 (name "ruby-pg")
2477 (version "0.18.2")
2478 (source
2479 (origin
2480 (method url-fetch)
2481 (uri (rubygems-uri "pg" version))
2482 (sha256
2483 (base32
2484 "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
2485 (build-system ruby-build-system)
2486 (arguments
2487 '(#:test-target "spec"))
2488 (native-inputs
2489 `(("ruby-rake-compiler" ,ruby-rake-compiler)
2490 ("ruby-hoe" ,ruby-hoe)
2491 ("ruby-rspec" ,ruby-rspec)))
2492 (inputs
2493 `(("postgresql" ,postgresql)))
2494 (synopsis "Ruby interface to PostgreSQL")
2495 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
2496with PostgreSQL 8.4 and later.")
2497 (home-page "https://bitbucket.org/ged/ruby-pg")
2498 (license license:ruby)))
468e5657
DT
2499
2500(define-public ruby-byebug
2501 (package
2502 (name "ruby-byebug")
2503 (version "6.0.2")
2504 (source
2505 (origin
2506 (method url-fetch)
2507 (uri (rubygems-uri "byebug" version))
2508 (sha256
2509 (base32
2510 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
2511 (build-system ruby-build-system)
2512 (arguments
2513 '(#:tests? #f)) ; no tests
2514 (synopsis "Debugger for Ruby 2")
2515 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
2516TracePoint C API for execution control and the Debug Inspector C API for call
2517stack navigation. The core component provides support that front-ends can
2518build on. It provides breakpoint handling and bindings for stack frames among
2519other things and it comes with a command line interface.")
2520 (home-page "http://github.com/deivid-rodriguez/byebug")
2521 (license license:bsd-2)))
64b6ccc3 2522
5799bc2b
RW
2523(define-public ruby-netrc
2524 (package
2525 (name "ruby-netrc")
2526 (version "0.11.0")
2527 (source (origin
2528 (method url-fetch)
2529 (uri (rubygems-uri "netrc" version))
2530 (sha256
2531 (base32
2532 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
2533 (build-system ruby-build-system)
2534 (arguments
2535 `(#:phases
2536 (modify-phases %standard-phases
2537 (replace 'check
2538 ;; There is no Rakefile and minitest can only run one file at once,
2539 ;; so we have to iterate over all test files.
2540 (lambda _
2541 (and (map (lambda (file)
2542 (zero? (system* "ruby" "-Itest" file)))
2543 (find-files "./test" "test_.*\\.rb"))))))))
2544 (native-inputs
2545 `(("ruby-minitest" ,ruby-minitest)))
2546 (synopsis "Library to read and update netrc files")
2547 (description
2548 "This library can read and update netrc files, preserving formatting
2549including comments and whitespace.")
2550 (home-page "https://github.com/geemus/netrc")
2551 (license license:expat)))
2552
3a6989ce
RW
2553(define-public ruby-unf-ext
2554 (package
2555 (name "ruby-unf-ext")
2556 (version "0.0.7.1")
2557 (source (origin
2558 (method url-fetch)
2559 (uri (rubygems-uri "unf_ext" version))
2560 (sha256
2561 (base32
2562 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
2563 (build-system ruby-build-system)
b809cc9a
RW
2564 (arguments
2565 `(#:phases
2566 (modify-phases %standard-phases
2567 (add-after 'build 'build-ext
2568 (lambda _ (zero? (system* "rake" "compile:unf_ext")))))))
3a6989ce
RW
2569 (native-inputs
2570 `(("bundler" ,bundler)
2571 ("ruby-rake-compiler" ,ruby-rake-compiler)
2572 ("ruby-test-unit" ,ruby-test-unit)))
2573 (synopsis "Unicode normalization form support library")
2574 (description
2575 "This package provides unicode normalization form support for Ruby.")
2576 (home-page "https://github.com/knu/ruby-unf_ext")
2577 (license license:expat)))
2578
2632a067
RW
2579(define-public ruby-tdiff
2580 (package
2581 (name "ruby-tdiff")
2582 (version "0.3.3")
2583 (source (origin
2584 (method url-fetch)
2585 (uri (rubygems-uri "tdiff" version))
2586 (sha256
2587 (base32
2588 "0k41jbvn8qq4mgrixnhlk742b971d136i8wpbcv2cczvi22xpc86"))))
2589 (build-system ruby-build-system)
2590 (native-inputs
2591 `(("ruby-rspec-2" ,ruby-rspec-2)
2592 ("ruby-yard" ,ruby-yard)
2593 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
2594 (synopsis "Calculate the differences between two tree-like structures")
2595 (description
2596 "This library provides functions to calculate the differences between two
2597tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
2598 (home-page "https://github.com/postmodern/tdiff")
2599 (license license:expat)))
2600
f60f5002
RW
2601(define-public ruby-nokogiri-diff
2602 (package
2603 (name "ruby-nokogiri-diff")
2604 (version "0.2.0")
2605 (source (origin
2606 (method url-fetch)
2607 (uri (rubygems-uri "nokogiri-diff" version))
2608 (sha256
2609 (base32
2610 "0njr1s42war0bj1axb2psjvk49l74a8wzr799wckqqdcb6n51lc1"))))
2611 (build-system ruby-build-system)
2612 (propagated-inputs
2613 `(("ruby-tdiff" ,ruby-tdiff)
2614 ("ruby-nokogiri" ,ruby-nokogiri)))
2615 (native-inputs
2616 `(("ruby-rspec-2" ,ruby-rspec-2)
2617 ("ruby-yard" ,ruby-yard)
2618 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
2619 (synopsis "Calculate the differences between two XML/HTML documents")
2620 (description
2621 "@code{Nokogiri::Diff} adds the ability to calculate the
2622differences (added or removed nodes) between two XML/HTML documents.")
2623 (home-page "https://github.com/postmodern/nokogiri-diff")
2624 (license license:expat)))
2625
64b6ccc3
DT
2626(define-public ruby-rack
2627 (package
2628 (name "ruby-rack")
2629 (version "1.6.4")
2630 (source
2631 (origin
2632 (method url-fetch)
2633 (uri (rubygems-uri "rack" version))
2634 (sha256
2635 (base32
2636 "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
2637 (build-system ruby-build-system)
2638 (arguments
2639 '(#:phases
2640 (modify-phases %standard-phases
2641 (add-before 'check 'fix-tests
2642 (lambda _
2643 ;; A few of the tests use the length of a file on disk for
2644 ;; Content-Length and Content-Range headers. However, this file
2645 ;; has a shebang in it which an earlier phase patches, growing
2646 ;; the file size from 193 to 239 bytes when the store prefix is
2647 ;; "/gnu/store".
2648 (let ((size-diff (- (string-length (which "ruby"))
2649 (string-length "/usr/bin/env ruby"))))
2650 (substitute* '("test/spec_file.rb")
2651 (("193")
2652 (number->string (+ 193 size-diff)))
2653 (("bytes(.)22-33" all delimiter)
2654 (string-append "bytes"
2655 delimiter
2656 (number->string (+ 22 size-diff))
2657 "-"
2658 (number->string (+ 33 size-diff))))))
2659 #t)))))
2660 (native-inputs
2661 `(("ruby-bacon" ,ruby-bacon)))
2662 (synopsis "Unified web application interface for Ruby")
2663 (description "Rack provides a minimal, modular and adaptable interface for
2664developing web applications in Ruby. By wrapping HTTP requests and responses,
2665it unifies the API for web servers, web frameworks, and software in between
2666into a single method call.")
2667 (home-page "http://rack.github.io/")
2668 (license license:expat)))
62e4cc5a 2669
6aaa815e
PP
2670(define-public ruby-docile
2671 (package
2672 (name "ruby-docile")
2673 (version "1.1.5")
2674 (source
2675 (origin
2676 (method url-fetch)
2677 (uri (rubygems-uri "docile" version))
2678 (sha256
2679 (base32
2680 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
2681 (build-system ruby-build-system)
2682 (arguments
2683 '(#:tests? #f)) ; needs github-markup, among others
2684 (synopsis "Ruby EDSL helper library")
2685 (description "Docile is a Ruby library that provides an interface for
2686creating embedded domain specific languages (EDSLs) that manipulate existing
2687Ruby classes.")
2688 (home-page "https://ms-ati.github.io/docile/")
2689 (license license:expat)))
2690
62e4cc5a
PP
2691(define-public ruby-gherkin3
2692 (package
2693 (name "ruby-gherkin3")
2694 (version "3.1.1")
2695 (source
2696 (origin
2697 (method url-fetch)
2698 (uri (rubygems-uri "gherkin3" version))
2699 (sha256
2700 (base32
2701 "0xsyxhqa1gwcxzvsdy4didaiq5vam8ma3fbwbw2w60via4k6r1z9"))))
2702 (build-system ruby-build-system)
2703 (native-inputs
2704 `(("bundler" ,bundler)))
2705 (arguments
2706 '(#:tests? #f)) ; needs simplecov, among others
2707 (synopsis "Gherkin parser for Ruby")
2708 (description "Gherkin 3 is a parser and compiler for the Gherkin language.
2709It is intended to replace Gherkin 2 and be used by all Cucumber
2710implementations to parse '.feature' files.")
2711 (home-page "https://github.com/cucumber/gherkin3")
2712 (license license:expat)))
cd89fecb
PP
2713
2714(define-public ruby-cucumber-core
2715 (package
2716 (name "ruby-cucumber-core")
2717 (version "1.3.0")
2718 (source
2719 (origin
2720 (method url-fetch)
2721 (uri (rubygems-uri "cucumber-core" version))
2722 (sha256
2723 (base32
2724 "12mrzf0s96izpq0k10lahlkgwc4fjs0zfs344rh8r8h3w3jyppr8"))))
2725 (build-system ruby-build-system)
2726 (propagated-inputs
2727 `(("ruby-gherkin3" ,ruby-gherkin3)))
2728 (native-inputs
2729 `(("bundler" ,bundler)))
2730 (arguments
2731 '(#:tests? #f)) ; needs simplecov, among others
2732 (synopsis "Core library for the Cucumber BDD app")
2733 (description "Cucumber is a tool for running automated tests
2734written in plain language. Because they're written in plain language,
2735they can be read by anyone on your team. Because they can be read by
2736anyone, you can use them to help improve communication, collaboration
2737and trust on your team.")
2738 (home-page "https://cucumber.io/")
2739 (license license:expat)))
212d563d
PP
2740
2741(define-public ruby-bio-logger
2742 (package
2743 (name "ruby-bio-logger")
2744 (version "1.0.1")
2745 (source
2746 (origin
2747 (method url-fetch)
2748 (uri (rubygems-uri "bio-logger" version))
2749 (sha256
2750 (base32
2751 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
2752 (build-system ruby-build-system)
2753 (arguments
2754 `(#:tests? #f)) ; rake errors, missing shoulda
2755 (propagated-inputs
2756 `(("ruby-log4r" ,ruby-log4r)))
2757 (synopsis "Log4r wrapper for Ruby")
2758 (description "Bio-logger is a wrapper around Log4r adding extra logging
2759features such as filtering and fine grained logging.")
2760 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
2761 (license license:expat)))
07f61cb2
BW
2762
2763(define-public ruby-yard
2764 (package
2765 (name "ruby-yard")
2766 (version "0.8.7.6")
2767 (source
2768 (origin
2769 (method url-fetch)
2770 (uri (rubygems-uri "yard" version))
2771 (sha256
2772 (base32
2773 "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x"))))
2774 (build-system ruby-build-system)
2775 (arguments
2776 `(#:test-target "specs"
2777 #:phases
2778 (modify-phases %standard-phases
2779 (add-before 'check 'set-HOME
2780 ;; $HOME needs to be set to somewhere writeable for tests to run
2781 (lambda _ (setenv "HOME" "/tmp") #t)))))
2782 (native-inputs
2783 `(("ruby-rspec" ,ruby-rspec-2)
2784 ("ruby-rack" ,ruby-rack)))
2785 (synopsis "Documentation generation tool for Ruby")
2786 (description
2787 "YARD is a documentation generation tool for the Ruby programming
2788language. It enables the user to generate consistent, usable documentation
2789that can be exported to a number of formats very easily, and also supports
2790extending for custom Ruby constructs such as custom class level definitions.")
2791 (home-page "http://yardoc.org")
2792 (license license:expat)))
2cbcd23a 2793
ad686ef3
RW
2794(define-public ruby-clap
2795 (package
2796 (name "ruby-clap")
2797 (version "1.0.0")
2798 (source (origin
2799 (method url-fetch)
2800 (uri (rubygems-uri "clap" version))
2801 (sha256
2802 (base32
2803 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
2804 (build-system ruby-build-system)
2805 ;; Clap needs cutest for running tests, but cutest needs clap.
2806 (arguments `(#:tests? #f))
2807 (synopsis "Command line argument parsing for simple applications")
2808 (description
2809 "Clap provides command line argument parsing features. It covers the
2810simple case of executing code based on the flags or parameters passed.")
2811 (home-page "https://github.com/djanowski/cutest")
0c80451e
RW
2812 (license license:expat)))
2813
2814(define-public ruby-cutest
2815 (package
2816 (name "ruby-cutest")
2817 (version "1.2.2")
2818 (source (origin
2819 (method url-fetch)
2820 (uri (rubygems-uri "cutest" version))
2821 (sha256
2822 (base32
2823 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
2824 (build-system ruby-build-system)
2825 (propagated-inputs
2826 `(("ruby-clap" ,ruby-clap)))
2827 (synopsis "Run tests in separate processes")
2828 (description
2829 "Cutest runs tests in separate processes to avoid shared state.")
2830 (home-page "https://github.com/djanowski/cutest")
ad686ef3
RW
2831 (license license:expat)))
2832
ac09beba
RW
2833(define-public ruby-pygmentize
2834 (package
2835 (name "ruby-pygmentize")
2836 (version "0.0.3")
2837 (source (origin
2838 (method url-fetch)
2839 (uri (rubygems-uri "pygmentize" version))
2840 (sha256
2841 (base32
2842 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
2843 (build-system ruby-build-system)
2844 (arguments
2845 `(#:phases
2846 (modify-phases %standard-phases
2847 (add-after 'unpack 'fix-pygmentize-path
2848 (lambda _
2849 (substitute* "lib/pygmentize.rb"
2850 (("\"/usr/bin/env python.*")
2851 (string-append "\"" (which "pygmentize") "\"\n")))
2852 #t))
2853 (add-after 'build 'do-not-use-vendor-directory
2854 (lambda _
2855 ;; Remove bundled pygments sources
2856 ;; FIXME: ruby-build-system does not support snippets.
2857 (delete-file-recursively "vendor")
2858 (substitute* "pygmentize.gemspec"
2859 (("\"vendor/\\*\\*/\\*\",") ""))
2860 #t)))))
2861 (inputs
2862 `(("pygments" ,python-pygments)))
2863 (native-inputs
2864 `(("ruby-cutest" ,ruby-cutest)
2865 ("ruby-nokogiri" ,ruby-nokogiri)))
2866 (synopsis "Thin Ruby wrapper around pygmentize")
2867 (description
2868 "Pygmentize provides a simple way to call pygmentize from within a Ruby
2869application.")
2870 (home-page "https://github.com/djanowski/pygmentize")
2871 (license license:expat)))
2872
2cbcd23a
DT
2873(define-public ruby-eventmachine
2874 (package
2875 (name "ruby-eventmachine")
2876 (version "1.0.8")
2877 (source
2878 (origin
2879 (method url-fetch)
2880 (uri (rubygems-uri "eventmachine" version))
2881 (sha256
2882 (base32
2883 "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp"))))
2884 (build-system ruby-build-system)
2885 (arguments
2886 '(#:tests? #f)) ; test suite tries to connect to google.com
2887 (native-inputs
2888 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
2889 (synopsis "Single-threaded network event framework for Ruby")
2890 (description
2891 "EventMachine implements a single-threaded engine for arbitrary network
2892communications. EventMachine wraps all interactions with sockets, allowing
2893programs to concentrate on the implementation of network protocols. It can be
2894used to create both network servers and clients.")
2895 (home-page "http://rubyeventmachine.com")
2896 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
7d3a1a2d
BW
2897
2898(define-public ruby-ansi
2899 (package
2900 (name "ruby-ansi")
2901 (version "1.5.0")
2902 (source
2903 (origin
2904 (method url-fetch)
2905 ;; Fetch from GitHub as the gem does not contain testing code.
2906 (uri (string-append "https://github.com/rubyworks/ansi/archive/"
2907 version ".tar.gz"))
2908 (file-name (string-append name "-" version ".tar.gz"))
2909 (sha256
2910 (base32
2911 "1zdip30hivyipi8hndhb457bhiz033awd00bgrsk5axjrwp6zhly"))))
2912 (build-system ruby-build-system)
2913 (arguments
2914 `(#:phases
2915 (modify-phases %standard-phases
2916 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
2917 ;; cycle ansi, qed, ansi. Instead simply test that the library can
2918 ;; be require'd.
2919 (replace 'check
2920 (lambda _
2921 (zero? (system* "ruby" "-Ilib" "-r" "ansi")))))))
2922 (synopsis "ANSI escape code related libraries")
2923 (description
2924 "This package is a collection of ANSI escape code related libraries
2925enabling ANSI colorization and stylization of console output. Included in the
2926library are the @code{Code} module, which defines ANSI codes as constants and
2927methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
2928@code{ProgressBar}, and a @code{String} subclass. The library also includes a
2929@code{Terminal} module which provides information about the current output
2930device.")
2931 (home-page "http://rubyworks.github.io/ansi")
2932 (license license:bsd-2)))
7c033c46
BW
2933
2934(define-public ruby-systemu
2935 (package
2936 (name "ruby-systemu")
2937 (version "2.6.5")
2938 (source
2939 (origin
2940 (method url-fetch)
2941 (uri (rubygems-uri "systemu" version))
2942 (sha256
2943 (base32
2944 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
2945 (build-system ruby-build-system)
2946 (arguments
2947 `(#:phases
2948 (modify-phases %standard-phases
2949 (add-before 'check 'set-version
2950 (lambda _
2951 (setenv "VERSION" ,version)
2952 #t)))))
2953 (synopsis "Capture of stdout/stderr and handling of child processes")
2954 (description
2955 "Systemu can be used on any platform to return status, stdout, and stderr
2956of any command. Unlike other methods like @code{open3} and @code{popen4}
2957there is no danger of full pipes or threading issues hanging your process or
2958subprocess.")
2959 (home-page "https://github.com/ahoward/systemu")
2960 (license license:ruby)))
3d84a99e
BW
2961
2962(define-public ruby-bio-commandeer
2963 (package
2964 (name "ruby-bio-commandeer")
2965 (version "0.1.2")
2966 (source
2967 (origin
2968 (method url-fetch)
2969 (uri (rubygems-uri "bio-commandeer" version))
2970 (sha256
2971 (base32
2972 "061jxa6km92qfwzl058r2gp8gfcsbyr7m643nw1pxvmjdswaf6ly"))))
2973 (build-system ruby-build-system)
2974 (arguments
2975 `(#:phases
2976 (modify-phases %standard-phases
2977 (replace 'check
2978 ;; Run test without calling 'rake' so that jeweler is
2979 ;; not required as an input.
2980 (lambda _
2981 (zero? (system* "rspec" "spec/bio-commandeer_spec.rb")))))))
2982 (propagated-inputs
2983 `(("ruby-bio-logger" ,ruby-bio-logger)
2984 ("ruby-systemu" ,ruby-systemu)))
2985 (native-inputs
2986 `(("bundler" ,bundler)
2987 ("ruby-rspec" ,ruby-rspec)))
2988 (synopsis "Simplified running of shell commands from within Ruby")
2989 (description
2990 "Bio-commandeer provides an opinionated method of running shell commands
2991from within Ruby. The advantage of bio-commandeer over other methods of
2992running external commands is that when something goes wrong, messages printed
2993to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
2994detail to ease debugging.")
2995 (home-page "http://github.com/wwood/bioruby-commandeer")
2996 (license license:expat)))
7c8131c7
BW
2997
2998(define-public ruby-rubytest
2999 (package
3000 (name "ruby-rubytest")
3001 (version "0.8.1")
3002 (source
3003 (origin
3004 (method url-fetch)
3005 (uri (rubygems-uri "rubytest" version))
3006 (sha256
3007 (base32
3008 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
3009 (build-system ruby-build-system)
3010 (arguments
3011 ;; Disable regular testing to break the cycle rubytest, qed, brass,
3012 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
3013 ;; simply test that the library can be require'd.
3014 `(#:phases
3015 (modify-phases %standard-phases
3016 (replace 'check
3017 (lambda _
3018 (zero? (system* "ruby" "-Ilib" "-r" "rubytest")))))))
3019 (propagated-inputs
3020 `(("ruby-ansi" ,ruby-ansi)))
3021 (synopsis "Universal test harness for Ruby")
3022 (description
3023 "Rubytest is a testing meta-framework for Ruby. It can handle any
3024compliant test framework and can run tests from multiple frameworks in a
3025single pass.")
3026 (home-page "http://rubyworks.github.io/rubytest")
3027 (license license:bsd-2)))
90fcedf2
BW
3028
3029(define-public ruby-brass
3030 (package
3031 (name "ruby-brass")
3032 (version "1.2.1")
3033 (source
3034 (origin
3035 (method url-fetch)
3036 (uri (rubygems-uri "brass" version))
3037 (sha256
3038 (base32
3039 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
3040 (build-system ruby-build-system)
3041 (arguments
3042 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
3043 ;; Instead simply test that the library can be require'd.
3044 `(#:phases
3045 (modify-phases %standard-phases
3046 (replace 'check
3047 (lambda _
3048 (zero? (system* "ruby" "-Ilib" "-r" "brass")))))))
3049 (synopsis "Basic foundational assertions framework")
3050 (description
3051 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
3052foundational assertions framework for other assertion and test frameworks to
3053make use of.")
3054 (home-page "http://rubyworks.github.io/brass")
3055 (license license:bsd-2)))
120fc74b
BW
3056
3057(define-public ruby-qed
3058 (package
3059 (name "ruby-qed")
3060 (version "2.9.2")
3061 (source
3062 (origin
3063 (method url-fetch)
3064 (uri (rubygems-uri "qed" version))
3065 (sha256
3066 (base32
3067 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
3068 (build-system ruby-build-system)
3069 (arguments
3070 ;; Disable testing to break the cycle qed, ansi, qed, among others.
3071 ;; Instead simply test that the executable runs using --copyright.
3072 `(#:phases
3073 (modify-phases %standard-phases
3074 (replace 'check
3075 (lambda _
3076 (zero? (system* "ruby" "-Ilib" "bin/qed" "--copyright")))))))
3077 (propagated-inputs
3078 `(("ruby-ansi" ,ruby-ansi)
3079 ("ruby-brass" ,ruby-brass)))
3080 (synopsis "Test framework utilizing literate programming techniques")
3081 (description
3082 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
3083@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
3084Development} (BDD) utilizing Literate Programming techniques. QED sits
3085somewhere between lower-level testing tools like @code{Test::Unit} and
3086requirement specifications systems like Cucumber.")
3087 (home-page "http://rubyworks.github.io/qed")
3088 (license license:bsd-2)))
9273ee8f
BW
3089
3090(define-public ruby-ae
3091 (package
3092 (name "ruby-ae")
3093 (version "1.8.2")
3094 (source
3095 (origin
3096 (method url-fetch)
3097 ;; Fetch from github so tests are included.
3098 (uri (string-append
3099 "https://github.com/rubyworks/ae/archive/"
3100 version ".tar.gz"))
3101 (file-name (string-append name "-" version ".tar.gz"))
3102 (sha256
3103 (base32
3104 "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl"))))
3105 (build-system ruby-build-system)
3106 (arguments
3107 `(#:phases
3108 (modify-phases %standard-phases
3109 (replace 'check
3110 (lambda _ (zero? (system* "qed")))))))
3111 (propagated-inputs
3112 `(("ruby-ansi" ,ruby-ansi)))
3113 (native-inputs
3114 `(("ruby-qed" ,ruby-qed)))
3115 (synopsis "Assertions library")
3116 (description
3117 "Assertive Expressive (AE) is an assertions library specifically designed
3118for reuse by other test frameworks.")
3119 (home-page "http://rubyworks.github.io/ae")
3120 (license license:bsd-2)))
78bb471f
BW
3121
3122(define-public ruby-lemon
3123 (package
3124 (name "ruby-lemon")
3125 (version "0.9.1")
3126 (source
3127 (origin
3128 (method url-fetch)
3129 (uri (rubygems-uri "lemon" version))
3130 (sha256
3131 (base32
3132 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
3133 (build-system ruby-build-system)
3134 (arguments
3135 `(#:phases
3136 (modify-phases %standard-phases
3137 (replace 'check (lambda _ (zero? (system* "qed")))))))
3138 (propagated-inputs
3139 `(("ruby-ae" ,ruby-ae)
3140 ("ruby-ansi" ,ruby-ansi)
3141 ("ruby-rubytest" ,ruby-rubytest)))
3142 (native-inputs
3143 `(("ruby-qed" ,ruby-qed)))
3144 (synopsis "Test framework correlating code structure and test unit")
3145 (description
3146 "Lemon is a unit testing framework that enforces highly formal
3147case-to-class and unit-to-method test construction. This enforcement can help
3148focus concern on individual units of behavior.")
3149 (home-page "http://rubyworks.github.io/lemon")
3150 (license license:bsd-2)))
0832804e
BW
3151
3152(define-public ruby-rubytest-cli
3153 (package
3154 (name "ruby-rubytest-cli")
3155 (version "0.2.0")
3156 (source
3157 (origin
3158 (method url-fetch)
3159 (uri (rubygems-uri "rubytest-cli" version))
3160 (sha256
3161 (base32
3162 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
3163 (build-system ruby-build-system)
3164 (arguments
3165 `(#:tests? #f)) ; no tests
3166 (propagated-inputs
3167 `(("ruby-ansi" ,ruby-ansi)
3168 ("ruby-rubytest" ,ruby-rubytest)))
3169 (synopsis "Command-line interface for rubytest")
3170 (description
3171 "Rubytest CLI is a command-line interface for running tests for
3172Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
3173 (home-page "http://rubyworks.github.io/rubytest-cli")
3174 (license license:bsd-2)))
72ccbfe3
BW
3175
3176(define-public ruby-hashery
3177 (package
3178 (name "ruby-hashery")
3179 (version "2.1.1")
3180 (source
3181 (origin
3182 (method url-fetch)
3183 (uri (rubygems-uri "hashery" version))
3184 (sha256
3185 (base32
3186 "0xawbljsjarl9l7700bka672ixwznzwih4s9i38p1y9mp8hyx54g"))))
3187 (build-system ruby-build-system)
3188 (arguments
3189 `(#:phases
3190 (modify-phases %standard-phases
3191 (replace 'check
3192 (lambda _
3193 (and (zero? (system* "qed"))
3194 (zero? (system* "rubytest" "-Ilib" "-Itest" "test/"))))))))
3195 (native-inputs
3196 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
3197 ("ruby-qed" ,ruby-qed)
3198 ("ruby-lemon" ,ruby-lemon)))
3199 (synopsis "Hash-like classes with extra features")
3200 (description
3201 "The Hashery is a tight collection of @code{Hash}-like classes.
3202Included are the auto-sorting @code{Dictionary} class, the efficient
3203@code{LRUHash}, the flexible @code{OpenHash} and the convenient
3204@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
3205defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
3206standard @code{Hash} making it possible to subclass and augment to fit any
3207specific use case.")
3208 (home-page "http://rubyworks.github.io/hashery")
3209 (license license:bsd-2)))
1f1d71e0
BW
3210
3211(define-public ruby-rc4
3212 (package
3213 (name "ruby-rc4")
3214 (version "0.1.5")
3215 (source
3216 (origin
3217 (method url-fetch)
3218 (uri (rubygems-uri "ruby-rc4" version))
3219 (sha256
3220 (base32
3221 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
3222 (build-system ruby-build-system)
3223 (arguments
3224 `(#:phases
3225 (modify-phases %standard-phases
3226 (replace 'check
3227 (lambda _
3228 (zero? (system* "rspec" "spec/rc4_spec.rb")))))))
3229 (native-inputs
3230 `(("ruby-rspec" ,ruby-rspec-2)))
3231 (synopsis "Implementation of the RC4 algorithm")
3232 (description
3233 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
3234 (home-page "https://github.com/caiges/Ruby-RC4")
3235 (license license:expat)))
f3e085a8
BW
3236
3237(define-public ruby-afm
3238 (package
3239 (name "ruby-afm")
3240 (version "0.2.2")
3241 (source
3242 (origin
3243 (method url-fetch)
3244 (uri (rubygems-uri "afm" version))
3245 (sha256
3246 (base32
3247 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
3248 (build-system ruby-build-system)
3249 (native-inputs
3250 `(("bundler" ,bundler)))
3251 (synopsis "Read Adobe Font Metrics (afm) files")
3252 (description
3253 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
3254files and use the data therein.")
3255 (home-page "http://github.com/halfbyte/afm")
3256 (license license:expat)))
acb6be42
BW
3257
3258(define-public ruby-ascii85
3259 (package
3260 (name "ruby-ascii85")
3261 (version "1.0.2")
3262 (source
3263 (origin
3264 (method url-fetch)
3265 (uri (rubygems-uri "Ascii85" version))
3266 (sha256
3267 (base32
3268 "0j95sbxd18kc8rhcnvl1w37kflqpax1r12h1x47gh4xxn3mz4m7q"))))
3269 (build-system ruby-build-system)
3270 (native-inputs
3271 `(("bundler" ,bundler)))
3272 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
3273 (description
3274 "This library provides methods to encode and decode Ascii85
3275binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
3276@dfn{Portable Document Format} (PDF) file formats.")
3277 (home-page "https://github.com/datawraith/ascii85gem")
3278 (license license:expat)))
edf8caae
BW
3279
3280(define-public ruby-ttfunk
3281 (package
3282 (name "ruby-ttfunk")
3283 (version "1.4.0")
3284 (source
3285 (origin
3286 (method url-fetch)
3287 ;; fetch from github as the gem does not contain testing code
3288 (uri (string-append
3289 "https://github.com/prawnpdf/ttfunk/archive/"
3290 version ".tar.gz"))
3291 (file-name (string-append name "-" version ".tar.gz"))
3292 (sha256
3293 (base32
3294 "1izq84pnm9niyvkzp8k0vl232q9zj41hwmp9na9fzycfh1pbnsl6"))))
3295 (build-system ruby-build-system)
3296 (arguments
3297 `(#:test-target "spec"
3298 #:phases
3299 (modify-phases %standard-phases
3300 (add-before 'check 'remove-rubocop
3301 (lambda _
3302 ;; remove rubocop as a dependency as not needed for testing
3303 (substitute* "ttfunk.gemspec"
3304 (("spec.add_development_dependency\\('rubocop'.*") ""))
3305 (substitute* "Rakefile"
3306 (("require 'rubocop/rake_task'") "")
3307 (("Rubocop::RakeTask.new") ""))
3308 #t)))))
3309 (native-inputs
3310 `(("ruby-rspec" ,ruby-rspec)
3311 ("bundler" ,bundler)))
3312 (synopsis "Font metrics parser for the Prawn PDF generator")
3313 (description
3314 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
3315part of the Prawn PDF generator.")
3316 (home-page "https://github.com/prawnpdf/ttfunk")
3317 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
3318 ;; for details."
3319 (license (list license:gpl2 license:gpl3 license:ruby))))