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