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-minitest
1260 (name "ruby-minitest")
1264 (uri (rubygems-uri "minitest" version))
1267 "0rxqfakp629mp3vwda7zpgb57lcns5znkskikbfd0kriwv8i1vq8"))))
1268 (build-system ruby-build-system)
1270 `(("ruby-hoe" ,ruby-hoe)))
1271 (synopsis "Small test suite library for Ruby")
1272 (description "Minitest provides a complete suite of Ruby testing
1273 facilities supporting TDD, BDD, mocking, and benchmarking.")
1274 (home-page "https://github.com/seattlerb/minitest")
1275 (license license:expat)))
1277 (define-public ruby-minitest-sprint
1279 (name "ruby-minitest-sprint")
1283 (uri (rubygems-uri "minitest-sprint" version))
1286 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
1287 (build-system ruby-build-system)
1289 `(("ruby-hoe" ,ruby-hoe)
1290 ("ruby-minitest" ,ruby-minitest)))
1291 (synopsis "Fast test suite runner for minitest")
1292 (description "Minitest-sprint is a test runner for minitest that makes it
1293 easier to re-run individual failing tests.")
1294 (home-page "https://github.com/seattlerb/minitest-sprint")
1295 (license license:expat)))
1297 (define-public ruby-minitest-bacon
1299 (name "ruby-minitest-bacon")
1303 (uri (rubygems-uri "minitest-bacon" version))
1306 "0cm7r68422743i3b6fm4rrm0r6cnnjmglq5gcmmgl1f0rk5hnf6r"))))
1307 (build-system ruby-build-system)
1309 `(("ruby-hoe" ,ruby-hoe)))
1311 `(("ruby-minitest" ,ruby-minitest)))
1312 (synopsis "Bacon compatibility library for minitest")
1313 (description "Minitest-bacon extends minitest with bacon-like
1314 functionality, making it easier to migrate test suites from bacon to minitest.")
1315 (home-page "https://github.com/seattlerb/minitest-bacon")
1316 (license license:expat)))
1318 (define-public ruby-daemons
1320 (name "ruby-daemons")
1324 (uri (rubygems-uri "daemons" version))
1327 "121c7vkimg3baxga69xvdkwxiq8wkmxqvdbyqi5i82vhih5d3cn3"))))
1328 (build-system ruby-build-system)
1330 `(#:tests? #f)) ; no test suite
1331 (synopsis "Daemonize Ruby programs")
1332 (description "Daemons provides a way to wrap existing Ruby scripts to be
1333 run as a daemon and to be controlled by simple start/stop/restart commands.")
1334 (home-page "https://github.com/thuehlinger/daemons")
1335 (license license:expat)))
1337 (define-public ruby-git
1343 (uri (rubygems-uri "git" version))
1346 "1sqfj8lmhl7c5zamcckkpik4izfph2zkv6krw0i8mzj5pdws5acs"))))
1347 (build-system ruby-build-system)
1349 `(#:tests? #f ; no tests
1350 #:phases (modify-phases %standard-phases
1351 (add-after 'install 'patch-git-binary
1352 (lambda* (#:key inputs outputs #:allow-other-keys)
1353 ;; Make the default git binary an absolute path to the
1355 (let ((git (string-append (assoc-ref inputs "git")
1357 (config (string-append (getenv "GEM_HOME")
1358 "/gems/git-" ,version
1359 "/lib/git/config.rb")))
1360 (substitute* (list config)
1362 (string-append "'" git "'")))
1366 (synopsis "Ruby wrappers for Git")
1367 (description "Ruby/Git is a Ruby library that can be used to create, read
1368 and manipulate Git repositories by wrapping system calls to the git binary.")
1369 (home-page "https://github.com/schacon/ruby-git")
1370 (license license:expat)))
1372 (define-public ruby-slop
1378 (uri (rubygems-uri "slop" version))
1381 "0dj0ps6v1mqd02k84mgwd7hp578n2bzl7c51h3grdhxfl3jkfsj5"))))
1382 (build-system ruby-build-system)
1384 `(("ruby-minitest" ,ruby-minitest)))
1385 (synopsis "Ruby command line option parser")
1386 (description "Slop provides a Ruby domain specific language for gathering
1387 options and parsing command line flags.")
1388 (home-page "https://github.com/leejarvis/slop")
1389 (license license:expat)))
1391 (define-public ruby-slop-3
1392 (package (inherit ruby-slop)
1396 (uri (rubygems-uri "slop" version))
1399 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
1401 (define-public ruby-multipart-post
1403 (name "ruby-multipart-post")
1407 (uri (rubygems-uri "multipart-post" version))
1410 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
1411 (build-system ruby-build-system)
1413 `(("bundler" ,bundler)))
1414 (synopsis "Multipart POST library for Ruby")
1415 (description "Multipart-Post Adds multipart POST capability to Ruby's
1417 (home-page "https://github.com/nicksieger/multipart-post")
1418 (license license:expat)))
1420 (define-public ruby-arel
1426 (uri (rubygems-uri "arel" version))
1429 "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk"))))
1430 (build-system ruby-build-system)
1431 (arguments '(#:tests? #f)) ; no tests
1432 (home-page "https://github.com/rails/arel")
1433 (synopsis "SQL AST manager for Ruby")
1434 (description "Arel is a SQL AST manager for Ruby. It simplifies the
1435 generation of complex SQL queries and is compatible with various RDBMSes.")
1436 (license license:expat)))
1438 (define-public ruby-minitar
1440 (name "ruby-minitar")
1445 (uri (rubygems-uri "minitar" version))
1448 "1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka"))))
1449 (build-system ruby-build-system)
1451 '(#:tests? #f)) ; missing a gemspec
1452 (synopsis "Ruby library and utility for handling tar archives")
1454 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
1455 that provides the ability to deal with POSIX tar archive files.")
1456 (home-page "http://www.github.com/atoulme/minitar")
1457 (license (list license:gpl2+ license:ruby))))
1459 (define-public ruby-mini-portile
1461 (name "ruby-mini-portile")
1466 (uri (rubygems-uri "mini_portile" version))
1469 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
1470 (build-system ruby-build-system)
1472 '(#:tests? #f)) ; tests require network access
1473 (synopsis "Ports system for Ruby developers")
1474 (description "Mini-portile is a port/recipe system for Ruby developers.
1475 It provides a standard way to compile against specific versions of libraries
1476 to reproduce user environments.")
1477 (home-page "http://github.com/flavorjones/mini_portile")
1478 (license license:expat)))
1480 (define-public ruby-nokogiri
1482 (name "ruby-nokogiri")
1486 (uri (rubygems-uri "nokogiri" version))
1489 "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30"))))
1490 (build-system ruby-build-system)
1492 ;; Tests fail because Nokogiri can only test with an installed extension,
1493 ;; and also because many test framework dependencies are missing.
1495 #:gem-flags (list "--" "--use-system-libraries"
1496 (string-append "--with-xml2-include="
1497 (assoc-ref %build-inputs "libxml2")
1498 "/include/libxml2" ))))
1500 `(("ruby-hoe" ,ruby-hoe)
1501 ("ruby-rake-compiler", ruby-rake-compiler)))
1504 ("libxml2" ,libxml2)
1505 ("libxslt" ,libxslt)))
1507 `(("ruby-mini-portile" ,ruby-mini-portile)))
1508 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
1509 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
1510 both CSS3 selector and XPath 1.0 support.")
1511 (home-page "http://www.nokogiri.org/")
1512 (license license:expat)))
1514 (define-public ruby-method-source
1516 (name "ruby-method-source")
1521 (uri (rubygems-uri "method_source" version))
1524 "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
1525 (build-system ruby-build-system)
1527 `(("ruby-bacon" ,ruby-bacon)
1529 (synopsis "Retrieve the source code for Ruby methods")
1530 (description "Method_source retrieves the source code for Ruby methods.
1531 Additionally, it can extract source code from Proc and Lambda objects or just
1533 (home-page "https://github.com/banister/method_source")
1534 (license license:expat)))
1536 (define-public ruby-coderay
1538 (name "ruby-coderay")
1543 (uri (rubygems-uri "coderay" version))
1546 "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
1547 (build-system ruby-build-system)
1549 '(#:tests? #f)) ; missing test files
1550 (synopsis "Ruby syntax highlighting library")
1551 (description "Coderay is a Ruby library that provides syntax highlighting
1552 for select languages.")
1553 (home-page "http://coderay.rubychan.de")
1554 (license license:expat)))
1556 (define-public ruby-pry
1563 (uri (rubygems-uri "pry" version))
1566 "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
1567 (build-system ruby-build-system)
1569 '(#:tests? #f)) ; no tests
1571 `(("ruby-coderay" ,ruby-coderay)
1572 ("ruby-method-source" ,ruby-method-source)
1573 ("ruby-slop" ,ruby-slop-3)))
1574 (synopsis "Ruby REPL")
1575 (description "Pry is an IRB alternative and runtime developer console for
1576 Ruby. It features syntax highlighting, a plugin architecture, runtime
1577 invocation, and source and documentation browsing.")
1578 (home-page "http://pryrepl.org")
1579 (license license:expat)))
1581 (define-public ruby-thread-safe
1583 (name "ruby-thread-safe")
1588 (uri (rubygems-uri "thread_safe" version))
1591 "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
1592 (build-system ruby-build-system)
1594 '(#:tests? #f)) ; needs simplecov, among others
1595 (synopsis "Thread-safe utilities for Ruby")
1596 (description "The thread_safe library provides thread-safe collections and
1597 utilities for Ruby.")
1598 (home-page "https://github.com/ruby-concurrency/thread_safe")
1599 (license license:asl2.0)))
1601 (define-public ruby-tzinfo
1603 (name "ruby-tzinfo")
1608 (uri (rubygems-uri "tzinfo" version))
1611 "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
1612 (build-system ruby-build-system)
1614 `(("ruby-thread-safe" ,ruby-thread-safe)))
1615 (synopsis "Time zone library for Ruby")
1616 (description "TZInfo is a Ruby library that provides daylight savings
1617 aware transformations between times in different time zones.")
1618 (home-page "http://tzinfo.github.io")
1619 (license license:expat)))
1621 (define-public ruby-rb-inotify
1623 (name "ruby-rb-inotify")
1628 (uri (rubygems-uri "rb-inotify" version))
1631 "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"))))
1632 (build-system ruby-build-system)
1634 '(#:tests? #f ; there are no tests
1636 (modify-phases %standard-phases
1637 ;; Building the gemspec with rake is not working here since it is
1638 ;; generated with Jeweler. It is also unnecessary because the
1639 ;; existing gemspec does not use any development tools to generate a
1643 (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
1645 `(("ruby-ffi" ,ruby-ffi)))
1647 `(("ruby-yard" ,ruby-yard)))
1648 (synopsis "Ruby wrapper for Linux's inotify")
1649 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
1650 kernel subsystem for monitoring changes to files and directories.")
1651 (home-page "https://github.com/nex3/rb-inotify")
1652 (license license:expat)))
1654 (define-public ruby-json
1661 (uri (rubygems-uri "json" version))
1664 "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
1665 (build-system ruby-build-system)
1666 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
1667 (synopsis "JSON library for Ruby")
1668 (description "This Ruby library provides a JSON implementation written as
1669 a native C extension.")
1670 (home-page "http://json-jruby.rubyforge.org/")
1671 (license (list license:ruby license:gpl2)))) ; GPL2 only
1673 (define-public ruby-listen
1675 (name "ruby-listen")
1680 (uri (rubygems-uri "listen" version))
1683 "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
1684 (build-system ruby-build-system)
1685 (arguments '(#:tests? #f)) ; no tests
1687 ;; FIXME: omitting "ruby-rb-fsevent" which is only for MacOS.
1688 `(("ruby-rb-inotify" ,ruby-rb-inotify)))
1689 (synopsis "Listen to file modifications")
1690 (description "The Listen gem listens to file modifications and notifies
1691 you about the changes.")
1692 (home-page "https://github.com/guard/listen")
1693 (license license:expat)))
1695 (define-public ruby-activesupport
1697 (name "ruby-activesupport")
1702 (uri (rubygems-uri "activesupport" version))
1705 "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
1706 (build-system ruby-build-system)
1708 '(#:tests? #f)) ; no tests
1710 `(("ruby-i18n" ,ruby-i18n)
1711 ("ruby-json" ,ruby-json)
1712 ("ruby-minitest" ,ruby-minitest)
1713 ("ruby-thread-safe" ,ruby-thread-safe)
1714 ("ruby-tzinfo" ,ruby-tzinfo)))
1715 (synopsis "Ruby on Rails utility library")
1716 (description "ActiveSupport is a toolkit of support libraries and Ruby
1717 core extensions extracted from the Rails framework. It includes support for
1718 multibyte strings, internationalization, time zones, and testing.")
1719 (home-page "http://www.rubyonrails.org")
1720 (license license:expat)))
1722 (define-public ruby-ox
1729 (uri (rubygems-uri "ox" version))
1732 "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
1733 (build-system ruby-build-system)
1735 '(#:tests? #f)) ; no tests
1736 (synopsis "Optimized XML library for Ruby")
1738 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
1739 written as a native C extension. It was designed to be an alternative to
1740 Nokogiri and other Ruby XML parsers for generic XML parsing and as an
1741 alternative to Marshal for Object serialization. ")
1742 (home-page "http://www.ohler.com/ox")
1743 (license license:expat)))
1745 (define-public ruby-pg
1752 (uri (rubygems-uri "pg" version))
1755 "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
1756 (build-system ruby-build-system)
1758 '(#:test-target "spec"))
1760 `(("ruby-rake-compiler" ,ruby-rake-compiler)
1761 ("ruby-hoe" ,ruby-hoe)
1762 ("ruby-rspec" ,ruby-rspec)))
1764 `(("postgresql" ,postgresql)))
1765 (synopsis "Ruby interface to PostgreSQL")
1766 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
1767 with PostgreSQL 8.4 and later.")
1768 (home-page "https://bitbucket.org/ged/ruby-pg")
1769 (license license:ruby)))
1771 (define-public ruby-byebug
1773 (name "ruby-byebug")
1778 (uri (rubygems-uri "byebug" version))
1781 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
1782 (build-system ruby-build-system)
1784 '(#:tests? #f)) ; no tests
1785 (synopsis "Debugger for Ruby 2")
1786 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
1787 TracePoint C API for execution control and the Debug Inspector C API for call
1788 stack navigation. The core component provides support that front-ends can
1789 build on. It provides breakpoint handling and bindings for stack frames among
1790 other things and it comes with a command line interface.")
1791 (home-page "http://github.com/deivid-rodriguez/byebug")
1792 (license license:bsd-2)))
1794 (define-public ruby-rack
1801 (uri (rubygems-uri "rack" version))
1804 "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
1805 (build-system ruby-build-system)
1808 (modify-phases %standard-phases
1809 (add-before 'check 'fix-tests
1811 ;; A few of the tests use the length of a file on disk for
1812 ;; Content-Length and Content-Range headers. However, this file
1813 ;; has a shebang in it which an earlier phase patches, growing
1814 ;; the file size from 193 to 239 bytes when the store prefix is
1816 (let ((size-diff (- (string-length (which "ruby"))
1817 (string-length "/usr/bin/env ruby"))))
1818 (substitute* '("test/spec_file.rb")
1820 (number->string (+ 193 size-diff)))
1821 (("bytes(.)22-33" all delimiter)
1822 (string-append "bytes"
1824 (number->string (+ 22 size-diff))
1826 (number->string (+ 33 size-diff))))))
1829 `(("ruby-bacon" ,ruby-bacon)))
1830 (synopsis "Unified web application interface for Ruby")
1831 (description "Rack provides a minimal, modular and adaptable interface for
1832 developing web applications in Ruby. By wrapping HTTP requests and responses,
1833 it unifies the API for web servers, web frameworks, and software in between
1834 into a single method call.")
1835 (home-page "http://rack.github.io/")
1836 (license license:expat)))
1838 (define-public ruby-docile
1840 (name "ruby-docile")
1845 (uri (rubygems-uri "docile" version))
1848 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
1849 (build-system ruby-build-system)
1851 '(#:tests? #f)) ; needs github-markup, among others
1852 (synopsis "Ruby EDSL helper library")
1853 (description "Docile is a Ruby library that provides an interface for
1854 creating embedded domain specific languages (EDSLs) that manipulate existing
1856 (home-page "https://ms-ati.github.io/docile/")
1857 (license license:expat)))
1859 (define-public ruby-gherkin3
1861 (name "ruby-gherkin3")
1866 (uri (rubygems-uri "gherkin3" version))
1869 "0xsyxhqa1gwcxzvsdy4didaiq5vam8ma3fbwbw2w60via4k6r1z9"))))
1870 (build-system ruby-build-system)
1872 `(("bundler" ,bundler)))
1874 '(#:tests? #f)) ; needs simplecov, among others
1875 (synopsis "Gherkin parser for Ruby")
1876 (description "Gherkin 3 is a parser and compiler for the Gherkin language.
1877 It is intended to replace Gherkin 2 and be used by all Cucumber
1878 implementations to parse '.feature' files.")
1879 (home-page "https://github.com/cucumber/gherkin3")
1880 (license license:expat)))
1882 (define-public ruby-cucumber-core
1884 (name "ruby-cucumber-core")
1889 (uri (rubygems-uri "cucumber-core" version))
1892 "12mrzf0s96izpq0k10lahlkgwc4fjs0zfs344rh8r8h3w3jyppr8"))))
1893 (build-system ruby-build-system)
1895 `(("ruby-gherkin3" ,ruby-gherkin3)))
1897 `(("bundler" ,bundler)))
1899 '(#:tests? #f)) ; needs simplecov, among others
1900 (synopsis "Core library for the Cucumber BDD app")
1901 (description "Cucumber is a tool for running automated tests
1902 written in plain language. Because they're written in plain language,
1903 they can be read by anyone on your team. Because they can be read by
1904 anyone, you can use them to help improve communication, collaboration
1905 and trust on your team.")
1906 (home-page "https://cucumber.io/")
1907 (license license:expat)))
1909 (define-public ruby-bio-logger
1911 (name "ruby-bio-logger")
1916 (uri (rubygems-uri "bio-logger" version))
1919 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
1920 (build-system ruby-build-system)
1922 `(#:tests? #f)) ; rake errors, missing shoulda
1924 `(("ruby-log4r" ,ruby-log4r)))
1925 (synopsis "Log4r wrapper for Ruby")
1926 (description "Bio-logger is a wrapper around Log4r adding extra logging
1927 features such as filtering and fine grained logging.")
1928 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
1929 (license license:expat)))
1931 (define-public ruby-yard
1938 (uri (rubygems-uri "yard" version))
1941 "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x"))))
1942 (build-system ruby-build-system)
1944 `(#:test-target "specs"
1946 (modify-phases %standard-phases
1947 (add-before 'check 'set-HOME
1948 ;; $HOME needs to be set to somewhere writeable for tests to run
1949 (lambda _ (setenv "HOME" "/tmp") #t)))))
1951 `(("ruby-rspec" ,ruby-rspec-2)
1952 ("ruby-rack" ,ruby-rack)))
1953 (synopsis "Documentation generation tool for Ruby")
1955 "YARD is a documentation generation tool for the Ruby programming
1956 language. It enables the user to generate consistent, usable documentation
1957 that can be exported to a number of formats very easily, and also supports
1958 extending for custom Ruby constructs such as custom class level definitions.")
1959 (home-page "http://yardoc.org")
1960 (license license:expat)))
1962 (define-public ruby-eventmachine
1964 (name "ruby-eventmachine")
1969 (uri (rubygems-uri "eventmachine" version))
1972 "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp"))))
1973 (build-system ruby-build-system)
1975 '(#:tests? #f)) ; test suite tries to connect to google.com
1977 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
1978 (synopsis "Single-threaded network event framework for Ruby")
1980 "EventMachine implements a single-threaded engine for arbitrary network
1981 communications. EventMachine wraps all interactions with sockets, allowing
1982 programs to concentrate on the implementation of network protocols. It can be
1983 used to create both network servers and clients.")
1984 (home-page "http://rubyeventmachine.com")
1985 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT