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