gnu: Add ruby-minitest-4.
[jackhill/guix/guix.git] / gnu / packages / ruby.scm
... / ...
CommitLineData
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
91a 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,
170maintain, and release projects and includes a dynamic plug-in system allowing
171for easy extensibility. Hoe ships with plug-ins for all the usual project
172tasks including rdoc generation, testing, packaging, deployment, and
173announcement.")
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
192packaging 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
211solution for Ruby programs. It features translation and localization,
212interpolation of values to translations, pluralization, customizable
213transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
214translation data, custom key/scope separator, custom exception handlers, and
215an 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
257groups.")
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
287sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
288It includes utilities to create a simple HTML diff output format and a
289standard 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
311outcomes 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
345support 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
380Ruby. This meta-package includes the RSpec test runner, along with the
381expectations 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
416specified 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
441easy to create structured data. Currently the following builder objects are
442supported: 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
469Java 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
489in Ruby for use in Ruby programs. It features a hierarchical logging
490system of any number of levels, custom level names, logger
491inheritance, multiple output destinations per log event, execution
492tracing, custom formatting, thread safteyness, XML and YAML
493configuration, 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
516tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
517script.")
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
537given Ruby source code Saikuro will generate a report listing the cyclomatic
538complexity of each method found. In addition, Saikuro counts the number of
539lines per method and can generate a listing of the number of tokens on each
540line 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
568you to generate XML reports of your test runs. The resulting files can be
569read by a continuous integration system that understands Ant's JUnit report
570format.")
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
589implementation that preserves the order of items and features some array-like
590extensions.")
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
618the 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
637Ruby.")
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
658interfaces.")
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
677replacement for Logger or ActiveSupport::BufferedLogger. It provides support
678for automatically rolling log files even with multiple processes writing the
679same 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
701and 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
731operations 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
761the 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
785libraries 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
805standard 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
856Ruby 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
882dynamic libraries, binding functions within them, and calling those functions
883from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby
884and 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
904the 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
930powerful configuration library and automatic merging of coverage across test
931suites.")
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
950User 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
967features.")
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
986generation of complex SQL queries and adapts to various relational database
987implementations.")
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
1006interface 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
1026using 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
1045assertion 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
1070localization.")
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,
1088Soundex, 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
1116file (po-file) used is the same as that used by GNU gettext, allowing you to
1117use 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
1165on xUnit principles. These were originally designed by Kent Beck, creator of
1166extreme programming software development methodology, for Smalltalk's SUnit.
1167It 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
1201objects.")
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
1227methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
1228as 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
1265knowing 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
1303definitions 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
1335conversion 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
1391allows 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
1411client protocol. It allows you to write programs that invoke and interact
1412with 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
1431facilities 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
1470easier 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
1491functionality, 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
1510run 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
1545and 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
1564options 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
1593net/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
1612generation 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
1632that 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.
1652It provides a standard way to compile against specific versions of libraries
1653to 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
1687both 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.
1708Additionally, it can extract source code from Proc and Lambda objects or just
1709extract 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
1729for 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
1753Ruby. It features syntax highlighting, a plugin architecture, runtime
1754invocation, 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
1774utilities 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
1794aware 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
1827kernel 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
1848current 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
1880documentation 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-json
1915 (package
1916 (name "ruby-json")
1917 (version "1.8.3")
1918 (source
1919 (origin
1920 (method url-fetch)
1921 (uri (rubygems-uri "json" version))
1922 (sha256
1923 (base32
1924 "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
1925 (build-system ruby-build-system)
1926 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
1927 (synopsis "JSON library for Ruby")
1928 (description "This Ruby library provides a JSON implementation written as
1929a native C extension.")
1930 (home-page "http://json-jruby.rubyforge.org/")
1931 (license (list license:ruby license:gpl2)))) ; GPL2 only
1932
1933(define-public ruby-listen
1934 (package
1935 (name "ruby-listen")
1936 (version "3.0.3")
1937 (source
1938 (origin
1939 (method url-fetch)
1940 (uri (rubygems-uri "listen" version))
1941 (sha256
1942 (base32
1943 "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
1944 (build-system ruby-build-system)
1945 (arguments '(#:tests? #f)) ; no tests
1946 (propagated-inputs
1947 ;; FIXME: omitting "ruby-rb-fsevent" which is only for MacOS.
1948 `(("ruby-rb-inotify" ,ruby-rb-inotify)))
1949 (synopsis "Listen to file modifications")
1950 (description "The Listen gem listens to file modifications and notifies
1951you about the changes.")
1952 (home-page "https://github.com/guard/listen")
1953 (license license:expat)))
1954
1955(define-public ruby-activesupport
1956 (package
1957 (name "ruby-activesupport")
1958 (version "4.2.4")
1959 (source
1960 (origin
1961 (method url-fetch)
1962 (uri (rubygems-uri "activesupport" version))
1963 (sha256
1964 (base32
1965 "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
1966 (build-system ruby-build-system)
1967 (arguments
1968 '(#:tests? #f)) ; no tests
1969 (propagated-inputs
1970 `(("ruby-i18n" ,ruby-i18n)
1971 ("ruby-json" ,ruby-json)
1972 ("ruby-minitest" ,ruby-minitest)
1973 ("ruby-thread-safe" ,ruby-thread-safe)
1974 ("ruby-tzinfo" ,ruby-tzinfo)))
1975 (synopsis "Ruby on Rails utility library")
1976 (description "ActiveSupport is a toolkit of support libraries and Ruby
1977core extensions extracted from the Rails framework. It includes support for
1978multibyte strings, internationalization, time zones, and testing.")
1979 (home-page "http://www.rubyonrails.org")
1980 (license license:expat)))
1981
1982(define-public ruby-ox
1983 (package
1984 (name "ruby-ox")
1985 (version "2.2.1")
1986 (source
1987 (origin
1988 (method url-fetch)
1989 (uri (rubygems-uri "ox" version))
1990 (sha256
1991 (base32
1992 "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
1993 (build-system ruby-build-system)
1994 (arguments
1995 '(#:tests? #f)) ; no tests
1996 (synopsis "Optimized XML library for Ruby")
1997 (description
1998 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
1999written as a native C extension. It was designed to be an alternative to
2000Nokogiri and other Ruby XML parsers for generic XML parsing and as an
2001alternative to Marshal for Object serialization. ")
2002 (home-page "http://www.ohler.com/ox")
2003 (license license:expat)))
2004
2005(define-public ruby-pg
2006 (package
2007 (name "ruby-pg")
2008 (version "0.18.2")
2009 (source
2010 (origin
2011 (method url-fetch)
2012 (uri (rubygems-uri "pg" version))
2013 (sha256
2014 (base32
2015 "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
2016 (build-system ruby-build-system)
2017 (arguments
2018 '(#:test-target "spec"))
2019 (native-inputs
2020 `(("ruby-rake-compiler" ,ruby-rake-compiler)
2021 ("ruby-hoe" ,ruby-hoe)
2022 ("ruby-rspec" ,ruby-rspec)))
2023 (inputs
2024 `(("postgresql" ,postgresql)))
2025 (synopsis "Ruby interface to PostgreSQL")
2026 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
2027with PostgreSQL 8.4 and later.")
2028 (home-page "https://bitbucket.org/ged/ruby-pg")
2029 (license license:ruby)))
2030
2031(define-public ruby-byebug
2032 (package
2033 (name "ruby-byebug")
2034 (version "6.0.2")
2035 (source
2036 (origin
2037 (method url-fetch)
2038 (uri (rubygems-uri "byebug" version))
2039 (sha256
2040 (base32
2041 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
2042 (build-system ruby-build-system)
2043 (arguments
2044 '(#:tests? #f)) ; no tests
2045 (synopsis "Debugger for Ruby 2")
2046 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
2047TracePoint C API for execution control and the Debug Inspector C API for call
2048stack navigation. The core component provides support that front-ends can
2049build on. It provides breakpoint handling and bindings for stack frames among
2050other things and it comes with a command line interface.")
2051 (home-page "http://github.com/deivid-rodriguez/byebug")
2052 (license license:bsd-2)))
2053
2054(define-public ruby-rack
2055 (package
2056 (name "ruby-rack")
2057 (version "1.6.4")
2058 (source
2059 (origin
2060 (method url-fetch)
2061 (uri (rubygems-uri "rack" version))
2062 (sha256
2063 (base32
2064 "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
2065 (build-system ruby-build-system)
2066 (arguments
2067 '(#:phases
2068 (modify-phases %standard-phases
2069 (add-before 'check 'fix-tests
2070 (lambda _
2071 ;; A few of the tests use the length of a file on disk for
2072 ;; Content-Length and Content-Range headers. However, this file
2073 ;; has a shebang in it which an earlier phase patches, growing
2074 ;; the file size from 193 to 239 bytes when the store prefix is
2075 ;; "/gnu/store".
2076 (let ((size-diff (- (string-length (which "ruby"))
2077 (string-length "/usr/bin/env ruby"))))
2078 (substitute* '("test/spec_file.rb")
2079 (("193")
2080 (number->string (+ 193 size-diff)))
2081 (("bytes(.)22-33" all delimiter)
2082 (string-append "bytes"
2083 delimiter
2084 (number->string (+ 22 size-diff))
2085 "-"
2086 (number->string (+ 33 size-diff))))))
2087 #t)))))
2088 (native-inputs
2089 `(("ruby-bacon" ,ruby-bacon)))
2090 (synopsis "Unified web application interface for Ruby")
2091 (description "Rack provides a minimal, modular and adaptable interface for
2092developing web applications in Ruby. By wrapping HTTP requests and responses,
2093it unifies the API for web servers, web frameworks, and software in between
2094into a single method call.")
2095 (home-page "http://rack.github.io/")
2096 (license license:expat)))
2097
2098(define-public ruby-docile
2099 (package
2100 (name "ruby-docile")
2101 (version "1.1.5")
2102 (source
2103 (origin
2104 (method url-fetch)
2105 (uri (rubygems-uri "docile" version))
2106 (sha256
2107 (base32
2108 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
2109 (build-system ruby-build-system)
2110 (arguments
2111 '(#:tests? #f)) ; needs github-markup, among others
2112 (synopsis "Ruby EDSL helper library")
2113 (description "Docile is a Ruby library that provides an interface for
2114creating embedded domain specific languages (EDSLs) that manipulate existing
2115Ruby classes.")
2116 (home-page "https://ms-ati.github.io/docile/")
2117 (license license:expat)))
2118
2119(define-public ruby-gherkin3
2120 (package
2121 (name "ruby-gherkin3")
2122 (version "3.1.1")
2123 (source
2124 (origin
2125 (method url-fetch)
2126 (uri (rubygems-uri "gherkin3" version))
2127 (sha256
2128 (base32
2129 "0xsyxhqa1gwcxzvsdy4didaiq5vam8ma3fbwbw2w60via4k6r1z9"))))
2130 (build-system ruby-build-system)
2131 (native-inputs
2132 `(("bundler" ,bundler)))
2133 (arguments
2134 '(#:tests? #f)) ; needs simplecov, among others
2135 (synopsis "Gherkin parser for Ruby")
2136 (description "Gherkin 3 is a parser and compiler for the Gherkin language.
2137It is intended to replace Gherkin 2 and be used by all Cucumber
2138implementations to parse '.feature' files.")
2139 (home-page "https://github.com/cucumber/gherkin3")
2140 (license license:expat)))
2141
2142(define-public ruby-cucumber-core
2143 (package
2144 (name "ruby-cucumber-core")
2145 (version "1.3.0")
2146 (source
2147 (origin
2148 (method url-fetch)
2149 (uri (rubygems-uri "cucumber-core" version))
2150 (sha256
2151 (base32
2152 "12mrzf0s96izpq0k10lahlkgwc4fjs0zfs344rh8r8h3w3jyppr8"))))
2153 (build-system ruby-build-system)
2154 (propagated-inputs
2155 `(("ruby-gherkin3" ,ruby-gherkin3)))
2156 (native-inputs
2157 `(("bundler" ,bundler)))
2158 (arguments
2159 '(#:tests? #f)) ; needs simplecov, among others
2160 (synopsis "Core library for the Cucumber BDD app")
2161 (description "Cucumber is a tool for running automated tests
2162written in plain language. Because they're written in plain language,
2163they can be read by anyone on your team. Because they can be read by
2164anyone, you can use them to help improve communication, collaboration
2165and trust on your team.")
2166 (home-page "https://cucumber.io/")
2167 (license license:expat)))
2168
2169(define-public ruby-bio-logger
2170 (package
2171 (name "ruby-bio-logger")
2172 (version "1.0.1")
2173 (source
2174 (origin
2175 (method url-fetch)
2176 (uri (rubygems-uri "bio-logger" version))
2177 (sha256
2178 (base32
2179 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
2180 (build-system ruby-build-system)
2181 (arguments
2182 `(#:tests? #f)) ; rake errors, missing shoulda
2183 (propagated-inputs
2184 `(("ruby-log4r" ,ruby-log4r)))
2185 (synopsis "Log4r wrapper for Ruby")
2186 (description "Bio-logger is a wrapper around Log4r adding extra logging
2187features such as filtering and fine grained logging.")
2188 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
2189 (license license:expat)))
2190
2191(define-public ruby-yard
2192 (package
2193 (name "ruby-yard")
2194 (version "0.8.7.6")
2195 (source
2196 (origin
2197 (method url-fetch)
2198 (uri (rubygems-uri "yard" version))
2199 (sha256
2200 (base32
2201 "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x"))))
2202 (build-system ruby-build-system)
2203 (arguments
2204 `(#:test-target "specs"
2205 #:phases
2206 (modify-phases %standard-phases
2207 (add-before 'check 'set-HOME
2208 ;; $HOME needs to be set to somewhere writeable for tests to run
2209 (lambda _ (setenv "HOME" "/tmp") #t)))))
2210 (native-inputs
2211 `(("ruby-rspec" ,ruby-rspec-2)
2212 ("ruby-rack" ,ruby-rack)))
2213 (synopsis "Documentation generation tool for Ruby")
2214 (description
2215 "YARD is a documentation generation tool for the Ruby programming
2216language. It enables the user to generate consistent, usable documentation
2217that can be exported to a number of formats very easily, and also supports
2218extending for custom Ruby constructs such as custom class level definitions.")
2219 (home-page "http://yardoc.org")
2220 (license license:expat)))
2221
2222(define-public ruby-eventmachine
2223 (package
2224 (name "ruby-eventmachine")
2225 (version "1.0.8")
2226 (source
2227 (origin
2228 (method url-fetch)
2229 (uri (rubygems-uri "eventmachine" version))
2230 (sha256
2231 (base32
2232 "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp"))))
2233 (build-system ruby-build-system)
2234 (arguments
2235 '(#:tests? #f)) ; test suite tries to connect to google.com
2236 (native-inputs
2237 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
2238 (synopsis "Single-threaded network event framework for Ruby")
2239 (description
2240 "EventMachine implements a single-threaded engine for arbitrary network
2241communications. EventMachine wraps all interactions with sockets, allowing
2242programs to concentrate on the implementation of network protocols. It can be
2243used to create both network servers and clients.")
2244 (home-page "http://rubyeventmachine.com")
2245 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT