1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
3 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
4 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
5 ;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
6 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
7 ;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
9 ;;; This file is part of GNU Guix.
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.
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.
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 ragel)
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))
51 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
52 (version-major+minor version)
53 "/ruby-" version ".tar.xz"))
56 "19x8gs67klgc3ag815jpin83jn2nv1akgjcgayd6v3h1xplr1v66"))))
57 (build-system gnu-build-system)
59 `(#:test-target "test"
63 'configure 'replace-bin-sh
65 (substitute* '("Makefile.in"
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"
76 (("/bin/sh") (which "sh"))))
79 `(("readline" ,readline)
85 (list (search-path-specification
87 (files (list (string-append "lib/ruby/gems/"
88 (version-major+minor version)
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)
102 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
103 (version-major+minor version)
104 "/ruby-" version ".tar.bz2"))
107 "1sbcmbhadcxk0509svwxbm2vvgmpf3xjxr1397bgp9x46nz36lkv"))))
109 `(#:test-target "test"
113 'configure 'replace-bin-sh
115 (substitute* '("Makefile.in"
120 (("/bin/sh") (which "sh"))))
123 (list (search-path-specification
124 (variable "GEM_PATH")
125 (files (list (string-append "lib/ruby/gems/"
126 (version-major+minor version)
129 (define-public ruby-1.8
130 (package (inherit ruby)
131 (version "1.8.7-p374")
135 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
136 (version-major+minor version)
137 "/ruby-" version ".tar.bz2"))
140 "1qq7khilwkayrhwmzlxk83scrmiqfi7lgsn4c63znyvz2c1lgqxl"))))
141 (native-search-paths '())
143 `(#:test-target "test"
147 'configure 'replace-bin-sh
149 (substitute* '("Makefile.in"
154 (("/bin/sh") (which "sh"))))
155 %standard-phases)))))
157 (define-public ruby-hoe
163 (uri (rubygems-uri "hoe" version))
166 "1mac13krdrasn9819dd65xj27kklfy0xdbj3p6s2ij4vlcb46h8q"))) )
167 (build-system ruby-build-system)
168 (synopsis "Ruby project management helper")
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
175 (home-page "http://www.zenspider.com/projects/hoe.html")
176 (license license:expat)))
178 (define-public ruby-rake-compiler
180 (name "ruby-rake-compiler")
184 (uri (rubygems-uri "rake-compiler" version))
187 "1k8im2vzj849xdgjk6wafspkiwwapqwm738majchb4dnhnsk64cx"))))
188 (build-system ruby-build-system)
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
203 (uri (rubygems-uri "i18n" version))
206 "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758"))))
207 (build-system ruby-build-system)
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
225 (name "ruby-rspec-support")
229 (uri (rubygems-uri "rspec-support" version))
232 "194zry5195ls2hni7r9824vqb5d3qfg4jb15fgj8glfy0rvw3zxl"))))
233 (build-system ruby-build-system)
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
243 (name "ruby-rspec-core")
247 (uri (rubygems-uri "rspec-core" version))
250 "0k2471iw30gc2cvv67damrx666pmsvx8l0ahk3hm20dhfnmcmpvv"))))
251 (build-system ruby-build-system)
253 '(#:tests? #f)) ; avoid dependency cycles
255 `(("ruby-rspec-support" ,ruby-rspec-support)))
256 (synopsis "RSpec core library")
257 (description "Rspec-core provides the RSpec test runner and example
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)
267 (uri (rubygems-uri "rspec-core" version))
270 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
271 (propagated-inputs `())))
273 (define-public ruby-diff-lcs
275 (name "ruby-diff-lcs")
279 (uri (rubygems-uri "diff-lcs" version))
282 "1vf9civd41bnqi6brr5d9jifdw73j9khc6fkhfl1f8r9cpkdvlx1"))))
283 (build-system ruby-build-system)
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
296 (name "ruby-rspec-expectations")
300 (uri (rubygems-uri "rspec-expectations" version))
303 "01kmchabgpdcaqdsqg8r0g5gy385xhp1k1jsds3w264ypin17n14"))))
304 (build-system ruby-build-system)
306 '(#:tests? #f)) ; avoid dependency cycles
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)
321 (uri (rubygems-uri "rspec-expectations" version))
324 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
326 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
328 (define-public ruby-rspec-mocks
330 (name "ruby-rspec-mocks")
334 (uri (rubygems-uri "rspec-mocks" version))
337 "09yig1lwgxl8fsns71z3xhv7wkg7zvagydh37pvaqpw92dz55jv2"))))
338 (build-system ruby-build-system)
340 '(#:tests? #f)) ; avoid dependency cycles
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-mocks-2
351 (package (inherit ruby-rspec-mocks)
355 (uri (rubygems-uri "rspec-mocks" version))
358 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
360 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
362 (define-public ruby-rspec
368 (uri (rubygems-uri "rspec" version))
371 "0lkz01j4yxcwb3g5w6r1l9khnyw3sxib4rrh4npd2pxh390fcc4f"))))
372 (build-system ruby-build-system)
374 '(#:tests? #f)) ; avoid dependency cycles
376 `(("ruby-rspec-core" ,ruby-rspec-core)
377 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
378 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
379 (synopsis "Behavior-driven development framework for Ruby")
380 (description "RSpec is a behavior-driven development (BDD) framework for
381 Ruby. This meta-package includes the RSpec test runner, along with the
382 expectations and mocks frameworks.")
383 (home-page "http://rspec.info/")
384 (license license:expat)))
386 (define-public ruby-rspec-2
387 (package (inherit ruby-rspec)
391 (uri (rubygems-uri "rspec" version))
394 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
396 `(("ruby-rspec-core" ,ruby-rspec-core-2)
397 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
398 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
400 ;; Bundler is yet another source of circular dependencies, so we must disable
401 ;; its test suite as well.
402 (define-public bundler
408 (uri (rubygems-uri "bundler" version))
411 "1vlzfq0bkkj4jyq6av0y55mh5nj5n0f3mfbmmifwgkh44g8k6agv"))))
412 (build-system ruby-build-system)
414 '(#:tests? #f)) ; avoid dependency cycles
415 (synopsis "Ruby gem bundler")
416 (description "Bundler automatically downloads and installs a list of gems
417 specified in a \"Gemfile\", as well as their dependencies.")
418 (home-page "http://bundler.io/")
419 (license license:expat)))
421 (define-public ruby-builder
423 (name "ruby-builder")
427 (uri (rubygems-uri "builder" version))
430 "14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2"))))
431 (build-system ruby-build-system)
434 (modify-phases %standard-phases
435 (add-after 'unpack 'do-not-use-rvm
437 (substitute* "rakelib/tags.rake"
438 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
440 (synopsis "Ruby library to create structured data")
441 (description "Builder provides a number of builder objects that make it
442 easy to create structured data. Currently the following builder objects are
443 supported: XML Markup and XML Events.")
444 (home-page "https://github.com/jimweirich/builder")
445 (license license:expat)))
447 (define-public ruby-rjb
453 (uri (rubygems-uri "rjb" version))
456 "0gzs92dagk981s4vrymnqg0vll783b9k564j0cdgp167nc5a2zg4"))))
457 (build-system ruby-build-system)
459 `(#:tests? #f ; no rakefile
461 (modify-phases %standard-phases
462 (add-before 'build 'set-java-home
463 (lambda* (#:key inputs #:allow-other-keys)
464 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
467 `(("jdk" ,icedtea7 "jdk")))
468 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
469 (description "RJB is a bridge program that connects Ruby and Java via the
470 Java Native Interface.")
471 (home-page "http://www.artonx.org/collabo/backyard/?RubyJavaBridge")
472 (license license:lgpl2.1+)))
474 (define-public ruby-log4r
481 (uri (rubygems-uri "log4r" version))
484 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
485 (build-system ruby-build-system)
487 '(#:tests? #f)) ; no Rakefile in gem
488 (synopsis "Flexible logging library for Ruby")
489 (description "Comprehensive and flexible logging library written
490 in Ruby for use in Ruby programs. It features a hierarchical logging
491 system of any number of levels, custom level names, logger
492 inheritance, multiple output destinations per log event, execution
493 tracing, custom formatting, thread safteyness, XML and YAML
494 configuration, and more.")
495 (home-page "http://log4r.rubyforge.org/")
496 (license license:bsd-3)))
498 (define-public ruby-atoulme-antwrap
500 (name "ruby-atoulme-antwrap")
504 (uri (rubygems-uri "atoulme-Antwrap" version))
507 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
508 (build-system ruby-build-system)
509 ;; Test data required for most of the tests are not included.
510 (arguments `(#:tests? #f))
512 `(("ruby-hoe" ,ruby-hoe)))
514 `(("ruby-rjb" ,ruby-rjb)))
515 (synopsis "Ruby wrapper for the Ant build tool")
516 (description "Antwrap is a Ruby module that wraps the Apache Ant build
517 tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
519 (home-page "http://rubyforge.org/projects/antwrap/")
520 (license license:expat)))
522 (define-public ruby-atoulme-saikuro
524 (name "ruby-atoulme-saikuro")
528 (uri (rubygems-uri "atoulme-Saikuro" version))
531 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
532 (build-system ruby-build-system)
533 ;; FIXME: There are no unit tests. The tests are demonstrations of the
535 (arguments `(#:tests? #f))
536 (synopsis "Cyclomatic complexity analyzer")
537 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
538 given Ruby source code Saikuro will generate a report listing the cyclomatic
539 complexity of each method found. In addition, Saikuro counts the number of
540 lines per method and can generate a listing of the number of tokens on each
542 (home-page "http://www.github.com/atoulme/Saikuro")
543 ;; File headers contain the BSD-3 license and the README.rdoc says that
544 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
545 ;; of the Expat license.
546 (license license:bsd-3)))
548 (define-public ruby-ci-reporter
550 (name "ruby-ci-reporter")
554 (uri (rubygems-uri "ci_reporter" version))
557 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
558 (build-system ruby-build-system)
560 `(#:test-target "rspec"))
562 `(("ruby-builder" ,ruby-builder)))
564 `(("bundler" ,bundler)
565 ("ruby-rspec" ,ruby-rspec)))
566 (synopsis "Generate XML reports of runs test")
568 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
569 you to generate XML reports of your test runs. The resulting files can be
570 read by a continuous integration system that understands Ant's JUnit report
572 (home-page "https://github.com/nicksieger/ci_reporter")
573 (license license:expat)))
575 (define-public ruby-saikuro-treemap
577 (name "ruby-saikuro-treemap")
581 (uri (rubygems-uri "saikuro_treemap" version))
584 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
585 (build-system ruby-build-system)
586 ;; Some of the tests fail because the generated JSON has keys in a
587 ;; different order. This is a problem with the test suite rather than any
588 ;; of the involved libraries.
589 (arguments `(#:tests? #f))
591 `(("ruby-json-pure" ,ruby-json-pure)
592 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
593 (synopsis "Generate complexity treemap based on saikuro analysis")
595 "This gem generates a treemap showing the complexity of Ruby code on
596 which it is run. It uses Saikuro under the covers to analyze Ruby code
598 (home-page "http://github.com/ThoughtWorksStudios/saikuro_treemap")
599 (license license:expat)))
601 (define-public ruby-orderedhash
603 (name "ruby-orderedhash")
607 (uri (rubygems-uri "orderedhash" version))
610 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
611 (build-system ruby-build-system)
613 '(#:tests? #f)) ; no test suite
614 (synopsis "Ruby library providing an order-preserving hash")
615 (description "Orderedhash is a Ruby library providing a hash
616 implementation that preserves the order of items and features some array-like
618 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
619 (license license:public-domain)))
621 (define-public ruby-libxml
628 (uri (rubygems-uri "libxml-ruby" version))
631 "1dhjqp4r9vkdp00l6h1cj8qfndzxlhlxk6b9g0w4v55gz857ilhb"))))
632 (build-system ruby-build-system)
635 ("libxml2" ,libxml2)))
637 '(#:tests? #f ; test suite hangs for unknown reason
640 (string-append "--with-xml2-include="
641 (assoc-ref %build-inputs "libxml2")
642 "/include/libxml2" ))))
643 (synopsis "Ruby bindings for GNOME Libxml2")
644 (description "The Libxml-Ruby project provides Ruby language bindings for
645 the GNOME Libxml2 XML toolkit.")
646 (home-page "http://xml4r.github.com/libxml-ruby")
647 (license license:expat)))
649 (define-public ruby-xml-simple
651 (name "ruby-xml-simple")
655 (uri (rubygems-uri "xml-simple" version))
658 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
659 (build-system ruby-build-system)
661 '(#:tests? #f)) ; no test suite
662 (synopsis "Simple Ruby library for XML processing")
663 (description "This library provides a simple API for XML processing in
665 (home-page "https://github.com/maik/xml-simple")
666 (license license:ruby)))
668 (define-public ruby-thor
674 (uri (rubygems-uri "thor" version))
677 "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z"))))
678 (build-system ruby-build-system)
680 '(#:tests? #f)) ; no test suite
682 `(("bundler" ,bundler)))
683 (synopsis "Ruby toolkit for building command-line interfaces")
684 (description "Thor is a toolkit for building powerful command-line
686 (home-page "http://whatisthor.com/")
687 (license license:expat)))
689 (define-public ruby-lumberjack
691 (name "ruby-lumberjack")
695 (uri (rubygems-uri "lumberjack" version))
698 "162frm2bwy58pj8ccsdqa4a6i0csrhb9h5l3inhkl1ivgfc8814l"))))
699 (build-system ruby-build-system)
701 `(("ruby-rspec" ,ruby-rspec)))
702 (synopsis "Logging utility library for Ruby")
703 (description "Lumberjack is a simple logging utility that can be a drop in
704 replacement for Logger or ActiveSupport::BufferedLogger. It provides support
705 for automatically rolling log files even with multiple processes writing the
707 (home-page "http://github.com/bdurand/lumberjack")
708 (license license:expat)))
710 (define-public ruby-nenv
716 (uri (rubygems-uri "nenv" version))
719 "152wxwri0afwgnxdf93gi6wjl9rr5z7vwp8ln0gpa3rddbfc27s6"))))
720 (build-system ruby-build-system)
722 `(#:tests? #f)) ; no tests included
724 `(("ruby-rspec" ,ruby-rspec)
725 ("bundler" ,bundler)))
726 (synopsis "Ruby interface for modifying the environment")
727 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
728 and inspect the environment.")
729 (home-page "https://github.com/e2/nenv")
730 (license license:expat)))
732 (define-public ruby-permutation
734 (name "ruby-permutation")
738 (uri (rubygems-uri "permutation" version))
741 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
742 (build-system ruby-build-system)
745 (modify-phases %standard-phases
746 (add-after 'unpack 'fix-rakefile
748 (substitute* "Rakefile"
749 (("require 'rake/gempackagetask'")
750 "require 'rubygems/package_task'")
751 (("include Config") ""))
755 (zero? (system* "ruby" "-Ilib" "test/test.rb")))))))
756 (synopsis "Library to perform operations with sequence permutations")
757 (description "This package provides a Ruby library to perform different
758 operations with permutations of sequences, such as strings and arrays.")
759 (home-page "http://flori.github.io/permutation")
760 (license license:gpl2))) ; GPL 2 only
762 (define-public ruby-shellany
764 (name "ruby-shellany")
768 (uri (rubygems-uri "shellany" version))
771 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
772 (build-system ruby-build-system)
774 `(#:test-target "default"
776 (modify-phases %standard-phases
777 (add-after 'unpack 'fix-version-test
779 (substitute* "spec/shellany_spec.rb"
780 (("^RSpec") "require \"shellany\"\nRSpec"))
783 `(("ruby-rspec" ,ruby-rspec)
784 ("ruby-nenv" ,ruby-nenv)
785 ("bundler" ,bundler)))
786 (synopsis "Capture command output")
787 (description "Shellany is a Ruby library providing functions to capture
788 the output produced by running shell commands.")
789 (home-page "https://rubygems.org/gems/shellany")
790 (license license:expat)))
792 (define-public ruby-notiffany
794 (name "ruby-notiffany")
798 (uri (rubygems-uri "notiffany" version))
801 "1v5x1w59qq85r6dpv3y9ga34dfd7hka1qxyiykaw7gm0i6kggbhi"))))
802 (build-system ruby-build-system)
803 ;; Tests are not included in the gem.
804 (arguments `(#:tests? #f))
806 `(("ruby-shellany" ,ruby-shellany)
807 ("ruby-nenv" ,ruby-nenv)))
809 `(("bundler" ,bundler)))
810 (synopsis "Wrapper libray for notification libraries")
811 (description "Notiffany is a Ruby wrapper libray for notification
812 libraries such as Libnotify.")
813 (home-page "https://github.com/guard/notiffany")
814 (license license:expat)))
816 (define-public ruby-formatador
818 (name "ruby-formatador")
822 (uri (rubygems-uri "formatador" version))
825 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
826 (build-system ruby-build-system)
827 ;; Circular dependency: Tests require ruby-shindo, which requires
828 ;; ruby-formatador at runtime.
829 (arguments `(#:tests? #f))
830 (synopsis "Ruby library to format text on stdout")
831 (description "Formatador is a Ruby library to format text printed to the
832 standard output stream.")
833 (home-page "http://github.com/geemus/formatador")
834 (license license:expat)))
836 (define-public ruby-shindo
842 (uri (rubygems-uri "shindo" version))
845 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
846 (build-system ruby-build-system)
848 `(#:test-target "shindo_tests"
850 (modify-phases %standard-phases
851 (add-after 'unpack 'fix-tests
853 (substitute* "Rakefile"
854 (("system \"shindo") "system \"./bin/shindo")
855 ;; This test doesn't work, so we disable it.
856 (("fail \"The build_error test should fail") "#"))
859 `(("ruby-formatador" ,ruby-formatador)))
860 (synopsis "Simple depth first Ruby testing")
861 (description "Shindo is a simple depth first testing library for Ruby.")
862 (home-page "https://github.com/geemus/shindo")
863 (license license:expat)))
865 (define-public ruby-rubygems-tasks
867 (name "ruby-rubygems-tasks")
871 (uri (rubygems-uri "rubygems-tasks" version))
874 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
875 (build-system ruby-build-system)
876 ;; Tests need Internet access.
877 (arguments `(#:tests? #f))
879 `(("ruby-rspec" ,ruby-rspec)
880 ("ruby-yard" ,ruby-yard)))
881 (synopsis "Rake tasks for managing and releasing Ruby Gems")
882 (description "Rubygems-task provides Rake tasks for managing and releasing
884 (home-page "https://github.com/postmodern/rubygems-tasks")
885 (license license:expat)))
887 (define-public ruby-ffi
893 (uri (rubygems-uri "ffi" version))
896 "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj"))))
897 (build-system ruby-build-system)
898 ;; FIXME: Before running tests the build system attempts to build libffi
900 (arguments `(#:tests? #f))
902 `(("ruby-rake-compiler" ,ruby-rake-compiler)
903 ("ruby-rspec" ,ruby-rspec)
904 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
906 `(("libffi" ,libffi)))
907 (synopsis "Ruby foreign function interface library")
908 (description "Ruby-FFI is a Ruby extension for programmatically loading
909 dynamic libraries, binding functions within them, and calling those functions
910 from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby
912 (home-page "http://wiki.github.com/ffi/ffi")
913 (license license:bsd-3)))
915 (define-public ruby-simplecov-html
917 (name "ruby-simplecov-html")
921 (uri (rubygems-uri "simplecov-html" version))
924 "1qni8g0xxglkx25w54qcfbi4wjkpvmb28cb7rj5zk3iqynjcdrqf"))))
925 (build-system ruby-build-system)
926 (arguments `(#:tests? #f)) ; there are no tests
928 `(("bundler" ,bundler)))
929 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
930 (description "This package provides the default HTML formatter for
931 the SimpleCov code coverage tool for Ruby version 1.9 and above.")
932 (home-page "https://github.com/colszowka/simplecov-html")
933 (license license:expat)))
935 (define-public ruby-simplecov
937 (name "ruby-simplecov")
941 (uri (rubygems-uri "simplecov" version))
944 "1q2iq2vgrdvvla5y907gkmqx6ry2qvnvc7a90hlcbwgp1w0sv6z4"))))
945 (build-system ruby-build-system)
946 ;; Simplecov depends on rubocop for code style checking at build time.
947 ;; Rubocop needs simplecov at build time.
948 (arguments `(#:tests? #f))
950 `(("ruby-json" ,ruby-json)
951 ("ruby-docile" ,ruby-docile)
952 ("ruby-simplecov-html" ,ruby-simplecov-html)))
954 `(("bundler" ,bundler)))
955 (synopsis "Code coverage framework for Ruby")
956 (description "SimpleCov is a code coverage framework for Ruby with a
957 powerful configuration library and automatic merging of coverage across test
959 (home-page "http://github.com/colszowka/simplecov")
960 (license license:expat)))
962 (define-public ruby-useragent
964 (name "ruby-useragent")
968 (uri (rubygems-uri "useragent" version))
971 "0kz7yyz7528bv4a2kfymvkcm8whqcddhmgaw1ksw1d90n30hhkpc"))))
972 (build-system ruby-build-system)
974 '(#:tests? #f)) ; no test suite
975 (synopsis "HTTP user agent parser for Ruby")
976 (description "UserAgent is a Ruby library that parses and compares HTTP
978 (home-page "https://github.com/gshutler/useragent")
979 (license license:expat)))
981 (define-public ruby-bacon
987 (uri (rubygems-uri "bacon" version))
990 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
991 (build-system ruby-build-system)
992 (synopsis "Small RSpec clone")
993 (description "Bacon is a small RSpec clone providing all essential
995 (home-page "https://github.com/chneukirchen/bacon")
996 (license license:expat)))
998 (define-public ruby-arel
1004 (uri (rubygems-uri "arel" version))
1007 "18wnfnzr2i5p3fygsddjbi1cimws6823nbk8drxidmnj8jz7h0ar"))))
1008 (build-system ruby-build-system)
1010 '(#:tests? #f)) ; no test suite
1011 (synopsis "SQL AST manager for Ruby")
1012 (description "Arel is a SQL AST manager for Ruby. It simplifies the
1013 generation of complex SQL queries and adapts to various relational database
1015 (home-page "https://github.com/rails/arel")
1016 (license license:expat)))
1018 (define-public ruby-connection-pool
1020 (name "ruby-connection-pool")
1024 (uri (rubygems-uri "connection_pool" version))
1027 "1b2bb3k39ni5mzcnqlv9y4yjkbin20s7dkwzp0jw2jf1rmzcgrmy"))))
1028 (build-system ruby-build-system)
1030 `(("bundler" ,bundler)))
1031 (synopsis "Generic connection pool for Ruby")
1032 (description "Connection_pool provides a generic connection pooling
1033 interface for Ruby programs.")
1034 (home-page "https://github.com/mperham/connection_pool")
1035 (license license:expat)))
1037 (define-public ruby-net-http-persistent
1039 (name "ruby-net-http-persistent")
1043 (uri (rubygems-uri "net-http-persistent" version))
1046 "1y9fhaax0d9kkslyiqi1zys6cvpaqx9a0y0cywp24rpygwh4s9r4"))))
1047 (build-system ruby-build-system)
1049 `(("ruby-connection-pool" ,ruby-connection-pool)
1050 ("ruby-hoe" ,ruby-hoe)))
1051 (synopsis "Persistent HTTP connection manager")
1052 (description "Net::HTTP::Persistent manages persistent HTTP connections
1053 using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
1054 (home-page "https://github.com/drbrain/net-http-persistent")
1055 (license license:expat)))
1057 (define-public ruby-power-assert
1059 (name "ruby-power-assert")
1063 (uri (rubygems-uri "power_assert" version))
1066 "0gbj379jhnff8rbb6m3kzdm282szjz1a021xzxa38d1bnswj2jx3"))))
1067 (build-system ruby-build-system)
1069 `(("bundler" ,bundler)))
1070 (synopsis "Assert library with descriptive assertion messages")
1071 (description "Power-assert is an assertion library providing descriptive
1072 assertion messages for tests.")
1073 (home-page "https://github.com/k-tsj/power_assert")
1074 (license (list license:bsd-2 license:ruby))))
1076 (define-public ruby-locale
1078 (name "ruby-locale")
1082 (uri (rubygems-uri "locale" version))
1085 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
1086 (build-system ruby-build-system)
1087 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1088 ;; which needs ruby-gettext, which needs ruby-locale. To break the
1089 ;; dependency cycle we disable tests.
1090 (arguments `(#:tests? #f))
1092 `(("bundler" ,bundler)
1093 ("ruby-yard" ,ruby-yard)))
1094 (synopsis "Ruby library providing basic localization APIs")
1096 "Ruby-Locale is the pure ruby library which provides basic APIs for
1098 (home-page "https://github.com/ruby-gettext/locale")
1099 (license (list license:lgpl3+ license:ruby))))
1101 (define-public ruby-text
1107 (uri (rubygems-uri "text" version))
1110 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
1111 (build-system ruby-build-system)
1112 (synopsis "Collection of text algorithms for Ruby")
1114 "This package provides a collection of text algorithms: Levenshtein,
1115 Soundex, Metaphone, Double Metaphone, Porter Stemming.")
1116 (home-page "http://github.com/threedaymonk/text")
1117 (license license:expat)))
1119 (define-public ruby-gettext
1121 (name "ruby-gettext")
1125 (uri (rubygems-uri "gettext" version))
1128 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
1129 (build-system ruby-build-system)
1130 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1131 ;; which needs ruby-gettext. To break the dependency cycle we disable
1133 (arguments `(#:tests? #f))
1135 `(("ruby-locale" ,ruby-locale)
1136 ("ruby-text" ,ruby-text)))
1138 `(("bundler" ,bundler)
1139 ("ruby-yard" ,ruby-yard)))
1140 (synopsis "GNU gettext-like program for Ruby")
1142 "Gettext is a GNU gettext-like program for Ruby. The catalog
1143 file (po-file) used is the same as that used by GNU gettext, allowing you to
1144 use GNU gettext tools for maintenance.")
1145 (home-page "http://ruby-gettext.github.com/")
1146 (license (list license:lgpl3+ license:ruby))))
1148 (define-public ruby-packnga
1150 (name "ruby-packnga")
1154 (uri (rubygems-uri "packnga" version))
1157 "1i71yhvlkvi5fp3m8jl9317cnddkbnrcy0syrmiw4y1lrq0cbncj"))))
1158 (build-system ruby-build-system)
1159 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
1160 ;; To break the dependency cycle we disable tests.
1161 (arguments `(#:tests? #f))
1163 `(("ruby-gettext" ,ruby-gettext)
1164 ("ruby-yard" ,ruby-yard)))
1166 `(("bundler" ,bundler)))
1167 (synopsis "Utility library to package internationalized libraries")
1169 "Packnga is a library to translate to many languages using YARD.")
1170 (home-page "http://ranguba.org/packnga/")
1171 (license license:lgpl2.0+)))
1173 (define-public ruby-test-unit
1175 (name "ruby-test-unit")
1179 (uri (rubygems-uri "test-unit" version))
1182 "0jxznjzwmrlp8wqjxsd06qbiddffn68pdhz6nrqpjbiln1z3af4w"))))
1183 (build-system ruby-build-system)
1185 `(("ruby-power-assert" ,ruby-power-assert)))
1187 `(("bundler" ,bundler)
1188 ("ruby-packnga" ,ruby-packnga)
1189 ("ruby-yard" ,ruby-yard)))
1190 (synopsis "Unit testing framework for Ruby")
1191 (description "@code{Test::Unit} is unit testing framework for Ruby, based
1192 on xUnit principles. These were originally designed by Kent Beck, creator of
1193 extreme programming software development methodology, for Smalltalk's SUnit.
1194 It allows writing tests, checking results and automated testing in Ruby.")
1195 (home-page "http://test-unit.github.io/")
1196 (license (list license:psfl license:ruby))))
1198 (define-public ruby-metaclass
1200 (name "ruby-metaclass")
1204 (uri (rubygems-uri "metaclass" version))
1207 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
1208 (build-system ruby-build-system)
1211 (modify-phases %standard-phases
1212 (add-after 'unpack 'add-test-unit-to-search-path
1213 (lambda* (#:key inputs #:allow-other-keys)
1214 (substitute* "Rakefile"
1215 (("t\\.libs << \"test\"" line)
1216 (string-append line "; t.libs << \""
1217 (assoc-ref inputs "ruby-test-unit")
1218 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1219 ,(package-version ruby-test-unit)
1223 `(("bundler" ,bundler)
1224 ("ruby-test-unit" ,ruby-test-unit)))
1225 (synopsis "Ruby library adding metaclass method to all objects")
1227 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
1229 (home-page "http://github.com/floehopper/metaclass")
1230 (license license:expat)))
1232 (define-public ruby-blankslate
1234 (name "ruby-blankslate")
1238 (uri (rubygems-uri "blankslate" version))
1241 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
1242 (build-system ruby-build-system)
1245 (modify-phases %standard-phases
1247 (lambda _ (zero? (system* "rspec" "spec/")))))))
1249 `(("bundler" ,bundler)
1250 ("ruby-rspec" ,ruby-rspec)))
1251 (synopsis "Abstract base class with no predefined methods")
1253 "BlankSlate provides an abstract base class with no predefined
1254 methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
1255 as a base class when writing classes that depend upon
1256 @code{method_missing} (e.g. dynamic proxies).")
1257 (home-page "http://github.com/masover/blankslate")
1258 (license license:expat)))
1260 (define-public ruby-instantiator
1262 (name "ruby-instantiator")
1266 (uri (rubygems-uri "instantiator" version))
1269 "0mfmqhg9xrv9i8i1kmphf15ywddhivyh2z3ccl0xjw8qy54zr21i"))))
1270 (build-system ruby-build-system)
1273 (modify-phases %standard-phases
1274 (add-after 'unpack 'add-test-unit-to-search-path
1275 (lambda* (#:key inputs #:allow-other-keys)
1276 (substitute* "Rakefile"
1277 (("t\\.libs << \"test\"" line)
1278 (string-append line "; t.libs << \""
1279 (assoc-ref inputs "ruby-test-unit")
1280 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1281 ,(package-version ruby-test-unit)
1285 `(("ruby-blankslate" ,ruby-blankslate)))
1287 `(("bundler" ,bundler)
1288 ("ruby-test-unit" ,ruby-test-unit)))
1289 (synopsis "Instantiate an arbitrary Ruby class")
1291 "Instantiator lets you instantiate an arbitrary Ruby class without
1292 knowing anything about the constructor.")
1293 (home-page "https://github.com/floehopper/instantiator")
1294 (license license:expat)))
1296 (define-public ruby-introspection
1298 (name "ruby-introspection")
1302 (uri (rubygems-uri "introspection" version))
1305 "0g1j71sqfxbqk32wj7d0bkd3dlayfqzprfq3dbr0rq107xbxjcrr"))))
1306 (build-system ruby-build-system)
1309 (modify-phases %standard-phases
1310 (add-after 'unpack 'add-test-unit-to-search-path
1311 (lambda* (#:key inputs #:allow-other-keys)
1312 (substitute* "Rakefile"
1313 (("t\\.libs << \"test\"" line)
1314 (string-append line "; t.libs << \""
1315 (assoc-ref inputs "ruby-test-unit")
1316 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1317 ,(package-version ruby-test-unit)
1321 `(("ruby-instantiator" ,ruby-instantiator)
1322 ("ruby-metaclass" ,ruby-metaclass)))
1324 `(("bundler" ,bundler)
1325 ("ruby-blankslate" ,ruby-blankslate)
1326 ("ruby-test-unit" ,ruby-test-unit)))
1327 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
1329 "Introspection provides tools to inspect the hierarchy of method
1330 definitions on a Ruby object.")
1331 (home-page "https://github.com/floehopper/introspection")
1332 (license license:expat)))
1334 (define-public ruby-redcarpet
1336 (name "ruby-redcarpet")
1340 (uri (rubygems-uri "redcarpet" version))
1343 "14i3wypp97bpk20679d1csy88q4hsgfqbnqw6mryl77m2g0d09pk"))))
1344 (build-system ruby-build-system)
1347 (modify-phases %standard-phases
1348 ;; The gem archive does not include the conformance tests.
1349 (add-after 'unpack 'disable-conformance-tests
1351 (substitute* "Rakefile"
1352 (("task :test => %w\\[test:unit test:conformance\\]")
1353 "task :test => %w[test:unit]"))
1356 `(("bundler" ,bundler)
1357 ("ruby-test-unit" ,ruby-test-unit)
1358 ("ruby-rake-compiler" ,ruby-rake-compiler)))
1359 (synopsis "Extensible Markdown to (X)HTML converter")
1361 "Redcarpet is an extensible Ruby library for Markdown processing and
1362 conversion to (X)HTML.")
1363 (home-page "http://github.com/vmg/redcarpet")
1364 (license license:expat)))
1366 (define-public ruby-mocha
1372 (uri (rubygems-uri "mocha" version))
1375 "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
1376 (build-system ruby-build-system)
1379 (modify-phases %standard-phases
1380 (add-after 'unpack 'add-test-unit-to-search-path
1381 (lambda* (#:key inputs #:allow-other-keys)
1382 (substitute* "Rakefile"
1383 (("t\\.libs << 'test'" line)
1384 (string-append line "; t.libs << \""
1385 (assoc-ref inputs "ruby-test-unit")
1386 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1387 ,(package-version ruby-test-unit)
1390 (add-before 'check 'use-latest-redcarpet
1392 (substitute* "mocha.gemspec"
1393 (("<redcarpet>, \\[\"~> 1\"\\]")
1394 "<redcarpet>, [\">= 3\"]"))
1396 (add-before 'check 'hardcode-version
1398 ;; Mocha is undefined at build time
1399 (substitute* "Rakefile"
1400 (("#\\{Mocha::VERSION\\}") ,version))
1402 (add-before 'check 'remove-failing-test
1403 ;; FIXME: This test fails for reasons unrelated to Guix packaging.
1405 (delete-file "test/acceptance/stubbing_nil_test.rb")
1408 `(("ruby-metaclass" ,ruby-metaclass)))
1410 `(("bundler" ,bundler)
1411 ("ruby-yard" ,ruby-yard)
1412 ("ruby-introspection" ,ruby-introspection)
1413 ("ruby-test-unit" ,ruby-test-unit)
1414 ("ruby-redcarpet" ,ruby-redcarpet)))
1415 (synopsis "Mocking and stubbing library for Ruby")
1417 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
1418 allows mocking and stubbing of methods on real (non-mock) classes.")
1419 (home-page "http://gofreerange.com/mocha/docs")
1420 (license license:expat)))
1422 (define-public ruby-net-ssh
1424 (name "ruby-net-ssh")
1428 (uri (rubygems-uri "net-ssh" version))
1431 "1dzqkgwi9xm6mbfk1rkk17rzmz8m5xakqi21w1b97ybng6kkw0hf"))))
1432 (build-system ruby-build-system)
1434 `(("ruby-mocha" ,ruby-mocha)
1435 ("ruby-test-unit" ,ruby-test-unit)))
1436 (synopsis "Ruby implementation of the SSH2 client protocol")
1437 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
1438 client protocol. It allows you to write programs that invoke and interact
1439 with processes on remote servers, via SSH2.")
1440 (home-page "https://github.com/net-ssh/net-ssh")
1441 (license license:expat)))
1443 (define-public ruby-minitest
1445 (name "ruby-minitest")
1449 (uri (rubygems-uri "minitest" version))
1452 "0rxqfakp629mp3vwda7zpgb57lcns5znkskikbfd0kriwv8i1vq8"))))
1453 (build-system ruby-build-system)
1455 `(("ruby-hoe" ,ruby-hoe)))
1456 (synopsis "Small test suite library for Ruby")
1457 (description "Minitest provides a complete suite of Ruby testing
1458 facilities supporting TDD, BDD, mocking, and benchmarking.")
1459 (home-page "https://github.com/seattlerb/minitest")
1460 (license license:expat)))
1462 ;; This is the last release of Minitest 4, which is used by some packages.
1463 (define-public ruby-minitest-4
1464 (package (inherit ruby-minitest)
1468 (uri (rubygems-uri "minitest" version))
1471 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
1474 (modify-phases %standard-phases
1475 (add-after 'unpack 'remove-unsupported-method
1477 (substitute* "Rakefile"
1478 (("self\\.rubyforge_name = .*") ""))
1481 (define-public ruby-minitest-sprint
1483 (name "ruby-minitest-sprint")
1487 (uri (rubygems-uri "minitest-sprint" version))
1490 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
1491 (build-system ruby-build-system)
1493 `(("ruby-hoe" ,ruby-hoe)
1494 ("ruby-minitest" ,ruby-minitest)))
1495 (synopsis "Fast test suite runner for minitest")
1496 (description "Minitest-sprint is a test runner for minitest that makes it
1497 easier to re-run individual failing tests.")
1498 (home-page "https://github.com/seattlerb/minitest-sprint")
1499 (license license:expat)))
1501 (define-public ruby-minitest-bacon
1503 (name "ruby-minitest-bacon")
1507 (uri (rubygems-uri "minitest-bacon" version))
1510 "0cm7r68422743i3b6fm4rrm0r6cnnjmglq5gcmmgl1f0rk5hnf6r"))))
1511 (build-system ruby-build-system)
1513 `(("ruby-hoe" ,ruby-hoe)))
1515 `(("ruby-minitest" ,ruby-minitest)))
1516 (synopsis "Bacon compatibility library for minitest")
1517 (description "Minitest-bacon extends minitest with bacon-like
1518 functionality, making it easier to migrate test suites from bacon to minitest.")
1519 (home-page "https://github.com/seattlerb/minitest-bacon")
1520 (license license:expat)))
1522 (define-public ruby-daemons
1524 (name "ruby-daemons")
1528 (uri (rubygems-uri "daemons" version))
1531 "121c7vkimg3baxga69xvdkwxiq8wkmxqvdbyqi5i82vhih5d3cn3"))))
1532 (build-system ruby-build-system)
1534 `(#:tests? #f)) ; no test suite
1535 (synopsis "Daemonize Ruby programs")
1536 (description "Daemons provides a way to wrap existing Ruby scripts to be
1537 run as a daemon and to be controlled by simple start/stop/restart commands.")
1538 (home-page "https://github.com/thuehlinger/daemons")
1539 (license license:expat)))
1541 (define-public ruby-git
1547 (uri (rubygems-uri "git" version))
1550 "1sqfj8lmhl7c5zamcckkpik4izfph2zkv6krw0i8mzj5pdws5acs"))))
1551 (build-system ruby-build-system)
1553 `(#:tests? #f ; no tests
1554 #:phases (modify-phases %standard-phases
1555 (add-after 'install 'patch-git-binary
1556 (lambda* (#:key inputs outputs #:allow-other-keys)
1557 ;; Make the default git binary an absolute path to the
1559 (let ((git (string-append (assoc-ref inputs "git")
1561 (config (string-append (getenv "GEM_HOME")
1562 "/gems/git-" ,version
1563 "/lib/git/config.rb")))
1564 (substitute* (list config)
1566 (string-append "'" git "'")))
1570 (synopsis "Ruby wrappers for Git")
1571 (description "Ruby/Git is a Ruby library that can be used to create, read
1572 and manipulate Git repositories by wrapping system calls to the git binary.")
1573 (home-page "https://github.com/schacon/ruby-git")
1574 (license license:expat)))
1576 (define-public ruby-slop
1582 (uri (rubygems-uri "slop" version))
1585 "0dj0ps6v1mqd02k84mgwd7hp578n2bzl7c51h3grdhxfl3jkfsj5"))))
1586 (build-system ruby-build-system)
1588 `(("ruby-minitest" ,ruby-minitest)))
1589 (synopsis "Ruby command line option parser")
1590 (description "Slop provides a Ruby domain specific language for gathering
1591 options and parsing command line flags.")
1592 (home-page "https://github.com/leejarvis/slop")
1593 (license license:expat)))
1595 (define-public ruby-slop-3
1596 (package (inherit ruby-slop)
1600 (uri (rubygems-uri "slop" version))
1603 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
1605 (define-public ruby-multipart-post
1607 (name "ruby-multipart-post")
1611 (uri (rubygems-uri "multipart-post" version))
1614 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
1615 (build-system ruby-build-system)
1617 `(("bundler" ,bundler)))
1618 (synopsis "Multipart POST library for Ruby")
1619 (description "Multipart-Post Adds multipart POST capability to Ruby's
1621 (home-page "https://github.com/nicksieger/multipart-post")
1622 (license license:expat)))
1624 (define-public ruby-arel
1630 (uri (rubygems-uri "arel" version))
1633 "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk"))))
1634 (build-system ruby-build-system)
1635 (arguments '(#:tests? #f)) ; no tests
1636 (home-page "https://github.com/rails/arel")
1637 (synopsis "SQL AST manager for Ruby")
1638 (description "Arel is a SQL AST manager for Ruby. It simplifies the
1639 generation of complex SQL queries and is compatible with various RDBMSes.")
1640 (license license:expat)))
1642 (define-public ruby-minitar
1644 (name "ruby-minitar")
1649 (uri (rubygems-uri "minitar" version))
1652 "1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka"))))
1653 (build-system ruby-build-system)
1655 '(#:tests? #f)) ; missing a gemspec
1656 (synopsis "Ruby library and utility for handling tar archives")
1658 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
1659 that provides the ability to deal with POSIX tar archive files.")
1660 (home-page "http://www.github.com/atoulme/minitar")
1661 (license (list license:gpl2+ license:ruby))))
1663 (define-public ruby-mini-portile
1665 (name "ruby-mini-portile")
1670 (uri (rubygems-uri "mini_portile" version))
1673 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
1674 (build-system ruby-build-system)
1676 '(#:tests? #f)) ; tests require network access
1677 (synopsis "Ports system for Ruby developers")
1678 (description "Mini-portile is a port/recipe system for Ruby developers.
1679 It provides a standard way to compile against specific versions of libraries
1680 to reproduce user environments.")
1681 (home-page "http://github.com/flavorjones/mini_portile")
1682 (license license:expat)))
1684 (define-public ruby-nokogiri
1686 (name "ruby-nokogiri")
1690 (uri (rubygems-uri "nokogiri" version))
1693 "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30"))))
1694 (build-system ruby-build-system)
1696 ;; Tests fail because Nokogiri can only test with an installed extension,
1697 ;; and also because many test framework dependencies are missing.
1699 #:gem-flags (list "--" "--use-system-libraries"
1700 (string-append "--with-xml2-include="
1701 (assoc-ref %build-inputs "libxml2")
1702 "/include/libxml2" ))))
1704 `(("ruby-hoe" ,ruby-hoe)
1705 ("ruby-rake-compiler", ruby-rake-compiler)))
1708 ("libxml2" ,libxml2)
1709 ("libxslt" ,libxslt)))
1711 `(("ruby-mini-portile" ,ruby-mini-portile)))
1712 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
1713 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
1714 both CSS3 selector and XPath 1.0 support.")
1715 (home-page "http://www.nokogiri.org/")
1716 (license license:expat)))
1718 (define-public ruby-method-source
1720 (name "ruby-method-source")
1725 (uri (rubygems-uri "method_source" version))
1728 "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
1729 (build-system ruby-build-system)
1731 `(("ruby-bacon" ,ruby-bacon)
1733 (synopsis "Retrieve the source code for Ruby methods")
1734 (description "Method_source retrieves the source code for Ruby methods.
1735 Additionally, it can extract source code from Proc and Lambda objects or just
1737 (home-page "https://github.com/banister/method_source")
1738 (license license:expat)))
1740 (define-public ruby-coderay
1742 (name "ruby-coderay")
1747 (uri (rubygems-uri "coderay" version))
1750 "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
1751 (build-system ruby-build-system)
1753 '(#:tests? #f)) ; missing test files
1754 (synopsis "Ruby syntax highlighting library")
1755 (description "Coderay is a Ruby library that provides syntax highlighting
1756 for select languages.")
1757 (home-page "http://coderay.rubychan.de")
1758 (license license:expat)))
1760 (define-public ruby-pry
1767 (uri (rubygems-uri "pry" version))
1770 "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
1771 (build-system ruby-build-system)
1773 '(#:tests? #f)) ; no tests
1775 `(("ruby-coderay" ,ruby-coderay)
1776 ("ruby-method-source" ,ruby-method-source)
1777 ("ruby-slop" ,ruby-slop-3)))
1778 (synopsis "Ruby REPL")
1779 (description "Pry is an IRB alternative and runtime developer console for
1780 Ruby. It features syntax highlighting, a plugin architecture, runtime
1781 invocation, and source and documentation browsing.")
1782 (home-page "http://pryrepl.org")
1783 (license license:expat)))
1785 (define-public ruby-guard
1791 ;; The gem does not include a Rakefile, nor does it contain a
1792 ;; gemspec file, nor does it come with the tests. This is why
1793 ;; we fetch the tarball from Github.
1794 (uri (string-append "https://github.com/guard/guard/archive/v"
1796 (file-name (string-append name "-" version ".tar.gz"))
1799 "1hwj0yi17k6f5axrm0k2bb7fq71dlp0zfywmd7pij9iimbppcca0"))))
1800 (build-system ruby-build-system)
1802 `(#:tests? #f ; tests require cucumber
1804 (modify-phases %standard-phases
1805 (add-after 'unpack 'remove-git-ls-files
1806 (lambda* (#:key outputs #:allow-other-keys)
1807 (substitute* "guard.gemspec"
1808 (("git ls-files -z") "find . -type f -print0"))
1812 (zero? (system* "gem" "build" "guard.gemspec")))))))
1814 `(("ruby-formatador" ,ruby-formatador)
1815 ("ruby-listen" ,ruby-listen)
1816 ("ruby-lumberjack" ,ruby-lumberjack)
1817 ("ruby-nenv" ,ruby-nenv)
1818 ("ruby-notiffany" ,ruby-notiffany)
1819 ("ruby-pry" ,ruby-pry)
1820 ("ruby-shellany" ,ruby-shellany)
1821 ("ruby-thor" ,ruby-thor)))
1823 `(("bundler" ,bundler)
1824 ("ruby-rspec" ,ruby-rspec)))
1825 (synopsis "Tool to handle events on file system modifications")
1827 "Guard is a command line tool to easily handle events on file system
1828 modifications. Guard automates various tasks by running custom rules whenever
1829 file or directories are modified.")
1830 (home-page "http://guardgem.org/")
1831 (license license:expat)))
1833 (define-public ruby-thread-safe
1835 (name "ruby-thread-safe")
1840 (uri (rubygems-uri "thread_safe" version))
1843 "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
1844 (build-system ruby-build-system)
1846 '(#:tests? #f)) ; needs simplecov, among others
1847 (synopsis "Thread-safe utilities for Ruby")
1848 (description "The thread_safe library provides thread-safe collections and
1849 utilities for Ruby.")
1850 (home-page "https://github.com/ruby-concurrency/thread_safe")
1851 (license license:asl2.0)))
1853 (define-public ruby-tzinfo
1855 (name "ruby-tzinfo")
1860 (uri (rubygems-uri "tzinfo" version))
1863 "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
1864 (build-system ruby-build-system)
1866 `(("ruby-thread-safe" ,ruby-thread-safe)))
1867 (synopsis "Time zone library for Ruby")
1868 (description "TZInfo is a Ruby library that provides daylight savings
1869 aware transformations between times in different time zones.")
1870 (home-page "http://tzinfo.github.io")
1871 (license license:expat)))
1873 (define-public ruby-rb-inotify
1875 (name "ruby-rb-inotify")
1880 (uri (rubygems-uri "rb-inotify" version))
1883 "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"))))
1884 (build-system ruby-build-system)
1886 '(#:tests? #f ; there are no tests
1888 (modify-phases %standard-phases
1889 ;; Building the gemspec with rake is not working here since it is
1890 ;; generated with Jeweler. It is also unnecessary because the
1891 ;; existing gemspec does not use any development tools to generate a
1895 (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
1897 `(("ruby-ffi" ,ruby-ffi)))
1899 `(("ruby-yard" ,ruby-yard)))
1900 (synopsis "Ruby wrapper for Linux's inotify")
1901 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
1902 kernel subsystem for monitoring changes to files and directories.")
1903 (home-page "https://github.com/nex3/rb-inotify")
1904 (license license:expat)))
1906 (define-public ruby-pry-editline
1908 (name "ruby-pry-editline")
1912 (uri (rubygems-uri "pry-editline" version))
1915 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
1916 (build-system ruby-build-system)
1917 (arguments `(#:tests? #f)) ; no tests included
1919 `(("bundler" ,bundler)))
1920 (synopsis "Open the current REPL line in an editor")
1922 "This gem provides a plugin for the Ruby REPL to enable opening the
1923 current line in an external editor.")
1924 (home-page "https://github.com/tpope/pry-editline")
1925 (license license:expat)))
1927 (define-public ruby-sdoc
1933 (uri (rubygems-uri "sdoc" version))
1936 "16xyfair1j4irfkd6sxvmdcak957z71lwkvhglrznfpkalfnqyqp"))))
1937 (build-system ruby-build-system)
1940 (modify-phases %standard-phases
1941 (add-after 'build 'relax-minitest-requirement
1943 (substitute* "sdoc.gemspec"
1944 (("<minitest>, \\[\"~> 4\\.0\"\\]")
1945 "<minitest>, [\">= 4.0\"]"))
1948 `(("ruby-json" ,ruby-json)))
1950 `(("bundler" ,bundler)
1951 ("ruby-minitest" ,ruby-minitest)))
1952 (synopsis "Generate searchable RDoc documentation")
1954 "SDoc is an RDoc documentation generator to build searchable HTML
1955 documentation for Ruby code.")
1956 (home-page "http://github.com/voloko/sdoc")
1957 (license license:expat)))
1959 (define-public ruby-tins
1965 (uri (rubygems-uri "tins" version))
1968 "1060h8dgnjl9az0sv1b74yrni8d4mh3x858wq6yfbfdf5dxrfl0a"))))
1969 (build-system ruby-build-system)
1970 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
1971 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
1974 `(#:tests? #f ; there are no tests
1976 (modify-phases %standard-phases
1979 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
1981 (substitute* "tins.gemspec"
1982 (("\"lib/spruz\", ") ""))
1983 (zero? (system* "gem" "build" "tins.gemspec")))))))
1984 (synopsis "Assorted tools for Ruby")
1985 (description "Tins is a Ruby library providing assorted tools.")
1986 (home-page "https://github.com/flori/tins")
1987 (license license:expat)))
1989 (define-public ruby-gem-hadar
1991 (name "ruby-gem-hadar")
1995 (uri (rubygems-uri "gem_hadar" version))
1998 "1j8qri4m9wf8nbfv0kakrgsv2x8vg10914xgm6f69nw8zi3i39ws"))))
1999 (build-system ruby-build-system)
2000 ;; This gem needs itself at development time. We disable rebuilding of the
2001 ;; gemspec to avoid this loop.
2003 `(#:tests? #f ; there are no tests
2005 (modify-phases %standard-phases
2008 (zero? (system* "gem" "build" "gem_hadar.gemspec")))))))
2011 ("ruby-tins" ,ruby-tins)
2012 ("ruby-sdoc" ,ruby-sdoc)))
2014 `(("bundler" ,bundler)))
2015 (synopsis "Library for the development of Ruby gems")
2017 "This library contains some useful functionality to support the
2018 development of Ruby gems.")
2019 (home-page "https://github.com/flori/gem_hadar")
2020 (license license:expat)))
2022 (define-public ruby-minitest-tu-shim
2024 (name "ruby-minitest-tu-shim")
2028 (uri (rubygems-uri "minitest_tu_shim" version))
2031 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
2032 (build-system ruby-build-system)
2035 (modify-phases %standard-phases
2036 (add-after 'unpack 'fix-test-include-path
2037 (lambda* (#:key inputs #:allow-other-keys)
2038 (substitute* "Rakefile"
2039 (("Hoe\\.add_include_dirs .*")
2040 (string-append "Hoe.add_include_dirs \""
2041 (assoc-ref inputs "ruby-minitest-4")
2042 "/lib/ruby/gems/2.2.0/gems/minitest-"
2043 ,(package-version ruby-minitest-4)
2045 (add-before 'check 'fix-test-assumptions
2047 ;; The test output includes the file name, so a couple of tests
2048 ;; fail. Changing the regular expressions slightly fixes this
2050 (substitute* "test/test_mini_test.rb"
2051 (("output.sub!\\(.*, 'FILE:LINE'\\)")
2052 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
2053 (("gsub\\(/.*, 'FILE:LINE'\\)")
2054 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
2057 `(("ruby-minitest-4" ,ruby-minitest-4)))
2059 `(("ruby-hoe" ,ruby-hoe)))
2060 (synopsis "Adapter library between minitest and test/unit")
2062 "This library bridges the gap between the small and fast minitest and
2063 Ruby's large and slower test/unit.")
2064 (home-page "https://rubygems.org/gems/minitest_tu_shim")
2065 (license license:expat)))
2067 (define-public ruby-term-ansicolor
2069 (name "ruby-term-ansicolor")
2073 (uri (rubygems-uri "term-ansicolor" version))
2076 "0ydbbyjmk5p7fsi55ffnkq79jnfqx65c3nj8d9rpgl6sw85ahyys"))))
2077 (build-system ruby-build-system)
2078 ;; Rebuilding the gemspec seems to require git, even though this is not a
2079 ;; git repository, so we just build the gem from the existing gemspec.
2082 (modify-phases %standard-phases
2085 (zero? (system* "gem" "build" "term-ansicolor.gemspec")))))))
2087 `(("ruby-tins" ,ruby-tins)))
2089 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2090 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
2091 (synopsis "Ruby library to control the attributes of terminal output")
2093 "This Ruby library uses ANSI escape sequences to control the attributes
2094 of terminal output.")
2095 (home-page "http://flori.github.io/term-ansicolor/")
2096 ;; There is no mention of the "or later" clause.
2097 (license license:gpl2)))
2099 (define-public ruby-pstree
2101 (name "ruby-pstree")
2105 (uri (rubygems-uri "pstree" version))
2108 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
2109 (build-system ruby-build-system)
2111 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2112 ("bundler" ,bundler)))
2113 (synopsis "Create a process tree data structure")
2115 "This library uses the output of the @code{ps} command to create a
2116 process tree data structure for the current host.")
2117 (home-page "http://flori.github.com/pstree")
2118 ;; There is no mention of the "or later" clause.
2119 (license license:gpl2)))
2121 (define-public ruby-utils
2127 (uri (rubygems-uri "utils" version))
2130 "0vycgscxf3s1xn4yyfsq54zlh082581ga8azybmqgc4pij6iz2cd"))))
2131 (build-system ruby-build-system)
2133 `(("ruby-tins" ,ruby-tins)
2134 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
2135 ("ruby-pstree" ,ruby-pstree)
2136 ("ruby-pry-editline" ,ruby-pry-editline)))
2138 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2139 ("bundler" ,bundler)))
2140 (synopsis "Command line tools for working with Ruby")
2142 "This package provides assorted command line tools that may be useful
2143 when working with Ruby code.")
2144 (home-page "https://github.com/flori/utils")
2145 ;; There is no mention of the "or later" clause.
2146 (license license:gpl2)))
2148 (define-public ruby-json
2155 (uri (rubygems-uri "json" version))
2158 "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
2159 (build-system ruby-build-system)
2160 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
2161 (synopsis "JSON library for Ruby")
2162 (description "This Ruby library provides a JSON implementation written as
2163 a native C extension.")
2164 (home-page "http://json-jruby.rubyforge.org/")
2165 (license (list license:ruby license:gpl2)))) ; GPL2 only
2167 (define-public ruby-json-pure
2169 (name "ruby-json-pure")
2173 (uri (rubygems-uri "json_pure" version))
2176 "025aykr360x6dr1jmg8pmsrx7gr30pws4p1q686vnb48zyw1sc94"))))
2177 (build-system ruby-build-system)
2179 `(#:modules ((srfi srfi-1)
2182 (guix build ruby-build-system)
2185 (modify-phases %standard-phases
2186 (add-after 'unpack 'replace-git-ls-files
2188 ;; The existing gemspec file already contains a nice list of
2189 ;; files that belong to the gem. We extract the list from the
2190 ;; gemspec file and then replace the file list in the Rakefile to
2191 ;; get rid of the call to "git ls-files".
2192 (let* ((contents (call-with-input-file "json.gemspec" get-string-all))
2193 ;; Guile is unhappy about the #\nul characters in comments.
2194 (filtered (string-filter (lambda (char)
2195 (not (equal? #\nul char)))
2197 (files (match:substring
2198 (string-match " s\\.files = ([^]]+\\])" filtered) 1)))
2199 (substitute* "Rakefile"
2200 (("FileList\\[`git ls-files`\\.split\\(/\\\\n/\\)\\]")
2201 (string-append "FileList" files))))
2204 `(("ruby-permutation" ,ruby-permutation)
2205 ("ruby-utils" ,ruby-utils)
2207 ("bundler" ,bundler)))
2208 (synopsis "JSON implementation in pure Ruby")
2210 "This package provides a JSON implementation written in pure Ruby.")
2211 (home-page "http://flori.github.com/json")
2212 (license license:ruby)))
2214 ;; Even though this package only provides bindings for a Mac OSX API it is
2215 ;; required by "ruby-listen" at runtime.
2216 (define-public ruby-rb-fsevent
2218 (name "ruby-rb-fsevent")
2222 (uri (rubygems-uri "rb-fsevent" version))
2225 "1hq57by28iv0ijz8pk9ynih0xdg7vnl1010xjcijfklrcv89a1j2"))))
2226 (build-system ruby-build-system)
2227 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
2228 ;; "listen", which needs "rb-fsevent" at runtime.
2229 (arguments `(#:tests? #f))
2230 (synopsis "FSEvents API with signals catching")
2232 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
2233 (home-page "https://rubygems.org/gems/rb-fsevent")
2234 (license license:expat)))
2236 (define-public ruby-listen
2238 (name "ruby-listen")
2243 (uri (rubygems-uri "listen" version))
2246 "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
2247 (build-system ruby-build-system)
2248 (arguments '(#:tests? #f)) ; no tests
2250 `(("ruby-rb-inotify" ,ruby-rb-inotify)
2251 ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
2252 (synopsis "Listen to file modifications")
2253 (description "The Listen gem listens to file modifications and notifies
2254 you about the changes.")
2255 (home-page "https://github.com/guard/listen")
2256 (license license:expat)))
2258 (define-public ruby-activesupport
2260 (name "ruby-activesupport")
2265 (uri (rubygems-uri "activesupport" version))
2268 "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
2269 (build-system ruby-build-system)
2271 '(#:tests? #f)) ; no tests
2273 `(("ruby-i18n" ,ruby-i18n)
2274 ("ruby-json" ,ruby-json)
2275 ("ruby-minitest" ,ruby-minitest)
2276 ("ruby-thread-safe" ,ruby-thread-safe)
2277 ("ruby-tzinfo" ,ruby-tzinfo)))
2278 (synopsis "Ruby on Rails utility library")
2279 (description "ActiveSupport is a toolkit of support libraries and Ruby
2280 core extensions extracted from the Rails framework. It includes support for
2281 multibyte strings, internationalization, time zones, and testing.")
2282 (home-page "http://www.rubyonrails.org")
2283 (license license:expat)))
2285 (define-public ruby-ox
2292 (uri (rubygems-uri "ox" version))
2295 "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
2296 (build-system ruby-build-system)
2298 '(#:tests? #f)) ; no tests
2299 (synopsis "Optimized XML library for Ruby")
2301 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
2302 written as a native C extension. It was designed to be an alternative to
2303 Nokogiri and other Ruby XML parsers for generic XML parsing and as an
2304 alternative to Marshal for Object serialization. ")
2305 (home-page "http://www.ohler.com/ox")
2306 (license license:expat)))
2308 (define-public ruby-pg
2315 (uri (rubygems-uri "pg" version))
2318 "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
2319 (build-system ruby-build-system)
2321 '(#:test-target "spec"))
2323 `(("ruby-rake-compiler" ,ruby-rake-compiler)
2324 ("ruby-hoe" ,ruby-hoe)
2325 ("ruby-rspec" ,ruby-rspec)))
2327 `(("postgresql" ,postgresql)))
2328 (synopsis "Ruby interface to PostgreSQL")
2329 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
2330 with PostgreSQL 8.4 and later.")
2331 (home-page "https://bitbucket.org/ged/ruby-pg")
2332 (license license:ruby)))
2334 (define-public ruby-byebug
2336 (name "ruby-byebug")
2341 (uri (rubygems-uri "byebug" version))
2344 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
2345 (build-system ruby-build-system)
2347 '(#:tests? #f)) ; no tests
2348 (synopsis "Debugger for Ruby 2")
2349 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
2350 TracePoint C API for execution control and the Debug Inspector C API for call
2351 stack navigation. The core component provides support that front-ends can
2352 build on. It provides breakpoint handling and bindings for stack frames among
2353 other things and it comes with a command line interface.")
2354 (home-page "http://github.com/deivid-rodriguez/byebug")
2355 (license license:bsd-2)))
2357 (define-public ruby-netrc
2363 (uri (rubygems-uri "netrc" version))
2366 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
2367 (build-system ruby-build-system)
2370 (modify-phases %standard-phases
2372 ;; There is no Rakefile and minitest can only run one file at once,
2373 ;; so we have to iterate over all test files.
2375 (and (map (lambda (file)
2376 (zero? (system* "ruby" "-Itest" file)))
2377 (find-files "./test" "test_.*\\.rb"))))))))
2379 `(("ruby-minitest" ,ruby-minitest)))
2380 (synopsis "Library to read and update netrc files")
2382 "This library can read and update netrc files, preserving formatting
2383 including comments and whitespace.")
2384 (home-page "https://github.com/geemus/netrc")
2385 (license license:expat)))
2387 (define-public ruby-unf-ext
2389 (name "ruby-unf-ext")
2393 (uri (rubygems-uri "unf_ext" version))
2396 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
2397 (build-system ruby-build-system)
2399 `(("bundler" ,bundler)
2400 ("ruby-rake-compiler" ,ruby-rake-compiler)
2401 ("ruby-test-unit" ,ruby-test-unit)))
2402 (synopsis "Unicode normalization form support library")
2404 "This package provides unicode normalization form support for Ruby.")
2405 (home-page "https://github.com/knu/ruby-unf_ext")
2406 (license license:expat)))
2408 (define-public ruby-tdiff
2414 (uri (rubygems-uri "tdiff" version))
2417 "0k41jbvn8qq4mgrixnhlk742b971d136i8wpbcv2cczvi22xpc86"))))
2418 (build-system ruby-build-system)
2420 `(("ruby-rspec-2" ,ruby-rspec-2)
2421 ("ruby-yard" ,ruby-yard)
2422 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
2423 (synopsis "Calculate the differences between two tree-like structures")
2425 "This library provides functions to calculate the differences between two
2426 tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
2427 (home-page "https://github.com/postmodern/tdiff")
2428 (license license:expat)))
2430 (define-public ruby-rack
2437 (uri (rubygems-uri "rack" version))
2440 "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
2441 (build-system ruby-build-system)
2444 (modify-phases %standard-phases
2445 (add-before 'check 'fix-tests
2447 ;; A few of the tests use the length of a file on disk for
2448 ;; Content-Length and Content-Range headers. However, this file
2449 ;; has a shebang in it which an earlier phase patches, growing
2450 ;; the file size from 193 to 239 bytes when the store prefix is
2452 (let ((size-diff (- (string-length (which "ruby"))
2453 (string-length "/usr/bin/env ruby"))))
2454 (substitute* '("test/spec_file.rb")
2456 (number->string (+ 193 size-diff)))
2457 (("bytes(.)22-33" all delimiter)
2458 (string-append "bytes"
2460 (number->string (+ 22 size-diff))
2462 (number->string (+ 33 size-diff))))))
2465 `(("ruby-bacon" ,ruby-bacon)))
2466 (synopsis "Unified web application interface for Ruby")
2467 (description "Rack provides a minimal, modular and adaptable interface for
2468 developing web applications in Ruby. By wrapping HTTP requests and responses,
2469 it unifies the API for web servers, web frameworks, and software in between
2470 into a single method call.")
2471 (home-page "http://rack.github.io/")
2472 (license license:expat)))
2474 (define-public ruby-docile
2476 (name "ruby-docile")
2481 (uri (rubygems-uri "docile" version))
2484 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
2485 (build-system ruby-build-system)
2487 '(#:tests? #f)) ; needs github-markup, among others
2488 (synopsis "Ruby EDSL helper library")
2489 (description "Docile is a Ruby library that provides an interface for
2490 creating embedded domain specific languages (EDSLs) that manipulate existing
2492 (home-page "https://ms-ati.github.io/docile/")
2493 (license license:expat)))
2495 (define-public ruby-gherkin3
2497 (name "ruby-gherkin3")
2502 (uri (rubygems-uri "gherkin3" version))
2505 "0xsyxhqa1gwcxzvsdy4didaiq5vam8ma3fbwbw2w60via4k6r1z9"))))
2506 (build-system ruby-build-system)
2508 `(("bundler" ,bundler)))
2510 '(#:tests? #f)) ; needs simplecov, among others
2511 (synopsis "Gherkin parser for Ruby")
2512 (description "Gherkin 3 is a parser and compiler for the Gherkin language.
2513 It is intended to replace Gherkin 2 and be used by all Cucumber
2514 implementations to parse '.feature' files.")
2515 (home-page "https://github.com/cucumber/gherkin3")
2516 (license license:expat)))
2518 (define-public ruby-cucumber-core
2520 (name "ruby-cucumber-core")
2525 (uri (rubygems-uri "cucumber-core" version))
2528 "12mrzf0s96izpq0k10lahlkgwc4fjs0zfs344rh8r8h3w3jyppr8"))))
2529 (build-system ruby-build-system)
2531 `(("ruby-gherkin3" ,ruby-gherkin3)))
2533 `(("bundler" ,bundler)))
2535 '(#:tests? #f)) ; needs simplecov, among others
2536 (synopsis "Core library for the Cucumber BDD app")
2537 (description "Cucumber is a tool for running automated tests
2538 written in plain language. Because they're written in plain language,
2539 they can be read by anyone on your team. Because they can be read by
2540 anyone, you can use them to help improve communication, collaboration
2541 and trust on your team.")
2542 (home-page "https://cucumber.io/")
2543 (license license:expat)))
2545 (define-public ruby-bio-logger
2547 (name "ruby-bio-logger")
2552 (uri (rubygems-uri "bio-logger" version))
2555 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
2556 (build-system ruby-build-system)
2558 `(#:tests? #f)) ; rake errors, missing shoulda
2560 `(("ruby-log4r" ,ruby-log4r)))
2561 (synopsis "Log4r wrapper for Ruby")
2562 (description "Bio-logger is a wrapper around Log4r adding extra logging
2563 features such as filtering and fine grained logging.")
2564 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
2565 (license license:expat)))
2567 (define-public ruby-yard
2574 (uri (rubygems-uri "yard" version))
2577 "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x"))))
2578 (build-system ruby-build-system)
2580 `(#:test-target "specs"
2582 (modify-phases %standard-phases
2583 (add-before 'check 'set-HOME
2584 ;; $HOME needs to be set to somewhere writeable for tests to run
2585 (lambda _ (setenv "HOME" "/tmp") #t)))))
2587 `(("ruby-rspec" ,ruby-rspec-2)
2588 ("ruby-rack" ,ruby-rack)))
2589 (synopsis "Documentation generation tool for Ruby")
2591 "YARD is a documentation generation tool for the Ruby programming
2592 language. It enables the user to generate consistent, usable documentation
2593 that can be exported to a number of formats very easily, and also supports
2594 extending for custom Ruby constructs such as custom class level definitions.")
2595 (home-page "http://yardoc.org")
2596 (license license:expat)))
2598 (define-public ruby-eventmachine
2600 (name "ruby-eventmachine")
2605 (uri (rubygems-uri "eventmachine" version))
2608 "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp"))))
2609 (build-system ruby-build-system)
2611 '(#:tests? #f)) ; test suite tries to connect to google.com
2613 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
2614 (synopsis "Single-threaded network event framework for Ruby")
2616 "EventMachine implements a single-threaded engine for arbitrary network
2617 communications. EventMachine wraps all interactions with sockets, allowing
2618 programs to concentrate on the implementation of network protocols. It can be
2619 used to create both network servers and clients.")
2620 (home-page "http://rubyeventmachine.com")
2621 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT