gnu: Add ruby-rspec-expectations-2.
[guix.git] / gnu / packages / ruby.scm
blob1093077d3b213a9c05168fa098132b628f45a69e
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
3 ;;; Copyright © 2014 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/>.
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 gdbm)
34   #:use-module (gnu packages tls)
35   #:use-module (gnu packages version-control)
36   #:use-module (guix packages)
37   #:use-module (guix download)
38   #:use-module (guix git-download)
39   #:use-module (guix utils)
40   #:use-module (guix build-system gnu)
41   #:use-module (gnu packages xml)
42   #:use-module (guix build-system ruby))
44 (define-public ruby
45   (package
46     (name "ruby")
47     (version "2.2.3")
48     (source
49      (origin
50        (method url-fetch)
51        (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
52                            (version-major+minor version)
53                            "/ruby-" version ".tar.xz"))
54        (sha256
55         (base32
56          "19x8gs67klgc3ag815jpin83jn2nv1akgjcgayd6v3h1xplr1v66"))))
57     (build-system gnu-build-system)
58     (arguments
59      `(#:test-target "test"
60        #:parallel-tests? #f
61        #:phases
62        (alist-cons-before
63         'configure 'replace-bin-sh
64         (lambda _
65           (substitute* '("Makefile.in"
66                          "ext/pty/pty.c"
67                          "io.c"
68                          "lib/mkmf.rb"
69                          "process.c"
70                          "test/rubygems/test_gem_ext_configure_builder.rb"
71                          "test/rdoc/test_rdoc_parser.rb"
72                          "test/ruby/test_rubyoptions.rb"
73                          "test/ruby/test_process.rb"
74                          "test/ruby/test_system.rb"
75                          "tool/rbinstall.rb")
76             (("/bin/sh") (which "sh"))))
77         %standard-phases)))
78     (inputs
79      `(("readline" ,readline)
80        ("openssl" ,openssl)
81        ("libffi" ,libffi)
82        ("gdbm" ,gdbm)
83        ("zlib" ,zlib)))
84     (native-search-paths
85      (list (search-path-specification
86             (variable "GEM_PATH")
87             (files (list (string-append "lib/ruby/gems/"
88                                         (version-major+minor version)
89                                         ".0"))))))
90     (synopsis "Programming language interpreter")
91     (description "Ruby is a dynamic object-oriented programming language with
92 a focus on simplicity and productivity.")
93     (home-page "https://ruby-lang.org")
94     (license license:ruby)))
96 (define-public ruby-2.1
97   (package (inherit ruby)
98     (version "2.1.6")
99     (source
100      (origin
101        (method url-fetch)
102        (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
103                            (version-major+minor version)
104                            "/ruby-" version ".tar.bz2"))
105        (sha256
106         (base32
107          "1sbcmbhadcxk0509svwxbm2vvgmpf3xjxr1397bgp9x46nz36lkv"))))
108     (arguments
109      `(#:test-target "test"
110        #:parallel-tests? #f
111        #:phases
112         (alist-cons-before
113          'configure 'replace-bin-sh
114          (lambda _
115            (substitute* '("Makefile.in"
116                           "ext/pty/pty.c"
117                           "io.c"
118                           "lib/mkmf.rb"
119                           "process.c")
120              (("/bin/sh") (which "sh"))))
121          %standard-phases)))
122     (native-search-paths
123      (list (search-path-specification
124             (variable "GEM_PATH")
125             (files (list (string-append "lib/ruby/gems/"
126                                         (version-major+minor version)
127                                         ".0"))))))))
129 (define-public ruby-1.8
130   (package (inherit ruby)
131     (version "1.8.7-p374")
132     (source
133      (origin
134        (method url-fetch)
135        (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
136                            (version-major+minor version)
137                            "/ruby-" version ".tar.bz2"))
138        (sha256
139         (base32
140          "1qq7khilwkayrhwmzlxk83scrmiqfi7lgsn4c63znyvz2c1lgqxl"))))
141     (native-search-paths '())
142     (arguments
143      `(#:test-target "test"
144        #:parallel-tests? #f
145        #:phases
146         (alist-cons-before
147          'configure 'replace-bin-sh
148          (lambda _
149            (substitute* '("Makefile.in"
150                           "ext/pty/pty.c"
151                           "io.c"
152                           "lib/mkmf.rb"
153                           "process.c")
154              (("/bin/sh") (which "sh"))))
155          %standard-phases)))))
157 (define-public ruby-hoe
158   (package
159     (name "ruby-hoe")
160     (version "3.13.1")
161     (source (origin
162               (method url-fetch)
163               (uri (rubygems-uri "hoe" version))
164               (sha256
165                (base32
166                 "1mac13krdrasn9819dd65xj27kklfy0xdbj3p6s2ij4vlcb46h8q"))) )
167     (build-system ruby-build-system)
168     (synopsis "Ruby project management helper")
169     (description
170      "Hoe is a rake/rubygems helper for project Rakefiles.  It helps manage,
171 maintain, and release projects and includes a dynamic plug-in system allowing
172 for easy extensibility.  Hoe ships with plug-ins for all the usual project
173 tasks including rdoc generation, testing, packaging, deployment, and
174 announcement.")
175     (home-page "http://www.zenspider.com/projects/hoe.html")
176     (license license:expat)))
178 (define-public ruby-rake-compiler
179   (package
180     (name "ruby-rake-compiler")
181     (version "0.9.5")
182     (source (origin
183               (method url-fetch)
184               (uri (rubygems-uri "rake-compiler" version))
185               (sha256
186                (base32
187                 "1k8im2vzj849xdgjk6wafspkiwwapqwm738majchb4dnhnsk64cx"))))
188     (build-system ruby-build-system)
189     (arguments
190      '(#:tests? #f)) ; needs cucumber
191     (synopsis "Building and packaging helper for Ruby native extensions")
192     (description "Rake-compiler provides a framework for building and
193 packaging native C and Java extensions in Ruby.")
194     (home-page "https://github.com/rake-compiler/rake-compiler")
195     (license license:expat)))
197 (define-public ruby-i18n
198   (package
199     (name "ruby-i18n")
200     (version "0.7.0")
201     (source (origin
202               (method url-fetch)
203               (uri (rubygems-uri "i18n" version))
204               (sha256
205                (base32
206                 "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758"))))
207     (build-system ruby-build-system)
208     (arguments
209      '(#:tests? #f)) ; no tests
210     (synopsis "Internationalization library for Ruby")
211     (description "Ruby i18n is an internationalization and localization
212 solution for Ruby programs.  It features translation and localization,
213 interpolation of values to translations, pluralization, customizable
214 transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
215 translation data, custom key/scope separator, custom exception handlers, and
216 an extensible architecture with a swappable backend.")
217     (home-page "http://github.com/svenfuchs/i18n")
218     (license license:expat)))
220 ;; RSpec is the dominant testing library for Ruby projects.  Even RSpec's
221 ;; dependencies use RSpec for their test suites!  To avoid these circular
222 ;; dependencies, we disable tests for all of the RSpec-related packages.
223 (define ruby-rspec-support
224   (package
225     (name "ruby-rspec-support")
226     (version "3.2.2")
227     (source (origin
228               (method url-fetch)
229               (uri (rubygems-uri "rspec-support" version))
230               (sha256
231                (base32
232                 "194zry5195ls2hni7r9824vqb5d3qfg4jb15fgj8glfy0rvw3zxl"))))
233     (build-system ruby-build-system)
234     (arguments
235      '(#:tests? #f)) ; avoid dependency cycles
236     (synopsis "RSpec support library")
237     (description "Support utilities for RSpec gems.")
238     (home-page "https://github.com/rspec/rspec-support")
239     (license license:expat)))
241 (define-public ruby-rspec-core
242   (package
243     (name "ruby-rspec-core")
244     (version "3.2.3")
245     (source (origin
246               (method url-fetch)
247               (uri (rubygems-uri "rspec-core" version))
248               (sha256
249                (base32
250                 "0k2471iw30gc2cvv67damrx666pmsvx8l0ahk3hm20dhfnmcmpvv"))))
251     (build-system ruby-build-system)
252     (arguments
253      '(#:tests? #f)) ; avoid dependency cycles
254     (propagated-inputs
255      `(("ruby-rspec-support" ,ruby-rspec-support)))
256     (synopsis "RSpec core library")
257     (description "Rspec-core provides the RSpec test runner and example
258 groups.")
259     (home-page "https://github.com/rspec/rspec-core")
260     (license license:expat)))
262 (define-public ruby-rspec-core-2
263   (package (inherit ruby-rspec-core)
264     (version "2.14.8")
265     (source (origin
266               (method url-fetch)
267               (uri (rubygems-uri "rspec-core" version))
268               (sha256
269                (base32
270                 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
271     (propagated-inputs `())))
273 (define-public ruby-diff-lcs
274   (package
275     (name "ruby-diff-lcs")
276     (version "1.2.5")
277     (source (origin
278               (method url-fetch)
279               (uri (rubygems-uri "diff-lcs" version))
280               (sha256
281                (base32
282                 "1vf9civd41bnqi6brr5d9jifdw73j9khc6fkhfl1f8r9cpkdvlx1"))))
283     (build-system ruby-build-system)
284     (arguments
285      '(#:tests? #f)) ; avoid dependency cycles
286     (synopsis "Compute the difference between two Enumerable sequences")
287     (description "Diff::LCS computes the difference between two Enumerable
288 sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
289 It includes utilities to create a simple HTML diff output format and a
290 standard diff-like tool.")
291     (home-page "https://github.com/halostatue/diff-lcs")
292     (license license:expat)))
294 (define-public ruby-rspec-expectations
295   (package
296     (name "ruby-rspec-expectations")
297     (version "3.2.1")
298     (source (origin
299               (method url-fetch)
300               (uri (rubygems-uri "rspec-expectations" version))
301               (sha256
302                (base32
303                 "01kmchabgpdcaqdsqg8r0g5gy385xhp1k1jsds3w264ypin17n14"))))
304     (build-system ruby-build-system)
305     (arguments
306      '(#:tests? #f)) ; avoid dependency cycles
307     (propagated-inputs
308      `(("ruby-rspec-support" ,ruby-rspec-support)
309        ("ruby-diff-lcs" ,ruby-diff-lcs)))
310     (synopsis "RSpec expectations library")
311     (description "Rspec-expectations provides a simple API to express expected
312 outcomes of a code example.")
313     (home-page "https://github.com/rspec/rspec-expectations")
314     (license license:expat)))
316 (define-public ruby-rspec-expectations-2
317   (package (inherit ruby-rspec-expectations)
318     (version "2.14.5")
319     (source (origin
320               (method url-fetch)
321               (uri (rubygems-uri "rspec-expectations" version))
322               (sha256
323                (base32
324                 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
325     (propagated-inputs
326      `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
328 (define-public ruby-rspec-mocks
329   (package
330     (name "ruby-rspec-mocks")
331     (version "3.2.1")
332     (source (origin
333               (method url-fetch)
334               (uri (rubygems-uri "rspec-mocks" version))
335               (sha256
336                (base32
337                 "09yig1lwgxl8fsns71z3xhv7wkg7zvagydh37pvaqpw92dz55jv2"))))
338     (build-system ruby-build-system)
339     (arguments
340      '(#:tests? #f)) ; avoid dependency cycles
341     (propagated-inputs
342      `(("ruby-rspec-support" ,ruby-rspec-support)
343        ("ruby-diff-lcs" ,ruby-diff-lcs)))
344     (synopsis "RSpec stubbing and mocking library")
345     (description "Rspec-mocks provides RSpec's \"test double\" framework, with
346 support for stubbing and mocking.")
347     (home-page "https://github.com/rspec/rspec-mocks")
348     (license license:expat)))
350 (define-public ruby-rspec
351   (package
352     (name "ruby-rspec")
353     (version "3.2.0")
354     (source (origin
355               (method url-fetch)
356               (uri (rubygems-uri "rspec" version))
357               (sha256
358                (base32
359                 "0lkz01j4yxcwb3g5w6r1l9khnyw3sxib4rrh4npd2pxh390fcc4f"))))
360     (build-system ruby-build-system)
361     (arguments
362      '(#:tests? #f)) ; avoid dependency cycles
363     (propagated-inputs
364      `(("ruby-rspec-core" ,ruby-rspec-core)
365        ("ruby-rspec-mocks" ,ruby-rspec-mocks)
366        ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
367     (synopsis "Behavior-driven development framework for Ruby")
368     (description "RSpec is a behavior-driven development (BDD) framework for
369 Ruby.  This meta-package includes the RSpec test runner, along with the
370 expectations and mocks frameworks.")
371     (home-page "http://rspec.info/")
372     (license license:expat)))
374 ;; Bundler is yet another source of circular dependencies, so we must disable
375 ;; its test suite as well.
376 (define-public bundler
377   (package
378     (name "bundler")
379     (version "1.10.6")
380     (source (origin
381               (method url-fetch)
382               (uri (rubygems-uri "bundler" version))
383               (sha256
384                (base32
385                 "1vlzfq0bkkj4jyq6av0y55mh5nj5n0f3mfbmmifwgkh44g8k6agv"))))
386     (build-system ruby-build-system)
387     (arguments
388      '(#:tests? #f)) ; avoid dependency cycles
389     (synopsis "Ruby gem bundler")
390     (description "Bundler automatically downloads and installs a list of gems
391 specified in a \"Gemfile\", as well as their dependencies.")
392     (home-page "http://bundler.io/")
393     (license license:expat)))
395 (define-public ruby-builder
396   (package
397     (name "ruby-builder")
398     (version "3.2.2")
399     (source (origin
400               (method url-fetch)
401               (uri (rubygems-uri "builder" version))
402               (sha256
403                (base32
404                 "14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2"))))
405     (build-system ruby-build-system)
406     (arguments
407      `(#:phases
408        (modify-phases %standard-phases
409          (add-after 'unpack 'do-not-use-rvm
410           (lambda _
411             (substitute* "rakelib/tags.rake"
412               (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
413             #t)))))
414     (synopsis "Ruby library to create structured data")
415     (description "Builder provides a number of builder objects that make it
416 easy to create structured data.  Currently the following builder objects are
417 supported: XML Markup and XML Events.")
418     (home-page "https://github.com/jimweirich/builder")
419     (license license:expat)))
421 (define-public ruby-rjb
422   (package
423     (name "ruby-rjb")
424     (version "1.5.3")
425     (source (origin
426               (method url-fetch)
427               (uri (rubygems-uri "rjb" version))
428               (sha256
429                (base32
430                 "0gzs92dagk981s4vrymnqg0vll783b9k564j0cdgp167nc5a2zg4"))))
431     (build-system ruby-build-system)
432     (arguments
433      `(#:tests? #f ; no rakefile
434        #:phases
435        (modify-phases %standard-phases
436          (add-before 'build 'set-java-home
437           (lambda* (#:key inputs #:allow-other-keys)
438             (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
439             #t)))))
440     (native-inputs
441      `(("jdk" ,icedtea7 "jdk")))
442     (synopsis "Ruby-to-Java bridge using the Java Native Interface")
443     (description "RJB is a bridge program that connects Ruby and Java via the
444 Java Native Interface.")
445     (home-page "http://www.artonx.org/collabo/backyard/?RubyJavaBridge")
446     (license license:lgpl2.1+)))
448 (define-public ruby-log4r
449   (package
450     (name "ruby-log4r")
451     (version "1.1.10")
452     (source
453       (origin
454         (method url-fetch)
455         (uri (rubygems-uri "log4r" version))
456         (sha256
457           (base32
458             "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
459     (build-system ruby-build-system)
460     (arguments
461      '(#:tests? #f)) ; no Rakefile in gem
462     (synopsis "Flexible logging library for Ruby")
463     (description "Comprehensive and flexible logging library written
464 in Ruby for use in Ruby programs.  It features a hierarchical logging
465 system of any number of levels, custom level names, logger
466 inheritance, multiple output destinations per log event, execution
467 tracing, custom formatting, thread safteyness, XML and YAML
468 configuration, and more.")
469      (home-page "http://log4r.rubyforge.org/")
470      (license license:bsd-3)))
472 (define-public ruby-atoulme-antwrap
473   (package
474     (name "ruby-atoulme-antwrap")
475     (version "0.7.5")
476     (source (origin
477               (method url-fetch)
478               (uri (rubygems-uri "atoulme-Antwrap" version))
479               (sha256
480                (base32
481                 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
482     (build-system ruby-build-system)
483     ;; Test data required for most of the tests are not included.
484     (arguments `(#:tests? #f))
485     (native-inputs
486      `(("ruby-hoe" ,ruby-hoe)))
487     (inputs
488      `(("ruby-rjb" ,ruby-rjb)))
489     (synopsis "Ruby wrapper for the Ant build tool")
490     (description "Antwrap is a Ruby module that wraps the Apache Ant build
491 tool.  Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
492 script.")
493     (home-page "http://rubyforge.org/projects/antwrap/")
494     (license license:expat)))
496 (define-public ruby-orderedhash
497   (package
498     (name "ruby-orderedhash")
499     (version "0.0.6")
500     (source (origin
501               (method url-fetch)
502               (uri (rubygems-uri "orderedhash" version))
503               (sha256
504                (base32
505                 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
506     (build-system ruby-build-system)
507     (arguments
508      '(#:tests? #f)) ; no test suite
509     (synopsis "Ruby library providing an order-preserving hash")
510     (description "Orderedhash is a Ruby library providing a hash
511 implementation that preserves the order of items and features some array-like
512 extensions.")
513     (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
514     (license license:public-domain)))
516 (define-public ruby-libxml
517   (package
518     (name "ruby-libxml")
519     (version "2.8.0")
520     (source
521      (origin
522        (method url-fetch)
523        (uri (rubygems-uri "libxml-ruby" version))
524        (sha256
525         (base32
526          "1dhjqp4r9vkdp00l6h1cj8qfndzxlhlxk6b9g0w4v55gz857ilhb"))))
527     (build-system ruby-build-system)
528     (inputs
529      `(("zlib" ,zlib)
530        ("libxml2" ,libxml2)))
531     (arguments
532      '(#:tests? #f ; test suite hangs for unknown reason
533        #:gem-flags
534        (list "--"
535              (string-append "--with-xml2-include="
536                             (assoc-ref %build-inputs "libxml2")
537                             "/include/libxml2" ))))
538     (synopsis "Ruby bindings for GNOME Libxml2")
539     (description "The Libxml-Ruby project provides Ruby language bindings for
540 the GNOME Libxml2 XML toolkit.")
541     (home-page "http://xml4r.github.com/libxml-ruby")
542     (license license:expat)))
544 (define-public ruby-xml-simple
545   (package
546     (name "ruby-xml-simple")
547     (version "1.1.5")
548     (source (origin
549               (method url-fetch)
550               (uri (rubygems-uri "xml-simple" version))
551               (sha256
552                (base32
553                 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
554     (build-system ruby-build-system)
555     (arguments
556      '(#:tests? #f)) ; no test suite
557     (synopsis "Simple Ruby library for XML processing")
558     (description "This library provides a simple API for XML processing in
559 Ruby.")
560     (home-page "https://github.com/maik/xml-simple")
561     (license license:ruby)))
563 (define-public ruby-thor
564   (package
565     (name "ruby-thor")
566     (version "0.19.1")
567     (source (origin
568               (method url-fetch)
569               (uri (rubygems-uri "thor" version))
570               (sha256
571                (base32
572                 "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z"))))
573     (build-system ruby-build-system)
574     (arguments
575      '(#:tests? #f)) ; no test suite
576     (native-inputs
577      `(("bundler" ,bundler)))
578     (synopsis "Ruby toolkit for building command-line interfaces")
579     (description "Thor is a toolkit for building powerful command-line
580 interfaces.")
581     (home-page "http://whatisthor.com/")
582     (license license:expat)))
584 (define-public ruby-lumberjack
585   (package
586     (name "ruby-lumberjack")
587     (version "1.0.9")
588     (source (origin
589               (method url-fetch)
590               (uri (rubygems-uri "lumberjack" version))
591               (sha256
592                (base32
593                 "162frm2bwy58pj8ccsdqa4a6i0csrhb9h5l3inhkl1ivgfc8814l"))))
594     (build-system ruby-build-system)
595     (native-inputs
596      `(("ruby-rspec" ,ruby-rspec)))
597     (synopsis "Logging utility library for Ruby")
598     (description "Lumberjack is a simple logging utility that can be a drop in
599 replacement for Logger or ActiveSupport::BufferedLogger.  It provides support
600 for automatically rolling log files even with multiple processes writing the
601 same log file.")
602     (home-page "http://github.com/bdurand/lumberjack")
603     (license license:expat)))
605 (define-public ruby-nenv
606   (package
607     (name "ruby-nenv")
608     (version "0.2.0")
609     (source (origin
610               (method url-fetch)
611               (uri (rubygems-uri "nenv" version))
612               (sha256
613                (base32
614                 "152wxwri0afwgnxdf93gi6wjl9rr5z7vwp8ln0gpa3rddbfc27s6"))))
615     (build-system ruby-build-system)
616     (arguments
617      `(#:tests? #f)) ; no tests included
618     (native-inputs
619      `(("ruby-rspec" ,ruby-rspec)
620        ("bundler" ,bundler)))
621     (synopsis "Ruby interface for modifying the environment")
622     (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
623 and inspect the environment.")
624     (home-page "https://github.com/e2/nenv")
625     (license license:expat)))
627 (define-public ruby-shellany
628   (package
629     (name "ruby-shellany")
630     (version "0.0.1")
631     (source (origin
632               (method url-fetch)
633               (uri (rubygems-uri "shellany" version))
634               (sha256
635                (base32
636                 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
637     (build-system ruby-build-system)
638     (arguments
639      `(#:test-target "default"
640        #:phases
641        (modify-phases %standard-phases
642          (add-after 'unpack 'fix-version-test
643           (lambda _
644             (substitute* "spec/shellany_spec.rb"
645               (("^RSpec") "require \"shellany\"\nRSpec"))
646             #t)))))
647     (native-inputs
648      `(("ruby-rspec" ,ruby-rspec)
649        ("ruby-nenv" ,ruby-nenv)
650        ("bundler" ,bundler)))
651     (synopsis "Capture command output")
652     (description "Shellany is a Ruby library providing functions to capture
653 the output produced by running shell commands.")
654     (home-page "https://rubygems.org/gems/shellany")
655     (license license:expat)))
657 (define-public ruby-notiffany
658   (package
659     (name "ruby-notiffany")
660     (version "0.0.7")
661     (source (origin
662               (method url-fetch)
663               (uri (rubygems-uri "notiffany" version))
664               (sha256
665                (base32
666                 "1v5x1w59qq85r6dpv3y9ga34dfd7hka1qxyiykaw7gm0i6kggbhi"))))
667     (build-system ruby-build-system)
668     ;; Tests are not included in the gem.
669     (arguments `(#:tests? #f))
670     (propagated-inputs
671      `(("ruby-shellany" ,ruby-shellany)
672        ("ruby-nenv" ,ruby-nenv)))
673     (native-inputs
674      `(("bundler" ,bundler)))
675     (synopsis "Wrapper libray for notification libraries")
676     (description "Notiffany is a Ruby wrapper libray for notification
677 libraries such as Libnotify.")
678     (home-page "https://github.com/guard/notiffany")
679     (license license:expat)))
681 (define-public ruby-formatador
682   (package
683     (name "ruby-formatador")
684     (version "0.2.5")
685     (source (origin
686               (method url-fetch)
687               (uri (rubygems-uri "formatador" version))
688               (sha256
689                (base32
690                 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
691     (build-system ruby-build-system)
692     ;; Circular dependency: Tests require ruby-shindo, which requires
693     ;; ruby-formatador at runtime.
694     (arguments `(#:tests? #f))
695     (synopsis "Ruby library to format text on stdout")
696     (description "Formatador is a Ruby library to format text printed to the
697 standard output stream.")
698     (home-page "http://github.com/geemus/formatador")
699     (license license:expat)))
701 (define-public ruby-shindo
702   (package
703     (name "ruby-shindo")
704     (version "0.3.8")
705     (source (origin
706               (method url-fetch)
707               (uri (rubygems-uri "shindo" version))
708               (sha256
709                (base32
710                 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
711     (build-system ruby-build-system)
712     (arguments
713      `(#:test-target "shindo_tests"
714        #:phases
715        (modify-phases %standard-phases
716          (add-after 'unpack 'fix-tests
717           (lambda _
718             (substitute* "Rakefile"
719               (("system \"shindo") "system \"./bin/shindo")
720               ;; This test doesn't work, so we disable it.
721               (("fail \"The build_error test should fail") "#"))
722             #t)))))
723     (propagated-inputs
724      `(("ruby-formatador" ,ruby-formatador)))
725     (synopsis "Simple depth first Ruby testing")
726     (description "Shindo is a simple depth first testing library for Ruby.")
727     (home-page "https://github.com/geemus/shindo")
728     (license license:expat)))
730 (define-public ruby-useragent
731   (package
732     (name "ruby-useragent")
733     (version "0.13.3")
734     (source (origin
735               (method url-fetch)
736               (uri (rubygems-uri "useragent" version))
737               (sha256
738                (base32
739                 "0kz7yyz7528bv4a2kfymvkcm8whqcddhmgaw1ksw1d90n30hhkpc"))))
740     (build-system ruby-build-system)
741     (arguments
742      '(#:tests? #f)) ; no test suite
743     (synopsis "HTTP user agent parser for Ruby")
744     (description "UserAgent is a Ruby library that parses and compares HTTP
745 User Agents.")
746     (home-page "https://github.com/gshutler/useragent")
747     (license license:expat)))
749 (define-public ruby-bacon
750   (package
751     (name "ruby-bacon")
752     (version "1.2.0")
753     (source (origin
754               (method url-fetch)
755               (uri (rubygems-uri "bacon" version))
756               (sha256
757                (base32
758                 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
759     (build-system ruby-build-system)
760     (synopsis "Small RSpec clone")
761     (description "Bacon is a small RSpec clone providing all essential
762 features.")
763     (home-page "https://github.com/chneukirchen/bacon")
764     (license license:expat)))
766 (define-public ruby-arel
767   (package
768     (name "ruby-arel")
769     (version "6.0.0")
770     (source (origin
771               (method url-fetch)
772               (uri (rubygems-uri "arel" version))
773               (sha256
774                (base32
775                 "18wnfnzr2i5p3fygsddjbi1cimws6823nbk8drxidmnj8jz7h0ar"))))
776     (build-system ruby-build-system)
777     (arguments
778      '(#:tests? #f)) ; no test suite
779     (synopsis "SQL AST manager for Ruby")
780     (description "Arel is a SQL AST manager for Ruby.  It simplifies the
781 generation of complex SQL queries and adapts to various relational database
782 implementations.")
783     (home-page "https://github.com/rails/arel")
784     (license license:expat)))
786 (define-public ruby-connection-pool
787   (package
788     (name "ruby-connection-pool")
789     (version "2.2.0")
790     (source (origin
791               (method url-fetch)
792               (uri (rubygems-uri "connection_pool" version))
793               (sha256
794                (base32
795                 "1b2bb3k39ni5mzcnqlv9y4yjkbin20s7dkwzp0jw2jf1rmzcgrmy"))))
796     (build-system ruby-build-system)
797     (native-inputs
798      `(("bundler" ,bundler)))
799     (synopsis "Generic connection pool for Ruby")
800     (description "Connection_pool provides a generic connection pooling
801 interface for Ruby programs.")
802     (home-page "https://github.com/mperham/connection_pool")
803     (license license:expat)))
805 (define-public ruby-net-http-persistent
806   (package
807     (name "ruby-net-http-persistent")
808     (version "2.9.4")
809     (source (origin
810               (method url-fetch)
811               (uri (rubygems-uri "net-http-persistent" version))
812               (sha256
813                (base32
814                 "1y9fhaax0d9kkslyiqi1zys6cvpaqx9a0y0cywp24rpygwh4s9r4"))))
815     (build-system ruby-build-system)
816     (native-inputs
817      `(("ruby-connection-pool" ,ruby-connection-pool)
818        ("ruby-hoe" ,ruby-hoe)))
819     (synopsis "Persistent HTTP connection manager")
820     (description "Net::HTTP::Persistent manages persistent HTTP connections
821 using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
822     (home-page "https://github.com/drbrain/net-http-persistent")
823     (license license:expat)))
825 (define-public ruby-minitest
826   (package
827     (name "ruby-minitest")
828     (version "5.7.0")
829     (source (origin
830               (method url-fetch)
831               (uri (rubygems-uri "minitest" version))
832               (sha256
833                (base32
834                 "0rxqfakp629mp3vwda7zpgb57lcns5znkskikbfd0kriwv8i1vq8"))))
835     (build-system ruby-build-system)
836     (native-inputs
837      `(("ruby-hoe" ,ruby-hoe)))
838     (synopsis "Small test suite library for Ruby")
839     (description "Minitest provides a complete suite of Ruby testing
840 facilities supporting TDD, BDD, mocking, and benchmarking.")
841     (home-page "https://github.com/seattlerb/minitest")
842     (license license:expat)))
844 (define-public ruby-minitest-sprint
845   (package
846     (name "ruby-minitest-sprint")
847     (version "1.1.0")
848     (source (origin
849               (method url-fetch)
850               (uri (rubygems-uri "minitest-sprint" version))
851               (sha256
852                (base32
853                 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
854     (build-system ruby-build-system)
855     (native-inputs
856      `(("ruby-hoe" ,ruby-hoe)
857        ("ruby-minitest" ,ruby-minitest)))
858     (synopsis "Fast test suite runner for minitest")
859     (description "Minitest-sprint is a test runner for minitest that makes it
860 easier to re-run individual failing tests.")
861     (home-page "https://github.com/seattlerb/minitest-sprint")
862     (license license:expat)))
864 (define-public ruby-minitest-bacon
865   (package
866     (name "ruby-minitest-bacon")
867     (version "1.0.2")
868     (source (origin
869               (method url-fetch)
870               (uri (rubygems-uri "minitest-bacon" version))
871               (sha256
872                (base32
873                 "0cm7r68422743i3b6fm4rrm0r6cnnjmglq5gcmmgl1f0rk5hnf6r"))))
874     (build-system ruby-build-system)
875     (native-inputs
876      `(("ruby-hoe" ,ruby-hoe)))
877     (inputs
878      `(("ruby-minitest" ,ruby-minitest)))
879     (synopsis "Bacon compatibility library for minitest")
880     (description "Minitest-bacon extends minitest with bacon-like
881 functionality, making it easier to migrate test suites from bacon to minitest.")
882     (home-page "https://github.com/seattlerb/minitest-bacon")
883     (license license:expat)))
885 (define-public ruby-daemons
886   (package
887     (name "ruby-daemons")
888     (version "1.2.2")
889     (source (origin
890               (method url-fetch)
891               (uri (rubygems-uri "daemons" version))
892               (sha256
893                (base32
894                 "121c7vkimg3baxga69xvdkwxiq8wkmxqvdbyqi5i82vhih5d3cn3"))))
895     (build-system ruby-build-system)
896     (arguments
897      `(#:tests? #f)) ; no test suite
898     (synopsis "Daemonize Ruby programs")
899     (description "Daemons provides a way to wrap existing Ruby scripts to be
900 run as a daemon and to be controlled by simple start/stop/restart commands.")
901     (home-page "https://github.com/thuehlinger/daemons")
902     (license license:expat)))
904 (define-public ruby-git
905   (package
906     (name "ruby-git")
907     (version "1.2.9.1")
908     (source (origin
909               (method url-fetch)
910               (uri (rubygems-uri "git" version))
911               (sha256
912                (base32
913                 "1sqfj8lmhl7c5zamcckkpik4izfph2zkv6krw0i8mzj5pdws5acs"))))
914     (build-system ruby-build-system)
915     (arguments
916      `(#:tests? #f ; no tests
917        #:phases (modify-phases %standard-phases
918                   (add-after 'install 'patch-git-binary
919                     (lambda* (#:key inputs outputs #:allow-other-keys)
920                       ;; Make the default git binary an absolute path to the
921                       ;; store.
922                       (let ((git    (string-append (assoc-ref inputs "git")
923                                                    "/bin/git"))
924                             (config (string-append (getenv "GEM_HOME")
925                                                    "/gems/git-" ,version
926                                                    "/lib/git/config.rb")))
927                         (substitute* (list config)
928                           (("'git'")
929                            (string-append "'" git "'")))
930                         #t))))))
931     (inputs
932      `(("git" ,git)))
933     (synopsis "Ruby wrappers for Git")
934     (description "Ruby/Git is a Ruby library that can be used to create, read
935 and manipulate Git repositories by wrapping system calls to the git binary.")
936     (home-page "https://github.com/schacon/ruby-git")
937     (license license:expat)))
939 (define-public ruby-slop
940   (package
941     (name "ruby-slop")
942     (version "4.1.0")
943     (source (origin
944               (method url-fetch)
945               (uri (rubygems-uri "slop" version))
946               (sha256
947                (base32
948                 "0dj0ps6v1mqd02k84mgwd7hp578n2bzl7c51h3grdhxfl3jkfsj5"))))
949     (build-system ruby-build-system)
950     (native-inputs
951      `(("ruby-minitest" ,ruby-minitest)))
952     (synopsis "Ruby command line option parser")
953     (description "Slop provides a Ruby domain specific language for gathering
954 options and parsing command line flags.")
955     (home-page "https://github.com/leejarvis/slop")
956     (license license:expat)))
958 (define-public ruby-slop-3
959   (package (inherit ruby-slop)
960     (version "3.6.0")
961     (source (origin
962               (method url-fetch)
963               (uri (rubygems-uri "slop" version))
964               (sha256
965                (base32
966                 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
968 (define-public ruby-multipart-post
969   (package
970     (name "ruby-multipart-post")
971     (version "2.0.0")
972     (source (origin
973               (method url-fetch)
974               (uri (rubygems-uri "multipart-post" version))
975               (sha256
976                (base32
977                 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
978     (build-system ruby-build-system)
979     (native-inputs
980      `(("bundler" ,bundler)))
981     (synopsis "Multipart POST library for Ruby")
982     (description "Multipart-Post Adds multipart POST capability to Ruby's
983 net/http library.")
984     (home-page "https://github.com/nicksieger/multipart-post")
985     (license license:expat)))
987 (define-public ruby-arel
988   (package
989     (name "ruby-arel")
990     (version "6.0.3")
991     (source (origin
992               (method url-fetch)
993               (uri (rubygems-uri "arel" version))
994               (sha256
995                (base32
996                 "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk"))))
997     (build-system ruby-build-system)
998     (arguments '(#:tests? #f)) ; no tests
999     (home-page "https://github.com/rails/arel")
1000     (synopsis "SQL AST manager for Ruby")
1001     (description "Arel is a SQL AST manager for Ruby.  It simplifies the
1002 generation of complex SQL queries and is compatible with various RDBMSes.")
1003     (license license:expat)))
1005 (define-public ruby-minitar
1006   (package
1007     (name "ruby-minitar")
1008     (version "0.5.4")
1009     (source
1010      (origin
1011        (method url-fetch)
1012        (uri (rubygems-uri "minitar" version))
1013        (sha256
1014         (base32
1015          "1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka"))))
1016     (build-system ruby-build-system)
1017     (arguments
1018      '(#:tests? #f)) ; missing a gemspec
1019     (synopsis "Ruby library and utility for handling tar archives")
1020     (description
1021      "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
1022 that provides the ability to deal with POSIX tar archive files.")
1023     (home-page "http://www.github.com/atoulme/minitar")
1024     (license (list license:gpl2+ license:ruby))))
1026 (define-public ruby-mini-portile
1027   (package
1028     (name "ruby-mini-portile")
1029     (version "0.6.2")
1030     (source
1031      (origin
1032        (method url-fetch)
1033        (uri (rubygems-uri "mini_portile" version))
1034        (sha256
1035         (base32
1036          "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
1037     (build-system ruby-build-system)
1038     (arguments
1039      '(#:tests? #f)) ; tests require network access
1040     (synopsis "Ports system for Ruby developers")
1041     (description "Mini-portile is a port/recipe system for Ruby developers.
1042 It provides a standard way to compile against specific versions of libraries
1043 to reproduce user environments.")
1044     (home-page "http://github.com/flavorjones/mini_portile")
1045     (license license:expat)))
1047 (define-public ruby-nokogiri
1048   (package
1049     (name "ruby-nokogiri")
1050     (version "1.6.6.2")
1051     (source (origin
1052               (method url-fetch)
1053               (uri (rubygems-uri "nokogiri" version))
1054               (sha256
1055                (base32
1056                 "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30"))))
1057     (build-system ruby-build-system)
1058     (arguments
1059      ;; Tests fail because Nokogiri can only test with an installed extension,
1060      ;; and also because many test framework dependencies are missing.
1061      '(#:tests? #f
1062        #:gem-flags (list "--" "--use-system-libraries"
1063                          (string-append "--with-xml2-include="
1064                                         (assoc-ref %build-inputs "libxml2")
1065                                         "/include/libxml2" ))))
1066     (native-inputs
1067      `(("ruby-hoe" ,ruby-hoe)
1068        ("ruby-rake-compiler", ruby-rake-compiler)))
1069     (inputs
1070      `(("zlib" ,zlib)
1071        ("libxml2" ,libxml2)
1072        ("libxslt" ,libxslt)))
1073     (propagated-inputs
1074      `(("ruby-mini-portile" ,ruby-mini-portile)))
1075     (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
1076     (description "Nokogiri (鋸) parses and searches XML/HTML, and features
1077 both CSS3 selector and XPath 1.0 support.")
1078     (home-page "http://www.nokogiri.org/")
1079     (license license:expat)))
1081 (define-public ruby-method-source
1082   (package
1083     (name "ruby-method-source")
1084     (version "0.8.2")
1085     (source
1086      (origin
1087        (method url-fetch)
1088        (uri (rubygems-uri "method_source" version))
1089        (sha256
1090         (base32
1091          "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
1092     (build-system ruby-build-system)
1093     (native-inputs
1094      `(("ruby-bacon" ,ruby-bacon)
1095        ("git" ,git)))
1096     (synopsis "Retrieve the source code for Ruby methods")
1097     (description "Method_source retrieves the source code for Ruby methods.
1098 Additionally, it can extract source code from Proc and Lambda objects or just
1099 extract comments.")
1100     (home-page "https://github.com/banister/method_source")
1101     (license license:expat)))
1103 (define-public ruby-coderay
1104   (package
1105     (name "ruby-coderay")
1106     (version "1.1.0")
1107     (source
1108      (origin
1109        (method url-fetch)
1110        (uri (rubygems-uri "coderay" version))
1111        (sha256
1112         (base32
1113          "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
1114     (build-system ruby-build-system)
1115     (arguments
1116      '(#:tests? #f)) ; missing test files
1117     (synopsis "Ruby syntax highlighting library")
1118     (description "Coderay is a Ruby library that provides syntax highlighting
1119 for select languages.")
1120     (home-page "http://coderay.rubychan.de")
1121     (license license:expat)))
1123 (define-public ruby-pry
1124   (package
1125     (name "ruby-pry")
1126     (version "0.10.1")
1127     (source
1128      (origin
1129        (method url-fetch)
1130        (uri (rubygems-uri "pry" version))
1131        (sha256
1132         (base32
1133          "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
1134     (build-system ruby-build-system)
1135     (arguments
1136      '(#:tests? #f)) ; no tests
1137     (propagated-inputs
1138      `(("ruby-coderay" ,ruby-coderay)
1139        ("ruby-method-source" ,ruby-method-source)
1140        ("ruby-slop" ,ruby-slop-3)))
1141     (synopsis "Ruby REPL")
1142     (description "Pry is an IRB alternative and runtime developer console for
1143 Ruby.  It features syntax highlighting, a plugin architecture, runtime
1144 invocation, and source and documentation browsing.")
1145     (home-page "http://pryrepl.org")
1146     (license license:expat)))
1148 (define-public ruby-thread-safe
1149   (package
1150     (name "ruby-thread-safe")
1151     (version "0.3.5")
1152     (source
1153      (origin
1154        (method url-fetch)
1155        (uri (rubygems-uri "thread_safe" version))
1156        (sha256
1157         (base32
1158          "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
1159     (build-system ruby-build-system)
1160     (arguments
1161      '(#:tests? #f)) ; needs simplecov, among others
1162     (synopsis "Thread-safe utilities for Ruby")
1163     (description "The thread_safe library provides thread-safe collections and
1164 utilities for Ruby.")
1165     (home-page "https://github.com/ruby-concurrency/thread_safe")
1166     (license license:asl2.0)))
1168 (define-public ruby-tzinfo
1169   (package
1170     (name "ruby-tzinfo")
1171     (version "1.2.2")
1172     (source
1173      (origin
1174        (method url-fetch)
1175        (uri (rubygems-uri "tzinfo" version))
1176        (sha256
1177         (base32
1178          "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
1179     (build-system ruby-build-system)
1180     (propagated-inputs
1181      `(("ruby-thread-safe" ,ruby-thread-safe)))
1182     (synopsis "Time zone library for Ruby")
1183     (description "TZInfo is a Ruby library that provides daylight savings
1184 aware transformations between times in different time zones.")
1185     (home-page "http://tzinfo.github.io")
1186     (license license:expat)))
1188 (define-public ruby-json
1189   (package
1190     (name "ruby-json")
1191     (version "1.8.3")
1192     (source
1193      (origin
1194        (method url-fetch)
1195        (uri (rubygems-uri "json" version))
1196        (sha256
1197         (base32
1198          "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
1199     (build-system ruby-build-system)
1200     (arguments '(#:tests? #f)) ; dependency cycle with sdoc
1201     (synopsis "JSON library for Ruby")
1202     (description "This Ruby library provides a JSON implementation written as
1203 a native C extension.")
1204     (home-page "http://json-jruby.rubyforge.org/")
1205     (license (list license:ruby license:gpl2)))) ; GPL2 only
1207 (define-public ruby-activesupport
1208   (package
1209     (name "ruby-activesupport")
1210     (version "4.2.4")
1211     (source
1212      (origin
1213        (method url-fetch)
1214        (uri (rubygems-uri "activesupport" version))
1215        (sha256
1216         (base32
1217          "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
1218     (build-system ruby-build-system)
1219     (arguments
1220      '(#:tests? #f)) ; no tests
1221     (propagated-inputs
1222      `(("ruby-i18n" ,ruby-i18n)
1223        ("ruby-json" ,ruby-json)
1224        ("ruby-minitest" ,ruby-minitest)
1225        ("ruby-thread-safe" ,ruby-thread-safe)
1226        ("ruby-tzinfo" ,ruby-tzinfo)))
1227     (synopsis "Ruby on Rails utility library")
1228     (description "ActiveSupport is a toolkit of support libraries and Ruby
1229 core extensions extracted from the Rails framework.  It includes support for
1230 multibyte strings, internationalization, time zones, and testing.")
1231     (home-page "http://www.rubyonrails.org")
1232     (license license:expat)))
1234 (define-public ruby-ox
1235   (package
1236     (name "ruby-ox")
1237     (version "2.2.1")
1238     (source
1239      (origin
1240        (method url-fetch)
1241        (uri (rubygems-uri "ox" version))
1242        (sha256
1243         (base32
1244          "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
1245     (build-system ruby-build-system)
1246     (arguments
1247      '(#:tests? #f)) ; no tests
1248     (synopsis "Optimized XML library for Ruby")
1249     (description
1250      "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
1251 written as a native C extension.  It was designed to be an alternative to
1252 Nokogiri and other Ruby XML parsers for generic XML parsing and as an
1253 alternative to Marshal for Object serialization. ")
1254     (home-page "http://www.ohler.com/ox")
1255     (license license:expat)))
1257 (define-public ruby-pg
1258   (package
1259     (name "ruby-pg")
1260     (version "0.18.2")
1261     (source
1262      (origin
1263        (method url-fetch)
1264        (uri (rubygems-uri "pg" version))
1265        (sha256
1266         (base32
1267          "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
1268     (build-system ruby-build-system)
1269     (arguments
1270      '(#:test-target "spec"))
1271     (native-inputs
1272      `(("ruby-rake-compiler" ,ruby-rake-compiler)
1273        ("ruby-hoe" ,ruby-hoe)
1274        ("ruby-rspec" ,ruby-rspec)))
1275     (inputs
1276      `(("postgresql" ,postgresql)))
1277     (synopsis "Ruby interface to PostgreSQL")
1278     (description "Pg is the Ruby interface to the PostgreSQL RDBMS.  It works
1279 with PostgreSQL 8.4 and later.")
1280     (home-page "https://bitbucket.org/ged/ruby-pg")
1281     (license license:ruby)))
1283 (define-public ruby-byebug
1284   (package
1285     (name "ruby-byebug")
1286     (version "6.0.2")
1287     (source
1288      (origin
1289        (method url-fetch)
1290        (uri (rubygems-uri "byebug" version))
1291        (sha256
1292         (base32
1293          "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
1294     (build-system ruby-build-system)
1295     (arguments
1296      '(#:tests? #f)) ; no tests
1297     (synopsis "Debugger for Ruby 2")
1298     (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
1299 TracePoint C API for execution control and the Debug Inspector C API for call
1300 stack navigation.  The core component provides support that front-ends can
1301 build on.  It provides breakpoint handling and bindings for stack frames among
1302 other things and it comes with a command line interface.")
1303     (home-page "http://github.com/deivid-rodriguez/byebug")
1304     (license license:bsd-2)))
1306 (define-public ruby-rack
1307   (package
1308     (name "ruby-rack")
1309     (version "1.6.4")
1310     (source
1311      (origin
1312        (method url-fetch)
1313        (uri (rubygems-uri "rack" version))
1314        (sha256
1315         (base32
1316          "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
1317     (build-system ruby-build-system)
1318     (arguments
1319      '(#:phases
1320        (modify-phases %standard-phases
1321          (add-before 'check 'fix-tests
1322            (lambda _
1323              ;; A few of the tests use the length of a file on disk for
1324              ;; Content-Length and Content-Range headers.  However, this file
1325              ;; has a shebang in it which an earlier phase patches, growing
1326              ;; the file size from 193 to 239 bytes when the store prefix is
1327              ;; "/gnu/store".
1328              (let ((size-diff (- (string-length (which "ruby"))
1329                                  (string-length "/usr/bin/env ruby"))))
1330                (substitute* '("test/spec_file.rb")
1331                  (("193")
1332                   (number->string (+ 193 size-diff)))
1333                  (("bytes(.)22-33" all delimiter)
1334                   (string-append "bytes"
1335                                  delimiter
1336                                  (number->string (+ 22 size-diff))
1337                                  "-"
1338                                  (number->string (+ 33 size-diff))))))
1339              #t)))))
1340     (native-inputs
1341      `(("ruby-bacon" ,ruby-bacon)))
1342     (synopsis "Unified web application interface for Ruby")
1343     (description "Rack provides a minimal, modular and adaptable interface for
1344 developing web applications in Ruby.  By wrapping HTTP requests and responses,
1345 it unifies the API for web servers, web frameworks, and software in between
1346 into a single method call.")
1347     (home-page "http://rack.github.io/")
1348     (license license:expat)))
1350 (define-public ruby-docile
1351   (package
1352     (name "ruby-docile")
1353     (version "1.1.5")
1354     (source
1355      (origin
1356        (method url-fetch)
1357        (uri (rubygems-uri "docile" version))
1358        (sha256
1359         (base32
1360          "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
1361     (build-system ruby-build-system)
1362     (arguments
1363      '(#:tests? #f)) ; needs github-markup, among others
1364     (synopsis "Ruby EDSL helper library")
1365     (description "Docile is a Ruby library that provides an interface for
1366 creating embedded domain specific languages (EDSLs) that manipulate existing
1367 Ruby classes.")
1368     (home-page "https://ms-ati.github.io/docile/")
1369     (license license:expat)))
1371 (define-public ruby-gherkin3
1372   (package
1373     (name "ruby-gherkin3")
1374     (version "3.1.1")
1375     (source
1376       (origin
1377         (method url-fetch)
1378         (uri (rubygems-uri "gherkin3" version))
1379         (sha256
1380           (base32
1381             "0xsyxhqa1gwcxzvsdy4didaiq5vam8ma3fbwbw2w60via4k6r1z9"))))
1382     (build-system ruby-build-system)
1383     (native-inputs
1384      `(("bundler" ,bundler)))
1385     (arguments
1386      '(#:tests? #f)) ; needs simplecov, among others
1387     (synopsis "Gherkin parser for Ruby")
1388     (description "Gherkin 3 is a parser and compiler for the Gherkin language.
1389 It is intended to replace Gherkin 2 and be used by all Cucumber
1390 implementations to parse '.feature' files.")
1391     (home-page "https://github.com/cucumber/gherkin3")
1392     (license license:expat)))
1394 (define-public ruby-cucumber-core
1395   (package
1396     (name "ruby-cucumber-core")
1397     (version "1.3.0")
1398     (source
1399      (origin
1400        (method url-fetch)
1401        (uri (rubygems-uri "cucumber-core" version))
1402        (sha256
1403         (base32
1404          "12mrzf0s96izpq0k10lahlkgwc4fjs0zfs344rh8r8h3w3jyppr8"))))
1405     (build-system ruby-build-system)
1406     (propagated-inputs
1407      `(("ruby-gherkin3" ,ruby-gherkin3)))
1408     (native-inputs
1409      `(("bundler" ,bundler)))
1410     (arguments
1411      '(#:tests? #f)) ; needs simplecov, among others
1412     (synopsis "Core library for the Cucumber BDD app")
1413     (description "Cucumber is a tool for running automated tests
1414 written in plain language.  Because they're written in plain language,
1415 they can be read by anyone on your team.  Because they can be read by
1416 anyone, you can use them to help improve communication, collaboration
1417 and trust on your team.")
1418     (home-page "https://cucumber.io/")
1419     (license license:expat)))
1421 (define-public ruby-bio-logger
1422   (package
1423     (name "ruby-bio-logger")
1424     (version "1.0.1")
1425     (source
1426      (origin
1427        (method url-fetch)
1428        (uri (rubygems-uri "bio-logger" version))
1429        (sha256
1430         (base32
1431          "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
1432     (build-system ruby-build-system)
1433     (arguments
1434      `(#:tests? #f)) ; rake errors, missing shoulda
1435     (propagated-inputs
1436      `(("ruby-log4r" ,ruby-log4r)))
1437     (synopsis "Log4r wrapper for Ruby")
1438     (description "Bio-logger is a wrapper around Log4r adding extra logging
1439 features such as filtering and fine grained logging.")
1440     (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
1441     (license license:expat)))