projects/guix·blob version-0.13.0 · refs

4242 lines · 152.0 KiB

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