Merge branch 'master' into staging
[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, 2016, 2017 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, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
8 ;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
9 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
10 ;;;
11 ;;; This file is part of GNU Guix.
12 ;;;
13 ;;; GNU Guix is free software; you can redistribute it and/or modify it
14 ;;; under the terms of the GNU General Public License as published by
15 ;;; the Free Software Foundation; either version 3 of the License, or (at
16 ;;; your option) any later version.
17 ;;;
18 ;;; GNU Guix is distributed in the hope that it will be useful, but
19 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 ;;; GNU General Public License for more details.
22 ;;;
23 ;;; You should have received a copy of the GNU General Public License
24 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26 (define-module (gnu packages ruby)
27 #:use-module ((guix licenses) #:prefix license:)
28 #:use-module (gnu packages)
29 #:use-module (gnu packages base)
30 #:use-module (gnu packages compression)
31 #:use-module (gnu packages databases)
32 #:use-module (gnu packages readline)
33 #:use-module (gnu packages autotools)
34 #:use-module (gnu packages java)
35 #:use-module (gnu packages libffi)
36 #:use-module (gnu packages python)
37 #:use-module (gnu packages ragel)
38 #:use-module (gnu packages tls)
39 #:use-module (gnu packages version-control)
40 #:use-module (guix packages)
41 #:use-module (guix download)
42 #:use-module (guix git-download)
43 #:use-module (guix utils)
44 #:use-module (guix build-system gnu)
45 #:use-module (gnu packages xml)
46 #:use-module (gnu packages web)
47 #:use-module (guix build-system ruby))
48
49 (define-public ruby
50 (package
51 (name "ruby")
52 (version "2.4.2")
53 (source
54 (origin
55 (method url-fetch)
56 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
57 (version-major+minor version)
58 "/ruby-" version ".tar.xz"))
59 (sha256
60 (base32
61 "0dgp4ypk3smrsbh2c249n5pl6nqhpd2igq9484dbsh81sf08k2kl"))
62 (modules '((guix build utils)))
63 (snippet `(begin
64 ;; Remove bundled libffi
65 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
66 #t))))
67 (build-system gnu-build-system)
68 (arguments
69 `(#:test-target "test"
70 #:phases
71 (modify-phases %standard-phases
72 (add-before 'configure 'replace-bin-sh-and-remove-libffi
73 (lambda _
74 (substitute* '("Makefile.in"
75 "ext/pty/pty.c"
76 "io.c"
77 "lib/mkmf.rb"
78 "process.c"
79 "test/rubygems/test_gem_ext_configure_builder.rb"
80 "test/rdoc/test_rdoc_parser.rb"
81 "test/ruby/test_rubyoptions.rb"
82 "test/ruby/test_process.rb"
83 "test/ruby/test_system.rb"
84 "tool/rbinstall.rb")
85 (("/bin/sh") (which "sh")))
86 #t)))))
87 (inputs
88 `(("readline" ,readline)
89 ("openssl" ,openssl)
90 ("libffi" ,libffi)
91 ("gdbm" ,gdbm)
92 ("zlib" ,zlib)))
93 (native-search-paths
94 (list (search-path-specification
95 (variable "GEM_PATH")
96 (files (list (string-append "lib/ruby/gems/"
97 (version-major+minor version)
98 ".0"))))))
99 (synopsis "Programming language interpreter")
100 (description "Ruby is a dynamic object-oriented programming language with
101 a focus on simplicity and productivity.")
102 (home-page "https://ruby-lang.org")
103 (license license:ruby)))
104
105 (define-public ruby-2.3
106 (package
107 (inherit ruby)
108 (version "2.3.5")
109 (source
110 (origin
111 (method url-fetch)
112 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
113 (version-major+minor version)
114 "/ruby-" version ".tar.xz"))
115 (sha256
116 (base32
117 "1npzcnq5kh0f9y88w5gj4v6ln8csr91361k3r43dmhlhn6mpsfkx"))
118 (modules '((guix build utils)))
119 (snippet `(begin
120 ;; Remove bundled libffi
121 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
122 #t))))))
123
124 (define-public ruby-2.2
125 (package (inherit ruby)
126 (version "2.2.8")
127 (source
128 (origin
129 (method url-fetch)
130 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
131 (version-major+minor version)
132 "/ruby-" version ".tar.xz"))
133 (sha256
134 (base32
135 "1c31slidv2bdnnir3qfmdjs193b5s2ycb9pnf1lc55kk0cazrsip"))))))
136
137 (define-public ruby-2.1
138 (package (inherit ruby)
139 (version "2.1.10")
140 (source
141 (origin
142 (method url-fetch)
143 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
144 (version-major+minor version)
145 "/ruby-" version ".tar.bz2"))
146 (sha256
147 (base32
148 "1wglbd599mlwxfcb2xgqcxi2shr363pjn5dpbv11m04si9bpaim7"))))
149 (arguments
150 `(#:test-target "test"
151 #:parallel-tests? #f
152 #:phases
153 (modify-phases %standard-phases
154 (add-before 'configure 'replace-bin-sh
155 (lambda _
156 (substitute* '("Makefile.in"
157 "ext/pty/pty.c"
158 "io.c"
159 "lib/mkmf.rb"
160 "process.c")
161 (("/bin/sh") (which "sh")))
162 #t)))))
163 (native-search-paths
164 (list (search-path-specification
165 (variable "GEM_PATH")
166 (files (list (string-append "lib/ruby/gems/"
167 (version-major+minor version)
168 ".0"))))))))
169
170 (define-public ruby-1.8
171 (package (inherit ruby)
172 (version "1.8.7-p374")
173 (source
174 (origin
175 (method url-fetch)
176 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
177 (version-major+minor version)
178 "/ruby-" version ".tar.bz2"))
179 (sha256
180 (base32
181 "1qq7khilwkayrhwmzlxk83scrmiqfi7lgsn4c63znyvz2c1lgqxl"))))
182 (native-search-paths '())
183 (arguments
184 `(#:test-target "test"
185 #:parallel-tests? #f
186 #:phases
187 (modify-phases %standard-phases
188 (add-before 'configure 'replace-bin-sh
189 (lambda _
190 (substitute* '("Makefile.in"
191 "ext/pty/pty.c"
192 "io.c"
193 "lib/mkmf.rb"
194 "process.c")
195 (("/bin/sh") (which "sh")))
196 #t)))))))
197
198 (define (gem-directory ruby-version)
199 "Return the relative gem install directory for RUBY-VERSION."
200 (string-append "/lib/ruby/gems/" (version-major+minor ruby-version)
201 ".0/gems"))
202
203 (define-public ruby-hoe
204 (package
205 (name "ruby-hoe")
206 (version "3.16.0")
207 (source (origin
208 (method url-fetch)
209 (uri (rubygems-uri "hoe" version))
210 (sha256
211 (base32
212 "03r8nsw4n4mnia9iqiqk9kqhvrl96m2i81j4yg8cpnppd8vk7vlb"))))
213 (build-system ruby-build-system)
214 (synopsis "Ruby project management helper")
215 (description
216 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
217 maintain, and release projects and includes a dynamic plug-in system allowing
218 for easy extensibility. Hoe ships with plug-ins for all the usual project
219 tasks including rdoc generation, testing, packaging, deployment, and
220 announcement.")
221 (home-page "http://www.zenspider.com/projects/hoe.html")
222 (license license:expat)))
223
224 (define-public ruby-rake-compiler
225 (package
226 (name "ruby-rake-compiler")
227 (version "1.0.4")
228 (source (origin
229 (method url-fetch)
230 (uri (rubygems-uri "rake-compiler" version))
231 (sha256
232 (base32
233 "1xpdi4w8zaklk1i9ps8g3k0icw3v5fcks092l84w28rgrpx82qip"))))
234 (build-system ruby-build-system)
235 (arguments
236 '(#:tests? #f)) ; needs cucumber
237 (synopsis "Building and packaging helper for Ruby native extensions")
238 (description "Rake-compiler provides a framework for building and
239 packaging native C and Java extensions in Ruby.")
240 (home-page "https://github.com/rake-compiler/rake-compiler")
241 (license license:expat)))
242
243 (define-public ruby-i18n
244 (package
245 (name "ruby-i18n")
246 (version "0.7.0")
247 (source (origin
248 (method url-fetch)
249 (uri (rubygems-uri "i18n" version))
250 (sha256
251 (base32
252 "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758"))))
253 (build-system ruby-build-system)
254 (arguments
255 '(#:tests? #f)) ; no tests
256 (synopsis "Internationalization library for Ruby")
257 (description "Ruby i18n is an internationalization and localization
258 solution for Ruby programs. It features translation and localization,
259 interpolation of values to translations, pluralization, customizable
260 transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
261 translation data, custom key/scope separator, custom exception handlers, and
262 an extensible architecture with a swappable backend.")
263 (home-page "https://github.com/svenfuchs/i18n")
264 (license license:expat)))
265
266 ;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
267 ;; dependencies use RSpec for their test suites! To avoid these circular
268 ;; dependencies, we disable tests for all of the RSpec-related packages.
269 (define ruby-rspec-support
270 (package
271 (name "ruby-rspec-support")
272 (version "3.5.0")
273 (source (origin
274 (method url-fetch)
275 (uri (rubygems-uri "rspec-support" version))
276 (sha256
277 (base32
278 "10vf3k3d472y573mag2kzfsfrf6rv355s13kadnpryk8d36yq5r0"))))
279 (build-system ruby-build-system)
280 (arguments
281 '(#:tests? #f)) ; avoid dependency cycles
282 (synopsis "RSpec support library")
283 (description "Support utilities for RSpec gems.")
284 (home-page "https://github.com/rspec/rspec-support")
285 (license license:expat)))
286
287 (define-public ruby-rspec-core
288 (package
289 (name "ruby-rspec-core")
290 (version "3.5.4")
291 (source (origin
292 (method url-fetch)
293 (uri (rubygems-uri "rspec-core" version))
294 (sha256
295 (base32
296 "1nacs062qbr98fx6czf1vwppn1js956nv2c8vfwj6i65axdfs46i"))))
297 (build-system ruby-build-system)
298 (arguments
299 '(#:tests? #f)) ; avoid dependency cycles
300 (propagated-inputs
301 `(("ruby-rspec-support" ,ruby-rspec-support)))
302 (synopsis "RSpec core library")
303 (description "Rspec-core provides the RSpec test runner and example
304 groups.")
305 (home-page "https://github.com/rspec/rspec-core")
306 (license license:expat)))
307
308 (define-public ruby-rspec-core-2
309 (package (inherit ruby-rspec-core)
310 (version "2.14.8")
311 (source (origin
312 (method url-fetch)
313 (uri (rubygems-uri "rspec-core" version))
314 (sha256
315 (base32
316 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
317 (propagated-inputs `())))
318
319 (define-public ruby-diff-lcs
320 (package
321 (name "ruby-diff-lcs")
322 (version "1.3")
323 (source (origin
324 (method url-fetch)
325 (uri (rubygems-uri "diff-lcs" version))
326 (sha256
327 (base32
328 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
329 (build-system ruby-build-system)
330 (arguments
331 '(#:tests? #f)) ; avoid dependency cycles
332 (synopsis "Compute the difference between two Enumerable sequences")
333 (description "Diff::LCS computes the difference between two Enumerable
334 sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
335 It includes utilities to create a simple HTML diff output format and a
336 standard diff-like tool.")
337 (home-page "https://github.com/halostatue/diff-lcs")
338 (license license:expat)))
339
340 (define-public ruby-rspec-expectations
341 (package
342 (name "ruby-rspec-expectations")
343 (version "3.5.0")
344 (source (origin
345 (method url-fetch)
346 (uri (rubygems-uri "rspec-expectations" version))
347 (sha256
348 (base32
349 "0bbqfrb1x8gmwf8x2xhhwvvlhwbbafq4isbvlibxi6jk602f09gs"))))
350 (build-system ruby-build-system)
351 (arguments
352 '(#:tests? #f)) ; avoid dependency cycles
353 (propagated-inputs
354 `(("ruby-rspec-support" ,ruby-rspec-support)
355 ("ruby-diff-lcs" ,ruby-diff-lcs)))
356 (synopsis "RSpec expectations library")
357 (description "Rspec-expectations provides a simple API to express expected
358 outcomes of a code example.")
359 (home-page "https://github.com/rspec/rspec-expectations")
360 (license license:expat)))
361
362 (define-public ruby-rspec-expectations-2
363 (package (inherit ruby-rspec-expectations)
364 (version "2.14.5")
365 (source (origin
366 (method url-fetch)
367 (uri (rubygems-uri "rspec-expectations" version))
368 (sha256
369 (base32
370 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
371 (propagated-inputs
372 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
373
374 (define-public ruby-rspec-mocks
375 (package
376 (name "ruby-rspec-mocks")
377 (version "3.5.0")
378 (source (origin
379 (method url-fetch)
380 (uri (rubygems-uri "rspec-mocks" version))
381 (sha256
382 (base32
383 "0nl3ksivh9wwrjjd47z5dggrwx40v6gpb3a0gzbp1gs06a5dmk24"))))
384 (build-system ruby-build-system)
385 (arguments
386 '(#:tests? #f)) ; avoid dependency cycles
387 (propagated-inputs
388 `(("ruby-rspec-support" ,ruby-rspec-support)
389 ("ruby-diff-lcs" ,ruby-diff-lcs)))
390 (synopsis "RSpec stubbing and mocking library")
391 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
392 support for stubbing and mocking.")
393 (home-page "https://github.com/rspec/rspec-mocks")
394 (license license:expat)))
395
396 (define-public ruby-rspec-mocks-2
397 (package (inherit ruby-rspec-mocks)
398 (version "2.14.6")
399 (source (origin
400 (method url-fetch)
401 (uri (rubygems-uri "rspec-mocks" version))
402 (sha256
403 (base32
404 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
405 (propagated-inputs
406 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
407
408 (define-public ruby-rspec
409 (package
410 (name "ruby-rspec")
411 (version "3.5.0")
412 (source (origin
413 (method url-fetch)
414 (uri (rubygems-uri "rspec" version))
415 (sha256
416 (base32
417 "16g3mmih999f0b6vcz2c3qsc7ks5zy4lj1rzjh8hf6wk531nvc6s"))))
418 (build-system ruby-build-system)
419 (arguments
420 '(#:tests? #f)) ; avoid dependency cycles
421 (propagated-inputs
422 `(("ruby-rspec-core" ,ruby-rspec-core)
423 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
424 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
425 (synopsis "Behavior-driven development framework for Ruby")
426 (description "RSpec is a behavior-driven development (BDD) framework for
427 Ruby. This meta-package includes the RSpec test runner, along with the
428 expectations and mocks frameworks.")
429 (home-page "http://rspec.info/")
430 (license license:expat)))
431
432 (define-public ruby-rspec-2
433 (package (inherit ruby-rspec)
434 (version "2.14.1")
435 (source (origin
436 (method url-fetch)
437 (uri (rubygems-uri "rspec" version))
438 (sha256
439 (base32
440 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
441 (propagated-inputs
442 `(("ruby-rspec-core" ,ruby-rspec-core-2)
443 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
444 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
445
446 ;; Bundler is yet another source of circular dependencies, so we must disable
447 ;; its test suite as well.
448 (define-public bundler
449 (package
450 (name "bundler")
451 (version "1.15.4")
452 (source (origin
453 (method url-fetch)
454 (uri (rubygems-uri "bundler" version))
455 (sha256
456 (base32
457 "0wl4r7wbwdq68xidfv4hhzfb1spb6lmhbspwlzrg4pf1l6ipxlgs"))))
458 (build-system ruby-build-system)
459 (arguments
460 '(#:tests? #f)) ; avoid dependency cycles
461 (synopsis "Ruby gem bundler")
462 (description "Bundler automatically downloads and installs a list of gems
463 specified in a \"Gemfile\", as well as their dependencies.")
464 (home-page "http://bundler.io/")
465 (license license:expat)))
466
467 (define-public ruby-builder
468 (package
469 (name "ruby-builder")
470 (version "3.2.3")
471 (source (origin
472 (method url-fetch)
473 (uri (rubygems-uri "builder" version))
474 (sha256
475 (base32
476 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
477 (build-system ruby-build-system)
478 (arguments
479 `(#:phases
480 (modify-phases %standard-phases
481 (add-after 'unpack 'do-not-use-rvm
482 (lambda _
483 (substitute* "rakelib/tags.rake"
484 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
485 #t)))))
486 (synopsis "Ruby library to create structured data")
487 (description "Builder provides a number of builder objects that make it
488 easy to create structured data. Currently the following builder objects are
489 supported: XML Markup and XML Events.")
490 (home-page "https://github.com/jimweirich/builder")
491 (license license:expat)))
492
493 (define-public ruby-rjb
494 (package
495 (name "ruby-rjb")
496 (version "1.5.5")
497 (source (origin
498 (method url-fetch)
499 (uri (rubygems-uri "rjb" version))
500 (sha256
501 (base32
502 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
503 (build-system ruby-build-system)
504 (arguments
505 `(#:tests? #f ; no rakefile
506 #:phases
507 (modify-phases %standard-phases
508 (add-before 'build 'set-java-home
509 (lambda* (#:key inputs #:allow-other-keys)
510 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
511 #t)))))
512 (native-inputs
513 `(("jdk" ,icedtea "jdk")))
514 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
515 (description "RJB is a bridge program that connects Ruby and Java via the
516 Java Native Interface.")
517 (home-page "http://www.artonx.org/collabo/backyard/?RubyJavaBridge")
518 (license license:lgpl2.1+)))
519
520 (define-public ruby-log4r
521 (package
522 (name "ruby-log4r")
523 (version "1.1.10")
524 (source
525 (origin
526 (method url-fetch)
527 (uri (rubygems-uri "log4r" version))
528 (sha256
529 (base32
530 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
531 (build-system ruby-build-system)
532 (arguments
533 '(#:tests? #f)) ; no Rakefile in gem
534 (synopsis "Flexible logging library for Ruby")
535 (description "Comprehensive and flexible logging library written
536 in Ruby for use in Ruby programs. It features a hierarchical logging
537 system of any number of levels, custom level names, logger
538 inheritance, multiple output destinations per log event, execution
539 tracing, custom formatting, thread safteyness, XML and YAML
540 configuration, and more.")
541 (home-page "http://log4r.rubyforge.org/")
542 (license license:bsd-3)))
543
544 (define-public ruby-atoulme-antwrap
545 (package
546 (name "ruby-atoulme-antwrap")
547 (version "0.7.5")
548 (source (origin
549 (method url-fetch)
550 (uri (rubygems-uri "atoulme-Antwrap" version))
551 (sha256
552 (base32
553 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
554 (build-system ruby-build-system)
555 ;; Test data required for most of the tests are not included.
556 (arguments `(#:tests? #f))
557 (native-inputs
558 `(("ruby-hoe" ,ruby-hoe)))
559 (inputs
560 `(("ruby-rjb" ,ruby-rjb)))
561 (synopsis "Ruby wrapper for the Ant build tool")
562 (description "Antwrap is a Ruby module that wraps the Apache Ant build
563 tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
564 script.")
565 (home-page "http://rubyforge.org/projects/antwrap/")
566 (license license:expat)))
567
568 (define-public ruby-atoulme-saikuro
569 (package
570 (name "ruby-atoulme-saikuro")
571 (version "1.2.1")
572 (source (origin
573 (method url-fetch)
574 (uri (rubygems-uri "atoulme-Saikuro" version))
575 (sha256
576 (base32
577 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
578 (build-system ruby-build-system)
579 ;; FIXME: There are no unit tests. The tests are demonstrations of the
580 ;; "saikuro" tool.
581 (arguments `(#:tests? #f))
582 (synopsis "Cyclomatic complexity analyzer")
583 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
584 given Ruby source code Saikuro will generate a report listing the cyclomatic
585 complexity of each method found. In addition, Saikuro counts the number of
586 lines per method and can generate a listing of the number of tokens on each
587 line of code.")
588 (home-page "http://www.github.com/atoulme/Saikuro")
589 ;; File headers contain the BSD-3 license and the README.rdoc says that
590 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
591 ;; of the Expat license.
592 (license license:bsd-3)))
593
594 (define-public ruby-ci-reporter
595 (package
596 (name "ruby-ci-reporter")
597 (version "2.0.0")
598 (source (origin
599 (method url-fetch)
600 (uri (rubygems-uri "ci_reporter" version))
601 (sha256
602 (base32
603 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
604 (build-system ruby-build-system)
605 (arguments
606 `(#:test-target "rspec"))
607 (propagated-inputs
608 `(("ruby-builder" ,ruby-builder)))
609 (native-inputs
610 `(("bundler" ,bundler)
611 ("ruby-rspec" ,ruby-rspec)))
612 (synopsis "Generate XML reports of runs test")
613 (description
614 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
615 you to generate XML reports of your test runs. The resulting files can be
616 read by a continuous integration system that understands Ant's JUnit report
617 format.")
618 (home-page "https://github.com/nicksieger/ci_reporter")
619 (license license:expat)))
620
621 (define-public ruby-saikuro-treemap
622 (package
623 (name "ruby-saikuro-treemap")
624 (version "0.2.0")
625 (source (origin
626 (method url-fetch)
627 (uri (rubygems-uri "saikuro_treemap" version))
628 (sha256
629 (base32
630 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
631 (build-system ruby-build-system)
632 ;; Some of the tests fail because the generated JSON has keys in a
633 ;; different order. This is a problem with the test suite rather than any
634 ;; of the involved libraries.
635 (arguments `(#:tests? #f))
636 (propagated-inputs
637 `(("ruby-json-pure" ,ruby-json-pure)
638 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
639 (synopsis "Generate complexity treemap based on saikuro analysis")
640 (description
641 "This gem generates a treemap showing the complexity of Ruby code on
642 which it is run. It uses Saikuro under the covers to analyze Ruby code
643 complexity.")
644 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
645 (license license:expat)))
646
647 (define-public ruby-orderedhash
648 (package
649 (name "ruby-orderedhash")
650 (version "0.0.6")
651 (source (origin
652 (method url-fetch)
653 (uri (rubygems-uri "orderedhash" version))
654 (sha256
655 (base32
656 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
657 (build-system ruby-build-system)
658 (arguments
659 '(#:tests? #f)) ; no test suite
660 (synopsis "Ruby library providing an order-preserving hash")
661 (description "Orderedhash is a Ruby library providing a hash
662 implementation that preserves the order of items and features some array-like
663 extensions.")
664 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
665 (license license:public-domain)))
666
667 (define-public ruby-libxml
668 (package
669 (name "ruby-libxml")
670 (version "3.0.0")
671 (source
672 (origin
673 (method url-fetch)
674 (uri (rubygems-uri "libxml-ruby" version))
675 (sha256
676 (base32
677 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
678 (build-system ruby-build-system)
679 (inputs
680 `(("zlib" ,zlib)
681 ("libxml2" ,libxml2)))
682 (arguments
683 '(#:tests? #f ; test suite hangs for unknown reason
684 #:gem-flags
685 (list "--"
686 (string-append "--with-xml2-include="
687 (assoc-ref %build-inputs "libxml2")
688 "/include/libxml2" ))))
689 (synopsis "Ruby bindings for GNOME Libxml2")
690 (description "The Libxml-Ruby project provides Ruby language bindings for
691 the GNOME Libxml2 XML toolkit.")
692 (home-page "http://xml4r.github.com/libxml-ruby")
693 (license license:expat)))
694
695 (define-public ruby-xml-simple
696 (package
697 (name "ruby-xml-simple")
698 (version "1.1.5")
699 (source (origin
700 (method url-fetch)
701 (uri (rubygems-uri "xml-simple" version))
702 (sha256
703 (base32
704 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
705 (build-system ruby-build-system)
706 (arguments
707 '(#:tests? #f)) ; no test suite
708 (synopsis "Simple Ruby library for XML processing")
709 (description "This library provides a simple API for XML processing in
710 Ruby.")
711 (home-page "https://github.com/maik/xml-simple")
712 (license license:ruby)))
713
714 (define-public ruby-thor
715 (package
716 (name "ruby-thor")
717 (version "0.19.4")
718 (source (origin
719 (method url-fetch)
720 (uri (rubygems-uri "thor" version))
721 (sha256
722 (base32
723 "01n5dv9kql60m6a00zc0r66jvaxx98qhdny3klyj0p3w34pad2ns"))))
724 (build-system ruby-build-system)
725 (arguments
726 '(#:tests? #f)) ; no test suite
727 (native-inputs
728 `(("bundler" ,bundler)))
729 (synopsis "Ruby toolkit for building command-line interfaces")
730 (description "Thor is a toolkit for building powerful command-line
731 interfaces.")
732 (home-page "http://whatisthor.com/")
733 (license license:expat)))
734
735 (define-public ruby-lumberjack
736 (package
737 (name "ruby-lumberjack")
738 (version "1.0.12")
739 (source (origin
740 (method url-fetch)
741 (uri (rubygems-uri "lumberjack" version))
742 (sha256
743 (base32
744 "0yz26k9mi0djx1qvlmvdw1xw2yf7a2rkfmnb2j0d28kms33xpibp"))))
745 (build-system ruby-build-system)
746 (native-inputs
747 `(("ruby-rspec" ,ruby-rspec)
748 ("ruby-timecop" ,ruby-timecop)))
749 (synopsis "Logging utility library for Ruby")
750 (description "Lumberjack is a simple logging utility that can be a drop in
751 replacement for Logger or ActiveSupport::BufferedLogger. It provides support
752 for automatically rolling log files even with multiple processes writing the
753 same log file.")
754 (home-page "https://github.com/bdurand/lumberjack")
755 (license license:expat)))
756
757 (define-public ruby-nenv
758 (package
759 (name "ruby-nenv")
760 (version "0.3.0")
761 (source (origin
762 (method url-fetch)
763 (uri (rubygems-uri "nenv" version))
764 (sha256
765 (base32
766 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
767 (build-system ruby-build-system)
768 (arguments
769 `(#:tests? #f)) ; no tests included
770 (native-inputs
771 `(("ruby-rspec" ,ruby-rspec)
772 ("bundler" ,bundler)))
773 (synopsis "Ruby interface for modifying the environment")
774 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
775 and inspect the environment.")
776 (home-page "https://github.com/e2/nenv")
777 (license license:expat)))
778
779 (define-public ruby-permutation
780 (package
781 (name "ruby-permutation")
782 (version "0.1.8")
783 (source (origin
784 (method url-fetch)
785 (uri (rubygems-uri "permutation" version))
786 (sha256
787 (base32
788 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
789 (build-system ruby-build-system)
790 (arguments
791 `(#:phases
792 (modify-phases %standard-phases
793 (add-after 'unpack 'fix-rakefile
794 (lambda _
795 (substitute* "Rakefile"
796 (("require 'rake/gempackagetask'")
797 "require 'rubygems/package_task'")
798 (("include Config") ""))
799 #t))
800 (replace 'check
801 (lambda _
802 (zero? (system* "ruby" "-Ilib" "test/test.rb")))))))
803 (synopsis "Library to perform operations with sequence permutations")
804 (description "This package provides a Ruby library to perform different
805 operations with permutations of sequences, such as strings and arrays.")
806 (home-page "http://flori.github.io/permutation")
807 (license license:gpl2))) ; GPL 2 only
808
809 (define-public ruby-shellany
810 (package
811 (name "ruby-shellany")
812 (version "0.0.1")
813 (source (origin
814 (method url-fetch)
815 (uri (rubygems-uri "shellany" version))
816 (sha256
817 (base32
818 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
819 (build-system ruby-build-system)
820 (arguments
821 `(#:test-target "default"
822 #:phases
823 (modify-phases %standard-phases
824 (add-after 'unpack 'fix-version-test
825 (lambda _
826 (substitute* "spec/shellany_spec.rb"
827 (("^RSpec") "require \"shellany\"\nRSpec"))
828 #t)))))
829 (native-inputs
830 `(("ruby-rspec" ,ruby-rspec)
831 ("ruby-nenv" ,ruby-nenv)
832 ("bundler" ,bundler)))
833 (synopsis "Capture command output")
834 (description "Shellany is a Ruby library providing functions to capture
835 the output produced by running shell commands.")
836 (home-page "https://rubygems.org/gems/shellany")
837 (license license:expat)))
838
839 (define-public ruby-notiffany
840 (package
841 (name "ruby-notiffany")
842 (version "0.1.1")
843 (source (origin
844 (method url-fetch)
845 (uri (rubygems-uri "notiffany" version))
846 (sha256
847 (base32
848 "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx"))))
849 (build-system ruby-build-system)
850 ;; Tests are not included in the gem.
851 (arguments `(#:tests? #f))
852 (propagated-inputs
853 `(("ruby-shellany" ,ruby-shellany)
854 ("ruby-nenv" ,ruby-nenv)))
855 (native-inputs
856 `(("bundler" ,bundler)))
857 (synopsis "Wrapper libray for notification libraries")
858 (description "Notiffany is a Ruby wrapper libray for notification
859 libraries such as Libnotify.")
860 (home-page "https://github.com/guard/notiffany")
861 (license license:expat)))
862
863 (define-public ruby-formatador
864 (package
865 (name "ruby-formatador")
866 (version "0.2.5")
867 (source (origin
868 (method url-fetch)
869 (uri (rubygems-uri "formatador" version))
870 (sha256
871 (base32
872 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
873 (build-system ruby-build-system)
874 ;; Circular dependency: Tests require ruby-shindo, which requires
875 ;; ruby-formatador at runtime.
876 (arguments `(#:tests? #f))
877 (synopsis "Ruby library to format text on stdout")
878 (description "Formatador is a Ruby library to format text printed to the
879 standard output stream.")
880 (home-page "https://github.com/geemus/formatador")
881 (license license:expat)))
882
883 (define-public ruby-shindo
884 (package
885 (name "ruby-shindo")
886 (version "0.3.8")
887 (source (origin
888 (method url-fetch)
889 (uri (rubygems-uri "shindo" version))
890 (sha256
891 (base32
892 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
893 (build-system ruby-build-system)
894 (arguments
895 `(#:test-target "shindo_tests"
896 #:phases
897 (modify-phases %standard-phases
898 (add-after 'unpack 'fix-tests
899 (lambda _
900 (substitute* "Rakefile"
901 (("system \"shindo") "system \"./bin/shindo")
902 ;; This test doesn't work, so we disable it.
903 (("fail \"The build_error test should fail") "#"))
904 #t)))))
905 (propagated-inputs
906 `(("ruby-formatador" ,ruby-formatador)))
907 (synopsis "Simple depth first Ruby testing")
908 (description "Shindo is a simple depth first testing library for Ruby.")
909 (home-page "https://github.com/geemus/shindo")
910 (license license:expat)))
911
912 (define-public ruby-rubygems-tasks
913 (package
914 (name "ruby-rubygems-tasks")
915 (version "0.2.4")
916 (source (origin
917 (method url-fetch)
918 (uri (rubygems-uri "rubygems-tasks" version))
919 (sha256
920 (base32
921 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
922 (build-system ruby-build-system)
923 ;; Tests need Internet access.
924 (arguments `(#:tests? #f))
925 (native-inputs
926 `(("ruby-rspec" ,ruby-rspec)
927 ("ruby-yard" ,ruby-yard)))
928 (synopsis "Rake tasks for managing and releasing Ruby Gems")
929 (description "Rubygems-task provides Rake tasks for managing and releasing
930 Ruby Gems.")
931 (home-page "https://github.com/postmodern/rubygems-tasks")
932 (license license:expat)))
933
934 (define-public ruby-ffi
935 (package
936 (name "ruby-ffi")
937 (version "1.9.18")
938 (source (origin
939 (method url-fetch)
940 (uri (rubygems-uri "ffi" version))
941 (sha256
942 (base32
943 "034f52xf7zcqgbvwbl20jwdyjwznvqnwpbaps9nk18v9lgb1dpx0"))))
944 (build-system ruby-build-system)
945 ;; FIXME: Before running tests the build system attempts to build libffi
946 ;; from sources.
947 (arguments `(#:tests? #f))
948 (native-inputs
949 `(("ruby-rake-compiler" ,ruby-rake-compiler)
950 ("ruby-rspec" ,ruby-rspec)
951 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
952 (inputs
953 `(("libffi" ,libffi)))
954 (synopsis "Ruby foreign function interface library")
955 (description "Ruby-FFI is a Ruby extension for programmatically loading
956 dynamic libraries, binding functions within them, and calling those functions
957 from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby
958 and JRuby.")
959 (home-page "http://wiki.github.com/ffi/ffi")
960 (license license:bsd-3)))
961
962 (define-public ruby-simplecov-html
963 (package
964 (name "ruby-simplecov-html")
965 (version "0.10.1")
966 (source (origin
967 (method url-fetch)
968 (uri (rubygems-uri "simplecov-html" version))
969 (sha256
970 (base32
971 "0f3psphismgp6jp1fxxz09zbswh7m2xxxr6gqlzdh7sgv415clvm"))))
972 (build-system ruby-build-system)
973 (arguments `(#:tests? #f)) ; there are no tests
974 (native-inputs
975 `(("bundler" ,bundler)))
976 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
977 (description "This package provides the default HTML formatter for
978 the SimpleCov code coverage tool for Ruby version 1.9 and above.")
979 (home-page "https://github.com/colszowka/simplecov-html")
980 (license license:expat)))
981
982 (define-public ruby-simplecov
983 (package
984 (name "ruby-simplecov")
985 (version "0.12.0")
986 (source (origin
987 (method url-fetch)
988 (uri (rubygems-uri "simplecov" version))
989 (sha256
990 (base32
991 "0ffhyrfnq2zm2mc1742a4hqy475g3qa1zf6yfldwg1ldh5sn3qbx"))))
992 (build-system ruby-build-system)
993 ;; Simplecov depends on rubocop for code style checking at build time.
994 ;; Rubocop needs simplecov at build time.
995 (arguments `(#:tests? #f))
996 (propagated-inputs
997 `(("ruby-json" ,ruby-json)
998 ("ruby-docile" ,ruby-docile)
999 ("ruby-simplecov-html" ,ruby-simplecov-html)))
1000 (native-inputs
1001 `(("bundler" ,bundler)))
1002 (synopsis "Code coverage framework for Ruby")
1003 (description "SimpleCov is a code coverage framework for Ruby with a
1004 powerful configuration library and automatic merging of coverage across test
1005 suites.")
1006 (home-page "https://github.com/colszowka/simplecov")
1007 (license license:expat)))
1008
1009 (define-public ruby-useragent
1010 (package
1011 (name "ruby-useragent")
1012 (version "0.16.8")
1013 (source (origin
1014 (method url-fetch)
1015 (uri (rubygems-uri "useragent" version))
1016 (sha256
1017 (base32
1018 "1139cjqyv1hk1qcw89k81ajjkqyakqgbcyvmfrsmjqi8yn9kgqhq"))))
1019 (build-system ruby-build-system)
1020 (arguments
1021 '(#:tests? #f)) ; no test suite
1022 (synopsis "HTTP user agent parser for Ruby")
1023 (description "UserAgent is a Ruby library that parses and compares HTTP
1024 User Agents.")
1025 (home-page "https://github.com/gshutler/useragent")
1026 (license license:expat)))
1027
1028 (define-public ruby-bacon
1029 (package
1030 (name "ruby-bacon")
1031 (version "1.2.0")
1032 (source (origin
1033 (method url-fetch)
1034 (uri (rubygems-uri "bacon" version))
1035 (sha256
1036 (base32
1037 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
1038 (build-system ruby-build-system)
1039 (synopsis "Small RSpec clone")
1040 (description "Bacon is a small RSpec clone providing all essential
1041 features.")
1042 (home-page "https://github.com/chneukirchen/bacon")
1043 (license license:expat)))
1044
1045 (define-public ruby-connection-pool
1046 (package
1047 (name "ruby-connection-pool")
1048 (version "2.2.1")
1049 (source (origin
1050 (method url-fetch)
1051 (uri (rubygems-uri "connection_pool" version))
1052 (sha256
1053 (base32
1054 "17vpaj6kyf2i8bimaxz7rg1kyadf4d10642ja67qiqlhwgczl2w7"))))
1055 (build-system ruby-build-system)
1056 (native-inputs
1057 `(("bundler" ,bundler)))
1058 (synopsis "Generic connection pool for Ruby")
1059 (description "Connection_pool provides a generic connection pooling
1060 interface for Ruby programs.")
1061 (home-page "https://github.com/mperham/connection_pool")
1062 (license license:expat)))
1063
1064 (define-public ruby-net-http-persistent
1065 (package
1066 (name "ruby-net-http-persistent")
1067 (version "3.0.0")
1068 (source (origin
1069 (method url-fetch)
1070 (uri (rubygems-uri "net-http-persistent" version))
1071 (sha256
1072 (base32
1073 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
1074 (build-system ruby-build-system)
1075 (native-inputs
1076 `(("ruby-connection-pool" ,ruby-connection-pool)
1077 ("ruby-hoe" ,ruby-hoe)))
1078 (synopsis "Persistent HTTP connection manager")
1079 (description "Net::HTTP::Persistent manages persistent HTTP connections
1080 using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
1081 (home-page "https://github.com/drbrain/net-http-persistent")
1082 (license license:expat)))
1083
1084 (define-public ruby-power-assert
1085 (package
1086 (name "ruby-power-assert")
1087 (version "0.2.7")
1088 (source (origin
1089 (method url-fetch)
1090 (uri (rubygems-uri "power_assert" version))
1091 (sha256
1092 (base32
1093 "0ka6w71lcan4wgf111xi3pcn9ma9lhakv31jg8w007nwzi0xfjbi"))))
1094 (build-system ruby-build-system)
1095 (native-inputs
1096 `(("bundler" ,bundler)))
1097 (synopsis "Assert library with descriptive assertion messages")
1098 (description "Power-assert is an assertion library providing descriptive
1099 assertion messages for tests.")
1100 (home-page "https://github.com/k-tsj/power_assert")
1101 (license (list license:bsd-2 license:ruby))))
1102
1103 (define-public ruby-locale
1104 (package
1105 (name "ruby-locale")
1106 (version "2.1.2")
1107 (source (origin
1108 (method url-fetch)
1109 (uri (rubygems-uri "locale" version))
1110 (sha256
1111 (base32
1112 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
1113 (build-system ruby-build-system)
1114 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1115 ;; which needs ruby-gettext, which needs ruby-locale. To break the
1116 ;; dependency cycle we disable tests.
1117 (arguments `(#:tests? #f))
1118 (native-inputs
1119 `(("bundler" ,bundler)
1120 ("ruby-yard" ,ruby-yard)))
1121 (synopsis "Ruby library providing basic localization APIs")
1122 (description
1123 "Ruby-Locale is the pure ruby library which provides basic APIs for
1124 localization.")
1125 (home-page "https://github.com/ruby-gettext/locale")
1126 (license (list license:lgpl3+ license:ruby))))
1127
1128 (define-public ruby-text
1129 (package
1130 (name "ruby-text")
1131 (version "1.3.1")
1132 (source (origin
1133 (method url-fetch)
1134 (uri (rubygems-uri "text" version))
1135 (sha256
1136 (base32
1137 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
1138 (build-system ruby-build-system)
1139 (synopsis "Collection of text algorithms for Ruby")
1140 (description
1141 "This package provides a collection of text algorithms: Levenshtein,
1142 Soundex, Metaphone, Double Metaphone, Porter Stemming.")
1143 (home-page "https://github.com/threedaymonk/text")
1144 (license license:expat)))
1145
1146 (define-public ruby-gettext
1147 (package
1148 (name "ruby-gettext")
1149 (version "3.1.7")
1150 (source (origin
1151 (method url-fetch)
1152 (uri (rubygems-uri "gettext" version))
1153 (sha256
1154 (base32
1155 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
1156 (build-system ruby-build-system)
1157 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1158 ;; which needs ruby-gettext. To break the dependency cycle we disable
1159 ;; tests.
1160 (arguments `(#:tests? #f))
1161 (propagated-inputs
1162 `(("ruby-locale" ,ruby-locale)
1163 ("ruby-text" ,ruby-text)))
1164 (native-inputs
1165 `(("bundler" ,bundler)
1166 ("ruby-yard" ,ruby-yard)))
1167 (synopsis "GNU gettext-like program for Ruby")
1168 (description
1169 "Gettext is a GNU gettext-like program for Ruby. The catalog
1170 file (po-file) used is the same as that used by GNU gettext, allowing you to
1171 use GNU gettext tools for maintenance.")
1172 (home-page "http://ruby-gettext.github.com/")
1173 (license (list license:lgpl3+ license:ruby))))
1174
1175 (define-public ruby-packnga
1176 (package
1177 (name "ruby-packnga")
1178 (version "1.0.4")
1179 (source (origin
1180 (method url-fetch)
1181 (uri (rubygems-uri "packnga" version))
1182 (sha256
1183 (base32
1184 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
1185 (build-system ruby-build-system)
1186 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
1187 ;; To break the dependency cycle we disable tests.
1188 (arguments `(#:tests? #f))
1189 (propagated-inputs
1190 `(("ruby-gettext" ,ruby-gettext)
1191 ("ruby-yard" ,ruby-yard)))
1192 (native-inputs
1193 `(("bundler" ,bundler)))
1194 (synopsis "Utility library to package internationalized libraries")
1195 (description
1196 "Packnga is a library to translate to many languages using YARD.")
1197 (home-page "http://ranguba.org/packnga/")
1198 (license license:lgpl2.0+)))
1199
1200 (define-public ruby-test-unit
1201 (package
1202 (name "ruby-test-unit")
1203 (version "3.2.5")
1204 (source (origin
1205 (method url-fetch)
1206 (uri (rubygems-uri "test-unit" version))
1207 (sha256
1208 (base32
1209 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
1210 (build-system ruby-build-system)
1211 (propagated-inputs
1212 `(("ruby-power-assert" ,ruby-power-assert)))
1213 (native-inputs
1214 `(("bundler" ,bundler)
1215 ("ruby-packnga" ,ruby-packnga)
1216 ("ruby-yard" ,ruby-yard)))
1217 (synopsis "Unit testing framework for Ruby")
1218 (description "@code{Test::Unit} is unit testing framework for Ruby, based
1219 on xUnit principles. These were originally designed by Kent Beck, creator of
1220 extreme programming software development methodology, for Smalltalk's SUnit.
1221 It allows writing tests, checking results and automated testing in Ruby.")
1222 (home-page "http://test-unit.github.io/")
1223 (license (list license:psfl license:ruby))))
1224
1225 (define-public ruby-metaclass
1226 (package
1227 (name "ruby-metaclass")
1228 (version "0.0.4")
1229 (source (origin
1230 (method url-fetch)
1231 (uri (rubygems-uri "metaclass" version))
1232 (sha256
1233 (base32
1234 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
1235 (build-system ruby-build-system)
1236 (arguments
1237 `(#:phases
1238 (modify-phases %standard-phases
1239 (add-after 'unpack 'add-test-unit-to-search-path
1240 (lambda* (#:key inputs #:allow-other-keys)
1241 (let* ((test-unit (assoc-ref inputs "ruby-test-unit"))
1242 (test-unit-home (gem-home test-unit
1243 ,(package-version ruby))))
1244 (substitute* "Rakefile"
1245 (("t\\.libs << \"test\"" line)
1246 (string-append line "; t.libs << \""
1247 test-unit-home
1248 "/gems/test-unit-"
1249 ,(package-version ruby-test-unit)
1250 "/lib\""))))
1251 #t)))))
1252 (native-inputs
1253 `(("bundler" ,bundler)
1254 ("ruby-test-unit" ,ruby-test-unit)))
1255 (synopsis "Ruby library adding metaclass method to all objects")
1256 (description
1257 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
1258 objects.")
1259 (home-page "https://github.com/floehopper/metaclass")
1260 (license license:expat)))
1261
1262 (define-public ruby-blankslate
1263 (package
1264 (name "ruby-blankslate")
1265 (version "3.1.3")
1266 (source (origin
1267 (method url-fetch)
1268 (uri (rubygems-uri "blankslate" version))
1269 (sha256
1270 (base32
1271 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
1272 (build-system ruby-build-system)
1273 (arguments
1274 `(#:phases
1275 (modify-phases %standard-phases
1276 (replace 'check
1277 (lambda _ (zero? (system* "rspec" "spec/")))))))
1278 (native-inputs
1279 `(("bundler" ,bundler)
1280 ("ruby-rspec" ,ruby-rspec)))
1281 (synopsis "Abstract base class with no predefined methods")
1282 (description
1283 "BlankSlate provides an abstract base class with no predefined
1284 methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
1285 as a base class when writing classes that depend upon
1286 @code{method_missing} (e.g. dynamic proxies).")
1287 (home-page "https://github.com/masover/blankslate")
1288 (license license:expat)))
1289
1290 (define-public ruby-instantiator
1291 (package
1292 (name "ruby-instantiator")
1293 (version "0.0.6")
1294 (source (origin
1295 (method url-fetch)
1296 (uri (rubygems-uri "instantiator" version))
1297 (sha256
1298 (base32
1299 "0mfmqhg9xrv9i8i1kmphf15ywddhivyh2z3ccl0xjw8qy54zr21i"))))
1300 (build-system ruby-build-system)
1301 (arguments
1302 `(#:phases
1303 (modify-phases %standard-phases
1304 (add-after 'unpack 'add-test-unit-to-search-path
1305 (lambda* (#:key inputs #:allow-other-keys)
1306 (let* ((test-unit (assoc-ref inputs "ruby-test-unit"))
1307 (test-unit-home (gem-home test-unit ,(package-version
1308 ruby))))
1309 (substitute* "Rakefile"
1310 (("t\\.libs << \"test\"" line)
1311 (string-append line "; t.libs << \""
1312 test-unit-home
1313 "/gems/test-unit-"
1314 ,(package-version ruby-test-unit)
1315 "/lib\""))))
1316 #t)))))
1317 (propagated-inputs
1318 `(("ruby-blankslate" ,ruby-blankslate)))
1319 (native-inputs
1320 `(("bundler" ,bundler)
1321 ("ruby-test-unit" ,ruby-test-unit)))
1322 (synopsis "Instantiate an arbitrary Ruby class")
1323 (description
1324 "Instantiator lets you instantiate an arbitrary Ruby class without
1325 knowing anything about the constructor.")
1326 (home-page "https://github.com/floehopper/instantiator")
1327 (license license:expat)))
1328
1329 (define-public ruby-introspection
1330 (package
1331 (name "ruby-introspection")
1332 (version "0.0.4")
1333 (source (origin
1334 (method url-fetch)
1335 (uri (rubygems-uri "introspection" version))
1336 (sha256
1337 (base32
1338 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
1339 (build-system ruby-build-system)
1340 (arguments
1341 `(#:phases
1342 (modify-phases %standard-phases
1343 (add-after 'unpack 'add-test-unit-to-search-path
1344 (lambda* (#:key inputs #:allow-other-keys)
1345 (let* ((test-unit (assoc-ref inputs "ruby-test-unit"))
1346 (test-unit-home (gem-home test-unit ,(package-version
1347 ruby))))
1348 (substitute* "Rakefile"
1349 (("t\\.libs << \"test\"" line)
1350 (string-append line "; t.libs << \""
1351 test-unit-home
1352 "/gems/test-unit-"
1353 ,(package-version ruby-test-unit)
1354 "/lib\""))))
1355 #t)))))
1356 (propagated-inputs
1357 `(("ruby-instantiator" ,ruby-instantiator)
1358 ("ruby-metaclass" ,ruby-metaclass)))
1359 (native-inputs
1360 `(("bundler" ,bundler)
1361 ("ruby-blankslate" ,ruby-blankslate)
1362 ("ruby-test-unit" ,ruby-test-unit)))
1363 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
1364 (description
1365 "Introspection provides tools to inspect the hierarchy of method
1366 definitions on a Ruby object.")
1367 (home-page "https://github.com/floehopper/introspection")
1368 (license license:expat)))
1369
1370 (define-public ruby-redcarpet
1371 (package
1372 (name "ruby-redcarpet")
1373 (version "3.4.0")
1374 (source (origin
1375 (method url-fetch)
1376 (uri (rubygems-uri "redcarpet" version))
1377 (sha256
1378 (base32
1379 "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7"))))
1380 (build-system ruby-build-system)
1381 (arguments
1382 `(#:phases
1383 (modify-phases %standard-phases
1384 ;; The gem archive does not include the conformance tests.
1385 (add-after 'unpack 'disable-conformance-tests
1386 (lambda _
1387 (substitute* "Rakefile"
1388 (("task :test => %w\\[test:unit test:conformance\\]")
1389 "task :test => %w[test:unit]"))
1390 #t)))))
1391 (native-inputs
1392 `(("bundler" ,bundler)
1393 ("ruby-test-unit" ,ruby-test-unit)
1394 ("ruby-rake-compiler" ,ruby-rake-compiler)))
1395 (synopsis "Extensible Markdown to (X)HTML converter")
1396 (description
1397 "Redcarpet is an extensible Ruby library for Markdown processing and
1398 conversion to (X)HTML.")
1399 (home-page "https://github.com/vmg/redcarpet")
1400 (license license:expat)))
1401
1402 (define-public ruby-mocha
1403 (package
1404 (name "ruby-mocha")
1405 (version "1.1.0")
1406 (source (origin
1407 (method url-fetch)
1408 (uri (rubygems-uri "mocha" version))
1409 (sha256
1410 (base32
1411 "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
1412 (build-system ruby-build-system)
1413 (arguments
1414 `(#:phases
1415 (modify-phases %standard-phases
1416 (add-after 'unpack 'add-test-unit-to-search-path
1417 (lambda* (#:key inputs #:allow-other-keys)
1418 (let* ((test-unit (assoc-ref inputs "ruby-test-unit"))
1419 (test-unit-home (gem-home test-unit
1420 ,(package-version ruby))))
1421 (substitute* "Rakefile"
1422 (("t\\.libs << 'test'" line)
1423 (string-append line "; t.libs << \""
1424 test-unit-home
1425 "/gems/test-unit-"
1426 ,(package-version ruby-test-unit)
1427 "/lib\""))))
1428 #t))
1429 (add-before 'check 'use-latest-redcarpet
1430 (lambda _
1431 (substitute* "mocha.gemspec"
1432 (("<redcarpet>.freeze, \\[\"~> 1\"\\]")
1433 "<redcarpet>.freeze, [\">= 3\"]"))
1434 #t))
1435 (add-before 'check 'hardcode-version
1436 (lambda _
1437 ;; Mocha is undefined at build time
1438 (substitute* "Rakefile"
1439 (("#\\{Mocha::VERSION\\}") ,version))
1440 #t))
1441 (add-before 'check 'remove-failing-test
1442 ;; FIXME: This test fails for reasons unrelated to Guix packaging.
1443 (lambda _
1444 (delete-file "test/acceptance/stubbing_nil_test.rb")
1445 #t)))))
1446 (propagated-inputs
1447 `(("ruby-metaclass" ,ruby-metaclass)))
1448 (native-inputs
1449 `(("bundler" ,bundler)
1450 ("ruby-yard" ,ruby-yard)
1451 ("ruby-introspection" ,ruby-introspection)
1452 ("ruby-test-unit" ,ruby-test-unit)
1453 ("ruby-redcarpet" ,ruby-redcarpet)))
1454 (synopsis "Mocking and stubbing library for Ruby")
1455 (description
1456 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
1457 allows mocking and stubbing of methods on real (non-mock) classes.")
1458 (home-page "http://gofreerange.com/mocha/docs")
1459 (license license:expat)))
1460
1461 (define-public ruby-net-ssh
1462 (package
1463 (name "ruby-net-ssh")
1464 (version "4.1.0")
1465 (source (origin
1466 (method url-fetch)
1467 (uri (rubygems-uri "net-ssh" version))
1468 (sha256
1469 (base32
1470 "013p5jb4wy0cq7x7036piw2a3s1i9p752ki1srx2m289mpz4ml3q"))))
1471 (build-system ruby-build-system)
1472 (native-inputs
1473 `(("bundler" ,bundler)
1474 ("ruby-mocha" ,ruby-mocha)
1475 ("ruby-test-unit" ,ruby-test-unit)))
1476 (synopsis "Ruby implementation of the SSH2 client protocol")
1477 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
1478 client protocol. It allows you to write programs that invoke and interact
1479 with processes on remote servers, via SSH2.")
1480 (home-page "https://github.com/net-ssh/net-ssh")
1481 (license license:expat)))
1482
1483 (define-public ruby-minitest
1484 (package
1485 (name "ruby-minitest")
1486 (version "5.10.3")
1487 (source (origin
1488 (method url-fetch)
1489 (uri (rubygems-uri "minitest" version))
1490 (sha256
1491 (base32
1492 "05521clw19lrksqgvg2kmm025pvdhdaniix52vmbychrn2jm7kz2"))))
1493 (build-system ruby-build-system)
1494 (native-inputs
1495 `(("ruby-hoe" ,ruby-hoe)))
1496 (synopsis "Small test suite library for Ruby")
1497 (description "Minitest provides a complete suite of Ruby testing
1498 facilities supporting TDD, BDD, mocking, and benchmarking.")
1499 (home-page "https://github.com/seattlerb/minitest")
1500 (license license:expat)))
1501
1502 ;; This is the last release of Minitest 4, which is used by some packages.
1503 (define-public ruby-minitest-4
1504 (package (inherit ruby-minitest)
1505 (version "4.7.5")
1506 (source (origin
1507 (method url-fetch)
1508 (uri (rubygems-uri "minitest" version))
1509 (sha256
1510 (base32
1511 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
1512 (arguments
1513 `(#:phases
1514 (modify-phases %standard-phases
1515 (add-after 'unpack 'remove-unsupported-method
1516 (lambda _
1517 (substitute* "Rakefile"
1518 (("self\\.rubyforge_name = .*") ""))
1519 #t))
1520 (add-after 'build 'exclude-failing-tests
1521 (lambda _
1522 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
1523 ;; Fixnum.
1524 (delete-file "test/minitest/test_minitest_spec.rb")
1525 #t)))))))
1526
1527 (define-public ruby-minitest-sprint
1528 (package
1529 (name "ruby-minitest-sprint")
1530 (version "1.1.0")
1531 (source (origin
1532 (method url-fetch)
1533 (uri (rubygems-uri "minitest-sprint" version))
1534 (sha256
1535 (base32
1536 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
1537 (build-system ruby-build-system)
1538 (native-inputs
1539 `(("ruby-hoe" ,ruby-hoe)
1540 ("ruby-minitest" ,ruby-minitest)))
1541 (synopsis "Fast test suite runner for minitest")
1542 (description "Minitest-sprint is a test runner for minitest that makes it
1543 easier to re-run individual failing tests.")
1544 (home-page "https://github.com/seattlerb/minitest-sprint")
1545 (license license:expat)))
1546
1547 (define-public ruby-minitest-bacon
1548 (package
1549 (name "ruby-minitest-bacon")
1550 (version "1.0.3")
1551 (source (origin
1552 (method url-fetch)
1553 (uri (rubygems-uri "minitest-bacon" version))
1554 (sha256
1555 (base32
1556 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
1557 (build-system ruby-build-system)
1558 (native-inputs
1559 `(("ruby-hoe" ,ruby-hoe)))
1560 (inputs
1561 `(("ruby-minitest" ,ruby-minitest)))
1562 (synopsis "Bacon compatibility library for minitest")
1563 (description "Minitest-bacon extends minitest with bacon-like
1564 functionality, making it easier to migrate test suites from bacon to minitest.")
1565 (home-page "https://github.com/seattlerb/minitest-bacon")
1566 (license license:expat)))
1567
1568 (define-public ruby-minitest-focus
1569 (package
1570 (name "ruby-minitest-focus")
1571 (version "1.1.2")
1572 (source
1573 (origin
1574 (method url-fetch)
1575 (uri (rubygems-uri "minitest-focus" version))
1576 (sha256
1577 (base32
1578 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
1579 (build-system ruby-build-system)
1580 (propagated-inputs
1581 `(("ruby-minitest" ,ruby-minitest)))
1582 (native-inputs
1583 `(("ruby-hoe" ,ruby-hoe)))
1584 (synopsis "Allows a few specific tests to be focused on")
1585 (description
1586 "@code{minitest-focus} gives the ability focus on a few tests with ease
1587 without having to use command-line arguments. It introduces a @code{focus}
1588 class method for use in testing classes, specifying that the next defined test
1589 is to be run.")
1590 (home-page "https://github.com/seattlerb/minitest-focus")
1591 (license license:expat)))
1592
1593 (define-public ruby-minitest-pretty-diff
1594 ;; Use git reference because gem is out of date and does not contain testing
1595 ;; script. There are no releases on GitHub.
1596 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
1597 (package
1598 (name "ruby-minitest-pretty-diff")
1599 (version (string-append "0.1-1." (string-take commit 8)))
1600 (source (origin
1601 (method git-fetch)
1602 (uri (git-reference
1603 (url "https://github.com/adammck/minitest-pretty_diff.git")
1604 (commit commit)))
1605 (file-name (string-append name "-" version "-checkout"))
1606 (sha256
1607 (base32
1608 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
1609 (build-system ruby-build-system)
1610 (arguments
1611 `(#:phases
1612 (modify-phases %standard-phases
1613 (replace 'check
1614 (lambda _
1615 (zero? (system* "script/test")))))))
1616 (native-inputs
1617 `(("bundler" ,bundler)
1618 ("ruby-turn" ,ruby-turn)))
1619 (synopsis "Pretty-print hashes and arrays in MiniTest")
1620 (description
1621 "@code{minitest-pretty_diff} monkey-patches
1622 @code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
1623 diffing them. This makes it easier to spot differences between nested
1624 structures when tests fail.")
1625 (home-page "https://github.com/adammck/minitest-pretty_diff")
1626 (license license:expat))))
1627
1628 (define-public ruby-minitest-moar
1629 (package
1630 (name "ruby-minitest-moar")
1631 (version "0.0.4")
1632 (source
1633 (origin
1634 (method url-fetch)
1635 (uri (rubygems-uri "minitest-moar" version))
1636 (sha256
1637 (base32
1638 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
1639 (build-system ruby-build-system)
1640 (arguments
1641 `(#:phases
1642 (modify-phases %standard-phases
1643 (add-before 'check 'clean-dependencies
1644 (lambda _
1645 ;; Remove all gems defined in the Gemfile because these are not
1646 ;; truly needed.
1647 (substitute* "Gemfile"
1648 (("gem .*") ""))
1649 ;; Remove byebug as not needed to run tests.
1650 (substitute* "test/test_helper.rb"
1651 (("require 'byebug'") ""))
1652 #t)))))
1653 (native-inputs
1654 `(("bundler" ,bundler)
1655 ("ruby-minitest" ,ruby-minitest)))
1656 (synopsis "Extra features and changes to MiniTest")
1657 (description "@code{MiniTest Moar} add some additional features and
1658 changes some default behaviours in MiniTest. For instance, Moar replaces the
1659 MiniTest @code{Object#stub} with a global @code{stub} method.")
1660 (home-page "https://github.com/dockyard/minitest-moar")
1661 (license license:expat)))
1662
1663 (define-public ruby-minitest-bonus-assertions
1664 (package
1665 (name "ruby-minitest-bonus-assertions")
1666 (version "3.0")
1667 (source
1668 (origin
1669 (method url-fetch)
1670 (uri (rubygems-uri "minitest-bonus-assertions" version))
1671 (sha256
1672 (base32
1673 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
1674 (build-system ruby-build-system)
1675 (arguments
1676 `(#:phases
1677 (modify-phases %standard-phases
1678 (add-before 'check 'clean-dependencies
1679 (lambda _
1680 ;; Remove unneeded require statement that would entail another
1681 ;; dependency.
1682 (substitute* "test/minitest_config.rb"
1683 (("require 'minitest/bisect'") ""))
1684 #t)))))
1685 (native-inputs
1686 `(("ruby-hoe" ,ruby-hoe)
1687 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
1688 ("ruby-minitest-focus" ,ruby-minitest-focus)
1689 ("ruby-minitest-moar" ,ruby-minitest-moar)))
1690 (synopsis "Bonus assertions for @code{Minitest}")
1691 (description
1692 "Minitest bonus assertions provides extra MiniTest assertions. For
1693 instance, it provides @code{assert_true}, @code{assert_false} and
1694 @code{assert_set_equal}.")
1695 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
1696 (license license:expat)))
1697
1698 (define-public ruby-minitest-rg
1699 (package
1700 (name "ruby-minitest-rg")
1701 (version "5.2.0")
1702 (source
1703 (origin
1704 (method url-fetch)
1705 (uri (rubygems-uri "minitest-rg" version))
1706 (sha256
1707 (base32
1708 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
1709 (build-system ruby-build-system)
1710 (arguments
1711 ;; Some tests fail even outside Guix, so disable tests.
1712 ;; https://github.com/blowmage/minitest-rg/issues/12
1713 ;; https://github.com/blowmage/minitest-rg/pull/13
1714 `(#:tests? #f))
1715 (propagated-inputs
1716 `(("ruby-minitest" ,ruby-minitest)))
1717 (synopsis "Coloured output for Minitest")
1718 (description
1719 "@code{minitest-rg} changes the colour of the output from Minitest.")
1720 (home-page "http://blowmage.com/minitest-rg")
1721 (license license:expat)))
1722
1723 (define-public ruby-minitest-hooks
1724 (package
1725 (name "ruby-minitest-hooks")
1726 (version "1.4.1")
1727 (source
1728 (origin
1729 (method url-fetch)
1730 (uri (rubygems-uri "minitest-hooks" version))
1731 (sha256
1732 (base32
1733 "05bngfyxwq1cflk568nhddgfrmws5ff6kiqax4skklsjnh71ykbi"))))
1734 (build-system ruby-build-system)
1735 (arguments
1736 '(#:test-target "spec"))
1737 (native-inputs
1738 `(("ruby-sequel" ,ruby-sequel)
1739 ("ruby-sqlite3" ,ruby-sqlite3)))
1740 (synopsis "Hooks for the minitest framework")
1741 (description
1742 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
1743 @code{around_all} hooks for Minitest. This allows, for instance, running each
1744 suite of specs inside a database transaction, running each spec inside its own
1745 savepoint inside that transaction. This can significantly speed up testing
1746 for specs that share expensive database setup code.")
1747 (home-page "https://github.com/jeremyevans/minitest-hooks")
1748 (license license:expat)))
1749
1750 (define-public ruby-daemons
1751 (package
1752 (name "ruby-daemons")
1753 (version "1.2.4")
1754 (source (origin
1755 (method url-fetch)
1756 (uri (rubygems-uri "daemons" version))
1757 (sha256
1758 (base32
1759 "1bmb4qrd95b5gl3ym5j3q6mf090209f4vkczggn49n56w6s6zldz"))))
1760 (build-system ruby-build-system)
1761 (arguments
1762 `(#:tests? #f)) ; no test suite
1763 (synopsis "Daemonize Ruby programs")
1764 (description "Daemons provides a way to wrap existing Ruby scripts to be
1765 run as a daemon and to be controlled by simple start/stop/restart commands.")
1766 (home-page "https://github.com/thuehlinger/daemons")
1767 (license license:expat)))
1768
1769 (define-public ruby-git
1770 (package
1771 (name "ruby-git")
1772 (version "1.3.0")
1773 (source (origin
1774 (method url-fetch)
1775 (uri (rubygems-uri "git" version))
1776 (sha256
1777 (base32
1778 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
1779 (build-system ruby-build-system)
1780 (arguments
1781 `(#:tests? #f ; no tests
1782 #:phases (modify-phases %standard-phases
1783 (add-after 'install 'patch-git-binary
1784 (lambda* (#:key inputs outputs #:allow-other-keys)
1785 ;; Make the default git binary an absolute path to the
1786 ;; store.
1787 (let ((git (string-append (assoc-ref inputs "git")
1788 "/bin/git"))
1789 (config (string-append (getenv "GEM_HOME")
1790 "/gems/git-" ,version
1791 "/lib/git/config.rb")))
1792 (substitute* (list config)
1793 (("'git'")
1794 (string-append "'" git "'")))
1795 #t))))))
1796 (inputs
1797 `(("git" ,git)))
1798 (synopsis "Ruby wrappers for Git")
1799 (description "Ruby/Git is a Ruby library that can be used to create, read
1800 and manipulate Git repositories by wrapping system calls to the git binary.")
1801 (home-page "https://github.com/schacon/ruby-git")
1802 (license license:expat)))
1803
1804 (define-public ruby-slop
1805 (package
1806 (name "ruby-slop")
1807 (version "4.5.0")
1808 (source (origin
1809 (method url-fetch)
1810 (uri (rubygems-uri "slop" version))
1811 (sha256
1812 (base32
1813 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
1814 (build-system ruby-build-system)
1815 (native-inputs
1816 `(("ruby-minitest" ,ruby-minitest)))
1817 (synopsis "Ruby command line option parser")
1818 (description "Slop provides a Ruby domain specific language for gathering
1819 options and parsing command line flags.")
1820 (home-page "https://github.com/leejarvis/slop")
1821 (license license:expat)))
1822
1823 (define-public ruby-slop-3
1824 (package (inherit ruby-slop)
1825 (version "3.6.0")
1826 (source (origin
1827 (method url-fetch)
1828 (uri (rubygems-uri "slop" version))
1829 (sha256
1830 (base32
1831 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
1832
1833 (define-public ruby-multipart-post
1834 (package
1835 (name "ruby-multipart-post")
1836 (version "2.0.0")
1837 (source (origin
1838 (method url-fetch)
1839 (uri (rubygems-uri "multipart-post" version))
1840 (sha256
1841 (base32
1842 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
1843 (build-system ruby-build-system)
1844 (native-inputs
1845 `(("bundler" ,bundler)))
1846 (synopsis "Multipart POST library for Ruby")
1847 (description "Multipart-Post Adds multipart POST capability to Ruby's
1848 net/http library.")
1849 (home-page "https://github.com/nicksieger/multipart-post")
1850 (license license:expat)))
1851
1852 (define-public ruby-arel
1853 (package
1854 (name "ruby-arel")
1855 (version "8.0.0")
1856 (source (origin
1857 (method url-fetch)
1858 (uri (rubygems-uri "arel" version))
1859 (sha256
1860 (base32
1861 "0nw0qbc6ph625p6n3maqq9f527vz3nbl0hk72fbyka8jzsmplxzl"))))
1862 (build-system ruby-build-system)
1863 (arguments '(#:tests? #f)) ; no tests
1864 (home-page "https://github.com/rails/arel")
1865 (synopsis "SQL AST manager for Ruby")
1866 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
1867 Ruby. It simplifies the generation of complex SQL queries and adapts to
1868 various relational database implementations.")
1869 (license license:expat)))
1870
1871 (define-public ruby-minitar
1872 ;; We package from the GitHub source to fix the security issue reported at
1873 ;; https://github.com/halostatue/minitar/issues/16.
1874 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
1875 (package
1876 (name "ruby-minitar")
1877 (version (string-append "0.5.4-1." (string-take commit 8)))
1878 (source
1879 (origin
1880 (method git-fetch)
1881 (uri (git-reference
1882 (url "https://github.com/halostatue/minitar.git")
1883 (commit commit)))
1884 (file-name (string-append name "-" version "-checkout"))
1885 (sha256
1886 (base32
1887 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
1888 (build-system ruby-build-system)
1889 (arguments
1890 '(#:tests? #f)) ; missing a gemspec
1891 (synopsis "Ruby library and utility for handling tar archives")
1892 (description
1893 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
1894 that provides the ability to deal with POSIX tar archive files.")
1895 (home-page "http://www.github.com/atoulme/minitar")
1896 (license (list license:gpl2+ license:ruby)))))
1897
1898 (define-public ruby-mini-portile
1899 (package
1900 (name "ruby-mini-portile")
1901 (version "0.6.2")
1902 (source
1903 (origin
1904 (method url-fetch)
1905 (uri (rubygems-uri "mini_portile" version))
1906 (sha256
1907 (base32
1908 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
1909 (build-system ruby-build-system)
1910 (arguments
1911 '(#:tests? #f)) ; tests require network access
1912 (synopsis "Ports system for Ruby developers")
1913 (description "Mini-portile is a port/recipe system for Ruby developers.
1914 It provides a standard way to compile against specific versions of libraries
1915 to reproduce user environments.")
1916 (home-page "https://github.com/flavorjones/mini_portile")
1917 (license license:expat)))
1918
1919 (define-public ruby-mini-portile-2
1920 (package (inherit ruby-mini-portile)
1921 (version "2.2.0")
1922 (source (origin
1923 (method url-fetch)
1924 (uri (rubygems-uri "mini_portile2" version))
1925 (sha256
1926 (base32
1927 "0g5bpgy08q0nc0anisg3yvwc1gc3inl854fcrg48wvg7glqd6dpm"))))))
1928
1929 (define-public ruby-nokogiri
1930 (package
1931 (name "ruby-nokogiri")
1932 (version "1.8.0")
1933 (source (origin
1934 (method url-fetch)
1935 (uri (rubygems-uri "nokogiri" version))
1936 (sha256
1937 (base32
1938 "1nffsyx1xjg6v5n9rrbi8y1arrcx2i5f21cp6clgh9iwiqkr7rnn"))))
1939 (build-system ruby-build-system)
1940 (arguments
1941 ;; Tests fail because Nokogiri can only test with an installed extension,
1942 ;; and also because many test framework dependencies are missing.
1943 `(#:tests? #f
1944 #:gem-flags (list "--" "--use-system-libraries"
1945 (string-append "--with-xml2-include="
1946 (assoc-ref %build-inputs "libxml2")
1947 "/include/libxml2" ))
1948 #:phases
1949 (modify-phases %standard-phases
1950 (add-before 'build 'patch-extconf
1951 ;; 'pkg-config' is not included in the GEM_PATH during
1952 ;; installation, so we add it directly to the load path.
1953 (lambda* (#:key inputs #:allow-other-keys)
1954 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config"))
1955 (pkg-config-home (gem-home pkg-config
1956 ,(package-version ruby))))
1957 (substitute* "ext/nokogiri/extconf.rb"
1958 (("gem 'pkg-config'.*")
1959 (string-append "$:.unshift '"
1960 pkg-config-home
1961 "/gems/pkg-config-"
1962 ,(package-version ruby-pkg-config)
1963 "/lib'\n"))))
1964 #t)))))
1965 (native-inputs
1966 `(("ruby-hoe" ,ruby-hoe)))
1967 (inputs
1968 `(("zlib" ,zlib)
1969 ("libxml2" ,libxml2)
1970 ("libxslt" ,libxslt)))
1971 (propagated-inputs
1972 `(("ruby-mini-portile" ,ruby-mini-portile-2)
1973 ("ruby-pkg-config" ,ruby-pkg-config)))
1974 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
1975 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
1976 both CSS3 selector and XPath 1.0 support.")
1977 (home-page "http://www.nokogiri.org/")
1978 (license license:expat)))
1979
1980 (define-public ruby-method-source
1981 (package
1982 (name "ruby-method-source")
1983 (version "0.8.2")
1984 (source
1985 (origin
1986 (method url-fetch)
1987 (uri (rubygems-uri "method_source" version))
1988 (sha256
1989 (base32
1990 "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
1991 (build-system ruby-build-system)
1992 (native-inputs
1993 `(("ruby-bacon" ,ruby-bacon)
1994 ("git" ,git)))
1995 (synopsis "Retrieve the source code for Ruby methods")
1996 (description "Method_source retrieves the source code for Ruby methods.
1997 Additionally, it can extract source code from Proc and Lambda objects or just
1998 extract comments.")
1999 (home-page "https://github.com/banister/method_source")
2000 (license license:expat)))
2001
2002 (define-public ruby-coderay
2003 (package
2004 (name "ruby-coderay")
2005 (version "1.1.2")
2006 (source
2007 (origin
2008 (method url-fetch)
2009 (uri (rubygems-uri "coderay" version))
2010 (sha256
2011 (base32
2012 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
2013 (build-system ruby-build-system)
2014 (arguments
2015 '(#:tests? #f)) ; missing test files
2016 (synopsis "Ruby syntax highlighting library")
2017 (description "Coderay is a Ruby library that provides syntax highlighting
2018 for select languages.")
2019 (home-page "http://coderay.rubychan.de")
2020 (license license:expat)))
2021
2022 (define-public ruby-pry
2023 (package
2024 (name "ruby-pry")
2025 (version "0.10.4")
2026 (source
2027 (origin
2028 (method url-fetch)
2029 (uri (rubygems-uri "pry" version))
2030 (sha256
2031 (base32
2032 "05xbzyin63aj2prrv8fbq2d5df2mid93m81hz5bvf2v4hnzs42ar"))))
2033 (build-system ruby-build-system)
2034 (arguments
2035 '(#:tests? #f)) ; no tests
2036 (propagated-inputs
2037 `(("ruby-coderay" ,ruby-coderay)
2038 ("ruby-method-source" ,ruby-method-source)
2039 ("ruby-slop" ,ruby-slop-3)))
2040 (synopsis "Ruby REPL")
2041 (description "Pry is an IRB alternative and runtime developer console for
2042 Ruby. It features syntax highlighting, a plugin architecture, runtime
2043 invocation, and source and documentation browsing.")
2044 (home-page "http://pryrepl.org")
2045 (license license:expat)))
2046
2047 (define-public ruby-guard
2048 (package
2049 (name "ruby-guard")
2050 (version "2.13.0")
2051 (source (origin
2052 (method url-fetch)
2053 ;; The gem does not include a Rakefile, nor does it contain a
2054 ;; gemspec file, nor does it come with the tests. This is why
2055 ;; we fetch the tarball from Github.
2056 (uri (string-append "https://github.com/guard/guard/archive/v"
2057 version ".tar.gz"))
2058 (file-name (string-append name "-" version ".tar.gz"))
2059 (sha256
2060 (base32
2061 "1hwj0yi17k6f5axrm0k2bb7fq71dlp0zfywmd7pij9iimbppcca0"))))
2062 (build-system ruby-build-system)
2063 (arguments
2064 `(#:tests? #f ; tests require cucumber
2065 #:phases
2066 (modify-phases %standard-phases
2067 (add-after 'unpack 'remove-git-ls-files
2068 (lambda* (#:key outputs #:allow-other-keys)
2069 (substitute* "guard.gemspec"
2070 (("git ls-files -z") "find . -type f -print0"))
2071 #t))
2072 (replace 'build
2073 (lambda _
2074 (zero? (system* "gem" "build" "guard.gemspec")))))))
2075 (propagated-inputs
2076 `(("ruby-formatador" ,ruby-formatador)
2077 ("ruby-listen" ,ruby-listen)
2078 ("ruby-lumberjack" ,ruby-lumberjack)
2079 ("ruby-nenv" ,ruby-nenv)
2080 ("ruby-notiffany" ,ruby-notiffany)
2081 ("ruby-pry" ,ruby-pry)
2082 ("ruby-shellany" ,ruby-shellany)
2083 ("ruby-thor" ,ruby-thor)))
2084 (native-inputs
2085 `(("bundler" ,bundler)
2086 ("ruby-rspec" ,ruby-rspec)))
2087 (synopsis "Tool to handle events on file system modifications")
2088 (description
2089 "Guard is a command line tool to easily handle events on file system
2090 modifications. Guard automates various tasks by running custom rules whenever
2091 file or directories are modified.")
2092 (home-page "http://guardgem.org/")
2093 (license license:expat)))
2094
2095 (define-public ruby-thread-safe
2096 (package
2097 (name "ruby-thread-safe")
2098 (version "0.3.6")
2099 (source
2100 (origin
2101 (method url-fetch)
2102 (uri (rubygems-uri "thread_safe" version))
2103 (sha256
2104 (base32
2105 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
2106 (build-system ruby-build-system)
2107 (arguments
2108 '(#:tests? #f)) ; needs simplecov, among others
2109 (synopsis "Thread-safe utilities for Ruby")
2110 (description "The thread_safe library provides thread-safe collections and
2111 utilities for Ruby.")
2112 (home-page "https://github.com/ruby-concurrency/thread_safe")
2113 (license license:asl2.0)))
2114
2115 (define-public ruby-tzinfo
2116 (package
2117 (name "ruby-tzinfo")
2118 (version "1.2.3")
2119 (source
2120 (origin
2121 (method url-fetch)
2122 (uri (rubygems-uri "tzinfo" version))
2123 (sha256
2124 (base32
2125 "05r81lk7q7275rdq7xipfm0yxgqyd2ggh73xpc98ypngcclqcscl"))))
2126 (build-system ruby-build-system)
2127 (propagated-inputs
2128 `(("ruby-thread-safe" ,ruby-thread-safe)))
2129 (synopsis "Time zone library for Ruby")
2130 (description "TZInfo is a Ruby library that provides daylight savings
2131 aware transformations between times in different time zones.")
2132 (home-page "http://tzinfo.github.io")
2133 (license license:expat)))
2134
2135 (define-public ruby-tzinfo-data
2136 (package
2137 (name "ruby-tzinfo-data")
2138 (version "1.2016.9")
2139 (source
2140 (origin
2141 (method url-fetch)
2142 ;; Download from GitHub because the rubygems version does not contain
2143 ;; Rakefile or tests.
2144 (uri (string-append
2145 "https://github.com/tzinfo/tzinfo-data/archive/v"
2146 version
2147 ".tar.gz"))
2148 (file-name (string-append name "-" version ".tar.gz"))
2149 (sha256
2150 (base32
2151 "0i8vz2j7wmcpr4pd066qvlg4if5blscjrgxk2imavfa49nq5lp06"))
2152 ;; Remove the known test failure.
2153 ;; https://github.com/tzinfo/tzinfo-data/issues/10
2154 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
2155 (patches (search-patches
2156 "ruby-tzinfo-data-ignore-broken-test.patch"))))
2157 (build-system ruby-build-system)
2158 (propagated-inputs
2159 `(("ruby-tzinfo" ,ruby-tzinfo)))
2160 (synopsis "Data from the IANA Time Zone database")
2161 (description
2162 "This library provides @code{TZInfo::Data}, which contains data from the
2163 IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
2164 (home-page "http://tzinfo.github.io")
2165 (license license:expat)))
2166
2167 (define-public ruby-rb-inotify
2168 (package
2169 (name "ruby-rb-inotify")
2170 (version "0.9.10")
2171 (source
2172 (origin
2173 (method url-fetch)
2174 (uri (rubygems-uri "rb-inotify" version))
2175 (sha256
2176 (base32
2177 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
2178 (build-system ruby-build-system)
2179 (arguments
2180 '(#:tests? #f ; there are no tests
2181 #:phases
2182 (modify-phases %standard-phases
2183 ;; Building the gemspec with rake is not working here since it is
2184 ;; generated with Jeweler. It is also unnecessary because the
2185 ;; existing gemspec does not use any development tools to generate a
2186 ;; list of files.
2187 (replace 'build
2188 (lambda _
2189 (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
2190 (propagated-inputs
2191 `(("ruby-ffi" ,ruby-ffi)))
2192 (native-inputs
2193 `(("ruby-yard" ,ruby-yard)))
2194 (synopsis "Ruby wrapper for Linux's inotify")
2195 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
2196 kernel subsystem for monitoring changes to files and directories.")
2197 (home-page "https://github.com/nex3/rb-inotify")
2198 (license license:expat)))
2199
2200 (define-public ruby-pry-editline
2201 (package
2202 (name "ruby-pry-editline")
2203 (version "1.1.2")
2204 (source (origin
2205 (method url-fetch)
2206 (uri (rubygems-uri "pry-editline" version))
2207 (sha256
2208 (base32
2209 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
2210 (build-system ruby-build-system)
2211 (arguments `(#:tests? #f)) ; no tests included
2212 (native-inputs
2213 `(("bundler" ,bundler)))
2214 (synopsis "Open the current REPL line in an editor")
2215 (description
2216 "This gem provides a plugin for the Ruby REPL to enable opening the
2217 current line in an external editor.")
2218 (home-page "https://github.com/tpope/pry-editline")
2219 (license license:expat)))
2220
2221 (define-public ruby-sdoc
2222 (package
2223 (name "ruby-sdoc")
2224 (version "0.4.2")
2225 (source (origin
2226 (method url-fetch)
2227 (uri (rubygems-uri "sdoc" version))
2228 (sha256
2229 (base32
2230 "0qhvy10vnmrqcgh8494m13kd5ag9c3sczzhfasv8j0294ylk679n"))))
2231 (build-system ruby-build-system)
2232 (arguments
2233 `(#:phases
2234 (modify-phases %standard-phases
2235 (add-before 'check 'set-rubylib-and-patch-gemfile
2236 (lambda _
2237 (setenv "RUBYLIB" "lib")
2238 (substitute* "sdoc.gemspec"
2239 (("s.add_runtime_dependency.*") "\n")
2240 (("s.add_dependency.*") "\n"))
2241 (substitute* "Gemfile"
2242 (("gem \"rake\".*")
2243 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
2244 #t)))))
2245 (propagated-inputs
2246 `(("ruby-json" ,ruby-json)))
2247 (native-inputs
2248 `(("bundler" ,bundler)
2249 ("ruby-minitest" ,ruby-minitest)
2250 ("ruby-hoe" ,ruby-hoe)))
2251 (synopsis "Generate searchable RDoc documentation")
2252 (description
2253 "SDoc is an RDoc documentation generator to build searchable HTML
2254 documentation for Ruby code.")
2255 (home-page "https://github.com/voloko/sdoc")
2256 (license license:expat)))
2257
2258 (define-public ruby-tins
2259 (package
2260 (name "ruby-tins")
2261 (version "1.15.0")
2262 (source (origin
2263 (method url-fetch)
2264 (uri (rubygems-uri "tins" version))
2265 (sha256
2266 (base32
2267 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
2268 (build-system ruby-build-system)
2269 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
2270 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
2271 ;; the gemspec.
2272 (arguments
2273 `(#:tests? #f ; there are no tests
2274 #:phases
2275 (modify-phases %standard-phases
2276 (replace 'build
2277 (lambda _
2278 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
2279 ;; causes an error.
2280 (substitute* "tins.gemspec"
2281 (("\"lib/spruz\", ") ""))
2282 (zero? (system* "gem" "build" "tins.gemspec")))))))
2283 (synopsis "Assorted tools for Ruby")
2284 (description "Tins is a Ruby library providing assorted tools.")
2285 (home-page "https://github.com/flori/tins")
2286 (license license:expat)))
2287
2288 (define-public ruby-gem-hadar
2289 (package
2290 (name "ruby-gem-hadar")
2291 (version "1.9.1")
2292 (source (origin
2293 (method url-fetch)
2294 (uri (rubygems-uri "gem_hadar" version))
2295 (sha256
2296 (base32
2297 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
2298 (build-system ruby-build-system)
2299 ;; This gem needs itself at development time. We disable rebuilding of the
2300 ;; gemspec to avoid this loop.
2301 (arguments
2302 `(#:tests? #f ; there are no tests
2303 #:phases
2304 (modify-phases %standard-phases
2305 (replace 'build
2306 (lambda _
2307 (zero? (system* "gem" "build" "gem_hadar.gemspec")))))))
2308 (propagated-inputs
2309 `(("git" ,git)
2310 ("ruby-tins" ,ruby-tins)
2311 ("ruby-yard" ,ruby-yard)))
2312 (synopsis "Library for the development of Ruby gems")
2313 (description
2314 "This library contains some useful functionality to support the
2315 development of Ruby gems.")
2316 (home-page "https://github.com/flori/gem_hadar")
2317 (license license:expat)))
2318
2319 (define-public ruby-minitest-tu-shim
2320 (package
2321 (name "ruby-minitest-tu-shim")
2322 (version "1.3.3")
2323 (source (origin
2324 (method url-fetch)
2325 (uri (rubygems-uri "minitest_tu_shim" version))
2326 (sha256
2327 (base32
2328 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
2329 (build-system ruby-build-system)
2330 (arguments
2331 `(#:phases
2332 (modify-phases %standard-phases
2333 (add-after 'unpack 'fix-test-include-path
2334 (lambda* (#:key inputs #:allow-other-keys)
2335 (let* ((minitest (assoc-ref inputs "ruby-minitest-4"))
2336 (minitest-home (gem-home minitest
2337 ,(package-version ruby))))
2338 (substitute* "Rakefile"
2339 (("Hoe\\.add_include_dirs .*")
2340 (string-append "Hoe.add_include_dirs \""
2341 minitest-home
2342 "/gems/minitest-"
2343 ,(package-version ruby-minitest-4)
2344 "/lib" "\""))))
2345 #t))
2346 (add-before 'check 'fix-test-assumptions
2347 (lambda _
2348 ;; The test output includes the file name, so a couple of tests
2349 ;; fail. Changing the regular expressions slightly fixes this
2350 ;; problem.
2351 (substitute* "test/test_mini_test.rb"
2352 (("output.sub!\\(.*, 'FILE:LINE'\\)")
2353 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
2354 (("gsub\\(/.*, 'FILE:LINE'\\)")
2355 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
2356 #t)))))
2357 (propagated-inputs
2358 `(("ruby-minitest-4" ,ruby-minitest-4)))
2359 (native-inputs
2360 `(("ruby-hoe" ,ruby-hoe)))
2361 (synopsis "Adapter library between minitest and test/unit")
2362 (description
2363 "This library bridges the gap between the small and fast minitest and
2364 Ruby's large and slower test/unit.")
2365 (home-page "https://rubygems.org/gems/minitest_tu_shim")
2366 (license license:expat)))
2367
2368 (define-public ruby-term-ansicolor
2369 (package
2370 (name "ruby-term-ansicolor")
2371 (version "1.6.0")
2372 (source (origin
2373 (method url-fetch)
2374 (uri (rubygems-uri "term-ansicolor" version))
2375 (sha256
2376 (base32
2377 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
2378 (build-system ruby-build-system)
2379 ;; Rebuilding the gemspec seems to require git, even though this is not a
2380 ;; git repository, so we just build the gem from the existing gemspec.
2381 (arguments
2382 `(#:phases
2383 (modify-phases %standard-phases
2384 (replace 'build
2385 (lambda _
2386 (zero? (system* "gem" "build" "term-ansicolor.gemspec")))))))
2387 (propagated-inputs
2388 `(("ruby-tins" ,ruby-tins)))
2389 (native-inputs
2390 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2391 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
2392 (synopsis "Ruby library to control the attributes of terminal output")
2393 (description
2394 "This Ruby library uses ANSI escape sequences to control the attributes
2395 of terminal output.")
2396 (home-page "http://flori.github.io/term-ansicolor/")
2397 ;; There is no mention of the "or later" clause.
2398 (license license:gpl2)))
2399
2400 (define-public ruby-pstree
2401 (package
2402 (name "ruby-pstree")
2403 (version "0.1.0")
2404 (source (origin
2405 (method url-fetch)
2406 (uri (rubygems-uri "pstree" version))
2407 (sha256
2408 (base32
2409 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
2410 (build-system ruby-build-system)
2411 (native-inputs
2412 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2413 ("bundler" ,bundler)))
2414 (synopsis "Create a process tree data structure")
2415 (description
2416 "This library uses the output of the @code{ps} command to create a
2417 process tree data structure for the current host.")
2418 (home-page "http://flori.github.com/pstree")
2419 ;; There is no mention of the "or later" clause.
2420 (license license:gpl2)))
2421
2422 (define-public ruby-utils
2423 (package
2424 (name "ruby-utils")
2425 (version "0.9.0")
2426 (source (origin
2427 (method url-fetch)
2428 (uri (rubygems-uri "utils" version))
2429 (sha256
2430 (base32
2431 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
2432 (build-system ruby-build-system)
2433 (propagated-inputs
2434 `(("ruby-tins" ,ruby-tins)
2435 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
2436 ("ruby-pstree" ,ruby-pstree)
2437 ("ruby-pry-editline" ,ruby-pry-editline)))
2438 (native-inputs
2439 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2440 ("bundler" ,bundler)))
2441 (synopsis "Command line tools for working with Ruby")
2442 (description
2443 "This package provides assorted command line tools that may be useful
2444 when working with Ruby code.")
2445 (home-page "https://github.com/flori/utils")
2446 ;; There is no mention of the "or later" clause.
2447 (license license:gpl2)))
2448
2449 (define-public ruby-json
2450 (package
2451 (name "ruby-json")
2452 (version "2.1.0")
2453 (source
2454 (origin
2455 (method url-fetch)
2456 (uri (rubygems-uri "json" version))
2457 (sha256
2458 (base32
2459 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
2460 (build-system ruby-build-system)
2461 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
2462 (synopsis "JSON library for Ruby")
2463 (description "This Ruby library provides a JSON implementation written as
2464 a native C extension.")
2465 (home-page "http://json-jruby.rubyforge.org/")
2466 (license (list license:ruby license:gpl2)))) ; GPL2 only
2467
2468 (define-public ruby-json-pure
2469 (package
2470 (name "ruby-json-pure")
2471 (version "2.1.0")
2472 (source (origin
2473 (method url-fetch)
2474 (uri (rubygems-uri "json_pure" version))
2475 (sha256
2476 (base32
2477 "12yf9fmhr4c2jm3xl20vf1qyz5i63vc8a6ngz9j0f86nqwhmi2as"))))
2478 (build-system ruby-build-system)
2479 (arguments
2480 `(#:phases
2481 (modify-phases %standard-phases
2482 (add-after 'unpack 'fix-rakefile
2483 (lambda _
2484 (substitute* "Rakefile"
2485 ;; Since this is not a git repository, do not call 'git'.
2486 (("`git ls-files`") "`find . -type f |sort`")
2487 ;; Loosen dependency constraint.
2488 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
2489 #t))
2490 (add-after 'replace-git-ls-files 'regenerate-gemspec
2491 (lambda _
2492 ;; Regenerate gemspec so loosened dependency constraints are
2493 ;; propagated.
2494 (zero? (system* "rake" "gemspec")))))))
2495 (native-inputs
2496 `(("bundler" ,bundler)
2497 ("ruby-test-unit" ,ruby-test-unit)
2498 ("ruby-simplecov" ,ruby-simplecov)))
2499 (synopsis "JSON implementation in pure Ruby")
2500 (description
2501 "This package provides a JSON implementation written in pure Ruby.")
2502 (home-page "http://flori.github.com/json")
2503 (license license:ruby)))
2504
2505 ;; Even though this package only provides bindings for a Mac OSX API it is
2506 ;; required by "ruby-listen" at runtime.
2507 (define-public ruby-rb-fsevent
2508 (package
2509 (name "ruby-rb-fsevent")
2510 (version "0.10.2")
2511 (source (origin
2512 (method url-fetch)
2513 (uri (rubygems-uri "rb-fsevent" version))
2514 (sha256
2515 (base32
2516 "1fbpmjypwxkb8r7y1kmhmyp6gawa4byw0yb3jc3dn9ly4ld9lizf"))))
2517 (build-system ruby-build-system)
2518 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
2519 ;; "listen", which needs "rb-fsevent" at runtime.
2520 (arguments `(#:tests? #f))
2521 (synopsis "FSEvents API with signals catching")
2522 (description
2523 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
2524 (home-page "https://rubygems.org/gems/rb-fsevent")
2525 (license license:expat)))
2526
2527 (define-public ruby-listen
2528 (package
2529 (name "ruby-listen")
2530 (version "3.1.5")
2531 (source
2532 (origin
2533 (method url-fetch)
2534 (uri (rubygems-uri "listen" version))
2535 (sha256
2536 (base32
2537 "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx"))))
2538 (build-system ruby-build-system)
2539 (arguments '(#:tests? #f)) ; no tests
2540 (propagated-inputs
2541 `(("ruby-rb-inotify" ,ruby-rb-inotify)
2542 ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
2543 (synopsis "Listen to file modifications")
2544 (description "The Listen gem listens to file modifications and notifies
2545 you about the changes.")
2546 (home-page "https://github.com/guard/listen")
2547 (license license:expat)))
2548
2549 (define-public ruby-activesupport
2550 (package
2551 (name "ruby-activesupport")
2552 (version "5.1.4")
2553 (source
2554 (origin
2555 (method url-fetch)
2556 (uri (rubygems-uri "activesupport" version))
2557 (sha256
2558 (base32
2559 "0sgf4rsfr7jcaqsx0wwzx4l4k9xsjlwv0mzl08pxiyp1qzyx8scr"))))
2560 (build-system ruby-build-system)
2561 (arguments
2562 `(#:phases
2563 (modify-phases %standard-phases
2564 (replace 'check
2565 (lambda _
2566 ;; There is no tests, instead attempt to load the library.
2567 (zero? (system* "ruby" "-Ilib" "-r" "active_support")))))))
2568 (propagated-inputs
2569 `(("ruby-concurrent" ,ruby-concurrent)
2570 ("ruby-i18n" ,ruby-i18n)
2571 ("ruby-minitest" ,ruby-minitest)
2572 ("ruby-tzinfo" ,ruby-tzinfo)
2573 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
2574 (synopsis "Ruby on Rails utility library")
2575 (description "ActiveSupport is a toolkit of support libraries and Ruby
2576 core extensions extracted from the Rails framework. It includes support for
2577 multibyte strings, internationalization, time zones, and testing.")
2578 (home-page "http://www.rubyonrails.org")
2579 (license license:expat)))
2580
2581 (define-public ruby-crass
2582 (package
2583 (name "ruby-crass")
2584 (version "1.0.2")
2585 (source (origin
2586 (method url-fetch)
2587 (uri (rubygems-uri "crass" version))
2588 (sha256
2589 (base32
2590 "1c377r8g7m58y22803iyjgqkkvnnii0pymskda1pardxrzaighj9"))))
2591 (build-system ruby-build-system)
2592 (native-inputs
2593 `(("bundler" ,bundler)
2594 ("ruby-minitest" ,ruby-minitest)))
2595 (synopsis "Pure Ruby CSS parser")
2596 (description
2597 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
2598 (home-page "https://github.com/rgrove/crass/")
2599 (license license:expat)))
2600
2601 (define-public ruby-nokogumbo
2602 (let ((commit "fb51ff299a1c34346837580b6d1d9a60fadf5dbd"))
2603 (package
2604 (name "ruby-nokogumbo")
2605 (version (string-append "1.4.7-1." (string-take commit 8)))
2606 (source (origin
2607 ;; We use the git reference, because there's no Rakefile in the
2608 ;; published gem and the tarball on Github is outdated.
2609 (method git-fetch)
2610 (uri (git-reference
2611 (url "https://github.com/rubys/nokogumbo.git")
2612 (commit "d56f954d20a")))
2613 (file-name (string-append name "-" version "-checkout"))
2614 (sha256
2615 (base32
2616 "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
2617 (build-system ruby-build-system)
2618 (arguments
2619 `(#:modules ((guix build ruby-build-system)
2620 (guix build utils)
2621 (ice-9 rdelim))
2622 #:phases
2623 (modify-phases %standard-phases
2624 (add-after 'unpack 'build-gemspec
2625 (lambda _
2626 (substitute* "Rakefile"
2627 ;; Build Makefile even without a copy of gumbo-parser sources
2628 (("'gumbo-parser/src',") "")
2629 ;; We don't bundle gumbo-parser sources
2630 (("'gumbo-parser/src/\\*',") "")
2631 (("'gumbo-parser/visualc/include/\\*',") "")
2632 ;; The definition of SOURCES will be cut in gemspec, and
2633 ;; "FileList" will be undefined.
2634 (("SOURCES \\+ FileList\\[")
2635 "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
2636
2637 ;; Copy the Rakefile and cut out the gemspec.
2638 (copy-file "Rakefile" ".gemspec")
2639 (with-atomic-file-replacement ".gemspec"
2640 (lambda (in out)
2641 (let loop ((line (read-line in 'concat))
2642 (skipping? #t))
2643 (if (eof-object? line)
2644 #t
2645 (let ((skip-next? (if skipping?
2646 (not (string-prefix? "SPEC =" line))
2647 (string-prefix? "end" line))))
2648 (when (or (not skipping?)
2649 (and skipping? (not skip-next?)))
2650 (format #t "~a" line)
2651 (display line out))
2652 (loop (read-line in 'concat) skip-next?))))))
2653 #t)))))
2654 (inputs
2655 `(("gumbo-parser" ,gumbo-parser)))
2656 (propagated-inputs
2657 `(("ruby-nokogiri" ,ruby-nokogiri)))
2658 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
2659 (description
2660 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
2661 access the result as a Nokogiri parsed document.")
2662 (home-page "https://github.com/rubys/nokogumbo/")
2663 (license license:asl2.0))))
2664
2665 (define-public ruby-sanitize
2666 (package
2667 (name "ruby-sanitize")
2668 (version "4.0.0")
2669 (source (origin
2670 (method url-fetch)
2671 ;; The gem does not include the Rakefile, so we download the
2672 ;; release tarball from Github.
2673 (uri (string-append "https://github.com/rgrove/"
2674 "sanitize/archive/v" version ".tar.gz"))
2675 (file-name (string-append name "-" version ".tar.gz"))
2676 (sha256
2677 (base32
2678 "055xnj38l60gxnnng76kpy2l2jbrp0byjdyq17jw79w7l4b40znr"))))
2679 (build-system ruby-build-system)
2680 (propagated-inputs
2681 `(("ruby-crass" ,ruby-crass)
2682 ("ruby-nokogiri" ,ruby-nokogiri)
2683 ("ruby-nokogumbo" ,ruby-nokogumbo)))
2684 (native-inputs
2685 `(("bundler" ,bundler)
2686 ("ruby-minitest" ,ruby-minitest)
2687 ("ruby-redcarpet" ,ruby-redcarpet)
2688 ("ruby-yard" ,ruby-yard)))
2689 (synopsis "Whitelist-based HTML and CSS sanitizer")
2690 (description
2691 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
2692 acceptable elements, attributes, and CSS properties, Sanitize will remove all
2693 unacceptable HTML and/or CSS from a string.")
2694 (home-page "https://github.com/rgrove/sanitize/")
2695 (license license:expat)))
2696
2697 (define-public ruby-ox
2698 (package
2699 (name "ruby-ox")
2700 (version "2.6.0")
2701 (source
2702 (origin
2703 (method url-fetch)
2704 (uri (rubygems-uri "ox" version))
2705 (sha256
2706 (base32
2707 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
2708 (build-system ruby-build-system)
2709 (arguments
2710 '(#:tests? #f)) ; no tests
2711 (synopsis "Optimized XML library for Ruby")
2712 (description
2713 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
2714 written as a native C extension. It was designed to be an alternative to
2715 Nokogiri and other Ruby XML parsers for generic XML parsing and as an
2716 alternative to Marshal for Object serialization. ")
2717 (home-page "http://www.ohler.com/ox")
2718 (license license:expat)))
2719
2720 (define-public ruby-redcloth
2721 (package
2722 (name "ruby-redcloth")
2723 (version "4.3.2")
2724 (source (origin
2725 (method url-fetch)
2726 (uri (rubygems-uri "RedCloth" version))
2727 (sha256
2728 (base32
2729 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
2730 (build-system ruby-build-system)
2731 (arguments
2732 `(#:tests? #f ; no tests
2733 #:phases
2734 (modify-phases %standard-phases
2735 ;; Redcloth has complicated rake tasks to build various versions for
2736 ;; multiple targets using RVM. We don't want this so we just use the
2737 ;; existing gemspec.
2738 (replace 'build
2739 (lambda _
2740 (zero? (system* "gem" "build" "redcloth.gemspec"))))
2741 ;; Make sure that the "redcloth" executable finds required Ruby
2742 ;; libraries.
2743 (add-after 'install 'wrap-bin-redcloth
2744 (lambda* (#:key outputs #:allow-other-keys)
2745 (wrap-program (string-append (assoc-ref outputs "out")
2746 "/bin/redcloth")
2747 `("GEM_HOME" ":" prefix (,(getenv "GEM_HOME"))))
2748 #t)))))
2749 (native-inputs
2750 `(("bundler" ,bundler)
2751 ("ruby-diff-lcs" ,ruby-diff-lcs)
2752 ("ruby-rspec-2" ,ruby-rspec-2)))
2753 (synopsis "Textile markup language parser for Ruby")
2754 (description
2755 "RedCloth is a Ruby parser for the Textile markup language.")
2756 (home-page "http://redcloth.org")
2757 (license license:expat)))
2758
2759 (define-public ruby-pg
2760 (package
2761 (name "ruby-pg")
2762 (version "0.21.0")
2763 (source
2764 (origin
2765 (method url-fetch)
2766 (uri (rubygems-uri "pg" version))
2767 (sha256
2768 (base32
2769 "00vhasqwc4f98qb4wxqn2h07fjwzhp5lwyi41j2gndi2g02wrdqh"))))
2770 (build-system ruby-build-system)
2771 (arguments
2772 '(#:test-target "spec"))
2773 (native-inputs
2774 `(("ruby-rake-compiler" ,ruby-rake-compiler)
2775 ("ruby-hoe" ,ruby-hoe)
2776 ("ruby-rspec" ,ruby-rspec)))
2777 (inputs
2778 `(("postgresql" ,postgresql)))
2779 (synopsis "Ruby interface to PostgreSQL")
2780 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
2781 with PostgreSQL 8.4 and later.")
2782 (home-page "https://bitbucket.org/ged/ruby-pg")
2783 (license license:ruby)))
2784
2785 (define-public ruby-byebug
2786 (package
2787 (name "ruby-byebug")
2788 (version "9.0.6")
2789 (source
2790 (origin
2791 (method url-fetch)
2792 (uri (rubygems-uri "byebug" version))
2793 (sha256
2794 (base32
2795 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
2796 (build-system ruby-build-system)
2797 (arguments
2798 '(#:tests? #f)) ; no tests
2799 (synopsis "Debugger for Ruby 2")
2800 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
2801 TracePoint C API for execution control and the Debug Inspector C API for call
2802 stack navigation. The core component provides support that front-ends can
2803 build on. It provides breakpoint handling and bindings for stack frames among
2804 other things and it comes with a command line interface.")
2805 (home-page "https://github.com/deivid-rodriguez/byebug")
2806 (license license:bsd-2)))
2807
2808 (define-public ruby-netrc
2809 (package
2810 (name "ruby-netrc")
2811 (version "0.11.0")
2812 (source (origin
2813 (method url-fetch)
2814 (uri (rubygems-uri "netrc" version))
2815 (sha256
2816 (base32
2817 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
2818 (build-system ruby-build-system)
2819 (arguments
2820 `(#:phases
2821 (modify-phases %standard-phases
2822 (replace 'check
2823 ;; There is no Rakefile and minitest can only run one file at once,
2824 ;; so we have to iterate over all test files.
2825 (lambda _
2826 (and (map (lambda (file)
2827 (zero? (system* "ruby" "-Itest" file)))
2828 (find-files "./test" "test_.*\\.rb"))))))))
2829 (native-inputs
2830 `(("ruby-minitest" ,ruby-minitest)))
2831 (synopsis "Library to read and update netrc files")
2832 (description
2833 "This library can read and update netrc files, preserving formatting
2834 including comments and whitespace.")
2835 (home-page "https://github.com/geemus/netrc")
2836 (license license:expat)))
2837
2838 (define-public ruby-unf-ext
2839 (package
2840 (name "ruby-unf-ext")
2841 (version "0.0.7.1")
2842 (source (origin
2843 (method url-fetch)
2844 (uri (rubygems-uri "unf_ext" version))
2845 (sha256
2846 (base32
2847 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
2848 (build-system ruby-build-system)
2849 (arguments
2850 `(#:phases
2851 (modify-phases %standard-phases
2852 (add-after 'build 'build-ext
2853 (lambda _ (zero? (system* "rake" "compile:unf_ext")))))))
2854 (native-inputs
2855 `(("bundler" ,bundler)
2856 ("ruby-rake-compiler" ,ruby-rake-compiler)
2857 ("ruby-test-unit" ,ruby-test-unit)))
2858 (synopsis "Unicode normalization form support library")
2859 (description
2860 "This package provides unicode normalization form support for Ruby.")
2861 (home-page "https://github.com/knu/ruby-unf_ext")
2862 (license license:expat)))
2863
2864 (define-public ruby-tdiff
2865 ;; Use a newer than released snapshot so that rspec-2 is not required.
2866 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
2867 (package
2868 (name "ruby-tdiff")
2869 (version (string-append "0.3.3-1." (string-take commit 8)))
2870 (source (origin
2871 (method git-fetch)
2872 (uri (git-reference
2873 (url "https://github.com/postmodern/tdiff.git")
2874 (commit commit)))
2875 (file-name (string-append name "-" version "-checkout"))
2876 (sha256
2877 (base32
2878 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
2879 (build-system ruby-build-system)
2880 (native-inputs
2881 `(("ruby-rspec" ,ruby-rspec)
2882 ("ruby-yard" ,ruby-yard)
2883 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
2884 (synopsis "Calculate the differences between two tree-like structures")
2885 (description
2886 "This library provides functions to calculate the differences between two
2887 tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
2888 (home-page "https://github.com/postmodern/tdiff")
2889 (license license:expat))))
2890
2891 (define-public ruby-nokogiri-diff
2892 ;; Use a newer than released snapshot so that rspec-2 is not required.
2893 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
2894 (package
2895 (name "ruby-nokogiri-diff")
2896 (version (string-append "0.2.0-1." (string-take commit 8)))
2897 (source (origin
2898 (method git-fetch)
2899 (uri (git-reference
2900 (url "https://github.com/postmodern/nokogiri-diff.git")
2901 (commit commit)))
2902 (file-name (string-append name "-" version "-checkout"))
2903 (sha256
2904 (base32
2905 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
2906 (build-system ruby-build-system)
2907 (propagated-inputs
2908 `(("ruby-tdiff" ,ruby-tdiff)
2909 ("ruby-nokogiri" ,ruby-nokogiri)))
2910 (native-inputs
2911 `(("ruby-rspec" ,ruby-rspec)
2912 ("ruby-yard" ,ruby-yard)
2913 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
2914 (synopsis "Calculate the differences between two XML/HTML documents")
2915 (description
2916 "@code{Nokogiri::Diff} adds the ability to calculate the
2917 differences (added or removed nodes) between two XML/HTML documents.")
2918 (home-page "https://github.com/postmodern/nokogiri-diff")
2919 (license license:expat))))
2920
2921 (define-public ruby-rack
2922 (package
2923 (name "ruby-rack")
2924 (version "2.0.3")
2925 (source
2926 (origin
2927 (method url-fetch)
2928 ;; Download from GitHub so that the patch can be applied.
2929 (uri (string-append
2930 "https://github.com/rack/rack/archive/"
2931 version
2932 ".tar.gz"))
2933 (file-name (string-append name "-" version ".tar.gz"))
2934 (sha256
2935 (base32
2936 "12bnqrcg43x9hsswjqg31qqwk8cwj2fh0d2m179y20bjghhn54kx"))
2937 ;; Ignore test which fails inside the build environment but works
2938 ;; outside.
2939 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
2940 (build-system ruby-build-system)
2941 (arguments
2942 '(#:phases
2943 (modify-phases %standard-phases
2944 (add-before 'check 'fix-tests
2945 (lambda _
2946 ;; A few of the tests use the length of a file on disk for
2947 ;; Content-Length and Content-Range headers. However, this file
2948 ;; has a shebang in it which an earlier phase patches, growing
2949 ;; the file size from 193 to 239 bytes when the store prefix is
2950 ;; "/gnu/store".
2951 (let ((size-diff (- (string-length (which "ruby"))
2952 (string-length "/usr/bin/env ruby"))))
2953 (substitute* '("test/spec_file.rb")
2954 (("193")
2955 (number->string (+ 193 size-diff)))
2956 (("bytes(.)22-33" all delimiter)
2957 (string-append "bytes"
2958 delimiter
2959 (number->string (+ 22 size-diff))
2960 "-"
2961 (number->string (+ 33 size-diff))))))
2962 #t)))))
2963 (native-inputs
2964 `(("ruby-minitest" ,ruby-minitest)
2965 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
2966 ("which" ,which)))
2967 (propagated-inputs
2968 `(("ruby-concurrent" ,ruby-concurrent)))
2969 (synopsis "Unified web application interface for Ruby")
2970 (description "Rack provides a minimal, modular and adaptable interface for
2971 developing web applications in Ruby. By wrapping HTTP requests and responses,
2972 it unifies the API for web servers, web frameworks, and software in between
2973 into a single method call.")
2974 (home-page "http://rack.github.io/")
2975 (license license:expat)))
2976
2977 (define-public ruby-docile
2978 (package
2979 (name "ruby-docile")
2980 (version "1.1.5")
2981 (source
2982 (origin
2983 (method url-fetch)
2984 (uri (rubygems-uri "docile" version))
2985 (sha256
2986 (base32
2987 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
2988 (build-system ruby-build-system)
2989 (arguments
2990 '(#:tests? #f)) ; needs github-markup, among others
2991 (synopsis "Ruby EDSL helper library")
2992 (description "Docile is a Ruby library that provides an interface for
2993 creating embedded domain specific languages (EDSLs) that manipulate existing
2994 Ruby classes.")
2995 (home-page "https://ms-ati.github.io/docile/")
2996 (license license:expat)))
2997
2998 (define-public ruby-gherkin
2999 (package
3000 (name "ruby-gherkin")
3001 (version "4.1.3")
3002 (source
3003 (origin
3004 (method url-fetch)
3005 (uri (rubygems-uri "gherkin" version))
3006 (sha256
3007 (base32
3008 "1d18r8mf2qyd9jbq9xxvca8adyysdzvwdy8v9c2s5hrd6p02kg79"))))
3009 (build-system ruby-build-system)
3010 (native-inputs
3011 `(("bundler" ,bundler)))
3012 (arguments
3013 '(#:tests? #f)) ; needs simplecov, among others
3014 (synopsis "Gherkin parser for Ruby")
3015 (description "Gherkin is a parser and compiler for the Gherkin language.
3016 It is intended be used by all Cucumber implementations to parse '.feature'
3017 files.")
3018 (home-page "https://github.com/cucumber/gherkin3")
3019 (license license:expat)))
3020
3021 (define-public ruby-cucumber-core
3022 (package
3023 (name "ruby-cucumber-core")
3024 (version "2.0.0")
3025 (source
3026 (origin
3027 (method url-fetch)
3028 (uri (rubygems-uri "cucumber-core" version))
3029 (sha256
3030 (base32
3031 "136hnvqv444qyxzcgy1k60y4i6cn3sn9lbqr4wan9dzz1yzllqbm"))))
3032 (build-system ruby-build-system)
3033 (propagated-inputs
3034 `(("ruby-gherkin" ,ruby-gherkin)))
3035 (native-inputs
3036 `(("bundler" ,bundler)))
3037 (arguments
3038 '(#:tests? #f)) ; needs simplecov, among others
3039 (synopsis "Core library for the Cucumber BDD app")
3040 (description "Cucumber is a tool for running automated tests
3041 written in plain language. Because they're written in plain language,
3042 they can be read by anyone on your team. Because they can be read by
3043 anyone, you can use them to help improve communication, collaboration
3044 and trust on your team.")
3045 (home-page "https://cucumber.io/")
3046 (license license:expat)))
3047
3048 (define-public ruby-bio-logger
3049 (package
3050 (name "ruby-bio-logger")
3051 (version "1.0.1")
3052 (source
3053 (origin
3054 (method url-fetch)
3055 (uri (rubygems-uri "bio-logger" version))
3056 (sha256
3057 (base32
3058 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
3059 (build-system ruby-build-system)
3060 (arguments
3061 `(#:tests? #f)) ; rake errors, missing shoulda
3062 (propagated-inputs
3063 `(("ruby-log4r" ,ruby-log4r)))
3064 (synopsis "Log4r wrapper for Ruby")
3065 (description "Bio-logger is a wrapper around Log4r adding extra logging
3066 features such as filtering and fine grained logging.")
3067 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
3068 (license license:expat)))
3069
3070 (define-public ruby-yard
3071 (package
3072 (name "ruby-yard")
3073 (version "0.9.6")
3074 (source
3075 (origin
3076 (method url-fetch)
3077 ;; Tests do not pass if we build from the distributed gem.
3078 (uri (string-append "https://github.com/lsegal/yard/archive/v"
3079 version ".tar.gz"))
3080 (file-name (string-append name "-" version ".tar.gz"))
3081 (sha256
3082 (base32
3083 "0rsz4bghgx7fryzyhlz8wlnd2m9xgyvf1xhrq58mnzfrrfm41bdg"))))
3084 (build-system ruby-build-system)
3085 (arguments
3086 `(#:phases
3087 (modify-phases %standard-phases
3088 (replace 'check
3089 (lambda _
3090 ;; $HOME needs to be set to somewhere writeable for tests to run
3091 (setenv "HOME" "/tmp")
3092 ;; Run tests without using 'rake' to avoid dependencies.
3093 (zero? (system* "rspec")))))))
3094 (native-inputs
3095 `(("ruby-rspec" ,ruby-rspec)
3096 ("ruby-rack" ,ruby-rack)))
3097 (synopsis "Documentation generation tool for Ruby")
3098 (description
3099 "YARD is a documentation generation tool for the Ruby programming
3100 language. It enables the user to generate consistent, usable documentation
3101 that can be exported to a number of formats very easily, and also supports
3102 extending for custom Ruby constructs such as custom class level definitions.")
3103 (home-page "http://yardoc.org")
3104 (license license:expat)))
3105
3106 (define-public ruby-clap
3107 (package
3108 (name "ruby-clap")
3109 (version "1.0.0")
3110 (source (origin
3111 (method url-fetch)
3112 (uri (rubygems-uri "clap" version))
3113 (sha256
3114 (base32
3115 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
3116 (build-system ruby-build-system)
3117 ;; Clap needs cutest for running tests, but cutest needs clap.
3118 (arguments `(#:tests? #f))
3119 (synopsis "Command line argument parsing for simple applications")
3120 (description
3121 "Clap provides command line argument parsing features. It covers the
3122 simple case of executing code based on the flags or parameters passed.")
3123 (home-page "https://github.com/djanowski/cutest")
3124 (license license:expat)))
3125
3126 (define-public ruby-cutest
3127 (package
3128 (name "ruby-cutest")
3129 (version "1.2.2")
3130 (source (origin
3131 (method url-fetch)
3132 (uri (rubygems-uri "cutest" version))
3133 (sha256
3134 (base32
3135 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
3136 (build-system ruby-build-system)
3137 (propagated-inputs
3138 `(("ruby-clap" ,ruby-clap)))
3139 (synopsis "Run tests in separate processes")
3140 (description
3141 "Cutest runs tests in separate processes to avoid shared state.")
3142 (home-page "https://github.com/djanowski/cutest")
3143 (license license:expat)))
3144
3145 (define-public ruby-pygmentize
3146 (package
3147 (name "ruby-pygmentize")
3148 (version "0.0.3")
3149 (source (origin
3150 (method url-fetch)
3151 (uri (rubygems-uri "pygmentize" version))
3152 (sha256
3153 (base32
3154 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
3155 (build-system ruby-build-system)
3156 (arguments
3157 `(#:phases
3158 (modify-phases %standard-phases
3159 (add-after 'unpack 'fix-pygmentize-path
3160 (lambda _
3161 (substitute* "lib/pygmentize.rb"
3162 (("\"/usr/bin/env python.*")
3163 (string-append "\"" (which "pygmentize") "\"\n")))
3164 #t))
3165 (add-after 'build 'do-not-use-vendor-directory
3166 (lambda _
3167 ;; Remove bundled pygments sources
3168 ;; FIXME: ruby-build-system does not support snippets.
3169 (delete-file-recursively "vendor")
3170 (substitute* "pygmentize.gemspec"
3171 (("\"vendor/\\*\\*/\\*\",") ""))
3172 #t)))))
3173 (inputs
3174 `(("pygments" ,python-pygments)))
3175 (native-inputs
3176 `(("ruby-cutest" ,ruby-cutest)
3177 ("ruby-nokogiri" ,ruby-nokogiri)))
3178 (synopsis "Thin Ruby wrapper around pygmentize")
3179 (description
3180 "Pygmentize provides a simple way to call pygmentize from within a Ruby
3181 application.")
3182 (home-page "https://github.com/djanowski/pygmentize")
3183 (license license:expat)))
3184
3185 (define-public ruby-eventmachine
3186 (package
3187 (name "ruby-eventmachine")
3188 (version "1.2.5")
3189 (source
3190 (origin
3191 (method url-fetch)
3192 (uri (rubygems-uri "eventmachine" version))
3193 (sha256
3194 (base32
3195 "075hdw0fgzldgss3xaqm2dk545736khcvv1fmzbf1sgdlkyh1v8z"))))
3196 (build-system ruby-build-system)
3197 (arguments
3198 '(#:tests? #f)) ; test suite tries to connect to google.com
3199 (native-inputs
3200 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
3201 (synopsis "Single-threaded network event framework for Ruby")
3202 (description
3203 "EventMachine implements a single-threaded engine for arbitrary network
3204 communications. EventMachine wraps all interactions with sockets, allowing
3205 programs to concentrate on the implementation of network protocols. It can be
3206 used to create both network servers and clients.")
3207 (home-page "http://rubyeventmachine.com")
3208 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
3209
3210 (define-public ruby-turn
3211 (package
3212 (name "ruby-turn")
3213 (version "0.9.7")
3214 (source
3215 (origin
3216 (method url-fetch)
3217 (uri (rubygems-uri "turn" version))
3218 (sha256
3219 (base32
3220 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
3221 (build-system ruby-build-system)
3222 (arguments
3223 `(#:phases
3224 (modify-phases %standard-phases
3225 ;; Tests fail because turn changes its environment so can no longer
3226 ;; find test/unit. Instead simply test if the executable runs
3227 ;; without issue.
3228 (replace 'check
3229 (lambda _
3230 (zero? (system* "ruby" "-Ilib" "bin/turn" "-h")))))))
3231 (propagated-inputs
3232 `(("ruby-ansi" ,ruby-ansi)
3233 ("ruby-minitest" ,ruby-minitest-4)))
3234 (synopsis "Alternate set of alternative runners for MiniTest")
3235 (description
3236 "TURN provides a set of alternative runners for MiniTest which are both
3237 colorful and informative. TURN displays each test on a separate line with
3238 failures being displayed immediately instead of at the end of the tests. Note
3239 that TURN is no longer being maintained.")
3240 (home-page "http://rubygems.org/gems/turn")
3241 (license license:expat)))
3242
3243 (define-public ruby-mime-types-data
3244 (package
3245 (name "ruby-mime-types-data")
3246 (version "3.2016.0521")
3247 (source
3248 (origin
3249 (method url-fetch)
3250 (uri (rubygems-uri "mime-types-data" version))
3251 (sha256
3252 (base32
3253 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
3254 (build-system ruby-build-system)
3255 (native-inputs
3256 `(("ruby-hoe" ,ruby-hoe)))
3257 (synopsis "Registry for information about MIME media type definitions")
3258 (description
3259 "@code{mime-types-data} provides a registry for information about
3260 Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
3261 be used with the Ruby mime-types library or other software to determine
3262 defined filename extensions for MIME types, or to use filename extensions to
3263 look up the likely MIME type definitions.")
3264 (home-page "https://github.com/mime-types/mime-types-data/")
3265 (license license:expat)))
3266
3267 (define-public ruby-mime-types
3268 (package
3269 (name "ruby-mime-types")
3270 (version "3.1")
3271 (source
3272 (origin
3273 (method url-fetch)
3274 (uri (rubygems-uri "mime-types" version))
3275 (sha256
3276 (base32
3277 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
3278 (build-system ruby-build-system)
3279 (propagated-inputs
3280 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
3281 (native-inputs
3282 `(("ruby-hoe" ,ruby-hoe)
3283 ("ruby-fivemat" ,ruby-fivemat)
3284 ("ruby-minitest-focus" ,ruby-minitest-focus)
3285 ("ruby-minitest-rg" ,ruby-minitest-rg)
3286 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
3287 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
3288 (synopsis "Library and registry for MIME content type definitions")
3289 (description "The mime-types library provides a library and registry for
3290 information about Multipurpose Internet Mail Extensions (MIME) content type
3291 definitions. It can be used to determine defined filename extensions for MIME
3292 types, or to use filename extensions to look up the likely MIME type
3293 definitions.")
3294 (home-page "https://github.com/mime-types/ruby-mime-types")
3295 (license license:expat)))
3296
3297 (define-public ruby-fivemat
3298 (package
3299 (name "ruby-fivemat")
3300 (version "1.3.5")
3301 (source
3302 (origin
3303 (method url-fetch)
3304 (uri (rubygems-uri "fivemat" version))
3305 (sha256
3306 (base32
3307 "0ij7n250gk5c1g34rsbwjnpcv64gk4vsas8lkz8fac4wbygvk6z1"))))
3308 (build-system ruby-build-system)
3309 (arguments
3310 `(#:tests? #f)) ; no tests
3311 (synopsis "Each test file given its own line of dots")
3312 (description
3313 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
3314 its own line of dots during testing. It aims to provide test output that is
3315 neither too verbose nor too minimal.")
3316 (home-page "https://github.com/tpope/fivemat")
3317 (license license:expat)))
3318
3319 (define-public ruby-sqlite3
3320 (package
3321 (name "ruby-sqlite3")
3322 (version "1.3.13")
3323 (source
3324 (origin
3325 (method url-fetch)
3326 (uri (rubygems-uri "sqlite3" version))
3327 (sha256
3328 (base32
3329 "01ifzp8nwzqppda419c9wcvr8n82ysmisrs0hph9pdmv1lpa4f5i"))))
3330 (build-system ruby-build-system)
3331 (arguments
3332 `(#:phases
3333 (modify-phases %standard-phases
3334 (add-before 'check 'add-gemtest-file
3335 ;; This file exists in the repository but is not distributed.
3336 (lambda _ (zero? (system* "touch" ".gemtest")))))))
3337 (inputs
3338 `(("sqlite" ,sqlite)))
3339 (native-inputs
3340 `(("ruby-hoe" ,ruby-hoe)
3341 ("ruby-rake-compiler" ,ruby-rake-compiler)
3342 ("ruby-mini-portile" ,ruby-mini-portile)))
3343 (synopsis "Interface with SQLite3 databases")
3344 (description
3345 "This module allows Ruby programs to interface with the SQLite3 database
3346 engine.")
3347 (home-page
3348 "https://github.com/sparklemotion/sqlite3-ruby")
3349 (license license:bsd-3)))
3350
3351 (define-public ruby-shoulda-context
3352 (package
3353 (name "ruby-shoulda-context")
3354 (version "1.2.2")
3355 (source
3356 (origin
3357 (method url-fetch)
3358 (uri (rubygems-uri "shoulda-context" version))
3359 (sha256
3360 (base32
3361 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
3362 (build-system ruby-build-system)
3363 (arguments
3364 `(#:phases
3365 (modify-phases %standard-phases
3366 (replace 'check
3367 (lambda _
3368 ;; Do not run tests to avoid circular dependence with rails.
3369 ;; Instead just import the library to test.
3370 (zero? (system* "ruby" "-Ilib" "-r" "shoulda-context")))))))
3371 (synopsis "Test::Unit context framework extracted from Shoulda")
3372 (description
3373 "@code{shoulda-context} is the context framework extracted from Shoulda.
3374 Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
3375 context, setup, and should blocks combine to produce natural test method
3376 names.")
3377 (home-page "https://github.com/thoughtbot/shoulda-context")
3378 (license license:expat)))
3379
3380 (define-public ruby-shoulda-matchers
3381 (package
3382 (name "ruby-shoulda-matchers")
3383 (version "3.1.2")
3384 (source
3385 (origin
3386 (method url-fetch)
3387 (uri (rubygems-uri "shoulda-matchers" version))
3388 (sha256
3389 (base32
3390 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
3391 (build-system ruby-build-system)
3392 (arguments
3393 `(#:phases
3394 (modify-phases %standard-phases
3395 (replace 'check
3396 (lambda _
3397 ;; Do not run tests to avoid circular dependence with rails. Instead
3398 ;; just import the library to test.
3399 (zero? (system* "ruby" "-Ilib" "-r" "shoulda-matchers")))))))
3400 (propagated-inputs
3401 `(("ruby-activesupport" ,ruby-activesupport)))
3402 (synopsis "Collection of testing matchers extracted from Shoulda")
3403 (description
3404 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
3405 test common Rails functionality. These tests would otherwise be much longer,
3406 more complex, and error-prone.")
3407 (home-page "https://github.com/thoughtbot/shoulda-matchers")
3408 (license license:expat)))
3409
3410 (define-public ruby-shoulda-matchers-2
3411 (package
3412 (inherit ruby-shoulda-matchers)
3413 (version "2.8.0")
3414 (source (origin
3415 (method url-fetch)
3416 (uri (rubygems-uri "shoulda-matchers" version))
3417 (sha256
3418 (base32
3419 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
3420
3421 (define-public ruby-shoulda
3422 (package
3423 (name "ruby-shoulda")
3424 (version "3.5.0")
3425 (source
3426 (origin
3427 (method url-fetch)
3428 (uri (rubygems-uri "shoulda" version))
3429 (sha256
3430 (base32
3431 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
3432 (build-system ruby-build-system)
3433 (arguments
3434 `(#:phases
3435 (modify-phases %standard-phases
3436 (replace 'check
3437 ;; Don't run tests to avoid circular dependence with rails. Instead
3438 ;; just import the library to test.
3439 (lambda _ (zero? (system* "ruby" "-Ilib" "-r" "shoulda")))))))
3440 (propagated-inputs
3441 `(("ruby-shoulda-context" ,ruby-shoulda-context)
3442 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
3443 (synopsis "Context framework and matchers for testing")
3444 (description
3445 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
3446 @code{shoulda-matchers} providing tools for writing tests.")
3447 (home-page "https://github.com/thoughtbot/shoulda")
3448 (license license:expat)))
3449
3450 (define-public ruby-unf
3451 (package
3452 (name "ruby-unf")
3453 (version "0.1.4")
3454 (source
3455 (origin
3456 (method url-fetch)
3457 (uri (rubygems-uri "unf" version))
3458 (sha256
3459 (base32
3460 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
3461 (build-system ruby-build-system)
3462 (arguments
3463 `(#:phases
3464 (modify-phases %standard-phases
3465 (add-before 'check 'add-dependency-to-bundler
3466 (lambda _
3467 ;; test-unit is required but not provided by the bundler
3468 ;; environment. This is fixed in the upstream repository but fix
3469 ;; has not been released.
3470 (substitute* "Gemfile"
3471 (("^gemspec") "gem 'test-unit'\ngemspec"))
3472 #t)))))
3473 (propagated-inputs
3474 `(("ruby-unf-ext" ,ruby-unf-ext)))
3475 (native-inputs
3476 `(("ruby-shoulda" ,ruby-shoulda)
3477 ("bundler" ,bundler)
3478 ("ruby-test-unit" ,ruby-test-unit)))
3479 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
3480 (description
3481 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
3482 support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
3483 @code{java.text.Normalizer} on JRuby.")
3484 (home-page "https://github.com/knu/ruby-unf")
3485 (license license:bsd-2)))
3486
3487 (define-public ruby-domain-name
3488 (package
3489 (name "ruby-domain-name")
3490 (version "0.5.20170404")
3491 (source
3492 (origin
3493 (method url-fetch)
3494 (uri (rubygems-uri "domain_name" version))
3495 (sha256
3496 (base32
3497 "12hs8yijhak7p2hf1xkh98g0mnp5phq3mrrhywzaxpwz1gw5r3kf"))))
3498 (build-system ruby-build-system)
3499 (arguments
3500 `(#:phases
3501 (modify-phases %standard-phases
3502 (add-before 'check 'fix-versions
3503 (lambda _
3504 ;; Fix NameError that appears to already be fixed upstream.
3505 (substitute* "Rakefile"
3506 (("DomainName::VERSION")
3507 "Bundler::GemHelper.gemspec.version"))
3508 ;; Loosen unnecessarily strict test-unit version specification.
3509 (substitute* "domain_name.gemspec"
3510 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
3511 #t)))))
3512 (propagated-inputs
3513 `(("ruby-unf" ,ruby-unf)))
3514 (native-inputs
3515 `(("ruby-shoulda" ,ruby-shoulda)
3516 ("bundler" ,bundler)
3517 ("ruby-test-unit" ,ruby-test-unit)))
3518 (synopsis "Domain name manipulation library")
3519 (description
3520 "@code{domain_name} is a Domain name manipulation library. It parses a
3521 domain name ready for extracting the registered domain and TLD (Top Level
3522 Domain). It can also be used for cookie domain validation based on the Public
3523 Suffix List.")
3524 (home-page "https://github.com/knu/ruby-domain_name")
3525 (license license:bsd-2)))
3526
3527 (define-public ruby-http-cookie
3528 (package
3529 (name "ruby-http-cookie")
3530 (version "1.0.3")
3531 (source
3532 (origin
3533 (method url-fetch)
3534 (uri (rubygems-uri "http-cookie" version))
3535 (sha256
3536 (base32
3537 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
3538 (build-system ruby-build-system)
3539 (arguments
3540 `(#:phases
3541 (modify-phases %standard-phases
3542 (add-before 'check 'add-dependency-to-bundler
3543 (lambda _
3544 ;; Fix NameError
3545 (substitute* "Rakefile"
3546 (("HTTP::Cookie::VERSION")
3547 "Bundler::GemHelper.gemspec.version"))
3548 #t)))))
3549 (propagated-inputs
3550 `(("ruby-domain-name" ,ruby-domain-name)))
3551 (native-inputs
3552 `(("rubysimplecov" ,ruby-simplecov)
3553 ("bundler" ,bundler)
3554 ("ruby-sqlite3" ,ruby-sqlite3)
3555 ("ruby-test-unit" ,ruby-test-unit)))
3556 (synopsis "Handle HTTP Cookies based on RFC 6265")
3557 (description
3558 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
3559 RFC 6265. It has been designed with security, standards compliance and
3560 compatibility in mind, to behave just the same as today's major web browsers.
3561 It has built-in support for the legacy @code{cookies.txt} and
3562 @code{cookies.sqlite} formats of Mozilla Firefox.")
3563 (home-page "https://github.com/sparklemotion/http-cookie")
3564 (license license:expat)))
3565
3566 (define-public ruby-ansi
3567 (package
3568 (name "ruby-ansi")
3569 (version "1.5.0")
3570 (source
3571 (origin
3572 (method url-fetch)
3573 ;; Fetch from GitHub as the gem does not contain testing code.
3574 (uri (string-append "https://github.com/rubyworks/ansi/archive/"
3575 version ".tar.gz"))
3576 (file-name (string-append name "-" version ".tar.gz"))
3577 (sha256
3578 (base32
3579 "1zdip30hivyipi8hndhb457bhiz033awd00bgrsk5axjrwp6zhly"))))
3580 (build-system ruby-build-system)
3581 (arguments
3582 `(#:phases
3583 (modify-phases %standard-phases
3584 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
3585 ;; cycle ansi, qed, ansi. Instead simply test that the library can
3586 ;; be require'd.
3587 (replace 'check
3588 (lambda _
3589 (zero? (system* "ruby" "-Ilib" "-r" "ansi"))))
3590 (add-before 'validate-runpath 'replace-broken-symlink
3591 (lambda* (#:key outputs #:allow-other-keys)
3592 (let* ((out (assoc-ref outputs "out"))
3593 (file (string-append out
3594 ,(gem-directory (package-version ruby))
3595 "/ansi-" ,version "/lib/ansi.yml")))
3596 ;; XXX: This symlink is broken since ruby 2.4.
3597 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
3598 (delete-file file)
3599 (symlink "../.index" file)
3600 #t))))))
3601 (synopsis "ANSI escape code related libraries")
3602 (description
3603 "This package is a collection of ANSI escape code related libraries
3604 enabling ANSI colorization and stylization of console output. Included in the
3605 library are the @code{Code} module, which defines ANSI codes as constants and
3606 methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
3607 @code{ProgressBar}, and a @code{String} subclass. The library also includes a
3608 @code{Terminal} module which provides information about the current output
3609 device.")
3610 (home-page "http://rubyworks.github.io/ansi")
3611 (license license:bsd-2)))
3612
3613 (define-public ruby-systemu
3614 (package
3615 (name "ruby-systemu")
3616 (version "2.6.5")
3617 (source
3618 (origin
3619 (method url-fetch)
3620 (uri (rubygems-uri "systemu" version))
3621 (sha256
3622 (base32
3623 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
3624 (build-system ruby-build-system)
3625 (arguments
3626 `(#:phases
3627 (modify-phases %standard-phases
3628 (add-before 'check 'set-version
3629 (lambda _
3630 (setenv "VERSION" ,version)
3631 #t)))))
3632 (synopsis "Capture of stdout/stderr and handling of child processes")
3633 (description
3634 "Systemu can be used on any platform to return status, stdout, and stderr
3635 of any command. Unlike other methods like @code{open3} and @code{popen4}
3636 there is no danger of full pipes or threading issues hanging your process or
3637 subprocess.")
3638 (home-page "https://github.com/ahoward/systemu")
3639 (license license:ruby)))
3640
3641 (define-public ruby-bio-commandeer
3642 (package
3643 (name "ruby-bio-commandeer")
3644 (version "0.4.0")
3645 (source
3646 (origin
3647 (method url-fetch)
3648 (uri (rubygems-uri "bio-commandeer" version))
3649 (sha256
3650 (base32
3651 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
3652 (build-system ruby-build-system)
3653 (arguments
3654 `(#:phases
3655 (modify-phases %standard-phases
3656 (replace 'check
3657 ;; Run test without calling 'rake' so that jeweler is
3658 ;; not required as an input.
3659 (lambda _
3660 (zero? (system* "rspec" "spec/bio-commandeer_spec.rb")))))))
3661 (propagated-inputs
3662 `(("ruby-bio-logger" ,ruby-bio-logger)
3663 ("ruby-systemu" ,ruby-systemu)))
3664 (native-inputs
3665 `(("bundler" ,bundler)
3666 ("ruby-rspec" ,ruby-rspec)))
3667 (synopsis "Simplified running of shell commands from within Ruby")
3668 (description
3669 "Bio-commandeer provides an opinionated method of running shell commands
3670 from within Ruby. The advantage of bio-commandeer over other methods of
3671 running external commands is that when something goes wrong, messages printed
3672 to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
3673 detail to ease debugging.")
3674 (home-page "https://github.com/wwood/bioruby-commandeer")
3675 (license license:expat)))
3676
3677 (define-public ruby-rubytest
3678 (package
3679 (name "ruby-rubytest")
3680 (version "0.8.1")
3681 (source
3682 (origin
3683 (method url-fetch)
3684 (uri (rubygems-uri "rubytest" version))
3685 (sha256
3686 (base32
3687 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
3688 (build-system ruby-build-system)
3689 (arguments
3690 ;; Disable regular testing to break the cycle rubytest, qed, brass,
3691 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
3692 ;; simply test that the library can be require'd.
3693 `(#:phases
3694 (modify-phases %standard-phases
3695 (replace 'check
3696 (lambda _
3697 (zero? (system* "ruby" "-Ilib" "-r" "rubytest")))))))
3698 (propagated-inputs
3699 `(("ruby-ansi" ,ruby-ansi)))
3700 (synopsis "Universal test harness for Ruby")
3701 (description
3702 "Rubytest is a testing meta-framework for Ruby. It can handle any
3703 compliant test framework and can run tests from multiple frameworks in a
3704 single pass.")
3705 (home-page "http://rubyworks.github.io/rubytest")
3706 (license license:bsd-2)))
3707
3708 (define-public ruby-brass
3709 (package
3710 (name "ruby-brass")
3711 (version "1.2.1")
3712 (source
3713 (origin
3714 (method url-fetch)
3715 (uri (rubygems-uri "brass" version))
3716 (sha256
3717 (base32
3718 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
3719 (build-system ruby-build-system)
3720 (arguments
3721 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
3722 ;; Instead simply test that the library can be require'd.
3723 `(#:phases
3724 (modify-phases %standard-phases
3725 (replace 'check
3726 (lambda _
3727 (zero? (system* "ruby" "-Ilib" "-r" "brass")))))))
3728 (synopsis "Basic foundational assertions framework")
3729 (description
3730 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
3731 foundational assertions framework for other assertion and test frameworks to
3732 make use of.")
3733 (home-page "http://rubyworks.github.io/brass")
3734 (license license:bsd-2)))
3735
3736 (define-public ruby-qed
3737 (package
3738 (name "ruby-qed")
3739 (version "2.9.2")
3740 (source
3741 (origin
3742 (method url-fetch)
3743 (uri (rubygems-uri "qed" version))
3744 (sha256
3745 (base32
3746 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
3747 (build-system ruby-build-system)
3748 (arguments
3749 ;; Disable testing to break the cycle qed, ansi, qed, among others.
3750 ;; Instead simply test that the executable runs using --copyright.
3751 `(#:phases
3752 (modify-phases %standard-phases
3753 (replace 'check
3754 (lambda _
3755 (zero? (system* "ruby" "-Ilib" "bin/qed" "--copyright")))))))
3756 (propagated-inputs
3757 `(("ruby-ansi" ,ruby-ansi)
3758 ("ruby-brass" ,ruby-brass)))
3759 (synopsis "Test framework utilizing literate programming techniques")
3760 (description
3761 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
3762 @dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
3763 Development} (BDD) utilizing Literate Programming techniques. QED sits
3764 somewhere between lower-level testing tools like @code{Test::Unit} and
3765 requirement specifications systems like Cucumber.")
3766 (home-page "http://rubyworks.github.io/qed")
3767 (license license:bsd-2)))
3768
3769 (define-public ruby-ae
3770 (package
3771 (name "ruby-ae")
3772 (version "1.8.2")
3773 (source
3774 (origin
3775 (method url-fetch)
3776 ;; Fetch from github so tests are included.
3777 (uri (string-append
3778 "https://github.com/rubyworks/ae/archive/"
3779 version ".tar.gz"))
3780 (file-name (string-append name "-" version ".tar.gz"))
3781 (sha256
3782 (base32
3783 "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl"))))
3784 (build-system ruby-build-system)
3785 (arguments
3786 `(#:phases
3787 (modify-phases %standard-phases
3788 (replace 'check
3789 (lambda _ (zero? (system* "qed"))))
3790 (add-before 'validate-runpath 'replace-broken-symlink
3791 (lambda* (#:key outputs #:allow-other-keys)
3792 (let* ((out (assoc-ref outputs "out"))
3793 (file (string-append out
3794 ,(gem-directory (package-version ruby))
3795 "/ae-" ,version "/lib/ae.yml")))
3796 ;; XXX: This symlink is broken since ruby 2.4.
3797 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
3798 (delete-file file)
3799 (symlink "../.index" file)
3800 #t))))))
3801 (propagated-inputs
3802 `(("ruby-ansi" ,ruby-ansi)))
3803 (native-inputs
3804 `(("ruby-qed" ,ruby-qed)))
3805 (synopsis "Assertions library")
3806 (description
3807 "Assertive Expressive (AE) is an assertions library specifically designed
3808 for reuse by other test frameworks.")
3809 (home-page "http://rubyworks.github.io/ae")
3810 (license license:bsd-2)))
3811
3812 (define-public ruby-lemon
3813 (package
3814 (name "ruby-lemon")
3815 (version "0.9.1")
3816 (source
3817 (origin
3818 (method url-fetch)
3819 (uri (rubygems-uri "lemon" version))
3820 (sha256
3821 (base32
3822 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
3823 (build-system ruby-build-system)
3824 (arguments
3825 `(#:phases
3826 (modify-phases %standard-phases
3827 (replace 'check (lambda _ (zero? (system* "qed")))))))
3828 (propagated-inputs
3829 `(("ruby-ae" ,ruby-ae)
3830 ("ruby-ansi" ,ruby-ansi)
3831 ("ruby-rubytest" ,ruby-rubytest)))
3832 (native-inputs
3833 `(("ruby-qed" ,ruby-qed)))
3834 (synopsis "Test framework correlating code structure and test unit")
3835 (description
3836 "Lemon is a unit testing framework that enforces highly formal
3837 case-to-class and unit-to-method test construction. This enforcement can help
3838 focus concern on individual units of behavior.")
3839 (home-page "http://rubyworks.github.io/lemon")
3840 (license license:bsd-2)))
3841
3842 (define-public ruby-rubytest-cli
3843 (package
3844 (name "ruby-rubytest-cli")
3845 (version "0.2.0")
3846 (source
3847 (origin
3848 (method url-fetch)
3849 (uri (rubygems-uri "rubytest-cli" version))
3850 (sha256
3851 (base32
3852 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
3853 (build-system ruby-build-system)
3854 (arguments
3855 `(#:tests? #f)) ; no tests
3856 (propagated-inputs
3857 `(("ruby-ansi" ,ruby-ansi)
3858 ("ruby-rubytest" ,ruby-rubytest)))
3859 (synopsis "Command-line interface for rubytest")
3860 (description
3861 "Rubytest CLI is a command-line interface for running tests for
3862 Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
3863 (home-page "http://rubyworks.github.io/rubytest-cli")
3864 (license license:bsd-2)))
3865
3866 (define-public ruby-hashery
3867 (package
3868 (name "ruby-hashery")
3869 (version "2.1.2")
3870 (source
3871 (origin
3872 (method url-fetch)
3873 (uri (rubygems-uri "hashery" version))
3874 (sha256
3875 (base32
3876 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
3877 (build-system ruby-build-system)
3878 (arguments
3879 `(#:phases
3880 (modify-phases %standard-phases
3881 (replace 'check
3882 (lambda _
3883 (and (zero? (system* "qed"))
3884 (zero? (system* "rubytest" "-Ilib" "-Itest" "test/"))))))))
3885 (native-inputs
3886 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
3887 ("ruby-qed" ,ruby-qed)
3888 ("ruby-lemon" ,ruby-lemon)))
3889 (synopsis "Hash-like classes with extra features")
3890 (description
3891 "The Hashery is a tight collection of @code{Hash}-like classes.
3892 Included are the auto-sorting @code{Dictionary} class, the efficient
3893 @code{LRUHash}, the flexible @code{OpenHash} and the convenient
3894 @code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
3895 defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
3896 standard @code{Hash} making it possible to subclass and augment to fit any
3897 specific use case.")
3898 (home-page "http://rubyworks.github.io/hashery")
3899 (license license:bsd-2)))
3900
3901 (define-public ruby-rc4
3902 (package
3903 (name "ruby-rc4")
3904 (version "0.1.5")
3905 (source
3906 (origin
3907 (method url-fetch)
3908 (uri (rubygems-uri "ruby-rc4" version))
3909 (sha256
3910 (base32
3911 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
3912 (build-system ruby-build-system)
3913 (arguments
3914 `(#:phases
3915 (modify-phases %standard-phases
3916 (replace 'check
3917 (lambda _
3918 (zero? (system* "rspec" "spec/rc4_spec.rb")))))))
3919 (native-inputs
3920 `(("ruby-rspec" ,ruby-rspec-2)))
3921 (synopsis "Implementation of the RC4 algorithm")
3922 (description
3923 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
3924 (home-page "https://github.com/caiges/Ruby-RC4")
3925 (license license:expat)))
3926
3927 (define-public ruby-afm
3928 (package
3929 (name "ruby-afm")
3930 (version "0.2.2")
3931 (source
3932 (origin
3933 (method url-fetch)
3934 (uri (rubygems-uri "afm" version))
3935 (sha256
3936 (base32
3937 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
3938 (build-system ruby-build-system)
3939 (native-inputs
3940 `(("bundler" ,bundler)))
3941 (synopsis "Read Adobe Font Metrics (afm) files")
3942 (description
3943 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
3944 files and use the data therein.")
3945 (home-page "https://github.com/halfbyte/afm")
3946 (license license:expat)))
3947
3948 (define-public ruby-ascii85
3949 (package
3950 (name "ruby-ascii85")
3951 (version "1.0.2")
3952 (source
3953 (origin
3954 (method url-fetch)
3955 (uri (rubygems-uri "Ascii85" version))
3956 (sha256
3957 (base32
3958 "0j95sbxd18kc8rhcnvl1w37kflqpax1r12h1x47gh4xxn3mz4m7q"))))
3959 (build-system ruby-build-system)
3960 (native-inputs
3961 `(("bundler" ,bundler)))
3962 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
3963 (description
3964 "This library provides methods to encode and decode Ascii85
3965 binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
3966 @dfn{Portable Document Format} (PDF) file formats.")
3967 (home-page "https://github.com/datawraith/ascii85gem")
3968 (license license:expat)))
3969
3970 (define-public ruby-ttfunk
3971 (package
3972 (name "ruby-ttfunk")
3973 (version "1.4.0")
3974 (source
3975 (origin
3976 (method url-fetch)
3977 ;; fetch from github as the gem does not contain testing code
3978 (uri (string-append
3979 "https://github.com/prawnpdf/ttfunk/archive/"
3980 version ".tar.gz"))
3981 (file-name (string-append name "-" version ".tar.gz"))
3982 (sha256
3983 (base32
3984 "1izq84pnm9niyvkzp8k0vl232q9zj41hwmp9na9fzycfh1pbnsl6"))))
3985 (build-system ruby-build-system)
3986 (arguments
3987 `(#:test-target "spec"
3988 #:phases
3989 (modify-phases %standard-phases
3990 (add-before 'check 'remove-rubocop
3991 (lambda _
3992 ;; remove rubocop as a dependency as not needed for testing
3993 (substitute* "ttfunk.gemspec"
3994 (("spec.add_development_dependency\\('rubocop'.*") ""))
3995 (substitute* "Rakefile"
3996 (("require 'rubocop/rake_task'") "")
3997 (("Rubocop::RakeTask.new") ""))
3998 #t)))))
3999 (native-inputs
4000 `(("ruby-rspec" ,ruby-rspec)
4001 ("bundler" ,bundler)))
4002 (synopsis "Font metrics parser for the Prawn PDF generator")
4003 (description
4004 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
4005 part of the Prawn PDF generator.")
4006 (home-page "https://github.com/prawnpdf/ttfunk")
4007 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
4008 ;; for details."
4009 (license (list license:gpl2 license:gpl3 license:ruby))))
4010
4011 (define-public ruby-puma
4012 (package
4013 (name "ruby-puma")
4014 (version "3.9.1")
4015 (source
4016 (origin
4017 (method url-fetch)
4018 ;; Fetch from GitHub because distributed gem does not contain tests.
4019 (uri (string-append "https://github.com/puma/puma/archive/v"
4020 version ".tar.gz"))
4021 (file-name (string-append name "-" version ".tar.gz"))
4022 (sha256
4023 (base32
4024 "03pifga841h17brh4vgia8i2ybh3cmsyg0dbybzdf6dq51wzcxdx"))))
4025 (build-system ruby-build-system)
4026 (arguments
4027 `(#:tests? #f ; Tests require an out-dated version of minitest.
4028 #:phases
4029 (modify-phases %standard-phases
4030 (add-before 'build 'fix-gemspec
4031 (lambda _
4032 (substitute* "puma.gemspec"
4033 (("git ls-files") "find * |sort"))
4034 #t)))))
4035 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
4036 (description
4037 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
4038 for Ruby/Rack applications. Puma is intended for use in both development and
4039 production environments. In order to get the best throughput, it is highly
4040 recommended that you use a Ruby implementation with real threads like Rubinius
4041 or JRuby.")
4042 (home-page "http://puma.io")
4043 (license license:expat)))
4044
4045 (define-public ruby-hoe-git
4046 (package
4047 (name "ruby-hoe-git")
4048 (version "1.6.0")
4049 (source
4050 (origin
4051 (method url-fetch)
4052 (uri (rubygems-uri "hoe-git" version))
4053 (sha256
4054 (base32
4055 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
4056 (build-system ruby-build-system)
4057 (propagated-inputs
4058 `(("ruby-hoe" ,ruby-hoe)
4059 ("git" ,git)))
4060 (synopsis "Hoe plugins for tighter Git integration")
4061 (description
4062 "This package provides a set of Hoe plugins for tighter Git integration.
4063 It provides tasks to automate release tagging and pushing and changelog
4064 generation.")
4065 (home-page "https://github.com/jbarnette/hoe-git")
4066 (license license:expat)))
4067
4068 (define-public ruby-sequel
4069 (package
4070 (name "ruby-sequel")
4071 (version "4.49.0")
4072 (source
4073 (origin
4074 (method url-fetch)
4075 (uri (rubygems-uri "sequel" version))
4076 (sha256
4077 (base32
4078 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
4079 (build-system ruby-build-system)
4080 (arguments
4081 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
4082 (synopsis "Database toolkit for Ruby")
4083 (description "Sequel provides thread safety, connection pooling and a
4084 concise DSL for constructing SQL queries and table schemas. It includes a
4085 comprehensive ORM layer for mapping records to Ruby objects and handling
4086 associated records.")
4087 (home-page "http://sequel.jeremyevans.net")
4088 (license license:expat)))
4089
4090 (define-public ruby-timecop
4091 (package
4092 (name "ruby-timecop")
4093 (version "0.9.1")
4094 (source
4095 (origin
4096 (method url-fetch)
4097 (uri (rubygems-uri "timecop" version))
4098 (sha256
4099 (base32
4100 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
4101 (build-system ruby-build-system)
4102 (arguments
4103 `(#:phases
4104 (modify-phases %standard-phases
4105 (add-before 'check 'set-check-rubylib
4106 (lambda _
4107 ;; Set RUBYLIB so timecop tests finds its own lib.
4108 (setenv "RUBYLIB" "lib")
4109 #t)))))
4110 (native-inputs
4111 `(("bundler" ,bundler)
4112 ("ruby-minitest-rg" ,ruby-minitest-rg)
4113 ("ruby-mocha" ,ruby-mocha)
4114 ("ruby-activesupport" ,ruby-activesupport)))
4115 (synopsis "Test mocks for time-dependent functions")
4116 (description
4117 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
4118 making it easier to test time-dependent code. It provides a unified method to
4119 mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
4120 call.")
4121 (home-page "https://github.com/travisjeffery/timecop")
4122 (license license:expat)))
4123
4124 (define-public ruby-concurrent
4125 (package
4126 (name "ruby-concurrent")
4127 (version "1.0.5")
4128 (source
4129 (origin
4130 (method url-fetch)
4131 ;; Download from GitHub because the rubygems version does not contain
4132 ;; Rakefile.
4133 (uri (string-append
4134 "https://github.com/ruby-concurrency/concurrent-ruby/archive/v"
4135 version
4136 ".tar.gz"))
4137 (file-name (string-append name "-" version ".tar.gz"))
4138 (sha256
4139 (base32
4140 "0qhv0qzsby4iijgwa4s9r88zj8123pmyz1dwaqzdk57xgqll9pny"))
4141 ;; Exclude failing test reported at
4142 ;; https://github.com/ruby-concurrency/concurrent-ruby/issues/534
4143 (patches (search-patches "ruby-concurrent-ignore-broken-test.patch"
4144 "ruby-concurrent-test-arm.patch"))))
4145 (build-system ruby-build-system)
4146 (arguments
4147 `(#:test-target "spec"
4148 #:phases
4149 (modify-phases %standard-phases
4150 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
4151 (lambda _
4152 ;; Delete extra gemspec files so 'first-gemspec' chooses the
4153 ;; correct one.
4154 (delete-file "concurrent-ruby-edge.gemspec")
4155 (delete-file "concurrent-ruby-ext.gemspec")
4156 #t))
4157 (add-before 'build 'replace-git-ls-files2
4158 (lambda _
4159 (substitute* "support/file_map.rb"
4160 (("git ls-files") "find * |sort"))
4161 #t))
4162 (add-before 'check 'rake-compile
4163 ;; Fix the test error described at
4164 ;; https://github.com/ruby-concurrency/concurrent-ruby/pull/408
4165 (lambda _ (zero? (system* "rake" "compile"))))
4166 (add-before 'check 'remove-timecop-dependency
4167 ;; Remove timecop-dependent tests as having timecop as a depedency
4168 ;; causes circular depedencies.
4169 (lambda _
4170 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
4171 (delete-file "spec/concurrent/scheduled_task_spec.rb")
4172 #t)))))
4173 (native-inputs
4174 `(("ruby-rake-compiler" ,ruby-rake-compiler)
4175 ("ruby-rspec" ,ruby-rspec)))
4176 (synopsis "Concurrency tools for Ruby")
4177 (description
4178 "This library provides modern concurrency tools including agents,
4179 futures, promises, thread pools, actors, supervisors, and more. It is
4180 inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
4181 patterns.")
4182 (home-page "http://www.concurrent-ruby.com")
4183 (license license:expat)))
4184
4185 (define-public ruby-pkg-config
4186 (package
4187 (name "ruby-pkg-config")
4188 (version "1.2.5")
4189 (source
4190 (origin
4191 (method url-fetch)
4192 (uri (rubygems-uri "pkg-config" version))
4193 (sha256
4194 (base32
4195 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
4196 (build-system ruby-build-system)
4197 (arguments
4198 ;; Tests require extra files not included in the gem.
4199 `(#:tests? #f))
4200 (synopsis "Detect libraries for compiling Ruby native extensions")
4201 (description
4202 "@code{pkg-config} can be used in your extconf.rb to properly detect need
4203 libraries for compiling Ruby native extensions.")
4204 (home-page "https://github.com/ruby-gnome2/pkg-config")
4205 (license license:lgpl2.0+)))
4206
4207 (define-public ruby-net-http-digest-auth
4208 (package
4209 (name "ruby-net-http-digest-auth")
4210 (version "1.4.1")
4211 (source
4212 (origin
4213 (method url-fetch)
4214 (uri (rubygems-uri "net-http-digest_auth" version))
4215 (sha256
4216 (base32
4217 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
4218 (build-system ruby-build-system)
4219 (native-inputs
4220 `(("ruby-hoe" ,ruby-hoe)))
4221 (synopsis "RFC 2617 HTTP digest authentication library")
4222 (description
4223 "This library implements HTTP's digest authentication scheme based on
4224 RFC 2617. This enables the use of the digest authentication scheme instead
4225 of the more insecure basic authentication scheme.")
4226 (home-page "https://github.com/drbrain/net-http-digest_auth")
4227 (license license:expat)))
4228
4229 (define-public ruby-mail
4230 (package
4231 (name "ruby-mail")
4232 (version "2.6.6")
4233 (source
4234 (origin
4235 (method url-fetch)
4236 (uri (rubygems-uri "mail" version))
4237 (sha256
4238 (base32
4239 "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
4240 (build-system ruby-build-system)
4241 (propagated-inputs
4242 `(("ruby-mime-types" ,ruby-mime-types)))
4243 (arguments
4244 ;; Tests require extra gems not included in the Gemfile.
4245 ;; XXX: Try enabling this for the next version with mini_mime.
4246 `(#:tests? #f))
4247 (synopsis "Mail library for Ruby")
4248 (description
4249 "Mail is an internet library for Ruby that is designed to handle email
4250 generation, parsing and sending. The purpose of this library is to provide
4251 a single point of access to handle all email functions, including sending
4252 and receiving emails. All network type actions are done through proxy
4253 methods to @code{Net::SMTP}, @code{Net::POP3} etc.
4254
4255 Mail has been designed with a very simple object oriented system that
4256 really opens up the email messages you are parsing, if you know what you
4257 are doing, you can fiddle with every last bit of your email directly.")
4258 (home-page "https://github.com/mikel/mail")
4259 (license license:expat)))