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