projects/guix·blob version-0.9.0 · refs

1651 lines · 57.4 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015 Pjotr Prins <[email protected]>
3;;; Copyright © 2014, 2015 Ludovic Courtès <[email protected]>
4;;; Copyright © 2014, 2015 Mark H Weaver <[email protected]>
5;;; Copyright © 2014, 2015 David Thompson <[email protected]>
6;;; Copyright © 2015 Ricardo Wurmus <[email protected]>
7;;; Copyright © 2015 Ben Woodcroft <[email protected]>
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-orderedhash
522 (package
523 (name "ruby-orderedhash")
524 (version "0.0.6")
525 (source (origin
526 (method url-fetch)
527 (uri (rubygems-uri "orderedhash" version))
528 (sha256
529 (base32
530 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
531 (build-system ruby-build-system)
532 (arguments
533 '(#:tests? #f)) ; no test suite
534 (synopsis "Ruby library providing an order-preserving hash")
535 (description "Orderedhash is a Ruby library providing a hash
536implementation that preserves the order of items and features some array-like
537extensions.")
538 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
539 (license license:public-domain)))
540
541(define-public ruby-libxml
542 (package
543 (name "ruby-libxml")
544 (version "2.8.0")
545 (source
546 (origin
547 (method url-fetch)
548 (uri (rubygems-uri "libxml-ruby" version))
549 (sha256
550 (base32
551 "1dhjqp4r9vkdp00l6h1cj8qfndzxlhlxk6b9g0w4v55gz857ilhb"))))
552 (build-system ruby-build-system)
553 (inputs
554 `(("zlib" ,zlib)
555 ("libxml2" ,libxml2)))
556 (arguments
557 '(#:tests? #f ; test suite hangs for unknown reason
558 #:gem-flags
559 (list "--"
560 (string-append "--with-xml2-include="
561 (assoc-ref %build-inputs "libxml2")
562 "/include/libxml2" ))))
563 (synopsis "Ruby bindings for GNOME Libxml2")
564 (description "The Libxml-Ruby project provides Ruby language bindings for
565the GNOME Libxml2 XML toolkit.")
566 (home-page "http://xml4r.github.com/libxml-ruby")
567 (license license:expat)))
568
569(define-public ruby-xml-simple
570 (package
571 (name "ruby-xml-simple")
572 (version "1.1.5")
573 (source (origin
574 (method url-fetch)
575 (uri (rubygems-uri "xml-simple" version))
576 (sha256
577 (base32
578 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
579 (build-system ruby-build-system)
580 (arguments
581 '(#:tests? #f)) ; no test suite
582 (synopsis "Simple Ruby library for XML processing")
583 (description "This library provides a simple API for XML processing in
584Ruby.")
585 (home-page "https://github.com/maik/xml-simple")
586 (license license:ruby)))
587
588(define-public ruby-thor
589 (package
590 (name "ruby-thor")
591 (version "0.19.1")
592 (source (origin
593 (method url-fetch)
594 (uri (rubygems-uri "thor" version))
595 (sha256
596 (base32
597 "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z"))))
598 (build-system ruby-build-system)
599 (arguments
600 '(#:tests? #f)) ; no test suite
601 (native-inputs
602 `(("bundler" ,bundler)))
603 (synopsis "Ruby toolkit for building command-line interfaces")
604 (description "Thor is a toolkit for building powerful command-line
605interfaces.")
606 (home-page "http://whatisthor.com/")
607 (license license:expat)))
608
609(define-public ruby-lumberjack
610 (package
611 (name "ruby-lumberjack")
612 (version "1.0.9")
613 (source (origin
614 (method url-fetch)
615 (uri (rubygems-uri "lumberjack" version))
616 (sha256
617 (base32
618 "162frm2bwy58pj8ccsdqa4a6i0csrhb9h5l3inhkl1ivgfc8814l"))))
619 (build-system ruby-build-system)
620 (native-inputs
621 `(("ruby-rspec" ,ruby-rspec)))
622 (synopsis "Logging utility library for Ruby")
623 (description "Lumberjack is a simple logging utility that can be a drop in
624replacement for Logger or ActiveSupport::BufferedLogger. It provides support
625for automatically rolling log files even with multiple processes writing the
626same log file.")
627 (home-page "http://github.com/bdurand/lumberjack")
628 (license license:expat)))
629
630(define-public ruby-nenv
631 (package
632 (name "ruby-nenv")
633 (version "0.2.0")
634 (source (origin
635 (method url-fetch)
636 (uri (rubygems-uri "nenv" version))
637 (sha256
638 (base32
639 "152wxwri0afwgnxdf93gi6wjl9rr5z7vwp8ln0gpa3rddbfc27s6"))))
640 (build-system ruby-build-system)
641 (arguments
642 `(#:tests? #f)) ; no tests included
643 (native-inputs
644 `(("ruby-rspec" ,ruby-rspec)
645 ("bundler" ,bundler)))
646 (synopsis "Ruby interface for modifying the environment")
647 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
648and inspect the environment.")
649 (home-page "https://github.com/e2/nenv")
650 (license license:expat)))
651
652(define-public ruby-permutation
653 (package
654 (name "ruby-permutation")
655 (version "0.1.8")
656 (source (origin
657 (method url-fetch)
658 (uri (rubygems-uri "permutation" version))
659 (sha256
660 (base32
661 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
662 (build-system ruby-build-system)
663 (arguments
664 `(#:phases
665 (modify-phases %standard-phases
666 (add-after 'unpack 'fix-rakefile
667 (lambda _
668 (substitute* "Rakefile"
669 (("require 'rake/gempackagetask'")
670 "require 'rubygems/package_task'")
671 (("include Config") ""))
672 #t))
673 (replace 'check
674 (lambda _
675 (zero? (system* "ruby" "-Ilib" "test/test.rb")))))))
676 (synopsis "Library to perform operations with sequence permutations")
677 (description "This package provides a Ruby library to perform different
678operations with permutations of sequences, such as strings and arrays.")
679 (home-page "http://flori.github.io/permutation")
680 (license license:gpl2))) ; GPL 2 only
681
682(define-public ruby-shellany
683 (package
684 (name "ruby-shellany")
685 (version "0.0.1")
686 (source (origin
687 (method url-fetch)
688 (uri (rubygems-uri "shellany" version))
689 (sha256
690 (base32
691 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
692 (build-system ruby-build-system)
693 (arguments
694 `(#:test-target "default"
695 #:phases
696 (modify-phases %standard-phases
697 (add-after 'unpack 'fix-version-test
698 (lambda _
699 (substitute* "spec/shellany_spec.rb"
700 (("^RSpec") "require \"shellany\"\nRSpec"))
701 #t)))))
702 (native-inputs
703 `(("ruby-rspec" ,ruby-rspec)
704 ("ruby-nenv" ,ruby-nenv)
705 ("bundler" ,bundler)))
706 (synopsis "Capture command output")
707 (description "Shellany is a Ruby library providing functions to capture
708the output produced by running shell commands.")
709 (home-page "https://rubygems.org/gems/shellany")
710 (license license:expat)))
711
712(define-public ruby-notiffany
713 (package
714 (name "ruby-notiffany")
715 (version "0.0.7")
716 (source (origin
717 (method url-fetch)
718 (uri (rubygems-uri "notiffany" version))
719 (sha256
720 (base32
721 "1v5x1w59qq85r6dpv3y9ga34dfd7hka1qxyiykaw7gm0i6kggbhi"))))
722 (build-system ruby-build-system)
723 ;; Tests are not included in the gem.
724 (arguments `(#:tests? #f))
725 (propagated-inputs
726 `(("ruby-shellany" ,ruby-shellany)
727 ("ruby-nenv" ,ruby-nenv)))
728 (native-inputs
729 `(("bundler" ,bundler)))
730 (synopsis "Wrapper libray for notification libraries")
731 (description "Notiffany is a Ruby wrapper libray for notification
732libraries such as Libnotify.")
733 (home-page "https://github.com/guard/notiffany")
734 (license license:expat)))
735
736(define-public ruby-formatador
737 (package
738 (name "ruby-formatador")
739 (version "0.2.5")
740 (source (origin
741 (method url-fetch)
742 (uri (rubygems-uri "formatador" version))
743 (sha256
744 (base32
745 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
746 (build-system ruby-build-system)
747 ;; Circular dependency: Tests require ruby-shindo, which requires
748 ;; ruby-formatador at runtime.
749 (arguments `(#:tests? #f))
750 (synopsis "Ruby library to format text on stdout")
751 (description "Formatador is a Ruby library to format text printed to the
752standard output stream.")
753 (home-page "http://github.com/geemus/formatador")
754 (license license:expat)))
755
756(define-public ruby-shindo
757 (package
758 (name "ruby-shindo")
759 (version "0.3.8")
760 (source (origin
761 (method url-fetch)
762 (uri (rubygems-uri "shindo" version))
763 (sha256
764 (base32
765 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
766 (build-system ruby-build-system)
767 (arguments
768 `(#:test-target "shindo_tests"
769 #:phases
770 (modify-phases %standard-phases
771 (add-after 'unpack 'fix-tests
772 (lambda _
773 (substitute* "Rakefile"
774 (("system \"shindo") "system \"./bin/shindo")
775 ;; This test doesn't work, so we disable it.
776 (("fail \"The build_error test should fail") "#"))
777 #t)))))
778 (propagated-inputs
779 `(("ruby-formatador" ,ruby-formatador)))
780 (synopsis "Simple depth first Ruby testing")
781 (description "Shindo is a simple depth first testing library for Ruby.")
782 (home-page "https://github.com/geemus/shindo")
783 (license license:expat)))
784
785(define-public ruby-rubygems-tasks
786 (package
787 (name "ruby-rubygems-tasks")
788 (version "0.2.4")
789 (source (origin
790 (method url-fetch)
791 (uri (rubygems-uri "rubygems-tasks" version))
792 (sha256
793 (base32
794 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
795 (build-system ruby-build-system)
796 ;; Tests need Internet access.
797 (arguments `(#:tests? #f))
798 (native-inputs
799 `(("ruby-rspec" ,ruby-rspec)
800 ("ruby-yard" ,ruby-yard)))
801 (synopsis "Rake tasks for managing and releasing Ruby Gems")
802 (description "Rubygems-task provides Rake tasks for managing and releasing
803Ruby Gems.")
804 (home-page "https://github.com/postmodern/rubygems-tasks")
805 (license license:expat)))
806
807(define-public ruby-ffi
808 (package
809 (name "ruby-ffi")
810 (version "1.9.10")
811 (source (origin
812 (method url-fetch)
813 (uri (rubygems-uri "ffi" version))
814 (sha256
815 (base32
816 "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj"))))
817 (build-system ruby-build-system)
818 ;; FIXME: Before running tests the build system attempts to build libffi
819 ;; from sources.
820 (arguments `(#:tests? #f))
821 (native-inputs
822 `(("ruby-rake-compiler" ,ruby-rake-compiler)
823 ("ruby-rspec" ,ruby-rspec)
824 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
825 (inputs
826 `(("libffi" ,libffi)))
827 (synopsis "Ruby foreign function interface library")
828 (description "Ruby-FFI is a Ruby extension for programmatically loading
829dynamic libraries, binding functions within them, and calling those functions
830from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby
831and JRuby.")
832 (home-page "http://wiki.github.com/ffi/ffi")
833 (license license:bsd-3)))
834
835(define-public ruby-simplecov-html
836 (package
837 (name "ruby-simplecov-html")
838 (version "0.10.0")
839 (source (origin
840 (method url-fetch)
841 (uri (rubygems-uri "simplecov-html" version))
842 (sha256
843 (base32
844 "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj"))))
845 (build-system ruby-build-system)
846 (native-inputs
847 `(("bundler" ,bundler)))
848 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
849 (description "This package provides the default HTML formatter for
850the SimpleCov code coverage tool for Ruby version 1.9 and above.")
851 (home-page "https://github.com/colszowka/simplecov-html")
852 (license license:expat)))
853
854(define-public ruby-useragent
855 (package
856 (name "ruby-useragent")
857 (version "0.13.3")
858 (source (origin
859 (method url-fetch)
860 (uri (rubygems-uri "useragent" version))
861 (sha256
862 (base32
863 "0kz7yyz7528bv4a2kfymvkcm8whqcddhmgaw1ksw1d90n30hhkpc"))))
864 (build-system ruby-build-system)
865 (arguments
866 '(#:tests? #f)) ; no test suite
867 (synopsis "HTTP user agent parser for Ruby")
868 (description "UserAgent is a Ruby library that parses and compares HTTP
869User Agents.")
870 (home-page "https://github.com/gshutler/useragent")
871 (license license:expat)))
872
873(define-public ruby-bacon
874 (package
875 (name "ruby-bacon")
876 (version "1.2.0")
877 (source (origin
878 (method url-fetch)
879 (uri (rubygems-uri "bacon" version))
880 (sha256
881 (base32
882 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
883 (build-system ruby-build-system)
884 (synopsis "Small RSpec clone")
885 (description "Bacon is a small RSpec clone providing all essential
886features.")
887 (home-page "https://github.com/chneukirchen/bacon")
888 (license license:expat)))
889
890(define-public ruby-arel
891 (package
892 (name "ruby-arel")
893 (version "6.0.0")
894 (source (origin
895 (method url-fetch)
896 (uri (rubygems-uri "arel" version))
897 (sha256
898 (base32
899 "18wnfnzr2i5p3fygsddjbi1cimws6823nbk8drxidmnj8jz7h0ar"))))
900 (build-system ruby-build-system)
901 (arguments
902 '(#:tests? #f)) ; no test suite
903 (synopsis "SQL AST manager for Ruby")
904 (description "Arel is a SQL AST manager for Ruby. It simplifies the
905generation of complex SQL queries and adapts to various relational database
906implementations.")
907 (home-page "https://github.com/rails/arel")
908 (license license:expat)))
909
910(define-public ruby-connection-pool
911 (package
912 (name "ruby-connection-pool")
913 (version "2.2.0")
914 (source (origin
915 (method url-fetch)
916 (uri (rubygems-uri "connection_pool" version))
917 (sha256
918 (base32
919 "1b2bb3k39ni5mzcnqlv9y4yjkbin20s7dkwzp0jw2jf1rmzcgrmy"))))
920 (build-system ruby-build-system)
921 (native-inputs
922 `(("bundler" ,bundler)))
923 (synopsis "Generic connection pool for Ruby")
924 (description "Connection_pool provides a generic connection pooling
925interface for Ruby programs.")
926 (home-page "https://github.com/mperham/connection_pool")
927 (license license:expat)))
928
929(define-public ruby-net-http-persistent
930 (package
931 (name "ruby-net-http-persistent")
932 (version "2.9.4")
933 (source (origin
934 (method url-fetch)
935 (uri (rubygems-uri "net-http-persistent" version))
936 (sha256
937 (base32
938 "1y9fhaax0d9kkslyiqi1zys6cvpaqx9a0y0cywp24rpygwh4s9r4"))))
939 (build-system ruby-build-system)
940 (native-inputs
941 `(("ruby-connection-pool" ,ruby-connection-pool)
942 ("ruby-hoe" ,ruby-hoe)))
943 (synopsis "Persistent HTTP connection manager")
944 (description "Net::HTTP::Persistent manages persistent HTTP connections
945using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
946 (home-page "https://github.com/drbrain/net-http-persistent")
947 (license license:expat)))
948
949(define-public ruby-minitest
950 (package
951 (name "ruby-minitest")
952 (version "5.7.0")
953 (source (origin
954 (method url-fetch)
955 (uri (rubygems-uri "minitest" version))
956 (sha256
957 (base32
958 "0rxqfakp629mp3vwda7zpgb57lcns5znkskikbfd0kriwv8i1vq8"))))
959 (build-system ruby-build-system)
960 (native-inputs
961 `(("ruby-hoe" ,ruby-hoe)))
962 (synopsis "Small test suite library for Ruby")
963 (description "Minitest provides a complete suite of Ruby testing
964facilities supporting TDD, BDD, mocking, and benchmarking.")
965 (home-page "https://github.com/seattlerb/minitest")
966 (license license:expat)))
967
968(define-public ruby-minitest-sprint
969 (package
970 (name "ruby-minitest-sprint")
971 (version "1.1.0")
972 (source (origin
973 (method url-fetch)
974 (uri (rubygems-uri "minitest-sprint" version))
975 (sha256
976 (base32
977 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
978 (build-system ruby-build-system)
979 (native-inputs
980 `(("ruby-hoe" ,ruby-hoe)
981 ("ruby-minitest" ,ruby-minitest)))
982 (synopsis "Fast test suite runner for minitest")
983 (description "Minitest-sprint is a test runner for minitest that makes it
984easier to re-run individual failing tests.")
985 (home-page "https://github.com/seattlerb/minitest-sprint")
986 (license license:expat)))
987
988(define-public ruby-minitest-bacon
989 (package
990 (name "ruby-minitest-bacon")
991 (version "1.0.2")
992 (source (origin
993 (method url-fetch)
994 (uri (rubygems-uri "minitest-bacon" version))
995 (sha256
996 (base32
997 "0cm7r68422743i3b6fm4rrm0r6cnnjmglq5gcmmgl1f0rk5hnf6r"))))
998 (build-system ruby-build-system)
999 (native-inputs
1000 `(("ruby-hoe" ,ruby-hoe)))
1001 (inputs
1002 `(("ruby-minitest" ,ruby-minitest)))
1003 (synopsis "Bacon compatibility library for minitest")
1004 (description "Minitest-bacon extends minitest with bacon-like
1005functionality, making it easier to migrate test suites from bacon to minitest.")
1006 (home-page "https://github.com/seattlerb/minitest-bacon")
1007 (license license:expat)))
1008
1009(define-public ruby-daemons
1010 (package
1011 (name "ruby-daemons")
1012 (version "1.2.2")
1013 (source (origin
1014 (method url-fetch)
1015 (uri (rubygems-uri "daemons" version))
1016 (sha256
1017 (base32
1018 "121c7vkimg3baxga69xvdkwxiq8wkmxqvdbyqi5i82vhih5d3cn3"))))
1019 (build-system ruby-build-system)
1020 (arguments
1021 `(#:tests? #f)) ; no test suite
1022 (synopsis "Daemonize Ruby programs")
1023 (description "Daemons provides a way to wrap existing Ruby scripts to be
1024run as a daemon and to be controlled by simple start/stop/restart commands.")
1025 (home-page "https://github.com/thuehlinger/daemons")
1026 (license license:expat)))
1027
1028(define-public ruby-git
1029 (package
1030 (name "ruby-git")
1031 (version "1.2.9.1")
1032 (source (origin
1033 (method url-fetch)
1034 (uri (rubygems-uri "git" version))
1035 (sha256
1036 (base32
1037 "1sqfj8lmhl7c5zamcckkpik4izfph2zkv6krw0i8mzj5pdws5acs"))))
1038 (build-system ruby-build-system)
1039 (arguments
1040 `(#:tests? #f ; no tests
1041 #:phases (modify-phases %standard-phases
1042 (add-after 'install 'patch-git-binary
1043 (lambda* (#:key inputs outputs #:allow-other-keys)
1044 ;; Make the default git binary an absolute path to the
1045 ;; store.
1046 (let ((git (string-append (assoc-ref inputs "git")
1047 "/bin/git"))
1048 (config (string-append (getenv "GEM_HOME")
1049 "/gems/git-" ,version
1050 "/lib/git/config.rb")))
1051 (substitute* (list config)
1052 (("'git'")
1053 (string-append "'" git "'")))
1054 #t))))))
1055 (inputs
1056 `(("git" ,git)))
1057 (synopsis "Ruby wrappers for Git")
1058 (description "Ruby/Git is a Ruby library that can be used to create, read
1059and manipulate Git repositories by wrapping system calls to the git binary.")
1060 (home-page "https://github.com/schacon/ruby-git")
1061 (license license:expat)))
1062
1063(define-public ruby-slop
1064 (package
1065 (name "ruby-slop")
1066 (version "4.1.0")
1067 (source (origin
1068 (method url-fetch)
1069 (uri (rubygems-uri "slop" version))
1070 (sha256
1071 (base32
1072 "0dj0ps6v1mqd02k84mgwd7hp578n2bzl7c51h3grdhxfl3jkfsj5"))))
1073 (build-system ruby-build-system)
1074 (native-inputs
1075 `(("ruby-minitest" ,ruby-minitest)))
1076 (synopsis "Ruby command line option parser")
1077 (description "Slop provides a Ruby domain specific language for gathering
1078options and parsing command line flags.")
1079 (home-page "https://github.com/leejarvis/slop")
1080 (license license:expat)))
1081
1082(define-public ruby-slop-3
1083 (package (inherit ruby-slop)
1084 (version "3.6.0")
1085 (source (origin
1086 (method url-fetch)
1087 (uri (rubygems-uri "slop" version))
1088 (sha256
1089 (base32
1090 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
1091
1092(define-public ruby-multipart-post
1093 (package
1094 (name "ruby-multipart-post")
1095 (version "2.0.0")
1096 (source (origin
1097 (method url-fetch)
1098 (uri (rubygems-uri "multipart-post" version))
1099 (sha256
1100 (base32
1101 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
1102 (build-system ruby-build-system)
1103 (native-inputs
1104 `(("bundler" ,bundler)))
1105 (synopsis "Multipart POST library for Ruby")
1106 (description "Multipart-Post Adds multipart POST capability to Ruby's
1107net/http library.")
1108 (home-page "https://github.com/nicksieger/multipart-post")
1109 (license license:expat)))
1110
1111(define-public ruby-arel
1112 (package
1113 (name "ruby-arel")
1114 (version "6.0.3")
1115 (source (origin
1116 (method url-fetch)
1117 (uri (rubygems-uri "arel" version))
1118 (sha256
1119 (base32
1120 "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk"))))
1121 (build-system ruby-build-system)
1122 (arguments '(#:tests? #f)) ; no tests
1123 (home-page "https://github.com/rails/arel")
1124 (synopsis "SQL AST manager for Ruby")
1125 (description "Arel is a SQL AST manager for Ruby. It simplifies the
1126generation of complex SQL queries and is compatible with various RDBMSes.")
1127 (license license:expat)))
1128
1129(define-public ruby-minitar
1130 (package
1131 (name "ruby-minitar")
1132 (version "0.5.4")
1133 (source
1134 (origin
1135 (method url-fetch)
1136 (uri (rubygems-uri "minitar" version))
1137 (sha256
1138 (base32
1139 "1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka"))))
1140 (build-system ruby-build-system)
1141 (arguments
1142 '(#:tests? #f)) ; missing a gemspec
1143 (synopsis "Ruby library and utility for handling tar archives")
1144 (description
1145 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
1146that provides the ability to deal with POSIX tar archive files.")
1147 (home-page "http://www.github.com/atoulme/minitar")
1148 (license (list license:gpl2+ license:ruby))))
1149
1150(define-public ruby-mini-portile
1151 (package
1152 (name "ruby-mini-portile")
1153 (version "0.6.2")
1154 (source
1155 (origin
1156 (method url-fetch)
1157 (uri (rubygems-uri "mini_portile" version))
1158 (sha256
1159 (base32
1160 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
1161 (build-system ruby-build-system)
1162 (arguments
1163 '(#:tests? #f)) ; tests require network access
1164 (synopsis "Ports system for Ruby developers")
1165 (description "Mini-portile is a port/recipe system for Ruby developers.
1166It provides a standard way to compile against specific versions of libraries
1167to reproduce user environments.")
1168 (home-page "http://github.com/flavorjones/mini_portile")
1169 (license license:expat)))
1170
1171(define-public ruby-nokogiri
1172 (package
1173 (name "ruby-nokogiri")
1174 (version "1.6.6.2")
1175 (source (origin
1176 (method url-fetch)
1177 (uri (rubygems-uri "nokogiri" version))
1178 (sha256
1179 (base32
1180 "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30"))))
1181 (build-system ruby-build-system)
1182 (arguments
1183 ;; Tests fail because Nokogiri can only test with an installed extension,
1184 ;; and also because many test framework dependencies are missing.
1185 '(#:tests? #f
1186 #:gem-flags (list "--" "--use-system-libraries"
1187 (string-append "--with-xml2-include="
1188 (assoc-ref %build-inputs "libxml2")
1189 "/include/libxml2" ))))
1190 (native-inputs
1191 `(("ruby-hoe" ,ruby-hoe)
1192 ("ruby-rake-compiler", ruby-rake-compiler)))
1193 (inputs
1194 `(("zlib" ,zlib)
1195 ("libxml2" ,libxml2)
1196 ("libxslt" ,libxslt)))
1197 (propagated-inputs
1198 `(("ruby-mini-portile" ,ruby-mini-portile)))
1199 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
1200 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
1201both CSS3 selector and XPath 1.0 support.")
1202 (home-page "http://www.nokogiri.org/")
1203 (license license:expat)))
1204
1205(define-public ruby-method-source
1206 (package
1207 (name "ruby-method-source")
1208 (version "0.8.2")
1209 (source
1210 (origin
1211 (method url-fetch)
1212 (uri (rubygems-uri "method_source" version))
1213 (sha256
1214 (base32
1215 "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
1216 (build-system ruby-build-system)
1217 (native-inputs
1218 `(("ruby-bacon" ,ruby-bacon)
1219 ("git" ,git)))
1220 (synopsis "Retrieve the source code for Ruby methods")
1221 (description "Method_source retrieves the source code for Ruby methods.
1222Additionally, it can extract source code from Proc and Lambda objects or just
1223extract comments.")
1224 (home-page "https://github.com/banister/method_source")
1225 (license license:expat)))
1226
1227(define-public ruby-coderay
1228 (package
1229 (name "ruby-coderay")
1230 (version "1.1.0")
1231 (source
1232 (origin
1233 (method url-fetch)
1234 (uri (rubygems-uri "coderay" version))
1235 (sha256
1236 (base32
1237 "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
1238 (build-system ruby-build-system)
1239 (arguments
1240 '(#:tests? #f)) ; missing test files
1241 (synopsis "Ruby syntax highlighting library")
1242 (description "Coderay is a Ruby library that provides syntax highlighting
1243for select languages.")
1244 (home-page "http://coderay.rubychan.de")
1245 (license license:expat)))
1246
1247(define-public ruby-pry
1248 (package
1249 (name "ruby-pry")
1250 (version "0.10.1")
1251 (source
1252 (origin
1253 (method url-fetch)
1254 (uri (rubygems-uri "pry" version))
1255 (sha256
1256 (base32
1257 "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
1258 (build-system ruby-build-system)
1259 (arguments
1260 '(#:tests? #f)) ; no tests
1261 (propagated-inputs
1262 `(("ruby-coderay" ,ruby-coderay)
1263 ("ruby-method-source" ,ruby-method-source)
1264 ("ruby-slop" ,ruby-slop-3)))
1265 (synopsis "Ruby REPL")
1266 (description "Pry is an IRB alternative and runtime developer console for
1267Ruby. It features syntax highlighting, a plugin architecture, runtime
1268invocation, and source and documentation browsing.")
1269 (home-page "http://pryrepl.org")
1270 (license license:expat)))
1271
1272(define-public ruby-thread-safe
1273 (package
1274 (name "ruby-thread-safe")
1275 (version "0.3.5")
1276 (source
1277 (origin
1278 (method url-fetch)
1279 (uri (rubygems-uri "thread_safe" version))
1280 (sha256
1281 (base32
1282 "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
1283 (build-system ruby-build-system)
1284 (arguments
1285 '(#:tests? #f)) ; needs simplecov, among others
1286 (synopsis "Thread-safe utilities for Ruby")
1287 (description "The thread_safe library provides thread-safe collections and
1288utilities for Ruby.")
1289 (home-page "https://github.com/ruby-concurrency/thread_safe")
1290 (license license:asl2.0)))
1291
1292(define-public ruby-tzinfo
1293 (package
1294 (name "ruby-tzinfo")
1295 (version "1.2.2")
1296 (source
1297 (origin
1298 (method url-fetch)
1299 (uri (rubygems-uri "tzinfo" version))
1300 (sha256
1301 (base32
1302 "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
1303 (build-system ruby-build-system)
1304 (propagated-inputs
1305 `(("ruby-thread-safe" ,ruby-thread-safe)))
1306 (synopsis "Time zone library for Ruby")
1307 (description "TZInfo is a Ruby library that provides daylight savings
1308aware transformations between times in different time zones.")
1309 (home-page "http://tzinfo.github.io")
1310 (license license:expat)))
1311
1312(define-public ruby-rb-inotify
1313 (package
1314 (name "ruby-rb-inotify")
1315 (version "0.9.5")
1316 (source
1317 (origin
1318 (method url-fetch)
1319 (uri (rubygems-uri "rb-inotify" version))
1320 (sha256
1321 (base32
1322 "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"))))
1323 (build-system ruby-build-system)
1324 (arguments
1325 '(#:tests? #f ; there are no tests
1326 #:phases
1327 (modify-phases %standard-phases
1328 ;; Building the gemspec with rake is not working here since it is
1329 ;; generated with Jeweler. It is also unnecessary because the
1330 ;; existing gemspec does not use any development tools to generate a
1331 ;; list of files.
1332 (replace 'build
1333 (lambda _
1334 (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
1335 (propagated-inputs
1336 `(("ruby-ffi" ,ruby-ffi)))
1337 (native-inputs
1338 `(("ruby-yard" ,ruby-yard)))
1339 (synopsis "Ruby wrapper for Linux's inotify")
1340 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
1341kernel subsystem for monitoring changes to files and directories.")
1342 (home-page "https://github.com/nex3/rb-inotify")
1343 (license license:expat)))
1344
1345(define-public ruby-json
1346 (package
1347 (name "ruby-json")
1348 (version "1.8.3")
1349 (source
1350 (origin
1351 (method url-fetch)
1352 (uri (rubygems-uri "json" version))
1353 (sha256
1354 (base32
1355 "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
1356 (build-system ruby-build-system)
1357 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
1358 (synopsis "JSON library for Ruby")
1359 (description "This Ruby library provides a JSON implementation written as
1360a native C extension.")
1361 (home-page "http://json-jruby.rubyforge.org/")
1362 (license (list license:ruby license:gpl2)))) ; GPL2 only
1363
1364(define-public ruby-listen
1365 (package
1366 (name "ruby-listen")
1367 (version "3.0.3")
1368 (source
1369 (origin
1370 (method url-fetch)
1371 (uri (rubygems-uri "listen" version))
1372 (sha256
1373 (base32
1374 "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
1375 (build-system ruby-build-system)
1376 (arguments '(#:tests? #f)) ; no tests
1377 (propagated-inputs
1378 ;; FIXME: omitting "ruby-rb-fsevent" which is only for MacOS.
1379 `(("ruby-rb-inotify" ,ruby-rb-inotify)))
1380 (synopsis "Listen to file modifications")
1381 (description "The Listen gem listens to file modifications and notifies
1382you about the changes.")
1383 (home-page "https://github.com/guard/listen")
1384 (license license:expat)))
1385
1386(define-public ruby-activesupport
1387 (package
1388 (name "ruby-activesupport")
1389 (version "4.2.4")
1390 (source
1391 (origin
1392 (method url-fetch)
1393 (uri (rubygems-uri "activesupport" version))
1394 (sha256
1395 (base32
1396 "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
1397 (build-system ruby-build-system)
1398 (arguments
1399 '(#:tests? #f)) ; no tests
1400 (propagated-inputs
1401 `(("ruby-i18n" ,ruby-i18n)
1402 ("ruby-json" ,ruby-json)
1403 ("ruby-minitest" ,ruby-minitest)
1404 ("ruby-thread-safe" ,ruby-thread-safe)
1405 ("ruby-tzinfo" ,ruby-tzinfo)))
1406 (synopsis "Ruby on Rails utility library")
1407 (description "ActiveSupport is a toolkit of support libraries and Ruby
1408core extensions extracted from the Rails framework. It includes support for
1409multibyte strings, internationalization, time zones, and testing.")
1410 (home-page "http://www.rubyonrails.org")
1411 (license license:expat)))
1412
1413(define-public ruby-ox
1414 (package
1415 (name "ruby-ox")
1416 (version "2.2.1")
1417 (source
1418 (origin
1419 (method url-fetch)
1420 (uri (rubygems-uri "ox" version))
1421 (sha256
1422 (base32
1423 "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
1424 (build-system ruby-build-system)
1425 (arguments
1426 '(#:tests? #f)) ; no tests
1427 (synopsis "Optimized XML library for Ruby")
1428 (description
1429 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
1430written as a native C extension. It was designed to be an alternative to
1431Nokogiri and other Ruby XML parsers for generic XML parsing and as an
1432alternative to Marshal for Object serialization. ")
1433 (home-page "http://www.ohler.com/ox")
1434 (license license:expat)))
1435
1436(define-public ruby-pg
1437 (package
1438 (name "ruby-pg")
1439 (version "0.18.2")
1440 (source
1441 (origin
1442 (method url-fetch)
1443 (uri (rubygems-uri "pg" version))
1444 (sha256
1445 (base32
1446 "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
1447 (build-system ruby-build-system)
1448 (arguments
1449 '(#:test-target "spec"))
1450 (native-inputs
1451 `(("ruby-rake-compiler" ,ruby-rake-compiler)
1452 ("ruby-hoe" ,ruby-hoe)
1453 ("ruby-rspec" ,ruby-rspec)))
1454 (inputs
1455 `(("postgresql" ,postgresql)))
1456 (synopsis "Ruby interface to PostgreSQL")
1457 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
1458with PostgreSQL 8.4 and later.")
1459 (home-page "https://bitbucket.org/ged/ruby-pg")
1460 (license license:ruby)))
1461
1462(define-public ruby-byebug
1463 (package
1464 (name "ruby-byebug")
1465 (version "6.0.2")
1466 (source
1467 (origin
1468 (method url-fetch)
1469 (uri (rubygems-uri "byebug" version))
1470 (sha256
1471 (base32
1472 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
1473 (build-system ruby-build-system)
1474 (arguments
1475 '(#:tests? #f)) ; no tests
1476 (synopsis "Debugger for Ruby 2")
1477 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
1478TracePoint C API for execution control and the Debug Inspector C API for call
1479stack navigation. The core component provides support that front-ends can
1480build on. It provides breakpoint handling and bindings for stack frames among
1481other things and it comes with a command line interface.")
1482 (home-page "http://github.com/deivid-rodriguez/byebug")
1483 (license license:bsd-2)))
1484
1485(define-public ruby-rack
1486 (package
1487 (name "ruby-rack")
1488 (version "1.6.4")
1489 (source
1490 (origin
1491 (method url-fetch)
1492 (uri (rubygems-uri "rack" version))
1493 (sha256
1494 (base32
1495 "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
1496 (build-system ruby-build-system)
1497 (arguments
1498 '(#:phases
1499 (modify-phases %standard-phases
1500 (add-before 'check 'fix-tests
1501 (lambda _
1502 ;; A few of the tests use the length of a file on disk for
1503 ;; Content-Length and Content-Range headers. However, this file
1504 ;; has a shebang in it which an earlier phase patches, growing
1505 ;; the file size from 193 to 239 bytes when the store prefix is
1506 ;; "/gnu/store".
1507 (let ((size-diff (- (string-length (which "ruby"))
1508 (string-length "/usr/bin/env ruby"))))
1509 (substitute* '("test/spec_file.rb")
1510 (("193")
1511 (number->string (+ 193 size-diff)))
1512 (("bytes(.)22-33" all delimiter)
1513 (string-append "bytes"
1514 delimiter
1515 (number->string (+ 22 size-diff))
1516 "-"
1517 (number->string (+ 33 size-diff))))))
1518 #t)))))
1519 (native-inputs
1520 `(("ruby-bacon" ,ruby-bacon)))
1521 (synopsis "Unified web application interface for Ruby")
1522 (description "Rack provides a minimal, modular and adaptable interface for
1523developing web applications in Ruby. By wrapping HTTP requests and responses,
1524it unifies the API for web servers, web frameworks, and software in between
1525into a single method call.")
1526 (home-page "http://rack.github.io/")
1527 (license license:expat)))
1528
1529(define-public ruby-docile
1530 (package
1531 (name "ruby-docile")
1532 (version "1.1.5")
1533 (source
1534 (origin
1535 (method url-fetch)
1536 (uri (rubygems-uri "docile" version))
1537 (sha256
1538 (base32
1539 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
1540 (build-system ruby-build-system)
1541 (arguments
1542 '(#:tests? #f)) ; needs github-markup, among others
1543 (synopsis "Ruby EDSL helper library")
1544 (description "Docile is a Ruby library that provides an interface for
1545creating embedded domain specific languages (EDSLs) that manipulate existing
1546Ruby classes.")
1547 (home-page "https://ms-ati.github.io/docile/")
1548 (license license:expat)))
1549
1550(define-public ruby-gherkin3
1551 (package
1552 (name "ruby-gherkin3")
1553 (version "3.1.1")
1554 (source
1555 (origin
1556 (method url-fetch)
1557 (uri (rubygems-uri "gherkin3" version))
1558 (sha256
1559 (base32
1560 "0xsyxhqa1gwcxzvsdy4didaiq5vam8ma3fbwbw2w60via4k6r1z9"))))
1561 (build-system ruby-build-system)
1562 (native-inputs
1563 `(("bundler" ,bundler)))
1564 (arguments
1565 '(#:tests? #f)) ; needs simplecov, among others
1566 (synopsis "Gherkin parser for Ruby")
1567 (description "Gherkin 3 is a parser and compiler for the Gherkin language.
1568It is intended to replace Gherkin 2 and be used by all Cucumber
1569implementations to parse '.feature' files.")
1570 (home-page "https://github.com/cucumber/gherkin3")
1571 (license license:expat)))
1572
1573(define-public ruby-cucumber-core
1574 (package
1575 (name "ruby-cucumber-core")
1576 (version "1.3.0")
1577 (source
1578 (origin
1579 (method url-fetch)
1580 (uri (rubygems-uri "cucumber-core" version))
1581 (sha256
1582 (base32
1583 "12mrzf0s96izpq0k10lahlkgwc4fjs0zfs344rh8r8h3w3jyppr8"))))
1584 (build-system ruby-build-system)
1585 (propagated-inputs
1586 `(("ruby-gherkin3" ,ruby-gherkin3)))
1587 (native-inputs
1588 `(("bundler" ,bundler)))
1589 (arguments
1590 '(#:tests? #f)) ; needs simplecov, among others
1591 (synopsis "Core library for the Cucumber BDD app")
1592 (description "Cucumber is a tool for running automated tests
1593written in plain language. Because they're written in plain language,
1594they can be read by anyone on your team. Because they can be read by
1595anyone, you can use them to help improve communication, collaboration
1596and trust on your team.")
1597 (home-page "https://cucumber.io/")
1598 (license license:expat)))
1599
1600(define-public ruby-bio-logger
1601 (package
1602 (name "ruby-bio-logger")
1603 (version "1.0.1")
1604 (source
1605 (origin
1606 (method url-fetch)
1607 (uri (rubygems-uri "bio-logger" version))
1608 (sha256
1609 (base32
1610 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
1611 (build-system ruby-build-system)
1612 (arguments
1613 `(#:tests? #f)) ; rake errors, missing shoulda
1614 (propagated-inputs
1615 `(("ruby-log4r" ,ruby-log4r)))
1616 (synopsis "Log4r wrapper for Ruby")
1617 (description "Bio-logger is a wrapper around Log4r adding extra logging
1618features such as filtering and fine grained logging.")
1619 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
1620 (license license:expat)))
1621
1622(define-public ruby-yard
1623 (package
1624 (name "ruby-yard")
1625 (version "0.8.7.6")
1626 (source
1627 (origin
1628 (method url-fetch)
1629 (uri (rubygems-uri "yard" version))
1630 (sha256
1631 (base32
1632 "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x"))))
1633 (build-system ruby-build-system)
1634 (arguments
1635 `(#:test-target "specs"
1636 #:phases
1637 (modify-phases %standard-phases
1638 (add-before 'check 'set-HOME
1639 ;; $HOME needs to be set to somewhere writeable for tests to run
1640 (lambda _ (setenv "HOME" "/tmp") #t)))))
1641 (native-inputs
1642 `(("ruby-rspec" ,ruby-rspec-2)
1643 ("ruby-rack" ,ruby-rack)))
1644 (synopsis "Documentation generation tool for Ruby")
1645 (description
1646 "YARD is a documentation generation tool for the Ruby programming
1647language. It enables the user to generate consistent, usable documentation
1648that can be exported to a number of formats very easily, and also supports
1649extending for custom Ruby constructs such as custom class level definitions.")
1650 (home-page "http://yardoc.org")
1651 (license license:expat)))