gnu: Add ruby-shoulda-context.
[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
e07ef1d6
BW
1619(define-public ruby-minitest-bonus-assertions
1620 (package
1621 (name "ruby-minitest-bonus-assertions")
1622 (version "2.0")
1623 (source
1624 (origin
1625 (method url-fetch)
1626 (uri (rubygems-uri "minitest-bonus-assertions" version))
1627 (sha256
1628 (base32
1629 "11nrd32kwy61ndg9csk7l1ifya79ghrrv3vsrxj57k50m7na6jkm"))))
1630 (build-system ruby-build-system)
1631 (arguments
1632 `(#:phases
1633 (modify-phases %standard-phases
1634 (add-before 'check 'clean-dependencies
1635 (lambda _
1636 ;; Remove unneeded require statement that would entail another
1637 ;; dependency.
1638 (substitute* "test/minitest_config.rb"
1639 (("require 'minitest/bisect'") ""))
1640 #t)))))
1641 (native-inputs
1642 `(("ruby-hoe" ,ruby-hoe)
1643 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
1644 ("ruby-minitest-focus" ,ruby-minitest-focus)
1645 ("ruby-minitest-moar" ,ruby-minitest-moar)))
1646 (synopsis "Bonus assertions for @code{Minitest}")
1647 (description
1648 "Minitest bonus assertions provides extra MiniTest assertions. For
1649instance, it provides @code{assert_true}, @code{assert_false} and
1650@code{assert_set_equal}.")
1651 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
1652 (license license:expat)))
1653
e582fa93
BW
1654(define-public ruby-minitest-rg
1655 (package
1656 (name "ruby-minitest-rg")
1657 (version "5.2.0")
1658 (source
1659 (origin
1660 (method url-fetch)
1661 (uri (rubygems-uri "minitest-rg" version))
1662 (sha256
1663 (base32
1664 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
1665 (build-system ruby-build-system)
1666 (arguments
1667 ;; Some tests fail even outside Guix, so disable tests.
1668 ;; https://github.com/blowmage/minitest-rg/issues/12
1669 ;; https://github.com/blowmage/minitest-rg/pull/13
1670 `(#:tests? #f))
1671 (propagated-inputs
1672 `(("ruby-minitest" ,ruby-minitest)))
1673 (synopsis "Coloured output for Minitest")
1674 (description
1675 "@code{minitest-rg} changes the colour of the output from Minitest.")
1676 (home-page "http://blowmage.com/minitest-rg")
1677 (license license:expat)))
1678
afbbdf77
DT
1679(define-public ruby-daemons
1680 (package
1681 (name "ruby-daemons")
1682 (version "1.2.2")
1683 (source (origin
1684 (method url-fetch)
e83c6d00 1685 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
1686 (sha256
1687 (base32
e83c6d00 1688 "121c7vkimg3baxga69xvdkwxiq8wkmxqvdbyqi5i82vhih5d3cn3"))))
afbbdf77
DT
1689 (build-system ruby-build-system)
1690 (arguments
1691 `(#:tests? #f)) ; no test suite
1692 (synopsis "Daemonize Ruby programs")
1693 (description "Daemons provides a way to wrap existing Ruby scripts to be
1694run as a daemon and to be controlled by simple start/stop/restart commands.")
1695 (home-page "https://github.com/thuehlinger/daemons")
1696 (license license:expat)))
66e20863
DT
1697
1698(define-public ruby-git
1699 (package
1700 (name "ruby-git")
1701 (version "1.2.9.1")
1702 (source (origin
1703 (method url-fetch)
e83c6d00 1704 (uri (rubygems-uri "git" version))
66e20863
DT
1705 (sha256
1706 (base32
e83c6d00 1707 "1sqfj8lmhl7c5zamcckkpik4izfph2zkv6krw0i8mzj5pdws5acs"))))
66e20863
DT
1708 (build-system ruby-build-system)
1709 (arguments
e83c6d00
DT
1710 `(#:tests? #f ; no tests
1711 #:phases (modify-phases %standard-phases
1712 (add-after 'install 'patch-git-binary
1713 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
1714 ;; Make the default git binary an absolute path to the
1715 ;; store.
e83c6d00
DT
1716 (let ((git (string-append (assoc-ref inputs "git")
1717 "/bin/git"))
1718 (config (string-append (getenv "GEM_HOME")
1719 "/gems/git-" ,version
1720 "/lib/git/config.rb")))
1721 (substitute* (list config)
66e20863
DT
1722 (("'git'")
1723 (string-append "'" git "'")))
e83c6d00 1724 #t))))))
66e20863
DT
1725 (inputs
1726 `(("git" ,git)))
1727 (synopsis "Ruby wrappers for Git")
1728 (description "Ruby/Git is a Ruby library that can be used to create, read
1729and manipulate Git repositories by wrapping system calls to the git binary.")
1730 (home-page "https://github.com/schacon/ruby-git")
1731 (license license:expat)))
71d3e2c2
DT
1732
1733(define-public ruby-slop
1734 (package
1735 (name "ruby-slop")
1736 (version "4.1.0")
1737 (source (origin
1738 (method url-fetch)
e83c6d00 1739 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
1740 (sha256
1741 (base32
e83c6d00 1742 "0dj0ps6v1mqd02k84mgwd7hp578n2bzl7c51h3grdhxfl3jkfsj5"))))
71d3e2c2
DT
1743 (build-system ruby-build-system)
1744 (native-inputs
1745 `(("ruby-minitest" ,ruby-minitest)))
1746 (synopsis "Ruby command line option parser")
1747 (description "Slop provides a Ruby domain specific language for gathering
1748options and parsing command line flags.")
1749 (home-page "https://github.com/leejarvis/slop")
1750 (license license:expat)))
e778a549 1751
5337f8b9
DT
1752(define-public ruby-slop-3
1753 (package (inherit ruby-slop)
1754 (version "3.6.0")
1755 (source (origin
1756 (method url-fetch)
1757 (uri (rubygems-uri "slop" version))
1758 (sha256
1759 (base32
1760 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
1761
e778a549
DT
1762(define-public ruby-multipart-post
1763 (package
1764 (name "ruby-multipart-post")
1765 (version "2.0.0")
1766 (source (origin
1767 (method url-fetch)
e83c6d00 1768 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
1769 (sha256
1770 (base32
e83c6d00 1771 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
1772 (build-system ruby-build-system)
1773 (native-inputs
1774 `(("bundler" ,bundler)))
1775 (synopsis "Multipart POST library for Ruby")
1776 (description "Multipart-Post Adds multipart POST capability to Ruby's
1777net/http library.")
1778 (home-page "https://github.com/nicksieger/multipart-post")
1779 (license license:expat)))
f8da3af0
DT
1780
1781(define-public ruby-arel
1782 (package
1783 (name "ruby-arel")
1784 (version "6.0.3")
1785 (source (origin
1786 (method url-fetch)
1787 (uri (rubygems-uri "arel" version))
1788 (sha256
1789 (base32
1790 "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk"))))
1791 (build-system ruby-build-system)
1792 (arguments '(#:tests? #f)) ; no tests
1793 (home-page "https://github.com/rails/arel")
1794 (synopsis "SQL AST manager for Ruby")
1795 (description "Arel is a SQL AST manager for Ruby. It simplifies the
1796generation of complex SQL queries and is compatible with various RDBMSes.")
1797 (license license:expat)))
616eaead
DT
1798
1799(define-public ruby-minitar
1800 (package
1801 (name "ruby-minitar")
1802 (version "0.5.4")
1803 (source
1804 (origin
1805 (method url-fetch)
1806 (uri (rubygems-uri "minitar" version))
1807 (sha256
1808 (base32
1809 "1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka"))))
1810 (build-system ruby-build-system)
1811 (arguments
1812 '(#:tests? #f)) ; missing a gemspec
1813 (synopsis "Ruby library and utility for handling tar archives")
1814 (description
1815 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
1816that provides the ability to deal with POSIX tar archive files.")
1817 (home-page "http://www.github.com/atoulme/minitar")
1818 (license (list license:gpl2+ license:ruby))))
bea1c0e2
DT
1819
1820(define-public ruby-mini-portile
1821 (package
1822 (name "ruby-mini-portile")
1823 (version "0.6.2")
1824 (source
1825 (origin
1826 (method url-fetch)
1827 (uri (rubygems-uri "mini_portile" version))
1828 (sha256
1829 (base32
1830 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
1831 (build-system ruby-build-system)
1832 (arguments
1833 '(#:tests? #f)) ; tests require network access
1834 (synopsis "Ports system for Ruby developers")
1835 (description "Mini-portile is a port/recipe system for Ruby developers.
1836It provides a standard way to compile against specific versions of libraries
1837to reproduce user environments.")
1838 (home-page "http://github.com/flavorjones/mini_portile")
1839 (license license:expat)))
e920bfca 1840
d000fc92
BW
1841(define-public ruby-mini-portile-2
1842 (package (inherit ruby-mini-portile)
1843 (version "2.0.0")
1844 (source (origin
1845 (method url-fetch)
1846 (uri (rubygems-uri "mini_portile2" version))
1847 (sha256
1848 (base32
1849 "056drbn5m4khdxly1asmiik14nyllswr6sh3wallvsywwdiryz8l"))))))
1850
e920bfca
DT
1851(define-public ruby-nokogiri
1852 (package
1853 (name "ruby-nokogiri")
1b9d4e2e 1854 (version "1.6.7.1")
e920bfca
DT
1855 (source (origin
1856 (method url-fetch)
1857 (uri (rubygems-uri "nokogiri" version))
1858 (sha256
1859 (base32
1b9d4e2e 1860 "12nwv3lad5k2k73aa1d1xy4x577c143ixks6rs70yp78sinbglk2"))))
e920bfca
DT
1861 (build-system ruby-build-system)
1862 (arguments
1863 ;; Tests fail because Nokogiri can only test with an installed extension,
1864 ;; and also because many test framework dependencies are missing.
1865 '(#:tests? #f
1866 #:gem-flags (list "--" "--use-system-libraries"
1867 (string-append "--with-xml2-include="
1868 (assoc-ref %build-inputs "libxml2")
1869 "/include/libxml2" ))))
1870 (native-inputs
1871 `(("ruby-hoe" ,ruby-hoe)
1872 ("ruby-rake-compiler", ruby-rake-compiler)))
1873 (inputs
1874 `(("zlib" ,zlib)
1875 ("libxml2" ,libxml2)
1876 ("libxslt" ,libxslt)))
1877 (propagated-inputs
1b9d4e2e 1878 `(("ruby-mini-portile" ,ruby-mini-portile-2)))
e920bfca
DT
1879 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
1880 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
1881both CSS3 selector and XPath 1.0 support.")
1882 (home-page "http://www.nokogiri.org/")
1883 (license license:expat)))
30b0b725
DT
1884
1885(define-public ruby-method-source
1886 (package
1887 (name "ruby-method-source")
1888 (version "0.8.2")
1889 (source
1890 (origin
1891 (method url-fetch)
1892 (uri (rubygems-uri "method_source" version))
1893 (sha256
1894 (base32
1895 "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
1896 (build-system ruby-build-system)
1897 (native-inputs
1898 `(("ruby-bacon" ,ruby-bacon)
1899 ("git" ,git)))
1900 (synopsis "Retrieve the source code for Ruby methods")
1901 (description "Method_source retrieves the source code for Ruby methods.
1902Additionally, it can extract source code from Proc and Lambda objects or just
1903extract comments.")
1904 (home-page "https://github.com/banister/method_source")
1905 (license license:expat)))
2e3fdea4
DT
1906
1907(define-public ruby-coderay
1908 (package
1909 (name "ruby-coderay")
1910 (version "1.1.0")
1911 (source
1912 (origin
1913 (method url-fetch)
1914 (uri (rubygems-uri "coderay" version))
1915 (sha256
1916 (base32
1917 "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
1918 (build-system ruby-build-system)
1919 (arguments
1920 '(#:tests? #f)) ; missing test files
1921 (synopsis "Ruby syntax highlighting library")
1922 (description "Coderay is a Ruby library that provides syntax highlighting
1923for select languages.")
1924 (home-page "http://coderay.rubychan.de")
1925 (license license:expat)))
96e76083
DT
1926
1927(define-public ruby-pry
1928 (package
1929 (name "ruby-pry")
1930 (version "0.10.1")
1931 (source
1932 (origin
1933 (method url-fetch)
1934 (uri (rubygems-uri "pry" version))
1935 (sha256
1936 (base32
1937 "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
1938 (build-system ruby-build-system)
1939 (arguments
1940 '(#:tests? #f)) ; no tests
1941 (propagated-inputs
1942 `(("ruby-coderay" ,ruby-coderay)
1943 ("ruby-method-source" ,ruby-method-source)
1944 ("ruby-slop" ,ruby-slop-3)))
1945 (synopsis "Ruby REPL")
1946 (description "Pry is an IRB alternative and runtime developer console for
1947Ruby. It features syntax highlighting, a plugin architecture, runtime
1948invocation, and source and documentation browsing.")
1949 (home-page "http://pryrepl.org")
1950 (license license:expat)))
1415792a 1951
051deeb7
RW
1952(define-public ruby-guard
1953 (package
1954 (name "ruby-guard")
1955 (version "2.13.0")
1956 (source (origin
1957 (method url-fetch)
1958 ;; The gem does not include a Rakefile, nor does it contain a
1959 ;; gemspec file, nor does it come with the tests. This is why
1960 ;; we fetch the tarball from Github.
1961 (uri (string-append "https://github.com/guard/guard/archive/v"
1962 version ".tar.gz"))
1963 (file-name (string-append name "-" version ".tar.gz"))
1964 (sha256
1965 (base32
1966 "1hwj0yi17k6f5axrm0k2bb7fq71dlp0zfywmd7pij9iimbppcca0"))))
1967 (build-system ruby-build-system)
1968 (arguments
1969 `(#:tests? #f ; tests require cucumber
1970 #:phases
1971 (modify-phases %standard-phases
1972 (add-after 'unpack 'remove-git-ls-files
1973 (lambda* (#:key outputs #:allow-other-keys)
1974 (substitute* "guard.gemspec"
1975 (("git ls-files -z") "find . -type f -print0"))
1976 #t))
1977 (replace 'build
1978 (lambda _
1979 (zero? (system* "gem" "build" "guard.gemspec")))))))
1980 (propagated-inputs
1981 `(("ruby-formatador" ,ruby-formatador)
1982 ("ruby-listen" ,ruby-listen)
1983 ("ruby-lumberjack" ,ruby-lumberjack)
1984 ("ruby-nenv" ,ruby-nenv)
1985 ("ruby-notiffany" ,ruby-notiffany)
1986 ("ruby-pry" ,ruby-pry)
1987 ("ruby-shellany" ,ruby-shellany)
1988 ("ruby-thor" ,ruby-thor)))
1989 (native-inputs
1990 `(("bundler" ,bundler)
1991 ("ruby-rspec" ,ruby-rspec)))
1992 (synopsis "Tool to handle events on file system modifications")
1993 (description
1994 "Guard is a command line tool to easily handle events on file system
1995modifications. Guard automates various tasks by running custom rules whenever
1996file or directories are modified.")
1997 (home-page "http://guardgem.org/")
1998 (license license:expat)))
1999
1415792a
DT
2000(define-public ruby-thread-safe
2001 (package
2002 (name "ruby-thread-safe")
2003 (version "0.3.5")
2004 (source
2005 (origin
2006 (method url-fetch)
2007 (uri (rubygems-uri "thread_safe" version))
2008 (sha256
2009 (base32
2010 "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
2011 (build-system ruby-build-system)
2012 (arguments
2013 '(#:tests? #f)) ; needs simplecov, among others
2014 (synopsis "Thread-safe utilities for Ruby")
2015 (description "The thread_safe library provides thread-safe collections and
2016utilities for Ruby.")
2017 (home-page "https://github.com/ruby-concurrency/thread_safe")
2018 (license license:asl2.0)))
08a1b701
DT
2019
2020(define-public ruby-tzinfo
2021 (package
2022 (name "ruby-tzinfo")
2023 (version "1.2.2")
2024 (source
2025 (origin
2026 (method url-fetch)
2027 (uri (rubygems-uri "tzinfo" version))
2028 (sha256
2029 (base32
2030 "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
2031 (build-system ruby-build-system)
2032 (propagated-inputs
2033 `(("ruby-thread-safe" ,ruby-thread-safe)))
2034 (synopsis "Time zone library for Ruby")
2035 (description "TZInfo is a Ruby library that provides daylight savings
2036aware transformations between times in different time zones.")
2037 (home-page "http://tzinfo.github.io")
2038 (license license:expat)))
c99e2247 2039
48e6851f
RW
2040(define-public ruby-rb-inotify
2041 (package
2042 (name "ruby-rb-inotify")
2043 (version "0.9.5")
2044 (source
2045 (origin
2046 (method url-fetch)
2047 (uri (rubygems-uri "rb-inotify" version))
2048 (sha256
2049 (base32
2050 "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"))))
2051 (build-system ruby-build-system)
2052 (arguments
2053 '(#:tests? #f ; there are no tests
2054 #:phases
2055 (modify-phases %standard-phases
2056 ;; Building the gemspec with rake is not working here since it is
2057 ;; generated with Jeweler. It is also unnecessary because the
2058 ;; existing gemspec does not use any development tools to generate a
2059 ;; list of files.
2060 (replace 'build
2061 (lambda _
2062 (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
2063 (propagated-inputs
2064 `(("ruby-ffi" ,ruby-ffi)))
2065 (native-inputs
2066 `(("ruby-yard" ,ruby-yard)))
2067 (synopsis "Ruby wrapper for Linux's inotify")
2068 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
2069kernel subsystem for monitoring changes to files and directories.")
2070 (home-page "https://github.com/nex3/rb-inotify")
2071 (license license:expat)))
2072
a75bdfce
RW
2073(define-public ruby-pry-editline
2074 (package
2075 (name "ruby-pry-editline")
2076 (version "1.1.2")
2077 (source (origin
2078 (method url-fetch)
2079 (uri (rubygems-uri "pry-editline" version))
2080 (sha256
2081 (base32
2082 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
2083 (build-system ruby-build-system)
2084 (arguments `(#:tests? #f)) ; no tests included
2085 (native-inputs
2086 `(("bundler" ,bundler)))
2087 (synopsis "Open the current REPL line in an editor")
2088 (description
2089 "This gem provides a plugin for the Ruby REPL to enable opening the
2090current line in an external editor.")
2091 (home-page "https://github.com/tpope/pry-editline")
2092 (license license:expat)))
2093
d3b20a02
RW
2094(define-public ruby-sdoc
2095 (package
2096 (name "ruby-sdoc")
2097 (version "0.4.1")
2098 (source (origin
2099 (method url-fetch)
2100 (uri (rubygems-uri "sdoc" version))
2101 (sha256
2102 (base32
2103 "16xyfair1j4irfkd6sxvmdcak957z71lwkvhglrznfpkalfnqyqp"))))
2104 (build-system ruby-build-system)
2105 (arguments
2106 `(#:phases
2107 (modify-phases %standard-phases
2108 (add-after 'build 'relax-minitest-requirement
2109 (lambda _
2110 (substitute* "sdoc.gemspec"
2111 (("<minitest>, \\[\"~> 4\\.0\"\\]")
2112 "<minitest>, [\">= 4.0\"]"))
2113 #t)))))
2114 (propagated-inputs
2115 `(("ruby-json" ,ruby-json)))
2116 (native-inputs
2117 `(("bundler" ,bundler)
2118 ("ruby-minitest" ,ruby-minitest)))
2119 (synopsis "Generate searchable RDoc documentation")
2120 (description
2121 "SDoc is an RDoc documentation generator to build searchable HTML
2122documentation for Ruby code.")
2123 (home-page "http://github.com/voloko/sdoc")
2124 (license license:expat)))
2125
70b002aa
RW
2126(define-public ruby-tins
2127 (package
2128 (name "ruby-tins")
2129 (version "1.7.0")
2130 (source (origin
2131 (method url-fetch)
2132 (uri (rubygems-uri "tins" version))
2133 (sha256
2134 (base32
2135 "1060h8dgnjl9az0sv1b74yrni8d4mh3x858wq6yfbfdf5dxrfl0a"))))
2136 (build-system ruby-build-system)
2137 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
2138 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
2139 ;; the gemspec.
2140 (arguments
2141 `(#:tests? #f ; there are no tests
2142 #:phases
2143 (modify-phases %standard-phases
2144 (replace 'build
2145 (lambda _
2146 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
2147 ;; causes an error.
2148 (substitute* "tins.gemspec"
2149 (("\"lib/spruz\", ") ""))
2150 (zero? (system* "gem" "build" "tins.gemspec")))))))
2151 (synopsis "Assorted tools for Ruby")
2152 (description "Tins is a Ruby library providing assorted tools.")
2153 (home-page "https://github.com/flori/tins")
2154 (license license:expat)))
2155
bc8277e4
RW
2156(define-public ruby-gem-hadar
2157 (package
2158 (name "ruby-gem-hadar")
2159 (version "1.3.1")
2160 (source (origin
2161 (method url-fetch)
2162 (uri (rubygems-uri "gem_hadar" version))
2163 (sha256
2164 (base32
2165 "1j8qri4m9wf8nbfv0kakrgsv2x8vg10914xgm6f69nw8zi3i39ws"))))
2166 (build-system ruby-build-system)
2167 ;; This gem needs itself at development time. We disable rebuilding of the
2168 ;; gemspec to avoid this loop.
2169 (arguments
2170 `(#:tests? #f ; there are no tests
2171 #:phases
2172 (modify-phases %standard-phases
2173 (replace 'build
2174 (lambda _
2175 (zero? (system* "gem" "build" "gem_hadar.gemspec")))))))
2176 (propagated-inputs
2177 `(("git" ,git)
2178 ("ruby-tins" ,ruby-tins)
2179 ("ruby-sdoc" ,ruby-sdoc)))
2180 (native-inputs
2181 `(("bundler" ,bundler)))
2182 (synopsis "Library for the development of Ruby gems")
2183 (description
2184 "This library contains some useful functionality to support the
2185development of Ruby gems.")
2186 (home-page "https://github.com/flori/gem_hadar")
2187 (license license:expat)))
2188
d8cafe29
RW
2189(define-public ruby-minitest-tu-shim
2190 (package
2191 (name "ruby-minitest-tu-shim")
2192 (version "1.3.3")
2193 (source (origin
2194 (method url-fetch)
2195 (uri (rubygems-uri "minitest_tu_shim" version))
2196 (sha256
2197 (base32
2198 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
2199 (build-system ruby-build-system)
2200 (arguments
2201 `(#:phases
2202 (modify-phases %standard-phases
2203 (add-after 'unpack 'fix-test-include-path
2204 (lambda* (#:key inputs #:allow-other-keys)
2205 (substitute* "Rakefile"
2206 (("Hoe\\.add_include_dirs .*")
2207 (string-append "Hoe.add_include_dirs \""
2208 (assoc-ref inputs "ruby-minitest-4")
2209 "/lib/ruby/gems/2.2.0/gems/minitest-"
2210 ,(package-version ruby-minitest-4)
2211 "/lib" "\"")))))
2212 (add-before 'check 'fix-test-assumptions
2213 (lambda _
2214 ;; The test output includes the file name, so a couple of tests
2215 ;; fail. Changing the regular expressions slightly fixes this
2216 ;; problem.
2217 (substitute* "test/test_mini_test.rb"
2218 (("output.sub!\\(.*, 'FILE:LINE'\\)")
2219 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
2220 (("gsub\\(/.*, 'FILE:LINE'\\)")
2221 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
2222 #t)))))
2223 (propagated-inputs
2224 `(("ruby-minitest-4" ,ruby-minitest-4)))
2225 (native-inputs
2226 `(("ruby-hoe" ,ruby-hoe)))
2227 (synopsis "Adapter library between minitest and test/unit")
2228 (description
2229 "This library bridges the gap between the small and fast minitest and
2230Ruby's large and slower test/unit.")
2231 (home-page "https://rubygems.org/gems/minitest_tu_shim")
2232 (license license:expat)))
2233
fd83a212
RW
2234(define-public ruby-term-ansicolor
2235 (package
2236 (name "ruby-term-ansicolor")
2237 (version "1.3.2")
2238 (source (origin
2239 (method url-fetch)
2240 (uri (rubygems-uri "term-ansicolor" version))
2241 (sha256
2242 (base32
2243 "0ydbbyjmk5p7fsi55ffnkq79jnfqx65c3nj8d9rpgl6sw85ahyys"))))
2244 (build-system ruby-build-system)
2245 ;; Rebuilding the gemspec seems to require git, even though this is not a
2246 ;; git repository, so we just build the gem from the existing gemspec.
2247 (arguments
2248 `(#:phases
2249 (modify-phases %standard-phases
2250 (replace 'build
2251 (lambda _
2252 (zero? (system* "gem" "build" "term-ansicolor.gemspec")))))))
2253 (propagated-inputs
2254 `(("ruby-tins" ,ruby-tins)))
2255 (native-inputs
2256 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2257 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
2258 (synopsis "Ruby library to control the attributes of terminal output")
2259 (description
2260 "This Ruby library uses ANSI escape sequences to control the attributes
2261of terminal output.")
2262 (home-page "http://flori.github.io/term-ansicolor/")
2263 ;; There is no mention of the "or later" clause.
2264 (license license:gpl2)))
2265
6e376ca4
RW
2266(define-public ruby-pstree
2267 (package
2268 (name "ruby-pstree")
2269 (version "0.1.0")
2270 (source (origin
2271 (method url-fetch)
2272 (uri (rubygems-uri "pstree" version))
2273 (sha256
2274 (base32
2275 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
2276 (build-system ruby-build-system)
2277 (native-inputs
2278 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2279 ("bundler" ,bundler)))
2280 (synopsis "Create a process tree data structure")
2281 (description
2282 "This library uses the output of the @code{ps} command to create a
2283process tree data structure for the current host.")
2284 (home-page "http://flori.github.com/pstree")
2285 ;; There is no mention of the "or later" clause.
2286 (license license:gpl2)))
2287
53239b5f
RW
2288(define-public ruby-utils
2289 (package
2290 (name "ruby-utils")
2291 (version "0.2.4")
2292 (source (origin
2293 (method url-fetch)
2294 (uri (rubygems-uri "utils" version))
2295 (sha256
2296 (base32
2297 "0vycgscxf3s1xn4yyfsq54zlh082581ga8azybmqgc4pij6iz2cd"))))
2298 (build-system ruby-build-system)
2299 (propagated-inputs
2300 `(("ruby-tins" ,ruby-tins)
2301 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
2302 ("ruby-pstree" ,ruby-pstree)
2303 ("ruby-pry-editline" ,ruby-pry-editline)))
2304 (native-inputs
2305 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2306 ("bundler" ,bundler)))
2307 (synopsis "Command line tools for working with Ruby")
2308 (description
2309 "This package provides assorted command line tools that may be useful
2310when working with Ruby code.")
2311 (home-page "https://github.com/flori/utils")
2312 ;; There is no mention of the "or later" clause.
2313 (license license:gpl2)))
2314
c99e2247
DT
2315(define-public ruby-json
2316 (package
2317 (name "ruby-json")
2318 (version "1.8.3")
2319 (source
2320 (origin
2321 (method url-fetch)
2322 (uri (rubygems-uri "json" version))
2323 (sha256
2324 (base32
2325 "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
2326 (build-system ruby-build-system)
2327 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
2328 (synopsis "JSON library for Ruby")
2329 (description "This Ruby library provides a JSON implementation written as
2330a native C extension.")
2331 (home-page "http://json-jruby.rubyforge.org/")
2332 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 2333
763624f5
RW
2334(define-public ruby-json-pure
2335 (package
2336 (name "ruby-json-pure")
2337 (version "1.8.3")
2338 (source (origin
2339 (method url-fetch)
2340 (uri (rubygems-uri "json_pure" version))
2341 (sha256
2342 (base32
2343 "025aykr360x6dr1jmg8pmsrx7gr30pws4p1q686vnb48zyw1sc94"))))
2344 (build-system ruby-build-system)
2345 (arguments
2346 `(#:modules ((srfi srfi-1)
2347 (ice-9 regex)
2348 (rnrs io ports)
2349 (guix build ruby-build-system)
2350 (guix build utils))
2351 #:phases
2352 (modify-phases %standard-phases
2353 (add-after 'unpack 'replace-git-ls-files
2354 (lambda _
2355 ;; The existing gemspec file already contains a nice list of
2356 ;; files that belong to the gem. We extract the list from the
2357 ;; gemspec file and then replace the file list in the Rakefile to
2358 ;; get rid of the call to "git ls-files".
2359 (let* ((contents (call-with-input-file "json.gemspec" get-string-all))
2360 ;; Guile is unhappy about the #\nul characters in comments.
2361 (filtered (string-filter (lambda (char)
2362 (not (equal? #\nul char)))
2363 contents))
2364 (files (match:substring
2365 (string-match " s\\.files = ([^]]+\\])" filtered) 1)))
2366 (substitute* "Rakefile"
2367 (("FileList\\[`git ls-files`\\.split\\(/\\\\n/\\)\\]")
2368 (string-append "FileList" files))))
2369 #t)))))
2370 (native-inputs
2371 `(("ruby-permutation" ,ruby-permutation)
2372 ("ruby-utils" ,ruby-utils)
2373 ("ragel" ,ragel)
2374 ("bundler" ,bundler)))
2375 (synopsis "JSON implementation in pure Ruby")
2376 (description
2377 "This package provides a JSON implementation written in pure Ruby.")
2378 (home-page "http://flori.github.com/json")
2379 (license license:ruby)))
2380
16b324cd
RW
2381;; Even though this package only provides bindings for a Mac OSX API it is
2382;; required by "ruby-listen" at runtime.
2383(define-public ruby-rb-fsevent
2384 (package
2385 (name "ruby-rb-fsevent")
2386 (version "0.9.6")
2387 (source (origin
2388 (method url-fetch)
2389 (uri (rubygems-uri "rb-fsevent" version))
2390 (sha256
2391 (base32
2392 "1hq57by28iv0ijz8pk9ynih0xdg7vnl1010xjcijfklrcv89a1j2"))))
2393 (build-system ruby-build-system)
2394 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
2395 ;; "listen", which needs "rb-fsevent" at runtime.
2396 (arguments `(#:tests? #f))
2397 (synopsis "FSEvents API with signals catching")
2398 (description
2399 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
2400 (home-page "https://rubygems.org/gems/rb-fsevent")
2401 (license license:expat)))
2402
b86be2ad
RW
2403(define-public ruby-listen
2404 (package
2405 (name "ruby-listen")
2406 (version "3.0.3")
2407 (source
2408 (origin
2409 (method url-fetch)
2410 (uri (rubygems-uri "listen" version))
2411 (sha256
2412 (base32
2413 "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
2414 (build-system ruby-build-system)
2415 (arguments '(#:tests? #f)) ; no tests
2416 (propagated-inputs
cf1a01f4
RW
2417 `(("ruby-rb-inotify" ,ruby-rb-inotify)
2418 ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
b86be2ad
RW
2419 (synopsis "Listen to file modifications")
2420 (description "The Listen gem listens to file modifications and notifies
2421you about the changes.")
2422 (home-page "https://github.com/guard/listen")
2423 (license license:expat)))
2424
5ff89a1b
DT
2425(define-public ruby-activesupport
2426 (package
2427 (name "ruby-activesupport")
2428 (version "4.2.4")
2429 (source
2430 (origin
2431 (method url-fetch)
2432 (uri (rubygems-uri "activesupport" version))
2433 (sha256
2434 (base32
2435 "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
2436 (build-system ruby-build-system)
2437 (arguments
2438 '(#:tests? #f)) ; no tests
2439 (propagated-inputs
2440 `(("ruby-i18n" ,ruby-i18n)
2441 ("ruby-json" ,ruby-json)
2442 ("ruby-minitest" ,ruby-minitest)
2443 ("ruby-thread-safe" ,ruby-thread-safe)
2444 ("ruby-tzinfo" ,ruby-tzinfo)))
2445 (synopsis "Ruby on Rails utility library")
2446 (description "ActiveSupport is a toolkit of support libraries and Ruby
2447core extensions extracted from the Rails framework. It includes support for
2448multibyte strings, internationalization, time zones, and testing.")
2449 (home-page "http://www.rubyonrails.org")
2450 (license license:expat)))
f847ad7b 2451
3996f0aa
RW
2452(define-public ruby-crass
2453 (package
2454 (name "ruby-crass")
2455 (version "1.0.2")
2456 (source (origin
2457 (method url-fetch)
2458 (uri (rubygems-uri "crass" version))
2459 (sha256
2460 (base32
2461 "1c377r8g7m58y22803iyjgqkkvnnii0pymskda1pardxrzaighj9"))))
2462 (build-system ruby-build-system)
2463 (native-inputs
2464 `(("bundler" ,bundler)
2465 ("ruby-minitest" ,ruby-minitest)))
2466 (synopsis "Pure Ruby CSS parser")
2467 (description
2468 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
2469 (home-page "https://github.com/rgrove/crass/")
2470 (license license:expat)))
2471
c2c4e5b2
RW
2472(define-public ruby-nokogumbo
2473 (package
2474 (name "ruby-nokogumbo")
2475 (version "1.4.6")
2476 (source (origin
2477 ;; We use the git reference, because there's no Rakefile in the
2478 ;; published gem and the tarball on Github is outdated.
2479 (method git-fetch)
2480 (uri (git-reference
2481 (url "https://github.com/rubys/nokogumbo.git")
2482 (commit "d56f954d20a")))
2483 (file-name (string-append name "-" version "-checkout"))
2484 (sha256
2485 (base32
2486 "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
2487 (build-system ruby-build-system)
2488 (arguments
2489 `(#:modules ((guix build ruby-build-system)
2490 (guix build utils)
2491 (ice-9 rdelim))
2492 #:phases
2493 (modify-phases %standard-phases
2494 (add-before 'build 'build-gemspec
2495 (lambda _
2496 (substitute* "Rakefile"
2497 ;; Build Makefile even without a copy of gumbo-parser sources
2498 (("'gumbo-parser/src',") "")
2499 ;; We don't bundle gumbo-parser sources
2500 (("'gumbo-parser/src/\\*',") "")
2501 (("'gumbo-parser/visualc/include/\\*',") "")
2502 ;; The definition of SOURCES will be cut in gemspec, and
2503 ;; "FileList" will be undefined.
2504 (("SOURCES \\+ FileList\\[")
2505 "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
2506
2507 ;; Copy the Rakefile and cut out the gemspec.
2508 (copy-file "Rakefile" ".gemspec")
2509 (with-atomic-file-replacement ".gemspec"
2510 (lambda (in out)
2511 (let loop ((line (read-line in 'concat))
2512 (skipping? #t))
2513 (if (eof-object? line)
2514 #t
2515 (let ((skip-next? (if skipping?
2516 (not (string-prefix? "SPEC =" line))
2517 (string-prefix? "end" line))))
2518 (when (or (not skipping?)
2519 (and skipping? (not skip-next?)))
2520 (format #t "~a" line)
2521 (display line out))
2522 (loop (read-line in 'concat) skip-next?))))))
2523 #t)))))
2524 (inputs
2525 `(("gumbo-parser" ,gumbo-parser)))
2526 (propagated-inputs
2527 `(("ruby-nokogiri" ,ruby-nokogiri)))
2528 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
2529 (description
2530 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
2531access the result as a Nokogiri parsed document.")
2532 (home-page "https://github.com/rubys/nokogumbo/")
2533 (license license:asl2.0)))
2534
d56ff88b
RW
2535(define-public ruby-sanitize
2536 (package
2537 (name "ruby-sanitize")
2538 (version "4.0.0")
2539 (source (origin
2540 (method url-fetch)
2541 ;; The gem does not include the Rakefile, so we download the
2542 ;; release tarball from Github.
2543 (uri (string-append "https://github.com/rgrove/"
2544 "sanitize/archive/v" version ".tar.gz"))
2545 (file-name (string-append name "-" version ".tar.gz"))
2546 (sha256
2547 (base32
2548 "055xnj38l60gxnnng76kpy2l2jbrp0byjdyq17jw79w7l4b40znr"))))
2549 (build-system ruby-build-system)
2550 (propagated-inputs
2551 `(("ruby-crass" ,ruby-crass)
2552 ("ruby-nokogiri" ,ruby-nokogiri)
2553 ("ruby-nokogumbo" ,ruby-nokogumbo)))
2554 (native-inputs
2555 `(("bundler" ,bundler)
2556 ("ruby-minitest" ,ruby-minitest)
2557 ("ruby-redcarpet" ,ruby-redcarpet)
2558 ("ruby-yard" ,ruby-yard)))
2559 (synopsis "Whitelist-based HTML and CSS sanitizer")
2560 (description
2561 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
2562acceptable elements, attributes, and CSS properties, Sanitize will remove all
2563unacceptable HTML and/or CSS from a string.")
2564 (home-page "https://github.com/rgrove/sanitize/")
2565 (license license:expat)))
2566
f847ad7b
DT
2567(define-public ruby-ox
2568 (package
2569 (name "ruby-ox")
2570 (version "2.2.1")
2571 (source
2572 (origin
2573 (method url-fetch)
2574 (uri (rubygems-uri "ox" version))
2575 (sha256
2576 (base32
2577 "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
2578 (build-system ruby-build-system)
2579 (arguments
2580 '(#:tests? #f)) ; no tests
2581 (synopsis "Optimized XML library for Ruby")
2582 (description
2583 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
2584written as a native C extension. It was designed to be an alternative to
2585Nokogiri and other Ruby XML parsers for generic XML parsing and as an
2586alternative to Marshal for Object serialization. ")
2587 (home-page "http://www.ohler.com/ox")
2588 (license license:expat)))
4a9e0585 2589
0c4e7625
RW
2590(define-public ruby-redcloth
2591 (package
2592 (name "ruby-redcloth")
2593 (version "4.2.9")
2594 (source (origin
2595 (method url-fetch)
2596 (uri (rubygems-uri "RedCloth" version))
2597 (sha256
2598 (base32
2599 "06pahxyrckhgb7alsxwhhlx1ib2xsx33793finj01jk8i054bkxl"))))
2600 (build-system ruby-build-system)
2601 (arguments
2602 `(#:tests? #f ; no tests
2603 #:phases
2604 (modify-phases %standard-phases
2605 ;; Redcloth has complicated rake tasks to build various versions for
2606 ;; multiple targets using RVM. We don't want this so we just use the
2607 ;; existing gemspec.
2608 (replace 'build
2609 (lambda _
2610 (zero? (system* "gem" "build" "redcloth.gemspec"))))
2611 ;; Make sure that the "redcloth" executable finds required Ruby
2612 ;; libraries.
2613 (add-after 'install 'wrap-bin-redcloth
2614 (lambda* (#:key outputs #:allow-other-keys)
2615 (wrap-program (string-append (assoc-ref outputs "out")
2616 "/bin/redcloth")
2617 `("GEM_HOME" ":" prefix (,(getenv "GEM_HOME"))))
2618 #t)))))
2619 (native-inputs
2620 `(("bundler" ,bundler)
2621 ("ruby-diff-lcs" ,ruby-diff-lcs)
2622 ("ruby-rspec-2" ,ruby-rspec-2)))
2623 (synopsis "Textile markup language parser for Ruby")
2624 (description
2625 "RedCloth is a Ruby parser for the Textile markup language.")
2626 (home-page "http://redcloth.org")
2627 (license license:expat)))
2628
4a9e0585
DT
2629(define-public ruby-pg
2630 (package
2631 (name "ruby-pg")
2632 (version "0.18.2")
2633 (source
2634 (origin
2635 (method url-fetch)
2636 (uri (rubygems-uri "pg" version))
2637 (sha256
2638 (base32
2639 "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
2640 (build-system ruby-build-system)
2641 (arguments
2642 '(#:test-target "spec"))
2643 (native-inputs
2644 `(("ruby-rake-compiler" ,ruby-rake-compiler)
2645 ("ruby-hoe" ,ruby-hoe)
2646 ("ruby-rspec" ,ruby-rspec)))
2647 (inputs
2648 `(("postgresql" ,postgresql)))
2649 (synopsis "Ruby interface to PostgreSQL")
2650 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
2651with PostgreSQL 8.4 and later.")
2652 (home-page "https://bitbucket.org/ged/ruby-pg")
2653 (license license:ruby)))
468e5657
DT
2654
2655(define-public ruby-byebug
2656 (package
2657 (name "ruby-byebug")
2658 (version "6.0.2")
2659 (source
2660 (origin
2661 (method url-fetch)
2662 (uri (rubygems-uri "byebug" version))
2663 (sha256
2664 (base32
2665 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
2666 (build-system ruby-build-system)
2667 (arguments
2668 '(#:tests? #f)) ; no tests
2669 (synopsis "Debugger for Ruby 2")
2670 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
2671TracePoint C API for execution control and the Debug Inspector C API for call
2672stack navigation. The core component provides support that front-ends can
2673build on. It provides breakpoint handling and bindings for stack frames among
2674other things and it comes with a command line interface.")
2675 (home-page "http://github.com/deivid-rodriguez/byebug")
2676 (license license:bsd-2)))
64b6ccc3 2677
5799bc2b
RW
2678(define-public ruby-netrc
2679 (package
2680 (name "ruby-netrc")
2681 (version "0.11.0")
2682 (source (origin
2683 (method url-fetch)
2684 (uri (rubygems-uri "netrc" version))
2685 (sha256
2686 (base32
2687 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
2688 (build-system ruby-build-system)
2689 (arguments
2690 `(#:phases
2691 (modify-phases %standard-phases
2692 (replace 'check
2693 ;; There is no Rakefile and minitest can only run one file at once,
2694 ;; so we have to iterate over all test files.
2695 (lambda _
2696 (and (map (lambda (file)
2697 (zero? (system* "ruby" "-Itest" file)))
2698 (find-files "./test" "test_.*\\.rb"))))))))
2699 (native-inputs
2700 `(("ruby-minitest" ,ruby-minitest)))
2701 (synopsis "Library to read and update netrc files")
2702 (description
2703 "This library can read and update netrc files, preserving formatting
2704including comments and whitespace.")
2705 (home-page "https://github.com/geemus/netrc")
2706 (license license:expat)))
2707
3a6989ce
RW
2708(define-public ruby-unf-ext
2709 (package
2710 (name "ruby-unf-ext")
2711 (version "0.0.7.1")
2712 (source (origin
2713 (method url-fetch)
2714 (uri (rubygems-uri "unf_ext" version))
2715 (sha256
2716 (base32
2717 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
2718 (build-system ruby-build-system)
b809cc9a
RW
2719 (arguments
2720 `(#:phases
2721 (modify-phases %standard-phases
2722 (add-after 'build 'build-ext
2723 (lambda _ (zero? (system* "rake" "compile:unf_ext")))))))
3a6989ce
RW
2724 (native-inputs
2725 `(("bundler" ,bundler)
2726 ("ruby-rake-compiler" ,ruby-rake-compiler)
2727 ("ruby-test-unit" ,ruby-test-unit)))
2728 (synopsis "Unicode normalization form support library")
2729 (description
2730 "This package provides unicode normalization form support for Ruby.")
2731 (home-page "https://github.com/knu/ruby-unf_ext")
2732 (license license:expat)))
2733
2632a067
RW
2734(define-public ruby-tdiff
2735 (package
2736 (name "ruby-tdiff")
2737 (version "0.3.3")
2738 (source (origin
2739 (method url-fetch)
2740 (uri (rubygems-uri "tdiff" version))
2741 (sha256
2742 (base32
2743 "0k41jbvn8qq4mgrixnhlk742b971d136i8wpbcv2cczvi22xpc86"))))
2744 (build-system ruby-build-system)
2745 (native-inputs
2746 `(("ruby-rspec-2" ,ruby-rspec-2)
2747 ("ruby-yard" ,ruby-yard)
2748 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
2749 (synopsis "Calculate the differences between two tree-like structures")
2750 (description
2751 "This library provides functions to calculate the differences between two
2752tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
2753 (home-page "https://github.com/postmodern/tdiff")
2754 (license license:expat)))
2755
f60f5002
RW
2756(define-public ruby-nokogiri-diff
2757 (package
2758 (name "ruby-nokogiri-diff")
2759 (version "0.2.0")
2760 (source (origin
2761 (method url-fetch)
2762 (uri (rubygems-uri "nokogiri-diff" version))
2763 (sha256
2764 (base32
2765 "0njr1s42war0bj1axb2psjvk49l74a8wzr799wckqqdcb6n51lc1"))))
2766 (build-system ruby-build-system)
2767 (propagated-inputs
2768 `(("ruby-tdiff" ,ruby-tdiff)
2769 ("ruby-nokogiri" ,ruby-nokogiri)))
2770 (native-inputs
2771 `(("ruby-rspec-2" ,ruby-rspec-2)
2772 ("ruby-yard" ,ruby-yard)
2773 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
2774 (synopsis "Calculate the differences between two XML/HTML documents")
2775 (description
2776 "@code{Nokogiri::Diff} adds the ability to calculate the
2777differences (added or removed nodes) between two XML/HTML documents.")
2778 (home-page "https://github.com/postmodern/nokogiri-diff")
2779 (license license:expat)))
2780
64b6ccc3
DT
2781(define-public ruby-rack
2782 (package
2783 (name "ruby-rack")
2784 (version "1.6.4")
2785 (source
2786 (origin
2787 (method url-fetch)
2788 (uri (rubygems-uri "rack" version))
2789 (sha256
2790 (base32
2791 "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
2792 (build-system ruby-build-system)
2793 (arguments
2794 '(#:phases
2795 (modify-phases %standard-phases
2796 (add-before 'check 'fix-tests
2797 (lambda _
2798 ;; A few of the tests use the length of a file on disk for
2799 ;; Content-Length and Content-Range headers. However, this file
2800 ;; has a shebang in it which an earlier phase patches, growing
2801 ;; the file size from 193 to 239 bytes when the store prefix is
2802 ;; "/gnu/store".
2803 (let ((size-diff (- (string-length (which "ruby"))
2804 (string-length "/usr/bin/env ruby"))))
2805 (substitute* '("test/spec_file.rb")
2806 (("193")
2807 (number->string (+ 193 size-diff)))
2808 (("bytes(.)22-33" all delimiter)
2809 (string-append "bytes"
2810 delimiter
2811 (number->string (+ 22 size-diff))
2812 "-"
2813 (number->string (+ 33 size-diff))))))
2814 #t)))))
2815 (native-inputs
2816 `(("ruby-bacon" ,ruby-bacon)))
2817 (synopsis "Unified web application interface for Ruby")
2818 (description "Rack provides a minimal, modular and adaptable interface for
2819developing web applications in Ruby. By wrapping HTTP requests and responses,
2820it unifies the API for web servers, web frameworks, and software in between
2821into a single method call.")
2822 (home-page "http://rack.github.io/")
2823 (license license:expat)))
62e4cc5a 2824
6aaa815e
PP
2825(define-public ruby-docile
2826 (package
2827 (name "ruby-docile")
2828 (version "1.1.5")
2829 (source
2830 (origin
2831 (method url-fetch)
2832 (uri (rubygems-uri "docile" version))
2833 (sha256
2834 (base32
2835 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
2836 (build-system ruby-build-system)
2837 (arguments
2838 '(#:tests? #f)) ; needs github-markup, among others
2839 (synopsis "Ruby EDSL helper library")
2840 (description "Docile is a Ruby library that provides an interface for
2841creating embedded domain specific languages (EDSLs) that manipulate existing
2842Ruby classes.")
2843 (home-page "https://ms-ati.github.io/docile/")
2844 (license license:expat)))
2845
62e4cc5a
PP
2846(define-public ruby-gherkin3
2847 (package
2848 (name "ruby-gherkin3")
2849 (version "3.1.1")
2850 (source
2851 (origin
2852 (method url-fetch)
2853 (uri (rubygems-uri "gherkin3" version))
2854 (sha256
2855 (base32
2856 "0xsyxhqa1gwcxzvsdy4didaiq5vam8ma3fbwbw2w60via4k6r1z9"))))
2857 (build-system ruby-build-system)
2858 (native-inputs
2859 `(("bundler" ,bundler)))
2860 (arguments
2861 '(#:tests? #f)) ; needs simplecov, among others
2862 (synopsis "Gherkin parser for Ruby")
2863 (description "Gherkin 3 is a parser and compiler for the Gherkin language.
2864It is intended to replace Gherkin 2 and be used by all Cucumber
2865implementations to parse '.feature' files.")
2866 (home-page "https://github.com/cucumber/gherkin3")
2867 (license license:expat)))
cd89fecb
PP
2868
2869(define-public ruby-cucumber-core
2870 (package
2871 (name "ruby-cucumber-core")
2872 (version "1.3.0")
2873 (source
2874 (origin
2875 (method url-fetch)
2876 (uri (rubygems-uri "cucumber-core" version))
2877 (sha256
2878 (base32
2879 "12mrzf0s96izpq0k10lahlkgwc4fjs0zfs344rh8r8h3w3jyppr8"))))
2880 (build-system ruby-build-system)
2881 (propagated-inputs
2882 `(("ruby-gherkin3" ,ruby-gherkin3)))
2883 (native-inputs
2884 `(("bundler" ,bundler)))
2885 (arguments
2886 '(#:tests? #f)) ; needs simplecov, among others
2887 (synopsis "Core library for the Cucumber BDD app")
2888 (description "Cucumber is a tool for running automated tests
2889written in plain language. Because they're written in plain language,
2890they can be read by anyone on your team. Because they can be read by
2891anyone, you can use them to help improve communication, collaboration
2892and trust on your team.")
2893 (home-page "https://cucumber.io/")
2894 (license license:expat)))
212d563d
PP
2895
2896(define-public ruby-bio-logger
2897 (package
2898 (name "ruby-bio-logger")
2899 (version "1.0.1")
2900 (source
2901 (origin
2902 (method url-fetch)
2903 (uri (rubygems-uri "bio-logger" version))
2904 (sha256
2905 (base32
2906 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
2907 (build-system ruby-build-system)
2908 (arguments
2909 `(#:tests? #f)) ; rake errors, missing shoulda
2910 (propagated-inputs
2911 `(("ruby-log4r" ,ruby-log4r)))
2912 (synopsis "Log4r wrapper for Ruby")
2913 (description "Bio-logger is a wrapper around Log4r adding extra logging
2914features such as filtering and fine grained logging.")
2915 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
2916 (license license:expat)))
07f61cb2
BW
2917
2918(define-public ruby-yard
2919 (package
2920 (name "ruby-yard")
2921 (version "0.8.7.6")
2922 (source
2923 (origin
2924 (method url-fetch)
2925 (uri (rubygems-uri "yard" version))
2926 (sha256
2927 (base32
2928 "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x"))))
2929 (build-system ruby-build-system)
2930 (arguments
2931 `(#:test-target "specs"
2932 #:phases
2933 (modify-phases %standard-phases
2934 (add-before 'check 'set-HOME
2935 ;; $HOME needs to be set to somewhere writeable for tests to run
2936 (lambda _ (setenv "HOME" "/tmp") #t)))))
2937 (native-inputs
2938 `(("ruby-rspec" ,ruby-rspec-2)
2939 ("ruby-rack" ,ruby-rack)))
2940 (synopsis "Documentation generation tool for Ruby")
2941 (description
2942 "YARD is a documentation generation tool for the Ruby programming
2943language. It enables the user to generate consistent, usable documentation
2944that can be exported to a number of formats very easily, and also supports
2945extending for custom Ruby constructs such as custom class level definitions.")
2946 (home-page "http://yardoc.org")
2947 (license license:expat)))
2cbcd23a 2948
ad686ef3
RW
2949(define-public ruby-clap
2950 (package
2951 (name "ruby-clap")
2952 (version "1.0.0")
2953 (source (origin
2954 (method url-fetch)
2955 (uri (rubygems-uri "clap" version))
2956 (sha256
2957 (base32
2958 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
2959 (build-system ruby-build-system)
2960 ;; Clap needs cutest for running tests, but cutest needs clap.
2961 (arguments `(#:tests? #f))
2962 (synopsis "Command line argument parsing for simple applications")
2963 (description
2964 "Clap provides command line argument parsing features. It covers the
2965simple case of executing code based on the flags or parameters passed.")
2966 (home-page "https://github.com/djanowski/cutest")
0c80451e
RW
2967 (license license:expat)))
2968
2969(define-public ruby-cutest
2970 (package
2971 (name "ruby-cutest")
2972 (version "1.2.2")
2973 (source (origin
2974 (method url-fetch)
2975 (uri (rubygems-uri "cutest" version))
2976 (sha256
2977 (base32
2978 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
2979 (build-system ruby-build-system)
2980 (propagated-inputs
2981 `(("ruby-clap" ,ruby-clap)))
2982 (synopsis "Run tests in separate processes")
2983 (description
2984 "Cutest runs tests in separate processes to avoid shared state.")
2985 (home-page "https://github.com/djanowski/cutest")
ad686ef3
RW
2986 (license license:expat)))
2987
ac09beba
RW
2988(define-public ruby-pygmentize
2989 (package
2990 (name "ruby-pygmentize")
2991 (version "0.0.3")
2992 (source (origin
2993 (method url-fetch)
2994 (uri (rubygems-uri "pygmentize" version))
2995 (sha256
2996 (base32
2997 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
2998 (build-system ruby-build-system)
2999 (arguments
3000 `(#:phases
3001 (modify-phases %standard-phases
3002 (add-after 'unpack 'fix-pygmentize-path
3003 (lambda _
3004 (substitute* "lib/pygmentize.rb"
3005 (("\"/usr/bin/env python.*")
3006 (string-append "\"" (which "pygmentize") "\"\n")))
3007 #t))
3008 (add-after 'build 'do-not-use-vendor-directory
3009 (lambda _
3010 ;; Remove bundled pygments sources
3011 ;; FIXME: ruby-build-system does not support snippets.
3012 (delete-file-recursively "vendor")
3013 (substitute* "pygmentize.gemspec"
3014 (("\"vendor/\\*\\*/\\*\",") ""))
3015 #t)))))
3016 (inputs
3017 `(("pygments" ,python-pygments)))
3018 (native-inputs
3019 `(("ruby-cutest" ,ruby-cutest)
3020 ("ruby-nokogiri" ,ruby-nokogiri)))
3021 (synopsis "Thin Ruby wrapper around pygmentize")
3022 (description
3023 "Pygmentize provides a simple way to call pygmentize from within a Ruby
3024application.")
3025 (home-page "https://github.com/djanowski/pygmentize")
3026 (license license:expat)))
3027
2cbcd23a
DT
3028(define-public ruby-eventmachine
3029 (package
3030 (name "ruby-eventmachine")
3031 (version "1.0.8")
3032 (source
3033 (origin
3034 (method url-fetch)
3035 (uri (rubygems-uri "eventmachine" version))
3036 (sha256
3037 (base32
3038 "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp"))))
3039 (build-system ruby-build-system)
3040 (arguments
3041 '(#:tests? #f)) ; test suite tries to connect to google.com
3042 (native-inputs
3043 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
3044 (synopsis "Single-threaded network event framework for Ruby")
3045 (description
3046 "EventMachine implements a single-threaded engine for arbitrary network
3047communications. EventMachine wraps all interactions with sockets, allowing
3048programs to concentrate on the implementation of network protocols. It can be
3049used to create both network servers and clients.")
3050 (home-page "http://rubyeventmachine.com")
3051 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
7d3a1a2d 3052
8092e333
BW
3053(define-public ruby-turn
3054 (package
3055 (name "ruby-turn")
3056 (version "0.9.7")
3057 (source
3058 (origin
3059 (method url-fetch)
3060 (uri (rubygems-uri "turn" version))
3061 (sha256
3062 (base32
3063 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
3064 (build-system ruby-build-system)
3065 (arguments
3066 `(#:phases
3067 (modify-phases %standard-phases
3068 ;; Tests fail because turn changes its environment so can no longer
3069 ;; find test/unit. Instead simply test if the executable runs
3070 ;; without issue.
3071 (replace 'check
3072 (lambda _
3073 (zero? (system* "ruby" "-Ilib" "bin/turn" "-h")))))))
3074 (propagated-inputs
3075 `(("ruby-ansi" ,ruby-ansi)
3076 ("ruby-minitest" ,ruby-minitest-4)))
3077 (synopsis "Alternate set of alternative runners for MiniTest")
3078 (description
3079 "TURN provides a set of alternative runners for MiniTest which are both
3080colorful and informative. TURN displays each test on a separate line with
3081failures being displayed immediately instead of at the end of the tests. Note
3082that TURN is no longer being maintained.")
3083 (home-page "http://rubygems.org/gems/turn")
3084 (license license:expat)))
3085
32d1c06f
BW
3086(define-public ruby-mime-types-data
3087 (package
3088 (name "ruby-mime-types-data")
3089 (version "3.2015.1120")
3090 (source
3091 (origin
3092 (method url-fetch)
3093 (uri (rubygems-uri "mime-types-data" version))
3094 (sha256
3095 (base32
3096 "04fzvy02w8d0rrsg8avncn7h58pvwdxj82aps54srb3sam2dkhic"))))
3097 (build-system ruby-build-system)
3098 (native-inputs
3099 `(("ruby-hoe" ,ruby-hoe)))
3100 (synopsis "Registry for information about MIME media type definitions")
3101 (description
3102 "@code{mime-types-data} provides a registry for information about
3103Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
3104be used with the Ruby mime-types library or other software to determine
3105defined filename extensions for MIME types, or to use filename extensions to
3106look up the likely MIME type definitions.")
3107 (home-page "https://github.com/mime-types/mime-types-data/")
3108 (license license:expat)))
3109
d39b606c
BW
3110(define-public ruby-mime-types
3111 (package
3112 (name "ruby-mime-types")
3113 (version "3.0")
3114 (source
3115 (origin
3116 (method url-fetch)
3117 (uri (rubygems-uri "mime-types" version))
3118 (sha256
3119 (base32
3120 "1snjc38a9vqvy8j41xld1i1byq9prbl955pbjw7dxqcfcirqlzra"))))
3121 (build-system ruby-build-system)
3122 (propagated-inputs
3123 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
3124 (native-inputs
3125 `(("ruby-hoe" ,ruby-hoe)
3126 ("ruby-fivemat" ,ruby-fivemat)
3127 ("ruby-minitest-focus" ,ruby-minitest-focus)
3128 ("ruby-minitest-rg" ,ruby-minitest-rg)
3129 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)))
3130 (synopsis "Library and registry for MIME content type definitions")
3131 (description "The mime-types library provides a library and registry for
3132information about Multipurpose Internet Mail Extensions (MIME) content type
3133definitions. It can be used to determine defined filename extensions for MIME
3134types, or to use filename extensions to look up the likely MIME type
3135definitions.")
3136 (home-page "https://github.com/mime-types/ruby-mime-types")
3137 (license license:expat)))
3138
eb5e0bd9
BW
3139(define-public ruby-fivemat
3140 (package
3141 (name "ruby-fivemat")
3142 (version "1.3.2")
3143 (source
3144 (origin
3145 (method url-fetch)
3146 (uri (rubygems-uri "fivemat" version))
3147 (sha256
3148 (base32
3149 "1gvw6g4yc96l2pcyvigahyfsjxpdjx21iiwzvf965zippchdh6gk"))))
3150 (build-system ruby-build-system)
3151 (arguments
3152 `(#:tests? #f)) ; no tests
3153 (synopsis "Each test file given its own line of dots")
3154 (description
3155 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
3156its own line of dots during testing. It aims to provide test output that is
3157neither too verbose nor too minimal.")
3158 (home-page "https://github.com/tpope/fivemat")
3159 (license license:expat)))
3160
4fea500b
BW
3161(define-public ruby-sqlite3
3162 (package
3163 (name "ruby-sqlite3")
3164 (version "1.3.11")
3165 (source
3166 (origin
3167 (method url-fetch)
3168 (uri (rubygems-uri "sqlite3" version))
3169 (sha256
3170 (base32
3171 "19r06wglnm6479ffj9dl0fa4p5j2wi6dj7k6k3d0rbx7036cv3ny"))))
3172 (build-system ruby-build-system)
3173 (arguments
3174 `(#:phases
3175 (modify-phases %standard-phases
3176 (add-before 'check 'add-gemtest-file
3177 ;; This file exists in the repository but is not distributed.
3178 (lambda _ (zero? (system* "touch" ".gemtest")))))))
3179 (inputs
3180 `(("sqlite" ,sqlite)))
3181 (native-inputs
3182 `(("ruby-hoe" ,ruby-hoe)
3183 ("ruby-rake-compiler" ,ruby-rake-compiler)
3184 ("ruby-mini-portile" ,ruby-mini-portile)))
3185 (synopsis "Interface with SQLite3 databases")
3186 (description
3187 "This module allows Ruby programs to interface with the SQLite3 database
3188engine.")
3189 (home-page
3190 "https://github.com/sparklemotion/sqlite3-ruby")
3191 (license license:bsd-3)))
3192
4dfa39cc
BW
3193(define-public ruby-shoulda-context
3194 (package
3195 (name "ruby-shoulda-context")
3196 (version "1.2.1")
3197 (source
3198 (origin
3199 (method url-fetch)
3200 (uri (rubygems-uri "shoulda-context" version))
3201 (sha256
3202 (base32
3203 "06wv2ika5zrbxn0m3qxwk0zkbspxids3zmlq3xxays5qmvl1qb55"))))
3204 (build-system ruby-build-system)
3205 (arguments
3206 `(#:phases
3207 (modify-phases %standard-phases
3208 (replace 'check
3209 (lambda _
3210 ;; Do not run tests to avoid circular dependence with rails.
3211 ;; Instead just import the library to test.
3212 (zero? (system* "ruby" "-Ilib" "-r" "shoulda-context")))))))
3213 (synopsis "Test::Unit context framework extracted from Shoulda")
3214 (description
3215 "@code{shoulda-context} is the context framework extracted from Shoulda.
3216Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
3217context, setup, and should blocks combine to produce natural test method
3218names.")
3219 (home-page "https://github.com/thoughtbot/shoulda-context")
3220 (license license:expat)))
3221
7d3a1a2d
BW
3222(define-public ruby-ansi
3223 (package
3224 (name "ruby-ansi")
3225 (version "1.5.0")
3226 (source
3227 (origin
3228 (method url-fetch)
3229 ;; Fetch from GitHub as the gem does not contain testing code.
3230 (uri (string-append "https://github.com/rubyworks/ansi/archive/"
3231 version ".tar.gz"))
3232 (file-name (string-append name "-" version ".tar.gz"))
3233 (sha256
3234 (base32
3235 "1zdip30hivyipi8hndhb457bhiz033awd00bgrsk5axjrwp6zhly"))))
3236 (build-system ruby-build-system)
3237 (arguments
3238 `(#:phases
3239 (modify-phases %standard-phases
3240 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
3241 ;; cycle ansi, qed, ansi. Instead simply test that the library can
3242 ;; be require'd.
3243 (replace 'check
3244 (lambda _
3245 (zero? (system* "ruby" "-Ilib" "-r" "ansi")))))))
3246 (synopsis "ANSI escape code related libraries")
3247 (description
3248 "This package is a collection of ANSI escape code related libraries
3249enabling ANSI colorization and stylization of console output. Included in the
3250library are the @code{Code} module, which defines ANSI codes as constants and
3251methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
3252@code{ProgressBar}, and a @code{String} subclass. The library also includes a
3253@code{Terminal} module which provides information about the current output
3254device.")
3255 (home-page "http://rubyworks.github.io/ansi")
3256 (license license:bsd-2)))
7c033c46
BW
3257
3258(define-public ruby-systemu
3259 (package
3260 (name "ruby-systemu")
3261 (version "2.6.5")
3262 (source
3263 (origin
3264 (method url-fetch)
3265 (uri (rubygems-uri "systemu" version))
3266 (sha256
3267 (base32
3268 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
3269 (build-system ruby-build-system)
3270 (arguments
3271 `(#:phases
3272 (modify-phases %standard-phases
3273 (add-before 'check 'set-version
3274 (lambda _
3275 (setenv "VERSION" ,version)
3276 #t)))))
3277 (synopsis "Capture of stdout/stderr and handling of child processes")
3278 (description
3279 "Systemu can be used on any platform to return status, stdout, and stderr
3280of any command. Unlike other methods like @code{open3} and @code{popen4}
3281there is no danger of full pipes or threading issues hanging your process or
3282subprocess.")
3283 (home-page "https://github.com/ahoward/systemu")
3284 (license license:ruby)))
3d84a99e
BW
3285
3286(define-public ruby-bio-commandeer
3287 (package
3288 (name "ruby-bio-commandeer")
3289 (version "0.1.2")
3290 (source
3291 (origin
3292 (method url-fetch)
3293 (uri (rubygems-uri "bio-commandeer" version))
3294 (sha256
3295 (base32
3296 "061jxa6km92qfwzl058r2gp8gfcsbyr7m643nw1pxvmjdswaf6ly"))))
3297 (build-system ruby-build-system)
3298 (arguments
3299 `(#:phases
3300 (modify-phases %standard-phases
3301 (replace 'check
3302 ;; Run test without calling 'rake' so that jeweler is
3303 ;; not required as an input.
3304 (lambda _
3305 (zero? (system* "rspec" "spec/bio-commandeer_spec.rb")))))))
3306 (propagated-inputs
3307 `(("ruby-bio-logger" ,ruby-bio-logger)
3308 ("ruby-systemu" ,ruby-systemu)))
3309 (native-inputs
3310 `(("bundler" ,bundler)
3311 ("ruby-rspec" ,ruby-rspec)))
3312 (synopsis "Simplified running of shell commands from within Ruby")
3313 (description
3314 "Bio-commandeer provides an opinionated method of running shell commands
3315from within Ruby. The advantage of bio-commandeer over other methods of
3316running external commands is that when something goes wrong, messages printed
3317to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
3318detail to ease debugging.")
3319 (home-page "http://github.com/wwood/bioruby-commandeer")
3320 (license license:expat)))
7c8131c7
BW
3321
3322(define-public ruby-rubytest
3323 (package
3324 (name "ruby-rubytest")
3325 (version "0.8.1")
3326 (source
3327 (origin
3328 (method url-fetch)
3329 (uri (rubygems-uri "rubytest" version))
3330 (sha256
3331 (base32
3332 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
3333 (build-system ruby-build-system)
3334 (arguments
3335 ;; Disable regular testing to break the cycle rubytest, qed, brass,
3336 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
3337 ;; simply test that the library can be require'd.
3338 `(#:phases
3339 (modify-phases %standard-phases
3340 (replace 'check
3341 (lambda _
3342 (zero? (system* "ruby" "-Ilib" "-r" "rubytest")))))))
3343 (propagated-inputs
3344 `(("ruby-ansi" ,ruby-ansi)))
3345 (synopsis "Universal test harness for Ruby")
3346 (description
3347 "Rubytest is a testing meta-framework for Ruby. It can handle any
3348compliant test framework and can run tests from multiple frameworks in a
3349single pass.")
3350 (home-page "http://rubyworks.github.io/rubytest")
3351 (license license:bsd-2)))
90fcedf2
BW
3352
3353(define-public ruby-brass
3354 (package
3355 (name "ruby-brass")
3356 (version "1.2.1")
3357 (source
3358 (origin
3359 (method url-fetch)
3360 (uri (rubygems-uri "brass" version))
3361 (sha256
3362 (base32
3363 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
3364 (build-system ruby-build-system)
3365 (arguments
3366 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
3367 ;; Instead simply test that the library can be require'd.
3368 `(#:phases
3369 (modify-phases %standard-phases
3370 (replace 'check
3371 (lambda _
3372 (zero? (system* "ruby" "-Ilib" "-r" "brass")))))))
3373 (synopsis "Basic foundational assertions framework")
3374 (description
3375 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
3376foundational assertions framework for other assertion and test frameworks to
3377make use of.")
3378 (home-page "http://rubyworks.github.io/brass")
3379 (license license:bsd-2)))
120fc74b
BW
3380
3381(define-public ruby-qed
3382 (package
3383 (name "ruby-qed")
3384 (version "2.9.2")
3385 (source
3386 (origin
3387 (method url-fetch)
3388 (uri (rubygems-uri "qed" version))
3389 (sha256
3390 (base32
3391 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
3392 (build-system ruby-build-system)
3393 (arguments
3394 ;; Disable testing to break the cycle qed, ansi, qed, among others.
3395 ;; Instead simply test that the executable runs using --copyright.
3396 `(#:phases
3397 (modify-phases %standard-phases
3398 (replace 'check
3399 (lambda _
3400 (zero? (system* "ruby" "-Ilib" "bin/qed" "--copyright")))))))
3401 (propagated-inputs
3402 `(("ruby-ansi" ,ruby-ansi)
3403 ("ruby-brass" ,ruby-brass)))
3404 (synopsis "Test framework utilizing literate programming techniques")
3405 (description
3406 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
3407@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
3408Development} (BDD) utilizing Literate Programming techniques. QED sits
3409somewhere between lower-level testing tools like @code{Test::Unit} and
3410requirement specifications systems like Cucumber.")
3411 (home-page "http://rubyworks.github.io/qed")
3412 (license license:bsd-2)))
9273ee8f
BW
3413
3414(define-public ruby-ae
3415 (package
3416 (name "ruby-ae")
3417 (version "1.8.2")
3418 (source
3419 (origin
3420 (method url-fetch)
3421 ;; Fetch from github so tests are included.
3422 (uri (string-append
3423 "https://github.com/rubyworks/ae/archive/"
3424 version ".tar.gz"))
3425 (file-name (string-append name "-" version ".tar.gz"))
3426 (sha256
3427 (base32
3428 "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl"))))
3429 (build-system ruby-build-system)
3430 (arguments
3431 `(#:phases
3432 (modify-phases %standard-phases
3433 (replace 'check
3434 (lambda _ (zero? (system* "qed")))))))
3435 (propagated-inputs
3436 `(("ruby-ansi" ,ruby-ansi)))
3437 (native-inputs
3438 `(("ruby-qed" ,ruby-qed)))
3439 (synopsis "Assertions library")
3440 (description
3441 "Assertive Expressive (AE) is an assertions library specifically designed
3442for reuse by other test frameworks.")
3443 (home-page "http://rubyworks.github.io/ae")
3444 (license license:bsd-2)))
78bb471f
BW
3445
3446(define-public ruby-lemon
3447 (package
3448 (name "ruby-lemon")
3449 (version "0.9.1")
3450 (source
3451 (origin
3452 (method url-fetch)
3453 (uri (rubygems-uri "lemon" version))
3454 (sha256
3455 (base32
3456 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
3457 (build-system ruby-build-system)
3458 (arguments
3459 `(#:phases
3460 (modify-phases %standard-phases
3461 (replace 'check (lambda _ (zero? (system* "qed")))))))
3462 (propagated-inputs
3463 `(("ruby-ae" ,ruby-ae)
3464 ("ruby-ansi" ,ruby-ansi)
3465 ("ruby-rubytest" ,ruby-rubytest)))
3466 (native-inputs
3467 `(("ruby-qed" ,ruby-qed)))
3468 (synopsis "Test framework correlating code structure and test unit")
3469 (description
3470 "Lemon is a unit testing framework that enforces highly formal
3471case-to-class and unit-to-method test construction. This enforcement can help
3472focus concern on individual units of behavior.")
3473 (home-page "http://rubyworks.github.io/lemon")
3474 (license license:bsd-2)))
0832804e
BW
3475
3476(define-public ruby-rubytest-cli
3477 (package
3478 (name "ruby-rubytest-cli")
3479 (version "0.2.0")
3480 (source
3481 (origin
3482 (method url-fetch)
3483 (uri (rubygems-uri "rubytest-cli" version))
3484 (sha256
3485 (base32
3486 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
3487 (build-system ruby-build-system)
3488 (arguments
3489 `(#:tests? #f)) ; no tests
3490 (propagated-inputs
3491 `(("ruby-ansi" ,ruby-ansi)
3492 ("ruby-rubytest" ,ruby-rubytest)))
3493 (synopsis "Command-line interface for rubytest")
3494 (description
3495 "Rubytest CLI is a command-line interface for running tests for
3496Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
3497 (home-page "http://rubyworks.github.io/rubytest-cli")
3498 (license license:bsd-2)))
72ccbfe3
BW
3499
3500(define-public ruby-hashery
3501 (package
3502 (name "ruby-hashery")
3503 (version "2.1.1")
3504 (source
3505 (origin
3506 (method url-fetch)
3507 (uri (rubygems-uri "hashery" version))
3508 (sha256
3509 (base32
3510 "0xawbljsjarl9l7700bka672ixwznzwih4s9i38p1y9mp8hyx54g"))))
3511 (build-system ruby-build-system)
3512 (arguments
3513 `(#:phases
3514 (modify-phases %standard-phases
3515 (replace 'check
3516 (lambda _
3517 (and (zero? (system* "qed"))
3518 (zero? (system* "rubytest" "-Ilib" "-Itest" "test/"))))))))
3519 (native-inputs
3520 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
3521 ("ruby-qed" ,ruby-qed)
3522 ("ruby-lemon" ,ruby-lemon)))
3523 (synopsis "Hash-like classes with extra features")
3524 (description
3525 "The Hashery is a tight collection of @code{Hash}-like classes.
3526Included are the auto-sorting @code{Dictionary} class, the efficient
3527@code{LRUHash}, the flexible @code{OpenHash} and the convenient
3528@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
3529defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
3530standard @code{Hash} making it possible to subclass and augment to fit any
3531specific use case.")
3532 (home-page "http://rubyworks.github.io/hashery")
3533 (license license:bsd-2)))
1f1d71e0
BW
3534
3535(define-public ruby-rc4
3536 (package
3537 (name "ruby-rc4")
3538 (version "0.1.5")
3539 (source
3540 (origin
3541 (method url-fetch)
3542 (uri (rubygems-uri "ruby-rc4" version))
3543 (sha256
3544 (base32
3545 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
3546 (build-system ruby-build-system)
3547 (arguments
3548 `(#:phases
3549 (modify-phases %standard-phases
3550 (replace 'check
3551 (lambda _
3552 (zero? (system* "rspec" "spec/rc4_spec.rb")))))))
3553 (native-inputs
3554 `(("ruby-rspec" ,ruby-rspec-2)))
3555 (synopsis "Implementation of the RC4 algorithm")
3556 (description
3557 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
3558 (home-page "https://github.com/caiges/Ruby-RC4")
3559 (license license:expat)))
f3e085a8
BW
3560
3561(define-public ruby-afm
3562 (package
3563 (name "ruby-afm")
3564 (version "0.2.2")
3565 (source
3566 (origin
3567 (method url-fetch)
3568 (uri (rubygems-uri "afm" version))
3569 (sha256
3570 (base32
3571 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
3572 (build-system ruby-build-system)
3573 (native-inputs
3574 `(("bundler" ,bundler)))
3575 (synopsis "Read Adobe Font Metrics (afm) files")
3576 (description
3577 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
3578files and use the data therein.")
3579 (home-page "http://github.com/halfbyte/afm")
3580 (license license:expat)))
acb6be42
BW
3581
3582(define-public ruby-ascii85
3583 (package
3584 (name "ruby-ascii85")
3585 (version "1.0.2")
3586 (source
3587 (origin
3588 (method url-fetch)
3589 (uri (rubygems-uri "Ascii85" version))
3590 (sha256
3591 (base32
3592 "0j95sbxd18kc8rhcnvl1w37kflqpax1r12h1x47gh4xxn3mz4m7q"))))
3593 (build-system ruby-build-system)
3594 (native-inputs
3595 `(("bundler" ,bundler)))
3596 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
3597 (description
3598 "This library provides methods to encode and decode Ascii85
3599binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
3600@dfn{Portable Document Format} (PDF) file formats.")
3601 (home-page "https://github.com/datawraith/ascii85gem")
3602 (license license:expat)))
edf8caae
BW
3603
3604(define-public ruby-ttfunk
3605 (package
3606 (name "ruby-ttfunk")
3607 (version "1.4.0")
3608 (source
3609 (origin
3610 (method url-fetch)
3611 ;; fetch from github as the gem does not contain testing code
3612 (uri (string-append
3613 "https://github.com/prawnpdf/ttfunk/archive/"
3614 version ".tar.gz"))
3615 (file-name (string-append name "-" version ".tar.gz"))
3616 (sha256
3617 (base32
3618 "1izq84pnm9niyvkzp8k0vl232q9zj41hwmp9na9fzycfh1pbnsl6"))))
3619 (build-system ruby-build-system)
3620 (arguments
3621 `(#:test-target "spec"
3622 #:phases
3623 (modify-phases %standard-phases
3624 (add-before 'check 'remove-rubocop
3625 (lambda _
3626 ;; remove rubocop as a dependency as not needed for testing
3627 (substitute* "ttfunk.gemspec"
3628 (("spec.add_development_dependency\\('rubocop'.*") ""))
3629 (substitute* "Rakefile"
3630 (("require 'rubocop/rake_task'") "")
3631 (("Rubocop::RakeTask.new") ""))
3632 #t)))))
3633 (native-inputs
3634 `(("ruby-rspec" ,ruby-rspec)
3635 ("bundler" ,bundler)))
3636 (synopsis "Font metrics parser for the Prawn PDF generator")
3637 (description
3638 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
3639part of the Prawn PDF generator.")
3640 (home-page "https://github.com/prawnpdf/ttfunk")
3641 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
3642 ;; for details."
3643 (license (list license:gpl2 license:gpl3 license:ruby))))