gnu: Add ruby-tdiff.
[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 ragel)
34 #:use-module (gnu packages tls)
35 #:use-module (gnu packages version-control)
36 #:use-module (guix packages)
37 #:use-module (guix download)
38 #:use-module (guix git-download)
39 #:use-module (guix utils)
40 #:use-module (guix build-system gnu)
41 #:use-module (gnu packages xml)
42 #:use-module (guix build-system ruby))
43
44 (define-public ruby
45 (package
46 (name "ruby")
47 (version "2.2.3")
48 (source
49 (origin
50 (method url-fetch)
51 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
52 (version-major+minor version)
53 "/ruby-" version ".tar.xz"))
54 (sha256
55 (base32
56 "19x8gs67klgc3ag815jpin83jn2nv1akgjcgayd6v3h1xplr1v66"))))
57 (build-system gnu-build-system)
58 (arguments
59 `(#:test-target "test"
60 #:parallel-tests? #f
61 #:phases
62 (alist-cons-before
63 'configure 'replace-bin-sh
64 (lambda _
65 (substitute* '("Makefile.in"
66 "ext/pty/pty.c"
67 "io.c"
68 "lib/mkmf.rb"
69 "process.c"
70 "test/rubygems/test_gem_ext_configure_builder.rb"
71 "test/rdoc/test_rdoc_parser.rb"
72 "test/ruby/test_rubyoptions.rb"
73 "test/ruby/test_process.rb"
74 "test/ruby/test_system.rb"
75 "tool/rbinstall.rb")
76 (("/bin/sh") (which "sh"))))
77 %standard-phases)))
78 (inputs
79 `(("readline" ,readline)
80 ("openssl" ,openssl)
81 ("libffi" ,libffi)
82 ("gdbm" ,gdbm)
83 ("zlib" ,zlib)))
84 (native-search-paths
85 (list (search-path-specification
86 (variable "GEM_PATH")
87 (files (list (string-append "lib/ruby/gems/"
88 (version-major+minor version)
89 ".0"))))))
90 (synopsis "Programming language interpreter")
91 (description "Ruby is a dynamic object-oriented programming language with
92 a focus on simplicity and productivity.")
93 (home-page "https://ruby-lang.org")
94 (license license:ruby)))
95
96 (define-public ruby-2.1
97 (package (inherit ruby)
98 (version "2.1.6")
99 (source
100 (origin
101 (method url-fetch)
102 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
103 (version-major+minor version)
104 "/ruby-" version ".tar.bz2"))
105 (sha256
106 (base32
107 "1sbcmbhadcxk0509svwxbm2vvgmpf3xjxr1397bgp9x46nz36lkv"))))
108 (arguments
109 `(#:test-target "test"
110 #:parallel-tests? #f
111 #:phases
112 (alist-cons-before
113 'configure 'replace-bin-sh
114 (lambda _
115 (substitute* '("Makefile.in"
116 "ext/pty/pty.c"
117 "io.c"
118 "lib/mkmf.rb"
119 "process.c")
120 (("/bin/sh") (which "sh"))))
121 %standard-phases)))
122 (native-search-paths
123 (list (search-path-specification
124 (variable "GEM_PATH")
125 (files (list (string-append "lib/ruby/gems/"
126 (version-major+minor version)
127 ".0"))))))))
128
129 (define-public ruby-1.8
130 (package (inherit ruby)
131 (version "1.8.7-p374")
132 (source
133 (origin
134 (method url-fetch)
135 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
136 (version-major+minor version)
137 "/ruby-" version ".tar.bz2"))
138 (sha256
139 (base32
140 "1qq7khilwkayrhwmzlxk83scrmiqfi7lgsn4c63znyvz2c1lgqxl"))))
141 (native-search-paths '())
142 (arguments
143 `(#:test-target "test"
144 #:parallel-tests? #f
145 #:phases
146 (alist-cons-before
147 'configure 'replace-bin-sh
148 (lambda _
149 (substitute* '("Makefile.in"
150 "ext/pty/pty.c"
151 "io.c"
152 "lib/mkmf.rb"
153 "process.c")
154 (("/bin/sh") (which "sh"))))
155 %standard-phases)))))
156
157 (define-public ruby-hoe
158 (package
159 (name "ruby-hoe")
160 (version "3.13.1")
161 (source (origin
162 (method url-fetch)
163 (uri (rubygems-uri "hoe" version))
164 (sha256
165 (base32
166 "1mac13krdrasn9819dd65xj27kklfy0xdbj3p6s2ij4vlcb46h8q"))) )
167 (build-system ruby-build-system)
168 (synopsis "Ruby project management helper")
169 (description
170 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
171 maintain, and release projects and includes a dynamic plug-in system allowing
172 for easy extensibility. Hoe ships with plug-ins for all the usual project
173 tasks including rdoc generation, testing, packaging, deployment, and
174 announcement.")
175 (home-page "http://www.zenspider.com/projects/hoe.html")
176 (license license:expat)))
177
178 (define-public ruby-rake-compiler
179 (package
180 (name "ruby-rake-compiler")
181 (version "0.9.5")
182 (source (origin
183 (method url-fetch)
184 (uri (rubygems-uri "rake-compiler" version))
185 (sha256
186 (base32
187 "1k8im2vzj849xdgjk6wafspkiwwapqwm738majchb4dnhnsk64cx"))))
188 (build-system ruby-build-system)
189 (arguments
190 '(#:tests? #f)) ; needs cucumber
191 (synopsis "Building and packaging helper for Ruby native extensions")
192 (description "Rake-compiler provides a framework for building and
193 packaging native C and Java extensions in Ruby.")
194 (home-page "https://github.com/rake-compiler/rake-compiler")
195 (license license:expat)))
196
197 (define-public ruby-i18n
198 (package
199 (name "ruby-i18n")
200 (version "0.7.0")
201 (source (origin
202 (method url-fetch)
203 (uri (rubygems-uri "i18n" version))
204 (sha256
205 (base32
206 "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758"))))
207 (build-system ruby-build-system)
208 (arguments
209 '(#:tests? #f)) ; no tests
210 (synopsis "Internationalization library for Ruby")
211 (description "Ruby i18n is an internationalization and localization
212 solution for Ruby programs. It features translation and localization,
213 interpolation of values to translations, pluralization, customizable
214 transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
215 translation data, custom key/scope separator, custom exception handlers, and
216 an extensible architecture with a swappable backend.")
217 (home-page "http://github.com/svenfuchs/i18n")
218 (license license:expat)))
219
220 ;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
221 ;; dependencies use RSpec for their test suites! To avoid these circular
222 ;; dependencies, we disable tests for all of the RSpec-related packages.
223 (define ruby-rspec-support
224 (package
225 (name "ruby-rspec-support")
226 (version "3.2.2")
227 (source (origin
228 (method url-fetch)
229 (uri (rubygems-uri "rspec-support" version))
230 (sha256
231 (base32
232 "194zry5195ls2hni7r9824vqb5d3qfg4jb15fgj8glfy0rvw3zxl"))))
233 (build-system ruby-build-system)
234 (arguments
235 '(#:tests? #f)) ; avoid dependency cycles
236 (synopsis "RSpec support library")
237 (description "Support utilities for RSpec gems.")
238 (home-page "https://github.com/rspec/rspec-support")
239 (license license:expat)))
240
241 (define-public ruby-rspec-core
242 (package
243 (name "ruby-rspec-core")
244 (version "3.2.3")
245 (source (origin
246 (method url-fetch)
247 (uri (rubygems-uri "rspec-core" version))
248 (sha256
249 (base32
250 "0k2471iw30gc2cvv67damrx666pmsvx8l0ahk3hm20dhfnmcmpvv"))))
251 (build-system ruby-build-system)
252 (arguments
253 '(#:tests? #f)) ; avoid dependency cycles
254 (propagated-inputs
255 `(("ruby-rspec-support" ,ruby-rspec-support)))
256 (synopsis "RSpec core library")
257 (description "Rspec-core provides the RSpec test runner and example
258 groups.")
259 (home-page "https://github.com/rspec/rspec-core")
260 (license license:expat)))
261
262 (define-public ruby-rspec-core-2
263 (package (inherit ruby-rspec-core)
264 (version "2.14.8")
265 (source (origin
266 (method url-fetch)
267 (uri (rubygems-uri "rspec-core" version))
268 (sha256
269 (base32
270 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
271 (propagated-inputs `())))
272
273 (define-public ruby-diff-lcs
274 (package
275 (name "ruby-diff-lcs")
276 (version "1.2.5")
277 (source (origin
278 (method url-fetch)
279 (uri (rubygems-uri "diff-lcs" version))
280 (sha256
281 (base32
282 "1vf9civd41bnqi6brr5d9jifdw73j9khc6fkhfl1f8r9cpkdvlx1"))))
283 (build-system ruby-build-system)
284 (arguments
285 '(#:tests? #f)) ; avoid dependency cycles
286 (synopsis "Compute the difference between two Enumerable sequences")
287 (description "Diff::LCS computes the difference between two Enumerable
288 sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
289 It includes utilities to create a simple HTML diff output format and a
290 standard diff-like tool.")
291 (home-page "https://github.com/halostatue/diff-lcs")
292 (license license:expat)))
293
294 (define-public ruby-rspec-expectations
295 (package
296 (name "ruby-rspec-expectations")
297 (version "3.2.1")
298 (source (origin
299 (method url-fetch)
300 (uri (rubygems-uri "rspec-expectations" version))
301 (sha256
302 (base32
303 "01kmchabgpdcaqdsqg8r0g5gy385xhp1k1jsds3w264ypin17n14"))))
304 (build-system ruby-build-system)
305 (arguments
306 '(#:tests? #f)) ; avoid dependency cycles
307 (propagated-inputs
308 `(("ruby-rspec-support" ,ruby-rspec-support)
309 ("ruby-diff-lcs" ,ruby-diff-lcs)))
310 (synopsis "RSpec expectations library")
311 (description "Rspec-expectations provides a simple API to express expected
312 outcomes of a code example.")
313 (home-page "https://github.com/rspec/rspec-expectations")
314 (license license:expat)))
315
316 (define-public ruby-rspec-expectations-2
317 (package (inherit ruby-rspec-expectations)
318 (version "2.14.5")
319 (source (origin
320 (method url-fetch)
321 (uri (rubygems-uri "rspec-expectations" version))
322 (sha256
323 (base32
324 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
325 (propagated-inputs
326 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
327
328 (define-public ruby-rspec-mocks
329 (package
330 (name "ruby-rspec-mocks")
331 (version "3.2.1")
332 (source (origin
333 (method url-fetch)
334 (uri (rubygems-uri "rspec-mocks" version))
335 (sha256
336 (base32
337 "09yig1lwgxl8fsns71z3xhv7wkg7zvagydh37pvaqpw92dz55jv2"))))
338 (build-system ruby-build-system)
339 (arguments
340 '(#:tests? #f)) ; avoid dependency cycles
341 (propagated-inputs
342 `(("ruby-rspec-support" ,ruby-rspec-support)
343 ("ruby-diff-lcs" ,ruby-diff-lcs)))
344 (synopsis "RSpec stubbing and mocking library")
345 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
346 support for stubbing and mocking.")
347 (home-page "https://github.com/rspec/rspec-mocks")
348 (license license:expat)))
349
350 (define-public ruby-rspec-mocks-2
351 (package (inherit ruby-rspec-mocks)
352 (version "2.14.6")
353 (source (origin
354 (method url-fetch)
355 (uri (rubygems-uri "rspec-mocks" version))
356 (sha256
357 (base32
358 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
359 (propagated-inputs
360 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
361
362 (define-public ruby-rspec
363 (package
364 (name "ruby-rspec")
365 (version "3.2.0")
366 (source (origin
367 (method url-fetch)
368 (uri (rubygems-uri "rspec" version))
369 (sha256
370 (base32
371 "0lkz01j4yxcwb3g5w6r1l9khnyw3sxib4rrh4npd2pxh390fcc4f"))))
372 (build-system ruby-build-system)
373 (arguments
374 '(#:tests? #f)) ; avoid dependency cycles
375 (propagated-inputs
376 `(("ruby-rspec-core" ,ruby-rspec-core)
377 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
378 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
379 (synopsis "Behavior-driven development framework for Ruby")
380 (description "RSpec is a behavior-driven development (BDD) framework for
381 Ruby. This meta-package includes the RSpec test runner, along with the
382 expectations and mocks frameworks.")
383 (home-page "http://rspec.info/")
384 (license license:expat)))
385
386 (define-public ruby-rspec-2
387 (package (inherit ruby-rspec)
388 (version "2.14.1")
389 (source (origin
390 (method url-fetch)
391 (uri (rubygems-uri "rspec" version))
392 (sha256
393 (base32
394 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
395 (propagated-inputs
396 `(("ruby-rspec-core" ,ruby-rspec-core-2)
397 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
398 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
399
400 ;; Bundler is yet another source of circular dependencies, so we must disable
401 ;; its test suite as well.
402 (define-public bundler
403 (package
404 (name "bundler")
405 (version "1.10.6")
406 (source (origin
407 (method url-fetch)
408 (uri (rubygems-uri "bundler" version))
409 (sha256
410 (base32
411 "1vlzfq0bkkj4jyq6av0y55mh5nj5n0f3mfbmmifwgkh44g8k6agv"))))
412 (build-system ruby-build-system)
413 (arguments
414 '(#:tests? #f)) ; avoid dependency cycles
415 (synopsis "Ruby gem bundler")
416 (description "Bundler automatically downloads and installs a list of gems
417 specified in a \"Gemfile\", as well as their dependencies.")
418 (home-page "http://bundler.io/")
419 (license license:expat)))
420
421 (define-public ruby-builder
422 (package
423 (name "ruby-builder")
424 (version "3.2.2")
425 (source (origin
426 (method url-fetch)
427 (uri (rubygems-uri "builder" version))
428 (sha256
429 (base32
430 "14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2"))))
431 (build-system ruby-build-system)
432 (arguments
433 `(#:phases
434 (modify-phases %standard-phases
435 (add-after 'unpack 'do-not-use-rvm
436 (lambda _
437 (substitute* "rakelib/tags.rake"
438 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
439 #t)))))
440 (synopsis "Ruby library to create structured data")
441 (description "Builder provides a number of builder objects that make it
442 easy to create structured data. Currently the following builder objects are
443 supported: XML Markup and XML Events.")
444 (home-page "https://github.com/jimweirich/builder")
445 (license license:expat)))
446
447 (define-public ruby-rjb
448 (package
449 (name "ruby-rjb")
450 (version "1.5.3")
451 (source (origin
452 (method url-fetch)
453 (uri (rubygems-uri "rjb" version))
454 (sha256
455 (base32
456 "0gzs92dagk981s4vrymnqg0vll783b9k564j0cdgp167nc5a2zg4"))))
457 (build-system ruby-build-system)
458 (arguments
459 `(#:tests? #f ; no rakefile
460 #:phases
461 (modify-phases %standard-phases
462 (add-before 'build 'set-java-home
463 (lambda* (#:key inputs #:allow-other-keys)
464 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
465 #t)))))
466 (native-inputs
467 `(("jdk" ,icedtea7 "jdk")))
468 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
469 (description "RJB is a bridge program that connects Ruby and Java via the
470 Java Native Interface.")
471 (home-page "http://www.artonx.org/collabo/backyard/?RubyJavaBridge")
472 (license license:lgpl2.1+)))
473
474 (define-public ruby-log4r
475 (package
476 (name "ruby-log4r")
477 (version "1.1.10")
478 (source
479 (origin
480 (method url-fetch)
481 (uri (rubygems-uri "log4r" version))
482 (sha256
483 (base32
484 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
485 (build-system ruby-build-system)
486 (arguments
487 '(#:tests? #f)) ; no Rakefile in gem
488 (synopsis "Flexible logging library for Ruby")
489 (description "Comprehensive and flexible logging library written
490 in Ruby for use in Ruby programs. It features a hierarchical logging
491 system of any number of levels, custom level names, logger
492 inheritance, multiple output destinations per log event, execution
493 tracing, custom formatting, thread safteyness, XML and YAML
494 configuration, and more.")
495 (home-page "http://log4r.rubyforge.org/")
496 (license license:bsd-3)))
497
498 (define-public ruby-atoulme-antwrap
499 (package
500 (name "ruby-atoulme-antwrap")
501 (version "0.7.5")
502 (source (origin
503 (method url-fetch)
504 (uri (rubygems-uri "atoulme-Antwrap" version))
505 (sha256
506 (base32
507 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
508 (build-system ruby-build-system)
509 ;; Test data required for most of the tests are not included.
510 (arguments `(#:tests? #f))
511 (native-inputs
512 `(("ruby-hoe" ,ruby-hoe)))
513 (inputs
514 `(("ruby-rjb" ,ruby-rjb)))
515 (synopsis "Ruby wrapper for the Ant build tool")
516 (description "Antwrap is a Ruby module that wraps the Apache Ant build
517 tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
518 script.")
519 (home-page "http://rubyforge.org/projects/antwrap/")
520 (license license:expat)))
521
522 (define-public ruby-atoulme-saikuro
523 (package
524 (name "ruby-atoulme-saikuro")
525 (version "1.2.1")
526 (source (origin
527 (method url-fetch)
528 (uri (rubygems-uri "atoulme-Saikuro" version))
529 (sha256
530 (base32
531 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
532 (build-system ruby-build-system)
533 ;; FIXME: There are no unit tests. The tests are demonstrations of the
534 ;; "saikuro" tool.
535 (arguments `(#:tests? #f))
536 (synopsis "Cyclomatic complexity analyzer")
537 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
538 given Ruby source code Saikuro will generate a report listing the cyclomatic
539 complexity of each method found. In addition, Saikuro counts the number of
540 lines per method and can generate a listing of the number of tokens on each
541 line of code.")
542 (home-page "http://www.github.com/atoulme/Saikuro")
543 ;; File headers contain the BSD-3 license and the README.rdoc says that
544 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
545 ;; of the Expat license.
546 (license license:bsd-3)))
547
548 (define-public ruby-ci-reporter
549 (package
550 (name "ruby-ci-reporter")
551 (version "2.0.0")
552 (source (origin
553 (method url-fetch)
554 (uri (rubygems-uri "ci_reporter" version))
555 (sha256
556 (base32
557 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
558 (build-system ruby-build-system)
559 (arguments
560 `(#:test-target "rspec"))
561 (propagated-inputs
562 `(("ruby-builder" ,ruby-builder)))
563 (native-inputs
564 `(("bundler" ,bundler)
565 ("ruby-rspec" ,ruby-rspec)))
566 (synopsis "Generate XML reports of runs test")
567 (description
568 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
569 you to generate XML reports of your test runs. The resulting files can be
570 read by a continuous integration system that understands Ant's JUnit report
571 format.")
572 (home-page "https://github.com/nicksieger/ci_reporter")
573 (license license:expat)))
574
575 (define-public ruby-saikuro-treemap
576 (package
577 (name "ruby-saikuro-treemap")
578 (version "0.2.0")
579 (source (origin
580 (method url-fetch)
581 (uri (rubygems-uri "saikuro_treemap" version))
582 (sha256
583 (base32
584 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
585 (build-system ruby-build-system)
586 ;; Some of the tests fail because the generated JSON has keys in a
587 ;; different order. This is a problem with the test suite rather than any
588 ;; of the involved libraries.
589 (arguments `(#:tests? #f))
590 (propagated-inputs
591 `(("ruby-json-pure" ,ruby-json-pure)
592 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
593 (synopsis "Generate complexity treemap based on saikuro analysis")
594 (description
595 "This gem generates a treemap showing the complexity of Ruby code on
596 which it is run. It uses Saikuro under the covers to analyze Ruby code
597 complexity.")
598 (home-page "http://github.com/ThoughtWorksStudios/saikuro_treemap")
599 (license license:expat)))
600
601 (define-public ruby-orderedhash
602 (package
603 (name "ruby-orderedhash")
604 (version "0.0.6")
605 (source (origin
606 (method url-fetch)
607 (uri (rubygems-uri "orderedhash" version))
608 (sha256
609 (base32
610 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
611 (build-system ruby-build-system)
612 (arguments
613 '(#:tests? #f)) ; no test suite
614 (synopsis "Ruby library providing an order-preserving hash")
615 (description "Orderedhash is a Ruby library providing a hash
616 implementation that preserves the order of items and features some array-like
617 extensions.")
618 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
619 (license license:public-domain)))
620
621 (define-public ruby-libxml
622 (package
623 (name "ruby-libxml")
624 (version "2.8.0")
625 (source
626 (origin
627 (method url-fetch)
628 (uri (rubygems-uri "libxml-ruby" version))
629 (sha256
630 (base32
631 "1dhjqp4r9vkdp00l6h1cj8qfndzxlhlxk6b9g0w4v55gz857ilhb"))))
632 (build-system ruby-build-system)
633 (inputs
634 `(("zlib" ,zlib)
635 ("libxml2" ,libxml2)))
636 (arguments
637 '(#:tests? #f ; test suite hangs for unknown reason
638 #:gem-flags
639 (list "--"
640 (string-append "--with-xml2-include="
641 (assoc-ref %build-inputs "libxml2")
642 "/include/libxml2" ))))
643 (synopsis "Ruby bindings for GNOME Libxml2")
644 (description "The Libxml-Ruby project provides Ruby language bindings for
645 the GNOME Libxml2 XML toolkit.")
646 (home-page "http://xml4r.github.com/libxml-ruby")
647 (license license:expat)))
648
649 (define-public ruby-xml-simple
650 (package
651 (name "ruby-xml-simple")
652 (version "1.1.5")
653 (source (origin
654 (method url-fetch)
655 (uri (rubygems-uri "xml-simple" version))
656 (sha256
657 (base32
658 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
659 (build-system ruby-build-system)
660 (arguments
661 '(#:tests? #f)) ; no test suite
662 (synopsis "Simple Ruby library for XML processing")
663 (description "This library provides a simple API for XML processing in
664 Ruby.")
665 (home-page "https://github.com/maik/xml-simple")
666 (license license:ruby)))
667
668 (define-public ruby-thor
669 (package
670 (name "ruby-thor")
671 (version "0.19.1")
672 (source (origin
673 (method url-fetch)
674 (uri (rubygems-uri "thor" version))
675 (sha256
676 (base32
677 "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z"))))
678 (build-system ruby-build-system)
679 (arguments
680 '(#:tests? #f)) ; no test suite
681 (native-inputs
682 `(("bundler" ,bundler)))
683 (synopsis "Ruby toolkit for building command-line interfaces")
684 (description "Thor is a toolkit for building powerful command-line
685 interfaces.")
686 (home-page "http://whatisthor.com/")
687 (license license:expat)))
688
689 (define-public ruby-lumberjack
690 (package
691 (name "ruby-lumberjack")
692 (version "1.0.9")
693 (source (origin
694 (method url-fetch)
695 (uri (rubygems-uri "lumberjack" version))
696 (sha256
697 (base32
698 "162frm2bwy58pj8ccsdqa4a6i0csrhb9h5l3inhkl1ivgfc8814l"))))
699 (build-system ruby-build-system)
700 (native-inputs
701 `(("ruby-rspec" ,ruby-rspec)))
702 (synopsis "Logging utility library for Ruby")
703 (description "Lumberjack is a simple logging utility that can be a drop in
704 replacement for Logger or ActiveSupport::BufferedLogger. It provides support
705 for automatically rolling log files even with multiple processes writing the
706 same log file.")
707 (home-page "http://github.com/bdurand/lumberjack")
708 (license license:expat)))
709
710 (define-public ruby-nenv
711 (package
712 (name "ruby-nenv")
713 (version "0.2.0")
714 (source (origin
715 (method url-fetch)
716 (uri (rubygems-uri "nenv" version))
717 (sha256
718 (base32
719 "152wxwri0afwgnxdf93gi6wjl9rr5z7vwp8ln0gpa3rddbfc27s6"))))
720 (build-system ruby-build-system)
721 (arguments
722 `(#:tests? #f)) ; no tests included
723 (native-inputs
724 `(("ruby-rspec" ,ruby-rspec)
725 ("bundler" ,bundler)))
726 (synopsis "Ruby interface for modifying the environment")
727 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
728 and inspect the environment.")
729 (home-page "https://github.com/e2/nenv")
730 (license license:expat)))
731
732 (define-public ruby-permutation
733 (package
734 (name "ruby-permutation")
735 (version "0.1.8")
736 (source (origin
737 (method url-fetch)
738 (uri (rubygems-uri "permutation" version))
739 (sha256
740 (base32
741 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
742 (build-system ruby-build-system)
743 (arguments
744 `(#:phases
745 (modify-phases %standard-phases
746 (add-after 'unpack 'fix-rakefile
747 (lambda _
748 (substitute* "Rakefile"
749 (("require 'rake/gempackagetask'")
750 "require 'rubygems/package_task'")
751 (("include Config") ""))
752 #t))
753 (replace 'check
754 (lambda _
755 (zero? (system* "ruby" "-Ilib" "test/test.rb")))))))
756 (synopsis "Library to perform operations with sequence permutations")
757 (description "This package provides a Ruby library to perform different
758 operations with permutations of sequences, such as strings and arrays.")
759 (home-page "http://flori.github.io/permutation")
760 (license license:gpl2))) ; GPL 2 only
761
762 (define-public ruby-shellany
763 (package
764 (name "ruby-shellany")
765 (version "0.0.1")
766 (source (origin
767 (method url-fetch)
768 (uri (rubygems-uri "shellany" version))
769 (sha256
770 (base32
771 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
772 (build-system ruby-build-system)
773 (arguments
774 `(#:test-target "default"
775 #:phases
776 (modify-phases %standard-phases
777 (add-after 'unpack 'fix-version-test
778 (lambda _
779 (substitute* "spec/shellany_spec.rb"
780 (("^RSpec") "require \"shellany\"\nRSpec"))
781 #t)))))
782 (native-inputs
783 `(("ruby-rspec" ,ruby-rspec)
784 ("ruby-nenv" ,ruby-nenv)
785 ("bundler" ,bundler)))
786 (synopsis "Capture command output")
787 (description "Shellany is a Ruby library providing functions to capture
788 the output produced by running shell commands.")
789 (home-page "https://rubygems.org/gems/shellany")
790 (license license:expat)))
791
792 (define-public ruby-notiffany
793 (package
794 (name "ruby-notiffany")
795 (version "0.0.7")
796 (source (origin
797 (method url-fetch)
798 (uri (rubygems-uri "notiffany" version))
799 (sha256
800 (base32
801 "1v5x1w59qq85r6dpv3y9ga34dfd7hka1qxyiykaw7gm0i6kggbhi"))))
802 (build-system ruby-build-system)
803 ;; Tests are not included in the gem.
804 (arguments `(#:tests? #f))
805 (propagated-inputs
806 `(("ruby-shellany" ,ruby-shellany)
807 ("ruby-nenv" ,ruby-nenv)))
808 (native-inputs
809 `(("bundler" ,bundler)))
810 (synopsis "Wrapper libray for notification libraries")
811 (description "Notiffany is a Ruby wrapper libray for notification
812 libraries such as Libnotify.")
813 (home-page "https://github.com/guard/notiffany")
814 (license license:expat)))
815
816 (define-public ruby-formatador
817 (package
818 (name "ruby-formatador")
819 (version "0.2.5")
820 (source (origin
821 (method url-fetch)
822 (uri (rubygems-uri "formatador" version))
823 (sha256
824 (base32
825 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
826 (build-system ruby-build-system)
827 ;; Circular dependency: Tests require ruby-shindo, which requires
828 ;; ruby-formatador at runtime.
829 (arguments `(#:tests? #f))
830 (synopsis "Ruby library to format text on stdout")
831 (description "Formatador is a Ruby library to format text printed to the
832 standard output stream.")
833 (home-page "http://github.com/geemus/formatador")
834 (license license:expat)))
835
836 (define-public ruby-shindo
837 (package
838 (name "ruby-shindo")
839 (version "0.3.8")
840 (source (origin
841 (method url-fetch)
842 (uri (rubygems-uri "shindo" version))
843 (sha256
844 (base32
845 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
846 (build-system ruby-build-system)
847 (arguments
848 `(#:test-target "shindo_tests"
849 #:phases
850 (modify-phases %standard-phases
851 (add-after 'unpack 'fix-tests
852 (lambda _
853 (substitute* "Rakefile"
854 (("system \"shindo") "system \"./bin/shindo")
855 ;; This test doesn't work, so we disable it.
856 (("fail \"The build_error test should fail") "#"))
857 #t)))))
858 (propagated-inputs
859 `(("ruby-formatador" ,ruby-formatador)))
860 (synopsis "Simple depth first Ruby testing")
861 (description "Shindo is a simple depth first testing library for Ruby.")
862 (home-page "https://github.com/geemus/shindo")
863 (license license:expat)))
864
865 (define-public ruby-rubygems-tasks
866 (package
867 (name "ruby-rubygems-tasks")
868 (version "0.2.4")
869 (source (origin
870 (method url-fetch)
871 (uri (rubygems-uri "rubygems-tasks" version))
872 (sha256
873 (base32
874 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
875 (build-system ruby-build-system)
876 ;; Tests need Internet access.
877 (arguments `(#:tests? #f))
878 (native-inputs
879 `(("ruby-rspec" ,ruby-rspec)
880 ("ruby-yard" ,ruby-yard)))
881 (synopsis "Rake tasks for managing and releasing Ruby Gems")
882 (description "Rubygems-task provides Rake tasks for managing and releasing
883 Ruby Gems.")
884 (home-page "https://github.com/postmodern/rubygems-tasks")
885 (license license:expat)))
886
887 (define-public ruby-ffi
888 (package
889 (name "ruby-ffi")
890 (version "1.9.10")
891 (source (origin
892 (method url-fetch)
893 (uri (rubygems-uri "ffi" version))
894 (sha256
895 (base32
896 "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj"))))
897 (build-system ruby-build-system)
898 ;; FIXME: Before running tests the build system attempts to build libffi
899 ;; from sources.
900 (arguments `(#:tests? #f))
901 (native-inputs
902 `(("ruby-rake-compiler" ,ruby-rake-compiler)
903 ("ruby-rspec" ,ruby-rspec)
904 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
905 (inputs
906 `(("libffi" ,libffi)))
907 (synopsis "Ruby foreign function interface library")
908 (description "Ruby-FFI is a Ruby extension for programmatically loading
909 dynamic libraries, binding functions within them, and calling those functions
910 from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby
911 and JRuby.")
912 (home-page "http://wiki.github.com/ffi/ffi")
913 (license license:bsd-3)))
914
915 (define-public ruby-simplecov-html
916 (package
917 (name "ruby-simplecov-html")
918 (version "0.10.0")
919 (source (origin
920 (method url-fetch)
921 (uri (rubygems-uri "simplecov-html" version))
922 (sha256
923 (base32
924 "1qni8g0xxglkx25w54qcfbi4wjkpvmb28cb7rj5zk3iqynjcdrqf"))))
925 (build-system ruby-build-system)
926 (arguments `(#:tests? #f)) ; there are no tests
927 (native-inputs
928 `(("bundler" ,bundler)))
929 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
930 (description "This package provides the default HTML formatter for
931 the SimpleCov code coverage tool for Ruby version 1.9 and above.")
932 (home-page "https://github.com/colszowka/simplecov-html")
933 (license license:expat)))
934
935 (define-public ruby-simplecov
936 (package
937 (name "ruby-simplecov")
938 (version "0.10.0")
939 (source (origin
940 (method url-fetch)
941 (uri (rubygems-uri "simplecov" version))
942 (sha256
943 (base32
944 "1q2iq2vgrdvvla5y907gkmqx6ry2qvnvc7a90hlcbwgp1w0sv6z4"))))
945 (build-system ruby-build-system)
946 ;; Simplecov depends on rubocop for code style checking at build time.
947 ;; Rubocop needs simplecov at build time.
948 (arguments `(#:tests? #f))
949 (propagated-inputs
950 `(("ruby-json" ,ruby-json)
951 ("ruby-docile" ,ruby-docile)
952 ("ruby-simplecov-html" ,ruby-simplecov-html)))
953 (native-inputs
954 `(("bundler" ,bundler)))
955 (synopsis "Code coverage framework for Ruby")
956 (description "SimpleCov is a code coverage framework for Ruby with a
957 powerful configuration library and automatic merging of coverage across test
958 suites.")
959 (home-page "http://github.com/colszowka/simplecov")
960 (license license:expat)))
961
962 (define-public ruby-useragent
963 (package
964 (name "ruby-useragent")
965 (version "0.13.3")
966 (source (origin
967 (method url-fetch)
968 (uri (rubygems-uri "useragent" version))
969 (sha256
970 (base32
971 "0kz7yyz7528bv4a2kfymvkcm8whqcddhmgaw1ksw1d90n30hhkpc"))))
972 (build-system ruby-build-system)
973 (arguments
974 '(#:tests? #f)) ; no test suite
975 (synopsis "HTTP user agent parser for Ruby")
976 (description "UserAgent is a Ruby library that parses and compares HTTP
977 User Agents.")
978 (home-page "https://github.com/gshutler/useragent")
979 (license license:expat)))
980
981 (define-public ruby-bacon
982 (package
983 (name "ruby-bacon")
984 (version "1.2.0")
985 (source (origin
986 (method url-fetch)
987 (uri (rubygems-uri "bacon" version))
988 (sha256
989 (base32
990 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
991 (build-system ruby-build-system)
992 (synopsis "Small RSpec clone")
993 (description "Bacon is a small RSpec clone providing all essential
994 features.")
995 (home-page "https://github.com/chneukirchen/bacon")
996 (license license:expat)))
997
998 (define-public ruby-arel
999 (package
1000 (name "ruby-arel")
1001 (version "6.0.0")
1002 (source (origin
1003 (method url-fetch)
1004 (uri (rubygems-uri "arel" version))
1005 (sha256
1006 (base32
1007 "18wnfnzr2i5p3fygsddjbi1cimws6823nbk8drxidmnj8jz7h0ar"))))
1008 (build-system ruby-build-system)
1009 (arguments
1010 '(#:tests? #f)) ; no test suite
1011 (synopsis "SQL AST manager for Ruby")
1012 (description "Arel is a SQL AST manager for Ruby. It simplifies the
1013 generation of complex SQL queries and adapts to various relational database
1014 implementations.")
1015 (home-page "https://github.com/rails/arel")
1016 (license license:expat)))
1017
1018 (define-public ruby-connection-pool
1019 (package
1020 (name "ruby-connection-pool")
1021 (version "2.2.0")
1022 (source (origin
1023 (method url-fetch)
1024 (uri (rubygems-uri "connection_pool" version))
1025 (sha256
1026 (base32
1027 "1b2bb3k39ni5mzcnqlv9y4yjkbin20s7dkwzp0jw2jf1rmzcgrmy"))))
1028 (build-system ruby-build-system)
1029 (native-inputs
1030 `(("bundler" ,bundler)))
1031 (synopsis "Generic connection pool for Ruby")
1032 (description "Connection_pool provides a generic connection pooling
1033 interface for Ruby programs.")
1034 (home-page "https://github.com/mperham/connection_pool")
1035 (license license:expat)))
1036
1037 (define-public ruby-net-http-persistent
1038 (package
1039 (name "ruby-net-http-persistent")
1040 (version "2.9.4")
1041 (source (origin
1042 (method url-fetch)
1043 (uri (rubygems-uri "net-http-persistent" version))
1044 (sha256
1045 (base32
1046 "1y9fhaax0d9kkslyiqi1zys6cvpaqx9a0y0cywp24rpygwh4s9r4"))))
1047 (build-system ruby-build-system)
1048 (native-inputs
1049 `(("ruby-connection-pool" ,ruby-connection-pool)
1050 ("ruby-hoe" ,ruby-hoe)))
1051 (synopsis "Persistent HTTP connection manager")
1052 (description "Net::HTTP::Persistent manages persistent HTTP connections
1053 using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
1054 (home-page "https://github.com/drbrain/net-http-persistent")
1055 (license license:expat)))
1056
1057 (define-public ruby-power-assert
1058 (package
1059 (name "ruby-power-assert")
1060 (version "0.2.6")
1061 (source (origin
1062 (method url-fetch)
1063 (uri (rubygems-uri "power_assert" version))
1064 (sha256
1065 (base32
1066 "0gbj379jhnff8rbb6m3kzdm282szjz1a021xzxa38d1bnswj2jx3"))))
1067 (build-system ruby-build-system)
1068 (native-inputs
1069 `(("bundler" ,bundler)))
1070 (synopsis "Assert library with descriptive assertion messages")
1071 (description "Power-assert is an assertion library providing descriptive
1072 assertion messages for tests.")
1073 (home-page "https://github.com/k-tsj/power_assert")
1074 (license (list license:bsd-2 license:ruby))))
1075
1076 (define-public ruby-locale
1077 (package
1078 (name "ruby-locale")
1079 (version "2.1.2")
1080 (source (origin
1081 (method url-fetch)
1082 (uri (rubygems-uri "locale" version))
1083 (sha256
1084 (base32
1085 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
1086 (build-system ruby-build-system)
1087 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1088 ;; which needs ruby-gettext, which needs ruby-locale. To break the
1089 ;; dependency cycle we disable tests.
1090 (arguments `(#:tests? #f))
1091 (native-inputs
1092 `(("bundler" ,bundler)
1093 ("ruby-yard" ,ruby-yard)))
1094 (synopsis "Ruby library providing basic localization APIs")
1095 (description
1096 "Ruby-Locale is the pure ruby library which provides basic APIs for
1097 localization.")
1098 (home-page "https://github.com/ruby-gettext/locale")
1099 (license (list license:lgpl3+ license:ruby))))
1100
1101 (define-public ruby-text
1102 (package
1103 (name "ruby-text")
1104 (version "1.3.1")
1105 (source (origin
1106 (method url-fetch)
1107 (uri (rubygems-uri "text" version))
1108 (sha256
1109 (base32
1110 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
1111 (build-system ruby-build-system)
1112 (synopsis "Collection of text algorithms for Ruby")
1113 (description
1114 "This package provides a collection of text algorithms: Levenshtein,
1115 Soundex, Metaphone, Double Metaphone, Porter Stemming.")
1116 (home-page "http://github.com/threedaymonk/text")
1117 (license license:expat)))
1118
1119 (define-public ruby-gettext
1120 (package
1121 (name "ruby-gettext")
1122 (version "3.1.7")
1123 (source (origin
1124 (method url-fetch)
1125 (uri (rubygems-uri "gettext" version))
1126 (sha256
1127 (base32
1128 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
1129 (build-system ruby-build-system)
1130 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1131 ;; which needs ruby-gettext. To break the dependency cycle we disable
1132 ;; tests.
1133 (arguments `(#:tests? #f))
1134 (propagated-inputs
1135 `(("ruby-locale" ,ruby-locale)
1136 ("ruby-text" ,ruby-text)))
1137 (native-inputs
1138 `(("bundler" ,bundler)
1139 ("ruby-yard" ,ruby-yard)))
1140 (synopsis "GNU gettext-like program for Ruby")
1141 (description
1142 "Gettext is a GNU gettext-like program for Ruby. The catalog
1143 file (po-file) used is the same as that used by GNU gettext, allowing you to
1144 use GNU gettext tools for maintenance.")
1145 (home-page "http://ruby-gettext.github.com/")
1146 (license (list license:lgpl3+ license:ruby))))
1147
1148 (define-public ruby-packnga
1149 (package
1150 (name "ruby-packnga")
1151 (version "1.0.1")
1152 (source (origin
1153 (method url-fetch)
1154 (uri (rubygems-uri "packnga" version))
1155 (sha256
1156 (base32
1157 "1i71yhvlkvi5fp3m8jl9317cnddkbnrcy0syrmiw4y1lrq0cbncj"))))
1158 (build-system ruby-build-system)
1159 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
1160 ;; To break the dependency cycle we disable tests.
1161 (arguments `(#:tests? #f))
1162 (propagated-inputs
1163 `(("ruby-gettext" ,ruby-gettext)
1164 ("ruby-yard" ,ruby-yard)))
1165 (native-inputs
1166 `(("bundler" ,bundler)))
1167 (synopsis "Utility library to package internationalized libraries")
1168 (description
1169 "Packnga is a library to translate to many languages using YARD.")
1170 (home-page "http://ranguba.org/packnga/")
1171 (license license:lgpl2.0+)))
1172
1173 (define-public ruby-test-unit
1174 (package
1175 (name "ruby-test-unit")
1176 (version "3.1.5")
1177 (source (origin
1178 (method url-fetch)
1179 (uri (rubygems-uri "test-unit" version))
1180 (sha256
1181 (base32
1182 "0jxznjzwmrlp8wqjxsd06qbiddffn68pdhz6nrqpjbiln1z3af4w"))))
1183 (build-system ruby-build-system)
1184 (propagated-inputs
1185 `(("ruby-power-assert" ,ruby-power-assert)))
1186 (native-inputs
1187 `(("bundler" ,bundler)
1188 ("ruby-packnga" ,ruby-packnga)
1189 ("ruby-yard" ,ruby-yard)))
1190 (synopsis "Unit testing framework for Ruby")
1191 (description "@code{Test::Unit} is unit testing framework for Ruby, based
1192 on xUnit principles. These were originally designed by Kent Beck, creator of
1193 extreme programming software development methodology, for Smalltalk's SUnit.
1194 It allows writing tests, checking results and automated testing in Ruby.")
1195 (home-page "http://test-unit.github.io/")
1196 (license (list license:psfl license:ruby))))
1197
1198 (define-public ruby-metaclass
1199 (package
1200 (name "ruby-metaclass")
1201 (version "0.0.4")
1202 (source (origin
1203 (method url-fetch)
1204 (uri (rubygems-uri "metaclass" version))
1205 (sha256
1206 (base32
1207 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
1208 (build-system ruby-build-system)
1209 (arguments
1210 `(#:phases
1211 (modify-phases %standard-phases
1212 (add-after 'unpack 'add-test-unit-to-search-path
1213 (lambda* (#:key inputs #:allow-other-keys)
1214 (substitute* "Rakefile"
1215 (("t\\.libs << \"test\"" line)
1216 (string-append line "; t.libs << \""
1217 (assoc-ref inputs "ruby-test-unit")
1218 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1219 ,(package-version ruby-test-unit)
1220 "/lib\"")))
1221 #t)))))
1222 (native-inputs
1223 `(("bundler" ,bundler)
1224 ("ruby-test-unit" ,ruby-test-unit)))
1225 (synopsis "Ruby library adding metaclass method to all objects")
1226 (description
1227 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
1228 objects.")
1229 (home-page "http://github.com/floehopper/metaclass")
1230 (license license:expat)))
1231
1232 (define-public ruby-blankslate
1233 (package
1234 (name "ruby-blankslate")
1235 (version "3.1.3")
1236 (source (origin
1237 (method url-fetch)
1238 (uri (rubygems-uri "blankslate" version))
1239 (sha256
1240 (base32
1241 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
1242 (build-system ruby-build-system)
1243 (arguments
1244 `(#:phases
1245 (modify-phases %standard-phases
1246 (replace 'check
1247 (lambda _ (zero? (system* "rspec" "spec/")))))))
1248 (native-inputs
1249 `(("bundler" ,bundler)
1250 ("ruby-rspec" ,ruby-rspec)))
1251 (synopsis "Abstract base class with no predefined methods")
1252 (description
1253 "BlankSlate provides an abstract base class with no predefined
1254 methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
1255 as a base class when writing classes that depend upon
1256 @code{method_missing} (e.g. dynamic proxies).")
1257 (home-page "http://github.com/masover/blankslate")
1258 (license license:expat)))
1259
1260 (define-public ruby-instantiator
1261 (package
1262 (name "ruby-instantiator")
1263 (version "0.0.6")
1264 (source (origin
1265 (method url-fetch)
1266 (uri (rubygems-uri "instantiator" version))
1267 (sha256
1268 (base32
1269 "0mfmqhg9xrv9i8i1kmphf15ywddhivyh2z3ccl0xjw8qy54zr21i"))))
1270 (build-system ruby-build-system)
1271 (arguments
1272 `(#:phases
1273 (modify-phases %standard-phases
1274 (add-after 'unpack 'add-test-unit-to-search-path
1275 (lambda* (#:key inputs #:allow-other-keys)
1276 (substitute* "Rakefile"
1277 (("t\\.libs << \"test\"" line)
1278 (string-append line "; t.libs << \""
1279 (assoc-ref inputs "ruby-test-unit")
1280 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1281 ,(package-version ruby-test-unit)
1282 "/lib\"")))
1283 #t)))))
1284 (propagated-inputs
1285 `(("ruby-blankslate" ,ruby-blankslate)))
1286 (native-inputs
1287 `(("bundler" ,bundler)
1288 ("ruby-test-unit" ,ruby-test-unit)))
1289 (synopsis "Instantiate an arbitrary Ruby class")
1290 (description
1291 "Instantiator lets you instantiate an arbitrary Ruby class without
1292 knowing anything about the constructor.")
1293 (home-page "https://github.com/floehopper/instantiator")
1294 (license license:expat)))
1295
1296 (define-public ruby-introspection
1297 (package
1298 (name "ruby-introspection")
1299 (version "0.0.3")
1300 (source (origin
1301 (method url-fetch)
1302 (uri (rubygems-uri "introspection" version))
1303 (sha256
1304 (base32
1305 "0g1j71sqfxbqk32wj7d0bkd3dlayfqzprfq3dbr0rq107xbxjcrr"))))
1306 (build-system ruby-build-system)
1307 (arguments
1308 `(#:phases
1309 (modify-phases %standard-phases
1310 (add-after 'unpack 'add-test-unit-to-search-path
1311 (lambda* (#:key inputs #:allow-other-keys)
1312 (substitute* "Rakefile"
1313 (("t\\.libs << \"test\"" line)
1314 (string-append line "; t.libs << \""
1315 (assoc-ref inputs "ruby-test-unit")
1316 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1317 ,(package-version ruby-test-unit)
1318 "/lib\"")))
1319 #t)))))
1320 (propagated-inputs
1321 `(("ruby-instantiator" ,ruby-instantiator)
1322 ("ruby-metaclass" ,ruby-metaclass)))
1323 (native-inputs
1324 `(("bundler" ,bundler)
1325 ("ruby-blankslate" ,ruby-blankslate)
1326 ("ruby-test-unit" ,ruby-test-unit)))
1327 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
1328 (description
1329 "Introspection provides tools to inspect the hierarchy of method
1330 definitions on a Ruby object.")
1331 (home-page "https://github.com/floehopper/introspection")
1332 (license license:expat)))
1333
1334 (define-public ruby-redcarpet
1335 (package
1336 (name "ruby-redcarpet")
1337 (version "3.3.3")
1338 (source (origin
1339 (method url-fetch)
1340 (uri (rubygems-uri "redcarpet" version))
1341 (sha256
1342 (base32
1343 "14i3wypp97bpk20679d1csy88q4hsgfqbnqw6mryl77m2g0d09pk"))))
1344 (build-system ruby-build-system)
1345 (arguments
1346 `(#:phases
1347 (modify-phases %standard-phases
1348 ;; The gem archive does not include the conformance tests.
1349 (add-after 'unpack 'disable-conformance-tests
1350 (lambda _
1351 (substitute* "Rakefile"
1352 (("task :test => %w\\[test:unit test:conformance\\]")
1353 "task :test => %w[test:unit]"))
1354 #t)))))
1355 (native-inputs
1356 `(("bundler" ,bundler)
1357 ("ruby-test-unit" ,ruby-test-unit)
1358 ("ruby-rake-compiler" ,ruby-rake-compiler)))
1359 (synopsis "Extensible Markdown to (X)HTML converter")
1360 (description
1361 "Redcarpet is an extensible Ruby library for Markdown processing and
1362 conversion to (X)HTML.")
1363 (home-page "http://github.com/vmg/redcarpet")
1364 (license license:expat)))
1365
1366 (define-public ruby-mocha
1367 (package
1368 (name "ruby-mocha")
1369 (version "1.1.0")
1370 (source (origin
1371 (method url-fetch)
1372 (uri (rubygems-uri "mocha" version))
1373 (sha256
1374 (base32
1375 "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
1376 (build-system ruby-build-system)
1377 (arguments
1378 `(#:phases
1379 (modify-phases %standard-phases
1380 (add-after 'unpack 'add-test-unit-to-search-path
1381 (lambda* (#:key inputs #:allow-other-keys)
1382 (substitute* "Rakefile"
1383 (("t\\.libs << 'test'" line)
1384 (string-append line "; t.libs << \""
1385 (assoc-ref inputs "ruby-test-unit")
1386 "/lib/ruby/gems/2.2.0/gems/test-unit-"
1387 ,(package-version ruby-test-unit)
1388 "/lib\"")))
1389 #t))
1390 (add-before 'check 'use-latest-redcarpet
1391 (lambda _
1392 (substitute* "mocha.gemspec"
1393 (("<redcarpet>, \\[\"~> 1\"\\]")
1394 "<redcarpet>, [\">= 3\"]"))
1395 #t))
1396 (add-before 'check 'hardcode-version
1397 (lambda _
1398 ;; Mocha is undefined at build time
1399 (substitute* "Rakefile"
1400 (("#\\{Mocha::VERSION\\}") ,version))
1401 #t))
1402 (add-before 'check 'remove-failing-test
1403 ;; FIXME: This test fails for reasons unrelated to Guix packaging.
1404 (lambda _
1405 (delete-file "test/acceptance/stubbing_nil_test.rb")
1406 #t)))))
1407 (propagated-inputs
1408 `(("ruby-metaclass" ,ruby-metaclass)))
1409 (native-inputs
1410 `(("bundler" ,bundler)
1411 ("ruby-yard" ,ruby-yard)
1412 ("ruby-introspection" ,ruby-introspection)
1413 ("ruby-test-unit" ,ruby-test-unit)
1414 ("ruby-redcarpet" ,ruby-redcarpet)))
1415 (synopsis "Mocking and stubbing library for Ruby")
1416 (description
1417 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
1418 allows mocking and stubbing of methods on real (non-mock) classes.")
1419 (home-page "http://gofreerange.com/mocha/docs")
1420 (license license:expat)))
1421
1422 (define-public ruby-net-ssh
1423 (package
1424 (name "ruby-net-ssh")
1425 (version "3.0.1")
1426 (source (origin
1427 (method url-fetch)
1428 (uri (rubygems-uri "net-ssh" version))
1429 (sha256
1430 (base32
1431 "1dzqkgwi9xm6mbfk1rkk17rzmz8m5xakqi21w1b97ybng6kkw0hf"))))
1432 (build-system ruby-build-system)
1433 (native-inputs
1434 `(("ruby-mocha" ,ruby-mocha)
1435 ("ruby-test-unit" ,ruby-test-unit)))
1436 (synopsis "Ruby implementation of the SSH2 client protocol")
1437 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
1438 client protocol. It allows you to write programs that invoke and interact
1439 with processes on remote servers, via SSH2.")
1440 (home-page "https://github.com/net-ssh/net-ssh")
1441 (license license:expat)))
1442
1443 (define-public ruby-minitest
1444 (package
1445 (name "ruby-minitest")
1446 (version "5.7.0")
1447 (source (origin
1448 (method url-fetch)
1449 (uri (rubygems-uri "minitest" version))
1450 (sha256
1451 (base32
1452 "0rxqfakp629mp3vwda7zpgb57lcns5znkskikbfd0kriwv8i1vq8"))))
1453 (build-system ruby-build-system)
1454 (native-inputs
1455 `(("ruby-hoe" ,ruby-hoe)))
1456 (synopsis "Small test suite library for Ruby")
1457 (description "Minitest provides a complete suite of Ruby testing
1458 facilities supporting TDD, BDD, mocking, and benchmarking.")
1459 (home-page "https://github.com/seattlerb/minitest")
1460 (license license:expat)))
1461
1462 ;; This is the last release of Minitest 4, which is used by some packages.
1463 (define-public ruby-minitest-4
1464 (package (inherit ruby-minitest)
1465 (version "4.7.5")
1466 (source (origin
1467 (method url-fetch)
1468 (uri (rubygems-uri "minitest" version))
1469 (sha256
1470 (base32
1471 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
1472 (arguments
1473 `(#:phases
1474 (modify-phases %standard-phases
1475 (add-after 'unpack 'remove-unsupported-method
1476 (lambda _
1477 (substitute* "Rakefile"
1478 (("self\\.rubyforge_name = .*") ""))
1479 #t)))))))
1480
1481 (define-public ruby-minitest-sprint
1482 (package
1483 (name "ruby-minitest-sprint")
1484 (version "1.1.0")
1485 (source (origin
1486 (method url-fetch)
1487 (uri (rubygems-uri "minitest-sprint" version))
1488 (sha256
1489 (base32
1490 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
1491 (build-system ruby-build-system)
1492 (native-inputs
1493 `(("ruby-hoe" ,ruby-hoe)
1494 ("ruby-minitest" ,ruby-minitest)))
1495 (synopsis "Fast test suite runner for minitest")
1496 (description "Minitest-sprint is a test runner for minitest that makes it
1497 easier to re-run individual failing tests.")
1498 (home-page "https://github.com/seattlerb/minitest-sprint")
1499 (license license:expat)))
1500
1501 (define-public ruby-minitest-bacon
1502 (package
1503 (name "ruby-minitest-bacon")
1504 (version "1.0.2")
1505 (source (origin
1506 (method url-fetch)
1507 (uri (rubygems-uri "minitest-bacon" version))
1508 (sha256
1509 (base32
1510 "0cm7r68422743i3b6fm4rrm0r6cnnjmglq5gcmmgl1f0rk5hnf6r"))))
1511 (build-system ruby-build-system)
1512 (native-inputs
1513 `(("ruby-hoe" ,ruby-hoe)))
1514 (inputs
1515 `(("ruby-minitest" ,ruby-minitest)))
1516 (synopsis "Bacon compatibility library for minitest")
1517 (description "Minitest-bacon extends minitest with bacon-like
1518 functionality, making it easier to migrate test suites from bacon to minitest.")
1519 (home-page "https://github.com/seattlerb/minitest-bacon")
1520 (license license:expat)))
1521
1522 (define-public ruby-daemons
1523 (package
1524 (name "ruby-daemons")
1525 (version "1.2.2")
1526 (source (origin
1527 (method url-fetch)
1528 (uri (rubygems-uri "daemons" version))
1529 (sha256
1530 (base32
1531 "121c7vkimg3baxga69xvdkwxiq8wkmxqvdbyqi5i82vhih5d3cn3"))))
1532 (build-system ruby-build-system)
1533 (arguments
1534 `(#:tests? #f)) ; no test suite
1535 (synopsis "Daemonize Ruby programs")
1536 (description "Daemons provides a way to wrap existing Ruby scripts to be
1537 run as a daemon and to be controlled by simple start/stop/restart commands.")
1538 (home-page "https://github.com/thuehlinger/daemons")
1539 (license license:expat)))
1540
1541 (define-public ruby-git
1542 (package
1543 (name "ruby-git")
1544 (version "1.2.9.1")
1545 (source (origin
1546 (method url-fetch)
1547 (uri (rubygems-uri "git" version))
1548 (sha256
1549 (base32
1550 "1sqfj8lmhl7c5zamcckkpik4izfph2zkv6krw0i8mzj5pdws5acs"))))
1551 (build-system ruby-build-system)
1552 (arguments
1553 `(#:tests? #f ; no tests
1554 #:phases (modify-phases %standard-phases
1555 (add-after 'install 'patch-git-binary
1556 (lambda* (#:key inputs outputs #:allow-other-keys)
1557 ;; Make the default git binary an absolute path to the
1558 ;; store.
1559 (let ((git (string-append (assoc-ref inputs "git")
1560 "/bin/git"))
1561 (config (string-append (getenv "GEM_HOME")
1562 "/gems/git-" ,version
1563 "/lib/git/config.rb")))
1564 (substitute* (list config)
1565 (("'git'")
1566 (string-append "'" git "'")))
1567 #t))))))
1568 (inputs
1569 `(("git" ,git)))
1570 (synopsis "Ruby wrappers for Git")
1571 (description "Ruby/Git is a Ruby library that can be used to create, read
1572 and manipulate Git repositories by wrapping system calls to the git binary.")
1573 (home-page "https://github.com/schacon/ruby-git")
1574 (license license:expat)))
1575
1576 (define-public ruby-slop
1577 (package
1578 (name "ruby-slop")
1579 (version "4.1.0")
1580 (source (origin
1581 (method url-fetch)
1582 (uri (rubygems-uri "slop" version))
1583 (sha256
1584 (base32
1585 "0dj0ps6v1mqd02k84mgwd7hp578n2bzl7c51h3grdhxfl3jkfsj5"))))
1586 (build-system ruby-build-system)
1587 (native-inputs
1588 `(("ruby-minitest" ,ruby-minitest)))
1589 (synopsis "Ruby command line option parser")
1590 (description "Slop provides a Ruby domain specific language for gathering
1591 options and parsing command line flags.")
1592 (home-page "https://github.com/leejarvis/slop")
1593 (license license:expat)))
1594
1595 (define-public ruby-slop-3
1596 (package (inherit ruby-slop)
1597 (version "3.6.0")
1598 (source (origin
1599 (method url-fetch)
1600 (uri (rubygems-uri "slop" version))
1601 (sha256
1602 (base32
1603 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
1604
1605 (define-public ruby-multipart-post
1606 (package
1607 (name "ruby-multipart-post")
1608 (version "2.0.0")
1609 (source (origin
1610 (method url-fetch)
1611 (uri (rubygems-uri "multipart-post" version))
1612 (sha256
1613 (base32
1614 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
1615 (build-system ruby-build-system)
1616 (native-inputs
1617 `(("bundler" ,bundler)))
1618 (synopsis "Multipart POST library for Ruby")
1619 (description "Multipart-Post Adds multipart POST capability to Ruby's
1620 net/http library.")
1621 (home-page "https://github.com/nicksieger/multipart-post")
1622 (license license:expat)))
1623
1624 (define-public ruby-arel
1625 (package
1626 (name "ruby-arel")
1627 (version "6.0.3")
1628 (source (origin
1629 (method url-fetch)
1630 (uri (rubygems-uri "arel" version))
1631 (sha256
1632 (base32
1633 "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk"))))
1634 (build-system ruby-build-system)
1635 (arguments '(#:tests? #f)) ; no tests
1636 (home-page "https://github.com/rails/arel")
1637 (synopsis "SQL AST manager for Ruby")
1638 (description "Arel is a SQL AST manager for Ruby. It simplifies the
1639 generation of complex SQL queries and is compatible with various RDBMSes.")
1640 (license license:expat)))
1641
1642 (define-public ruby-minitar
1643 (package
1644 (name "ruby-minitar")
1645 (version "0.5.4")
1646 (source
1647 (origin
1648 (method url-fetch)
1649 (uri (rubygems-uri "minitar" version))
1650 (sha256
1651 (base32
1652 "1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka"))))
1653 (build-system ruby-build-system)
1654 (arguments
1655 '(#:tests? #f)) ; missing a gemspec
1656 (synopsis "Ruby library and utility for handling tar archives")
1657 (description
1658 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
1659 that provides the ability to deal with POSIX tar archive files.")
1660 (home-page "http://www.github.com/atoulme/minitar")
1661 (license (list license:gpl2+ license:ruby))))
1662
1663 (define-public ruby-mini-portile
1664 (package
1665 (name "ruby-mini-portile")
1666 (version "0.6.2")
1667 (source
1668 (origin
1669 (method url-fetch)
1670 (uri (rubygems-uri "mini_portile" version))
1671 (sha256
1672 (base32
1673 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
1674 (build-system ruby-build-system)
1675 (arguments
1676 '(#:tests? #f)) ; tests require network access
1677 (synopsis "Ports system for Ruby developers")
1678 (description "Mini-portile is a port/recipe system for Ruby developers.
1679 It provides a standard way to compile against specific versions of libraries
1680 to reproduce user environments.")
1681 (home-page "http://github.com/flavorjones/mini_portile")
1682 (license license:expat)))
1683
1684 (define-public ruby-nokogiri
1685 (package
1686 (name "ruby-nokogiri")
1687 (version "1.6.6.2")
1688 (source (origin
1689 (method url-fetch)
1690 (uri (rubygems-uri "nokogiri" version))
1691 (sha256
1692 (base32
1693 "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30"))))
1694 (build-system ruby-build-system)
1695 (arguments
1696 ;; Tests fail because Nokogiri can only test with an installed extension,
1697 ;; and also because many test framework dependencies are missing.
1698 '(#:tests? #f
1699 #:gem-flags (list "--" "--use-system-libraries"
1700 (string-append "--with-xml2-include="
1701 (assoc-ref %build-inputs "libxml2")
1702 "/include/libxml2" ))))
1703 (native-inputs
1704 `(("ruby-hoe" ,ruby-hoe)
1705 ("ruby-rake-compiler", ruby-rake-compiler)))
1706 (inputs
1707 `(("zlib" ,zlib)
1708 ("libxml2" ,libxml2)
1709 ("libxslt" ,libxslt)))
1710 (propagated-inputs
1711 `(("ruby-mini-portile" ,ruby-mini-portile)))
1712 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
1713 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
1714 both CSS3 selector and XPath 1.0 support.")
1715 (home-page "http://www.nokogiri.org/")
1716 (license license:expat)))
1717
1718 (define-public ruby-method-source
1719 (package
1720 (name "ruby-method-source")
1721 (version "0.8.2")
1722 (source
1723 (origin
1724 (method url-fetch)
1725 (uri (rubygems-uri "method_source" version))
1726 (sha256
1727 (base32
1728 "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
1729 (build-system ruby-build-system)
1730 (native-inputs
1731 `(("ruby-bacon" ,ruby-bacon)
1732 ("git" ,git)))
1733 (synopsis "Retrieve the source code for Ruby methods")
1734 (description "Method_source retrieves the source code for Ruby methods.
1735 Additionally, it can extract source code from Proc and Lambda objects or just
1736 extract comments.")
1737 (home-page "https://github.com/banister/method_source")
1738 (license license:expat)))
1739
1740 (define-public ruby-coderay
1741 (package
1742 (name "ruby-coderay")
1743 (version "1.1.0")
1744 (source
1745 (origin
1746 (method url-fetch)
1747 (uri (rubygems-uri "coderay" version))
1748 (sha256
1749 (base32
1750 "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
1751 (build-system ruby-build-system)
1752 (arguments
1753 '(#:tests? #f)) ; missing test files
1754 (synopsis "Ruby syntax highlighting library")
1755 (description "Coderay is a Ruby library that provides syntax highlighting
1756 for select languages.")
1757 (home-page "http://coderay.rubychan.de")
1758 (license license:expat)))
1759
1760 (define-public ruby-pry
1761 (package
1762 (name "ruby-pry")
1763 (version "0.10.1")
1764 (source
1765 (origin
1766 (method url-fetch)
1767 (uri (rubygems-uri "pry" version))
1768 (sha256
1769 (base32
1770 "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
1771 (build-system ruby-build-system)
1772 (arguments
1773 '(#:tests? #f)) ; no tests
1774 (propagated-inputs
1775 `(("ruby-coderay" ,ruby-coderay)
1776 ("ruby-method-source" ,ruby-method-source)
1777 ("ruby-slop" ,ruby-slop-3)))
1778 (synopsis "Ruby REPL")
1779 (description "Pry is an IRB alternative and runtime developer console for
1780 Ruby. It features syntax highlighting, a plugin architecture, runtime
1781 invocation, and source and documentation browsing.")
1782 (home-page "http://pryrepl.org")
1783 (license license:expat)))
1784
1785 (define-public ruby-guard
1786 (package
1787 (name "ruby-guard")
1788 (version "2.13.0")
1789 (source (origin
1790 (method url-fetch)
1791 ;; The gem does not include a Rakefile, nor does it contain a
1792 ;; gemspec file, nor does it come with the tests. This is why
1793 ;; we fetch the tarball from Github.
1794 (uri (string-append "https://github.com/guard/guard/archive/v"
1795 version ".tar.gz"))
1796 (file-name (string-append name "-" version ".tar.gz"))
1797 (sha256
1798 (base32
1799 "1hwj0yi17k6f5axrm0k2bb7fq71dlp0zfywmd7pij9iimbppcca0"))))
1800 (build-system ruby-build-system)
1801 (arguments
1802 `(#:tests? #f ; tests require cucumber
1803 #:phases
1804 (modify-phases %standard-phases
1805 (add-after 'unpack 'remove-git-ls-files
1806 (lambda* (#:key outputs #:allow-other-keys)
1807 (substitute* "guard.gemspec"
1808 (("git ls-files -z") "find . -type f -print0"))
1809 #t))
1810 (replace 'build
1811 (lambda _
1812 (zero? (system* "gem" "build" "guard.gemspec")))))))
1813 (propagated-inputs
1814 `(("ruby-formatador" ,ruby-formatador)
1815 ("ruby-listen" ,ruby-listen)
1816 ("ruby-lumberjack" ,ruby-lumberjack)
1817 ("ruby-nenv" ,ruby-nenv)
1818 ("ruby-notiffany" ,ruby-notiffany)
1819 ("ruby-pry" ,ruby-pry)
1820 ("ruby-shellany" ,ruby-shellany)
1821 ("ruby-thor" ,ruby-thor)))
1822 (native-inputs
1823 `(("bundler" ,bundler)
1824 ("ruby-rspec" ,ruby-rspec)))
1825 (synopsis "Tool to handle events on file system modifications")
1826 (description
1827 "Guard is a command line tool to easily handle events on file system
1828 modifications. Guard automates various tasks by running custom rules whenever
1829 file or directories are modified.")
1830 (home-page "http://guardgem.org/")
1831 (license license:expat)))
1832
1833 (define-public ruby-thread-safe
1834 (package
1835 (name "ruby-thread-safe")
1836 (version "0.3.5")
1837 (source
1838 (origin
1839 (method url-fetch)
1840 (uri (rubygems-uri "thread_safe" version))
1841 (sha256
1842 (base32
1843 "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
1844 (build-system ruby-build-system)
1845 (arguments
1846 '(#:tests? #f)) ; needs simplecov, among others
1847 (synopsis "Thread-safe utilities for Ruby")
1848 (description "The thread_safe library provides thread-safe collections and
1849 utilities for Ruby.")
1850 (home-page "https://github.com/ruby-concurrency/thread_safe")
1851 (license license:asl2.0)))
1852
1853 (define-public ruby-tzinfo
1854 (package
1855 (name "ruby-tzinfo")
1856 (version "1.2.2")
1857 (source
1858 (origin
1859 (method url-fetch)
1860 (uri (rubygems-uri "tzinfo" version))
1861 (sha256
1862 (base32
1863 "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
1864 (build-system ruby-build-system)
1865 (propagated-inputs
1866 `(("ruby-thread-safe" ,ruby-thread-safe)))
1867 (synopsis "Time zone library for Ruby")
1868 (description "TZInfo is a Ruby library that provides daylight savings
1869 aware transformations between times in different time zones.")
1870 (home-page "http://tzinfo.github.io")
1871 (license license:expat)))
1872
1873 (define-public ruby-rb-inotify
1874 (package
1875 (name "ruby-rb-inotify")
1876 (version "0.9.5")
1877 (source
1878 (origin
1879 (method url-fetch)
1880 (uri (rubygems-uri "rb-inotify" version))
1881 (sha256
1882 (base32
1883 "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"))))
1884 (build-system ruby-build-system)
1885 (arguments
1886 '(#:tests? #f ; there are no tests
1887 #:phases
1888 (modify-phases %standard-phases
1889 ;; Building the gemspec with rake is not working here since it is
1890 ;; generated with Jeweler. It is also unnecessary because the
1891 ;; existing gemspec does not use any development tools to generate a
1892 ;; list of files.
1893 (replace 'build
1894 (lambda _
1895 (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
1896 (propagated-inputs
1897 `(("ruby-ffi" ,ruby-ffi)))
1898 (native-inputs
1899 `(("ruby-yard" ,ruby-yard)))
1900 (synopsis "Ruby wrapper for Linux's inotify")
1901 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
1902 kernel subsystem for monitoring changes to files and directories.")
1903 (home-page "https://github.com/nex3/rb-inotify")
1904 (license license:expat)))
1905
1906 (define-public ruby-pry-editline
1907 (package
1908 (name "ruby-pry-editline")
1909 (version "1.1.2")
1910 (source (origin
1911 (method url-fetch)
1912 (uri (rubygems-uri "pry-editline" version))
1913 (sha256
1914 (base32
1915 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
1916 (build-system ruby-build-system)
1917 (arguments `(#:tests? #f)) ; no tests included
1918 (native-inputs
1919 `(("bundler" ,bundler)))
1920 (synopsis "Open the current REPL line in an editor")
1921 (description
1922 "This gem provides a plugin for the Ruby REPL to enable opening the
1923 current line in an external editor.")
1924 (home-page "https://github.com/tpope/pry-editline")
1925 (license license:expat)))
1926
1927 (define-public ruby-sdoc
1928 (package
1929 (name "ruby-sdoc")
1930 (version "0.4.1")
1931 (source (origin
1932 (method url-fetch)
1933 (uri (rubygems-uri "sdoc" version))
1934 (sha256
1935 (base32
1936 "16xyfair1j4irfkd6sxvmdcak957z71lwkvhglrznfpkalfnqyqp"))))
1937 (build-system ruby-build-system)
1938 (arguments
1939 `(#:phases
1940 (modify-phases %standard-phases
1941 (add-after 'build 'relax-minitest-requirement
1942 (lambda _
1943 (substitute* "sdoc.gemspec"
1944 (("<minitest>, \\[\"~> 4\\.0\"\\]")
1945 "<minitest>, [\">= 4.0\"]"))
1946 #t)))))
1947 (propagated-inputs
1948 `(("ruby-json" ,ruby-json)))
1949 (native-inputs
1950 `(("bundler" ,bundler)
1951 ("ruby-minitest" ,ruby-minitest)))
1952 (synopsis "Generate searchable RDoc documentation")
1953 (description
1954 "SDoc is an RDoc documentation generator to build searchable HTML
1955 documentation for Ruby code.")
1956 (home-page "http://github.com/voloko/sdoc")
1957 (license license:expat)))
1958
1959 (define-public ruby-tins
1960 (package
1961 (name "ruby-tins")
1962 (version "1.7.0")
1963 (source (origin
1964 (method url-fetch)
1965 (uri (rubygems-uri "tins" version))
1966 (sha256
1967 (base32
1968 "1060h8dgnjl9az0sv1b74yrni8d4mh3x858wq6yfbfdf5dxrfl0a"))))
1969 (build-system ruby-build-system)
1970 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
1971 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
1972 ;; the gemspec.
1973 (arguments
1974 `(#:tests? #f ; there are no tests
1975 #:phases
1976 (modify-phases %standard-phases
1977 (replace 'build
1978 (lambda _
1979 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
1980 ;; causes an error.
1981 (substitute* "tins.gemspec"
1982 (("\"lib/spruz\", ") ""))
1983 (zero? (system* "gem" "build" "tins.gemspec")))))))
1984 (synopsis "Assorted tools for Ruby")
1985 (description "Tins is a Ruby library providing assorted tools.")
1986 (home-page "https://github.com/flori/tins")
1987 (license license:expat)))
1988
1989 (define-public ruby-gem-hadar
1990 (package
1991 (name "ruby-gem-hadar")
1992 (version "1.3.1")
1993 (source (origin
1994 (method url-fetch)
1995 (uri (rubygems-uri "gem_hadar" version))
1996 (sha256
1997 (base32
1998 "1j8qri4m9wf8nbfv0kakrgsv2x8vg10914xgm6f69nw8zi3i39ws"))))
1999 (build-system ruby-build-system)
2000 ;; This gem needs itself at development time. We disable rebuilding of the
2001 ;; gemspec to avoid this loop.
2002 (arguments
2003 `(#:tests? #f ; there are no tests
2004 #:phases
2005 (modify-phases %standard-phases
2006 (replace 'build
2007 (lambda _
2008 (zero? (system* "gem" "build" "gem_hadar.gemspec")))))))
2009 (propagated-inputs
2010 `(("git" ,git)
2011 ("ruby-tins" ,ruby-tins)
2012 ("ruby-sdoc" ,ruby-sdoc)))
2013 (native-inputs
2014 `(("bundler" ,bundler)))
2015 (synopsis "Library for the development of Ruby gems")
2016 (description
2017 "This library contains some useful functionality to support the
2018 development of Ruby gems.")
2019 (home-page "https://github.com/flori/gem_hadar")
2020 (license license:expat)))
2021
2022 (define-public ruby-minitest-tu-shim
2023 (package
2024 (name "ruby-minitest-tu-shim")
2025 (version "1.3.3")
2026 (source (origin
2027 (method url-fetch)
2028 (uri (rubygems-uri "minitest_tu_shim" version))
2029 (sha256
2030 (base32
2031 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
2032 (build-system ruby-build-system)
2033 (arguments
2034 `(#:phases
2035 (modify-phases %standard-phases
2036 (add-after 'unpack 'fix-test-include-path
2037 (lambda* (#:key inputs #:allow-other-keys)
2038 (substitute* "Rakefile"
2039 (("Hoe\\.add_include_dirs .*")
2040 (string-append "Hoe.add_include_dirs \""
2041 (assoc-ref inputs "ruby-minitest-4")
2042 "/lib/ruby/gems/2.2.0/gems/minitest-"
2043 ,(package-version ruby-minitest-4)
2044 "/lib" "\"")))))
2045 (add-before 'check 'fix-test-assumptions
2046 (lambda _
2047 ;; The test output includes the file name, so a couple of tests
2048 ;; fail. Changing the regular expressions slightly fixes this
2049 ;; problem.
2050 (substitute* "test/test_mini_test.rb"
2051 (("output.sub!\\(.*, 'FILE:LINE'\\)")
2052 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
2053 (("gsub\\(/.*, 'FILE:LINE'\\)")
2054 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
2055 #t)))))
2056 (propagated-inputs
2057 `(("ruby-minitest-4" ,ruby-minitest-4)))
2058 (native-inputs
2059 `(("ruby-hoe" ,ruby-hoe)))
2060 (synopsis "Adapter library between minitest and test/unit")
2061 (description
2062 "This library bridges the gap between the small and fast minitest and
2063 Ruby's large and slower test/unit.")
2064 (home-page "https://rubygems.org/gems/minitest_tu_shim")
2065 (license license:expat)))
2066
2067 (define-public ruby-term-ansicolor
2068 (package
2069 (name "ruby-term-ansicolor")
2070 (version "1.3.2")
2071 (source (origin
2072 (method url-fetch)
2073 (uri (rubygems-uri "term-ansicolor" version))
2074 (sha256
2075 (base32
2076 "0ydbbyjmk5p7fsi55ffnkq79jnfqx65c3nj8d9rpgl6sw85ahyys"))))
2077 (build-system ruby-build-system)
2078 ;; Rebuilding the gemspec seems to require git, even though this is not a
2079 ;; git repository, so we just build the gem from the existing gemspec.
2080 (arguments
2081 `(#:phases
2082 (modify-phases %standard-phases
2083 (replace 'build
2084 (lambda _
2085 (zero? (system* "gem" "build" "term-ansicolor.gemspec")))))))
2086 (propagated-inputs
2087 `(("ruby-tins" ,ruby-tins)))
2088 (native-inputs
2089 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2090 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
2091 (synopsis "Ruby library to control the attributes of terminal output")
2092 (description
2093 "This Ruby library uses ANSI escape sequences to control the attributes
2094 of terminal output.")
2095 (home-page "http://flori.github.io/term-ansicolor/")
2096 ;; There is no mention of the "or later" clause.
2097 (license license:gpl2)))
2098
2099 (define-public ruby-pstree
2100 (package
2101 (name "ruby-pstree")
2102 (version "0.1.0")
2103 (source (origin
2104 (method url-fetch)
2105 (uri (rubygems-uri "pstree" version))
2106 (sha256
2107 (base32
2108 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
2109 (build-system ruby-build-system)
2110 (native-inputs
2111 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2112 ("bundler" ,bundler)))
2113 (synopsis "Create a process tree data structure")
2114 (description
2115 "This library uses the output of the @code{ps} command to create a
2116 process tree data structure for the current host.")
2117 (home-page "http://flori.github.com/pstree")
2118 ;; There is no mention of the "or later" clause.
2119 (license license:gpl2)))
2120
2121 (define-public ruby-utils
2122 (package
2123 (name "ruby-utils")
2124 (version "0.2.4")
2125 (source (origin
2126 (method url-fetch)
2127 (uri (rubygems-uri "utils" version))
2128 (sha256
2129 (base32
2130 "0vycgscxf3s1xn4yyfsq54zlh082581ga8azybmqgc4pij6iz2cd"))))
2131 (build-system ruby-build-system)
2132 (propagated-inputs
2133 `(("ruby-tins" ,ruby-tins)
2134 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
2135 ("ruby-pstree" ,ruby-pstree)
2136 ("ruby-pry-editline" ,ruby-pry-editline)))
2137 (native-inputs
2138 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2139 ("bundler" ,bundler)))
2140 (synopsis "Command line tools for working with Ruby")
2141 (description
2142 "This package provides assorted command line tools that may be useful
2143 when working with Ruby code.")
2144 (home-page "https://github.com/flori/utils")
2145 ;; There is no mention of the "or later" clause.
2146 (license license:gpl2)))
2147
2148 (define-public ruby-json
2149 (package
2150 (name "ruby-json")
2151 (version "1.8.3")
2152 (source
2153 (origin
2154 (method url-fetch)
2155 (uri (rubygems-uri "json" version))
2156 (sha256
2157 (base32
2158 "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
2159 (build-system ruby-build-system)
2160 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
2161 (synopsis "JSON library for Ruby")
2162 (description "This Ruby library provides a JSON implementation written as
2163 a native C extension.")
2164 (home-page "http://json-jruby.rubyforge.org/")
2165 (license (list license:ruby license:gpl2)))) ; GPL2 only
2166
2167 (define-public ruby-json-pure
2168 (package
2169 (name "ruby-json-pure")
2170 (version "1.8.3")
2171 (source (origin
2172 (method url-fetch)
2173 (uri (rubygems-uri "json_pure" version))
2174 (sha256
2175 (base32
2176 "025aykr360x6dr1jmg8pmsrx7gr30pws4p1q686vnb48zyw1sc94"))))
2177 (build-system ruby-build-system)
2178 (arguments
2179 `(#:modules ((srfi srfi-1)
2180 (ice-9 regex)
2181 (rnrs io ports)
2182 (guix build ruby-build-system)
2183 (guix build utils))
2184 #:phases
2185 (modify-phases %standard-phases
2186 (add-after 'unpack 'replace-git-ls-files
2187 (lambda _
2188 ;; The existing gemspec file already contains a nice list of
2189 ;; files that belong to the gem. We extract the list from the
2190 ;; gemspec file and then replace the file list in the Rakefile to
2191 ;; get rid of the call to "git ls-files".
2192 (let* ((contents (call-with-input-file "json.gemspec" get-string-all))
2193 ;; Guile is unhappy about the #\nul characters in comments.
2194 (filtered (string-filter (lambda (char)
2195 (not (equal? #\nul char)))
2196 contents))
2197 (files (match:substring
2198 (string-match " s\\.files = ([^]]+\\])" filtered) 1)))
2199 (substitute* "Rakefile"
2200 (("FileList\\[`git ls-files`\\.split\\(/\\\\n/\\)\\]")
2201 (string-append "FileList" files))))
2202 #t)))))
2203 (native-inputs
2204 `(("ruby-permutation" ,ruby-permutation)
2205 ("ruby-utils" ,ruby-utils)
2206 ("ragel" ,ragel)
2207 ("bundler" ,bundler)))
2208 (synopsis "JSON implementation in pure Ruby")
2209 (description
2210 "This package provides a JSON implementation written in pure Ruby.")
2211 (home-page "http://flori.github.com/json")
2212 (license license:ruby)))
2213
2214 ;; Even though this package only provides bindings for a Mac OSX API it is
2215 ;; required by "ruby-listen" at runtime.
2216 (define-public ruby-rb-fsevent
2217 (package
2218 (name "ruby-rb-fsevent")
2219 (version "0.9.6")
2220 (source (origin
2221 (method url-fetch)
2222 (uri (rubygems-uri "rb-fsevent" version))
2223 (sha256
2224 (base32
2225 "1hq57by28iv0ijz8pk9ynih0xdg7vnl1010xjcijfklrcv89a1j2"))))
2226 (build-system ruby-build-system)
2227 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
2228 ;; "listen", which needs "rb-fsevent" at runtime.
2229 (arguments `(#:tests? #f))
2230 (synopsis "FSEvents API with signals catching")
2231 (description
2232 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
2233 (home-page "https://rubygems.org/gems/rb-fsevent")
2234 (license license:expat)))
2235
2236 (define-public ruby-listen
2237 (package
2238 (name "ruby-listen")
2239 (version "3.0.3")
2240 (source
2241 (origin
2242 (method url-fetch)
2243 (uri (rubygems-uri "listen" version))
2244 (sha256
2245 (base32
2246 "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
2247 (build-system ruby-build-system)
2248 (arguments '(#:tests? #f)) ; no tests
2249 (propagated-inputs
2250 `(("ruby-rb-inotify" ,ruby-rb-inotify)
2251 ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
2252 (synopsis "Listen to file modifications")
2253 (description "The Listen gem listens to file modifications and notifies
2254 you about the changes.")
2255 (home-page "https://github.com/guard/listen")
2256 (license license:expat)))
2257
2258 (define-public ruby-activesupport
2259 (package
2260 (name "ruby-activesupport")
2261 (version "4.2.4")
2262 (source
2263 (origin
2264 (method url-fetch)
2265 (uri (rubygems-uri "activesupport" version))
2266 (sha256
2267 (base32
2268 "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
2269 (build-system ruby-build-system)
2270 (arguments
2271 '(#:tests? #f)) ; no tests
2272 (propagated-inputs
2273 `(("ruby-i18n" ,ruby-i18n)
2274 ("ruby-json" ,ruby-json)
2275 ("ruby-minitest" ,ruby-minitest)
2276 ("ruby-thread-safe" ,ruby-thread-safe)
2277 ("ruby-tzinfo" ,ruby-tzinfo)))
2278 (synopsis "Ruby on Rails utility library")
2279 (description "ActiveSupport is a toolkit of support libraries and Ruby
2280 core extensions extracted from the Rails framework. It includes support for
2281 multibyte strings, internationalization, time zones, and testing.")
2282 (home-page "http://www.rubyonrails.org")
2283 (license license:expat)))
2284
2285 (define-public ruby-ox
2286 (package
2287 (name "ruby-ox")
2288 (version "2.2.1")
2289 (source
2290 (origin
2291 (method url-fetch)
2292 (uri (rubygems-uri "ox" version))
2293 (sha256
2294 (base32
2295 "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
2296 (build-system ruby-build-system)
2297 (arguments
2298 '(#:tests? #f)) ; no tests
2299 (synopsis "Optimized XML library for Ruby")
2300 (description
2301 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
2302 written as a native C extension. It was designed to be an alternative to
2303 Nokogiri and other Ruby XML parsers for generic XML parsing and as an
2304 alternative to Marshal for Object serialization. ")
2305 (home-page "http://www.ohler.com/ox")
2306 (license license:expat)))
2307
2308 (define-public ruby-pg
2309 (package
2310 (name "ruby-pg")
2311 (version "0.18.2")
2312 (source
2313 (origin
2314 (method url-fetch)
2315 (uri (rubygems-uri "pg" version))
2316 (sha256
2317 (base32
2318 "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
2319 (build-system ruby-build-system)
2320 (arguments
2321 '(#:test-target "spec"))
2322 (native-inputs
2323 `(("ruby-rake-compiler" ,ruby-rake-compiler)
2324 ("ruby-hoe" ,ruby-hoe)
2325 ("ruby-rspec" ,ruby-rspec)))
2326 (inputs
2327 `(("postgresql" ,postgresql)))
2328 (synopsis "Ruby interface to PostgreSQL")
2329 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
2330 with PostgreSQL 8.4 and later.")
2331 (home-page "https://bitbucket.org/ged/ruby-pg")
2332 (license license:ruby)))
2333
2334 (define-public ruby-byebug
2335 (package
2336 (name "ruby-byebug")
2337 (version "6.0.2")
2338 (source
2339 (origin
2340 (method url-fetch)
2341 (uri (rubygems-uri "byebug" version))
2342 (sha256
2343 (base32
2344 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
2345 (build-system ruby-build-system)
2346 (arguments
2347 '(#:tests? #f)) ; no tests
2348 (synopsis "Debugger for Ruby 2")
2349 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
2350 TracePoint C API for execution control and the Debug Inspector C API for call
2351 stack navigation. The core component provides support that front-ends can
2352 build on. It provides breakpoint handling and bindings for stack frames among
2353 other things and it comes with a command line interface.")
2354 (home-page "http://github.com/deivid-rodriguez/byebug")
2355 (license license:bsd-2)))
2356
2357 (define-public ruby-netrc
2358 (package
2359 (name "ruby-netrc")
2360 (version "0.11.0")
2361 (source (origin
2362 (method url-fetch)
2363 (uri (rubygems-uri "netrc" version))
2364 (sha256
2365 (base32
2366 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
2367 (build-system ruby-build-system)
2368 (arguments
2369 `(#:phases
2370 (modify-phases %standard-phases
2371 (replace 'check
2372 ;; There is no Rakefile and minitest can only run one file at once,
2373 ;; so we have to iterate over all test files.
2374 (lambda _
2375 (and (map (lambda (file)
2376 (zero? (system* "ruby" "-Itest" file)))
2377 (find-files "./test" "test_.*\\.rb"))))))))
2378 (native-inputs
2379 `(("ruby-minitest" ,ruby-minitest)))
2380 (synopsis "Library to read and update netrc files")
2381 (description
2382 "This library can read and update netrc files, preserving formatting
2383 including comments and whitespace.")
2384 (home-page "https://github.com/geemus/netrc")
2385 (license license:expat)))
2386
2387 (define-public ruby-unf-ext
2388 (package
2389 (name "ruby-unf-ext")
2390 (version "0.0.7.1")
2391 (source (origin
2392 (method url-fetch)
2393 (uri (rubygems-uri "unf_ext" version))
2394 (sha256
2395 (base32
2396 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
2397 (build-system ruby-build-system)
2398 (native-inputs
2399 `(("bundler" ,bundler)
2400 ("ruby-rake-compiler" ,ruby-rake-compiler)
2401 ("ruby-test-unit" ,ruby-test-unit)))
2402 (synopsis "Unicode normalization form support library")
2403 (description
2404 "This package provides unicode normalization form support for Ruby.")
2405 (home-page "https://github.com/knu/ruby-unf_ext")
2406 (license license:expat)))
2407
2408 (define-public ruby-tdiff
2409 (package
2410 (name "ruby-tdiff")
2411 (version "0.3.3")
2412 (source (origin
2413 (method url-fetch)
2414 (uri (rubygems-uri "tdiff" version))
2415 (sha256
2416 (base32
2417 "0k41jbvn8qq4mgrixnhlk742b971d136i8wpbcv2cczvi22xpc86"))))
2418 (build-system ruby-build-system)
2419 (native-inputs
2420 `(("ruby-rspec-2" ,ruby-rspec-2)
2421 ("ruby-yard" ,ruby-yard)
2422 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
2423 (synopsis "Calculate the differences between two tree-like structures")
2424 (description
2425 "This library provides functions to calculate the differences between two
2426 tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
2427 (home-page "https://github.com/postmodern/tdiff")
2428 (license license:expat)))
2429
2430 (define-public ruby-rack
2431 (package
2432 (name "ruby-rack")
2433 (version "1.6.4")
2434 (source
2435 (origin
2436 (method url-fetch)
2437 (uri (rubygems-uri "rack" version))
2438 (sha256
2439 (base32
2440 "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
2441 (build-system ruby-build-system)
2442 (arguments
2443 '(#:phases
2444 (modify-phases %standard-phases
2445 (add-before 'check 'fix-tests
2446 (lambda _
2447 ;; A few of the tests use the length of a file on disk for
2448 ;; Content-Length and Content-Range headers. However, this file
2449 ;; has a shebang in it which an earlier phase patches, growing
2450 ;; the file size from 193 to 239 bytes when the store prefix is
2451 ;; "/gnu/store".
2452 (let ((size-diff (- (string-length (which "ruby"))
2453 (string-length "/usr/bin/env ruby"))))
2454 (substitute* '("test/spec_file.rb")
2455 (("193")
2456 (number->string (+ 193 size-diff)))
2457 (("bytes(.)22-33" all delimiter)
2458 (string-append "bytes"
2459 delimiter
2460 (number->string (+ 22 size-diff))
2461 "-"
2462 (number->string (+ 33 size-diff))))))
2463 #t)))))
2464 (native-inputs
2465 `(("ruby-bacon" ,ruby-bacon)))
2466 (synopsis "Unified web application interface for Ruby")
2467 (description "Rack provides a minimal, modular and adaptable interface for
2468 developing web applications in Ruby. By wrapping HTTP requests and responses,
2469 it unifies the API for web servers, web frameworks, and software in between
2470 into a single method call.")
2471 (home-page "http://rack.github.io/")
2472 (license license:expat)))
2473
2474 (define-public ruby-docile
2475 (package
2476 (name "ruby-docile")
2477 (version "1.1.5")
2478 (source
2479 (origin
2480 (method url-fetch)
2481 (uri (rubygems-uri "docile" version))
2482 (sha256
2483 (base32
2484 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
2485 (build-system ruby-build-system)
2486 (arguments
2487 '(#:tests? #f)) ; needs github-markup, among others
2488 (synopsis "Ruby EDSL helper library")
2489 (description "Docile is a Ruby library that provides an interface for
2490 creating embedded domain specific languages (EDSLs) that manipulate existing
2491 Ruby classes.")
2492 (home-page "https://ms-ati.github.io/docile/")
2493 (license license:expat)))
2494
2495 (define-public ruby-gherkin3
2496 (package
2497 (name "ruby-gherkin3")
2498 (version "3.1.1")
2499 (source
2500 (origin
2501 (method url-fetch)
2502 (uri (rubygems-uri "gherkin3" version))
2503 (sha256
2504 (base32
2505 "0xsyxhqa1gwcxzvsdy4didaiq5vam8ma3fbwbw2w60via4k6r1z9"))))
2506 (build-system ruby-build-system)
2507 (native-inputs
2508 `(("bundler" ,bundler)))
2509 (arguments
2510 '(#:tests? #f)) ; needs simplecov, among others
2511 (synopsis "Gherkin parser for Ruby")
2512 (description "Gherkin 3 is a parser and compiler for the Gherkin language.
2513 It is intended to replace Gherkin 2 and be used by all Cucumber
2514 implementations to parse '.feature' files.")
2515 (home-page "https://github.com/cucumber/gherkin3")
2516 (license license:expat)))
2517
2518 (define-public ruby-cucumber-core
2519 (package
2520 (name "ruby-cucumber-core")
2521 (version "1.3.0")
2522 (source
2523 (origin
2524 (method url-fetch)
2525 (uri (rubygems-uri "cucumber-core" version))
2526 (sha256
2527 (base32
2528 "12mrzf0s96izpq0k10lahlkgwc4fjs0zfs344rh8r8h3w3jyppr8"))))
2529 (build-system ruby-build-system)
2530 (propagated-inputs
2531 `(("ruby-gherkin3" ,ruby-gherkin3)))
2532 (native-inputs
2533 `(("bundler" ,bundler)))
2534 (arguments
2535 '(#:tests? #f)) ; needs simplecov, among others
2536 (synopsis "Core library for the Cucumber BDD app")
2537 (description "Cucumber is a tool for running automated tests
2538 written in plain language. Because they're written in plain language,
2539 they can be read by anyone on your team. Because they can be read by
2540 anyone, you can use them to help improve communication, collaboration
2541 and trust on your team.")
2542 (home-page "https://cucumber.io/")
2543 (license license:expat)))
2544
2545 (define-public ruby-bio-logger
2546 (package
2547 (name "ruby-bio-logger")
2548 (version "1.0.1")
2549 (source
2550 (origin
2551 (method url-fetch)
2552 (uri (rubygems-uri "bio-logger" version))
2553 (sha256
2554 (base32
2555 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
2556 (build-system ruby-build-system)
2557 (arguments
2558 `(#:tests? #f)) ; rake errors, missing shoulda
2559 (propagated-inputs
2560 `(("ruby-log4r" ,ruby-log4r)))
2561 (synopsis "Log4r wrapper for Ruby")
2562 (description "Bio-logger is a wrapper around Log4r adding extra logging
2563 features such as filtering and fine grained logging.")
2564 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
2565 (license license:expat)))
2566
2567 (define-public ruby-yard
2568 (package
2569 (name "ruby-yard")
2570 (version "0.8.7.6")
2571 (source
2572 (origin
2573 (method url-fetch)
2574 (uri (rubygems-uri "yard" version))
2575 (sha256
2576 (base32
2577 "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x"))))
2578 (build-system ruby-build-system)
2579 (arguments
2580 `(#:test-target "specs"
2581 #:phases
2582 (modify-phases %standard-phases
2583 (add-before 'check 'set-HOME
2584 ;; $HOME needs to be set to somewhere writeable for tests to run
2585 (lambda _ (setenv "HOME" "/tmp") #t)))))
2586 (native-inputs
2587 `(("ruby-rspec" ,ruby-rspec-2)
2588 ("ruby-rack" ,ruby-rack)))
2589 (synopsis "Documentation generation tool for Ruby")
2590 (description
2591 "YARD is a documentation generation tool for the Ruby programming
2592 language. It enables the user to generate consistent, usable documentation
2593 that can be exported to a number of formats very easily, and also supports
2594 extending for custom Ruby constructs such as custom class level definitions.")
2595 (home-page "http://yardoc.org")
2596 (license license:expat)))
2597
2598 (define-public ruby-eventmachine
2599 (package
2600 (name "ruby-eventmachine")
2601 (version "1.0.8")
2602 (source
2603 (origin
2604 (method url-fetch)
2605 (uri (rubygems-uri "eventmachine" version))
2606 (sha256
2607 (base32
2608 "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp"))))
2609 (build-system ruby-build-system)
2610 (arguments
2611 '(#:tests? #f)) ; test suite tries to connect to google.com
2612 (native-inputs
2613 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
2614 (synopsis "Single-threaded network event framework for Ruby")
2615 (description
2616 "EventMachine implements a single-threaded engine for arbitrary network
2617 communications. EventMachine wraps all interactions with sockets, allowing
2618 programs to concentrate on the implementation of network protocols. It can be
2619 used to create both network servers and clients.")
2620 (home-page "http://rubyeventmachine.com")
2621 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT