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 tls)
34 #:use-module (gnu packages version-control)
35 #:use-module (guix packages)
36 #:use-module (guix download)
37 #:use-module (guix git-download)
38 #:use-module (guix utils)
39 #:use-module (guix build-system gnu)
40 #:use-module (gnu packages xml)
41 #:use-module (guix build-system ruby))
50 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
51 (version-major+minor version)
52 "/ruby-" version ".tar.xz"))
55 "19x8gs67klgc3ag815jpin83jn2nv1akgjcgayd6v3h1xplr1v66"))))
56 (build-system gnu-build-system)
58 `(#:test-target "test"
62 'configure 'replace-bin-sh
64 (substitute* '("Makefile.in"
69 "test/rubygems/test_gem_ext_configure_builder.rb"
70 "test/rdoc/test_rdoc_parser.rb"
71 "test/ruby/test_rubyoptions.rb"
72 "test/ruby/test_process.rb"
73 "test/ruby/test_system.rb"
75 (("/bin/sh") (which "sh"))))
78 `(("readline" ,readline)
84 (list (search-path-specification
86 (files (list (string-append "lib/ruby/gems/"
87 (version-major+minor version)
89 (synopsis "Programming language interpreter")
90 (description "Ruby is a dynamic object-oriented programming language with
91 a focus on simplicity and productivity.")
92 (home-page "https://ruby-lang.org")
93 (license license:ruby)))
95 (define-public ruby-2.1
96 (package (inherit ruby)
101 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
102 (version-major+minor version)
103 "/ruby-" version ".tar.bz2"))
106 "1sbcmbhadcxk0509svwxbm2vvgmpf3xjxr1397bgp9x46nz36lkv"))))
108 `(#:test-target "test"
112 'configure 'replace-bin-sh
114 (substitute* '("Makefile.in"
119 (("/bin/sh") (which "sh"))))
122 (list (search-path-specification
123 (variable "GEM_PATH")
124 (files (list (string-append "lib/ruby/gems/"
125 (version-major+minor version)
128 (define-public ruby-1.8
129 (package (inherit ruby)
130 (version "1.8.7-p374")
134 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
135 (version-major+minor version)
136 "/ruby-" version ".tar.bz2"))
139 "1qq7khilwkayrhwmzlxk83scrmiqfi7lgsn4c63znyvz2c1lgqxl"))))
140 (native-search-paths '())
142 `(#:test-target "test"
146 'configure 'replace-bin-sh
148 (substitute* '("Makefile.in"
153 (("/bin/sh") (which "sh"))))
154 %standard-phases)))))
156 (define-public ruby-hoe
162 (uri (rubygems-uri "hoe" version))
165 "1mac13krdrasn9819dd65xj27kklfy0xdbj3p6s2ij4vlcb46h8q"))) )
166 (build-system ruby-build-system)
167 (synopsis "Ruby project management helper")
169 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
170 maintain, and release projects and includes a dynamic plug-in system allowing
171 for easy extensibility. Hoe ships with plug-ins for all the usual project
172 tasks including rdoc generation, testing, packaging, deployment, and
174 (home-page "http://www.zenspider.com/projects/hoe.html")
175 (license license:expat)))
177 (define-public ruby-rake-compiler
179 (name "ruby-rake-compiler")
183 (uri (rubygems-uri "rake-compiler" version))
186 "1k8im2vzj849xdgjk6wafspkiwwapqwm738majchb4dnhnsk64cx"))))
187 (build-system ruby-build-system)
189 '(#:tests? #f)) ; needs cucumber
190 (synopsis "Building and packaging helper for Ruby native extensions")
191 (description "Rake-compiler provides a framework for building and
192 packaging native C and Java extensions in Ruby.")
193 (home-page "https://github.com/rake-compiler/rake-compiler")
194 (license license:expat)))
196 (define-public ruby-i18n
202 (uri (rubygems-uri "i18n" version))
205 "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758"))))
206 (build-system ruby-build-system)
208 '(#:tests? #f)) ; no tests
209 (synopsis "Internationalization library for Ruby")
210 (description "Ruby i18n is an internationalization and localization
211 solution for Ruby programs. It features translation and localization,
212 interpolation of values to translations, pluralization, customizable
213 transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
214 translation data, custom key/scope separator, custom exception handlers, and
215 an extensible architecture with a swappable backend.")
216 (home-page "http://github.com/svenfuchs/i18n")
217 (license license:expat)))
219 ;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
220 ;; dependencies use RSpec for their test suites! To avoid these circular
221 ;; dependencies, we disable tests for all of the RSpec-related packages.
222 (define ruby-rspec-support
224 (name "ruby-rspec-support")
228 (uri (rubygems-uri "rspec-support" version))
231 "194zry5195ls2hni7r9824vqb5d3qfg4jb15fgj8glfy0rvw3zxl"))))
232 (build-system ruby-build-system)
234 '(#:tests? #f)) ; avoid dependency cycles
235 (synopsis "RSpec support library")
236 (description "Support utilities for RSpec gems.")
237 (home-page "https://github.com/rspec/rspec-support")
238 (license license:expat)))
240 (define-public ruby-rspec-core
242 (name "ruby-rspec-core")
246 (uri (rubygems-uri "rspec-core" version))
249 "0k2471iw30gc2cvv67damrx666pmsvx8l0ahk3hm20dhfnmcmpvv"))))
250 (build-system ruby-build-system)
252 '(#:tests? #f)) ; avoid dependency cycles
254 `(("ruby-rspec-support" ,ruby-rspec-support)))
255 (synopsis "RSpec core library")
256 (description "Rspec-core provides the RSpec test runner and example
258 (home-page "https://github.com/rspec/rspec-core")
259 (license license:expat)))
261 (define-public ruby-rspec-core-2
262 (package (inherit ruby-rspec-core)
266 (uri (rubygems-uri "rspec-core" version))
269 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
270 (propagated-inputs `())))
272 (define-public ruby-diff-lcs
274 (name "ruby-diff-lcs")
278 (uri (rubygems-uri "diff-lcs" version))
281 "1vf9civd41bnqi6brr5d9jifdw73j9khc6fkhfl1f8r9cpkdvlx1"))))
282 (build-system ruby-build-system)
284 '(#:tests? #f)) ; avoid dependency cycles
285 (synopsis "Compute the difference between two Enumerable sequences")
286 (description "Diff::LCS computes the difference between two Enumerable
287 sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
288 It includes utilities to create a simple HTML diff output format and a
289 standard diff-like tool.")
290 (home-page "https://github.com/halostatue/diff-lcs")
291 (license license:expat)))
293 (define-public ruby-rspec-expectations
295 (name "ruby-rspec-expectations")
299 (uri (rubygems-uri "rspec-expectations" version))
302 "01kmchabgpdcaqdsqg8r0g5gy385xhp1k1jsds3w264ypin17n14"))))
303 (build-system ruby-build-system)
305 '(#:tests? #f)) ; avoid dependency cycles
307 `(("ruby-rspec-support" ,ruby-rspec-support)
308 ("ruby-diff-lcs" ,ruby-diff-lcs)))
309 (synopsis "RSpec expectations library")
310 (description "Rspec-expectations provides a simple API to express expected
311 outcomes of a code example.")
312 (home-page "https://github.com/rspec/rspec-expectations")
313 (license license:expat)))
315 (define-public ruby-rspec-expectations-2
316 (package (inherit ruby-rspec-expectations)
320 (uri (rubygems-uri "rspec-expectations" version))
323 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
325 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
327 (define-public ruby-rspec-mocks
329 (name "ruby-rspec-mocks")
333 (uri (rubygems-uri "rspec-mocks" version))
336 "09yig1lwgxl8fsns71z3xhv7wkg7zvagydh37pvaqpw92dz55jv2"))))
337 (build-system ruby-build-system)
339 '(#:tests? #f)) ; avoid dependency cycles
341 `(("ruby-rspec-support" ,ruby-rspec-support)
342 ("ruby-diff-lcs" ,ruby-diff-lcs)))
343 (synopsis "RSpec stubbing and mocking library")
344 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
345 support for stubbing and mocking.")
346 (home-page "https://github.com/rspec/rspec-mocks")
347 (license license:expat)))
349 (define-public ruby-rspec-mocks-2
350 (package (inherit ruby-rspec-mocks)
354 (uri (rubygems-uri "rspec-mocks" version))
357 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
359 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
361 (define-public ruby-rspec
367 (uri (rubygems-uri "rspec" version))
370 "0lkz01j4yxcwb3g5w6r1l9khnyw3sxib4rrh4npd2pxh390fcc4f"))))
371 (build-system ruby-build-system)
373 '(#:tests? #f)) ; avoid dependency cycles
375 `(("ruby-rspec-core" ,ruby-rspec-core)
376 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
377 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
378 (synopsis "Behavior-driven development framework for Ruby")
379 (description "RSpec is a behavior-driven development (BDD) framework for
380 Ruby. This meta-package includes the RSpec test runner, along with the
381 expectations and mocks frameworks.")
382 (home-page "http://rspec.info/")
383 (license license:expat)))
385 (define-public ruby-rspec-2
386 (package (inherit ruby-rspec)
390 (uri (rubygems-uri "rspec" version))
393 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
395 `(("ruby-rspec-core" ,ruby-rspec-core-2)
396 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
397 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
399 ;; Bundler is yet another source of circular dependencies, so we must disable
400 ;; its test suite as well.
401 (define-public bundler
407 (uri (rubygems-uri "bundler" version))
410 "1vlzfq0bkkj4jyq6av0y55mh5nj5n0f3mfbmmifwgkh44g8k6agv"))))
411 (build-system ruby-build-system)
413 '(#:tests? #f)) ; avoid dependency cycles
414 (synopsis "Ruby gem bundler")
415 (description "Bundler automatically downloads and installs a list of gems
416 specified in a \"Gemfile\", as well as their dependencies.")
417 (home-page "http://bundler.io/")
418 (license license:expat)))
420 (define-public ruby-builder
422 (name "ruby-builder")
426 (uri (rubygems-uri "builder" version))
429 "14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2"))))
430 (build-system ruby-build-system)
433 (modify-phases %standard-phases
434 (add-after 'unpack 'do-not-use-rvm
436 (substitute* "rakelib/tags.rake"
437 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
439 (synopsis "Ruby library to create structured data")
440 (description "Builder provides a number of builder objects that make it
441 easy to create structured data. Currently the following builder objects are
442 supported: XML Markup and XML Events.")
443 (home-page "https://github.com/jimweirich/builder")
444 (license license:expat)))
446 (define-public ruby-rjb
452 (uri (rubygems-uri "rjb" version))
455 "0gzs92dagk981s4vrymnqg0vll783b9k564j0cdgp167nc5a2zg4"))))
456 (build-system ruby-build-system)
458 `(#:tests? #f ; no rakefile
460 (modify-phases %standard-phases
461 (add-before 'build 'set-java-home
462 (lambda* (#:key inputs #:allow-other-keys)
463 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
466 `(("jdk" ,icedtea7 "jdk")))
467 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
468 (description "RJB is a bridge program that connects Ruby and Java via the
469 Java Native Interface.")
470 (home-page "http://www.artonx.org/collabo/backyard/?RubyJavaBridge")
471 (license license:lgpl2.1+)))
473 (define-public ruby-log4r
480 (uri (rubygems-uri "log4r" version))
483 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
484 (build-system ruby-build-system)
486 '(#:tests? #f)) ; no Rakefile in gem
487 (synopsis "Flexible logging library for Ruby")
488 (description "Comprehensive and flexible logging library written
489 in Ruby for use in Ruby programs. It features a hierarchical logging
490 system of any number of levels, custom level names, logger
491 inheritance, multiple output destinations per log event, execution
492 tracing, custom formatting, thread safteyness, XML and YAML
493 configuration, and more.")
494 (home-page "http://log4r.rubyforge.org/")
495 (license license:bsd-3)))
497 (define-public ruby-atoulme-antwrap
499 (name "ruby-atoulme-antwrap")
503 (uri (rubygems-uri "atoulme-Antwrap" version))
506 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
507 (build-system ruby-build-system)
508 ;; Test data required for most of the tests are not included.
509 (arguments `(#:tests? #f))
511 `(("ruby-hoe" ,ruby-hoe)))
513 `(("ruby-rjb" ,ruby-rjb)))
514 (synopsis "Ruby wrapper for the Ant build tool")
515 (description "Antwrap is a Ruby module that wraps the Apache Ant build
516 tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
518 (home-page "http://rubyforge.org/projects/antwrap/")
519 (license license:expat)))
521 (define-public ruby-orderedhash
523 (name "ruby-orderedhash")
527 (uri (rubygems-uri "orderedhash" version))
530 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
531 (build-system ruby-build-system)
533 '(#:tests? #f)) ; no test suite
534 (synopsis "Ruby library providing an order-preserving hash")
535 (description "Orderedhash is a Ruby library providing a hash
536 implementation that preserves the order of items and features some array-like
538 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
539 (license license:public-domain)))
541 (define-public ruby-libxml
548 (uri (rubygems-uri "libxml-ruby" version))
551 "1dhjqp4r9vkdp00l6h1cj8qfndzxlhlxk6b9g0w4v55gz857ilhb"))))
552 (build-system ruby-build-system)
555 ("libxml2" ,libxml2)))
557 '(#:tests? #f ; test suite hangs for unknown reason
560 (string-append "--with-xml2-include="
561 (assoc-ref %build-inputs "libxml2")
562 "/include/libxml2" ))))
563 (synopsis "Ruby bindings for GNOME Libxml2")
564 (description "The Libxml-Ruby project provides Ruby language bindings for
565 the GNOME Libxml2 XML toolkit.")
566 (home-page "http://xml4r.github.com/libxml-ruby")
567 (license license:expat)))
569 (define-public ruby-xml-simple
571 (name "ruby-xml-simple")
575 (uri (rubygems-uri "xml-simple" version))
578 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
579 (build-system ruby-build-system)
581 '(#:tests? #f)) ; no test suite
582 (synopsis "Simple Ruby library for XML processing")
583 (description "This library provides a simple API for XML processing in
585 (home-page "https://github.com/maik/xml-simple")
586 (license license:ruby)))
588 (define-public ruby-thor
594 (uri (rubygems-uri "thor" version))
597 "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z"))))
598 (build-system ruby-build-system)
600 '(#:tests? #f)) ; no test suite
602 `(("bundler" ,bundler)))
603 (synopsis "Ruby toolkit for building command-line interfaces")
604 (description "Thor is a toolkit for building powerful command-line
606 (home-page "http://whatisthor.com/")
607 (license license:expat)))
609 (define-public ruby-lumberjack
611 (name "ruby-lumberjack")
615 (uri (rubygems-uri "lumberjack" version))
618 "162frm2bwy58pj8ccsdqa4a6i0csrhb9h5l3inhkl1ivgfc8814l"))))
619 (build-system ruby-build-system)
621 `(("ruby-rspec" ,ruby-rspec)))
622 (synopsis "Logging utility library for Ruby")
623 (description "Lumberjack is a simple logging utility that can be a drop in
624 replacement for Logger or ActiveSupport::BufferedLogger. It provides support
625 for automatically rolling log files even with multiple processes writing the
627 (home-page "http://github.com/bdurand/lumberjack")
628 (license license:expat)))
630 (define-public ruby-nenv
636 (uri (rubygems-uri "nenv" version))
639 "152wxwri0afwgnxdf93gi6wjl9rr5z7vwp8ln0gpa3rddbfc27s6"))))
640 (build-system ruby-build-system)
642 `(#:tests? #f)) ; no tests included
644 `(("ruby-rspec" ,ruby-rspec)
645 ("bundler" ,bundler)))
646 (synopsis "Ruby interface for modifying the environment")
647 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
648 and inspect the environment.")
649 (home-page "https://github.com/e2/nenv")
650 (license license:expat)))
652 (define-public ruby-permutation
654 (name "ruby-permutation")
658 (uri (rubygems-uri "permutation" version))
661 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
662 (build-system ruby-build-system)
665 (modify-phases %standard-phases
666 (add-after 'unpack 'fix-rakefile
668 (substitute* "Rakefile"
669 (("require 'rake/gempackagetask'")
670 "require 'rubygems/package_task'")
671 (("include Config") ""))
675 (zero? (system* "ruby" "-Ilib" "test/test.rb")))))))
676 (synopsis "Library to perform operations with sequence permutations")
677 (description "This package provides a Ruby library to perform different
678 operations with permutations of sequences, such as strings and arrays.")
679 (home-page "http://flori.github.io/permutation")
680 (license license:gpl2))) ; GPL 2 only
682 (define-public ruby-shellany
684 (name "ruby-shellany")
688 (uri (rubygems-uri "shellany" version))
691 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
692 (build-system ruby-build-system)
694 `(#:test-target "default"
696 (modify-phases %standard-phases
697 (add-after 'unpack 'fix-version-test
699 (substitute* "spec/shellany_spec.rb"
700 (("^RSpec") "require \"shellany\"\nRSpec"))
703 `(("ruby-rspec" ,ruby-rspec)
704 ("ruby-nenv" ,ruby-nenv)
705 ("bundler" ,bundler)))
706 (synopsis "Capture command output")
707 (description "Shellany is a Ruby library providing functions to capture
708 the output produced by running shell commands.")
709 (home-page "https://rubygems.org/gems/shellany")
710 (license license:expat)))
712 (define-public ruby-notiffany
714 (name "ruby-notiffany")
718 (uri (rubygems-uri "notiffany" version))
721 "1v5x1w59qq85r6dpv3y9ga34dfd7hka1qxyiykaw7gm0i6kggbhi"))))
722 (build-system ruby-build-system)
723 ;; Tests are not included in the gem.
724 (arguments `(#:tests? #f))
726 `(("ruby-shellany" ,ruby-shellany)
727 ("ruby-nenv" ,ruby-nenv)))
729 `(("bundler" ,bundler)))
730 (synopsis "Wrapper libray for notification libraries")
731 (description "Notiffany is a Ruby wrapper libray for notification
732 libraries such as Libnotify.")
733 (home-page "https://github.com/guard/notiffany")
734 (license license:expat)))
736 (define-public ruby-formatador
738 (name "ruby-formatador")
742 (uri (rubygems-uri "formatador" version))
745 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
746 (build-system ruby-build-system)
747 ;; Circular dependency: Tests require ruby-shindo, which requires
748 ;; ruby-formatador at runtime.
749 (arguments `(#:tests? #f))
750 (synopsis "Ruby library to format text on stdout")
751 (description "Formatador is a Ruby library to format text printed to the
752 standard output stream.")
753 (home-page "http://github.com/geemus/formatador")
754 (license license:expat)))
756 (define-public ruby-shindo
762 (uri (rubygems-uri "shindo" version))
765 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
766 (build-system ruby-build-system)
768 `(#:test-target "shindo_tests"
770 (modify-phases %standard-phases
771 (add-after 'unpack 'fix-tests
773 (substitute* "Rakefile"
774 (("system \"shindo") "system \"./bin/shindo")
775 ;; This test doesn't work, so we disable it.
776 (("fail \"The build_error test should fail") "#"))
779 `(("ruby-formatador" ,ruby-formatador)))
780 (synopsis "Simple depth first Ruby testing")
781 (description "Shindo is a simple depth first testing library for Ruby.")
782 (home-page "https://github.com/geemus/shindo")
783 (license license:expat)))
785 (define-public ruby-rubygems-tasks
787 (name "ruby-rubygems-tasks")
791 (uri (rubygems-uri "rubygems-tasks" version))
794 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
795 (build-system ruby-build-system)
796 ;; Tests need Internet access.
797 (arguments `(#:tests? #f))
799 `(("ruby-rspec" ,ruby-rspec)
800 ("ruby-yard" ,ruby-yard)))
801 (synopsis "Rake tasks for managing and releasing Ruby Gems")
802 (description "Rubygems-task provides Rake tasks for managing and releasing
804 (home-page "https://github.com/postmodern/rubygems-tasks")
805 (license license:expat)))
807 (define-public ruby-ffi
813 (uri (rubygems-uri "ffi" version))
816 "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj"))))
817 (build-system ruby-build-system)
818 ;; FIXME: Before running tests the build system attempts to build libffi
820 (arguments `(#:tests? #f))
822 `(("ruby-rake-compiler" ,ruby-rake-compiler)
823 ("ruby-rspec" ,ruby-rspec)
824 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
826 `(("libffi" ,libffi)))
827 (synopsis "Ruby foreign function interface library")
828 (description "Ruby-FFI is a Ruby extension for programmatically loading
829 dynamic libraries, binding functions within them, and calling those functions
830 from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby
832 (home-page "http://wiki.github.com/ffi/ffi")
833 (license license:bsd-3)))
835 (define-public ruby-simplecov-html
837 (name "ruby-simplecov-html")
841 (uri (rubygems-uri "simplecov-html" version))
844 "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj"))))
845 (build-system ruby-build-system)
847 `(("bundler" ,bundler)))
848 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
849 (description "This package provides the default HTML formatter for
850 the SimpleCov code coverage tool for Ruby version 1.9 and above.")
851 (home-page "https://github.com/colszowka/simplecov-html")
852 (license license:expat)))
854 (define-public ruby-useragent
856 (name "ruby-useragent")
860 (uri (rubygems-uri "useragent" version))
863 "0kz7yyz7528bv4a2kfymvkcm8whqcddhmgaw1ksw1d90n30hhkpc"))))
864 (build-system ruby-build-system)
866 '(#:tests? #f)) ; no test suite
867 (synopsis "HTTP user agent parser for Ruby")
868 (description "UserAgent is a Ruby library that parses and compares HTTP
870 (home-page "https://github.com/gshutler/useragent")
871 (license license:expat)))
873 (define-public ruby-bacon
879 (uri (rubygems-uri "bacon" version))
882 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
883 (build-system ruby-build-system)
884 (synopsis "Small RSpec clone")
885 (description "Bacon is a small RSpec clone providing all essential
887 (home-page "https://github.com/chneukirchen/bacon")
888 (license license:expat)))
890 (define-public ruby-arel
896 (uri (rubygems-uri "arel" version))
899 "18wnfnzr2i5p3fygsddjbi1cimws6823nbk8drxidmnj8jz7h0ar"))))
900 (build-system ruby-build-system)
902 '(#:tests? #f)) ; no test suite
903 (synopsis "SQL AST manager for Ruby")
904 (description "Arel is a SQL AST manager for Ruby. It simplifies the
905 generation of complex SQL queries and adapts to various relational database
907 (home-page "https://github.com/rails/arel")
908 (license license:expat)))
910 (define-public ruby-connection-pool
912 (name "ruby-connection-pool")
916 (uri (rubygems-uri "connection_pool" version))
919 "1b2bb3k39ni5mzcnqlv9y4yjkbin20s7dkwzp0jw2jf1rmzcgrmy"))))
920 (build-system ruby-build-system)
922 `(("bundler" ,bundler)))
923 (synopsis "Generic connection pool for Ruby")
924 (description "Connection_pool provides a generic connection pooling
925 interface for Ruby programs.")
926 (home-page "https://github.com/mperham/connection_pool")
927 (license license:expat)))
929 (define-public ruby-net-http-persistent
931 (name "ruby-net-http-persistent")
935 (uri (rubygems-uri "net-http-persistent" version))
938 "1y9fhaax0d9kkslyiqi1zys6cvpaqx9a0y0cywp24rpygwh4s9r4"))))
939 (build-system ruby-build-system)
941 `(("ruby-connection-pool" ,ruby-connection-pool)
942 ("ruby-hoe" ,ruby-hoe)))
943 (synopsis "Persistent HTTP connection manager")
944 (description "Net::HTTP::Persistent manages persistent HTTP connections
945 using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
946 (home-page "https://github.com/drbrain/net-http-persistent")
947 (license license:expat)))
949 (define-public ruby-power-assert
951 (name "ruby-power-assert")
955 (uri (rubygems-uri "power_assert" version))
958 "0gbj379jhnff8rbb6m3kzdm282szjz1a021xzxa38d1bnswj2jx3"))))
959 (build-system ruby-build-system)
961 `(("bundler" ,bundler)))
962 (synopsis "Assert library with descriptive assertion messages")
963 (description "Power-assert is an assertion library providing descriptive
964 assertion messages for tests.")
965 (home-page "https://github.com/k-tsj/power_assert")
966 (license (list license:bsd-2 license:ruby))))
968 (define-public ruby-locale
974 (uri (rubygems-uri "locale" version))
977 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
978 (build-system ruby-build-system)
979 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
980 ;; which needs ruby-gettext, which needs ruby-locale. To break the
981 ;; dependency cycle we disable tests.
982 (arguments `(#:tests? #f))
984 `(("bundler" ,bundler)
985 ("ruby-yard" ,ruby-yard)))
986 (synopsis "Ruby library providing basic localization APIs")
988 "Ruby-Locale is the pure ruby library which provides basic APIs for
990 (home-page "https://github.com/ruby-gettext/locale")
991 (license (list license:lgpl3+ license:ruby))))
993 (define-public ruby-text
999 (uri (rubygems-uri "text" version))
1002 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
1003 (build-system ruby-build-system)
1004 (synopsis "Collection of text algorithms for Ruby")
1006 "This package provides a collection of text algorithms: Levenshtein,
1007 Soundex, Metaphone, Double Metaphone, Porter Stemming.")
1008 (home-page "http://github.com/threedaymonk/text")
1009 (license license:expat)))
1011 (define-public ruby-gettext
1013 (name "ruby-gettext")
1017 (uri (rubygems-uri "gettext" version))
1020 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
1021 (build-system ruby-build-system)
1022 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1023 ;; which needs ruby-gettext. To break the dependency cycle we disable
1025 (arguments `(#:tests? #f))
1027 `(("ruby-locale" ,ruby-locale)
1028 ("ruby-text" ,ruby-text)))
1030 `(("bundler" ,bundler)
1031 ("ruby-yard" ,ruby-yard)))
1032 (synopsis "GNU gettext-like program for Ruby")
1034 "Gettext is a GNU gettext-like program for Ruby. The catalog
1035 file (po-file) used is the same as that used by GNU gettext, allowing you to
1036 use GNU gettext tools for maintenance.")
1037 (home-page "http://ruby-gettext.github.com/")
1038 (license (list license:lgpl3+ license:ruby))))
1040 (define-public ruby-packnga
1042 (name "ruby-packnga")
1046 (uri (rubygems-uri "packnga" version))
1049 "1i71yhvlkvi5fp3m8jl9317cnddkbnrcy0syrmiw4y1lrq0cbncj"))))
1050 (build-system ruby-build-system)
1051 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
1052 ;; To break the dependency cycle we disable tests.
1053 (arguments `(#:tests? #f))
1055 `(("ruby-gettext" ,ruby-gettext)
1056 ("ruby-yard" ,ruby-yard)))
1058 `(("bundler" ,bundler)))
1059 (synopsis "Utility library to package internationalized libraries")
1061 "Packnga is a library to translate to many languages using YARD.")
1062 (home-page "http://ranguba.org/packnga/")
1063 (license license:lgpl2.0+)))
1065 (define-public ruby-test-unit
1067 (name "ruby-test-unit")
1071 (uri (rubygems-uri "test-unit" version))
1074 "0jxznjzwmrlp8wqjxsd06qbiddffn68pdhz6nrqpjbiln1z3af4w"))))
1075 (build-system ruby-build-system)
1077 `(("ruby-power-assert" ,ruby-power-assert)))
1079 `(("bundler" ,bundler)
1080 ("ruby-packnga" ,ruby-packnga)
1081 ("ruby-yard" ,ruby-yard)))
1082 (synopsis "Unit testing framework for Ruby")
1083 (description "@code{Test::Unit} is unit testing framework for Ruby, based
1084 on xUnit principles. These were originally designed by Kent Beck, creator of
1085 extreme programming software development methodology, for Smalltalk's SUnit.
1086 It allows writing tests, checking results and automated testing in Ruby.")
1087 (home-page "http://test-unit.github.io/")
1088 (license (list license:psfl license:ruby))))
1090 (define-public ruby-metaclass
1092 (name "ruby-metaclass")
1096 (uri (rubygems-uri "metaclass" version))
1099 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
1100 (build-system ruby-build-system)
1103 (modify-phases %standard-phases
1104 (add-after 'unpack 'add-test-unit-to-search-path
1105 (lambda* (#:key inputs #:allow-other-keys)
1106 (substitute* "Rakefile"
1107 (("t\\.libs << \"test\"" line)
1108 (string-append line "; t.libs << \""
1109 (assoc-ref inputs "ruby-test-unit")
1110 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1111 ,(package-version ruby-test-unit)
1115 `(("bundler" ,bundler)
1116 ("ruby-test-unit" ,ruby-test-unit)))
1117 (synopsis "Ruby library adding metaclass method to all objects")
1119 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
1121 (home-page "http://github.com/floehopper/metaclass")
1122 (license license:expat)))
1124 (define-public ruby-blankslate
1126 (name "ruby-blankslate")
1130 (uri (rubygems-uri "blankslate" version))
1133 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
1134 (build-system ruby-build-system)
1137 (modify-phases %standard-phases
1139 (lambda _ (zero? (system* "rspec" "spec/")))))))
1141 `(("bundler" ,bundler)
1142 ("ruby-rspec" ,ruby-rspec)))
1143 (synopsis "Abstract base class with no predefined methods")
1145 "BlankSlate provides an abstract base class with no predefined
1146 methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
1147 as a base class when writing classes that depend upon
1148 @code{method_missing} (e.g. dynamic proxies).")
1149 (home-page "http://github.com/masover/blankslate")
1150 (license license:expat)))
1152 (define-public ruby-instantiator
1154 (name "ruby-instantiator")
1158 (uri (rubygems-uri "instantiator" version))
1161 "0mfmqhg9xrv9i8i1kmphf15ywddhivyh2z3ccl0xjw8qy54zr21i"))))
1162 (build-system ruby-build-system)
1165 (modify-phases %standard-phases
1166 (add-after 'unpack 'add-test-unit-to-search-path
1167 (lambda* (#:key inputs #:allow-other-keys)
1168 (substitute* "Rakefile"
1169 (("t\\.libs << \"test\"" line)
1170 (string-append line "; t.libs << \""
1171 (assoc-ref inputs "ruby-test-unit")
1172 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1173 ,(package-version ruby-test-unit)
1177 `(("ruby-blankslate" ,ruby-blankslate)))
1179 `(("bundler" ,bundler)
1180 ("ruby-test-unit" ,ruby-test-unit)))
1181 (synopsis "Instantiate an arbitrary Ruby class")
1183 "Instantiator lets you instantiate an arbitrary Ruby class without
1184 knowing anything about the constructor.")
1185 (home-page "https://github.com/floehopper/instantiator")
1186 (license license:expat)))
1188 (define-public ruby-introspection
1190 (name "ruby-introspection")
1194 (uri (rubygems-uri "introspection" version))
1197 "0g1j71sqfxbqk32wj7d0bkd3dlayfqzprfq3dbr0rq107xbxjcrr"))))
1198 (build-system ruby-build-system)
1201 (modify-phases %standard-phases
1202 (add-after 'unpack 'add-test-unit-to-search-path
1203 (lambda* (#:key inputs #:allow-other-keys)
1204 (substitute* "Rakefile"
1205 (("t\\.libs << \"test\"" line)
1206 (string-append line "; t.libs << \""
1207 (assoc-ref inputs "ruby-test-unit")
1208 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1209 ,(package-version ruby-test-unit)
1213 `(("ruby-instantiator" ,ruby-instantiator)
1214 ("ruby-metaclass" ,ruby-metaclass)))
1216 `(("bundler" ,bundler)
1217 ("ruby-blankslate" ,ruby-blankslate)
1218 ("ruby-test-unit" ,ruby-test-unit)))
1219 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
1221 "Introspection provides tools to inspect the hierarchy of method
1222 definitions on a Ruby object.")
1223 (home-page "https://github.com/floehopper/introspection")
1224 (license license:expat)))
1226 (define-public ruby-redcarpet
1228 (name "ruby-redcarpet")
1232 (uri (rubygems-uri "redcarpet" version))
1235 "14i3wypp97bpk20679d1csy88q4hsgfqbnqw6mryl77m2g0d09pk"))))
1236 (build-system ruby-build-system)
1239 (modify-phases %standard-phases
1240 ;; The gem archive does not include the conformance tests.
1241 (add-after 'unpack 'disable-conformance-tests
1243 (substitute* "Rakefile"
1244 (("task :test => %w\\[test:unit test:conformance\\]")
1245 "task :test => %w[test:unit]"))
1248 `(("bundler" ,bundler)
1249 ("ruby-test-unit" ,ruby-test-unit)
1250 ("ruby-rake-compiler" ,ruby-rake-compiler)))
1251 (synopsis "Extensible Markdown to (X)HTML converter")
1253 "Redcarpet is an extensible Ruby library for Markdown processing and
1254 conversion to (X)HTML.")
1255 (home-page "http://github.com/vmg/redcarpet")
1256 (license license:expat)))
1258 (define-public ruby-mocha
1264 (uri (rubygems-uri "mocha" version))
1267 "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
1268 (build-system ruby-build-system)
1271 (modify-phases %standard-phases
1272 (add-after 'unpack 'add-test-unit-to-search-path
1273 (lambda* (#:key inputs #:allow-other-keys)
1274 (substitute* "Rakefile"
1275 (("t\\.libs << 'test'" line)
1276 (string-append line "; t.libs << \""
1277 (assoc-ref inputs "ruby-test-unit")
1278 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1279 ,(package-version ruby-test-unit)
1282 (add-before 'check 'use-latest-redcarpet
1284 (substitute* "mocha.gemspec"
1285 (("<redcarpet>, \\[\"~> 1\"\\]")
1286 "<redcarpet>, [\">= 3\"]"))
1288 (add-before 'check 'hardcode-version
1290 ;; Mocha is undefined at build time
1291 (substitute* "Rakefile"
1292 (("#\\{Mocha::VERSION\\}") ,version))
1294 (add-before 'check 'remove-failing-test
1295 ;; FIXME: This test fails for reasons unrelated to Guix packaging.
1297 (delete-file "test/acceptance/stubbing_nil_test.rb")
1300 `(("ruby-metaclass" ,ruby-metaclass)))
1302 `(("bundler" ,bundler)
1303 ("ruby-yard" ,ruby-yard)
1304 ("ruby-introspection" ,ruby-introspection)
1305 ("ruby-test-unit" ,ruby-test-unit)
1306 ("ruby-redcarpet" ,ruby-redcarpet)))
1307 (synopsis "Mocking and stubbing library for Ruby")
1309 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
1310 allows mocking and stubbing of methods on real (non-mock) classes.")
1311 (home-page "http://gofreerange.com/mocha/docs")
1312 (license license:expat)))
1314 (define-public ruby-minitest
1316 (name "ruby-minitest")
1320 (uri (rubygems-uri "minitest" version))
1323 "0rxqfakp629mp3vwda7zpgb57lcns5znkskikbfd0kriwv8i1vq8"))))
1324 (build-system ruby-build-system)
1326 `(("ruby-hoe" ,ruby-hoe)))
1327 (synopsis "Small test suite library for Ruby")
1328 (description "Minitest provides a complete suite of Ruby testing
1329 facilities supporting TDD, BDD, mocking, and benchmarking.")
1330 (home-page "https://github.com/seattlerb/minitest")
1331 (license license:expat)))
1333 (define-public ruby-minitest-sprint
1335 (name "ruby-minitest-sprint")
1339 (uri (rubygems-uri "minitest-sprint" version))
1342 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
1343 (build-system ruby-build-system)
1345 `(("ruby-hoe" ,ruby-hoe)
1346 ("ruby-minitest" ,ruby-minitest)))
1347 (synopsis "Fast test suite runner for minitest")
1348 (description "Minitest-sprint is a test runner for minitest that makes it
1349 easier to re-run individual failing tests.")
1350 (home-page "https://github.com/seattlerb/minitest-sprint")
1351 (license license:expat)))
1353 (define-public ruby-minitest-bacon
1355 (name "ruby-minitest-bacon")
1359 (uri (rubygems-uri "minitest-bacon" version))
1362 "0cm7r68422743i3b6fm4rrm0r6cnnjmglq5gcmmgl1f0rk5hnf6r"))))
1363 (build-system ruby-build-system)
1365 `(("ruby-hoe" ,ruby-hoe)))
1367 `(("ruby-minitest" ,ruby-minitest)))
1368 (synopsis "Bacon compatibility library for minitest")
1369 (description "Minitest-bacon extends minitest with bacon-like
1370 functionality, making it easier to migrate test suites from bacon to minitest.")
1371 (home-page "https://github.com/seattlerb/minitest-bacon")
1372 (license license:expat)))
1374 (define-public ruby-daemons
1376 (name "ruby-daemons")
1380 (uri (rubygems-uri "daemons" version))
1383 "121c7vkimg3baxga69xvdkwxiq8wkmxqvdbyqi5i82vhih5d3cn3"))))
1384 (build-system ruby-build-system)
1386 `(#:tests? #f)) ; no test suite
1387 (synopsis "Daemonize Ruby programs")
1388 (description "Daemons provides a way to wrap existing Ruby scripts to be
1389 run as a daemon and to be controlled by simple start/stop/restart commands.")
1390 (home-page "https://github.com/thuehlinger/daemons")
1391 (license license:expat)))
1393 (define-public ruby-git
1399 (uri (rubygems-uri "git" version))
1402 "1sqfj8lmhl7c5zamcckkpik4izfph2zkv6krw0i8mzj5pdws5acs"))))
1403 (build-system ruby-build-system)
1405 `(#:tests? #f ; no tests
1406 #:phases (modify-phases %standard-phases
1407 (add-after 'install 'patch-git-binary
1408 (lambda* (#:key inputs outputs #:allow-other-keys)
1409 ;; Make the default git binary an absolute path to the
1411 (let ((git (string-append (assoc-ref inputs "git")
1413 (config (string-append (getenv "GEM_HOME")
1414 "/gems/git-" ,version
1415 "/lib/git/config.rb")))
1416 (substitute* (list config)
1418 (string-append "'" git "'")))
1422 (synopsis "Ruby wrappers for Git")
1423 (description "Ruby/Git is a Ruby library that can be used to create, read
1424 and manipulate Git repositories by wrapping system calls to the git binary.")
1425 (home-page "https://github.com/schacon/ruby-git")
1426 (license license:expat)))
1428 (define-public ruby-slop
1434 (uri (rubygems-uri "slop" version))
1437 "0dj0ps6v1mqd02k84mgwd7hp578n2bzl7c51h3grdhxfl3jkfsj5"))))
1438 (build-system ruby-build-system)
1440 `(("ruby-minitest" ,ruby-minitest)))
1441 (synopsis "Ruby command line option parser")
1442 (description "Slop provides a Ruby domain specific language for gathering
1443 options and parsing command line flags.")
1444 (home-page "https://github.com/leejarvis/slop")
1445 (license license:expat)))
1447 (define-public ruby-slop-3
1448 (package (inherit ruby-slop)
1452 (uri (rubygems-uri "slop" version))
1455 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
1457 (define-public ruby-multipart-post
1459 (name "ruby-multipart-post")
1463 (uri (rubygems-uri "multipart-post" version))
1466 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
1467 (build-system ruby-build-system)
1469 `(("bundler" ,bundler)))
1470 (synopsis "Multipart POST library for Ruby")
1471 (description "Multipart-Post Adds multipart POST capability to Ruby's
1473 (home-page "https://github.com/nicksieger/multipart-post")
1474 (license license:expat)))
1476 (define-public ruby-arel
1482 (uri (rubygems-uri "arel" version))
1485 "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk"))))
1486 (build-system ruby-build-system)
1487 (arguments '(#:tests? #f)) ; no tests
1488 (home-page "https://github.com/rails/arel")
1489 (synopsis "SQL AST manager for Ruby")
1490 (description "Arel is a SQL AST manager for Ruby. It simplifies the
1491 generation of complex SQL queries and is compatible with various RDBMSes.")
1492 (license license:expat)))
1494 (define-public ruby-minitar
1496 (name "ruby-minitar")
1501 (uri (rubygems-uri "minitar" version))
1504 "1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka"))))
1505 (build-system ruby-build-system)
1507 '(#:tests? #f)) ; missing a gemspec
1508 (synopsis "Ruby library and utility for handling tar archives")
1510 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
1511 that provides the ability to deal with POSIX tar archive files.")
1512 (home-page "http://www.github.com/atoulme/minitar")
1513 (license (list license:gpl2+ license:ruby))))
1515 (define-public ruby-mini-portile
1517 (name "ruby-mini-portile")
1522 (uri (rubygems-uri "mini_portile" version))
1525 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
1526 (build-system ruby-build-system)
1528 '(#:tests? #f)) ; tests require network access
1529 (synopsis "Ports system for Ruby developers")
1530 (description "Mini-portile is a port/recipe system for Ruby developers.
1531 It provides a standard way to compile against specific versions of libraries
1532 to reproduce user environments.")
1533 (home-page "http://github.com/flavorjones/mini_portile")
1534 (license license:expat)))
1536 (define-public ruby-nokogiri
1538 (name "ruby-nokogiri")
1542 (uri (rubygems-uri "nokogiri" version))
1545 "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30"))))
1546 (build-system ruby-build-system)
1548 ;; Tests fail because Nokogiri can only test with an installed extension,
1549 ;; and also because many test framework dependencies are missing.
1551 #:gem-flags (list "--" "--use-system-libraries"
1552 (string-append "--with-xml2-include="
1553 (assoc-ref %build-inputs "libxml2")
1554 "/include/libxml2" ))))
1556 `(("ruby-hoe" ,ruby-hoe)
1557 ("ruby-rake-compiler", ruby-rake-compiler)))
1560 ("libxml2" ,libxml2)
1561 ("libxslt" ,libxslt)))
1563 `(("ruby-mini-portile" ,ruby-mini-portile)))
1564 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
1565 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
1566 both CSS3 selector and XPath 1.0 support.")
1567 (home-page "http://www.nokogiri.org/")
1568 (license license:expat)))
1570 (define-public ruby-method-source
1572 (name "ruby-method-source")
1577 (uri (rubygems-uri "method_source" version))
1580 "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
1581 (build-system ruby-build-system)
1583 `(("ruby-bacon" ,ruby-bacon)
1585 (synopsis "Retrieve the source code for Ruby methods")
1586 (description "Method_source retrieves the source code for Ruby methods.
1587 Additionally, it can extract source code from Proc and Lambda objects or just
1589 (home-page "https://github.com/banister/method_source")
1590 (license license:expat)))
1592 (define-public ruby-coderay
1594 (name "ruby-coderay")
1599 (uri (rubygems-uri "coderay" version))
1602 "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
1603 (build-system ruby-build-system)
1605 '(#:tests? #f)) ; missing test files
1606 (synopsis "Ruby syntax highlighting library")
1607 (description "Coderay is a Ruby library that provides syntax highlighting
1608 for select languages.")
1609 (home-page "http://coderay.rubychan.de")
1610 (license license:expat)))
1612 (define-public ruby-pry
1619 (uri (rubygems-uri "pry" version))
1622 "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
1623 (build-system ruby-build-system)
1625 '(#:tests? #f)) ; no tests
1627 `(("ruby-coderay" ,ruby-coderay)
1628 ("ruby-method-source" ,ruby-method-source)
1629 ("ruby-slop" ,ruby-slop-3)))
1630 (synopsis "Ruby REPL")
1631 (description "Pry is an IRB alternative and runtime developer console for
1632 Ruby. It features syntax highlighting, a plugin architecture, runtime
1633 invocation, and source and documentation browsing.")
1634 (home-page "http://pryrepl.org")
1635 (license license:expat)))
1637 (define-public ruby-thread-safe
1639 (name "ruby-thread-safe")
1644 (uri (rubygems-uri "thread_safe" version))
1647 "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
1648 (build-system ruby-build-system)
1650 '(#:tests? #f)) ; needs simplecov, among others
1651 (synopsis "Thread-safe utilities for Ruby")
1652 (description "The thread_safe library provides thread-safe collections and
1653 utilities for Ruby.")
1654 (home-page "https://github.com/ruby-concurrency/thread_safe")
1655 (license license:asl2.0)))
1657 (define-public ruby-tzinfo
1659 (name "ruby-tzinfo")
1664 (uri (rubygems-uri "tzinfo" version))
1667 "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
1668 (build-system ruby-build-system)
1670 `(("ruby-thread-safe" ,ruby-thread-safe)))
1671 (synopsis "Time zone library for Ruby")
1672 (description "TZInfo is a Ruby library that provides daylight savings
1673 aware transformations between times in different time zones.")
1674 (home-page "http://tzinfo.github.io")
1675 (license license:expat)))
1677 (define-public ruby-rb-inotify
1679 (name "ruby-rb-inotify")
1684 (uri (rubygems-uri "rb-inotify" version))
1687 "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"))))
1688 (build-system ruby-build-system)
1690 '(#:tests? #f ; there are no tests
1692 (modify-phases %standard-phases
1693 ;; Building the gemspec with rake is not working here since it is
1694 ;; generated with Jeweler. It is also unnecessary because the
1695 ;; existing gemspec does not use any development tools to generate a
1699 (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
1701 `(("ruby-ffi" ,ruby-ffi)))
1703 `(("ruby-yard" ,ruby-yard)))
1704 (synopsis "Ruby wrapper for Linux's inotify")
1705 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
1706 kernel subsystem for monitoring changes to files and directories.")
1707 (home-page "https://github.com/nex3/rb-inotify")
1708 (license license:expat)))
1710 (define-public ruby-json
1717 (uri (rubygems-uri "json" version))
1720 "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
1721 (build-system ruby-build-system)
1722 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
1723 (synopsis "JSON library for Ruby")
1724 (description "This Ruby library provides a JSON implementation written as
1725 a native C extension.")
1726 (home-page "http://json-jruby.rubyforge.org/")
1727 (license (list license:ruby license:gpl2)))) ; GPL2 only
1729 (define-public ruby-listen
1731 (name "ruby-listen")
1736 (uri (rubygems-uri "listen" version))
1739 "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
1740 (build-system ruby-build-system)
1741 (arguments '(#:tests? #f)) ; no tests
1743 ;; FIXME: omitting "ruby-rb-fsevent" which is only for MacOS.
1744 `(("ruby-rb-inotify" ,ruby-rb-inotify)))
1745 (synopsis "Listen to file modifications")
1746 (description "The Listen gem listens to file modifications and notifies
1747 you about the changes.")
1748 (home-page "https://github.com/guard/listen")
1749 (license license:expat)))
1751 (define-public ruby-activesupport
1753 (name "ruby-activesupport")
1758 (uri (rubygems-uri "activesupport" version))
1761 "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
1762 (build-system ruby-build-system)
1764 '(#:tests? #f)) ; no tests
1766 `(("ruby-i18n" ,ruby-i18n)
1767 ("ruby-json" ,ruby-json)
1768 ("ruby-minitest" ,ruby-minitest)
1769 ("ruby-thread-safe" ,ruby-thread-safe)
1770 ("ruby-tzinfo" ,ruby-tzinfo)))
1771 (synopsis "Ruby on Rails utility library")
1772 (description "ActiveSupport is a toolkit of support libraries and Ruby
1773 core extensions extracted from the Rails framework. It includes support for
1774 multibyte strings, internationalization, time zones, and testing.")
1775 (home-page "http://www.rubyonrails.org")
1776 (license license:expat)))
1778 (define-public ruby-ox
1785 (uri (rubygems-uri "ox" version))
1788 "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
1789 (build-system ruby-build-system)
1791 '(#:tests? #f)) ; no tests
1792 (synopsis "Optimized XML library for Ruby")
1794 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
1795 written as a native C extension. It was designed to be an alternative to
1796 Nokogiri and other Ruby XML parsers for generic XML parsing and as an
1797 alternative to Marshal for Object serialization. ")
1798 (home-page "http://www.ohler.com/ox")
1799 (license license:expat)))
1801 (define-public ruby-pg
1808 (uri (rubygems-uri "pg" version))
1811 "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
1812 (build-system ruby-build-system)
1814 '(#:test-target "spec"))
1816 `(("ruby-rake-compiler" ,ruby-rake-compiler)
1817 ("ruby-hoe" ,ruby-hoe)
1818 ("ruby-rspec" ,ruby-rspec)))
1820 `(("postgresql" ,postgresql)))
1821 (synopsis "Ruby interface to PostgreSQL")
1822 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
1823 with PostgreSQL 8.4 and later.")
1824 (home-page "https://bitbucket.org/ged/ruby-pg")
1825 (license license:ruby)))
1827 (define-public ruby-byebug
1829 (name "ruby-byebug")
1834 (uri (rubygems-uri "byebug" version))
1837 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
1838 (build-system ruby-build-system)
1840 '(#:tests? #f)) ; no tests
1841 (synopsis "Debugger for Ruby 2")
1842 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
1843 TracePoint C API for execution control and the Debug Inspector C API for call
1844 stack navigation. The core component provides support that front-ends can
1845 build on. It provides breakpoint handling and bindings for stack frames among
1846 other things and it comes with a command line interface.")
1847 (home-page "http://github.com/deivid-rodriguez/byebug")
1848 (license license:bsd-2)))
1850 (define-public ruby-rack
1857 (uri (rubygems-uri "rack" version))
1860 "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
1861 (build-system ruby-build-system)
1864 (modify-phases %standard-phases
1865 (add-before 'check 'fix-tests
1867 ;; A few of the tests use the length of a file on disk for
1868 ;; Content-Length and Content-Range headers. However, this file
1869 ;; has a shebang in it which an earlier phase patches, growing
1870 ;; the file size from 193 to 239 bytes when the store prefix is
1872 (let ((size-diff (- (string-length (which "ruby"))
1873 (string-length "/usr/bin/env ruby"))))
1874 (substitute* '("test/spec_file.rb")
1876 (number->string (+ 193 size-diff)))
1877 (("bytes(.)22-33" all delimiter)
1878 (string-append "bytes"
1880 (number->string (+ 22 size-diff))
1882 (number->string (+ 33 size-diff))))))
1885 `(("ruby-bacon" ,ruby-bacon)))
1886 (synopsis "Unified web application interface for Ruby")
1887 (description "Rack provides a minimal, modular and adaptable interface for
1888 developing web applications in Ruby. By wrapping HTTP requests and responses,
1889 it unifies the API for web servers, web frameworks, and software in between
1890 into a single method call.")
1891 (home-page "http://rack.github.io/")
1892 (license license:expat)))
1894 (define-public ruby-docile
1896 (name "ruby-docile")
1901 (uri (rubygems-uri "docile" version))
1904 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
1905 (build-system ruby-build-system)
1907 '(#:tests? #f)) ; needs github-markup, among others
1908 (synopsis "Ruby EDSL helper library")
1909 (description "Docile is a Ruby library that provides an interface for
1910 creating embedded domain specific languages (EDSLs) that manipulate existing
1912 (home-page "https://ms-ati.github.io/docile/")
1913 (license license:expat)))
1915 (define-public ruby-gherkin3
1917 (name "ruby-gherkin3")
1922 (uri (rubygems-uri "gherkin3" version))
1925 "0xsyxhqa1gwcxzvsdy4didaiq5vam8ma3fbwbw2w60via4k6r1z9"))))
1926 (build-system ruby-build-system)
1928 `(("bundler" ,bundler)))
1930 '(#:tests? #f)) ; needs simplecov, among others
1931 (synopsis "Gherkin parser for Ruby")
1932 (description "Gherkin 3 is a parser and compiler for the Gherkin language.
1933 It is intended to replace Gherkin 2 and be used by all Cucumber
1934 implementations to parse '.feature' files.")
1935 (home-page "https://github.com/cucumber/gherkin3")
1936 (license license:expat)))
1938 (define-public ruby-cucumber-core
1940 (name "ruby-cucumber-core")
1945 (uri (rubygems-uri "cucumber-core" version))
1948 "12mrzf0s96izpq0k10lahlkgwc4fjs0zfs344rh8r8h3w3jyppr8"))))
1949 (build-system ruby-build-system)
1951 `(("ruby-gherkin3" ,ruby-gherkin3)))
1953 `(("bundler" ,bundler)))
1955 '(#:tests? #f)) ; needs simplecov, among others
1956 (synopsis "Core library for the Cucumber BDD app")
1957 (description "Cucumber is a tool for running automated tests
1958 written in plain language. Because they're written in plain language,
1959 they can be read by anyone on your team. Because they can be read by
1960 anyone, you can use them to help improve communication, collaboration
1961 and trust on your team.")
1962 (home-page "https://cucumber.io/")
1963 (license license:expat)))
1965 (define-public ruby-bio-logger
1967 (name "ruby-bio-logger")
1972 (uri (rubygems-uri "bio-logger" version))
1975 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
1976 (build-system ruby-build-system)
1978 `(#:tests? #f)) ; rake errors, missing shoulda
1980 `(("ruby-log4r" ,ruby-log4r)))
1981 (synopsis "Log4r wrapper for Ruby")
1982 (description "Bio-logger is a wrapper around Log4r adding extra logging
1983 features such as filtering and fine grained logging.")
1984 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
1985 (license license:expat)))
1987 (define-public ruby-yard
1994 (uri (rubygems-uri "yard" version))
1997 "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x"))))
1998 (build-system ruby-build-system)
2000 `(#:test-target "specs"
2002 (modify-phases %standard-phases
2003 (add-before 'check 'set-HOME
2004 ;; $HOME needs to be set to somewhere writeable for tests to run
2005 (lambda _ (setenv "HOME" "/tmp") #t)))))
2007 `(("ruby-rspec" ,ruby-rspec-2)
2008 ("ruby-rack" ,ruby-rack)))
2009 (synopsis "Documentation generation tool for Ruby")
2011 "YARD is a documentation generation tool for the Ruby programming
2012 language. It enables the user to generate consistent, usable documentation
2013 that can be exported to a number of formats very easily, and also supports
2014 extending for custom Ruby constructs such as custom class level definitions.")
2015 (home-page "http://yardoc.org")
2016 (license license:expat)))
2018 (define-public ruby-eventmachine
2020 (name "ruby-eventmachine")
2025 (uri (rubygems-uri "eventmachine" version))
2028 "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp"))))
2029 (build-system ruby-build-system)
2031 '(#:tests? #f)) ; test suite tries to connect to google.com
2033 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
2034 (synopsis "Single-threaded network event framework for Ruby")
2036 "EventMachine implements a single-threaded engine for arbitrary network
2037 communications. EventMachine wraps all interactions with sockets, allowing
2038 programs to concentrate on the implementation of network protocols. It can be
2039 used to create both network servers and clients.")
2040 (home-page "http://rubyeventmachine.com")
2041 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT