gnu: Add ruby-pygmentize.
[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")
686b1bab 49 (version "2.2.3")
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
686b1bab 58 "19x8gs67klgc3ag815jpin83jn2nv1akgjcgayd6v3h1xplr1v66"))))
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)
100 (version "2.1.6")
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
109 "1sbcmbhadcxk0509svwxbm2vvgmpf3xjxr1397bgp9x46nz36lkv"))))
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
469 `(("jdk" ,icedtea7 "jdk")))
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
DT
1685
1686(define-public ruby-nokogiri
1687 (package
1688 (name "ruby-nokogiri")
1689 (version "1.6.6.2")
1690 (source (origin
1691 (method url-fetch)
1692 (uri (rubygems-uri "nokogiri" version))
1693 (sha256
1694 (base32
1695 "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30"))))
1696 (build-system ruby-build-system)
1697 (arguments
1698 ;; Tests fail because Nokogiri can only test with an installed extension,
1699 ;; and also because many test framework dependencies are missing.
1700 '(#:tests? #f
1701 #:gem-flags (list "--" "--use-system-libraries"
1702 (string-append "--with-xml2-include="
1703 (assoc-ref %build-inputs "libxml2")
1704 "/include/libxml2" ))))
1705 (native-inputs
1706 `(("ruby-hoe" ,ruby-hoe)
1707 ("ruby-rake-compiler", ruby-rake-compiler)))
1708 (inputs
1709 `(("zlib" ,zlib)
1710 ("libxml2" ,libxml2)
1711 ("libxslt" ,libxslt)))
1712 (propagated-inputs
1713 `(("ruby-mini-portile" ,ruby-mini-portile)))
1714 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
1715 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
1716both CSS3 selector and XPath 1.0 support.")
1717 (home-page "http://www.nokogiri.org/")
1718 (license license:expat)))
30b0b725
DT
1719
1720(define-public ruby-method-source
1721 (package
1722 (name "ruby-method-source")
1723 (version "0.8.2")
1724 (source
1725 (origin
1726 (method url-fetch)
1727 (uri (rubygems-uri "method_source" version))
1728 (sha256
1729 (base32
1730 "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
1731 (build-system ruby-build-system)
1732 (native-inputs
1733 `(("ruby-bacon" ,ruby-bacon)
1734 ("git" ,git)))
1735 (synopsis "Retrieve the source code for Ruby methods")
1736 (description "Method_source retrieves the source code for Ruby methods.
1737Additionally, it can extract source code from Proc and Lambda objects or just
1738extract comments.")
1739 (home-page "https://github.com/banister/method_source")
1740 (license license:expat)))
2e3fdea4
DT
1741
1742(define-public ruby-coderay
1743 (package
1744 (name "ruby-coderay")
1745 (version "1.1.0")
1746 (source
1747 (origin
1748 (method url-fetch)
1749 (uri (rubygems-uri "coderay" version))
1750 (sha256
1751 (base32
1752 "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
1753 (build-system ruby-build-system)
1754 (arguments
1755 '(#:tests? #f)) ; missing test files
1756 (synopsis "Ruby syntax highlighting library")
1757 (description "Coderay is a Ruby library that provides syntax highlighting
1758for select languages.")
1759 (home-page "http://coderay.rubychan.de")
1760 (license license:expat)))
96e76083
DT
1761
1762(define-public ruby-pry
1763 (package
1764 (name "ruby-pry")
1765 (version "0.10.1")
1766 (source
1767 (origin
1768 (method url-fetch)
1769 (uri (rubygems-uri "pry" version))
1770 (sha256
1771 (base32
1772 "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
1773 (build-system ruby-build-system)
1774 (arguments
1775 '(#:tests? #f)) ; no tests
1776 (propagated-inputs
1777 `(("ruby-coderay" ,ruby-coderay)
1778 ("ruby-method-source" ,ruby-method-source)
1779 ("ruby-slop" ,ruby-slop-3)))
1780 (synopsis "Ruby REPL")
1781 (description "Pry is an IRB alternative and runtime developer console for
1782Ruby. It features syntax highlighting, a plugin architecture, runtime
1783invocation, and source and documentation browsing.")
1784 (home-page "http://pryrepl.org")
1785 (license license:expat)))
1415792a 1786
051deeb7
RW
1787(define-public ruby-guard
1788 (package
1789 (name "ruby-guard")
1790 (version "2.13.0")
1791 (source (origin
1792 (method url-fetch)
1793 ;; The gem does not include a Rakefile, nor does it contain a
1794 ;; gemspec file, nor does it come with the tests. This is why
1795 ;; we fetch the tarball from Github.
1796 (uri (string-append "https://github.com/guard/guard/archive/v"
1797 version ".tar.gz"))
1798 (file-name (string-append name "-" version ".tar.gz"))
1799 (sha256
1800 (base32
1801 "1hwj0yi17k6f5axrm0k2bb7fq71dlp0zfywmd7pij9iimbppcca0"))))
1802 (build-system ruby-build-system)
1803 (arguments
1804 `(#:tests? #f ; tests require cucumber
1805 #:phases
1806 (modify-phases %standard-phases
1807 (add-after 'unpack 'remove-git-ls-files
1808 (lambda* (#:key outputs #:allow-other-keys)
1809 (substitute* "guard.gemspec"
1810 (("git ls-files -z") "find . -type f -print0"))
1811 #t))
1812 (replace 'build
1813 (lambda _
1814 (zero? (system* "gem" "build" "guard.gemspec")))))))
1815 (propagated-inputs
1816 `(("ruby-formatador" ,ruby-formatador)
1817 ("ruby-listen" ,ruby-listen)
1818 ("ruby-lumberjack" ,ruby-lumberjack)
1819 ("ruby-nenv" ,ruby-nenv)
1820 ("ruby-notiffany" ,ruby-notiffany)
1821 ("ruby-pry" ,ruby-pry)
1822 ("ruby-shellany" ,ruby-shellany)
1823 ("ruby-thor" ,ruby-thor)))
1824 (native-inputs
1825 `(("bundler" ,bundler)
1826 ("ruby-rspec" ,ruby-rspec)))
1827 (synopsis "Tool to handle events on file system modifications")
1828 (description
1829 "Guard is a command line tool to easily handle events on file system
1830modifications. Guard automates various tasks by running custom rules whenever
1831file or directories are modified.")
1832 (home-page "http://guardgem.org/")
1833 (license license:expat)))
1834
1415792a
DT
1835(define-public ruby-thread-safe
1836 (package
1837 (name "ruby-thread-safe")
1838 (version "0.3.5")
1839 (source
1840 (origin
1841 (method url-fetch)
1842 (uri (rubygems-uri "thread_safe" version))
1843 (sha256
1844 (base32
1845 "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
1846 (build-system ruby-build-system)
1847 (arguments
1848 '(#:tests? #f)) ; needs simplecov, among others
1849 (synopsis "Thread-safe utilities for Ruby")
1850 (description "The thread_safe library provides thread-safe collections and
1851utilities for Ruby.")
1852 (home-page "https://github.com/ruby-concurrency/thread_safe")
1853 (license license:asl2.0)))
08a1b701
DT
1854
1855(define-public ruby-tzinfo
1856 (package
1857 (name "ruby-tzinfo")
1858 (version "1.2.2")
1859 (source
1860 (origin
1861 (method url-fetch)
1862 (uri (rubygems-uri "tzinfo" version))
1863 (sha256
1864 (base32
1865 "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
1866 (build-system ruby-build-system)
1867 (propagated-inputs
1868 `(("ruby-thread-safe" ,ruby-thread-safe)))
1869 (synopsis "Time zone library for Ruby")
1870 (description "TZInfo is a Ruby library that provides daylight savings
1871aware transformations between times in different time zones.")
1872 (home-page "http://tzinfo.github.io")
1873 (license license:expat)))
c99e2247 1874
48e6851f
RW
1875(define-public ruby-rb-inotify
1876 (package
1877 (name "ruby-rb-inotify")
1878 (version "0.9.5")
1879 (source
1880 (origin
1881 (method url-fetch)
1882 (uri (rubygems-uri "rb-inotify" version))
1883 (sha256
1884 (base32
1885 "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"))))
1886 (build-system ruby-build-system)
1887 (arguments
1888 '(#:tests? #f ; there are no tests
1889 #:phases
1890 (modify-phases %standard-phases
1891 ;; Building the gemspec with rake is not working here since it is
1892 ;; generated with Jeweler. It is also unnecessary because the
1893 ;; existing gemspec does not use any development tools to generate a
1894 ;; list of files.
1895 (replace 'build
1896 (lambda _
1897 (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
1898 (propagated-inputs
1899 `(("ruby-ffi" ,ruby-ffi)))
1900 (native-inputs
1901 `(("ruby-yard" ,ruby-yard)))
1902 (synopsis "Ruby wrapper for Linux's inotify")
1903 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
1904kernel subsystem for monitoring changes to files and directories.")
1905 (home-page "https://github.com/nex3/rb-inotify")
1906 (license license:expat)))
1907
a75bdfce
RW
1908(define-public ruby-pry-editline
1909 (package
1910 (name "ruby-pry-editline")
1911 (version "1.1.2")
1912 (source (origin
1913 (method url-fetch)
1914 (uri (rubygems-uri "pry-editline" version))
1915 (sha256
1916 (base32
1917 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
1918 (build-system ruby-build-system)
1919 (arguments `(#:tests? #f)) ; no tests included
1920 (native-inputs
1921 `(("bundler" ,bundler)))
1922 (synopsis "Open the current REPL line in an editor")
1923 (description
1924 "This gem provides a plugin for the Ruby REPL to enable opening the
1925current line in an external editor.")
1926 (home-page "https://github.com/tpope/pry-editline")
1927 (license license:expat)))
1928
d3b20a02
RW
1929(define-public ruby-sdoc
1930 (package
1931 (name "ruby-sdoc")
1932 (version "0.4.1")
1933 (source (origin
1934 (method url-fetch)
1935 (uri (rubygems-uri "sdoc" version))
1936 (sha256
1937 (base32
1938 "16xyfair1j4irfkd6sxvmdcak957z71lwkvhglrznfpkalfnqyqp"))))
1939 (build-system ruby-build-system)
1940 (arguments
1941 `(#:phases
1942 (modify-phases %standard-phases
1943 (add-after 'build 'relax-minitest-requirement
1944 (lambda _
1945 (substitute* "sdoc.gemspec"
1946 (("<minitest>, \\[\"~> 4\\.0\"\\]")
1947 "<minitest>, [\">= 4.0\"]"))
1948 #t)))))
1949 (propagated-inputs
1950 `(("ruby-json" ,ruby-json)))
1951 (native-inputs
1952 `(("bundler" ,bundler)
1953 ("ruby-minitest" ,ruby-minitest)))
1954 (synopsis "Generate searchable RDoc documentation")
1955 (description
1956 "SDoc is an RDoc documentation generator to build searchable HTML
1957documentation for Ruby code.")
1958 (home-page "http://github.com/voloko/sdoc")
1959 (license license:expat)))
1960
70b002aa
RW
1961(define-public ruby-tins
1962 (package
1963 (name "ruby-tins")
1964 (version "1.7.0")
1965 (source (origin
1966 (method url-fetch)
1967 (uri (rubygems-uri "tins" version))
1968 (sha256
1969 (base32
1970 "1060h8dgnjl9az0sv1b74yrni8d4mh3x858wq6yfbfdf5dxrfl0a"))))
1971 (build-system ruby-build-system)
1972 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
1973 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
1974 ;; the gemspec.
1975 (arguments
1976 `(#:tests? #f ; there are no tests
1977 #:phases
1978 (modify-phases %standard-phases
1979 (replace 'build
1980 (lambda _
1981 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
1982 ;; causes an error.
1983 (substitute* "tins.gemspec"
1984 (("\"lib/spruz\", ") ""))
1985 (zero? (system* "gem" "build" "tins.gemspec")))))))
1986 (synopsis "Assorted tools for Ruby")
1987 (description "Tins is a Ruby library providing assorted tools.")
1988 (home-page "https://github.com/flori/tins")
1989 (license license:expat)))
1990
bc8277e4
RW
1991(define-public ruby-gem-hadar
1992 (package
1993 (name "ruby-gem-hadar")
1994 (version "1.3.1")
1995 (source (origin
1996 (method url-fetch)
1997 (uri (rubygems-uri "gem_hadar" version))
1998 (sha256
1999 (base32
2000 "1j8qri4m9wf8nbfv0kakrgsv2x8vg10914xgm6f69nw8zi3i39ws"))))
2001 (build-system ruby-build-system)
2002 ;; This gem needs itself at development time. We disable rebuilding of the
2003 ;; gemspec to avoid this loop.
2004 (arguments
2005 `(#:tests? #f ; there are no tests
2006 #:phases
2007 (modify-phases %standard-phases
2008 (replace 'build
2009 (lambda _
2010 (zero? (system* "gem" "build" "gem_hadar.gemspec")))))))
2011 (propagated-inputs
2012 `(("git" ,git)
2013 ("ruby-tins" ,ruby-tins)
2014 ("ruby-sdoc" ,ruby-sdoc)))
2015 (native-inputs
2016 `(("bundler" ,bundler)))
2017 (synopsis "Library for the development of Ruby gems")
2018 (description
2019 "This library contains some useful functionality to support the
2020development of Ruby gems.")
2021 (home-page "https://github.com/flori/gem_hadar")
2022 (license license:expat)))
2023
d8cafe29
RW
2024(define-public ruby-minitest-tu-shim
2025 (package
2026 (name "ruby-minitest-tu-shim")
2027 (version "1.3.3")
2028 (source (origin
2029 (method url-fetch)
2030 (uri (rubygems-uri "minitest_tu_shim" version))
2031 (sha256
2032 (base32
2033 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
2034 (build-system ruby-build-system)
2035 (arguments
2036 `(#:phases
2037 (modify-phases %standard-phases
2038 (add-after 'unpack 'fix-test-include-path
2039 (lambda* (#:key inputs #:allow-other-keys)
2040 (substitute* "Rakefile"
2041 (("Hoe\\.add_include_dirs .*")
2042 (string-append "Hoe.add_include_dirs \""
2043 (assoc-ref inputs "ruby-minitest-4")
2044 "/lib/ruby/gems/2.2.0/gems/minitest-"
2045 ,(package-version ruby-minitest-4)
2046 "/lib" "\"")))))
2047 (add-before 'check 'fix-test-assumptions
2048 (lambda _
2049 ;; The test output includes the file name, so a couple of tests
2050 ;; fail. Changing the regular expressions slightly fixes this
2051 ;; problem.
2052 (substitute* "test/test_mini_test.rb"
2053 (("output.sub!\\(.*, 'FILE:LINE'\\)")
2054 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
2055 (("gsub\\(/.*, 'FILE:LINE'\\)")
2056 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
2057 #t)))))
2058 (propagated-inputs
2059 `(("ruby-minitest-4" ,ruby-minitest-4)))
2060 (native-inputs
2061 `(("ruby-hoe" ,ruby-hoe)))
2062 (synopsis "Adapter library between minitest and test/unit")
2063 (description
2064 "This library bridges the gap between the small and fast minitest and
2065Ruby's large and slower test/unit.")
2066 (home-page "https://rubygems.org/gems/minitest_tu_shim")
2067 (license license:expat)))
2068
fd83a212
RW
2069(define-public ruby-term-ansicolor
2070 (package
2071 (name "ruby-term-ansicolor")
2072 (version "1.3.2")
2073 (source (origin
2074 (method url-fetch)
2075 (uri (rubygems-uri "term-ansicolor" version))
2076 (sha256
2077 (base32
2078 "0ydbbyjmk5p7fsi55ffnkq79jnfqx65c3nj8d9rpgl6sw85ahyys"))))
2079 (build-system ruby-build-system)
2080 ;; Rebuilding the gemspec seems to require git, even though this is not a
2081 ;; git repository, so we just build the gem from the existing gemspec.
2082 (arguments
2083 `(#:phases
2084 (modify-phases %standard-phases
2085 (replace 'build
2086 (lambda _
2087 (zero? (system* "gem" "build" "term-ansicolor.gemspec")))))))
2088 (propagated-inputs
2089 `(("ruby-tins" ,ruby-tins)))
2090 (native-inputs
2091 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2092 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
2093 (synopsis "Ruby library to control the attributes of terminal output")
2094 (description
2095 "This Ruby library uses ANSI escape sequences to control the attributes
2096of terminal output.")
2097 (home-page "http://flori.github.io/term-ansicolor/")
2098 ;; There is no mention of the "or later" clause.
2099 (license license:gpl2)))
2100
6e376ca4
RW
2101(define-public ruby-pstree
2102 (package
2103 (name "ruby-pstree")
2104 (version "0.1.0")
2105 (source (origin
2106 (method url-fetch)
2107 (uri (rubygems-uri "pstree" version))
2108 (sha256
2109 (base32
2110 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
2111 (build-system ruby-build-system)
2112 (native-inputs
2113 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2114 ("bundler" ,bundler)))
2115 (synopsis "Create a process tree data structure")
2116 (description
2117 "This library uses the output of the @code{ps} command to create a
2118process tree data structure for the current host.")
2119 (home-page "http://flori.github.com/pstree")
2120 ;; There is no mention of the "or later" clause.
2121 (license license:gpl2)))
2122
53239b5f
RW
2123(define-public ruby-utils
2124 (package
2125 (name "ruby-utils")
2126 (version "0.2.4")
2127 (source (origin
2128 (method url-fetch)
2129 (uri (rubygems-uri "utils" version))
2130 (sha256
2131 (base32
2132 "0vycgscxf3s1xn4yyfsq54zlh082581ga8azybmqgc4pij6iz2cd"))))
2133 (build-system ruby-build-system)
2134 (propagated-inputs
2135 `(("ruby-tins" ,ruby-tins)
2136 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
2137 ("ruby-pstree" ,ruby-pstree)
2138 ("ruby-pry-editline" ,ruby-pry-editline)))
2139 (native-inputs
2140 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2141 ("bundler" ,bundler)))
2142 (synopsis "Command line tools for working with Ruby")
2143 (description
2144 "This package provides assorted command line tools that may be useful
2145when working with Ruby code.")
2146 (home-page "https://github.com/flori/utils")
2147 ;; There is no mention of the "or later" clause.
2148 (license license:gpl2)))
2149
c99e2247
DT
2150(define-public ruby-json
2151 (package
2152 (name "ruby-json")
2153 (version "1.8.3")
2154 (source
2155 (origin
2156 (method url-fetch)
2157 (uri (rubygems-uri "json" version))
2158 (sha256
2159 (base32
2160 "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
2161 (build-system ruby-build-system)
2162 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
2163 (synopsis "JSON library for Ruby")
2164 (description "This Ruby library provides a JSON implementation written as
2165a native C extension.")
2166 (home-page "http://json-jruby.rubyforge.org/")
2167 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 2168
763624f5
RW
2169(define-public ruby-json-pure
2170 (package
2171 (name "ruby-json-pure")
2172 (version "1.8.3")
2173 (source (origin
2174 (method url-fetch)
2175 (uri (rubygems-uri "json_pure" version))
2176 (sha256
2177 (base32
2178 "025aykr360x6dr1jmg8pmsrx7gr30pws4p1q686vnb48zyw1sc94"))))
2179 (build-system ruby-build-system)
2180 (arguments
2181 `(#:modules ((srfi srfi-1)
2182 (ice-9 regex)
2183 (rnrs io ports)
2184 (guix build ruby-build-system)
2185 (guix build utils))
2186 #:phases
2187 (modify-phases %standard-phases
2188 (add-after 'unpack 'replace-git-ls-files
2189 (lambda _
2190 ;; The existing gemspec file already contains a nice list of
2191 ;; files that belong to the gem. We extract the list from the
2192 ;; gemspec file and then replace the file list in the Rakefile to
2193 ;; get rid of the call to "git ls-files".
2194 (let* ((contents (call-with-input-file "json.gemspec" get-string-all))
2195 ;; Guile is unhappy about the #\nul characters in comments.
2196 (filtered (string-filter (lambda (char)
2197 (not (equal? #\nul char)))
2198 contents))
2199 (files (match:substring
2200 (string-match " s\\.files = ([^]]+\\])" filtered) 1)))
2201 (substitute* "Rakefile"
2202 (("FileList\\[`git ls-files`\\.split\\(/\\\\n/\\)\\]")
2203 (string-append "FileList" files))))
2204 #t)))))
2205 (native-inputs
2206 `(("ruby-permutation" ,ruby-permutation)
2207 ("ruby-utils" ,ruby-utils)
2208 ("ragel" ,ragel)
2209 ("bundler" ,bundler)))
2210 (synopsis "JSON implementation in pure Ruby")
2211 (description
2212 "This package provides a JSON implementation written in pure Ruby.")
2213 (home-page "http://flori.github.com/json")
2214 (license license:ruby)))
2215
16b324cd
RW
2216;; Even though this package only provides bindings for a Mac OSX API it is
2217;; required by "ruby-listen" at runtime.
2218(define-public ruby-rb-fsevent
2219 (package
2220 (name "ruby-rb-fsevent")
2221 (version "0.9.6")
2222 (source (origin
2223 (method url-fetch)
2224 (uri (rubygems-uri "rb-fsevent" version))
2225 (sha256
2226 (base32
2227 "1hq57by28iv0ijz8pk9ynih0xdg7vnl1010xjcijfklrcv89a1j2"))))
2228 (build-system ruby-build-system)
2229 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
2230 ;; "listen", which needs "rb-fsevent" at runtime.
2231 (arguments `(#:tests? #f))
2232 (synopsis "FSEvents API with signals catching")
2233 (description
2234 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
2235 (home-page "https://rubygems.org/gems/rb-fsevent")
2236 (license license:expat)))
2237
b86be2ad
RW
2238(define-public ruby-listen
2239 (package
2240 (name "ruby-listen")
2241 (version "3.0.3")
2242 (source
2243 (origin
2244 (method url-fetch)
2245 (uri (rubygems-uri "listen" version))
2246 (sha256
2247 (base32
2248 "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
2249 (build-system ruby-build-system)
2250 (arguments '(#:tests? #f)) ; no tests
2251 (propagated-inputs
cf1a01f4
RW
2252 `(("ruby-rb-inotify" ,ruby-rb-inotify)
2253 ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
b86be2ad
RW
2254 (synopsis "Listen to file modifications")
2255 (description "The Listen gem listens to file modifications and notifies
2256you about the changes.")
2257 (home-page "https://github.com/guard/listen")
2258 (license license:expat)))
2259
5ff89a1b
DT
2260(define-public ruby-activesupport
2261 (package
2262 (name "ruby-activesupport")
2263 (version "4.2.4")
2264 (source
2265 (origin
2266 (method url-fetch)
2267 (uri (rubygems-uri "activesupport" version))
2268 (sha256
2269 (base32
2270 "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
2271 (build-system ruby-build-system)
2272 (arguments
2273 '(#:tests? #f)) ; no tests
2274 (propagated-inputs
2275 `(("ruby-i18n" ,ruby-i18n)
2276 ("ruby-json" ,ruby-json)
2277 ("ruby-minitest" ,ruby-minitest)
2278 ("ruby-thread-safe" ,ruby-thread-safe)
2279 ("ruby-tzinfo" ,ruby-tzinfo)))
2280 (synopsis "Ruby on Rails utility library")
2281 (description "ActiveSupport is a toolkit of support libraries and Ruby
2282core extensions extracted from the Rails framework. It includes support for
2283multibyte strings, internationalization, time zones, and testing.")
2284 (home-page "http://www.rubyonrails.org")
2285 (license license:expat)))
f847ad7b 2286
3996f0aa
RW
2287(define-public ruby-crass
2288 (package
2289 (name "ruby-crass")
2290 (version "1.0.2")
2291 (source (origin
2292 (method url-fetch)
2293 (uri (rubygems-uri "crass" version))
2294 (sha256
2295 (base32
2296 "1c377r8g7m58y22803iyjgqkkvnnii0pymskda1pardxrzaighj9"))))
2297 (build-system ruby-build-system)
2298 (native-inputs
2299 `(("bundler" ,bundler)
2300 ("ruby-minitest" ,ruby-minitest)))
2301 (synopsis "Pure Ruby CSS parser")
2302 (description
2303 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
2304 (home-page "https://github.com/rgrove/crass/")
2305 (license license:expat)))
2306
c2c4e5b2
RW
2307(define-public ruby-nokogumbo
2308 (package
2309 (name "ruby-nokogumbo")
2310 (version "1.4.6")
2311 (source (origin
2312 ;; We use the git reference, because there's no Rakefile in the
2313 ;; published gem and the tarball on Github is outdated.
2314 (method git-fetch)
2315 (uri (git-reference
2316 (url "https://github.com/rubys/nokogumbo.git")
2317 (commit "d56f954d20a")))
2318 (file-name (string-append name "-" version "-checkout"))
2319 (sha256
2320 (base32
2321 "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
2322 (build-system ruby-build-system)
2323 (arguments
2324 `(#:modules ((guix build ruby-build-system)
2325 (guix build utils)
2326 (ice-9 rdelim))
2327 #:phases
2328 (modify-phases %standard-phases
2329 (add-before 'build 'build-gemspec
2330 (lambda _
2331 (substitute* "Rakefile"
2332 ;; Build Makefile even without a copy of gumbo-parser sources
2333 (("'gumbo-parser/src',") "")
2334 ;; We don't bundle gumbo-parser sources
2335 (("'gumbo-parser/src/\\*',") "")
2336 (("'gumbo-parser/visualc/include/\\*',") "")
2337 ;; The definition of SOURCES will be cut in gemspec, and
2338 ;; "FileList" will be undefined.
2339 (("SOURCES \\+ FileList\\[")
2340 "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
2341
2342 ;; Copy the Rakefile and cut out the gemspec.
2343 (copy-file "Rakefile" ".gemspec")
2344 (with-atomic-file-replacement ".gemspec"
2345 (lambda (in out)
2346 (let loop ((line (read-line in 'concat))
2347 (skipping? #t))
2348 (if (eof-object? line)
2349 #t
2350 (let ((skip-next? (if skipping?
2351 (not (string-prefix? "SPEC =" line))
2352 (string-prefix? "end" line))))
2353 (when (or (not skipping?)
2354 (and skipping? (not skip-next?)))
2355 (format #t "~a" line)
2356 (display line out))
2357 (loop (read-line in 'concat) skip-next?))))))
2358 #t)))))
2359 (inputs
2360 `(("gumbo-parser" ,gumbo-parser)))
2361 (propagated-inputs
2362 `(("ruby-nokogiri" ,ruby-nokogiri)))
2363 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
2364 (description
2365 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
2366access the result as a Nokogiri parsed document.")
2367 (home-page "https://github.com/rubys/nokogumbo/")
2368 (license license:asl2.0)))
2369
f847ad7b
DT
2370(define-public ruby-ox
2371 (package
2372 (name "ruby-ox")
2373 (version "2.2.1")
2374 (source
2375 (origin
2376 (method url-fetch)
2377 (uri (rubygems-uri "ox" version))
2378 (sha256
2379 (base32
2380 "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
2381 (build-system ruby-build-system)
2382 (arguments
2383 '(#:tests? #f)) ; no tests
2384 (synopsis "Optimized XML library for Ruby")
2385 (description
2386 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
2387written as a native C extension. It was designed to be an alternative to
2388Nokogiri and other Ruby XML parsers for generic XML parsing and as an
2389alternative to Marshal for Object serialization. ")
2390 (home-page "http://www.ohler.com/ox")
2391 (license license:expat)))
4a9e0585
DT
2392
2393(define-public ruby-pg
2394 (package
2395 (name "ruby-pg")
2396 (version "0.18.2")
2397 (source
2398 (origin
2399 (method url-fetch)
2400 (uri (rubygems-uri "pg" version))
2401 (sha256
2402 (base32
2403 "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
2404 (build-system ruby-build-system)
2405 (arguments
2406 '(#:test-target "spec"))
2407 (native-inputs
2408 `(("ruby-rake-compiler" ,ruby-rake-compiler)
2409 ("ruby-hoe" ,ruby-hoe)
2410 ("ruby-rspec" ,ruby-rspec)))
2411 (inputs
2412 `(("postgresql" ,postgresql)))
2413 (synopsis "Ruby interface to PostgreSQL")
2414 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
2415with PostgreSQL 8.4 and later.")
2416 (home-page "https://bitbucket.org/ged/ruby-pg")
2417 (license license:ruby)))
468e5657
DT
2418
2419(define-public ruby-byebug
2420 (package
2421 (name "ruby-byebug")
2422 (version "6.0.2")
2423 (source
2424 (origin
2425 (method url-fetch)
2426 (uri (rubygems-uri "byebug" version))
2427 (sha256
2428 (base32
2429 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
2430 (build-system ruby-build-system)
2431 (arguments
2432 '(#:tests? #f)) ; no tests
2433 (synopsis "Debugger for Ruby 2")
2434 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
2435TracePoint C API for execution control and the Debug Inspector C API for call
2436stack navigation. The core component provides support that front-ends can
2437build on. It provides breakpoint handling and bindings for stack frames among
2438other things and it comes with a command line interface.")
2439 (home-page "http://github.com/deivid-rodriguez/byebug")
2440 (license license:bsd-2)))
64b6ccc3 2441
5799bc2b
RW
2442(define-public ruby-netrc
2443 (package
2444 (name "ruby-netrc")
2445 (version "0.11.0")
2446 (source (origin
2447 (method url-fetch)
2448 (uri (rubygems-uri "netrc" version))
2449 (sha256
2450 (base32
2451 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
2452 (build-system ruby-build-system)
2453 (arguments
2454 `(#:phases
2455 (modify-phases %standard-phases
2456 (replace 'check
2457 ;; There is no Rakefile and minitest can only run one file at once,
2458 ;; so we have to iterate over all test files.
2459 (lambda _
2460 (and (map (lambda (file)
2461 (zero? (system* "ruby" "-Itest" file)))
2462 (find-files "./test" "test_.*\\.rb"))))))))
2463 (native-inputs
2464 `(("ruby-minitest" ,ruby-minitest)))
2465 (synopsis "Library to read and update netrc files")
2466 (description
2467 "This library can read and update netrc files, preserving formatting
2468including comments and whitespace.")
2469 (home-page "https://github.com/geemus/netrc")
2470 (license license:expat)))
2471
3a6989ce
RW
2472(define-public ruby-unf-ext
2473 (package
2474 (name "ruby-unf-ext")
2475 (version "0.0.7.1")
2476 (source (origin
2477 (method url-fetch)
2478 (uri (rubygems-uri "unf_ext" version))
2479 (sha256
2480 (base32
2481 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
2482 (build-system ruby-build-system)
2483 (native-inputs
2484 `(("bundler" ,bundler)
2485 ("ruby-rake-compiler" ,ruby-rake-compiler)
2486 ("ruby-test-unit" ,ruby-test-unit)))
2487 (synopsis "Unicode normalization form support library")
2488 (description
2489 "This package provides unicode normalization form support for Ruby.")
2490 (home-page "https://github.com/knu/ruby-unf_ext")
2491 (license license:expat)))
2492
2632a067
RW
2493(define-public ruby-tdiff
2494 (package
2495 (name "ruby-tdiff")
2496 (version "0.3.3")
2497 (source (origin
2498 (method url-fetch)
2499 (uri (rubygems-uri "tdiff" version))
2500 (sha256
2501 (base32
2502 "0k41jbvn8qq4mgrixnhlk742b971d136i8wpbcv2cczvi22xpc86"))))
2503 (build-system ruby-build-system)
2504 (native-inputs
2505 `(("ruby-rspec-2" ,ruby-rspec-2)
2506 ("ruby-yard" ,ruby-yard)
2507 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
2508 (synopsis "Calculate the differences between two tree-like structures")
2509 (description
2510 "This library provides functions to calculate the differences between two
2511tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
2512 (home-page "https://github.com/postmodern/tdiff")
2513 (license license:expat)))
2514
f60f5002
RW
2515(define-public ruby-nokogiri-diff
2516 (package
2517 (name "ruby-nokogiri-diff")
2518 (version "0.2.0")
2519 (source (origin
2520 (method url-fetch)
2521 (uri (rubygems-uri "nokogiri-diff" version))
2522 (sha256
2523 (base32
2524 "0njr1s42war0bj1axb2psjvk49l74a8wzr799wckqqdcb6n51lc1"))))
2525 (build-system ruby-build-system)
2526 (propagated-inputs
2527 `(("ruby-tdiff" ,ruby-tdiff)
2528 ("ruby-nokogiri" ,ruby-nokogiri)))
2529 (native-inputs
2530 `(("ruby-rspec-2" ,ruby-rspec-2)
2531 ("ruby-yard" ,ruby-yard)
2532 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
2533 (synopsis "Calculate the differences between two XML/HTML documents")
2534 (description
2535 "@code{Nokogiri::Diff} adds the ability to calculate the
2536differences (added or removed nodes) between two XML/HTML documents.")
2537 (home-page "https://github.com/postmodern/nokogiri-diff")
2538 (license license:expat)))
2539
64b6ccc3
DT
2540(define-public ruby-rack
2541 (package
2542 (name "ruby-rack")
2543 (version "1.6.4")
2544 (source
2545 (origin
2546 (method url-fetch)
2547 (uri (rubygems-uri "rack" version))
2548 (sha256
2549 (base32
2550 "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
2551 (build-system ruby-build-system)
2552 (arguments
2553 '(#:phases
2554 (modify-phases %standard-phases
2555 (add-before 'check 'fix-tests
2556 (lambda _
2557 ;; A few of the tests use the length of a file on disk for
2558 ;; Content-Length and Content-Range headers. However, this file
2559 ;; has a shebang in it which an earlier phase patches, growing
2560 ;; the file size from 193 to 239 bytes when the store prefix is
2561 ;; "/gnu/store".
2562 (let ((size-diff (- (string-length (which "ruby"))
2563 (string-length "/usr/bin/env ruby"))))
2564 (substitute* '("test/spec_file.rb")
2565 (("193")
2566 (number->string (+ 193 size-diff)))
2567 (("bytes(.)22-33" all delimiter)
2568 (string-append "bytes"
2569 delimiter
2570 (number->string (+ 22 size-diff))
2571 "-"
2572 (number->string (+ 33 size-diff))))))
2573 #t)))))
2574 (native-inputs
2575 `(("ruby-bacon" ,ruby-bacon)))
2576 (synopsis "Unified web application interface for Ruby")
2577 (description "Rack provides a minimal, modular and adaptable interface for
2578developing web applications in Ruby. By wrapping HTTP requests and responses,
2579it unifies the API for web servers, web frameworks, and software in between
2580into a single method call.")
2581 (home-page "http://rack.github.io/")
2582 (license license:expat)))
62e4cc5a 2583
6aaa815e
PP
2584(define-public ruby-docile
2585 (package
2586 (name "ruby-docile")
2587 (version "1.1.5")
2588 (source
2589 (origin
2590 (method url-fetch)
2591 (uri (rubygems-uri "docile" version))
2592 (sha256
2593 (base32
2594 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
2595 (build-system ruby-build-system)
2596 (arguments
2597 '(#:tests? #f)) ; needs github-markup, among others
2598 (synopsis "Ruby EDSL helper library")
2599 (description "Docile is a Ruby library that provides an interface for
2600creating embedded domain specific languages (EDSLs) that manipulate existing
2601Ruby classes.")
2602 (home-page "https://ms-ati.github.io/docile/")
2603 (license license:expat)))
2604
62e4cc5a
PP
2605(define-public ruby-gherkin3
2606 (package
2607 (name "ruby-gherkin3")
2608 (version "3.1.1")
2609 (source
2610 (origin
2611 (method url-fetch)
2612 (uri (rubygems-uri "gherkin3" version))
2613 (sha256
2614 (base32
2615 "0xsyxhqa1gwcxzvsdy4didaiq5vam8ma3fbwbw2w60via4k6r1z9"))))
2616 (build-system ruby-build-system)
2617 (native-inputs
2618 `(("bundler" ,bundler)))
2619 (arguments
2620 '(#:tests? #f)) ; needs simplecov, among others
2621 (synopsis "Gherkin parser for Ruby")
2622 (description "Gherkin 3 is a parser and compiler for the Gherkin language.
2623It is intended to replace Gherkin 2 and be used by all Cucumber
2624implementations to parse '.feature' files.")
2625 (home-page "https://github.com/cucumber/gherkin3")
2626 (license license:expat)))
cd89fecb
PP
2627
2628(define-public ruby-cucumber-core
2629 (package
2630 (name "ruby-cucumber-core")
2631 (version "1.3.0")
2632 (source
2633 (origin
2634 (method url-fetch)
2635 (uri (rubygems-uri "cucumber-core" version))
2636 (sha256
2637 (base32
2638 "12mrzf0s96izpq0k10lahlkgwc4fjs0zfs344rh8r8h3w3jyppr8"))))
2639 (build-system ruby-build-system)
2640 (propagated-inputs
2641 `(("ruby-gherkin3" ,ruby-gherkin3)))
2642 (native-inputs
2643 `(("bundler" ,bundler)))
2644 (arguments
2645 '(#:tests? #f)) ; needs simplecov, among others
2646 (synopsis "Core library for the Cucumber BDD app")
2647 (description "Cucumber is a tool for running automated tests
2648written in plain language. Because they're written in plain language,
2649they can be read by anyone on your team. Because they can be read by
2650anyone, you can use them to help improve communication, collaboration
2651and trust on your team.")
2652 (home-page "https://cucumber.io/")
2653 (license license:expat)))
212d563d
PP
2654
2655(define-public ruby-bio-logger
2656 (package
2657 (name "ruby-bio-logger")
2658 (version "1.0.1")
2659 (source
2660 (origin
2661 (method url-fetch)
2662 (uri (rubygems-uri "bio-logger" version))
2663 (sha256
2664 (base32
2665 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
2666 (build-system ruby-build-system)
2667 (arguments
2668 `(#:tests? #f)) ; rake errors, missing shoulda
2669 (propagated-inputs
2670 `(("ruby-log4r" ,ruby-log4r)))
2671 (synopsis "Log4r wrapper for Ruby")
2672 (description "Bio-logger is a wrapper around Log4r adding extra logging
2673features such as filtering and fine grained logging.")
2674 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
2675 (license license:expat)))
07f61cb2
BW
2676
2677(define-public ruby-yard
2678 (package
2679 (name "ruby-yard")
2680 (version "0.8.7.6")
2681 (source
2682 (origin
2683 (method url-fetch)
2684 (uri (rubygems-uri "yard" version))
2685 (sha256
2686 (base32
2687 "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x"))))
2688 (build-system ruby-build-system)
2689 (arguments
2690 `(#:test-target "specs"
2691 #:phases
2692 (modify-phases %standard-phases
2693 (add-before 'check 'set-HOME
2694 ;; $HOME needs to be set to somewhere writeable for tests to run
2695 (lambda _ (setenv "HOME" "/tmp") #t)))))
2696 (native-inputs
2697 `(("ruby-rspec" ,ruby-rspec-2)
2698 ("ruby-rack" ,ruby-rack)))
2699 (synopsis "Documentation generation tool for Ruby")
2700 (description
2701 "YARD is a documentation generation tool for the Ruby programming
2702language. It enables the user to generate consistent, usable documentation
2703that can be exported to a number of formats very easily, and also supports
2704extending for custom Ruby constructs such as custom class level definitions.")
2705 (home-page "http://yardoc.org")
2706 (license license:expat)))
2cbcd23a 2707
ad686ef3
RW
2708(define-public ruby-clap
2709 (package
2710 (name "ruby-clap")
2711 (version "1.0.0")
2712 (source (origin
2713 (method url-fetch)
2714 (uri (rubygems-uri "clap" version))
2715 (sha256
2716 (base32
2717 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
2718 (build-system ruby-build-system)
2719 ;; Clap needs cutest for running tests, but cutest needs clap.
2720 (arguments `(#:tests? #f))
2721 (synopsis "Command line argument parsing for simple applications")
2722 (description
2723 "Clap provides command line argument parsing features. It covers the
2724simple case of executing code based on the flags or parameters passed.")
2725 (home-page "https://github.com/djanowski/cutest")
0c80451e
RW
2726 (license license:expat)))
2727
2728(define-public ruby-cutest
2729 (package
2730 (name "ruby-cutest")
2731 (version "1.2.2")
2732 (source (origin
2733 (method url-fetch)
2734 (uri (rubygems-uri "cutest" version))
2735 (sha256
2736 (base32
2737 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
2738 (build-system ruby-build-system)
2739 (propagated-inputs
2740 `(("ruby-clap" ,ruby-clap)))
2741 (synopsis "Run tests in separate processes")
2742 (description
2743 "Cutest runs tests in separate processes to avoid shared state.")
2744 (home-page "https://github.com/djanowski/cutest")
ad686ef3
RW
2745 (license license:expat)))
2746
ac09beba
RW
2747(define-public ruby-pygmentize
2748 (package
2749 (name "ruby-pygmentize")
2750 (version "0.0.3")
2751 (source (origin
2752 (method url-fetch)
2753 (uri (rubygems-uri "pygmentize" version))
2754 (sha256
2755 (base32
2756 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
2757 (build-system ruby-build-system)
2758 (arguments
2759 `(#:phases
2760 (modify-phases %standard-phases
2761 (add-after 'unpack 'fix-pygmentize-path
2762 (lambda _
2763 (substitute* "lib/pygmentize.rb"
2764 (("\"/usr/bin/env python.*")
2765 (string-append "\"" (which "pygmentize") "\"\n")))
2766 #t))
2767 (add-after 'build 'do-not-use-vendor-directory
2768 (lambda _
2769 ;; Remove bundled pygments sources
2770 ;; FIXME: ruby-build-system does not support snippets.
2771 (delete-file-recursively "vendor")
2772 (substitute* "pygmentize.gemspec"
2773 (("\"vendor/\\*\\*/\\*\",") ""))
2774 #t)))))
2775 (inputs
2776 `(("pygments" ,python-pygments)))
2777 (native-inputs
2778 `(("ruby-cutest" ,ruby-cutest)
2779 ("ruby-nokogiri" ,ruby-nokogiri)))
2780 (synopsis "Thin Ruby wrapper around pygmentize")
2781 (description
2782 "Pygmentize provides a simple way to call pygmentize from within a Ruby
2783application.")
2784 (home-page "https://github.com/djanowski/pygmentize")
2785 (license license:expat)))
2786
2cbcd23a
DT
2787(define-public ruby-eventmachine
2788 (package
2789 (name "ruby-eventmachine")
2790 (version "1.0.8")
2791 (source
2792 (origin
2793 (method url-fetch)
2794 (uri (rubygems-uri "eventmachine" version))
2795 (sha256
2796 (base32
2797 "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp"))))
2798 (build-system ruby-build-system)
2799 (arguments
2800 '(#:tests? #f)) ; test suite tries to connect to google.com
2801 (native-inputs
2802 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
2803 (synopsis "Single-threaded network event framework for Ruby")
2804 (description
2805 "EventMachine implements a single-threaded engine for arbitrary network
2806communications. EventMachine wraps all interactions with sockets, allowing
2807programs to concentrate on the implementation of network protocols. It can be
2808used to create both network servers and clients.")
2809 (home-page "http://rubyeventmachine.com")
2810 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT