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-atoulme-saikuro
523 (name "ruby-atoulme-saikuro")
527 (uri (rubygems-uri "atoulme-Saikuro" version))
530 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
531 (build-system ruby-build-system)
532 ;; FIXME: There are no unit tests. The tests are demonstrations of the
534 (arguments `(#:tests? #f))
535 (synopsis "Cyclomatic complexity analyzer")
536 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
537 given Ruby source code Saikuro will generate a report listing the cyclomatic
538 complexity of each method found. In addition, Saikuro counts the number of
539 lines per method and can generate a listing of the number of tokens on each
541 (home-page "http://www.github.com/atoulme/Saikuro")
542 ;; File headers contain the BSD-3 license and the README.rdoc says that
543 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
544 ;; of the Expat license.
545 (license license:bsd-3)))
547 (define-public ruby-ci-reporter
549 (name "ruby-ci-reporter")
553 (uri (rubygems-uri "ci_reporter" version))
556 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
557 (build-system ruby-build-system)
559 `(#:test-target "rspec"))
561 `(("ruby-builder" ,ruby-builder)))
563 `(("bundler" ,bundler)
564 ("ruby-rspec" ,ruby-rspec)))
565 (synopsis "Generate XML reports of runs test")
567 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
568 you to generate XML reports of your test runs. The resulting files can be
569 read by a continuous integration system that understands Ant's JUnit report
571 (home-page "https://github.com/nicksieger/ci_reporter")
572 (license license:expat)))
574 (define-public ruby-orderedhash
576 (name "ruby-orderedhash")
580 (uri (rubygems-uri "orderedhash" version))
583 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
584 (build-system ruby-build-system)
586 '(#:tests? #f)) ; no test suite
587 (synopsis "Ruby library providing an order-preserving hash")
588 (description "Orderedhash is a Ruby library providing a hash
589 implementation that preserves the order of items and features some array-like
591 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
592 (license license:public-domain)))
594 (define-public ruby-libxml
601 (uri (rubygems-uri "libxml-ruby" version))
604 "1dhjqp4r9vkdp00l6h1cj8qfndzxlhlxk6b9g0w4v55gz857ilhb"))))
605 (build-system ruby-build-system)
608 ("libxml2" ,libxml2)))
610 '(#:tests? #f ; test suite hangs for unknown reason
613 (string-append "--with-xml2-include="
614 (assoc-ref %build-inputs "libxml2")
615 "/include/libxml2" ))))
616 (synopsis "Ruby bindings for GNOME Libxml2")
617 (description "The Libxml-Ruby project provides Ruby language bindings for
618 the GNOME Libxml2 XML toolkit.")
619 (home-page "http://xml4r.github.com/libxml-ruby")
620 (license license:expat)))
622 (define-public ruby-xml-simple
624 (name "ruby-xml-simple")
628 (uri (rubygems-uri "xml-simple" version))
631 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
632 (build-system ruby-build-system)
634 '(#:tests? #f)) ; no test suite
635 (synopsis "Simple Ruby library for XML processing")
636 (description "This library provides a simple API for XML processing in
638 (home-page "https://github.com/maik/xml-simple")
639 (license license:ruby)))
641 (define-public ruby-thor
647 (uri (rubygems-uri "thor" version))
650 "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z"))))
651 (build-system ruby-build-system)
653 '(#:tests? #f)) ; no test suite
655 `(("bundler" ,bundler)))
656 (synopsis "Ruby toolkit for building command-line interfaces")
657 (description "Thor is a toolkit for building powerful command-line
659 (home-page "http://whatisthor.com/")
660 (license license:expat)))
662 (define-public ruby-lumberjack
664 (name "ruby-lumberjack")
668 (uri (rubygems-uri "lumberjack" version))
671 "162frm2bwy58pj8ccsdqa4a6i0csrhb9h5l3inhkl1ivgfc8814l"))))
672 (build-system ruby-build-system)
674 `(("ruby-rspec" ,ruby-rspec)))
675 (synopsis "Logging utility library for Ruby")
676 (description "Lumberjack is a simple logging utility that can be a drop in
677 replacement for Logger or ActiveSupport::BufferedLogger. It provides support
678 for automatically rolling log files even with multiple processes writing the
680 (home-page "http://github.com/bdurand/lumberjack")
681 (license license:expat)))
683 (define-public ruby-nenv
689 (uri (rubygems-uri "nenv" version))
692 "152wxwri0afwgnxdf93gi6wjl9rr5z7vwp8ln0gpa3rddbfc27s6"))))
693 (build-system ruby-build-system)
695 `(#:tests? #f)) ; no tests included
697 `(("ruby-rspec" ,ruby-rspec)
698 ("bundler" ,bundler)))
699 (synopsis "Ruby interface for modifying the environment")
700 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
701 and inspect the environment.")
702 (home-page "https://github.com/e2/nenv")
703 (license license:expat)))
705 (define-public ruby-permutation
707 (name "ruby-permutation")
711 (uri (rubygems-uri "permutation" version))
714 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
715 (build-system ruby-build-system)
718 (modify-phases %standard-phases
719 (add-after 'unpack 'fix-rakefile
721 (substitute* "Rakefile"
722 (("require 'rake/gempackagetask'")
723 "require 'rubygems/package_task'")
724 (("include Config") ""))
728 (zero? (system* "ruby" "-Ilib" "test/test.rb")))))))
729 (synopsis "Library to perform operations with sequence permutations")
730 (description "This package provides a Ruby library to perform different
731 operations with permutations of sequences, such as strings and arrays.")
732 (home-page "http://flori.github.io/permutation")
733 (license license:gpl2))) ; GPL 2 only
735 (define-public ruby-shellany
737 (name "ruby-shellany")
741 (uri (rubygems-uri "shellany" version))
744 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
745 (build-system ruby-build-system)
747 `(#:test-target "default"
749 (modify-phases %standard-phases
750 (add-after 'unpack 'fix-version-test
752 (substitute* "spec/shellany_spec.rb"
753 (("^RSpec") "require \"shellany\"\nRSpec"))
756 `(("ruby-rspec" ,ruby-rspec)
757 ("ruby-nenv" ,ruby-nenv)
758 ("bundler" ,bundler)))
759 (synopsis "Capture command output")
760 (description "Shellany is a Ruby library providing functions to capture
761 the output produced by running shell commands.")
762 (home-page "https://rubygems.org/gems/shellany")
763 (license license:expat)))
765 (define-public ruby-notiffany
767 (name "ruby-notiffany")
771 (uri (rubygems-uri "notiffany" version))
774 "1v5x1w59qq85r6dpv3y9ga34dfd7hka1qxyiykaw7gm0i6kggbhi"))))
775 (build-system ruby-build-system)
776 ;; Tests are not included in the gem.
777 (arguments `(#:tests? #f))
779 `(("ruby-shellany" ,ruby-shellany)
780 ("ruby-nenv" ,ruby-nenv)))
782 `(("bundler" ,bundler)))
783 (synopsis "Wrapper libray for notification libraries")
784 (description "Notiffany is a Ruby wrapper libray for notification
785 libraries such as Libnotify.")
786 (home-page "https://github.com/guard/notiffany")
787 (license license:expat)))
789 (define-public ruby-formatador
791 (name "ruby-formatador")
795 (uri (rubygems-uri "formatador" version))
798 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
799 (build-system ruby-build-system)
800 ;; Circular dependency: Tests require ruby-shindo, which requires
801 ;; ruby-formatador at runtime.
802 (arguments `(#:tests? #f))
803 (synopsis "Ruby library to format text on stdout")
804 (description "Formatador is a Ruby library to format text printed to the
805 standard output stream.")
806 (home-page "http://github.com/geemus/formatador")
807 (license license:expat)))
809 (define-public ruby-shindo
815 (uri (rubygems-uri "shindo" version))
818 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
819 (build-system ruby-build-system)
821 `(#:test-target "shindo_tests"
823 (modify-phases %standard-phases
824 (add-after 'unpack 'fix-tests
826 (substitute* "Rakefile"
827 (("system \"shindo") "system \"./bin/shindo")
828 ;; This test doesn't work, so we disable it.
829 (("fail \"The build_error test should fail") "#"))
832 `(("ruby-formatador" ,ruby-formatador)))
833 (synopsis "Simple depth first Ruby testing")
834 (description "Shindo is a simple depth first testing library for Ruby.")
835 (home-page "https://github.com/geemus/shindo")
836 (license license:expat)))
838 (define-public ruby-rubygems-tasks
840 (name "ruby-rubygems-tasks")
844 (uri (rubygems-uri "rubygems-tasks" version))
847 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
848 (build-system ruby-build-system)
849 ;; Tests need Internet access.
850 (arguments `(#:tests? #f))
852 `(("ruby-rspec" ,ruby-rspec)
853 ("ruby-yard" ,ruby-yard)))
854 (synopsis "Rake tasks for managing and releasing Ruby Gems")
855 (description "Rubygems-task provides Rake tasks for managing and releasing
857 (home-page "https://github.com/postmodern/rubygems-tasks")
858 (license license:expat)))
860 (define-public ruby-ffi
866 (uri (rubygems-uri "ffi" version))
869 "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj"))))
870 (build-system ruby-build-system)
871 ;; FIXME: Before running tests the build system attempts to build libffi
873 (arguments `(#:tests? #f))
875 `(("ruby-rake-compiler" ,ruby-rake-compiler)
876 ("ruby-rspec" ,ruby-rspec)
877 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
879 `(("libffi" ,libffi)))
880 (synopsis "Ruby foreign function interface library")
881 (description "Ruby-FFI is a Ruby extension for programmatically loading
882 dynamic libraries, binding functions within them, and calling those functions
883 from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby
885 (home-page "http://wiki.github.com/ffi/ffi")
886 (license license:bsd-3)))
888 (define-public ruby-simplecov-html
890 (name "ruby-simplecov-html")
894 (uri (rubygems-uri "simplecov-html" version))
897 "1qni8g0xxglkx25w54qcfbi4wjkpvmb28cb7rj5zk3iqynjcdrqf"))))
898 (build-system ruby-build-system)
899 (arguments `(#:tests? #f)) ; there are no tests
901 `(("bundler" ,bundler)))
902 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
903 (description "This package provides the default HTML formatter for
904 the SimpleCov code coverage tool for Ruby version 1.9 and above.")
905 (home-page "https://github.com/colszowka/simplecov-html")
906 (license license:expat)))
908 (define-public ruby-simplecov
910 (name "ruby-simplecov")
914 (uri (rubygems-uri "simplecov" version))
917 "1q2iq2vgrdvvla5y907gkmqx6ry2qvnvc7a90hlcbwgp1w0sv6z4"))))
918 (build-system ruby-build-system)
919 ;; Simplecov depends on rubocop for code style checking at build time.
920 ;; Rubocop needs simplecov at build time.
921 (arguments `(#:tests? #f))
923 `(("ruby-json" ,ruby-json)
924 ("ruby-docile" ,ruby-docile)
925 ("ruby-simplecov-html" ,ruby-simplecov-html)))
927 `(("bundler" ,bundler)))
928 (synopsis "Code coverage framework for Ruby")
929 (description "SimpleCov is a code coverage framework for Ruby with a
930 powerful configuration library and automatic merging of coverage across test
932 (home-page "http://github.com/colszowka/simplecov")
933 (license license:expat)))
935 (define-public ruby-useragent
937 (name "ruby-useragent")
941 (uri (rubygems-uri "useragent" version))
944 "0kz7yyz7528bv4a2kfymvkcm8whqcddhmgaw1ksw1d90n30hhkpc"))))
945 (build-system ruby-build-system)
947 '(#:tests? #f)) ; no test suite
948 (synopsis "HTTP user agent parser for Ruby")
949 (description "UserAgent is a Ruby library that parses and compares HTTP
951 (home-page "https://github.com/gshutler/useragent")
952 (license license:expat)))
954 (define-public ruby-bacon
960 (uri (rubygems-uri "bacon" version))
963 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
964 (build-system ruby-build-system)
965 (synopsis "Small RSpec clone")
966 (description "Bacon is a small RSpec clone providing all essential
968 (home-page "https://github.com/chneukirchen/bacon")
969 (license license:expat)))
971 (define-public ruby-arel
977 (uri (rubygems-uri "arel" version))
980 "18wnfnzr2i5p3fygsddjbi1cimws6823nbk8drxidmnj8jz7h0ar"))))
981 (build-system ruby-build-system)
983 '(#:tests? #f)) ; no test suite
984 (synopsis "SQL AST manager for Ruby")
985 (description "Arel is a SQL AST manager for Ruby. It simplifies the
986 generation of complex SQL queries and adapts to various relational database
988 (home-page "https://github.com/rails/arel")
989 (license license:expat)))
991 (define-public ruby-connection-pool
993 (name "ruby-connection-pool")
997 (uri (rubygems-uri "connection_pool" version))
1000 "1b2bb3k39ni5mzcnqlv9y4yjkbin20s7dkwzp0jw2jf1rmzcgrmy"))))
1001 (build-system ruby-build-system)
1003 `(("bundler" ,bundler)))
1004 (synopsis "Generic connection pool for Ruby")
1005 (description "Connection_pool provides a generic connection pooling
1006 interface for Ruby programs.")
1007 (home-page "https://github.com/mperham/connection_pool")
1008 (license license:expat)))
1010 (define-public ruby-net-http-persistent
1012 (name "ruby-net-http-persistent")
1016 (uri (rubygems-uri "net-http-persistent" version))
1019 "1y9fhaax0d9kkslyiqi1zys6cvpaqx9a0y0cywp24rpygwh4s9r4"))))
1020 (build-system ruby-build-system)
1022 `(("ruby-connection-pool" ,ruby-connection-pool)
1023 ("ruby-hoe" ,ruby-hoe)))
1024 (synopsis "Persistent HTTP connection manager")
1025 (description "Net::HTTP::Persistent manages persistent HTTP connections
1026 using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
1027 (home-page "https://github.com/drbrain/net-http-persistent")
1028 (license license:expat)))
1030 (define-public ruby-power-assert
1032 (name "ruby-power-assert")
1036 (uri (rubygems-uri "power_assert" version))
1039 "0gbj379jhnff8rbb6m3kzdm282szjz1a021xzxa38d1bnswj2jx3"))))
1040 (build-system ruby-build-system)
1042 `(("bundler" ,bundler)))
1043 (synopsis "Assert library with descriptive assertion messages")
1044 (description "Power-assert is an assertion library providing descriptive
1045 assertion messages for tests.")
1046 (home-page "https://github.com/k-tsj/power_assert")
1047 (license (list license:bsd-2 license:ruby))))
1049 (define-public ruby-locale
1051 (name "ruby-locale")
1055 (uri (rubygems-uri "locale" version))
1058 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
1059 (build-system ruby-build-system)
1060 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1061 ;; which needs ruby-gettext, which needs ruby-locale. To break the
1062 ;; dependency cycle we disable tests.
1063 (arguments `(#:tests? #f))
1065 `(("bundler" ,bundler)
1066 ("ruby-yard" ,ruby-yard)))
1067 (synopsis "Ruby library providing basic localization APIs")
1069 "Ruby-Locale is the pure ruby library which provides basic APIs for
1071 (home-page "https://github.com/ruby-gettext/locale")
1072 (license (list license:lgpl3+ license:ruby))))
1074 (define-public ruby-text
1080 (uri (rubygems-uri "text" version))
1083 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
1084 (build-system ruby-build-system)
1085 (synopsis "Collection of text algorithms for Ruby")
1087 "This package provides a collection of text algorithms: Levenshtein,
1088 Soundex, Metaphone, Double Metaphone, Porter Stemming.")
1089 (home-page "http://github.com/threedaymonk/text")
1090 (license license:expat)))
1092 (define-public ruby-gettext
1094 (name "ruby-gettext")
1098 (uri (rubygems-uri "gettext" version))
1101 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
1102 (build-system ruby-build-system)
1103 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1104 ;; which needs ruby-gettext. To break the dependency cycle we disable
1106 (arguments `(#:tests? #f))
1108 `(("ruby-locale" ,ruby-locale)
1109 ("ruby-text" ,ruby-text)))
1111 `(("bundler" ,bundler)
1112 ("ruby-yard" ,ruby-yard)))
1113 (synopsis "GNU gettext-like program for Ruby")
1115 "Gettext is a GNU gettext-like program for Ruby. The catalog
1116 file (po-file) used is the same as that used by GNU gettext, allowing you to
1117 use GNU gettext tools for maintenance.")
1118 (home-page "http://ruby-gettext.github.com/")
1119 (license (list license:lgpl3+ license:ruby))))
1121 (define-public ruby-packnga
1123 (name "ruby-packnga")
1127 (uri (rubygems-uri "packnga" version))
1130 "1i71yhvlkvi5fp3m8jl9317cnddkbnrcy0syrmiw4y1lrq0cbncj"))))
1131 (build-system ruby-build-system)
1132 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
1133 ;; To break the dependency cycle we disable tests.
1134 (arguments `(#:tests? #f))
1136 `(("ruby-gettext" ,ruby-gettext)
1137 ("ruby-yard" ,ruby-yard)))
1139 `(("bundler" ,bundler)))
1140 (synopsis "Utility library to package internationalized libraries")
1142 "Packnga is a library to translate to many languages using YARD.")
1143 (home-page "http://ranguba.org/packnga/")
1144 (license license:lgpl2.0+)))
1146 (define-public ruby-test-unit
1148 (name "ruby-test-unit")
1152 (uri (rubygems-uri "test-unit" version))
1155 "0jxznjzwmrlp8wqjxsd06qbiddffn68pdhz6nrqpjbiln1z3af4w"))))
1156 (build-system ruby-build-system)
1158 `(("ruby-power-assert" ,ruby-power-assert)))
1160 `(("bundler" ,bundler)
1161 ("ruby-packnga" ,ruby-packnga)
1162 ("ruby-yard" ,ruby-yard)))
1163 (synopsis "Unit testing framework for Ruby")
1164 (description "@code{Test::Unit} is unit testing framework for Ruby, based
1165 on xUnit principles. These were originally designed by Kent Beck, creator of
1166 extreme programming software development methodology, for Smalltalk's SUnit.
1167 It allows writing tests, checking results and automated testing in Ruby.")
1168 (home-page "http://test-unit.github.io/")
1169 (license (list license:psfl license:ruby))))
1171 (define-public ruby-metaclass
1173 (name "ruby-metaclass")
1177 (uri (rubygems-uri "metaclass" version))
1180 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
1181 (build-system ruby-build-system)
1184 (modify-phases %standard-phases
1185 (add-after 'unpack 'add-test-unit-to-search-path
1186 (lambda* (#:key inputs #:allow-other-keys)
1187 (substitute* "Rakefile"
1188 (("t\\.libs << \"test\"" line)
1189 (string-append line "; t.libs << \""
1190 (assoc-ref inputs "ruby-test-unit")
1191 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1192 ,(package-version ruby-test-unit)
1196 `(("bundler" ,bundler)
1197 ("ruby-test-unit" ,ruby-test-unit)))
1198 (synopsis "Ruby library adding metaclass method to all objects")
1200 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
1202 (home-page "http://github.com/floehopper/metaclass")
1203 (license license:expat)))
1205 (define-public ruby-blankslate
1207 (name "ruby-blankslate")
1211 (uri (rubygems-uri "blankslate" version))
1214 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
1215 (build-system ruby-build-system)
1218 (modify-phases %standard-phases
1220 (lambda _ (zero? (system* "rspec" "spec/")))))))
1222 `(("bundler" ,bundler)
1223 ("ruby-rspec" ,ruby-rspec)))
1224 (synopsis "Abstract base class with no predefined methods")
1226 "BlankSlate provides an abstract base class with no predefined
1227 methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
1228 as a base class when writing classes that depend upon
1229 @code{method_missing} (e.g. dynamic proxies).")
1230 (home-page "http://github.com/masover/blankslate")
1231 (license license:expat)))
1233 (define-public ruby-instantiator
1235 (name "ruby-instantiator")
1239 (uri (rubygems-uri "instantiator" version))
1242 "0mfmqhg9xrv9i8i1kmphf15ywddhivyh2z3ccl0xjw8qy54zr21i"))))
1243 (build-system ruby-build-system)
1246 (modify-phases %standard-phases
1247 (add-after 'unpack 'add-test-unit-to-search-path
1248 (lambda* (#:key inputs #:allow-other-keys)
1249 (substitute* "Rakefile"
1250 (("t\\.libs << \"test\"" line)
1251 (string-append line "; t.libs << \""
1252 (assoc-ref inputs "ruby-test-unit")
1253 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1254 ,(package-version ruby-test-unit)
1258 `(("ruby-blankslate" ,ruby-blankslate)))
1260 `(("bundler" ,bundler)
1261 ("ruby-test-unit" ,ruby-test-unit)))
1262 (synopsis "Instantiate an arbitrary Ruby class")
1264 "Instantiator lets you instantiate an arbitrary Ruby class without
1265 knowing anything about the constructor.")
1266 (home-page "https://github.com/floehopper/instantiator")
1267 (license license:expat)))
1269 (define-public ruby-introspection
1271 (name "ruby-introspection")
1275 (uri (rubygems-uri "introspection" version))
1278 "0g1j71sqfxbqk32wj7d0bkd3dlayfqzprfq3dbr0rq107xbxjcrr"))))
1279 (build-system ruby-build-system)
1282 (modify-phases %standard-phases
1283 (add-after 'unpack 'add-test-unit-to-search-path
1284 (lambda* (#:key inputs #:allow-other-keys)
1285 (substitute* "Rakefile"
1286 (("t\\.libs << \"test\"" line)
1287 (string-append line "; t.libs << \""
1288 (assoc-ref inputs "ruby-test-unit")
1289 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1290 ,(package-version ruby-test-unit)
1294 `(("ruby-instantiator" ,ruby-instantiator)
1295 ("ruby-metaclass" ,ruby-metaclass)))
1297 `(("bundler" ,bundler)
1298 ("ruby-blankslate" ,ruby-blankslate)
1299 ("ruby-test-unit" ,ruby-test-unit)))
1300 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
1302 "Introspection provides tools to inspect the hierarchy of method
1303 definitions on a Ruby object.")
1304 (home-page "https://github.com/floehopper/introspection")
1305 (license license:expat)))
1307 (define-public ruby-redcarpet
1309 (name "ruby-redcarpet")
1313 (uri (rubygems-uri "redcarpet" version))
1316 "14i3wypp97bpk20679d1csy88q4hsgfqbnqw6mryl77m2g0d09pk"))))
1317 (build-system ruby-build-system)
1320 (modify-phases %standard-phases
1321 ;; The gem archive does not include the conformance tests.
1322 (add-after 'unpack 'disable-conformance-tests
1324 (substitute* "Rakefile"
1325 (("task :test => %w\\[test:unit test:conformance\\]")
1326 "task :test => %w[test:unit]"))
1329 `(("bundler" ,bundler)
1330 ("ruby-test-unit" ,ruby-test-unit)
1331 ("ruby-rake-compiler" ,ruby-rake-compiler)))
1332 (synopsis "Extensible Markdown to (X)HTML converter")
1334 "Redcarpet is an extensible Ruby library for Markdown processing and
1335 conversion to (X)HTML.")
1336 (home-page "http://github.com/vmg/redcarpet")
1337 (license license:expat)))
1339 (define-public ruby-mocha
1345 (uri (rubygems-uri "mocha" version))
1348 "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
1349 (build-system ruby-build-system)
1352 (modify-phases %standard-phases
1353 (add-after 'unpack 'add-test-unit-to-search-path
1354 (lambda* (#:key inputs #:allow-other-keys)
1355 (substitute* "Rakefile"
1356 (("t\\.libs << 'test'" line)
1357 (string-append line "; t.libs << \""
1358 (assoc-ref inputs "ruby-test-unit")
1359 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1360 ,(package-version ruby-test-unit)
1363 (add-before 'check 'use-latest-redcarpet
1365 (substitute* "mocha.gemspec"
1366 (("<redcarpet>, \\[\"~> 1\"\\]")
1367 "<redcarpet>, [\">= 3\"]"))
1369 (add-before 'check 'hardcode-version
1371 ;; Mocha is undefined at build time
1372 (substitute* "Rakefile"
1373 (("#\\{Mocha::VERSION\\}") ,version))
1375 (add-before 'check 'remove-failing-test
1376 ;; FIXME: This test fails for reasons unrelated to Guix packaging.
1378 (delete-file "test/acceptance/stubbing_nil_test.rb")
1381 `(("ruby-metaclass" ,ruby-metaclass)))
1383 `(("bundler" ,bundler)
1384 ("ruby-yard" ,ruby-yard)
1385 ("ruby-introspection" ,ruby-introspection)
1386 ("ruby-test-unit" ,ruby-test-unit)
1387 ("ruby-redcarpet" ,ruby-redcarpet)))
1388 (synopsis "Mocking and stubbing library for Ruby")
1390 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
1391 allows mocking and stubbing of methods on real (non-mock) classes.")
1392 (home-page "http://gofreerange.com/mocha/docs")
1393 (license license:expat)))
1395 (define-public ruby-net-ssh
1397 (name "ruby-net-ssh")
1401 (uri (rubygems-uri "net-ssh" version))
1404 "1dzqkgwi9xm6mbfk1rkk17rzmz8m5xakqi21w1b97ybng6kkw0hf"))))
1405 (build-system ruby-build-system)
1407 `(("ruby-mocha" ,ruby-mocha)
1408 ("ruby-test-unit" ,ruby-test-unit)))
1409 (synopsis "Ruby implementation of the SSH2 client protocol")
1410 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
1411 client protocol. It allows you to write programs that invoke and interact
1412 with processes on remote servers, via SSH2.")
1413 (home-page "https://github.com/net-ssh/net-ssh")
1414 (license license:expat)))
1416 (define-public ruby-minitest
1418 (name "ruby-minitest")
1422 (uri (rubygems-uri "minitest" version))
1425 "0rxqfakp629mp3vwda7zpgb57lcns5znkskikbfd0kriwv8i1vq8"))))
1426 (build-system ruby-build-system)
1428 `(("ruby-hoe" ,ruby-hoe)))
1429 (synopsis "Small test suite library for Ruby")
1430 (description "Minitest provides a complete suite of Ruby testing
1431 facilities supporting TDD, BDD, mocking, and benchmarking.")
1432 (home-page "https://github.com/seattlerb/minitest")
1433 (license license:expat)))
1435 ;; This is the last release of Minitest 4, which is used by some packages.
1436 (define-public ruby-minitest-4
1437 (package (inherit ruby-minitest)
1441 (uri (rubygems-uri "minitest" version))
1444 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
1447 (modify-phases %standard-phases
1448 (add-after 'unpack 'remove-unsupported-method
1450 (substitute* "Rakefile"
1451 (("self\\.rubyforge_name = .*") ""))
1454 (define-public ruby-minitest-sprint
1456 (name "ruby-minitest-sprint")
1460 (uri (rubygems-uri "minitest-sprint" version))
1463 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
1464 (build-system ruby-build-system)
1466 `(("ruby-hoe" ,ruby-hoe)
1467 ("ruby-minitest" ,ruby-minitest)))
1468 (synopsis "Fast test suite runner for minitest")
1469 (description "Minitest-sprint is a test runner for minitest that makes it
1470 easier to re-run individual failing tests.")
1471 (home-page "https://github.com/seattlerb/minitest-sprint")
1472 (license license:expat)))
1474 (define-public ruby-minitest-bacon
1476 (name "ruby-minitest-bacon")
1480 (uri (rubygems-uri "minitest-bacon" version))
1483 "0cm7r68422743i3b6fm4rrm0r6cnnjmglq5gcmmgl1f0rk5hnf6r"))))
1484 (build-system ruby-build-system)
1486 `(("ruby-hoe" ,ruby-hoe)))
1488 `(("ruby-minitest" ,ruby-minitest)))
1489 (synopsis "Bacon compatibility library for minitest")
1490 (description "Minitest-bacon extends minitest with bacon-like
1491 functionality, making it easier to migrate test suites from bacon to minitest.")
1492 (home-page "https://github.com/seattlerb/minitest-bacon")
1493 (license license:expat)))
1495 (define-public ruby-daemons
1497 (name "ruby-daemons")
1501 (uri (rubygems-uri "daemons" version))
1504 "121c7vkimg3baxga69xvdkwxiq8wkmxqvdbyqi5i82vhih5d3cn3"))))
1505 (build-system ruby-build-system)
1507 `(#:tests? #f)) ; no test suite
1508 (synopsis "Daemonize Ruby programs")
1509 (description "Daemons provides a way to wrap existing Ruby scripts to be
1510 run as a daemon and to be controlled by simple start/stop/restart commands.")
1511 (home-page "https://github.com/thuehlinger/daemons")
1512 (license license:expat)))
1514 (define-public ruby-git
1520 (uri (rubygems-uri "git" version))
1523 "1sqfj8lmhl7c5zamcckkpik4izfph2zkv6krw0i8mzj5pdws5acs"))))
1524 (build-system ruby-build-system)
1526 `(#:tests? #f ; no tests
1527 #:phases (modify-phases %standard-phases
1528 (add-after 'install 'patch-git-binary
1529 (lambda* (#:key inputs outputs #:allow-other-keys)
1530 ;; Make the default git binary an absolute path to the
1532 (let ((git (string-append (assoc-ref inputs "git")
1534 (config (string-append (getenv "GEM_HOME")
1535 "/gems/git-" ,version
1536 "/lib/git/config.rb")))
1537 (substitute* (list config)
1539 (string-append "'" git "'")))
1543 (synopsis "Ruby wrappers for Git")
1544 (description "Ruby/Git is a Ruby library that can be used to create, read
1545 and manipulate Git repositories by wrapping system calls to the git binary.")
1546 (home-page "https://github.com/schacon/ruby-git")
1547 (license license:expat)))
1549 (define-public ruby-slop
1555 (uri (rubygems-uri "slop" version))
1558 "0dj0ps6v1mqd02k84mgwd7hp578n2bzl7c51h3grdhxfl3jkfsj5"))))
1559 (build-system ruby-build-system)
1561 `(("ruby-minitest" ,ruby-minitest)))
1562 (synopsis "Ruby command line option parser")
1563 (description "Slop provides a Ruby domain specific language for gathering
1564 options and parsing command line flags.")
1565 (home-page "https://github.com/leejarvis/slop")
1566 (license license:expat)))
1568 (define-public ruby-slop-3
1569 (package (inherit ruby-slop)
1573 (uri (rubygems-uri "slop" version))
1576 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
1578 (define-public ruby-multipart-post
1580 (name "ruby-multipart-post")
1584 (uri (rubygems-uri "multipart-post" version))
1587 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
1588 (build-system ruby-build-system)
1590 `(("bundler" ,bundler)))
1591 (synopsis "Multipart POST library for Ruby")
1592 (description "Multipart-Post Adds multipart POST capability to Ruby's
1594 (home-page "https://github.com/nicksieger/multipart-post")
1595 (license license:expat)))
1597 (define-public ruby-arel
1603 (uri (rubygems-uri "arel" version))
1606 "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk"))))
1607 (build-system ruby-build-system)
1608 (arguments '(#:tests? #f)) ; no tests
1609 (home-page "https://github.com/rails/arel")
1610 (synopsis "SQL AST manager for Ruby")
1611 (description "Arel is a SQL AST manager for Ruby. It simplifies the
1612 generation of complex SQL queries and is compatible with various RDBMSes.")
1613 (license license:expat)))
1615 (define-public ruby-minitar
1617 (name "ruby-minitar")
1622 (uri (rubygems-uri "minitar" version))
1625 "1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka"))))
1626 (build-system ruby-build-system)
1628 '(#:tests? #f)) ; missing a gemspec
1629 (synopsis "Ruby library and utility for handling tar archives")
1631 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
1632 that provides the ability to deal with POSIX tar archive files.")
1633 (home-page "http://www.github.com/atoulme/minitar")
1634 (license (list license:gpl2+ license:ruby))))
1636 (define-public ruby-mini-portile
1638 (name "ruby-mini-portile")
1643 (uri (rubygems-uri "mini_portile" version))
1646 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
1647 (build-system ruby-build-system)
1649 '(#:tests? #f)) ; tests require network access
1650 (synopsis "Ports system for Ruby developers")
1651 (description "Mini-portile is a port/recipe system for Ruby developers.
1652 It provides a standard way to compile against specific versions of libraries
1653 to reproduce user environments.")
1654 (home-page "http://github.com/flavorjones/mini_portile")
1655 (license license:expat)))
1657 (define-public ruby-nokogiri
1659 (name "ruby-nokogiri")
1663 (uri (rubygems-uri "nokogiri" version))
1666 "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30"))))
1667 (build-system ruby-build-system)
1669 ;; Tests fail because Nokogiri can only test with an installed extension,
1670 ;; and also because many test framework dependencies are missing.
1672 #:gem-flags (list "--" "--use-system-libraries"
1673 (string-append "--with-xml2-include="
1674 (assoc-ref %build-inputs "libxml2")
1675 "/include/libxml2" ))))
1677 `(("ruby-hoe" ,ruby-hoe)
1678 ("ruby-rake-compiler", ruby-rake-compiler)))
1681 ("libxml2" ,libxml2)
1682 ("libxslt" ,libxslt)))
1684 `(("ruby-mini-portile" ,ruby-mini-portile)))
1685 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
1686 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
1687 both CSS3 selector and XPath 1.0 support.")
1688 (home-page "http://www.nokogiri.org/")
1689 (license license:expat)))
1691 (define-public ruby-method-source
1693 (name "ruby-method-source")
1698 (uri (rubygems-uri "method_source" version))
1701 "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
1702 (build-system ruby-build-system)
1704 `(("ruby-bacon" ,ruby-bacon)
1706 (synopsis "Retrieve the source code for Ruby methods")
1707 (description "Method_source retrieves the source code for Ruby methods.
1708 Additionally, it can extract source code from Proc and Lambda objects or just
1710 (home-page "https://github.com/banister/method_source")
1711 (license license:expat)))
1713 (define-public ruby-coderay
1715 (name "ruby-coderay")
1720 (uri (rubygems-uri "coderay" version))
1723 "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
1724 (build-system ruby-build-system)
1726 '(#:tests? #f)) ; missing test files
1727 (synopsis "Ruby syntax highlighting library")
1728 (description "Coderay is a Ruby library that provides syntax highlighting
1729 for select languages.")
1730 (home-page "http://coderay.rubychan.de")
1731 (license license:expat)))
1733 (define-public ruby-pry
1740 (uri (rubygems-uri "pry" version))
1743 "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
1744 (build-system ruby-build-system)
1746 '(#:tests? #f)) ; no tests
1748 `(("ruby-coderay" ,ruby-coderay)
1749 ("ruby-method-source" ,ruby-method-source)
1750 ("ruby-slop" ,ruby-slop-3)))
1751 (synopsis "Ruby REPL")
1752 (description "Pry is an IRB alternative and runtime developer console for
1753 Ruby. It features syntax highlighting, a plugin architecture, runtime
1754 invocation, and source and documentation browsing.")
1755 (home-page "http://pryrepl.org")
1756 (license license:expat)))
1758 (define-public ruby-thread-safe
1760 (name "ruby-thread-safe")
1765 (uri (rubygems-uri "thread_safe" version))
1768 "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
1769 (build-system ruby-build-system)
1771 '(#:tests? #f)) ; needs simplecov, among others
1772 (synopsis "Thread-safe utilities for Ruby")
1773 (description "The thread_safe library provides thread-safe collections and
1774 utilities for Ruby.")
1775 (home-page "https://github.com/ruby-concurrency/thread_safe")
1776 (license license:asl2.0)))
1778 (define-public ruby-tzinfo
1780 (name "ruby-tzinfo")
1785 (uri (rubygems-uri "tzinfo" version))
1788 "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
1789 (build-system ruby-build-system)
1791 `(("ruby-thread-safe" ,ruby-thread-safe)))
1792 (synopsis "Time zone library for Ruby")
1793 (description "TZInfo is a Ruby library that provides daylight savings
1794 aware transformations between times in different time zones.")
1795 (home-page "http://tzinfo.github.io")
1796 (license license:expat)))
1798 (define-public ruby-rb-inotify
1800 (name "ruby-rb-inotify")
1805 (uri (rubygems-uri "rb-inotify" version))
1808 "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"))))
1809 (build-system ruby-build-system)
1811 '(#:tests? #f ; there are no tests
1813 (modify-phases %standard-phases
1814 ;; Building the gemspec with rake is not working here since it is
1815 ;; generated with Jeweler. It is also unnecessary because the
1816 ;; existing gemspec does not use any development tools to generate a
1820 (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
1822 `(("ruby-ffi" ,ruby-ffi)))
1824 `(("ruby-yard" ,ruby-yard)))
1825 (synopsis "Ruby wrapper for Linux's inotify")
1826 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
1827 kernel subsystem for monitoring changes to files and directories.")
1828 (home-page "https://github.com/nex3/rb-inotify")
1829 (license license:expat)))
1831 (define-public ruby-pry-editline
1833 (name "ruby-pry-editline")
1837 (uri (rubygems-uri "pry-editline" version))
1840 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
1841 (build-system ruby-build-system)
1842 (arguments `(#:tests? #f)) ; no tests included
1844 `(("bundler" ,bundler)))
1845 (synopsis "Open the current REPL line in an editor")
1847 "This gem provides a plugin for the Ruby REPL to enable opening the
1848 current line in an external editor.")
1849 (home-page "https://github.com/tpope/pry-editline")
1850 (license license:expat)))
1852 (define-public ruby-sdoc
1858 (uri (rubygems-uri "sdoc" version))
1861 "16xyfair1j4irfkd6sxvmdcak957z71lwkvhglrznfpkalfnqyqp"))))
1862 (build-system ruby-build-system)
1865 (modify-phases %standard-phases
1866 (add-after 'build 'relax-minitest-requirement
1868 (substitute* "sdoc.gemspec"
1869 (("<minitest>, \\[\"~> 4\\.0\"\\]")
1870 "<minitest>, [\">= 4.0\"]"))
1873 `(("ruby-json" ,ruby-json)))
1875 `(("bundler" ,bundler)
1876 ("ruby-minitest" ,ruby-minitest)))
1877 (synopsis "Generate searchable RDoc documentation")
1879 "SDoc is an RDoc documentation generator to build searchable HTML
1880 documentation for Ruby code.")
1881 (home-page "http://github.com/voloko/sdoc")
1882 (license license:expat)))
1884 (define-public ruby-tins
1890 (uri (rubygems-uri "tins" version))
1893 "1060h8dgnjl9az0sv1b74yrni8d4mh3x858wq6yfbfdf5dxrfl0a"))))
1894 (build-system ruby-build-system)
1895 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
1896 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
1899 `(#:tests? #f ; there are no tests
1901 (modify-phases %standard-phases
1904 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
1906 (substitute* "tins.gemspec"
1907 (("\"lib/spruz\", ") ""))
1908 (zero? (system* "gem" "build" "tins.gemspec")))))))
1909 (synopsis "Assorted tools for Ruby")
1910 (description "Tins is a Ruby library providing assorted tools.")
1911 (home-page "https://github.com/flori/tins")
1912 (license license:expat)))
1914 (define-public ruby-gem-hadar
1916 (name "ruby-gem-hadar")
1920 (uri (rubygems-uri "gem_hadar" version))
1923 "1j8qri4m9wf8nbfv0kakrgsv2x8vg10914xgm6f69nw8zi3i39ws"))))
1924 (build-system ruby-build-system)
1925 ;; This gem needs itself at development time. We disable rebuilding of the
1926 ;; gemspec to avoid this loop.
1928 `(#:tests? #f ; there are no tests
1930 (modify-phases %standard-phases
1933 (zero? (system* "gem" "build" "gem_hadar.gemspec")))))))
1936 ("ruby-tins" ,ruby-tins)
1937 ("ruby-sdoc" ,ruby-sdoc)))
1939 `(("bundler" ,bundler)))
1940 (synopsis "Library for the development of Ruby gems")
1942 "This library contains some useful functionality to support the
1943 development of Ruby gems.")
1944 (home-page "https://github.com/flori/gem_hadar")
1945 (license license:expat)))
1947 (define-public ruby-minitest-tu-shim
1949 (name "ruby-minitest-tu-shim")
1953 (uri (rubygems-uri "minitest_tu_shim" version))
1956 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
1957 (build-system ruby-build-system)
1960 (modify-phases %standard-phases
1961 (add-after 'unpack 'fix-test-include-path
1962 (lambda* (#:key inputs #:allow-other-keys)
1963 (substitute* "Rakefile"
1964 (("Hoe\\.add_include_dirs .*")
1965 (string-append "Hoe.add_include_dirs \""
1966 (assoc-ref inputs "ruby-minitest-4")
1967 "/lib/ruby/gems/2.2.0/gems/minitest-"
1968 ,(package-version ruby-minitest-4)
1970 (add-before 'check 'fix-test-assumptions
1972 ;; The test output includes the file name, so a couple of tests
1973 ;; fail. Changing the regular expressions slightly fixes this
1975 (substitute* "test/test_mini_test.rb"
1976 (("output.sub!\\(.*, 'FILE:LINE'\\)")
1977 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
1978 (("gsub\\(/.*, 'FILE:LINE'\\)")
1979 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
1982 `(("ruby-minitest-4" ,ruby-minitest-4)))
1984 `(("ruby-hoe" ,ruby-hoe)))
1985 (synopsis "Adapter library between minitest and test/unit")
1987 "This library bridges the gap between the small and fast minitest and
1988 Ruby's large and slower test/unit.")
1989 (home-page "https://rubygems.org/gems/minitest_tu_shim")
1990 (license license:expat)))
1992 (define-public ruby-json
1999 (uri (rubygems-uri "json" version))
2002 "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
2003 (build-system ruby-build-system)
2004 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
2005 (synopsis "JSON library for Ruby")
2006 (description "This Ruby library provides a JSON implementation written as
2007 a native C extension.")
2008 (home-page "http://json-jruby.rubyforge.org/")
2009 (license (list license:ruby license:gpl2)))) ; GPL2 only
2011 (define-public ruby-listen
2013 (name "ruby-listen")
2018 (uri (rubygems-uri "listen" version))
2021 "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
2022 (build-system ruby-build-system)
2023 (arguments '(#:tests? #f)) ; no tests
2025 ;; FIXME: omitting "ruby-rb-fsevent" which is only for MacOS.
2026 `(("ruby-rb-inotify" ,ruby-rb-inotify)))
2027 (synopsis "Listen to file modifications")
2028 (description "The Listen gem listens to file modifications and notifies
2029 you about the changes.")
2030 (home-page "https://github.com/guard/listen")
2031 (license license:expat)))
2033 (define-public ruby-activesupport
2035 (name "ruby-activesupport")
2040 (uri (rubygems-uri "activesupport" version))
2043 "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
2044 (build-system ruby-build-system)
2046 '(#:tests? #f)) ; no tests
2048 `(("ruby-i18n" ,ruby-i18n)
2049 ("ruby-json" ,ruby-json)
2050 ("ruby-minitest" ,ruby-minitest)
2051 ("ruby-thread-safe" ,ruby-thread-safe)
2052 ("ruby-tzinfo" ,ruby-tzinfo)))
2053 (synopsis "Ruby on Rails utility library")
2054 (description "ActiveSupport is a toolkit of support libraries and Ruby
2055 core extensions extracted from the Rails framework. It includes support for
2056 multibyte strings, internationalization, time zones, and testing.")
2057 (home-page "http://www.rubyonrails.org")
2058 (license license:expat)))
2060 (define-public ruby-ox
2067 (uri (rubygems-uri "ox" version))
2070 "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
2071 (build-system ruby-build-system)
2073 '(#:tests? #f)) ; no tests
2074 (synopsis "Optimized XML library for Ruby")
2076 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
2077 written as a native C extension. It was designed to be an alternative to
2078 Nokogiri and other Ruby XML parsers for generic XML parsing and as an
2079 alternative to Marshal for Object serialization. ")
2080 (home-page "http://www.ohler.com/ox")
2081 (license license:expat)))
2083 (define-public ruby-pg
2090 (uri (rubygems-uri "pg" version))
2093 "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
2094 (build-system ruby-build-system)
2096 '(#:test-target "spec"))
2098 `(("ruby-rake-compiler" ,ruby-rake-compiler)
2099 ("ruby-hoe" ,ruby-hoe)
2100 ("ruby-rspec" ,ruby-rspec)))
2102 `(("postgresql" ,postgresql)))
2103 (synopsis "Ruby interface to PostgreSQL")
2104 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
2105 with PostgreSQL 8.4 and later.")
2106 (home-page "https://bitbucket.org/ged/ruby-pg")
2107 (license license:ruby)))
2109 (define-public ruby-byebug
2111 (name "ruby-byebug")
2116 (uri (rubygems-uri "byebug" version))
2119 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
2120 (build-system ruby-build-system)
2122 '(#:tests? #f)) ; no tests
2123 (synopsis "Debugger for Ruby 2")
2124 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
2125 TracePoint C API for execution control and the Debug Inspector C API for call
2126 stack navigation. The core component provides support that front-ends can
2127 build on. It provides breakpoint handling and bindings for stack frames among
2128 other things and it comes with a command line interface.")
2129 (home-page "http://github.com/deivid-rodriguez/byebug")
2130 (license license:bsd-2)))
2132 (define-public ruby-rack
2139 (uri (rubygems-uri "rack" version))
2142 "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
2143 (build-system ruby-build-system)
2146 (modify-phases %standard-phases
2147 (add-before 'check 'fix-tests
2149 ;; A few of the tests use the length of a file on disk for
2150 ;; Content-Length and Content-Range headers. However, this file
2151 ;; has a shebang in it which an earlier phase patches, growing
2152 ;; the file size from 193 to 239 bytes when the store prefix is
2154 (let ((size-diff (- (string-length (which "ruby"))
2155 (string-length "/usr/bin/env ruby"))))
2156 (substitute* '("test/spec_file.rb")
2158 (number->string (+ 193 size-diff)))
2159 (("bytes(.)22-33" all delimiter)
2160 (string-append "bytes"
2162 (number->string (+ 22 size-diff))
2164 (number->string (+ 33 size-diff))))))
2167 `(("ruby-bacon" ,ruby-bacon)))
2168 (synopsis "Unified web application interface for Ruby")
2169 (description "Rack provides a minimal, modular and adaptable interface for
2170 developing web applications in Ruby. By wrapping HTTP requests and responses,
2171 it unifies the API for web servers, web frameworks, and software in between
2172 into a single method call.")
2173 (home-page "http://rack.github.io/")
2174 (license license:expat)))
2176 (define-public ruby-docile
2178 (name "ruby-docile")
2183 (uri (rubygems-uri "docile" version))
2186 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
2187 (build-system ruby-build-system)
2189 '(#:tests? #f)) ; needs github-markup, among others
2190 (synopsis "Ruby EDSL helper library")
2191 (description "Docile is a Ruby library that provides an interface for
2192 creating embedded domain specific languages (EDSLs) that manipulate existing
2194 (home-page "https://ms-ati.github.io/docile/")
2195 (license license:expat)))
2197 (define-public ruby-gherkin3
2199 (name "ruby-gherkin3")
2204 (uri (rubygems-uri "gherkin3" version))
2207 "0xsyxhqa1gwcxzvsdy4didaiq5vam8ma3fbwbw2w60via4k6r1z9"))))
2208 (build-system ruby-build-system)
2210 `(("bundler" ,bundler)))
2212 '(#:tests? #f)) ; needs simplecov, among others
2213 (synopsis "Gherkin parser for Ruby")
2214 (description "Gherkin 3 is a parser and compiler for the Gherkin language.
2215 It is intended to replace Gherkin 2 and be used by all Cucumber
2216 implementations to parse '.feature' files.")
2217 (home-page "https://github.com/cucumber/gherkin3")
2218 (license license:expat)))
2220 (define-public ruby-cucumber-core
2222 (name "ruby-cucumber-core")
2227 (uri (rubygems-uri "cucumber-core" version))
2230 "12mrzf0s96izpq0k10lahlkgwc4fjs0zfs344rh8r8h3w3jyppr8"))))
2231 (build-system ruby-build-system)
2233 `(("ruby-gherkin3" ,ruby-gherkin3)))
2235 `(("bundler" ,bundler)))
2237 '(#:tests? #f)) ; needs simplecov, among others
2238 (synopsis "Core library for the Cucumber BDD app")
2239 (description "Cucumber is a tool for running automated tests
2240 written in plain language. Because they're written in plain language,
2241 they can be read by anyone on your team. Because they can be read by
2242 anyone, you can use them to help improve communication, collaboration
2243 and trust on your team.")
2244 (home-page "https://cucumber.io/")
2245 (license license:expat)))
2247 (define-public ruby-bio-logger
2249 (name "ruby-bio-logger")
2254 (uri (rubygems-uri "bio-logger" version))
2257 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
2258 (build-system ruby-build-system)
2260 `(#:tests? #f)) ; rake errors, missing shoulda
2262 `(("ruby-log4r" ,ruby-log4r)))
2263 (synopsis "Log4r wrapper for Ruby")
2264 (description "Bio-logger is a wrapper around Log4r adding extra logging
2265 features such as filtering and fine grained logging.")
2266 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
2267 (license license:expat)))
2269 (define-public ruby-yard
2276 (uri (rubygems-uri "yard" version))
2279 "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x"))))
2280 (build-system ruby-build-system)
2282 `(#:test-target "specs"
2284 (modify-phases %standard-phases
2285 (add-before 'check 'set-HOME
2286 ;; $HOME needs to be set to somewhere writeable for tests to run
2287 (lambda _ (setenv "HOME" "/tmp") #t)))))
2289 `(("ruby-rspec" ,ruby-rspec-2)
2290 ("ruby-rack" ,ruby-rack)))
2291 (synopsis "Documentation generation tool for Ruby")
2293 "YARD is a documentation generation tool for the Ruby programming
2294 language. It enables the user to generate consistent, usable documentation
2295 that can be exported to a number of formats very easily, and also supports
2296 extending for custom Ruby constructs such as custom class level definitions.")
2297 (home-page "http://yardoc.org")
2298 (license license:expat)))
2300 (define-public ruby-eventmachine
2302 (name "ruby-eventmachine")
2307 (uri (rubygems-uri "eventmachine" version))
2310 "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp"))))
2311 (build-system ruby-build-system)
2313 '(#:tests? #f)) ; test suite tries to connect to google.com
2315 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
2316 (synopsis "Single-threaded network event framework for Ruby")
2318 "EventMachine implements a single-threaded engine for arbitrary network
2319 communications. EventMachine wraps all interactions with sockets, allowing
2320 programs to concentrate on the implementation of network protocols. It can be
2321 used to create both network servers and clients.")
2322 (home-page "http://rubyeventmachine.com")
2323 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT