gnu: Add ruby-mocha.
[jackhill/guix/guix.git] / gnu / packages / ruby.scm
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>
8 ;;;
9 ;;; This file is part of GNU Guix.
10 ;;;
11 ;;; GNU Guix is free software; you can redistribute it and/or modify it
12 ;;; under the terms of the GNU General Public License as published by
13 ;;; the Free Software Foundation; either version 3 of the License, or (at
14 ;;; your option) any later version.
15 ;;;
16 ;;; GNU Guix is distributed in the hope that it will be useful, but
17 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
18 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 ;;; GNU General Public License for more details.
20 ;;;
21 ;;; You should have received a copy of the GNU General Public License
22 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
23
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))
42
43 (define-public ruby
44 (package
45 (name "ruby")
46 (version "2.2.3")
47 (source
48 (origin
49 (method url-fetch)
50 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
51 (version-major+minor version)
52 "/ruby-" version ".tar.xz"))
53 (sha256
54 (base32
55 "19x8gs67klgc3ag815jpin83jn2nv1akgjcgayd6v3h1xplr1v66"))))
56 (build-system gnu-build-system)
57 (arguments
58 `(#:test-target "test"
59 #:parallel-tests? #f
60 #:phases
61 (alist-cons-before
62 'configure 'replace-bin-sh
63 (lambda _
64 (substitute* '("Makefile.in"
65 "ext/pty/pty.c"
66 "io.c"
67 "lib/mkmf.rb"
68 "process.c"
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"
74 "tool/rbinstall.rb")
75 (("/bin/sh") (which "sh"))))
76 %standard-phases)))
77 (inputs
78 `(("readline" ,readline)
79 ("openssl" ,openssl)
80 ("libffi" ,libffi)
81 ("gdbm" ,gdbm)
82 ("zlib" ,zlib)))
83 (native-search-paths
84 (list (search-path-specification
85 (variable "GEM_PATH")
86 (files (list (string-append "lib/ruby/gems/"
87 (version-major+minor version)
88 ".0"))))))
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)))
94
95 (define-public ruby-2.1
96 (package (inherit ruby)
97 (version "2.1.6")
98 (source
99 (origin
100 (method url-fetch)
101 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
102 (version-major+minor version)
103 "/ruby-" version ".tar.bz2"))
104 (sha256
105 (base32
106 "1sbcmbhadcxk0509svwxbm2vvgmpf3xjxr1397bgp9x46nz36lkv"))))
107 (arguments
108 `(#:test-target "test"
109 #:parallel-tests? #f
110 #:phases
111 (alist-cons-before
112 'configure 'replace-bin-sh
113 (lambda _
114 (substitute* '("Makefile.in"
115 "ext/pty/pty.c"
116 "io.c"
117 "lib/mkmf.rb"
118 "process.c")
119 (("/bin/sh") (which "sh"))))
120 %standard-phases)))
121 (native-search-paths
122 (list (search-path-specification
123 (variable "GEM_PATH")
124 (files (list (string-append "lib/ruby/gems/"
125 (version-major+minor version)
126 ".0"))))))))
127
128 (define-public ruby-1.8
129 (package (inherit ruby)
130 (version "1.8.7-p374")
131 (source
132 (origin
133 (method url-fetch)
134 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
135 (version-major+minor version)
136 "/ruby-" version ".tar.bz2"))
137 (sha256
138 (base32
139 "1qq7khilwkayrhwmzlxk83scrmiqfi7lgsn4c63znyvz2c1lgqxl"))))
140 (native-search-paths '())
141 (arguments
142 `(#:test-target "test"
143 #:parallel-tests? #f
144 #:phases
145 (alist-cons-before
146 'configure 'replace-bin-sh
147 (lambda _
148 (substitute* '("Makefile.in"
149 "ext/pty/pty.c"
150 "io.c"
151 "lib/mkmf.rb"
152 "process.c")
153 (("/bin/sh") (which "sh"))))
154 %standard-phases)))))
155
156 (define-public ruby-hoe
157 (package
158 (name "ruby-hoe")
159 (version "3.13.1")
160 (source (origin
161 (method url-fetch)
162 (uri (rubygems-uri "hoe" version))
163 (sha256
164 (base32
165 "1mac13krdrasn9819dd65xj27kklfy0xdbj3p6s2ij4vlcb46h8q"))) )
166 (build-system ruby-build-system)
167 (synopsis "Ruby project management helper")
168 (description
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
173 announcement.")
174 (home-page "http://www.zenspider.com/projects/hoe.html")
175 (license license:expat)))
176
177 (define-public ruby-rake-compiler
178 (package
179 (name "ruby-rake-compiler")
180 (version "0.9.5")
181 (source (origin
182 (method url-fetch)
183 (uri (rubygems-uri "rake-compiler" version))
184 (sha256
185 (base32
186 "1k8im2vzj849xdgjk6wafspkiwwapqwm738majchb4dnhnsk64cx"))))
187 (build-system ruby-build-system)
188 (arguments
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)))
195
196 (define-public ruby-i18n
197 (package
198 (name "ruby-i18n")
199 (version "0.7.0")
200 (source (origin
201 (method url-fetch)
202 (uri (rubygems-uri "i18n" version))
203 (sha256
204 (base32
205 "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758"))))
206 (build-system ruby-build-system)
207 (arguments
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)))
218
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
223 (package
224 (name "ruby-rspec-support")
225 (version "3.2.2")
226 (source (origin
227 (method url-fetch)
228 (uri (rubygems-uri "rspec-support" version))
229 (sha256
230 (base32
231 "194zry5195ls2hni7r9824vqb5d3qfg4jb15fgj8glfy0rvw3zxl"))))
232 (build-system ruby-build-system)
233 (arguments
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)))
239
240 (define-public ruby-rspec-core
241 (package
242 (name "ruby-rspec-core")
243 (version "3.2.3")
244 (source (origin
245 (method url-fetch)
246 (uri (rubygems-uri "rspec-core" version))
247 (sha256
248 (base32
249 "0k2471iw30gc2cvv67damrx666pmsvx8l0ahk3hm20dhfnmcmpvv"))))
250 (build-system ruby-build-system)
251 (arguments
252 '(#:tests? #f)) ; avoid dependency cycles
253 (propagated-inputs
254 `(("ruby-rspec-support" ,ruby-rspec-support)))
255 (synopsis "RSpec core library")
256 (description "Rspec-core provides the RSpec test runner and example
257 groups.")
258 (home-page "https://github.com/rspec/rspec-core")
259 (license license:expat)))
260
261 (define-public ruby-rspec-core-2
262 (package (inherit ruby-rspec-core)
263 (version "2.14.8")
264 (source (origin
265 (method url-fetch)
266 (uri (rubygems-uri "rspec-core" version))
267 (sha256
268 (base32
269 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
270 (propagated-inputs `())))
271
272 (define-public ruby-diff-lcs
273 (package
274 (name "ruby-diff-lcs")
275 (version "1.2.5")
276 (source (origin
277 (method url-fetch)
278 (uri (rubygems-uri "diff-lcs" version))
279 (sha256
280 (base32
281 "1vf9civd41bnqi6brr5d9jifdw73j9khc6fkhfl1f8r9cpkdvlx1"))))
282 (build-system ruby-build-system)
283 (arguments
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)))
292
293 (define-public ruby-rspec-expectations
294 (package
295 (name "ruby-rspec-expectations")
296 (version "3.2.1")
297 (source (origin
298 (method url-fetch)
299 (uri (rubygems-uri "rspec-expectations" version))
300 (sha256
301 (base32
302 "01kmchabgpdcaqdsqg8r0g5gy385xhp1k1jsds3w264ypin17n14"))))
303 (build-system ruby-build-system)
304 (arguments
305 '(#:tests? #f)) ; avoid dependency cycles
306 (propagated-inputs
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)))
314
315 (define-public ruby-rspec-expectations-2
316 (package (inherit ruby-rspec-expectations)
317 (version "2.14.5")
318 (source (origin
319 (method url-fetch)
320 (uri (rubygems-uri "rspec-expectations" version))
321 (sha256
322 (base32
323 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
324 (propagated-inputs
325 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
326
327 (define-public ruby-rspec-mocks
328 (package
329 (name "ruby-rspec-mocks")
330 (version "3.2.1")
331 (source (origin
332 (method url-fetch)
333 (uri (rubygems-uri "rspec-mocks" version))
334 (sha256
335 (base32
336 "09yig1lwgxl8fsns71z3xhv7wkg7zvagydh37pvaqpw92dz55jv2"))))
337 (build-system ruby-build-system)
338 (arguments
339 '(#:tests? #f)) ; avoid dependency cycles
340 (propagated-inputs
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)))
348
349 (define-public ruby-rspec-mocks-2
350 (package (inherit ruby-rspec-mocks)
351 (version "2.14.6")
352 (source (origin
353 (method url-fetch)
354 (uri (rubygems-uri "rspec-mocks" version))
355 (sha256
356 (base32
357 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
358 (propagated-inputs
359 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
360
361 (define-public ruby-rspec
362 (package
363 (name "ruby-rspec")
364 (version "3.2.0")
365 (source (origin
366 (method url-fetch)
367 (uri (rubygems-uri "rspec" version))
368 (sha256
369 (base32
370 "0lkz01j4yxcwb3g5w6r1l9khnyw3sxib4rrh4npd2pxh390fcc4f"))))
371 (build-system ruby-build-system)
372 (arguments
373 '(#:tests? #f)) ; avoid dependency cycles
374 (propagated-inputs
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)))
384
385 (define-public ruby-rspec-2
386 (package (inherit ruby-rspec)
387 (version "2.14.1")
388 (source (origin
389 (method url-fetch)
390 (uri (rubygems-uri "rspec" version))
391 (sha256
392 (base32
393 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
394 (propagated-inputs
395 `(("ruby-rspec-core" ,ruby-rspec-core-2)
396 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
397 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
398
399 ;; Bundler is yet another source of circular dependencies, so we must disable
400 ;; its test suite as well.
401 (define-public bundler
402 (package
403 (name "bundler")
404 (version "1.10.6")
405 (source (origin
406 (method url-fetch)
407 (uri (rubygems-uri "bundler" version))
408 (sha256
409 (base32
410 "1vlzfq0bkkj4jyq6av0y55mh5nj5n0f3mfbmmifwgkh44g8k6agv"))))
411 (build-system ruby-build-system)
412 (arguments
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)))
419
420 (define-public ruby-builder
421 (package
422 (name "ruby-builder")
423 (version "3.2.2")
424 (source (origin
425 (method url-fetch)
426 (uri (rubygems-uri "builder" version))
427 (sha256
428 (base32
429 "14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2"))))
430 (build-system ruby-build-system)
431 (arguments
432 `(#:phases
433 (modify-phases %standard-phases
434 (add-after 'unpack 'do-not-use-rvm
435 (lambda _
436 (substitute* "rakelib/tags.rake"
437 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
438 #t)))))
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)))
445
446 (define-public ruby-rjb
447 (package
448 (name "ruby-rjb")
449 (version "1.5.3")
450 (source (origin
451 (method url-fetch)
452 (uri (rubygems-uri "rjb" version))
453 (sha256
454 (base32
455 "0gzs92dagk981s4vrymnqg0vll783b9k564j0cdgp167nc5a2zg4"))))
456 (build-system ruby-build-system)
457 (arguments
458 `(#:tests? #f ; no rakefile
459 #:phases
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"))
464 #t)))))
465 (native-inputs
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+)))
472
473 (define-public ruby-log4r
474 (package
475 (name "ruby-log4r")
476 (version "1.1.10")
477 (source
478 (origin
479 (method url-fetch)
480 (uri (rubygems-uri "log4r" version))
481 (sha256
482 (base32
483 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
484 (build-system ruby-build-system)
485 (arguments
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)))
496
497 (define-public ruby-atoulme-antwrap
498 (package
499 (name "ruby-atoulme-antwrap")
500 (version "0.7.5")
501 (source (origin
502 (method url-fetch)
503 (uri (rubygems-uri "atoulme-Antwrap" version))
504 (sha256
505 (base32
506 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
507 (build-system ruby-build-system)
508 ;; Test data required for most of the tests are not included.
509 (arguments `(#:tests? #f))
510 (native-inputs
511 `(("ruby-hoe" ,ruby-hoe)))
512 (inputs
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
517 script.")
518 (home-page "http://rubyforge.org/projects/antwrap/")
519 (license license:expat)))
520
521 (define-public ruby-orderedhash
522 (package
523 (name "ruby-orderedhash")
524 (version "0.0.6")
525 (source (origin
526 (method url-fetch)
527 (uri (rubygems-uri "orderedhash" version))
528 (sha256
529 (base32
530 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
531 (build-system ruby-build-system)
532 (arguments
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
537 extensions.")
538 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
539 (license license:public-domain)))
540
541 (define-public ruby-libxml
542 (package
543 (name "ruby-libxml")
544 (version "2.8.0")
545 (source
546 (origin
547 (method url-fetch)
548 (uri (rubygems-uri "libxml-ruby" version))
549 (sha256
550 (base32
551 "1dhjqp4r9vkdp00l6h1cj8qfndzxlhlxk6b9g0w4v55gz857ilhb"))))
552 (build-system ruby-build-system)
553 (inputs
554 `(("zlib" ,zlib)
555 ("libxml2" ,libxml2)))
556 (arguments
557 '(#:tests? #f ; test suite hangs for unknown reason
558 #:gem-flags
559 (list "--"
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)))
568
569 (define-public ruby-xml-simple
570 (package
571 (name "ruby-xml-simple")
572 (version "1.1.5")
573 (source (origin
574 (method url-fetch)
575 (uri (rubygems-uri "xml-simple" version))
576 (sha256
577 (base32
578 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
579 (build-system ruby-build-system)
580 (arguments
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
584 Ruby.")
585 (home-page "https://github.com/maik/xml-simple")
586 (license license:ruby)))
587
588 (define-public ruby-thor
589 (package
590 (name "ruby-thor")
591 (version "0.19.1")
592 (source (origin
593 (method url-fetch)
594 (uri (rubygems-uri "thor" version))
595 (sha256
596 (base32
597 "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z"))))
598 (build-system ruby-build-system)
599 (arguments
600 '(#:tests? #f)) ; no test suite
601 (native-inputs
602 `(("bundler" ,bundler)))
603 (synopsis "Ruby toolkit for building command-line interfaces")
604 (description "Thor is a toolkit for building powerful command-line
605 interfaces.")
606 (home-page "http://whatisthor.com/")
607 (license license:expat)))
608
609 (define-public ruby-lumberjack
610 (package
611 (name "ruby-lumberjack")
612 (version "1.0.9")
613 (source (origin
614 (method url-fetch)
615 (uri (rubygems-uri "lumberjack" version))
616 (sha256
617 (base32
618 "162frm2bwy58pj8ccsdqa4a6i0csrhb9h5l3inhkl1ivgfc8814l"))))
619 (build-system ruby-build-system)
620 (native-inputs
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
626 same log file.")
627 (home-page "http://github.com/bdurand/lumberjack")
628 (license license:expat)))
629
630 (define-public ruby-nenv
631 (package
632 (name "ruby-nenv")
633 (version "0.2.0")
634 (source (origin
635 (method url-fetch)
636 (uri (rubygems-uri "nenv" version))
637 (sha256
638 (base32
639 "152wxwri0afwgnxdf93gi6wjl9rr5z7vwp8ln0gpa3rddbfc27s6"))))
640 (build-system ruby-build-system)
641 (arguments
642 `(#:tests? #f)) ; no tests included
643 (native-inputs
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)))
651
652 (define-public ruby-permutation
653 (package
654 (name "ruby-permutation")
655 (version "0.1.8")
656 (source (origin
657 (method url-fetch)
658 (uri (rubygems-uri "permutation" version))
659 (sha256
660 (base32
661 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
662 (build-system ruby-build-system)
663 (arguments
664 `(#:phases
665 (modify-phases %standard-phases
666 (add-after 'unpack 'fix-rakefile
667 (lambda _
668 (substitute* "Rakefile"
669 (("require 'rake/gempackagetask'")
670 "require 'rubygems/package_task'")
671 (("include Config") ""))
672 #t))
673 (replace 'check
674 (lambda _
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
681
682 (define-public ruby-shellany
683 (package
684 (name "ruby-shellany")
685 (version "0.0.1")
686 (source (origin
687 (method url-fetch)
688 (uri (rubygems-uri "shellany" version))
689 (sha256
690 (base32
691 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
692 (build-system ruby-build-system)
693 (arguments
694 `(#:test-target "default"
695 #:phases
696 (modify-phases %standard-phases
697 (add-after 'unpack 'fix-version-test
698 (lambda _
699 (substitute* "spec/shellany_spec.rb"
700 (("^RSpec") "require \"shellany\"\nRSpec"))
701 #t)))))
702 (native-inputs
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)))
711
712 (define-public ruby-notiffany
713 (package
714 (name "ruby-notiffany")
715 (version "0.0.7")
716 (source (origin
717 (method url-fetch)
718 (uri (rubygems-uri "notiffany" version))
719 (sha256
720 (base32
721 "1v5x1w59qq85r6dpv3y9ga34dfd7hka1qxyiykaw7gm0i6kggbhi"))))
722 (build-system ruby-build-system)
723 ;; Tests are not included in the gem.
724 (arguments `(#:tests? #f))
725 (propagated-inputs
726 `(("ruby-shellany" ,ruby-shellany)
727 ("ruby-nenv" ,ruby-nenv)))
728 (native-inputs
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)))
735
736 (define-public ruby-formatador
737 (package
738 (name "ruby-formatador")
739 (version "0.2.5")
740 (source (origin
741 (method url-fetch)
742 (uri (rubygems-uri "formatador" version))
743 (sha256
744 (base32
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)))
755
756 (define-public ruby-shindo
757 (package
758 (name "ruby-shindo")
759 (version "0.3.8")
760 (source (origin
761 (method url-fetch)
762 (uri (rubygems-uri "shindo" version))
763 (sha256
764 (base32
765 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
766 (build-system ruby-build-system)
767 (arguments
768 `(#:test-target "shindo_tests"
769 #:phases
770 (modify-phases %standard-phases
771 (add-after 'unpack 'fix-tests
772 (lambda _
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") "#"))
777 #t)))))
778 (propagated-inputs
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)))
784
785 (define-public ruby-rubygems-tasks
786 (package
787 (name "ruby-rubygems-tasks")
788 (version "0.2.4")
789 (source (origin
790 (method url-fetch)
791 (uri (rubygems-uri "rubygems-tasks" version))
792 (sha256
793 (base32
794 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
795 (build-system ruby-build-system)
796 ;; Tests need Internet access.
797 (arguments `(#:tests? #f))
798 (native-inputs
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
803 Ruby Gems.")
804 (home-page "https://github.com/postmodern/rubygems-tasks")
805 (license license:expat)))
806
807 (define-public ruby-ffi
808 (package
809 (name "ruby-ffi")
810 (version "1.9.10")
811 (source (origin
812 (method url-fetch)
813 (uri (rubygems-uri "ffi" version))
814 (sha256
815 (base32
816 "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj"))))
817 (build-system ruby-build-system)
818 ;; FIXME: Before running tests the build system attempts to build libffi
819 ;; from sources.
820 (arguments `(#:tests? #f))
821 (native-inputs
822 `(("ruby-rake-compiler" ,ruby-rake-compiler)
823 ("ruby-rspec" ,ruby-rspec)
824 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
825 (inputs
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
831 and JRuby.")
832 (home-page "http://wiki.github.com/ffi/ffi")
833 (license license:bsd-3)))
834
835 (define-public ruby-simplecov-html
836 (package
837 (name "ruby-simplecov-html")
838 (version "0.10.0")
839 (source (origin
840 (method url-fetch)
841 (uri (rubygems-uri "simplecov-html" version))
842 (sha256
843 (base32
844 "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj"))))
845 (build-system ruby-build-system)
846 (native-inputs
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)))
853
854 (define-public ruby-useragent
855 (package
856 (name "ruby-useragent")
857 (version "0.13.3")
858 (source (origin
859 (method url-fetch)
860 (uri (rubygems-uri "useragent" version))
861 (sha256
862 (base32
863 "0kz7yyz7528bv4a2kfymvkcm8whqcddhmgaw1ksw1d90n30hhkpc"))))
864 (build-system ruby-build-system)
865 (arguments
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
869 User Agents.")
870 (home-page "https://github.com/gshutler/useragent")
871 (license license:expat)))
872
873 (define-public ruby-bacon
874 (package
875 (name "ruby-bacon")
876 (version "1.2.0")
877 (source (origin
878 (method url-fetch)
879 (uri (rubygems-uri "bacon" version))
880 (sha256
881 (base32
882 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
883 (build-system ruby-build-system)
884 (synopsis "Small RSpec clone")
885 (description "Bacon is a small RSpec clone providing all essential
886 features.")
887 (home-page "https://github.com/chneukirchen/bacon")
888 (license license:expat)))
889
890 (define-public ruby-arel
891 (package
892 (name "ruby-arel")
893 (version "6.0.0")
894 (source (origin
895 (method url-fetch)
896 (uri (rubygems-uri "arel" version))
897 (sha256
898 (base32
899 "18wnfnzr2i5p3fygsddjbi1cimws6823nbk8drxidmnj8jz7h0ar"))))
900 (build-system ruby-build-system)
901 (arguments
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
906 implementations.")
907 (home-page "https://github.com/rails/arel")
908 (license license:expat)))
909
910 (define-public ruby-connection-pool
911 (package
912 (name "ruby-connection-pool")
913 (version "2.2.0")
914 (source (origin
915 (method url-fetch)
916 (uri (rubygems-uri "connection_pool" version))
917 (sha256
918 (base32
919 "1b2bb3k39ni5mzcnqlv9y4yjkbin20s7dkwzp0jw2jf1rmzcgrmy"))))
920 (build-system ruby-build-system)
921 (native-inputs
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)))
928
929 (define-public ruby-net-http-persistent
930 (package
931 (name "ruby-net-http-persistent")
932 (version "2.9.4")
933 (source (origin
934 (method url-fetch)
935 (uri (rubygems-uri "net-http-persistent" version))
936 (sha256
937 (base32
938 "1y9fhaax0d9kkslyiqi1zys6cvpaqx9a0y0cywp24rpygwh4s9r4"))))
939 (build-system ruby-build-system)
940 (native-inputs
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)))
948
949 (define-public ruby-power-assert
950 (package
951 (name "ruby-power-assert")
952 (version "0.2.6")
953 (source (origin
954 (method url-fetch)
955 (uri (rubygems-uri "power_assert" version))
956 (sha256
957 (base32
958 "0gbj379jhnff8rbb6m3kzdm282szjz1a021xzxa38d1bnswj2jx3"))))
959 (build-system ruby-build-system)
960 (native-inputs
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))))
967
968 (define-public ruby-locale
969 (package
970 (name "ruby-locale")
971 (version "2.1.2")
972 (source (origin
973 (method url-fetch)
974 (uri (rubygems-uri "locale" version))
975 (sha256
976 (base32
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))
983 (native-inputs
984 `(("bundler" ,bundler)
985 ("ruby-yard" ,ruby-yard)))
986 (synopsis "Ruby library providing basic localization APIs")
987 (description
988 "Ruby-Locale is the pure ruby library which provides basic APIs for
989 localization.")
990 (home-page "https://github.com/ruby-gettext/locale")
991 (license (list license:lgpl3+ license:ruby))))
992
993 (define-public ruby-text
994 (package
995 (name "ruby-text")
996 (version "1.3.1")
997 (source (origin
998 (method url-fetch)
999 (uri (rubygems-uri "text" version))
1000 (sha256
1001 (base32
1002 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
1003 (build-system ruby-build-system)
1004 (synopsis "Collection of text algorithms for Ruby")
1005 (description
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)))
1010
1011 (define-public ruby-gettext
1012 (package
1013 (name "ruby-gettext")
1014 (version "3.1.7")
1015 (source (origin
1016 (method url-fetch)
1017 (uri (rubygems-uri "gettext" version))
1018 (sha256
1019 (base32
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
1024 ;; tests.
1025 (arguments `(#:tests? #f))
1026 (propagated-inputs
1027 `(("ruby-locale" ,ruby-locale)
1028 ("ruby-text" ,ruby-text)))
1029 (native-inputs
1030 `(("bundler" ,bundler)
1031 ("ruby-yard" ,ruby-yard)))
1032 (synopsis "GNU gettext-like program for Ruby")
1033 (description
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))))
1039
1040 (define-public ruby-packnga
1041 (package
1042 (name "ruby-packnga")
1043 (version "1.0.1")
1044 (source (origin
1045 (method url-fetch)
1046 (uri (rubygems-uri "packnga" version))
1047 (sha256
1048 (base32
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))
1054 (propagated-inputs
1055 `(("ruby-gettext" ,ruby-gettext)
1056 ("ruby-yard" ,ruby-yard)))
1057 (native-inputs
1058 `(("bundler" ,bundler)))
1059 (synopsis "Utility library to package internationalized libraries")
1060 (description
1061 "Packnga is a library to translate to many languages using YARD.")
1062 (home-page "http://ranguba.org/packnga/")
1063 (license license:lgpl2.0+)))
1064
1065 (define-public ruby-test-unit
1066 (package
1067 (name "ruby-test-unit")
1068 (version "3.1.5")
1069 (source (origin
1070 (method url-fetch)
1071 (uri (rubygems-uri "test-unit" version))
1072 (sha256
1073 (base32
1074 "0jxznjzwmrlp8wqjxsd06qbiddffn68pdhz6nrqpjbiln1z3af4w"))))
1075 (build-system ruby-build-system)
1076 (propagated-inputs
1077 `(("ruby-power-assert" ,ruby-power-assert)))
1078 (native-inputs
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))))
1089
1090 (define-public ruby-metaclass
1091 (package
1092 (name "ruby-metaclass")
1093 (version "0.0.4")
1094 (source (origin
1095 (method url-fetch)
1096 (uri (rubygems-uri "metaclass" version))
1097 (sha256
1098 (base32
1099 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
1100 (build-system ruby-build-system)
1101 (arguments
1102 `(#:phases
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)
1112 "/lib\"")))
1113 #t)))))
1114 (native-inputs
1115 `(("bundler" ,bundler)
1116 ("ruby-test-unit" ,ruby-test-unit)))
1117 (synopsis "Ruby library adding metaclass method to all objects")
1118 (description
1119 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
1120 objects.")
1121 (home-page "http://github.com/floehopper/metaclass")
1122 (license license:expat)))
1123
1124 (define-public ruby-blankslate
1125 (package
1126 (name "ruby-blankslate")
1127 (version "3.1.3")
1128 (source (origin
1129 (method url-fetch)
1130 (uri (rubygems-uri "blankslate" version))
1131 (sha256
1132 (base32
1133 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
1134 (build-system ruby-build-system)
1135 (arguments
1136 `(#:phases
1137 (modify-phases %standard-phases
1138 (replace 'check
1139 (lambda _ (zero? (system* "rspec" "spec/")))))))
1140 (native-inputs
1141 `(("bundler" ,bundler)
1142 ("ruby-rspec" ,ruby-rspec)))
1143 (synopsis "Abstract base class with no predefined methods")
1144 (description
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)))
1151
1152 (define-public ruby-instantiator
1153 (package
1154 (name "ruby-instantiator")
1155 (version "0.0.6")
1156 (source (origin
1157 (method url-fetch)
1158 (uri (rubygems-uri "instantiator" version))
1159 (sha256
1160 (base32
1161 "0mfmqhg9xrv9i8i1kmphf15ywddhivyh2z3ccl0xjw8qy54zr21i"))))
1162 (build-system ruby-build-system)
1163 (arguments
1164 `(#:phases
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)
1174 "/lib\"")))
1175 #t)))))
1176 (propagated-inputs
1177 `(("ruby-blankslate" ,ruby-blankslate)))
1178 (native-inputs
1179 `(("bundler" ,bundler)
1180 ("ruby-test-unit" ,ruby-test-unit)))
1181 (synopsis "Instantiate an arbitrary Ruby class")
1182 (description
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)))
1187
1188 (define-public ruby-introspection
1189 (package
1190 (name "ruby-introspection")
1191 (version "0.0.3")
1192 (source (origin
1193 (method url-fetch)
1194 (uri (rubygems-uri "introspection" version))
1195 (sha256
1196 (base32
1197 "0g1j71sqfxbqk32wj7d0bkd3dlayfqzprfq3dbr0rq107xbxjcrr"))))
1198 (build-system ruby-build-system)
1199 (arguments
1200 `(#:phases
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)
1210 "/lib\"")))
1211 #t)))))
1212 (propagated-inputs
1213 `(("ruby-instantiator" ,ruby-instantiator)
1214 ("ruby-metaclass" ,ruby-metaclass)))
1215 (native-inputs
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")
1220 (description
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)))
1225
1226 (define-public ruby-redcarpet
1227 (package
1228 (name "ruby-redcarpet")
1229 (version "3.3.3")
1230 (source (origin
1231 (method url-fetch)
1232 (uri (rubygems-uri "redcarpet" version))
1233 (sha256
1234 (base32
1235 "14i3wypp97bpk20679d1csy88q4hsgfqbnqw6mryl77m2g0d09pk"))))
1236 (build-system ruby-build-system)
1237 (arguments
1238 `(#:phases
1239 (modify-phases %standard-phases
1240 ;; The gem archive does not include the conformance tests.
1241 (add-after 'unpack 'disable-conformance-tests
1242 (lambda _
1243 (substitute* "Rakefile"
1244 (("task :test => %w\\[test:unit test:conformance\\]")
1245 "task :test => %w[test:unit]"))
1246 #t)))))
1247 (native-inputs
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")
1252 (description
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)))
1257
1258 (define-public ruby-mocha
1259 (package
1260 (name "ruby-mocha")
1261 (version "1.1.0")
1262 (source (origin
1263 (method url-fetch)
1264 (uri (rubygems-uri "mocha" version))
1265 (sha256
1266 (base32
1267 "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
1268 (build-system ruby-build-system)
1269 (arguments
1270 `(#:phases
1271 (modify-phases %standard-phases
1272 (add-after 'unpack 'add-test-unit-to-search-path
1273 (lambda* (#:key inputs #:allow-other-keys)
1274 (substitute* "Rakefile"
1275 (("t\\.libs << 'test'" line)
1276 (string-append line "; t.libs << \""
1277 (assoc-ref inputs "ruby-test-unit")
1278 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1279 ,(package-version ruby-test-unit)
1280 "/lib\"")))
1281 #t))
1282 (add-before 'check 'use-latest-redcarpet
1283 (lambda _
1284 (substitute* "mocha.gemspec"
1285 (("<redcarpet>, \\[\"~> 1\"\\]")
1286 "<redcarpet>, [\">= 3\"]"))
1287 #t))
1288 (add-before 'check 'hardcode-version
1289 (lambda _
1290 ;; Mocha is undefined at build time
1291 (substitute* "Rakefile"
1292 (("#\\{Mocha::VERSION\\}") ,version))
1293 #t))
1294 (add-before 'check 'remove-failing-test
1295 ;; FIXME: This test fails for reasons unrelated to Guix packaging.
1296 (lambda _
1297 (delete-file "test/acceptance/stubbing_nil_test.rb")
1298 #t)))))
1299 (propagated-inputs
1300 `(("ruby-metaclass" ,ruby-metaclass)))
1301 (native-inputs
1302 `(("bundler" ,bundler)
1303 ("ruby-yard" ,ruby-yard)
1304 ("ruby-introspection" ,ruby-introspection)
1305 ("ruby-test-unit" ,ruby-test-unit)
1306 ("ruby-redcarpet" ,ruby-redcarpet)))
1307 (synopsis "Mocking and stubbing library for Ruby")
1308 (description
1309 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
1310 allows mocking and stubbing of methods on real (non-mock) classes.")
1311 (home-page "http://gofreerange.com/mocha/docs")
1312 (license license:expat)))
1313
1314 (define-public ruby-minitest
1315 (package
1316 (name "ruby-minitest")
1317 (version "5.7.0")
1318 (source (origin
1319 (method url-fetch)
1320 (uri (rubygems-uri "minitest" version))
1321 (sha256
1322 (base32
1323 "0rxqfakp629mp3vwda7zpgb57lcns5znkskikbfd0kriwv8i1vq8"))))
1324 (build-system ruby-build-system)
1325 (native-inputs
1326 `(("ruby-hoe" ,ruby-hoe)))
1327 (synopsis "Small test suite library for Ruby")
1328 (description "Minitest provides a complete suite of Ruby testing
1329 facilities supporting TDD, BDD, mocking, and benchmarking.")
1330 (home-page "https://github.com/seattlerb/minitest")
1331 (license license:expat)))
1332
1333 (define-public ruby-minitest-sprint
1334 (package
1335 (name "ruby-minitest-sprint")
1336 (version "1.1.0")
1337 (source (origin
1338 (method url-fetch)
1339 (uri (rubygems-uri "minitest-sprint" version))
1340 (sha256
1341 (base32
1342 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
1343 (build-system ruby-build-system)
1344 (native-inputs
1345 `(("ruby-hoe" ,ruby-hoe)
1346 ("ruby-minitest" ,ruby-minitest)))
1347 (synopsis "Fast test suite runner for minitest")
1348 (description "Minitest-sprint is a test runner for minitest that makes it
1349 easier to re-run individual failing tests.")
1350 (home-page "https://github.com/seattlerb/minitest-sprint")
1351 (license license:expat)))
1352
1353 (define-public ruby-minitest-bacon
1354 (package
1355 (name "ruby-minitest-bacon")
1356 (version "1.0.2")
1357 (source (origin
1358 (method url-fetch)
1359 (uri (rubygems-uri "minitest-bacon" version))
1360 (sha256
1361 (base32
1362 "0cm7r68422743i3b6fm4rrm0r6cnnjmglq5gcmmgl1f0rk5hnf6r"))))
1363 (build-system ruby-build-system)
1364 (native-inputs
1365 `(("ruby-hoe" ,ruby-hoe)))
1366 (inputs
1367 `(("ruby-minitest" ,ruby-minitest)))
1368 (synopsis "Bacon compatibility library for minitest")
1369 (description "Minitest-bacon extends minitest with bacon-like
1370 functionality, making it easier to migrate test suites from bacon to minitest.")
1371 (home-page "https://github.com/seattlerb/minitest-bacon")
1372 (license license:expat)))
1373
1374 (define-public ruby-daemons
1375 (package
1376 (name "ruby-daemons")
1377 (version "1.2.2")
1378 (source (origin
1379 (method url-fetch)
1380 (uri (rubygems-uri "daemons" version))
1381 (sha256
1382 (base32
1383 "121c7vkimg3baxga69xvdkwxiq8wkmxqvdbyqi5i82vhih5d3cn3"))))
1384 (build-system ruby-build-system)
1385 (arguments
1386 `(#:tests? #f)) ; no test suite
1387 (synopsis "Daemonize Ruby programs")
1388 (description "Daemons provides a way to wrap existing Ruby scripts to be
1389 run as a daemon and to be controlled by simple start/stop/restart commands.")
1390 (home-page "https://github.com/thuehlinger/daemons")
1391 (license license:expat)))
1392
1393 (define-public ruby-git
1394 (package
1395 (name "ruby-git")
1396 (version "1.2.9.1")
1397 (source (origin
1398 (method url-fetch)
1399 (uri (rubygems-uri "git" version))
1400 (sha256
1401 (base32
1402 "1sqfj8lmhl7c5zamcckkpik4izfph2zkv6krw0i8mzj5pdws5acs"))))
1403 (build-system ruby-build-system)
1404 (arguments
1405 `(#:tests? #f ; no tests
1406 #:phases (modify-phases %standard-phases
1407 (add-after 'install 'patch-git-binary
1408 (lambda* (#:key inputs outputs #:allow-other-keys)
1409 ;; Make the default git binary an absolute path to the
1410 ;; store.
1411 (let ((git (string-append (assoc-ref inputs "git")
1412 "/bin/git"))
1413 (config (string-append (getenv "GEM_HOME")
1414 "/gems/git-" ,version
1415 "/lib/git/config.rb")))
1416 (substitute* (list config)
1417 (("'git'")
1418 (string-append "'" git "'")))
1419 #t))))))
1420 (inputs
1421 `(("git" ,git)))
1422 (synopsis "Ruby wrappers for Git")
1423 (description "Ruby/Git is a Ruby library that can be used to create, read
1424 and manipulate Git repositories by wrapping system calls to the git binary.")
1425 (home-page "https://github.com/schacon/ruby-git")
1426 (license license:expat)))
1427
1428 (define-public ruby-slop
1429 (package
1430 (name "ruby-slop")
1431 (version "4.1.0")
1432 (source (origin
1433 (method url-fetch)
1434 (uri (rubygems-uri "slop" version))
1435 (sha256
1436 (base32
1437 "0dj0ps6v1mqd02k84mgwd7hp578n2bzl7c51h3grdhxfl3jkfsj5"))))
1438 (build-system ruby-build-system)
1439 (native-inputs
1440 `(("ruby-minitest" ,ruby-minitest)))
1441 (synopsis "Ruby command line option parser")
1442 (description "Slop provides a Ruby domain specific language for gathering
1443 options and parsing command line flags.")
1444 (home-page "https://github.com/leejarvis/slop")
1445 (license license:expat)))
1446
1447 (define-public ruby-slop-3
1448 (package (inherit ruby-slop)
1449 (version "3.6.0")
1450 (source (origin
1451 (method url-fetch)
1452 (uri (rubygems-uri "slop" version))
1453 (sha256
1454 (base32
1455 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
1456
1457 (define-public ruby-multipart-post
1458 (package
1459 (name "ruby-multipart-post")
1460 (version "2.0.0")
1461 (source (origin
1462 (method url-fetch)
1463 (uri (rubygems-uri "multipart-post" version))
1464 (sha256
1465 (base32
1466 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
1467 (build-system ruby-build-system)
1468 (native-inputs
1469 `(("bundler" ,bundler)))
1470 (synopsis "Multipart POST library for Ruby")
1471 (description "Multipart-Post Adds multipart POST capability to Ruby's
1472 net/http library.")
1473 (home-page "https://github.com/nicksieger/multipart-post")
1474 (license license:expat)))
1475
1476 (define-public ruby-arel
1477 (package
1478 (name "ruby-arel")
1479 (version "6.0.3")
1480 (source (origin
1481 (method url-fetch)
1482 (uri (rubygems-uri "arel" version))
1483 (sha256
1484 (base32
1485 "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk"))))
1486 (build-system ruby-build-system)
1487 (arguments '(#:tests? #f)) ; no tests
1488 (home-page "https://github.com/rails/arel")
1489 (synopsis "SQL AST manager for Ruby")
1490 (description "Arel is a SQL AST manager for Ruby. It simplifies the
1491 generation of complex SQL queries and is compatible with various RDBMSes.")
1492 (license license:expat)))
1493
1494 (define-public ruby-minitar
1495 (package
1496 (name "ruby-minitar")
1497 (version "0.5.4")
1498 (source
1499 (origin
1500 (method url-fetch)
1501 (uri (rubygems-uri "minitar" version))
1502 (sha256
1503 (base32
1504 "1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka"))))
1505 (build-system ruby-build-system)
1506 (arguments
1507 '(#:tests? #f)) ; missing a gemspec
1508 (synopsis "Ruby library and utility for handling tar archives")
1509 (description
1510 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
1511 that provides the ability to deal with POSIX tar archive files.")
1512 (home-page "http://www.github.com/atoulme/minitar")
1513 (license (list license:gpl2+ license:ruby))))
1514
1515 (define-public ruby-mini-portile
1516 (package
1517 (name "ruby-mini-portile")
1518 (version "0.6.2")
1519 (source
1520 (origin
1521 (method url-fetch)
1522 (uri (rubygems-uri "mini_portile" version))
1523 (sha256
1524 (base32
1525 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
1526 (build-system ruby-build-system)
1527 (arguments
1528 '(#:tests? #f)) ; tests require network access
1529 (synopsis "Ports system for Ruby developers")
1530 (description "Mini-portile is a port/recipe system for Ruby developers.
1531 It provides a standard way to compile against specific versions of libraries
1532 to reproduce user environments.")
1533 (home-page "http://github.com/flavorjones/mini_portile")
1534 (license license:expat)))
1535
1536 (define-public ruby-nokogiri
1537 (package
1538 (name "ruby-nokogiri")
1539 (version "1.6.6.2")
1540 (source (origin
1541 (method url-fetch)
1542 (uri (rubygems-uri "nokogiri" version))
1543 (sha256
1544 (base32
1545 "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30"))))
1546 (build-system ruby-build-system)
1547 (arguments
1548 ;; Tests fail because Nokogiri can only test with an installed extension,
1549 ;; and also because many test framework dependencies are missing.
1550 '(#:tests? #f
1551 #:gem-flags (list "--" "--use-system-libraries"
1552 (string-append "--with-xml2-include="
1553 (assoc-ref %build-inputs "libxml2")
1554 "/include/libxml2" ))))
1555 (native-inputs
1556 `(("ruby-hoe" ,ruby-hoe)
1557 ("ruby-rake-compiler", ruby-rake-compiler)))
1558 (inputs
1559 `(("zlib" ,zlib)
1560 ("libxml2" ,libxml2)
1561 ("libxslt" ,libxslt)))
1562 (propagated-inputs
1563 `(("ruby-mini-portile" ,ruby-mini-portile)))
1564 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
1565 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
1566 both CSS3 selector and XPath 1.0 support.")
1567 (home-page "http://www.nokogiri.org/")
1568 (license license:expat)))
1569
1570 (define-public ruby-method-source
1571 (package
1572 (name "ruby-method-source")
1573 (version "0.8.2")
1574 (source
1575 (origin
1576 (method url-fetch)
1577 (uri (rubygems-uri "method_source" version))
1578 (sha256
1579 (base32
1580 "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
1581 (build-system ruby-build-system)
1582 (native-inputs
1583 `(("ruby-bacon" ,ruby-bacon)
1584 ("git" ,git)))
1585 (synopsis "Retrieve the source code for Ruby methods")
1586 (description "Method_source retrieves the source code for Ruby methods.
1587 Additionally, it can extract source code from Proc and Lambda objects or just
1588 extract comments.")
1589 (home-page "https://github.com/banister/method_source")
1590 (license license:expat)))
1591
1592 (define-public ruby-coderay
1593 (package
1594 (name "ruby-coderay")
1595 (version "1.1.0")
1596 (source
1597 (origin
1598 (method url-fetch)
1599 (uri (rubygems-uri "coderay" version))
1600 (sha256
1601 (base32
1602 "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
1603 (build-system ruby-build-system)
1604 (arguments
1605 '(#:tests? #f)) ; missing test files
1606 (synopsis "Ruby syntax highlighting library")
1607 (description "Coderay is a Ruby library that provides syntax highlighting
1608 for select languages.")
1609 (home-page "http://coderay.rubychan.de")
1610 (license license:expat)))
1611
1612 (define-public ruby-pry
1613 (package
1614 (name "ruby-pry")
1615 (version "0.10.1")
1616 (source
1617 (origin
1618 (method url-fetch)
1619 (uri (rubygems-uri "pry" version))
1620 (sha256
1621 (base32
1622 "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
1623 (build-system ruby-build-system)
1624 (arguments
1625 '(#:tests? #f)) ; no tests
1626 (propagated-inputs
1627 `(("ruby-coderay" ,ruby-coderay)
1628 ("ruby-method-source" ,ruby-method-source)
1629 ("ruby-slop" ,ruby-slop-3)))
1630 (synopsis "Ruby REPL")
1631 (description "Pry is an IRB alternative and runtime developer console for
1632 Ruby. It features syntax highlighting, a plugin architecture, runtime
1633 invocation, and source and documentation browsing.")
1634 (home-page "http://pryrepl.org")
1635 (license license:expat)))
1636
1637 (define-public ruby-thread-safe
1638 (package
1639 (name "ruby-thread-safe")
1640 (version "0.3.5")
1641 (source
1642 (origin
1643 (method url-fetch)
1644 (uri (rubygems-uri "thread_safe" version))
1645 (sha256
1646 (base32
1647 "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
1648 (build-system ruby-build-system)
1649 (arguments
1650 '(#:tests? #f)) ; needs simplecov, among others
1651 (synopsis "Thread-safe utilities for Ruby")
1652 (description "The thread_safe library provides thread-safe collections and
1653 utilities for Ruby.")
1654 (home-page "https://github.com/ruby-concurrency/thread_safe")
1655 (license license:asl2.0)))
1656
1657 (define-public ruby-tzinfo
1658 (package
1659 (name "ruby-tzinfo")
1660 (version "1.2.2")
1661 (source
1662 (origin
1663 (method url-fetch)
1664 (uri (rubygems-uri "tzinfo" version))
1665 (sha256
1666 (base32
1667 "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
1668 (build-system ruby-build-system)
1669 (propagated-inputs
1670 `(("ruby-thread-safe" ,ruby-thread-safe)))
1671 (synopsis "Time zone library for Ruby")
1672 (description "TZInfo is a Ruby library that provides daylight savings
1673 aware transformations between times in different time zones.")
1674 (home-page "http://tzinfo.github.io")
1675 (license license:expat)))
1676
1677 (define-public ruby-rb-inotify
1678 (package
1679 (name "ruby-rb-inotify")
1680 (version "0.9.5")
1681 (source
1682 (origin
1683 (method url-fetch)
1684 (uri (rubygems-uri "rb-inotify" version))
1685 (sha256
1686 (base32
1687 "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"))))
1688 (build-system ruby-build-system)
1689 (arguments
1690 '(#:tests? #f ; there are no tests
1691 #:phases
1692 (modify-phases %standard-phases
1693 ;; Building the gemspec with rake is not working here since it is
1694 ;; generated with Jeweler. It is also unnecessary because the
1695 ;; existing gemspec does not use any development tools to generate a
1696 ;; list of files.
1697 (replace 'build
1698 (lambda _
1699 (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
1700 (propagated-inputs
1701 `(("ruby-ffi" ,ruby-ffi)))
1702 (native-inputs
1703 `(("ruby-yard" ,ruby-yard)))
1704 (synopsis "Ruby wrapper for Linux's inotify")
1705 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
1706 kernel subsystem for monitoring changes to files and directories.")
1707 (home-page "https://github.com/nex3/rb-inotify")
1708 (license license:expat)))
1709
1710 (define-public ruby-json
1711 (package
1712 (name "ruby-json")
1713 (version "1.8.3")
1714 (source
1715 (origin
1716 (method url-fetch)
1717 (uri (rubygems-uri "json" version))
1718 (sha256
1719 (base32
1720 "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
1721 (build-system ruby-build-system)
1722 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
1723 (synopsis "JSON library for Ruby")
1724 (description "This Ruby library provides a JSON implementation written as
1725 a native C extension.")
1726 (home-page "http://json-jruby.rubyforge.org/")
1727 (license (list license:ruby license:gpl2)))) ; GPL2 only
1728
1729 (define-public ruby-listen
1730 (package
1731 (name "ruby-listen")
1732 (version "3.0.3")
1733 (source
1734 (origin
1735 (method url-fetch)
1736 (uri (rubygems-uri "listen" version))
1737 (sha256
1738 (base32
1739 "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
1740 (build-system ruby-build-system)
1741 (arguments '(#:tests? #f)) ; no tests
1742 (propagated-inputs
1743 ;; FIXME: omitting "ruby-rb-fsevent" which is only for MacOS.
1744 `(("ruby-rb-inotify" ,ruby-rb-inotify)))
1745 (synopsis "Listen to file modifications")
1746 (description "The Listen gem listens to file modifications and notifies
1747 you about the changes.")
1748 (home-page "https://github.com/guard/listen")
1749 (license license:expat)))
1750
1751 (define-public ruby-activesupport
1752 (package
1753 (name "ruby-activesupport")
1754 (version "4.2.4")
1755 (source
1756 (origin
1757 (method url-fetch)
1758 (uri (rubygems-uri "activesupport" version))
1759 (sha256
1760 (base32
1761 "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
1762 (build-system ruby-build-system)
1763 (arguments
1764 '(#:tests? #f)) ; no tests
1765 (propagated-inputs
1766 `(("ruby-i18n" ,ruby-i18n)
1767 ("ruby-json" ,ruby-json)
1768 ("ruby-minitest" ,ruby-minitest)
1769 ("ruby-thread-safe" ,ruby-thread-safe)
1770 ("ruby-tzinfo" ,ruby-tzinfo)))
1771 (synopsis "Ruby on Rails utility library")
1772 (description "ActiveSupport is a toolkit of support libraries and Ruby
1773 core extensions extracted from the Rails framework. It includes support for
1774 multibyte strings, internationalization, time zones, and testing.")
1775 (home-page "http://www.rubyonrails.org")
1776 (license license:expat)))
1777
1778 (define-public ruby-ox
1779 (package
1780 (name "ruby-ox")
1781 (version "2.2.1")
1782 (source
1783 (origin
1784 (method url-fetch)
1785 (uri (rubygems-uri "ox" version))
1786 (sha256
1787 (base32
1788 "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
1789 (build-system ruby-build-system)
1790 (arguments
1791 '(#:tests? #f)) ; no tests
1792 (synopsis "Optimized XML library for Ruby")
1793 (description
1794 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
1795 written as a native C extension. It was designed to be an alternative to
1796 Nokogiri and other Ruby XML parsers for generic XML parsing and as an
1797 alternative to Marshal for Object serialization. ")
1798 (home-page "http://www.ohler.com/ox")
1799 (license license:expat)))
1800
1801 (define-public ruby-pg
1802 (package
1803 (name "ruby-pg")
1804 (version "0.18.2")
1805 (source
1806 (origin
1807 (method url-fetch)
1808 (uri (rubygems-uri "pg" version))
1809 (sha256
1810 (base32
1811 "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
1812 (build-system ruby-build-system)
1813 (arguments
1814 '(#:test-target "spec"))
1815 (native-inputs
1816 `(("ruby-rake-compiler" ,ruby-rake-compiler)
1817 ("ruby-hoe" ,ruby-hoe)
1818 ("ruby-rspec" ,ruby-rspec)))
1819 (inputs
1820 `(("postgresql" ,postgresql)))
1821 (synopsis "Ruby interface to PostgreSQL")
1822 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
1823 with PostgreSQL 8.4 and later.")
1824 (home-page "https://bitbucket.org/ged/ruby-pg")
1825 (license license:ruby)))
1826
1827 (define-public ruby-byebug
1828 (package
1829 (name "ruby-byebug")
1830 (version "6.0.2")
1831 (source
1832 (origin
1833 (method url-fetch)
1834 (uri (rubygems-uri "byebug" version))
1835 (sha256
1836 (base32
1837 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
1838 (build-system ruby-build-system)
1839 (arguments
1840 '(#:tests? #f)) ; no tests
1841 (synopsis "Debugger for Ruby 2")
1842 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
1843 TracePoint C API for execution control and the Debug Inspector C API for call
1844 stack navigation. The core component provides support that front-ends can
1845 build on. It provides breakpoint handling and bindings for stack frames among
1846 other things and it comes with a command line interface.")
1847 (home-page "http://github.com/deivid-rodriguez/byebug")
1848 (license license:bsd-2)))
1849
1850 (define-public ruby-rack
1851 (package
1852 (name "ruby-rack")
1853 (version "1.6.4")
1854 (source
1855 (origin
1856 (method url-fetch)
1857 (uri (rubygems-uri "rack" version))
1858 (sha256
1859 (base32
1860 "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
1861 (build-system ruby-build-system)
1862 (arguments
1863 '(#:phases
1864 (modify-phases %standard-phases
1865 (add-before 'check 'fix-tests
1866 (lambda _
1867 ;; A few of the tests use the length of a file on disk for
1868 ;; Content-Length and Content-Range headers. However, this file
1869 ;; has a shebang in it which an earlier phase patches, growing
1870 ;; the file size from 193 to 239 bytes when the store prefix is
1871 ;; "/gnu/store".
1872 (let ((size-diff (- (string-length (which "ruby"))
1873 (string-length "/usr/bin/env ruby"))))
1874 (substitute* '("test/spec_file.rb")
1875 (("193")
1876 (number->string (+ 193 size-diff)))
1877 (("bytes(.)22-33" all delimiter)
1878 (string-append "bytes"
1879 delimiter
1880 (number->string (+ 22 size-diff))
1881 "-"
1882 (number->string (+ 33 size-diff))))))
1883 #t)))))
1884 (native-inputs
1885 `(("ruby-bacon" ,ruby-bacon)))
1886 (synopsis "Unified web application interface for Ruby")
1887 (description "Rack provides a minimal, modular and adaptable interface for
1888 developing web applications in Ruby. By wrapping HTTP requests and responses,
1889 it unifies the API for web servers, web frameworks, and software in between
1890 into a single method call.")
1891 (home-page "http://rack.github.io/")
1892 (license license:expat)))
1893
1894 (define-public ruby-docile
1895 (package
1896 (name "ruby-docile")
1897 (version "1.1.5")
1898 (source
1899 (origin
1900 (method url-fetch)
1901 (uri (rubygems-uri "docile" version))
1902 (sha256
1903 (base32
1904 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
1905 (build-system ruby-build-system)
1906 (arguments
1907 '(#:tests? #f)) ; needs github-markup, among others
1908 (synopsis "Ruby EDSL helper library")
1909 (description "Docile is a Ruby library that provides an interface for
1910 creating embedded domain specific languages (EDSLs) that manipulate existing
1911 Ruby classes.")
1912 (home-page "https://ms-ati.github.io/docile/")
1913 (license license:expat)))
1914
1915 (define-public ruby-gherkin3
1916 (package
1917 (name "ruby-gherkin3")
1918 (version "3.1.1")
1919 (source
1920 (origin
1921 (method url-fetch)
1922 (uri (rubygems-uri "gherkin3" version))
1923 (sha256
1924 (base32
1925 "0xsyxhqa1gwcxzvsdy4didaiq5vam8ma3fbwbw2w60via4k6r1z9"))))
1926 (build-system ruby-build-system)
1927 (native-inputs
1928 `(("bundler" ,bundler)))
1929 (arguments
1930 '(#:tests? #f)) ; needs simplecov, among others
1931 (synopsis "Gherkin parser for Ruby")
1932 (description "Gherkin 3 is a parser and compiler for the Gherkin language.
1933 It is intended to replace Gherkin 2 and be used by all Cucumber
1934 implementations to parse '.feature' files.")
1935 (home-page "https://github.com/cucumber/gherkin3")
1936 (license license:expat)))
1937
1938 (define-public ruby-cucumber-core
1939 (package
1940 (name "ruby-cucumber-core")
1941 (version "1.3.0")
1942 (source
1943 (origin
1944 (method url-fetch)
1945 (uri (rubygems-uri "cucumber-core" version))
1946 (sha256
1947 (base32
1948 "12mrzf0s96izpq0k10lahlkgwc4fjs0zfs344rh8r8h3w3jyppr8"))))
1949 (build-system ruby-build-system)
1950 (propagated-inputs
1951 `(("ruby-gherkin3" ,ruby-gherkin3)))
1952 (native-inputs
1953 `(("bundler" ,bundler)))
1954 (arguments
1955 '(#:tests? #f)) ; needs simplecov, among others
1956 (synopsis "Core library for the Cucumber BDD app")
1957 (description "Cucumber is a tool for running automated tests
1958 written in plain language. Because they're written in plain language,
1959 they can be read by anyone on your team. Because they can be read by
1960 anyone, you can use them to help improve communication, collaboration
1961 and trust on your team.")
1962 (home-page "https://cucumber.io/")
1963 (license license:expat)))
1964
1965 (define-public ruby-bio-logger
1966 (package
1967 (name "ruby-bio-logger")
1968 (version "1.0.1")
1969 (source
1970 (origin
1971 (method url-fetch)
1972 (uri (rubygems-uri "bio-logger" version))
1973 (sha256
1974 (base32
1975 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
1976 (build-system ruby-build-system)
1977 (arguments
1978 `(#:tests? #f)) ; rake errors, missing shoulda
1979 (propagated-inputs
1980 `(("ruby-log4r" ,ruby-log4r)))
1981 (synopsis "Log4r wrapper for Ruby")
1982 (description "Bio-logger is a wrapper around Log4r adding extra logging
1983 features such as filtering and fine grained logging.")
1984 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
1985 (license license:expat)))
1986
1987 (define-public ruby-yard
1988 (package
1989 (name "ruby-yard")
1990 (version "0.8.7.6")
1991 (source
1992 (origin
1993 (method url-fetch)
1994 (uri (rubygems-uri "yard" version))
1995 (sha256
1996 (base32
1997 "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x"))))
1998 (build-system ruby-build-system)
1999 (arguments
2000 `(#:test-target "specs"
2001 #:phases
2002 (modify-phases %standard-phases
2003 (add-before 'check 'set-HOME
2004 ;; $HOME needs to be set to somewhere writeable for tests to run
2005 (lambda _ (setenv "HOME" "/tmp") #t)))))
2006 (native-inputs
2007 `(("ruby-rspec" ,ruby-rspec-2)
2008 ("ruby-rack" ,ruby-rack)))
2009 (synopsis "Documentation generation tool for Ruby")
2010 (description
2011 "YARD is a documentation generation tool for the Ruby programming
2012 language. It enables the user to generate consistent, usable documentation
2013 that can be exported to a number of formats very easily, and also supports
2014 extending for custom Ruby constructs such as custom class level definitions.")
2015 (home-page "http://yardoc.org")
2016 (license license:expat)))
2017
2018 (define-public ruby-eventmachine
2019 (package
2020 (name "ruby-eventmachine")
2021 (version "1.0.8")
2022 (source
2023 (origin
2024 (method url-fetch)
2025 (uri (rubygems-uri "eventmachine" version))
2026 (sha256
2027 (base32
2028 "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp"))))
2029 (build-system ruby-build-system)
2030 (arguments
2031 '(#:tests? #f)) ; test suite tries to connect to google.com
2032 (native-inputs
2033 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
2034 (synopsis "Single-threaded network event framework for Ruby")
2035 (description
2036 "EventMachine implements a single-threaded engine for arbitrary network
2037 communications. EventMachine wraps all interactions with sockets, allowing
2038 programs to concentrate on the implementation of network protocols. It can be
2039 used to create both network servers and clients.")
2040 (home-page "http://rubyeventmachine.com")
2041 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT