gnu: Remove duplicate ruby-concurrent package definition.
[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 Nils Gillmann <ng0@n0.is>
9 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
10 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
11 ;;; Copyright © 2017, 2018 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 maths)
40 #:use-module (gnu packages ncurses)
41 #:use-module (gnu packages networking)
42 #:use-module (gnu packages python)
43 #:use-module (gnu packages ragel)
44 #:use-module (gnu packages tls)
45 #:use-module (gnu packages version-control)
46 #:use-module (guix packages)
47 #:use-module (guix download)
48 #:use-module (guix git-download)
49 #:use-module (guix utils)
50 #:use-module (guix build-system gnu)
51 #:use-module (gnu packages xml)
52 #:use-module (gnu packages web)
53 #:use-module (guix build-system ruby))
54
55 (define-public ruby
56 (package
57 (name "ruby")
58 (version "2.4.3")
59 (source
60 (origin
61 (method url-fetch)
62 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
63 (version-major+minor version)
64 "/ruby-" version ".tar.xz"))
65 (sha256
66 (base32
67 "0l9bv67dgsphk42lmiskhrnh47hbyj6rfg2rcjx22xivpx07srr3"))
68 (patches (search-patches "ruby-rubygems-276-for-ruby24.patch"))
69 (modules '((guix build utils)))
70 (snippet `(begin
71 ;; Remove bundled libffi
72 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
73 #t))))
74 (build-system gnu-build-system)
75 (arguments
76 `(#:test-target "test"
77 #:phases
78 (modify-phases %standard-phases
79 (add-before 'configure 'replace-bin-sh-and-remove-libffi
80 (lambda _
81 (substitute* '("Makefile.in"
82 "ext/pty/pty.c"
83 "io.c"
84 "lib/mkmf.rb"
85 "process.c"
86 "test/rubygems/test_gem_ext_configure_builder.rb"
87 "test/rdoc/test_rdoc_parser.rb"
88 "test/ruby/test_rubyoptions.rb"
89 "test/ruby/test_process.rb"
90 "test/ruby/test_system.rb"
91 "tool/rbinstall.rb")
92 (("/bin/sh") (which "sh")))
93 #t)))))
94 (inputs
95 `(("readline" ,readline)
96 ("openssl" ,openssl)
97 ("libffi" ,libffi)
98 ("gdbm" ,gdbm)
99 ("zlib" ,zlib)))
100 (native-search-paths
101 (list (search-path-specification
102 (variable "GEM_PATH")
103 (files (list (string-append "lib/ruby/vendor_ruby"))))))
104 (synopsis "Programming language interpreter")
105 (description "Ruby is a dynamic object-oriented programming language with
106 a focus on simplicity and productivity.")
107 (home-page "https://www.ruby-lang.org")
108 (license license:ruby)))
109
110 (define-public ruby-2.3
111 (package
112 (inherit ruby)
113 (version "2.3.7")
114 (source
115 (origin
116 (method url-fetch)
117 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
118 (version-major+minor version)
119 "/ruby-" version ".tar.xz"))
120 (sha256
121 (base32
122 "1nwfaifq5624p1ml56qq5dy5w38z37x22r0qgrbgbzrzklmqy7y6"))
123 (modules '((guix build utils)))
124 (snippet `(begin
125 ;; Remove bundled libffi
126 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
127 #t))))))
128
129 (define-public ruby-2.2
130 (package (inherit ruby)
131 (version "2.2.10")
132 (source
133 (origin
134 (method url-fetch)
135 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
136 (version-major+minor version)
137 "/ruby-" version ".tar.xz"))
138 (sha256
139 (base32
140 "0l5nk9mc0q4769d2i9d9y1izk0pk0lms2bl8s3lclv36wsvvqxxz"))))))
141
142 (define-public ruby-2.1
143 (package (inherit ruby)
144 (version "2.1.10")
145 (source
146 (origin
147 (method url-fetch)
148 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
149 (version-major+minor version)
150 "/ruby-" version ".tar.bz2"))
151 (sha256
152 (base32
153 "1wglbd599mlwxfcb2xgqcxi2shr363pjn5dpbv11m04si9bpaim7"))))
154 (arguments
155 `(#:test-target "test"
156 #:parallel-tests? #f
157 #:phases
158 (modify-phases %standard-phases
159 (add-before 'configure 'replace-bin-sh
160 (lambda _
161 (substitute* '("Makefile.in"
162 "ext/pty/pty.c"
163 "io.c"
164 "lib/mkmf.rb"
165 "process.c")
166 (("/bin/sh") (which "sh")))
167 #t)))))))
168
169 (define-public ruby-1.8
170 (package (inherit ruby)
171 (version "1.8.7-p374")
172 (source
173 (origin
174 (method url-fetch)
175 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
176 (version-major+minor version)
177 "/ruby-" version ".tar.bz2"))
178 (sha256
179 (base32
180 "1qq7khilwkayrhwmzlxk83scrmiqfi7lgsn4c63znyvz2c1lgqxl"))))
181 (native-search-paths '())
182 (arguments
183 `(#:test-target "test"
184 #:parallel-tests? #f
185 #:phases
186 (modify-phases %standard-phases
187 (add-before 'configure 'replace-bin-sh
188 (lambda _
189 (substitute* '("Makefile.in"
190 "ext/pty/pty.c"
191 "io.c"
192 "lib/mkmf.rb"
193 "process.c")
194 (("/bin/sh") (which "sh")))
195 #t)))))))
196
197 (define-public ruby-highline
198 (package
199 (name "ruby-highline")
200 (version "1.7.10")
201 (source
202 (origin
203 (method url-fetch)
204 (uri (rubygems-uri "highline" version))
205 (sha256
206 (base32
207 "01ib7jp85xjc4gh4jg0wyzllm46hwv8p0w1m4c75pbgi41fps50y"))))
208 (build-system ruby-build-system)
209 (arguments
210 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
211 (native-inputs
212 `(("bundler" ,bundler)
213 ("ruby-code-statistics" ,ruby-code-statistics)))
214 (synopsis
215 "HighLine helps you build command-line interfaces")
216 (description
217 "HighLine provides a high-level IO library that provides validation,
218 type conversion, and more for command-line interfaces. HighLine also includes
219 a menu system for providing multiple options to the user.")
220 (home-page "https://github.com/JEG2/highline")
221 (license (list license:gpl2 license:ruby))))
222
223 (define-public ruby-hoe
224 (package
225 (name "ruby-hoe")
226 (version "3.16.2")
227 (source (origin
228 (method url-fetch)
229 (uri (rubygems-uri "hoe" version))
230 (sha256
231 (base32
232 "12q6dn2irsfamdbjpqvs0dwl4i1vl7wflxrcg972h9jw0ds38f3a"))))
233 (build-system ruby-build-system)
234 (synopsis "Ruby project management helper")
235 (description
236 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
237 maintain, and release projects and includes a dynamic plug-in system allowing
238 for easy extensibility. Hoe ships with plug-ins for all the usual project
239 tasks including rdoc generation, testing, packaging, deployment, and
240 announcement.")
241 (home-page "https://www.zenspider.com/projects/hoe.html")
242 (license license:expat)))
243
244 (define-public ruby-rake-compiler
245 (package
246 (name "ruby-rake-compiler")
247 (version "1.0.4")
248 (source (origin
249 (method url-fetch)
250 (uri (rubygems-uri "rake-compiler" version))
251 (sha256
252 (base32
253 "1xpdi4w8zaklk1i9ps8g3k0icw3v5fcks092l84w28rgrpx82qip"))))
254 (build-system ruby-build-system)
255 (arguments
256 '(#:tests? #f)) ; needs cucumber
257 (synopsis "Building and packaging helper for Ruby native extensions")
258 (description "Rake-compiler provides a framework for building and
259 packaging native C and Java extensions in Ruby.")
260 (home-page "https://github.com/rake-compiler/rake-compiler")
261 (license license:expat)))
262
263 (define-public ruby-i18n
264 (package
265 (name "ruby-i18n")
266 (version "1.1.0")
267 (source (origin
268 (method url-fetch)
269 (uri (rubygems-uri "i18n" version))
270 (sha256
271 (base32
272 "0ppvmla21hssvrfm8g1n2fnb4lxn4yhy9qmmba0imanflgldrjmr"))))
273 (build-system ruby-build-system)
274 (arguments
275 '(#:tests? #f)) ; no tests
276 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
277 (synopsis "Internationalization library for Ruby")
278 (description "Ruby i18n is an internationalization and localization
279 solution for Ruby programs. It features translation and localization,
280 interpolation of values to translations, pluralization, customizable
281 transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
282 translation data, custom key/scope separator, custom exception handlers, and
283 an extensible architecture with a swappable backend.")
284 (home-page "https://github.com/svenfuchs/i18n")
285 (license license:expat)))
286
287 (define-public ruby-iruby
288 (package
289 (name "ruby-iruby")
290 (version "0.3")
291 (source
292 (origin
293 (method url-fetch)
294 (uri (rubygems-uri "iruby" version))
295 (sha256
296 (base32
297 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
298 (build-system ruby-build-system)
299 (arguments
300 ;; TODO: Tests currently fail.
301 ;;
302 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
303 ;;
304 ;; 1) Failure:
305 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
306 ;; In [ expected
307 ;;
308 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
309 '(#:tests? #f
310 #:phases
311 (modify-phases %standard-phases
312 (add-after 'unpack 'patch-ipython
313 (lambda* (#:key inputs #:allow-other-keys)
314 (substitute* "lib/iruby/command.rb"
315 (("version = `")
316 (string-append
317 "version = `"
318 (assoc-ref inputs "python-ipython")
319 "/bin/"))
320 (("Kernel\\.exec\\('")
321 (string-append
322 "Kernel.exec('"
323 (assoc-ref inputs "python-ipython")
324 "/bin/")))
325 #t)))))
326 (inputs
327 `(("python-ipython" ,python-ipython)))
328 (propagated-inputs
329 `(("ruby-bond" ,ruby-bond)
330 ("ruby-data_uri" ,ruby-data_uri)
331 ("ruby-mimemagic" ,ruby-mimemagic)
332 ("ruby-multi-json" ,ruby-multi-json)
333 ("ruby-cztop" ,ruby-cztop)
334 ;; Optional inputs
335 ("ruby-pry" ,ruby-pry)))
336 (synopsis "Ruby kernel for Jupyter/IPython")
337 (description
338 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
339 notebook).")
340 (home-page "https://github.com/SciRuby/iruby")
341 (license license:expat)))
342
343 ;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
344 ;; dependencies use RSpec for their test suites! To avoid these circular
345 ;; dependencies, we disable tests for all of the RSpec-related packages.
346 (define ruby-rspec-support
347 (package
348 (name "ruby-rspec-support")
349 (version "3.5.0")
350 (source (origin
351 (method url-fetch)
352 (uri (rubygems-uri "rspec-support" version))
353 (sha256
354 (base32
355 "10vf3k3d472y573mag2kzfsfrf6rv355s13kadnpryk8d36yq5r0"))))
356 (build-system ruby-build-system)
357 (arguments
358 '(#:tests? #f)) ; avoid dependency cycles
359 (synopsis "RSpec support library")
360 (description "Support utilities for RSpec gems.")
361 (home-page "https://github.com/rspec/rspec-support")
362 (license license:expat)))
363
364 (define-public ruby-rspec-core
365 (package
366 (name "ruby-rspec-core")
367 (version "3.5.4")
368 (source (origin
369 (method url-fetch)
370 (uri (rubygems-uri "rspec-core" version))
371 (sha256
372 (base32
373 "1nacs062qbr98fx6czf1vwppn1js956nv2c8vfwj6i65axdfs46i"))))
374 (build-system ruby-build-system)
375 (arguments
376 '(#:tests? #f)) ; avoid dependency cycles
377 (propagated-inputs
378 `(("ruby-rspec-support" ,ruby-rspec-support)))
379 (synopsis "RSpec core library")
380 (description "Rspec-core provides the RSpec test runner and example
381 groups.")
382 (home-page "https://github.com/rspec/rspec-core")
383 (license license:expat)))
384
385 (define-public ruby-rspec-core-2
386 (package (inherit ruby-rspec-core)
387 (version "2.14.8")
388 (source (origin
389 (method url-fetch)
390 (uri (rubygems-uri "rspec-core" version))
391 (sha256
392 (base32
393 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
394 (propagated-inputs `())))
395
396 (define-public ruby-diff-lcs
397 (package
398 (name "ruby-diff-lcs")
399 (version "1.3")
400 (source (origin
401 (method url-fetch)
402 (uri (rubygems-uri "diff-lcs" version))
403 (sha256
404 (base32
405 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
406 (build-system ruby-build-system)
407 (arguments
408 '(#:tests? #f)) ; avoid dependency cycles
409 (synopsis "Compute the difference between two Enumerable sequences")
410 (description "Diff::LCS computes the difference between two Enumerable
411 sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
412 It includes utilities to create a simple HTML diff output format and a
413 standard diff-like tool.")
414 (home-page "https://github.com/halostatue/diff-lcs")
415 (license license:expat)))
416
417 (define-public ruby-rspec-expectations
418 (package
419 (name "ruby-rspec-expectations")
420 (version "3.5.0")
421 (source (origin
422 (method url-fetch)
423 (uri (rubygems-uri "rspec-expectations" version))
424 (sha256
425 (base32
426 "0bbqfrb1x8gmwf8x2xhhwvvlhwbbafq4isbvlibxi6jk602f09gs"))))
427 (build-system ruby-build-system)
428 (arguments
429 '(#:tests? #f)) ; avoid dependency cycles
430 (propagated-inputs
431 `(("ruby-rspec-support" ,ruby-rspec-support)
432 ("ruby-diff-lcs" ,ruby-diff-lcs)))
433 (synopsis "RSpec expectations library")
434 (description "Rspec-expectations provides a simple API to express expected
435 outcomes of a code example.")
436 (home-page "https://github.com/rspec/rspec-expectations")
437 (license license:expat)))
438
439 (define-public ruby-rspec-expectations-2
440 (package (inherit ruby-rspec-expectations)
441 (version "2.14.5")
442 (source (origin
443 (method url-fetch)
444 (uri (rubygems-uri "rspec-expectations" version))
445 (sha256
446 (base32
447 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
448 (propagated-inputs
449 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
450
451 (define-public ruby-rspec-its
452 (package
453 (name "ruby-rspec-its")
454 (version "1.2.0")
455 (source
456 (origin
457 (method url-fetch)
458 (uri (rubygems-uri "rspec-its" version))
459 (sha256
460 (base32
461 "1pwphny5jawcm1hda3vs9pjv1cybaxy17dc1s75qd7drrvx697p3"))))
462 (build-system ruby-build-system)
463 (arguments
464 `(#:tests? #f)) ; needs cucumber.
465 (propagated-inputs
466 `(("ruby-rspec-core" ,ruby-rspec-core)
467 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
468 (synopsis "RSpec extension gem for attribute matching")
469 (description "@code{rspec-its} is an RSpec extension gem for attribute
470 matching.")
471 (home-page "https://github.com/rspec/rspec-its")
472 (license license:expat)))
473
474 (define-public ruby-rspec-mocks
475 (package
476 (name "ruby-rspec-mocks")
477 (version "3.5.0")
478 (source (origin
479 (method url-fetch)
480 (uri (rubygems-uri "rspec-mocks" version))
481 (sha256
482 (base32
483 "0nl3ksivh9wwrjjd47z5dggrwx40v6gpb3a0gzbp1gs06a5dmk24"))))
484 (build-system ruby-build-system)
485 (arguments
486 '(#:tests? #f)) ; avoid dependency cycles
487 (propagated-inputs
488 `(("ruby-rspec-support" ,ruby-rspec-support)
489 ("ruby-diff-lcs" ,ruby-diff-lcs)))
490 (synopsis "RSpec stubbing and mocking library")
491 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
492 support for stubbing and mocking.")
493 (home-page "https://github.com/rspec/rspec-mocks")
494 (license license:expat)))
495
496 (define-public ruby-rspec-mocks-2
497 (package (inherit ruby-rspec-mocks)
498 (version "2.14.6")
499 (source (origin
500 (method url-fetch)
501 (uri (rubygems-uri "rspec-mocks" version))
502 (sha256
503 (base32
504 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
505 (propagated-inputs
506 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
507
508 (define-public ruby-rspec
509 (package
510 (name "ruby-rspec")
511 (version "3.5.0")
512 (source (origin
513 (method url-fetch)
514 (uri (rubygems-uri "rspec" version))
515 (sha256
516 (base32
517 "16g3mmih999f0b6vcz2c3qsc7ks5zy4lj1rzjh8hf6wk531nvc6s"))))
518 (build-system ruby-build-system)
519 (arguments
520 '(#:tests? #f)) ; avoid dependency cycles
521 (propagated-inputs
522 `(("ruby-rspec-core" ,ruby-rspec-core)
523 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
524 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
525 (synopsis "Behavior-driven development framework for Ruby")
526 (description "RSpec is a behavior-driven development (BDD) framework for
527 Ruby. This meta-package includes the RSpec test runner, along with the
528 expectations and mocks frameworks.")
529 (home-page "http://rspec.info/")
530 (license license:expat)))
531
532 (define-public ruby-rspec-2
533 (package (inherit ruby-rspec)
534 (version "2.14.1")
535 (source (origin
536 (method url-fetch)
537 (uri (rubygems-uri "rspec" version))
538 (sha256
539 (base32
540 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
541 (propagated-inputs
542 `(("ruby-rspec-core" ,ruby-rspec-core-2)
543 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
544 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
545
546 ;; Bundler is yet another source of circular dependencies, so we must disable
547 ;; its test suite as well.
548 (define-public bundler
549 (package
550 (name "bundler")
551 (version "1.15.4")
552 (source (origin
553 (method url-fetch)
554 (uri (rubygems-uri "bundler" version))
555 (sha256
556 (base32
557 "0wl4r7wbwdq68xidfv4hhzfb1spb6lmhbspwlzrg4pf1l6ipxlgs"))))
558 (build-system ruby-build-system)
559 (arguments
560 '(#:tests? #f)) ; avoid dependency cycles
561 (synopsis "Ruby gem bundler")
562 (description "Bundler automatically downloads and installs a list of gems
563 specified in a \"Gemfile\", as well as their dependencies.")
564 (home-page "https://bundler.io/")
565 (license license:expat)))
566
567 (define-public ruby-builder
568 (package
569 (name "ruby-builder")
570 (version "3.2.3")
571 (source (origin
572 (method url-fetch)
573 (uri (rubygems-uri "builder" version))
574 (sha256
575 (base32
576 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
577 (build-system ruby-build-system)
578 (arguments
579 `(#:phases
580 (modify-phases %standard-phases
581 (add-after 'unpack 'do-not-use-rvm
582 (lambda _
583 (substitute* "rakelib/tags.rake"
584 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
585 #t)))))
586 (synopsis "Ruby library to create structured data")
587 (description "Builder provides a number of builder objects that make it
588 easy to create structured data. Currently the following builder objects are
589 supported: XML Markup and XML Events.")
590 (home-page "https://github.com/jimweirich/builder")
591 (license license:expat)))
592
593 (define-public ruby-rjb
594 (package
595 (name "ruby-rjb")
596 (version "1.5.5")
597 (source (origin
598 (method url-fetch)
599 (uri (rubygems-uri "rjb" version))
600 (sha256
601 (base32
602 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
603 (build-system ruby-build-system)
604 (arguments
605 `(#:tests? #f ; no rakefile
606 #:phases
607 (modify-phases %standard-phases
608 (add-before 'build 'set-java-home
609 (lambda* (#:key inputs #:allow-other-keys)
610 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
611 #t)))))
612 (native-inputs
613 `(("jdk" ,icedtea "jdk")))
614 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
615 (description "RJB is a bridge program that connects Ruby and Java via the
616 Java Native Interface.")
617 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
618 (license license:lgpl2.1+)))
619
620 (define-public ruby-log4r
621 (package
622 (name "ruby-log4r")
623 (version "1.1.10")
624 (source
625 (origin
626 (method url-fetch)
627 (uri (rubygems-uri "log4r" version))
628 (sha256
629 (base32
630 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
631 (build-system ruby-build-system)
632 (arguments
633 '(#:tests? #f)) ; no Rakefile in gem
634 (synopsis "Flexible logging library for Ruby")
635 (description "Comprehensive and flexible logging library written
636 in Ruby for use in Ruby programs. It features a hierarchical logging
637 system of any number of levels, custom level names, logger
638 inheritance, multiple output destinations per log event, execution
639 tracing, custom formatting, thread safteyness, XML and YAML
640 configuration, and more.")
641 (home-page "http://log4r.rubyforge.org/")
642 (license license:bsd-3)))
643
644 (define-public ruby-atoulme-antwrap
645 (package
646 (name "ruby-atoulme-antwrap")
647 (version "0.7.5")
648 (source (origin
649 (method url-fetch)
650 (uri (rubygems-uri "atoulme-Antwrap" version))
651 (sha256
652 (base32
653 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
654 (build-system ruby-build-system)
655 ;; Test data required for most of the tests are not included.
656 (arguments `(#:tests? #f))
657 (native-inputs
658 `(("ruby-hoe" ,ruby-hoe)))
659 (inputs
660 `(("ruby-rjb" ,ruby-rjb)))
661 (synopsis "Ruby wrapper for the Ant build tool")
662 (description "Antwrap is a Ruby module that wraps the Apache Ant build
663 tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
664 script.")
665 (home-page "http://rubyforge.org/projects/antwrap/")
666 (license license:expat)))
667
668 (define-public ruby-atoulme-saikuro
669 (package
670 (name "ruby-atoulme-saikuro")
671 (version "1.2.1")
672 (source (origin
673 (method url-fetch)
674 (uri (rubygems-uri "atoulme-Saikuro" version))
675 (sha256
676 (base32
677 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
678 (build-system ruby-build-system)
679 ;; FIXME: There are no unit tests. The tests are demonstrations of the
680 ;; "saikuro" tool.
681 (arguments `(#:tests? #f))
682 (synopsis "Cyclomatic complexity analyzer")
683 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
684 given Ruby source code Saikuro will generate a report listing the cyclomatic
685 complexity of each method found. In addition, Saikuro counts the number of
686 lines per method and can generate a listing of the number of tokens on each
687 line of code.")
688 (home-page "http://www.github.com/atoulme/Saikuro")
689 ;; File headers contain the BSD-3 license and the README.rdoc says that
690 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
691 ;; of the Expat license.
692 (license license:bsd-3)))
693
694 (define-public ruby-asciidoctor
695 (package
696 (name "ruby-asciidoctor")
697 (version "1.5.7.1")
698 (source
699 (origin
700 (method url-fetch)
701 (uri (rubygems-uri "asciidoctor" version))
702 (sha256
703 (base32
704 "0v52bzc72cvg7zfgq27pa4mgyf29dx9m20fghrw1xmvwgd519n1w"))))
705 (build-system ruby-build-system)
706 (arguments
707 `(#:test-target "test:all"
708 #:phases
709 (modify-phases %standard-phases
710 (add-before 'check 'remove-circular-tests
711 (lambda _
712 ;; Remove tests that require circular dependencies to load or pass.
713 (delete-file "test/invoker_test.rb")
714 (delete-file "test/converter_test.rb")
715 (delete-file "test/options_test.rb")
716 #t)))))
717 (native-inputs
718 `(("ruby-minitest" ,ruby-minitest)
719 ("ruby-nokogiri" ,ruby-nokogiri)
720 ("ruby-asciimath" ,ruby-asciimath)
721 ("ruby-coderay" ,ruby-coderay)))
722 (synopsis "Converter from AsciiDoc content to other formats")
723 (description
724 "Asciidoctor is a text processor and publishing toolchain for converting
725 AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other formats.")
726 (home-page "https://asciidoctor.org")
727 (license license:expat)))
728
729 (define-public ruby-sporkmonger-rack-mount
730 ;; Testing the addressable gem requires a newer commit than that released, so
731 ;; use an up to date version.
732 (let ((revision "1")
733 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
734 (package
735 (name "ruby-sporkmonger-rack-mount")
736 (version (git-version "0.8.3" revision commit))
737 (source (origin
738 (method git-fetch)
739 (uri (git-reference
740 (url "https://github.com/sporkmonger/rack-mount.git")
741 (commit commit)))
742 (file-name (git-file-name name version))
743 (sha256
744 (base32
745 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
746 (build-system ruby-build-system)
747 (arguments
748 ;; Tests currently fail so disable them.
749 ;; https://github.com/sporkmonger/rack-mount/pull/1
750 `(#:tests? #f))
751 (propagated-inputs `(("ruby-rack" ,ruby-rack)))
752 (synopsis "Stackable dynamic tree based Rack router")
753 (description
754 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
755 continue trying routes if the response returns pass. This allows multiple
756 routes to be nested or stacked on top of each other.")
757 (home-page "https://github.com/sporkmonger/rack-mount")
758 (license license:expat))))
759
760 (define-public ruby-ci-reporter
761 (package
762 (name "ruby-ci-reporter")
763 (version "2.0.0")
764 (source (origin
765 (method url-fetch)
766 (uri (rubygems-uri "ci_reporter" version))
767 (sha256
768 (base32
769 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
770 (build-system ruby-build-system)
771 (arguments
772 `(#:test-target "rspec"))
773 (propagated-inputs
774 `(("ruby-builder" ,ruby-builder)))
775 (native-inputs
776 `(("bundler" ,bundler)
777 ("ruby-rspec" ,ruby-rspec)))
778 (synopsis "Generate XML reports of runs test")
779 (description
780 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
781 you to generate XML reports of your test runs. The resulting files can be
782 read by a continuous integration system that understands Ant's JUnit report
783 format.")
784 (home-page "https://github.com/nicksieger/ci_reporter")
785 (license license:expat)))
786
787 (define-public ruby-czmq-ffi-gen
788 (package
789 (name "ruby-czmq-ffi-gen")
790 (version "0.13.0")
791 (source
792 (origin
793 (method url-fetch)
794 (uri (rubygems-uri "czmq-ffi-gen" version))
795 (sha256
796 (base32
797 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
798 (build-system ruby-build-system)
799 (arguments
800 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
801 #:phases
802 (modify-phases %standard-phases
803 (add-after 'unpack 'patch-lib_dirs
804 (lambda* (#:key inputs #:allow-other-keys)
805 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
806 (("lib\\_dirs = \\[.*\\]")
807 (string-append "lib_dirs = ['"
808 (assoc-ref inputs "czmq") "/lib"
809 "']")))
810 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
811 (("lib\\_dirs = \\[.*\\]")
812 (string-append "lib_dirs = ['"
813 (assoc-ref inputs "zeromq") "/lib"
814 "']"))))))))
815 (inputs
816 `(("zeromq" ,zeromq)
817 ("czmq" ,czmq)))
818 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
819 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
820 (description
821 "These Ruby bindings are not intended to be directly used, but rather
822 used by higher level bindings like those provided by CZTop.")
823 (home-page
824 "https://github.com/paddor/czmq-ffi-gen")
825 (license license:isc)))
826
827 (define-public ruby-cztop
828 (package
829 (name "ruby-cztop")
830 (version "0.12.2")
831 (source
832 (origin
833 (method url-fetch)
834 (uri (rubygems-uri "cztop" version))
835 (sha256
836 (base32
837 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
838 (build-system ruby-build-system)
839 (arguments
840 '(#:test-target "spec"
841 #:phases
842 (modify-phases %standard-phases
843 (add-after 'unpack 'patch-lib_paths
844 (lambda* (#:key inputs #:allow-other-keys)
845 (substitute* "lib/cztop/poller/zmq.rb"
846 (("lib\\_paths = \\[.*\\]")
847 (string-append "lib_paths = ['"
848 (assoc-ref inputs "zeromq") "/lib"
849 "']"))))))))
850 (native-inputs
851 `(("bundler" ,bundler)
852 ("ruby-rspec" ,ruby-rspec)))
853 (inputs
854 `(("zeromq" ,zeromq)))
855 (propagated-inputs
856 `(("ruby-czmq-ffi-gen" ,ruby-czmq-ffi-gen)))
857 (synopsis "CZMQ Ruby bindings")
858 (description
859 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
860 CZMQ. The focus of of CZTop is on being easy to use and providing first class
861 support for security mechanisms.")
862 (home-page "https://github.com/paddor/cztop")
863 (license license:isc)))
864
865 (define-public ruby-saikuro-treemap
866 (package
867 (name "ruby-saikuro-treemap")
868 (version "0.2.0")
869 (source (origin
870 (method url-fetch)
871 (uri (rubygems-uri "saikuro_treemap" version))
872 (sha256
873 (base32
874 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
875 (build-system ruby-build-system)
876 ;; Some of the tests fail because the generated JSON has keys in a
877 ;; different order. This is a problem with the test suite rather than any
878 ;; of the involved libraries.
879 (arguments `(#:tests? #f))
880 (propagated-inputs
881 `(("ruby-json-pure" ,ruby-json-pure)
882 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
883 (synopsis "Generate complexity treemap based on saikuro analysis")
884 (description
885 "This gem generates a treemap showing the complexity of Ruby code on
886 which it is run. It uses Saikuro under the covers to analyze Ruby code
887 complexity.")
888 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
889 (license license:expat)))
890
891 (define-public ruby-options
892 (package
893 (name "ruby-options")
894 (version "2.3.2")
895 (source
896 (origin
897 (method url-fetch)
898 (uri (rubygems-uri "options" version))
899 (sha256
900 (base32
901 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
902 (build-system ruby-build-system)
903 (arguments
904 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
905 #:phases
906 (modify-phases %standard-phases
907 (add-before 'check 'set-LIB
908 (lambda _
909 ;; This is used in the Rakefile, and setting it avoids an issue
910 ;; with running the tests.
911 (setenv "LIB" "options")
912 #t)))))
913 (synopsis "Ruby library to parse options from *args cleanly")
914 (description
915 "The @code{options} library helps with parsing keyword options in Ruby
916 functions.")
917 (home-page "https://github.com/ahoward/options")
918 (license license:ruby)))
919
920 (define-public ruby-erubis
921 (package
922 (name "ruby-erubis")
923 (version "2.7.0")
924 (source
925 (origin
926 (method url-fetch)
927 (uri (rubygems-uri "erubis" version))
928 (sha256
929 (base32
930 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
931 (build-system ruby-build-system)
932 (arguments
933 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
934 (synopsis "Implementation of embedded Ruby (eRuby)")
935 (description
936 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
937 features such as multi-language support, auto escaping, auto trimming spaces
938 around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
939 support.")
940 (home-page "http://www.kuwata-lab.com/erubis/")
941 (license license:expat)))
942
943 (define-public ruby-orderedhash
944 (package
945 (name "ruby-orderedhash")
946 (version "0.0.6")
947 (source (origin
948 (method url-fetch)
949 (uri (rubygems-uri "orderedhash" version))
950 (sha256
951 (base32
952 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
953 (build-system ruby-build-system)
954 (arguments
955 '(#:tests? #f)) ; no test suite
956 (synopsis "Ruby library providing an order-preserving hash")
957 (description "Orderedhash is a Ruby library providing a hash
958 implementation that preserves the order of items and features some array-like
959 extensions.")
960 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
961 (license license:public-domain)))
962
963 (define-public ruby-libxml
964 (package
965 (name "ruby-libxml")
966 (version "3.0.0")
967 (source
968 (origin
969 (method url-fetch)
970 (uri (rubygems-uri "libxml-ruby" version))
971 (sha256
972 (base32
973 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
974 (build-system ruby-build-system)
975 (inputs
976 `(("zlib" ,zlib)
977 ("libxml2" ,libxml2)))
978 (arguments
979 '(#:tests? #f ; test suite hangs for unknown reason
980 #:gem-flags
981 (list "--"
982 (string-append "--with-xml2-include="
983 (assoc-ref %build-inputs "libxml2")
984 "/include/libxml2" ))))
985 (synopsis "Ruby bindings for GNOME Libxml2")
986 (description "The Libxml-Ruby project provides Ruby language bindings for
987 the GNOME Libxml2 XML toolkit.")
988 (home-page "https://xml4r.github.com/libxml-ruby")
989 (license license:expat)))
990
991 (define-public ruby-xml-simple
992 (package
993 (name "ruby-xml-simple")
994 (version "1.1.5")
995 (source (origin
996 (method url-fetch)
997 (uri (rubygems-uri "xml-simple" version))
998 (sha256
999 (base32
1000 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
1001 (build-system ruby-build-system)
1002 (arguments
1003 '(#:tests? #f)) ; no test suite
1004 (synopsis "Simple Ruby library for XML processing")
1005 (description "This library provides a simple API for XML processing in
1006 Ruby.")
1007 (home-page "https://github.com/maik/xml-simple")
1008 (license license:ruby)))
1009
1010 (define-public ruby-thor
1011 (package
1012 (name "ruby-thor")
1013 (version "0.19.4")
1014 (source (origin
1015 (method url-fetch)
1016 (uri (rubygems-uri "thor" version))
1017 (sha256
1018 (base32
1019 "01n5dv9kql60m6a00zc0r66jvaxx98qhdny3klyj0p3w34pad2ns"))))
1020 (build-system ruby-build-system)
1021 (arguments
1022 '(#:tests? #f)) ; no test suite
1023 (native-inputs
1024 `(("bundler" ,bundler)))
1025 (synopsis "Ruby toolkit for building command-line interfaces")
1026 (description "Thor is a toolkit for building powerful command-line
1027 interfaces.")
1028 (home-page "http://whatisthor.com/")
1029 (license license:expat)))
1030
1031 (define-public ruby-lumberjack
1032 (package
1033 (name "ruby-lumberjack")
1034 (version "1.0.13")
1035 (source (origin
1036 (method url-fetch)
1037 (uri (rubygems-uri "lumberjack" version))
1038 (sha256
1039 (base32
1040 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
1041 (build-system ruby-build-system)
1042 (native-inputs
1043 `(("ruby-rspec" ,ruby-rspec)
1044 ("ruby-timecop" ,ruby-timecop)))
1045 (synopsis "Logging utility library for Ruby")
1046 (description "Lumberjack is a simple logging utility that can be a drop in
1047 replacement for Logger or ActiveSupport::BufferedLogger. It provides support
1048 for automatically rolling log files even with multiple processes writing the
1049 same log file.")
1050 (home-page "https://github.com/bdurand/lumberjack")
1051 (license license:expat)))
1052
1053 (define-public ruby-nenv
1054 (package
1055 (name "ruby-nenv")
1056 (version "0.3.0")
1057 (source (origin
1058 (method url-fetch)
1059 (uri (rubygems-uri "nenv" version))
1060 (sha256
1061 (base32
1062 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
1063 (build-system ruby-build-system)
1064 (arguments
1065 `(#:tests? #f)) ; no tests included
1066 (native-inputs
1067 `(("ruby-rspec" ,ruby-rspec)
1068 ("bundler" ,bundler)))
1069 (synopsis "Ruby interface for modifying the environment")
1070 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
1071 and inspect the environment.")
1072 (home-page "https://github.com/e2/nenv")
1073 (license license:expat)))
1074
1075 (define-public ruby-permutation
1076 (package
1077 (name "ruby-permutation")
1078 (version "0.1.8")
1079 (source (origin
1080 (method url-fetch)
1081 (uri (rubygems-uri "permutation" version))
1082 (sha256
1083 (base32
1084 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
1085 (build-system ruby-build-system)
1086 (arguments
1087 `(#:phases
1088 (modify-phases %standard-phases
1089 (add-after 'unpack 'fix-rakefile
1090 (lambda _
1091 (substitute* "Rakefile"
1092 (("require 'rake/gempackagetask'")
1093 "require 'rubygems/package_task'")
1094 (("include Config") ""))
1095 #t))
1096 (replace 'check
1097 (lambda _
1098 (invoke "ruby" "-Ilib" "test/test.rb"))))))
1099 (synopsis "Library to perform operations with sequence permutations")
1100 (description "This package provides a Ruby library to perform different
1101 operations with permutations of sequences, such as strings and arrays.")
1102 (home-page "https://flori.github.io/permutation")
1103 (license license:gpl2))) ; GPL 2 only
1104
1105 (define-public ruby-shellany
1106 (package
1107 (name "ruby-shellany")
1108 (version "0.0.1")
1109 (source (origin
1110 (method url-fetch)
1111 (uri (rubygems-uri "shellany" version))
1112 (sha256
1113 (base32
1114 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
1115 (build-system ruby-build-system)
1116 (arguments
1117 `(#:test-target "default"
1118 #:phases
1119 (modify-phases %standard-phases
1120 (add-after 'unpack 'fix-version-test
1121 (lambda _
1122 (substitute* "spec/shellany_spec.rb"
1123 (("^RSpec") "require \"shellany\"\nRSpec"))
1124 #t)))))
1125 (native-inputs
1126 `(("ruby-rspec" ,ruby-rspec)
1127 ("ruby-nenv" ,ruby-nenv)
1128 ("bundler" ,bundler)))
1129 (synopsis "Capture command output")
1130 (description "Shellany is a Ruby library providing functions to capture
1131 the output produced by running shell commands.")
1132 (home-page "https://rubygems.org/gems/shellany")
1133 (license license:expat)))
1134
1135 (define-public ruby-notiffany
1136 (package
1137 (name "ruby-notiffany")
1138 (version "0.1.1")
1139 (source (origin
1140 (method url-fetch)
1141 (uri (rubygems-uri "notiffany" version))
1142 (sha256
1143 (base32
1144 "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx"))))
1145 (build-system ruby-build-system)
1146 ;; Tests are not included in the gem.
1147 (arguments `(#:tests? #f))
1148 (propagated-inputs
1149 `(("ruby-shellany" ,ruby-shellany)
1150 ("ruby-nenv" ,ruby-nenv)))
1151 (native-inputs
1152 `(("bundler" ,bundler)))
1153 (synopsis "Wrapper libray for notification libraries")
1154 (description "Notiffany is a Ruby wrapper libray for notification
1155 libraries such as Libnotify.")
1156 (home-page "https://github.com/guard/notiffany")
1157 (license license:expat)))
1158
1159 (define-public ruby-formatador
1160 (package
1161 (name "ruby-formatador")
1162 (version "0.2.5")
1163 (source (origin
1164 (method url-fetch)
1165 (uri (rubygems-uri "formatador" version))
1166 (sha256
1167 (base32
1168 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
1169 (build-system ruby-build-system)
1170 ;; Circular dependency: Tests require ruby-shindo, which requires
1171 ;; ruby-formatador at runtime.
1172 (arguments `(#:tests? #f))
1173 (synopsis "Ruby library to format text on stdout")
1174 (description "Formatador is a Ruby library to format text printed to the
1175 standard output stream.")
1176 (home-page "https://github.com/geemus/formatador")
1177 (license license:expat)))
1178
1179 (define-public ruby-shindo
1180 (package
1181 (name "ruby-shindo")
1182 (version "0.3.8")
1183 (source (origin
1184 (method url-fetch)
1185 (uri (rubygems-uri "shindo" version))
1186 (sha256
1187 (base32
1188 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
1189 (build-system ruby-build-system)
1190 (arguments
1191 `(#:test-target "shindo_tests"
1192 #:phases
1193 (modify-phases %standard-phases
1194 (add-after 'unpack 'fix-tests
1195 (lambda _
1196 (substitute* "tests/tests_helper.rb"
1197 (("-rubygems") ""))
1198 (substitute* "Rakefile"
1199 (("system \"shindo") "system \"./bin/shindo")
1200 ;; This test doesn't work, so we disable it.
1201 (("fail \"The build_error test should fail") "#")
1202 ((" -rubygems") ""))
1203 #t)))))
1204 (propagated-inputs
1205 `(("ruby-formatador" ,ruby-formatador)))
1206 (synopsis "Simple depth first Ruby testing")
1207 (description "Shindo is a simple depth first testing library for Ruby.")
1208 (home-page "https://github.com/geemus/shindo")
1209 (license license:expat)))
1210
1211 (define-public ruby-rubygems-tasks
1212 (package
1213 (name "ruby-rubygems-tasks")
1214 (version "0.2.4")
1215 (source (origin
1216 (method url-fetch)
1217 (uri (rubygems-uri "rubygems-tasks" version))
1218 (sha256
1219 (base32
1220 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
1221 (build-system ruby-build-system)
1222 ;; Tests need Internet access.
1223 (arguments `(#:tests? #f))
1224 (native-inputs
1225 `(("ruby-rspec" ,ruby-rspec)
1226 ("ruby-yard" ,ruby-yard)))
1227 (synopsis "Rake tasks for managing and releasing Ruby Gems")
1228 (description "Rubygems-task provides Rake tasks for managing and releasing
1229 Ruby Gems.")
1230 (home-page "https://github.com/postmodern/rubygems-tasks")
1231 (license license:expat)))
1232
1233 (define-public ruby-rubyzip
1234 (package
1235 (name "ruby-rubyzip")
1236 (version "1.2.1")
1237 (source
1238 (origin
1239 (method url-fetch)
1240 (uri (rubygems-uri "rubyzip" version))
1241 (sha256
1242 (base32
1243 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
1244 (build-system ruby-build-system)
1245 (arguments
1246 '(#:phases
1247 (modify-phases %standard-phases
1248 (add-before 'check 'patch-tests
1249 (lambda* (#:key inputs #:allow-other-keys)
1250 (substitute* "test/gentestfiles.rb"
1251 (("/usr/bin/zip")
1252 (string-append
1253 (assoc-ref inputs "zip") "/bin/zip")))
1254 (substitute* "test/input_stream_test.rb"
1255 (("/usr/bin/env ruby") (which "ruby")))
1256 #t)))))
1257 (native-inputs
1258 `(("bundler" ,bundler)
1259 ("ruby-simplecov" ,ruby-simplecov)
1260 ("zip" ,zip)
1261 ("unzip" ,unzip)))
1262 (synopsis "Ruby module is for reading and writing zip files")
1263 (description
1264 "The rubyzip module provides ways to read from and create zip files.")
1265 (home-page "http://github.com/rubyzip/rubyzip")
1266 (license license:bsd-2)))
1267
1268 (define-public ruby-simplecov-html
1269 (package
1270 (name "ruby-simplecov-html")
1271 (version "0.10.2")
1272 (source (origin
1273 (method url-fetch)
1274 (uri (rubygems-uri "simplecov-html" version))
1275 (sha256
1276 (base32
1277 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
1278 (build-system ruby-build-system)
1279 (arguments `(#:tests? #f)) ; there are no tests
1280 (native-inputs
1281 `(("bundler" ,bundler)))
1282 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
1283 (description "This package provides the default HTML formatter for
1284 the SimpleCov code coverage tool for Ruby version 1.9 and above.")
1285 (home-page "https://github.com/colszowka/simplecov-html")
1286 (license license:expat)))
1287
1288 (define-public ruby-simplecov
1289 (package
1290 (name "ruby-simplecov")
1291 (version "0.12.0")
1292 (source (origin
1293 (method url-fetch)
1294 (uri (rubygems-uri "simplecov" version))
1295 (sha256
1296 (base32
1297 "0ffhyrfnq2zm2mc1742a4hqy475g3qa1zf6yfldwg1ldh5sn3qbx"))))
1298 (build-system ruby-build-system)
1299 ;; Simplecov depends on rubocop for code style checking at build time.
1300 ;; Rubocop needs simplecov at build time.
1301 (arguments `(#:tests? #f))
1302 (propagated-inputs
1303 `(("ruby-json" ,ruby-json)
1304 ("ruby-docile" ,ruby-docile)
1305 ("ruby-simplecov-html" ,ruby-simplecov-html)))
1306 (native-inputs
1307 `(("bundler" ,bundler)))
1308 (synopsis "Code coverage framework for Ruby")
1309 (description "SimpleCov is a code coverage framework for Ruby with a
1310 powerful configuration library and automatic merging of coverage across test
1311 suites.")
1312 (home-page "https://github.com/colszowka/simplecov")
1313 (license license:expat)))
1314
1315 (define-public ruby-useragent
1316 (package
1317 (name "ruby-useragent")
1318 (version "0.16.8")
1319 (source (origin
1320 (method url-fetch)
1321 (uri (rubygems-uri "useragent" version))
1322 (sha256
1323 (base32
1324 "1139cjqyv1hk1qcw89k81ajjkqyakqgbcyvmfrsmjqi8yn9kgqhq"))))
1325 (build-system ruby-build-system)
1326 (arguments
1327 '(#:tests? #f)) ; no test suite
1328 (synopsis "HTTP user agent parser for Ruby")
1329 (description "UserAgent is a Ruby library that parses and compares HTTP
1330 User Agents.")
1331 (home-page "https://github.com/gshutler/useragent")
1332 (license license:expat)))
1333
1334 (define-public ruby-bacon
1335 (package
1336 (name "ruby-bacon")
1337 (version "1.2.0")
1338 (source (origin
1339 (method url-fetch)
1340 (uri (rubygems-uri "bacon" version))
1341 (sha256
1342 (base32
1343 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
1344 (build-system ruby-build-system)
1345 (synopsis "Small RSpec clone")
1346 (description "Bacon is a small RSpec clone providing all essential
1347 features.")
1348 (home-page "https://github.com/chneukirchen/bacon")
1349 (license license:expat)))
1350
1351 (define-public ruby-bacon-bits
1352 (package
1353 (name "ruby-bacon-bits")
1354 (version "0.1.0")
1355 (source
1356 (origin
1357 (method url-fetch)
1358 (uri (rubygems-uri "bacon-bits" version))
1359 (sha256
1360 (base32
1361 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
1362 (build-system ruby-build-system)
1363 (arguments
1364 ;; No tests
1365 '(#:tests? #f))
1366 (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
1367 (synopsis "Extensions to Bacon, for disabling tests, before and after
1368 blocks and more")
1369 (description
1370 "This extends the bacon testing framework with useful extensions to
1371 disable tests, have before and after blocks that run once and more.")
1372 (home-page "https://github.com/cldwalker/bacon-bits")
1373 (license license:expat)))
1374
1375 (define-public ruby-connection-pool
1376 (package
1377 (name "ruby-connection-pool")
1378 (version "2.2.2")
1379 (source (origin
1380 (method url-fetch)
1381 (uri (rubygems-uri "connection_pool" version))
1382 (sha256
1383 (base32
1384 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
1385 (build-system ruby-build-system)
1386 (native-inputs
1387 `(("bundler" ,bundler)))
1388 (synopsis "Generic connection pool for Ruby")
1389 (description "Connection_pool provides a generic connection pooling
1390 interface for Ruby programs.")
1391 (home-page "https://github.com/mperham/connection_pool")
1392 (license license:expat)))
1393
1394 (define-public ruby-net-http-persistent
1395 (package
1396 (name "ruby-net-http-persistent")
1397 (version "3.0.0")
1398 (source (origin
1399 (method url-fetch)
1400 (uri (rubygems-uri "net-http-persistent" version))
1401 (sha256
1402 (base32
1403 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
1404 (build-system ruby-build-system)
1405 (native-inputs
1406 `(("ruby-connection-pool" ,ruby-connection-pool)
1407 ("ruby-hoe" ,ruby-hoe)))
1408 (synopsis "Persistent HTTP connection manager")
1409 (description "Net::HTTP::Persistent manages persistent HTTP connections
1410 using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
1411 (home-page "https://github.com/drbrain/net-http-persistent")
1412 (license license:expat)))
1413
1414 (define-public ruby-power-assert
1415 (package
1416 (name "ruby-power-assert")
1417 (version "0.2.7")
1418 (source (origin
1419 (method url-fetch)
1420 (uri (rubygems-uri "power_assert" version))
1421 (sha256
1422 (base32
1423 "0ka6w71lcan4wgf111xi3pcn9ma9lhakv31jg8w007nwzi0xfjbi"))))
1424 (build-system ruby-build-system)
1425 (native-inputs
1426 `(("bundler" ,bundler)))
1427 (synopsis "Assert library with descriptive assertion messages")
1428 (description "Power-assert is an assertion library providing descriptive
1429 assertion messages for tests.")
1430 (home-page "https://github.com/k-tsj/power_assert")
1431 (license (list license:bsd-2 license:ruby))))
1432
1433 (define-public ruby-locale
1434 (package
1435 (name "ruby-locale")
1436 (version "2.1.2")
1437 (source (origin
1438 (method url-fetch)
1439 (uri (rubygems-uri "locale" version))
1440 (sha256
1441 (base32
1442 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
1443 (build-system ruby-build-system)
1444 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1445 ;; which needs ruby-gettext, which needs ruby-locale. To break the
1446 ;; dependency cycle we disable tests.
1447 (arguments `(#:tests? #f))
1448 (native-inputs
1449 `(("bundler" ,bundler)
1450 ("ruby-yard" ,ruby-yard)))
1451 (synopsis "Ruby library providing basic localization APIs")
1452 (description
1453 "Ruby-Locale is the pure ruby library which provides basic APIs for
1454 localization.")
1455 (home-page "https://github.com/ruby-gettext/locale")
1456 (license (list license:lgpl3+ license:ruby))))
1457
1458 (define-public ruby-text
1459 (package
1460 (name "ruby-text")
1461 (version "1.3.1")
1462 (source (origin
1463 (method url-fetch)
1464 (uri (rubygems-uri "text" version))
1465 (sha256
1466 (base32
1467 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
1468 (build-system ruby-build-system)
1469 (synopsis "Collection of text algorithms for Ruby")
1470 (description
1471 "This package provides a collection of text algorithms: Levenshtein,
1472 Soundex, Metaphone, Double Metaphone, Porter Stemming.")
1473 (home-page "https://github.com/threedaymonk/text")
1474 (license license:expat)))
1475
1476 (define-public ruby-gettext
1477 (package
1478 (name "ruby-gettext")
1479 (version "3.1.7")
1480 (source (origin
1481 (method url-fetch)
1482 (uri (rubygems-uri "gettext" version))
1483 (sha256
1484 (base32
1485 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
1486 (build-system ruby-build-system)
1487 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1488 ;; which needs ruby-gettext. To break the dependency cycle we disable
1489 ;; tests.
1490 (arguments `(#:tests? #f))
1491 (propagated-inputs
1492 `(("ruby-locale" ,ruby-locale)
1493 ("ruby-text" ,ruby-text)))
1494 (native-inputs
1495 `(("bundler" ,bundler)
1496 ("ruby-yard" ,ruby-yard)))
1497 (synopsis "GNU gettext-like program for Ruby")
1498 (description
1499 "Gettext is a GNU gettext-like program for Ruby. The catalog
1500 file (po-file) used is the same as that used by GNU gettext, allowing you to
1501 use GNU gettext tools for maintenance.")
1502 (home-page "https://ruby-gettext.github.com/")
1503 (license (list license:lgpl3+ license:ruby))))
1504
1505 (define-public ruby-packnga
1506 (package
1507 (name "ruby-packnga")
1508 (version "1.0.4")
1509 (source (origin
1510 (method url-fetch)
1511 (uri (rubygems-uri "packnga" version))
1512 (sha256
1513 (base32
1514 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
1515 (build-system ruby-build-system)
1516 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
1517 ;; To break the dependency cycle we disable tests.
1518 (arguments `(#:tests? #f))
1519 (propagated-inputs
1520 `(("ruby-gettext" ,ruby-gettext)
1521 ("ruby-yard" ,ruby-yard)))
1522 (native-inputs
1523 `(("bundler" ,bundler)))
1524 (synopsis "Utility library to package internationalized libraries")
1525 (description
1526 "Packnga is a library to translate to many languages using YARD.")
1527 (home-page "http://ranguba.org/packnga/")
1528 (license license:lgpl2.0+)))
1529
1530 (define-public ruby-test-unit
1531 (package
1532 (name "ruby-test-unit")
1533 (version "3.2.5")
1534 (source (origin
1535 (method url-fetch)
1536 (uri (rubygems-uri "test-unit" version))
1537 (sha256
1538 (base32
1539 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
1540 (build-system ruby-build-system)
1541 (propagated-inputs
1542 `(("ruby-power-assert" ,ruby-power-assert)))
1543 (native-inputs
1544 `(("bundler" ,bundler)
1545 ("ruby-packnga" ,ruby-packnga)
1546 ("ruby-yard" ,ruby-yard)))
1547 (synopsis "Unit testing framework for Ruby")
1548 (description "@code{Test::Unit} is unit testing framework for Ruby, based
1549 on xUnit principles. These were originally designed by Kent Beck, creator of
1550 extreme programming software development methodology, for Smalltalk's SUnit.
1551 It allows writing tests, checking results and automated testing in Ruby.")
1552 (home-page "https://test-unit.github.io/")
1553 (license (list license:psfl license:ruby))))
1554
1555 (define-public ruby-metaclass
1556 (package
1557 (name "ruby-metaclass")
1558 (version "0.0.4")
1559 (source (origin
1560 (method url-fetch)
1561 (uri (rubygems-uri "metaclass" version))
1562 (sha256
1563 (base32
1564 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
1565 (build-system ruby-build-system)
1566 (arguments
1567 `(#:phases
1568 (modify-phases %standard-phases
1569 (add-after 'unpack 'add-test-unit-to-search-path
1570 (lambda* (#:key inputs #:allow-other-keys)
1571 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
1572 (substitute* "Rakefile"
1573 (("t\\.libs << \"test\"" line)
1574 (string-append line "; t.libs << \""
1575 test-unit "/lib/ruby/vendor_ruby"
1576 "/gems/test-unit-"
1577 ,(package-version ruby-test-unit)
1578 "/lib\""))))
1579 #t)))))
1580 (native-inputs
1581 `(("bundler" ,bundler)
1582 ("ruby-test-unit" ,ruby-test-unit)))
1583 (synopsis "Ruby library adding metaclass method to all objects")
1584 (description
1585 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
1586 objects.")
1587 (home-page "https://github.com/floehopper/metaclass")
1588 (license license:expat)))
1589
1590 (define-public ruby-blankslate
1591 (package
1592 (name "ruby-blankslate")
1593 (version "3.1.3")
1594 (source (origin
1595 (method url-fetch)
1596 (uri (rubygems-uri "blankslate" version))
1597 (sha256
1598 (base32
1599 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
1600 (build-system ruby-build-system)
1601 (arguments
1602 `(#:phases
1603 (modify-phases %standard-phases
1604 (replace 'check
1605 (lambda _ (invoke "rspec" "spec/"))))))
1606 (native-inputs
1607 `(("bundler" ,bundler)
1608 ("ruby-rspec" ,ruby-rspec)))
1609 (synopsis "Abstract base class with no predefined methods")
1610 (description
1611 "BlankSlate provides an abstract base class with no predefined
1612 methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
1613 as a base class when writing classes that depend upon
1614 @code{method_missing} (e.g. dynamic proxies).")
1615 (home-page "https://github.com/masover/blankslate")
1616 (license license:expat)))
1617
1618 (define-public ruby-bond
1619 (package
1620 (name "ruby-bond")
1621 (version "0.5.1")
1622 (source
1623 (origin
1624 (method url-fetch)
1625 (uri (rubygems-uri "bond" version))
1626 (sha256
1627 (base32
1628 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
1629 (build-system ruby-build-system)
1630 (native-inputs
1631 `(("ruby-bacon" ,ruby-bacon)
1632 ("ruby-bacon-bits" ,ruby-bacon-bits)
1633 ("ruby-mocha-on-bacon" ,ruby-mocha-on-bacon)))
1634 (synopsis "Bond can provide custom autocompletion for arguments, methods
1635 and more")
1636 (description
1637 "Bond can autocomplete argument(s) to methods, uniquely completing per
1638 module, per method and per argument. Bond provides a configuration system and
1639 a DSL for creating custom completions and completion rules. Bond can also
1640 load completions that ship with gems. Bond is able to offer more than irb's
1641 completion since it uses the full line of input when completing as opposed to
1642 irb's last-word approach.")
1643 (home-page "http://tagaholic.me/bond/")
1644 (license license:expat)))
1645
1646 (define-public ruby-instantiator
1647 (package
1648 (name "ruby-instantiator")
1649 (version "0.0.7")
1650 (source (origin
1651 (method url-fetch)
1652 (uri (rubygems-uri "instantiator" version))
1653 (sha256
1654 (base32
1655 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
1656 (build-system ruby-build-system)
1657 (arguments
1658 `(#:phases
1659 (modify-phases %standard-phases
1660 (add-after 'unpack 'add-test-unit-to-search-path
1661 (lambda* (#:key inputs #:allow-other-keys)
1662 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
1663 (substitute* "Rakefile"
1664 (("t\\.libs << \"test\"" line)
1665 (string-append line "; t.libs << \""
1666 test-unit "/lib/ruby/vendor_ruby"
1667 "/gems/test-unit-"
1668 ,(package-version ruby-test-unit)
1669 "/lib\""))))
1670 #t)))))
1671 (propagated-inputs
1672 `(("ruby-blankslate" ,ruby-blankslate)))
1673 (native-inputs
1674 `(("bundler" ,bundler)
1675 ("ruby-test-unit" ,ruby-test-unit)))
1676 (synopsis "Instantiate an arbitrary Ruby class")
1677 (description
1678 "Instantiator lets you instantiate an arbitrary Ruby class without
1679 knowing anything about the constructor.")
1680 (home-page "https://github.com/floehopper/instantiator")
1681 (license license:expat)))
1682
1683 (define-public ruby-introspection
1684 (package
1685 (name "ruby-introspection")
1686 (version "0.0.4")
1687 (source (origin
1688 (method url-fetch)
1689 (uri (rubygems-uri "introspection" version))
1690 (sha256
1691 (base32
1692 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
1693 (build-system ruby-build-system)
1694 (arguments
1695 `(#:phases
1696 (modify-phases %standard-phases
1697 (add-after 'unpack 'add-test-unit-to-search-path
1698 (lambda* (#:key inputs #:allow-other-keys)
1699 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
1700 (substitute* "Rakefile"
1701 (("t\\.libs << \"test\"" line)
1702 (string-append line "; t.libs << \""
1703 test-unit "/lib/ruby/vendor_ruby"
1704 "/gems/test-unit-"
1705 ,(package-version ruby-test-unit)
1706 "/lib\""))))
1707 #t)))))
1708 (propagated-inputs
1709 `(("ruby-instantiator" ,ruby-instantiator)
1710 ("ruby-metaclass" ,ruby-metaclass)))
1711 (native-inputs
1712 `(("bundler" ,bundler)
1713 ("ruby-blankslate" ,ruby-blankslate)
1714 ("ruby-test-unit" ,ruby-test-unit)))
1715 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
1716 (description
1717 "Introspection provides tools to inspect the hierarchy of method
1718 definitions on a Ruby object.")
1719 (home-page "https://github.com/floehopper/introspection")
1720 (license license:expat)))
1721
1722 (define-public ruby-redcarpet
1723 (package
1724 (name "ruby-redcarpet")
1725 (version "3.4.0")
1726 (source (origin
1727 (method url-fetch)
1728 (uri (rubygems-uri "redcarpet" version))
1729 (sha256
1730 (base32
1731 "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7"))))
1732 (build-system ruby-build-system)
1733 (arguments
1734 `(#:phases
1735 (modify-phases %standard-phases
1736 ;; The gem archive does not include the conformance tests.
1737 (add-after 'unpack 'disable-conformance-tests
1738 (lambda _
1739 (substitute* "Rakefile"
1740 (("task :test => %w\\[test:unit test:conformance\\]")
1741 "task :test => %w[test:unit]"))
1742 #t)))))
1743 (native-inputs
1744 `(("bundler" ,bundler)
1745 ("ruby-test-unit" ,ruby-test-unit)
1746 ("ruby-rake-compiler" ,ruby-rake-compiler)))
1747 (synopsis "Extensible Markdown to (X)HTML converter")
1748 (description
1749 "Redcarpet is an extensible Ruby library for Markdown processing and
1750 conversion to (X)HTML.")
1751 (home-page "https://github.com/vmg/redcarpet")
1752 (license license:expat)))
1753
1754 (define-public ruby-mocha
1755 (package
1756 (name "ruby-mocha")
1757 (version "1.1.0")
1758 (source (origin
1759 (method url-fetch)
1760 (uri (rubygems-uri "mocha" version))
1761 (sha256
1762 (base32
1763 "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
1764 (build-system ruby-build-system)
1765 (arguments
1766 `(#:phases
1767 (modify-phases %standard-phases
1768 (add-after 'unpack 'add-test-unit-to-search-path
1769 (lambda* (#:key inputs #:allow-other-keys)
1770 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
1771 (substitute* "Rakefile"
1772 (("t\\.libs << 'test'" line)
1773 (string-append line "; t.libs << \""
1774 test-unit "/lib/ruby/vendor_ruby"
1775 "/gems/test-unit-"
1776 ,(package-version ruby-test-unit)
1777 "/lib\""))))
1778 #t))
1779 (add-before 'check 'use-latest-redcarpet
1780 (lambda _
1781 (substitute* "mocha.gemspec"
1782 (("<redcarpet>.freeze, \\[\"~> 1\"\\]")
1783 "<redcarpet>.freeze, [\">= 3\"]"))
1784 #t))
1785 (add-before 'check 'hardcode-version
1786 (lambda _
1787 ;; Mocha is undefined at build time
1788 (substitute* "Rakefile"
1789 (("#\\{Mocha::VERSION\\}") ,version))
1790 #t))
1791 (add-before 'check 'remove-failing-test
1792 ;; FIXME: This test fails for reasons unrelated to Guix packaging.
1793 (lambda _
1794 (delete-file "test/acceptance/stubbing_nil_test.rb")
1795 #t)))))
1796 (propagated-inputs
1797 `(("ruby-metaclass" ,ruby-metaclass)))
1798 (native-inputs
1799 `(("bundler" ,bundler)
1800 ("ruby-yard" ,ruby-yard)
1801 ("ruby-introspection" ,ruby-introspection)
1802 ("ruby-test-unit" ,ruby-test-unit)
1803 ("ruby-redcarpet" ,ruby-redcarpet)))
1804 (synopsis "Mocking and stubbing library for Ruby")
1805 (description
1806 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
1807 allows mocking and stubbing of methods on real (non-mock) classes.")
1808 (home-page "http://gofreerange.com/mocha/docs")
1809 (license license:expat)))
1810
1811 (define-public ruby-mocha-on-bacon
1812 (package
1813 (name "ruby-mocha-on-bacon")
1814 (version "0.2.3")
1815 (source
1816 (origin
1817 (method url-fetch)
1818 (uri (rubygems-uri "mocha-on-bacon" version))
1819 (sha256
1820 (base32
1821 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
1822 (build-system ruby-build-system)
1823 (arguments
1824 ;; rubygems.org release missing tests
1825 '(#:tests? #f))
1826 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
1827 (synopsis "Mocha adapter for Bacon")
1828 (description
1829 "This package provides a Mocha adapter for Bacon, allowing you to use the
1830 Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
1831 (home-page
1832 "https://github.com/alloy/mocha-on-bacon")
1833 (license license:expat)))
1834
1835 (define-public ruby-net-ssh
1836 (package
1837 (name "ruby-net-ssh")
1838 (version "4.2.0")
1839 (source (origin
1840 (method url-fetch)
1841 (uri (rubygems-uri "net-ssh" version))
1842 (sha256
1843 (base32
1844 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
1845 (build-system ruby-build-system)
1846 (native-inputs
1847 `(("bundler" ,bundler)
1848 ("ruby-mocha" ,ruby-mocha)
1849 ("ruby-test-unit" ,ruby-test-unit)))
1850 (synopsis "Ruby implementation of the SSH2 client protocol")
1851 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
1852 client protocol. It allows you to write programs that invoke and interact
1853 with processes on remote servers, via SSH2.")
1854 (home-page "https://github.com/net-ssh/net-ssh")
1855 (license license:expat)))
1856
1857 (define-public ruby-net-scp
1858 (package
1859 (name "ruby-net-scp")
1860 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
1861 (version "1.2.2.rc2")
1862 (source
1863 (origin
1864 (method url-fetch)
1865 (uri (string-append "https://github.com/net-ssh/net-scp/archive/v"
1866 version ".tar.gz"))
1867 (sha256
1868 (base32
1869 "0xyf17mhgvyz54xjj9ria4wnq3x62bhmkfgzqv8jwiip2bplv1nk"))))
1870 (build-system ruby-build-system)
1871 (native-inputs
1872 `(("bundler" ,bundler)
1873 ("ruby-test-unit" ,ruby-test-unit)
1874 ("ruby-mocha" ,ruby-mocha)))
1875 (propagated-inputs
1876 `(("ruby-net-ssh" ,ruby-net-ssh)))
1877 (synopsis "Pure-Ruby SCP client library")
1878 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
1879 client protocol.")
1880 (home-page "https://github.com/net-ssh/net-scp")
1881 (license license:expat)))
1882
1883 (define-public ruby-minitest
1884 (package
1885 (name "ruby-minitest")
1886 (version "5.10.3")
1887 (source (origin
1888 (method url-fetch)
1889 (uri (rubygems-uri "minitest" version))
1890 (sha256
1891 (base32
1892 "05521clw19lrksqgvg2kmm025pvdhdaniix52vmbychrn2jm7kz2"))))
1893 (build-system ruby-build-system)
1894 (native-inputs
1895 `(("ruby-hoe" ,ruby-hoe)))
1896 (synopsis "Small test suite library for Ruby")
1897 (description "Minitest provides a complete suite of Ruby testing
1898 facilities supporting TDD, BDD, mocking, and benchmarking.")
1899 (home-page "https://github.com/seattlerb/minitest")
1900 (license license:expat)))
1901
1902 ;; This is the last release of Minitest 4, which is used by some packages.
1903 (define-public ruby-minitest-4
1904 (package (inherit ruby-minitest)
1905 (version "4.7.5")
1906 (source (origin
1907 (method url-fetch)
1908 (uri (rubygems-uri "minitest" version))
1909 (sha256
1910 (base32
1911 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
1912 (arguments
1913 `(#:phases
1914 (modify-phases %standard-phases
1915 (add-after 'unpack 'remove-unsupported-method
1916 (lambda _
1917 (substitute* "Rakefile"
1918 (("self\\.rubyforge_name = .*") ""))
1919 #t))
1920 (add-after 'build 'exclude-failing-tests
1921 (lambda _
1922 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
1923 ;; Fixnum.
1924 (delete-file "test/minitest/test_minitest_spec.rb")
1925 #t)))))))
1926
1927 (define-public ruby-minitest-sprint
1928 (package
1929 (name "ruby-minitest-sprint")
1930 (version "1.1.0")
1931 (source (origin
1932 (method url-fetch)
1933 (uri (rubygems-uri "minitest-sprint" version))
1934 (sha256
1935 (base32
1936 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
1937 (build-system ruby-build-system)
1938 (native-inputs
1939 `(("ruby-hoe" ,ruby-hoe)
1940 ("ruby-minitest" ,ruby-minitest)))
1941 (synopsis "Fast test suite runner for minitest")
1942 (description "Minitest-sprint is a test runner for minitest that makes it
1943 easier to re-run individual failing tests.")
1944 (home-page "https://github.com/seattlerb/minitest-sprint")
1945 (license license:expat)))
1946
1947 (define-public ruby-minitest-bacon
1948 (package
1949 (name "ruby-minitest-bacon")
1950 (version "1.0.3")
1951 (source (origin
1952 (method url-fetch)
1953 (uri (rubygems-uri "minitest-bacon" version))
1954 (sha256
1955 (base32
1956 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
1957 (build-system ruby-build-system)
1958 (native-inputs
1959 `(("ruby-hoe" ,ruby-hoe)))
1960 (inputs
1961 `(("ruby-minitest" ,ruby-minitest)))
1962 (synopsis "Bacon compatibility library for minitest")
1963 (description "Minitest-bacon extends minitest with bacon-like
1964 functionality, making it easier to migrate test suites from bacon to minitest.")
1965 (home-page "https://github.com/seattlerb/minitest-bacon")
1966 (license license:expat)))
1967
1968 (define-public ruby-minitest-focus
1969 (package
1970 (name "ruby-minitest-focus")
1971 (version "1.1.2")
1972 (source
1973 (origin
1974 (method url-fetch)
1975 (uri (rubygems-uri "minitest-focus" version))
1976 (sha256
1977 (base32
1978 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
1979 (build-system ruby-build-system)
1980 (propagated-inputs
1981 `(("ruby-minitest" ,ruby-minitest)))
1982 (native-inputs
1983 `(("ruby-hoe" ,ruby-hoe)))
1984 (synopsis "Allows a few specific tests to be focused on")
1985 (description
1986 "@code{minitest-focus} gives the ability focus on a few tests with ease
1987 without having to use command-line arguments. It introduces a @code{focus}
1988 class method for use in testing classes, specifying that the next defined test
1989 is to be run.")
1990 (home-page "https://github.com/seattlerb/minitest-focus")
1991 (license license:expat)))
1992
1993 (define-public ruby-minitest-pretty-diff
1994 ;; Use git reference because gem is out of date and does not contain testing
1995 ;; script. There are no releases on GitHub.
1996 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
1997 (package
1998 (name "ruby-minitest-pretty-diff")
1999 (version (string-append "0.1-1." (string-take commit 8)))
2000 (source (origin
2001 (method git-fetch)
2002 (uri (git-reference
2003 (url "https://github.com/adammck/minitest-pretty_diff.git")
2004 (commit commit)))
2005 (file-name (string-append name "-" version "-checkout"))
2006 (sha256
2007 (base32
2008 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
2009 (build-system ruby-build-system)
2010 (arguments
2011 `(#:phases
2012 (modify-phases %standard-phases
2013 (replace 'check
2014 (lambda _
2015 (invoke "script/test"))))))
2016 (native-inputs
2017 `(("bundler" ,bundler)
2018 ("ruby-turn" ,ruby-turn)))
2019 (synopsis "Pretty-print hashes and arrays in MiniTest")
2020 (description
2021 "@code{minitest-pretty_diff} monkey-patches
2022 @code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
2023 diffing them. This makes it easier to spot differences between nested
2024 structures when tests fail.")
2025 (home-page "https://github.com/adammck/minitest-pretty_diff")
2026 (license license:expat))))
2027
2028 (define-public ruby-minitest-moar
2029 (package
2030 (name "ruby-minitest-moar")
2031 (version "0.0.4")
2032 (source
2033 (origin
2034 (method url-fetch)
2035 (uri (rubygems-uri "minitest-moar" version))
2036 (sha256
2037 (base32
2038 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
2039 (build-system ruby-build-system)
2040 (arguments
2041 `(#:phases
2042 (modify-phases %standard-phases
2043 (add-before 'check 'clean-dependencies
2044 (lambda _
2045 ;; Remove all gems defined in the Gemfile because these are not
2046 ;; truly needed.
2047 (substitute* "Gemfile"
2048 (("gem .*") ""))
2049 ;; Remove byebug as not needed to run tests.
2050 (substitute* "test/test_helper.rb"
2051 (("require 'byebug'") ""))
2052 #t)))))
2053 (native-inputs
2054 `(("bundler" ,bundler)
2055 ("ruby-minitest" ,ruby-minitest)))
2056 (synopsis "Extra features and changes to MiniTest")
2057 (description "@code{MiniTest Moar} add some additional features and
2058 changes some default behaviours in MiniTest. For instance, Moar replaces the
2059 MiniTest @code{Object#stub} with a global @code{stub} method.")
2060 (home-page "https://github.com/dockyard/minitest-moar")
2061 (license license:expat)))
2062
2063 (define-public ruby-minitest-bonus-assertions
2064 (package
2065 (name "ruby-minitest-bonus-assertions")
2066 (version "3.0")
2067 (source
2068 (origin
2069 (method url-fetch)
2070 (uri (rubygems-uri "minitest-bonus-assertions" version))
2071 (sha256
2072 (base32
2073 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
2074 (build-system ruby-build-system)
2075 (arguments
2076 `(#:phases
2077 (modify-phases %standard-phases
2078 (add-before 'check 'clean-dependencies
2079 (lambda _
2080 ;; Remove unneeded require statement that would entail another
2081 ;; dependency.
2082 (substitute* "test/minitest_config.rb"
2083 (("require 'minitest/bisect'") ""))
2084 #t)))))
2085 (native-inputs
2086 `(("ruby-hoe" ,ruby-hoe)
2087 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
2088 ("ruby-minitest-focus" ,ruby-minitest-focus)
2089 ("ruby-minitest-moar" ,ruby-minitest-moar)))
2090 (synopsis "Bonus assertions for @code{Minitest}")
2091 (description
2092 "Minitest bonus assertions provides extra MiniTest assertions. For
2093 instance, it provides @code{assert_true}, @code{assert_false} and
2094 @code{assert_set_equal}.")
2095 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
2096 (license license:expat)))
2097
2098 (define-public ruby-minitest-rg
2099 (package
2100 (name "ruby-minitest-rg")
2101 (version "5.2.0")
2102 (source
2103 (origin
2104 (method url-fetch)
2105 (uri (rubygems-uri "minitest-rg" version))
2106 (sha256
2107 (base32
2108 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
2109 (build-system ruby-build-system)
2110 (arguments
2111 ;; Some tests fail even outside Guix, so disable tests.
2112 ;; https://github.com/blowmage/minitest-rg/issues/12
2113 ;; https://github.com/blowmage/minitest-rg/pull/13
2114 `(#:tests? #f))
2115 (propagated-inputs
2116 `(("ruby-minitest" ,ruby-minitest)))
2117 (synopsis "Coloured output for Minitest")
2118 (description
2119 "@code{minitest-rg} changes the colour of the output from Minitest.")
2120 (home-page "http://blowmage.com/minitest-rg")
2121 (license license:expat)))
2122
2123 (define-public ruby-minitest-hooks
2124 (package
2125 (name "ruby-minitest-hooks")
2126 (version "1.4.2")
2127 (source
2128 (origin
2129 (method url-fetch)
2130 (uri (rubygems-uri "minitest-hooks" version))
2131 (sha256
2132 (base32
2133 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
2134 (build-system ruby-build-system)
2135 (arguments
2136 '(#:test-target "spec"))
2137 (native-inputs
2138 `(("ruby-sequel" ,ruby-sequel)
2139 ("ruby-sqlite3" ,ruby-sqlite3)))
2140 (synopsis "Hooks for the minitest framework")
2141 (description
2142 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
2143 @code{around_all} hooks for Minitest. This allows, for instance, running each
2144 suite of specs inside a database transaction, running each spec inside its own
2145 savepoint inside that transaction. This can significantly speed up testing
2146 for specs that share expensive database setup code.")
2147 (home-page "https://github.com/jeremyevans/minitest-hooks")
2148 (license license:expat)))
2149
2150 (define-public ruby-daemons
2151 (package
2152 (name "ruby-daemons")
2153 (version "1.2.5")
2154 (source (origin
2155 (method url-fetch)
2156 (uri (rubygems-uri "daemons" version))
2157 (sha256
2158 (base32
2159 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
2160 (build-system ruby-build-system)
2161 (arguments
2162 `(#:tests? #f)) ; no test suite
2163 (synopsis "Daemonize Ruby programs")
2164 (description "Daemons provides a way to wrap existing Ruby scripts to be
2165 run as a daemon and to be controlled by simple start/stop/restart commands.")
2166 (home-page "https://github.com/thuehlinger/daemons")
2167 (license license:expat)))
2168
2169 (define-public ruby-data_uri
2170 (package
2171 (name "ruby-data_uri")
2172 (version "0.1.0")
2173 (source
2174 (origin
2175 (method url-fetch)
2176 (uri (rubygems-uri "data_uri" version))
2177 (sha256
2178 (base32
2179 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
2180 (build-system ruby-build-system)
2181 (synopsis "URI class for parsing data URIs")
2182 (description
2183 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
2184 embedded inside a URI. The URI::Data class provides support for parsing these
2185 URIs using the normal URI.parse method.")
2186 (home-page "https://github.com/dball/data_uri")
2187 (license license:expat)))
2188
2189 (define-public ruby-git
2190 (package
2191 (name "ruby-git")
2192 (version "1.3.0")
2193 (source (origin
2194 (method url-fetch)
2195 (uri (rubygems-uri "git" version))
2196 (sha256
2197 (base32
2198 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
2199 (build-system ruby-build-system)
2200 (arguments
2201 `(#:tests? #f ; no tests
2202 #:phases (modify-phases %standard-phases
2203 (add-after 'install 'patch-git-binary
2204 (lambda* (#:key inputs outputs #:allow-other-keys)
2205 ;; Make the default git binary an absolute path to the
2206 ;; store.
2207 (let ((git (string-append (assoc-ref inputs "git")
2208 "/bin/git"))
2209 (config (string-append
2210 (assoc-ref outputs "out")
2211 "/lib/ruby/vendor_ruby/gems/git-"
2212 ,version "/lib/git/config.rb")))
2213 (substitute* (list config)
2214 (("'git'")
2215 (string-append "'" git "'")))
2216 #t))))))
2217 (inputs
2218 `(("git" ,git)))
2219 (synopsis "Ruby wrappers for Git")
2220 (description "Ruby/Git is a Ruby library that can be used to create, read
2221 and manipulate Git repositories by wrapping system calls to the git binary.")
2222 (home-page "https://github.com/schacon/ruby-git")
2223 (license license:expat)))
2224
2225 (define-public ruby-slop
2226 (package
2227 (name "ruby-slop")
2228 (version "4.5.0")
2229 (source (origin
2230 (method url-fetch)
2231 (uri (rubygems-uri "slop" version))
2232 (sha256
2233 (base32
2234 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
2235 (build-system ruby-build-system)
2236 (native-inputs
2237 `(("ruby-minitest" ,ruby-minitest)))
2238 (synopsis "Ruby command line option parser")
2239 (description "Slop provides a Ruby domain specific language for gathering
2240 options and parsing command line flags.")
2241 (home-page "https://github.com/leejarvis/slop")
2242 (license license:expat)))
2243
2244 (define-public ruby-slop-3
2245 (package (inherit ruby-slop)
2246 (version "3.6.0")
2247 (source (origin
2248 (method url-fetch)
2249 (uri (rubygems-uri "slop" version))
2250 (sha256
2251 (base32
2252 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
2253
2254 (define-public ruby-multipart-post
2255 (package
2256 (name "ruby-multipart-post")
2257 (version "2.0.0")
2258 (source (origin
2259 (method url-fetch)
2260 (uri (rubygems-uri "multipart-post" version))
2261 (sha256
2262 (base32
2263 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
2264 (build-system ruby-build-system)
2265 (native-inputs
2266 `(("bundler" ,bundler)))
2267 (synopsis "Multipart POST library for Ruby")
2268 (description "Multipart-Post Adds multipart POST capability to Ruby's
2269 net/http library.")
2270 (home-page "https://github.com/nicksieger/multipart-post")
2271 (license license:expat)))
2272
2273 (define-public ruby-multi-json
2274 (package
2275 (name "ruby-multi-json")
2276 (version "1.13.1")
2277 (source
2278 (origin
2279 (method url-fetch)
2280 ;; Tests are not distributed at rubygems.org so download from GitHub
2281 ;; instead.
2282 (uri (string-append "https://github.com/intridea/multi_json/archive/v"
2283 version ".tar.gz"))
2284 (file-name (string-append name "-" version ".tar.gz"))
2285 (sha256
2286 (base32
2287 "1s64xqvrnrxmb59v6b2kchnisawg5ai9ky1w60dy6z6ws9la1xv4"))))
2288 (build-system ruby-build-system)
2289 (arguments
2290 `(#:phases
2291 (modify-phases %standard-phases
2292 (add-after 'unpack 'remove-signing-key-reference
2293 (lambda _
2294 (substitute* "multi_json.gemspec"
2295 ((".*spec.signing_key.*") ""))
2296 #t)))))
2297 (native-inputs
2298 `(("bundler" ,bundler)
2299 ("ruby-rspec" ,ruby-rspec)
2300 ("ruby-yard" ,ruby-yard)
2301 ("ruby-json-pure" ,ruby-json-pure)
2302 ("ruby-oj" ,ruby-oj)
2303 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
2304 (synopsis "Common interface to multiple JSON libraries for Ruby")
2305 (description
2306 "This package provides a common interface to multiple JSON libraries,
2307 including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
2308 NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
2309 (home-page "https://github.com/intridea/multi_json")
2310 (license license:expat)))
2311
2312 (define-public ruby-multi-test
2313 (package
2314 (name "ruby-multi-test")
2315 (version "0.1.2")
2316 (source
2317 (origin
2318 (method url-fetch)
2319 (uri (rubygems-uri "multi_test" version))
2320 (sha256
2321 (base32
2322 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
2323 (build-system ruby-build-system)
2324 (arguments
2325 '(;; Tests require different sets of specific gem versions to be available,
2326 ;; and there is no gemfile that specifies the newest versions of
2327 ;; dependencies to be tested.
2328 #:tests? #f))
2329 (synopsis
2330 "Interface to testing libraries loaded into a running Ruby process")
2331 (description
2332 "@code{multi_test} provides a uniform interface onto whatever testing
2333 libraries that have been loaded into a running Ruby process to help control
2334 rogue test/unit/autorun requires.")
2335 (home-page "https://github.com/cucumber/multi_test")
2336 (license license:expat)))
2337
2338 (define-public ruby-arel
2339 (package
2340 (name "ruby-arel")
2341 (version "8.0.0")
2342 (source (origin
2343 (method url-fetch)
2344 (uri (rubygems-uri "arel" version))
2345 (sha256
2346 (base32
2347 "0nw0qbc6ph625p6n3maqq9f527vz3nbl0hk72fbyka8jzsmplxzl"))))
2348 (build-system ruby-build-system)
2349 (arguments '(#:tests? #f)) ; no tests
2350 (home-page "https://github.com/rails/arel")
2351 (synopsis "SQL AST manager for Ruby")
2352 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
2353 Ruby. It simplifies the generation of complex SQL queries and adapts to
2354 various relational database implementations.")
2355 (license license:expat)))
2356
2357 (define-public ruby-minitar
2358 ;; We package from the GitHub source to fix the security issue reported at
2359 ;; https://github.com/halostatue/minitar/issues/16.
2360 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
2361 (package
2362 (name "ruby-minitar")
2363 (version (string-append "0.5.4-1." (string-take commit 8)))
2364 (source
2365 (origin
2366 (method git-fetch)
2367 (uri (git-reference
2368 (url "https://github.com/halostatue/minitar.git")
2369 (commit commit)))
2370 (file-name (string-append name "-" version "-checkout"))
2371 (sha256
2372 (base32
2373 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
2374 (build-system ruby-build-system)
2375 (arguments
2376 '(#:tests? #f)) ; missing a gemspec
2377 (synopsis "Ruby library and utility for handling tar archives")
2378 (description
2379 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
2380 that provides the ability to deal with POSIX tar archive files.")
2381 (home-page "http://www.github.com/atoulme/minitar")
2382 (license (list license:gpl2+ license:ruby)))))
2383
2384 (define-public ruby-mini-portile
2385 (package
2386 (name "ruby-mini-portile")
2387 (version "0.6.2")
2388 (source
2389 (origin
2390 (method url-fetch)
2391 (uri (rubygems-uri "mini_portile" version))
2392 (sha256
2393 (base32
2394 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
2395 (build-system ruby-build-system)
2396 (arguments
2397 '(#:tests? #f)) ; tests require network access
2398 (synopsis "Ports system for Ruby developers")
2399 (description "Mini-portile is a port/recipe system for Ruby developers.
2400 It provides a standard way to compile against specific versions of libraries
2401 to reproduce user environments.")
2402 (home-page "https://github.com/flavorjones/mini_portile")
2403 (license license:expat)))
2404
2405 (define-public ruby-mini-portile-2
2406 (package (inherit ruby-mini-portile)
2407 (version "2.2.0")
2408 (source (origin
2409 (method url-fetch)
2410 (uri (rubygems-uri "mini_portile2" version))
2411 (sha256
2412 (base32
2413 "0g5bpgy08q0nc0anisg3yvwc1gc3inl854fcrg48wvg7glqd6dpm"))))))
2414
2415 (define-public ruby-nokogiri
2416 (package
2417 (name "ruby-nokogiri")
2418 (version "1.8.0")
2419 (source (origin
2420 (method url-fetch)
2421 (uri (rubygems-uri "nokogiri" version))
2422 (sha256
2423 (base32
2424 "1nffsyx1xjg6v5n9rrbi8y1arrcx2i5f21cp6clgh9iwiqkr7rnn"))))
2425 (build-system ruby-build-system)
2426 (arguments
2427 ;; Tests fail because Nokogiri can only test with an installed extension,
2428 ;; and also because many test framework dependencies are missing.
2429 `(#:tests? #f
2430 #:gem-flags (list "--" "--use-system-libraries"
2431 (string-append "--with-xml2-include="
2432 (assoc-ref %build-inputs "libxml2")
2433 "/include/libxml2" ))
2434 #:phases
2435 (modify-phases %standard-phases
2436 (add-before 'build 'patch-extconf
2437 ;; 'pkg-config' is not included in the GEM_PATH during
2438 ;; installation, so we add it directly to the load path.
2439 (lambda* (#:key inputs #:allow-other-keys)
2440 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
2441 (substitute* "ext/nokogiri/extconf.rb"
2442 (("gem 'pkg-config'.*")
2443 (string-append "$:.unshift '"
2444 pkg-config "/lib/ruby/vendor_ruby"
2445 "/gems/pkg-config-"
2446 ,(package-version ruby-pkg-config)
2447 "/lib'\n"))))
2448 #t)))))
2449 (native-inputs
2450 `(("ruby-hoe" ,ruby-hoe)))
2451 (inputs
2452 `(("zlib" ,zlib)
2453 ("libxml2" ,libxml2)
2454 ("libxslt" ,libxslt)))
2455 (propagated-inputs
2456 `(("ruby-mini-portile" ,ruby-mini-portile-2)
2457 ("ruby-pkg-config" ,ruby-pkg-config)))
2458 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
2459 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
2460 both CSS3 selector and XPath 1.0 support.")
2461 (home-page "http://www.nokogiri.org/")
2462 (license license:expat)))
2463
2464 (define-public ruby-method-source
2465 (package
2466 (name "ruby-method-source")
2467 (version "0.9.0")
2468 (source
2469 (origin
2470 (method url-fetch)
2471 (uri (rubygems-uri "method_source" version))
2472 (sha256
2473 (base32
2474 "0xqj21j3vfq4ldia6i2akhn2qd84m0iqcnsl49kfpq3xk6x0dzgn"))))
2475 (build-system ruby-build-system)
2476 (arguments
2477 `(#:test-target "spec"))
2478 (native-inputs
2479 `(("ruby-rspec" ,ruby-rspec)
2480 ("git" ,git)))
2481 (synopsis "Retrieve the source code for Ruby methods")
2482 (description "Method_source retrieves the source code for Ruby methods.
2483 Additionally, it can extract source code from Proc and Lambda objects or just
2484 extract comments.")
2485 (home-page "https://github.com/banister/method_source")
2486 (license license:expat)))
2487
2488 (define-public ruby-coderay
2489 (package
2490 (name "ruby-coderay")
2491 (version "1.1.2")
2492 (source
2493 (origin
2494 (method url-fetch)
2495 (uri (rubygems-uri "coderay" version))
2496 (sha256
2497 (base32
2498 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
2499 (build-system ruby-build-system)
2500 (arguments
2501 '(#:tests? #f)) ; missing test files
2502 (synopsis "Ruby syntax highlighting library")
2503 (description "Coderay is a Ruby library that provides syntax highlighting
2504 for select languages.")
2505 (home-page "http://coderay.rubychan.de")
2506 (license license:expat)))
2507
2508 (define-public ruby-progress_bar
2509 (package
2510 (name "ruby-progress_bar")
2511 (version "1.1.0")
2512 (source
2513 (origin
2514 (method url-fetch)
2515 (uri (rubygems-uri "progress_bar" version))
2516 (sha256
2517 (base32
2518 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
2519 (build-system ruby-build-system)
2520 (arguments
2521 '(#:test-target "spec"))
2522 (propagated-inputs
2523 `(("ruby-highline" ,ruby-highline)
2524 ("ruby-options" ,ruby-options)))
2525 (native-inputs
2526 `(("bundler" ,bundler)
2527 ("ruby-rspec" ,ruby-rspec)
2528 ("ruby-timecop" ,ruby-timecop)))
2529 (synopsis
2530 "Ruby library for displaying progress bars")
2531 (description
2532 "ProgressBar is a simple library for displaying progress bars. The
2533 maximum value is configurable, and additional information can be displayed
2534 like the percentage completion, estimated time remaining, elapsed time and
2535 rate.")
2536 (home-page "https://github.com/paul/progress_bar")
2537 (license license:wtfpl2)))
2538
2539 (define-public ruby-pry
2540 (package
2541 (name "ruby-pry")
2542 (version "0.11.3")
2543 (source
2544 (origin
2545 (method url-fetch)
2546 (uri (rubygems-uri "pry" version))
2547 (sha256
2548 (base32
2549 "1mh312k3y94sj0pi160wpia0ps8f4kmzvm505i6bvwynfdh7v30g"))))
2550 (build-system ruby-build-system)
2551 (arguments
2552 '(#:tests? #f)) ; no tests
2553 (propagated-inputs
2554 `(("ruby-coderay" ,ruby-coderay)
2555 ("ruby-method-source" ,ruby-method-source)))
2556 (synopsis "Ruby REPL")
2557 (description "Pry is an IRB alternative and runtime developer console for
2558 Ruby. It features syntax highlighting, a plugin architecture, runtime
2559 invocation, and source and documentation browsing.")
2560 (home-page "https://pryrepl.org")
2561 (license license:expat)))
2562
2563 (define-public ruby-guard
2564 (package
2565 (name "ruby-guard")
2566 (version "2.13.0")
2567 (source (origin
2568 (method url-fetch)
2569 ;; The gem does not include a Rakefile, nor does it contain a
2570 ;; gemspec file, nor does it come with the tests. This is why
2571 ;; we fetch the tarball from Github.
2572 (uri (string-append "https://github.com/guard/guard/archive/v"
2573 version ".tar.gz"))
2574 (file-name (string-append name "-" version ".tar.gz"))
2575 (sha256
2576 (base32
2577 "1hwj0yi17k6f5axrm0k2bb7fq71dlp0zfywmd7pij9iimbppcca0"))))
2578 (build-system ruby-build-system)
2579 (arguments
2580 `(#:tests? #f ; tests require cucumber
2581 #:phases
2582 (modify-phases %standard-phases
2583 (add-after 'unpack 'remove-git-ls-files
2584 (lambda* (#:key outputs #:allow-other-keys)
2585 (substitute* "guard.gemspec"
2586 (("git ls-files -z") "find . -type f -print0"))
2587 #t))
2588 (replace 'build
2589 (lambda _
2590 (invoke "gem" "build" "guard.gemspec"))))))
2591 (propagated-inputs
2592 `(("ruby-formatador" ,ruby-formatador)
2593 ("ruby-listen" ,ruby-listen)
2594 ("ruby-lumberjack" ,ruby-lumberjack)
2595 ("ruby-nenv" ,ruby-nenv)
2596 ("ruby-notiffany" ,ruby-notiffany)
2597 ("ruby-pry" ,ruby-pry)
2598 ("ruby-shellany" ,ruby-shellany)
2599 ("ruby-thor" ,ruby-thor)))
2600 (native-inputs
2601 `(("bundler" ,bundler)
2602 ("ruby-rspec" ,ruby-rspec)))
2603 (synopsis "Tool to handle events on file system modifications")
2604 (description
2605 "Guard is a command line tool to easily handle events on file system
2606 modifications. Guard automates various tasks by running custom rules whenever
2607 file or directories are modified.")
2608 (home-page "http://guardgem.org/")
2609 (license license:expat)))
2610
2611 (define-public ruby-thread-safe
2612 (package
2613 (name "ruby-thread-safe")
2614 (version "0.3.6")
2615 (source
2616 (origin
2617 (method url-fetch)
2618 (uri (rubygems-uri "thread_safe" version))
2619 (sha256
2620 (base32
2621 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
2622 (build-system ruby-build-system)
2623 (arguments
2624 '(#:tests? #f)) ; needs simplecov, among others
2625 (synopsis "Thread-safe utilities for Ruby")
2626 (description "The thread_safe library provides thread-safe collections and
2627 utilities for Ruby.")
2628 (home-page "https://github.com/ruby-concurrency/thread_safe")
2629 (license license:asl2.0)))
2630
2631 (define-public ruby-tzinfo
2632 (package
2633 (name "ruby-tzinfo")
2634 (version "1.2.4")
2635 (source
2636 (origin
2637 (method url-fetch)
2638 (uri (rubygems-uri "tzinfo" version))
2639 (sha256
2640 (base32
2641 "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp"))))
2642 (build-system ruby-build-system)
2643 (propagated-inputs
2644 `(("ruby-thread-safe" ,ruby-thread-safe)))
2645 (synopsis "Time zone library for Ruby")
2646 (description "TZInfo is a Ruby library that provides daylight savings
2647 aware transformations between times in different time zones.")
2648 (home-page "https://tzinfo.github.io")
2649 (license license:expat)))
2650
2651 (define-public ruby-tzinfo-data
2652 (package
2653 (name "ruby-tzinfo-data")
2654 (version "1.2017.3")
2655 (source
2656 (origin
2657 (method url-fetch)
2658 ;; Download from GitHub because the rubygems version does not contain
2659 ;; Rakefile or tests.
2660 (uri (string-append
2661 "https://github.com/tzinfo/tzinfo-data/archive/v"
2662 version
2663 ".tar.gz"))
2664 (file-name (string-append name "-" version ".tar.gz"))
2665 (sha256
2666 (base32
2667 "01wff7syqzikbxalbg3isgxasmvzicr85bzadzkb6bf20bip4v54"))
2668 ;; Remove the known test failure.
2669 ;; https://github.com/tzinfo/tzinfo-data/issues/10
2670 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
2671 (patches (search-patches
2672 "ruby-tzinfo-data-ignore-broken-test.patch"))))
2673 (build-system ruby-build-system)
2674 (propagated-inputs
2675 `(("ruby-tzinfo" ,ruby-tzinfo)))
2676 (synopsis "Data from the IANA Time Zone database")
2677 (description
2678 "This library provides @code{TZInfo::Data}, which contains data from the
2679 IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
2680 (home-page "https://tzinfo.github.io")
2681 (license license:expat)))
2682
2683 (define-public ruby-rb-inotify
2684 (package
2685 (name "ruby-rb-inotify")
2686 (version "0.9.10")
2687 (source
2688 (origin
2689 (method url-fetch)
2690 (uri (rubygems-uri "rb-inotify" version))
2691 (sha256
2692 (base32
2693 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
2694 (build-system ruby-build-system)
2695 (arguments
2696 '(#:tests? #f ; there are no tests
2697 #:phases
2698 (modify-phases %standard-phases
2699 ;; Building the gemspec with rake is not working here since it is
2700 ;; generated with Jeweler. It is also unnecessary because the
2701 ;; existing gemspec does not use any development tools to generate a
2702 ;; list of files.
2703 (replace 'build
2704 (lambda _
2705 (invoke "gem" "build" "rb-inotify.gemspec"))))))
2706 (propagated-inputs
2707 `(("ruby-ffi" ,ruby-ffi)))
2708 (native-inputs
2709 `(("ruby-yard" ,ruby-yard)))
2710 (synopsis "Ruby wrapper for Linux's inotify")
2711 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
2712 kernel subsystem for monitoring changes to files and directories.")
2713 (home-page "https://github.com/nex3/rb-inotify")
2714 (license license:expat)))
2715
2716 (define-public ruby-pry-editline
2717 (package
2718 (name "ruby-pry-editline")
2719 (version "1.1.2")
2720 (source (origin
2721 (method url-fetch)
2722 (uri (rubygems-uri "pry-editline" version))
2723 (sha256
2724 (base32
2725 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
2726 (build-system ruby-build-system)
2727 (arguments `(#:tests? #f)) ; no tests included
2728 (native-inputs
2729 `(("bundler" ,bundler)))
2730 (synopsis "Open the current REPL line in an editor")
2731 (description
2732 "This gem provides a plugin for the Ruby REPL to enable opening the
2733 current line in an external editor.")
2734 (home-page "https://github.com/tpope/pry-editline")
2735 (license license:expat)))
2736
2737 (define-public ruby-sdoc
2738 (package
2739 (name "ruby-sdoc")
2740 (version "0.4.2")
2741 (source (origin
2742 (method url-fetch)
2743 (uri (rubygems-uri "sdoc" version))
2744 (sha256
2745 (base32
2746 "0qhvy10vnmrqcgh8494m13kd5ag9c3sczzhfasv8j0294ylk679n"))))
2747 (build-system ruby-build-system)
2748 (arguments
2749 `(#:phases
2750 (modify-phases %standard-phases
2751 (add-before 'check 'set-rubylib-and-patch-gemfile
2752 (lambda _
2753 (setenv "RUBYLIB" "lib")
2754 (substitute* "sdoc.gemspec"
2755 (("s.add_runtime_dependency.*") "\n")
2756 (("s.add_dependency.*") "\n"))
2757 (substitute* "Gemfile"
2758 (("gem \"rake\".*")
2759 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
2760 #t)))))
2761 (propagated-inputs
2762 `(("ruby-json" ,ruby-json)))
2763 (native-inputs
2764 `(("bundler" ,bundler)
2765 ("ruby-minitest" ,ruby-minitest)
2766 ("ruby-hoe" ,ruby-hoe)))
2767 (synopsis "Generate searchable RDoc documentation")
2768 (description
2769 "SDoc is an RDoc documentation generator to build searchable HTML
2770 documentation for Ruby code.")
2771 (home-page "https://github.com/voloko/sdoc")
2772 (license license:expat)))
2773
2774 (define-public ruby-tins
2775 (package
2776 (name "ruby-tins")
2777 (version "1.15.0")
2778 (source (origin
2779 (method url-fetch)
2780 (uri (rubygems-uri "tins" version))
2781 (sha256
2782 (base32
2783 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
2784 (build-system ruby-build-system)
2785 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
2786 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
2787 ;; the gemspec.
2788 (arguments
2789 `(#:tests? #f ; there are no tests
2790 #:phases
2791 (modify-phases %standard-phases
2792 (replace 'build
2793 (lambda _
2794 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
2795 ;; causes an error.
2796 (substitute* "tins.gemspec"
2797 (("\"lib/spruz\", ") ""))
2798 (invoke "gem" "build" "tins.gemspec"))))))
2799 (synopsis "Assorted tools for Ruby")
2800 (description "Tins is a Ruby library providing assorted tools.")
2801 (home-page "https://github.com/flori/tins")
2802 (license license:expat)))
2803
2804 (define-public ruby-gem-hadar
2805 (package
2806 (name "ruby-gem-hadar")
2807 (version "1.9.1")
2808 (source (origin
2809 (method url-fetch)
2810 (uri (rubygems-uri "gem_hadar" version))
2811 (sha256
2812 (base32
2813 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
2814 (build-system ruby-build-system)
2815 ;; This gem needs itself at development time. We disable rebuilding of the
2816 ;; gemspec to avoid this loop.
2817 (arguments
2818 `(#:tests? #f ; there are no tests
2819 #:phases
2820 (modify-phases %standard-phases
2821 (replace 'build
2822 (lambda _
2823 (invoke "gem" "build" "gem_hadar.gemspec"))))))
2824 (propagated-inputs
2825 `(("git" ,git)
2826 ("ruby-tins" ,ruby-tins)
2827 ("ruby-yard" ,ruby-yard)))
2828 (synopsis "Library for the development of Ruby gems")
2829 (description
2830 "This library contains some useful functionality to support the
2831 development of Ruby gems.")
2832 (home-page "https://github.com/flori/gem_hadar")
2833 (license license:expat)))
2834
2835 (define-public ruby-minitest-tu-shim
2836 (package
2837 (name "ruby-minitest-tu-shim")
2838 (version "1.3.3")
2839 (source (origin
2840 (method url-fetch)
2841 (uri (rubygems-uri "minitest_tu_shim" version))
2842 (sha256
2843 (base32
2844 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
2845 (build-system ruby-build-system)
2846 (arguments
2847 `(#:phases
2848 (modify-phases %standard-phases
2849 (add-after 'unpack 'fix-test-include-path
2850 (lambda* (#:key inputs #:allow-other-keys)
2851 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
2852 (substitute* "Rakefile"
2853 (("Hoe\\.add_include_dirs .*")
2854 (string-append "Hoe.add_include_dirs \""
2855 minitest "/lib/ruby/vendor_ruby"
2856 "/gems/minitest-"
2857 ,(package-version ruby-minitest-4)
2858 "/lib" "\""))))
2859 #t))
2860 (add-before 'check 'fix-test-assumptions
2861 (lambda _
2862 ;; The test output includes the file name, so a couple of tests
2863 ;; fail. Changing the regular expressions slightly fixes this
2864 ;; problem.
2865 (substitute* "test/test_mini_test.rb"
2866 (("output.sub!\\(.*, 'FILE:LINE'\\)")
2867 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
2868 (("gsub\\(/.*, 'FILE:LINE'\\)")
2869 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
2870 #t)))))
2871 (propagated-inputs
2872 `(("ruby-minitest-4" ,ruby-minitest-4)))
2873 (native-inputs
2874 `(("ruby-hoe" ,ruby-hoe)))
2875 (synopsis "Adapter library between minitest and test/unit")
2876 (description
2877 "This library bridges the gap between the small and fast minitest and
2878 Ruby's large and slower test/unit.")
2879 (home-page "https://rubygems.org/gems/minitest_tu_shim")
2880 (license license:expat)))
2881
2882 (define-public ruby-term-ansicolor
2883 (package
2884 (name "ruby-term-ansicolor")
2885 (version "1.6.0")
2886 (source (origin
2887 (method url-fetch)
2888 (uri (rubygems-uri "term-ansicolor" version))
2889 (sha256
2890 (base32
2891 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
2892 (build-system ruby-build-system)
2893 ;; Rebuilding the gemspec seems to require git, even though this is not a
2894 ;; git repository, so we just build the gem from the existing gemspec.
2895 (arguments
2896 `(#:phases
2897 (modify-phases %standard-phases
2898 (add-after 'unpack 'fix-test
2899 (lambda -
2900 (substitute* "tests/hsl_triple_test.rb"
2901 (("0\\\\\\.0%")
2902 "0\\.?0?%"))))
2903 (replace 'build
2904 (lambda _
2905 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
2906 (propagated-inputs
2907 `(("ruby-tins" ,ruby-tins)))
2908 (native-inputs
2909 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2910 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
2911 (synopsis "Ruby library to control the attributes of terminal output")
2912 (description
2913 "This Ruby library uses ANSI escape sequences to control the attributes
2914 of terminal output.")
2915 (home-page "https://flori.github.io/term-ansicolor/")
2916 ;; There is no mention of the "or later" clause.
2917 (license license:gpl2)))
2918
2919 (define-public ruby-pstree
2920 (package
2921 (name "ruby-pstree")
2922 (version "0.1.0")
2923 (source (origin
2924 (method url-fetch)
2925 (uri (rubygems-uri "pstree" version))
2926 (sha256
2927 (base32
2928 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
2929 (build-system ruby-build-system)
2930 (native-inputs
2931 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2932 ("bundler" ,bundler)))
2933 (synopsis "Create a process tree data structure")
2934 (description
2935 "This library uses the output of the @code{ps} command to create a
2936 process tree data structure for the current host.")
2937 (home-page "https://github.com/flori/pstree")
2938 ;; There is no mention of the "or later" clause.
2939 (license license:gpl2)))
2940
2941 (define-public ruby-utils
2942 (package
2943 (name "ruby-utils")
2944 (version "0.9.0")
2945 (source (origin
2946 (method url-fetch)
2947 (uri (rubygems-uri "utils" version))
2948 (sha256
2949 (base32
2950 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
2951 (build-system ruby-build-system)
2952 (propagated-inputs
2953 `(("ruby-tins" ,ruby-tins)
2954 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
2955 ("ruby-pstree" ,ruby-pstree)
2956 ("ruby-pry-editline" ,ruby-pry-editline)))
2957 (native-inputs
2958 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2959 ("bundler" ,bundler)))
2960 (synopsis "Command line tools for working with Ruby")
2961 (description
2962 "This package provides assorted command line tools that may be useful
2963 when working with Ruby code.")
2964 (home-page "https://github.com/flori/utils")
2965 ;; There is no mention of the "or later" clause.
2966 (license license:gpl2)))
2967
2968 (define-public ruby-json
2969 (package
2970 (name "ruby-json")
2971 (version "2.1.0")
2972 (source
2973 (origin
2974 (method url-fetch)
2975 (uri (rubygems-uri "json" version))
2976 (sha256
2977 (base32
2978 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
2979 (build-system ruby-build-system)
2980 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
2981 (synopsis "JSON library for Ruby")
2982 (description "This Ruby library provides a JSON implementation written as
2983 a native C extension.")
2984 (home-page "http://json-jruby.rubyforge.org/")
2985 (license (list license:ruby license:gpl2)))) ; GPL2 only
2986
2987 (define-public ruby-json-pure
2988 (package
2989 (name "ruby-json-pure")
2990 (version "2.1.0")
2991 (source (origin
2992 (method url-fetch)
2993 (uri (rubygems-uri "json_pure" version))
2994 (sha256
2995 (base32
2996 "12yf9fmhr4c2jm3xl20vf1qyz5i63vc8a6ngz9j0f86nqwhmi2as"))))
2997 (build-system ruby-build-system)
2998 (arguments
2999 `(#:phases
3000 (modify-phases %standard-phases
3001 (add-after 'unpack 'fix-rakefile
3002 (lambda _
3003 (substitute* "Rakefile"
3004 ;; Since this is not a git repository, do not call 'git'.
3005 (("`git ls-files`") "`find . -type f |sort`")
3006 ;; Loosen dependency constraint.
3007 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
3008 #t))
3009 (add-after 'replace-git-ls-files 'regenerate-gemspec
3010 (lambda _
3011 ;; Regenerate gemspec so loosened dependency constraints are
3012 ;; propagated.
3013 (invoke "rake" "gemspec"))))))
3014 (native-inputs
3015 `(("bundler" ,bundler)
3016 ("ragel" ,ragel)
3017 ("ruby-simplecov" ,ruby-simplecov)
3018 ("ruby-test-unit" ,ruby-test-unit)))
3019 (synopsis "JSON implementation in pure Ruby")
3020 (description
3021 "This package provides a JSON implementation written in pure Ruby.")
3022 (home-page "https://flori.github.com/json")
3023 (license license:ruby)))
3024
3025 ;; Even though this package only provides bindings for a Mac OSX API it is
3026 ;; required by "ruby-listen" at runtime.
3027 (define-public ruby-rb-fsevent
3028 (package
3029 (name "ruby-rb-fsevent")
3030 (version "0.10.3")
3031 (source (origin
3032 (method url-fetch)
3033 (uri (rubygems-uri "rb-fsevent" version))
3034 (sha256
3035 (base32
3036 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
3037 (build-system ruby-build-system)
3038 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
3039 ;; "listen", which needs "rb-fsevent" at runtime.
3040 (arguments `(#:tests? #f))
3041 (synopsis "FSEvents API with signals catching")
3042 (description
3043 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
3044 (home-page "https://rubygems.org/gems/rb-fsevent")
3045 (license license:expat)))
3046
3047 (define-public ruby-listen
3048 (package
3049 (name "ruby-listen")
3050 (version "3.1.5")
3051 (source
3052 (origin
3053 (method url-fetch)
3054 (uri (rubygems-uri "listen" version))
3055 (sha256
3056 (base32
3057 "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx"))))
3058 (build-system ruby-build-system)
3059 (arguments '(#:tests? #f)) ; no tests
3060 (propagated-inputs
3061 `(("ruby-rb-inotify" ,ruby-rb-inotify)
3062 ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
3063 (synopsis "Listen to file modifications")
3064 (description "The Listen gem listens to file modifications and notifies
3065 you about the changes.")
3066 (home-page "https://github.com/guard/listen")
3067 (license license:expat)))
3068
3069 (define-public ruby-listen-3.0
3070 (package
3071 (inherit ruby-listen)
3072 (version "3.0.8")
3073 (source (origin
3074 (method url-fetch)
3075 (uri (rubygems-uri "listen" version))
3076 (sha256
3077 (base32
3078 "1l0y7hbyfiwpvk172r28hsdqsifq1ls39hsfmzi1vy4ll0smd14i"))))))
3079
3080 (define-public ruby-activesupport
3081 (package
3082 (name "ruby-activesupport")
3083 (version "5.2.1")
3084 (source
3085 (origin
3086 (method url-fetch)
3087 (uri (rubygems-uri "activesupport" version))
3088 (sha256
3089 (base32
3090 "0ziy6xk31k4fs115cdkba1ys4i8nzcyri7a2jig7nx7k5h7li6l2"))))
3091 (build-system ruby-build-system)
3092 (arguments
3093 `(#:phases
3094 (modify-phases %standard-phases
3095 (replace 'check
3096 (lambda _
3097 ;; There are no tests, instead attempt to load the library.
3098 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
3099 (propagated-inputs
3100 `(("ruby-concurrent" ,ruby-concurrent)
3101 ("ruby-i18n" ,ruby-i18n)
3102 ("ruby-minitest" ,ruby-minitest)
3103 ("ruby-tzinfo" ,ruby-tzinfo)
3104 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
3105 (synopsis "Ruby on Rails utility library")
3106 (description "ActiveSupport is a toolkit of support libraries and Ruby
3107 core extensions extracted from the Rails framework. It includes support for
3108 multibyte strings, internationalization, time zones, and testing.")
3109 (home-page "http://www.rubyonrails.org")
3110 (license license:expat)))
3111
3112 (define-public ruby-crass
3113 (package
3114 (name "ruby-crass")
3115 (version "1.0.4")
3116 (source (origin
3117 (method url-fetch)
3118 (uri (rubygems-uri "crass" version))
3119 (sha256
3120 (base32
3121 "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi"))))
3122 (build-system ruby-build-system)
3123 (native-inputs
3124 `(("bundler" ,bundler)
3125 ("ruby-minitest" ,ruby-minitest)))
3126 (synopsis "Pure Ruby CSS parser")
3127 (description
3128 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
3129 (home-page "https://github.com/rgrove/crass/")
3130 (license license:expat)))
3131
3132 (define-public ruby-nokogumbo
3133 (let ((commit "fb51ff299a1c34346837580b6d1d9a60fadf5dbd"))
3134 (package
3135 (name "ruby-nokogumbo")
3136 (version (string-append "1.4.7-1." (string-take commit 8)))
3137 (source (origin
3138 ;; We use the git reference, because there's no Rakefile in the
3139 ;; published gem and the tarball on Github is outdated.
3140 (method git-fetch)
3141 (uri (git-reference
3142 (url "https://github.com/rubys/nokogumbo.git")
3143 (commit "d56f954d20a")))
3144 (file-name (string-append name "-" version "-checkout"))
3145 (sha256
3146 (base32
3147 "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
3148 (build-system ruby-build-system)
3149 (arguments
3150 `(#:modules ((guix build ruby-build-system)
3151 (guix build utils)
3152 (ice-9 rdelim))
3153 #:phases
3154 (modify-phases %standard-phases
3155 (add-after 'unpack 'build-gemspec
3156 (lambda _
3157 (substitute* "Rakefile"
3158 ;; Build Makefile even without a copy of gumbo-parser sources
3159 (("'gumbo-parser/src',") "")
3160 ;; We don't bundle gumbo-parser sources
3161 (("'gumbo-parser/src/\\*',") "")
3162 (("'gumbo-parser/visualc/include/\\*',") "")
3163 ;; The definition of SOURCES will be cut in gemspec, and
3164 ;; "FileList" will be undefined.
3165 (("SOURCES \\+ FileList\\[")
3166 "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
3167
3168 ;; Copy the Rakefile and cut out the gemspec.
3169 (copy-file "Rakefile" ".gemspec")
3170 (with-atomic-file-replacement ".gemspec"
3171 (lambda (in out)
3172 (let loop ((line (read-line in 'concat))
3173 (skipping? #t))
3174 (if (eof-object? line)
3175 #t
3176 (let ((skip-next? (if skipping?
3177 (not (string-prefix? "SPEC =" line))
3178 (string-prefix? "end" line))))
3179 (when (or (not skipping?)
3180 (and skipping? (not skip-next?)))
3181 (format #t "~a" line)
3182 (display line out))
3183 (loop (read-line in 'concat) skip-next?))))))
3184 #t)))))
3185 (inputs
3186 `(("gumbo-parser" ,gumbo-parser)))
3187 (propagated-inputs
3188 `(("ruby-nokogiri" ,ruby-nokogiri)))
3189 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
3190 (description
3191 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
3192 access the result as a Nokogiri parsed document.")
3193 (home-page "https://github.com/rubys/nokogumbo/")
3194 (license license:asl2.0))))
3195
3196 (define-public ruby-sanitize
3197 (package
3198 (name "ruby-sanitize")
3199 (version "4.6.3")
3200 (source (origin
3201 (method url-fetch)
3202 ;; The gem does not include the Rakefile, so we download the
3203 ;; release tarball from Github.
3204 (uri (string-append "https://github.com/rgrove/"
3205 "sanitize/archive/v" version ".tar.gz"))
3206 (file-name (string-append name "-" version ".tar.gz"))
3207 (sha256
3208 (base32
3209 "1fmqppwif3cm8h79006jfzkdnlxxzlry9kzk03psk0d5xpg55ycc"))))
3210 (build-system ruby-build-system)
3211 (propagated-inputs
3212 `(("ruby-crass" ,ruby-crass)
3213 ("ruby-nokogiri" ,ruby-nokogiri)
3214 ("ruby-nokogumbo" ,ruby-nokogumbo)))
3215 (native-inputs
3216 `(("bundler" ,bundler)
3217 ("ruby-minitest" ,ruby-minitest)
3218 ("ruby-redcarpet" ,ruby-redcarpet)
3219 ("ruby-yard" ,ruby-yard)))
3220 (synopsis "Whitelist-based HTML and CSS sanitizer")
3221 (description
3222 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
3223 acceptable elements, attributes, and CSS properties, Sanitize will remove all
3224 unacceptable HTML and/or CSS from a string.")
3225 (home-page "https://github.com/rgrove/sanitize/")
3226 (license license:expat)))
3227
3228 (define-public ruby-oj
3229 (package
3230 (name "ruby-oj")
3231 (version "3.6.7")
3232 (source
3233 (origin
3234 (method url-fetch)
3235 ;; Version on rubygems.org does not contain Rakefile, so download from
3236 ;; GitHub instead.
3237 (uri (string-append "https://github.com/ohler55/oj/archive/v"
3238 version ".tar.gz"))
3239 (file-name (string-append name "-" version ".tar.gz"))
3240 (sha256
3241 (base32
3242 "1x28ga72jxlnmsd8g8c0fw81vlh54r0qgagw2lxsd3x3la091g2h"))))
3243 (build-system ruby-build-system)
3244 (arguments
3245 '(#:test-target "test_all"
3246 #:phases
3247 (modify-phases %standard-phases
3248 (add-before 'check 'disable-bundler
3249 (lambda _
3250 (substitute* "Rakefile"
3251 (("Bundler\\.with_clean_env") "1.times")
3252 (("bundle exec ") "")))))))
3253 (native-inputs
3254 `(("bundler" ,bundler)
3255 ("ruby-rspec" ,ruby-rspec)
3256 ("ruby-rake-compiler" ,ruby-rake-compiler)))
3257 (synopsis "JSON parser for Ruby optimized for speed")
3258 (description
3259 "Oj is a JSON parser and generator for Ruby, where the encoding and
3260 decoding of JSON is implemented as a C extension to Ruby.")
3261 (home-page "http://www.ohler.com/oj")
3262 (license (list license:expat ; Ruby code
3263 license:bsd-3)))) ; extension code
3264
3265 (define-public ruby-ox
3266 (package
3267 (name "ruby-ox")
3268 (version "2.6.0")
3269 (source
3270 (origin
3271 (method url-fetch)
3272 (uri (rubygems-uri "ox" version))
3273 (sha256
3274 (base32
3275 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
3276 (build-system ruby-build-system)
3277 (arguments
3278 '(#:tests? #f)) ; no tests
3279 (synopsis "Optimized XML library for Ruby")
3280 (description
3281 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
3282 written as a native C extension. It was designed to be an alternative to
3283 Nokogiri and other Ruby XML parsers for generic XML parsing and as an
3284 alternative to Marshal for Object serialization. ")
3285 (home-page "http://www.ohler.com/ox")
3286 (license license:expat)))
3287
3288 (define-public ruby-redcloth
3289 (package
3290 (name "ruby-redcloth")
3291 (version "4.3.2")
3292 (source (origin
3293 (method url-fetch)
3294 (uri (rubygems-uri "RedCloth" version))
3295 (sha256
3296 (base32
3297 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
3298 (build-system ruby-build-system)
3299 (arguments
3300 `(#:tests? #f ; no tests
3301 #:phases
3302 (modify-phases %standard-phases
3303 ;; Redcloth has complicated rake tasks to build various versions for
3304 ;; multiple targets using RVM. We don't want this so we just use the
3305 ;; existing gemspec.
3306 (replace 'build
3307 (lambda _
3308 (invoke "gem" "build" "redcloth.gemspec"))))))
3309 (native-inputs
3310 `(("bundler" ,bundler)
3311 ("ruby-diff-lcs" ,ruby-diff-lcs)
3312 ("ruby-rspec-2" ,ruby-rspec-2)))
3313 (synopsis "Textile markup language parser for Ruby")
3314 (description
3315 "RedCloth is a Ruby parser for the Textile markup language.")
3316 (home-page "http://redcloth.org")
3317 (license license:expat)))
3318
3319 (define-public ruby-pg
3320 (package
3321 (name "ruby-pg")
3322 (version "0.21.0")
3323 (source
3324 (origin
3325 (method url-fetch)
3326 (uri (rubygems-uri "pg" version))
3327 (sha256
3328 (base32
3329 "00vhasqwc4f98qb4wxqn2h07fjwzhp5lwyi41j2gndi2g02wrdqh"))))
3330 (build-system ruby-build-system)
3331 (arguments
3332 '(#:test-target "spec"))
3333 (native-inputs
3334 `(("ruby-rake-compiler" ,ruby-rake-compiler)
3335 ("ruby-hoe" ,ruby-hoe)
3336 ("ruby-rspec" ,ruby-rspec)))
3337 (inputs
3338 `(("postgresql" ,postgresql-9.6)))
3339 (synopsis "Ruby interface to PostgreSQL")
3340 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
3341 with PostgreSQL 8.4 and later.")
3342 (home-page "https://bitbucket.org/ged/ruby-pg")
3343 (license license:ruby)))
3344
3345 (define-public ruby-byebug
3346 (package
3347 (name "ruby-byebug")
3348 (version "9.0.6")
3349 (source
3350 (origin
3351 (method url-fetch)
3352 (uri (rubygems-uri "byebug" version))
3353 (sha256
3354 (base32
3355 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
3356 (build-system ruby-build-system)
3357 (arguments
3358 '(#:tests? #f)) ; no tests
3359 (synopsis "Debugger for Ruby 2")
3360 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
3361 TracePoint C API for execution control and the Debug Inspector C API for call
3362 stack navigation. The core component provides support that front-ends can
3363 build on. It provides breakpoint handling and bindings for stack frames among
3364 other things and it comes with a command line interface.")
3365 (home-page "https://github.com/deivid-rodriguez/byebug")
3366 (license license:bsd-2)))
3367
3368 (define-public ruby-netrc
3369 (package
3370 (name "ruby-netrc")
3371 (version "0.11.0")
3372 (source (origin
3373 (method url-fetch)
3374 (uri (rubygems-uri "netrc" version))
3375 (sha256
3376 (base32
3377 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
3378 (build-system ruby-build-system)
3379 (arguments
3380 `(#:phases
3381 (modify-phases %standard-phases
3382 (replace 'check
3383 ;; There is no Rakefile and minitest can only run one file at once,
3384 ;; so we have to iterate over all test files.
3385 (lambda _
3386 (map (lambda (file)
3387 (invoke "ruby" "-Itest" file))
3388 (find-files "./test" "test_.*\\.rb")))))))
3389 (native-inputs
3390 `(("ruby-minitest" ,ruby-minitest)))
3391 (synopsis "Library to read and update netrc files")
3392 (description
3393 "This library can read and update netrc files, preserving formatting
3394 including comments and whitespace.")
3395 (home-page "https://github.com/geemus/netrc")
3396 (license license:expat)))
3397
3398 (define-public ruby-unf-ext
3399 (package
3400 (name "ruby-unf-ext")
3401 (version "0.0.7.1")
3402 (source (origin
3403 (method url-fetch)
3404 (uri (rubygems-uri "unf_ext" version))
3405 (sha256
3406 (base32
3407 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
3408 (build-system ruby-build-system)
3409 (arguments
3410 `(#:phases
3411 (modify-phases %standard-phases
3412 (add-after 'build 'build-ext
3413 (lambda _ (invoke "rake" "compile:unf_ext"))))))
3414 (native-inputs
3415 `(("bundler" ,bundler)
3416 ("ruby-rake-compiler" ,ruby-rake-compiler)
3417 ("ruby-test-unit" ,ruby-test-unit)))
3418 (synopsis "Unicode normalization form support library")
3419 (description
3420 "This package provides unicode normalization form support for Ruby.")
3421 (home-page "https://github.com/knu/ruby-unf_ext")
3422 (license license:expat)))
3423
3424 (define-public ruby-tdiff
3425 ;; Use a newer than released snapshot so that rspec-2 is not required.
3426 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
3427 (package
3428 (name "ruby-tdiff")
3429 (version (string-append "0.3.3-1." (string-take commit 8)))
3430 (source (origin
3431 (method git-fetch)
3432 (uri (git-reference
3433 (url "https://github.com/postmodern/tdiff.git")
3434 (commit commit)))
3435 (file-name (string-append name "-" version "-checkout"))
3436 (sha256
3437 (base32
3438 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
3439 (build-system ruby-build-system)
3440 (native-inputs
3441 `(("ruby-rspec" ,ruby-rspec)
3442 ("ruby-yard" ,ruby-yard)
3443 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
3444 (synopsis "Calculate the differences between two tree-like structures")
3445 (description
3446 "This library provides functions to calculate the differences between two
3447 tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
3448 (home-page "https://github.com/postmodern/tdiff")
3449 (license license:expat))))
3450
3451 (define-public ruby-nokogiri-diff
3452 ;; Use a newer than released snapshot so that rspec-2 is not required.
3453 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
3454 (package
3455 (name "ruby-nokogiri-diff")
3456 (version (string-append "0.2.0-1." (string-take commit 8)))
3457 (source (origin
3458 (method git-fetch)
3459 (uri (git-reference
3460 (url "https://github.com/postmodern/nokogiri-diff.git")
3461 (commit commit)))
3462 (file-name (string-append name "-" version "-checkout"))
3463 (sha256
3464 (base32
3465 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
3466 (build-system ruby-build-system)
3467 (propagated-inputs
3468 `(("ruby-tdiff" ,ruby-tdiff)
3469 ("ruby-nokogiri" ,ruby-nokogiri)))
3470 (native-inputs
3471 `(("ruby-rspec" ,ruby-rspec)
3472 ("ruby-yard" ,ruby-yard)
3473 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
3474 (synopsis "Calculate the differences between two XML/HTML documents")
3475 (description
3476 "@code{Nokogiri::Diff} adds the ability to calculate the
3477 differences (added or removed nodes) between two XML/HTML documents.")
3478 (home-page "https://github.com/postmodern/nokogiri-diff")
3479 (license license:expat))))
3480
3481 (define-public ruby-rack
3482 (package
3483 (name "ruby-rack")
3484 (version "2.0.5")
3485 (source
3486 (origin
3487 (method url-fetch)
3488 ;; Download from GitHub so that the patch can be applied.
3489 (uri (string-append
3490 "https://github.com/rack/rack/archive/"
3491 version
3492 ".tar.gz"))
3493 (file-name (string-append name "-" version ".tar.gz"))
3494 (sha256
3495 (base32
3496 "1k1k4wk10l6bxx46pw58j2p3nmyzjqnr65hbjjqydd6517fmxgib"))
3497 ;; Ignore test which fails inside the build environment but works
3498 ;; outside.
3499 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
3500 (build-system ruby-build-system)
3501 (arguments
3502 '(#:phases
3503 (modify-phases %standard-phases
3504 (add-before 'check 'fix-tests
3505 (lambda _
3506 ;; A few of the tests use the length of a file on disk for
3507 ;; Content-Length and Content-Range headers. However, this file
3508 ;; has a shebang in it which an earlier phase patches, growing
3509 ;; the file size from 193 to 239 bytes when the store prefix is
3510 ;; "/gnu/store".
3511 (let ((size-diff (- (string-length (which "ruby"))
3512 (string-length "/usr/bin/env ruby"))))
3513 (substitute* '("test/spec_file.rb")
3514 (("193")
3515 (number->string (+ 193 size-diff)))
3516 (("bytes(.)22-33" all delimiter)
3517 (string-append "bytes"
3518 delimiter
3519 (number->string (+ 22 size-diff))
3520 "-"
3521 (number->string (+ 33 size-diff))))))
3522 #t)))))
3523 (native-inputs
3524 `(("ruby-minitest" ,ruby-minitest)
3525 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
3526 ("which" ,which)))
3527 (propagated-inputs
3528 `(("ruby-concurrent" ,ruby-concurrent)))
3529 (synopsis "Unified web application interface for Ruby")
3530 (description "Rack provides a minimal, modular and adaptable interface for
3531 developing web applications in Ruby. By wrapping HTTP requests and responses,
3532 it unifies the API for web servers, web frameworks, and software in between
3533 into a single method call.")
3534 (home-page "https://rack.github.io/")
3535 (license license:expat)))
3536
3537 (define-public ruby-rack-test
3538 (package
3539 (name "ruby-rack-test")
3540 (version "0.8.3")
3541 (source
3542 (origin
3543 (method url-fetch)
3544 (uri (rubygems-uri "rack-test" version))
3545 (sha256
3546 (base32
3547 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
3548 (build-system ruby-build-system)
3549 (arguments
3550 ;; Disable tests because of circular dependencies: requires sinatra,
3551 ;; which requires rack-protection, which requires rack-test. Instead
3552 ;; simply require the library.
3553 `(#:phases
3554 (modify-phases %standard-phases
3555 (replace 'check
3556 (lambda _
3557 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
3558 (propagated-inputs
3559 `(("ruby-rack" ,ruby-rack)))
3560 (synopsis "Testing API for Rack applications")
3561 (description
3562 "Rack::Test is a small, simple testing API for Rack applications. It can
3563 be used on its own or as a reusable starting point for Web frameworks and
3564 testing libraries to build on.")
3565 (home-page "https://github.com/rack-test/rack-test")
3566 (license license:expat)))
3567
3568 (define-public ruby-rack-protection
3569 (package
3570 (name "ruby-rack-protection")
3571 (version "2.0.3")
3572 (source
3573 (origin
3574 (method url-fetch)
3575 (uri (rubygems-uri "rack-protection" version))
3576 (sha256
3577 (base32
3578 "1z5598qipilmnf45428jnxi63ykrgvnyywa5ckpr52zv2vpd8jdp"))))
3579 (build-system ruby-build-system)
3580 (arguments
3581 '(;; Tests missing from the gem.
3582 #:tests? #f))
3583 (propagated-inputs
3584 `(("ruby-rack" ,ruby-rack)))
3585 (native-inputs
3586 `(("bundler" ,bundler)
3587 ("ruby-rspec" ,ruby-rspec-2)
3588 ("ruby-rack-test" ,ruby-rack-test)))
3589 (synopsis "Rack middleware that protects against typical web attacks")
3590 (description "Rack middleware that can be used to protect against typical
3591 web attacks. It can protect all Rack apps, including Rails. For instance, it
3592 protects against cross site request forgery, cross site scripting,
3593 clickjacking, directory traversal, session hijacking and IP spoofing.")
3594 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
3595 (license license:expat)))
3596
3597 (define-public ruby-contest
3598 (package
3599 (name "ruby-contest")
3600 (version "0.1.3")
3601 (source
3602 (origin
3603 (method url-fetch)
3604 (uri (rubygems-uri "contest" version))
3605 (sha256
3606 (base32
3607 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
3608 (build-system ruby-build-system)
3609 (synopsis "Write declarative tests using nested contexts")
3610 (description
3611 "Contest allows writing declarative @code{Test::Unit} tests using nested
3612 contexts without performance penalties.")
3613 (home-page "https://github.com/citrusbyte/contest")
3614 (license license:expat)))
3615
3616 (define-public ruby-creole
3617 (package
3618 (name "ruby-creole")
3619 (version "0.5.0")
3620 (source
3621 (origin
3622 (method url-fetch)
3623 (uri (rubygems-uri "creole" version))
3624 (sha256
3625 (base32
3626 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
3627 (build-system ruby-build-system)
3628 (native-inputs
3629 `(("ruby-bacon" ,ruby-bacon)))
3630 (synopsis "Creole markup language converter")
3631 (description
3632 "Creole is a lightweight markup language and this library for converting
3633 creole to @code{HTML}.")
3634 (home-page "https://github.com/minad/creole")
3635 (license license:ruby)))
3636
3637 (define-public ruby-docile
3638 (package
3639 (name "ruby-docile")
3640 (version "1.1.5")
3641 (source
3642 (origin
3643 (method url-fetch)
3644 (uri (rubygems-uri "docile" version))
3645 (sha256
3646 (base32
3647 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
3648 (build-system ruby-build-system)
3649 (arguments
3650 '(#:tests? #f)) ; needs github-markup, among others
3651 (synopsis "Ruby EDSL helper library")
3652 (description "Docile is a Ruby library that provides an interface for
3653 creating embedded domain specific languages (EDSLs) that manipulate existing
3654 Ruby classes.")
3655 (home-page "https://ms-ati.github.io/docile/")
3656 (license license:expat)))
3657
3658 (define-public ruby-gherkin
3659 (package
3660 (name "ruby-gherkin")
3661 (version "4.1.3")
3662 (source
3663 (origin
3664 (method url-fetch)
3665 (uri (rubygems-uri "gherkin" version))
3666 (sha256
3667 (base32
3668 "1d18r8mf2qyd9jbq9xxvca8adyysdzvwdy8v9c2s5hrd6p02kg79"))))
3669 (build-system ruby-build-system)
3670 (native-inputs
3671 `(("bundler" ,bundler)))
3672 (arguments
3673 '(#:tests? #f)) ; needs simplecov, among others
3674 (synopsis "Gherkin parser for Ruby")
3675 (description "Gherkin is a parser and compiler for the Gherkin language.
3676 It is intended be used by all Cucumber implementations to parse '.feature'
3677 files.")
3678 (home-page "https://github.com/cucumber/gherkin3")
3679 (license license:expat)))
3680
3681 (define-public ruby-cucumber-core
3682 (package
3683 (name "ruby-cucumber-core")
3684 (version "2.0.0")
3685 (source
3686 (origin
3687 (method url-fetch)
3688 (uri (rubygems-uri "cucumber-core" version))
3689 (sha256
3690 (base32
3691 "136hnvqv444qyxzcgy1k60y4i6cn3sn9lbqr4wan9dzz1yzllqbm"))))
3692 (build-system ruby-build-system)
3693 (propagated-inputs
3694 `(("ruby-gherkin" ,ruby-gherkin)))
3695 (native-inputs
3696 `(("bundler" ,bundler)))
3697 (arguments
3698 '(#:tests? #f)) ; needs simplecov, among others
3699 (synopsis "Core library for the Cucumber BDD app")
3700 (description "Cucumber is a tool for running automated tests
3701 written in plain language. Because they're written in plain language,
3702 they can be read by anyone on your team. Because they can be read by
3703 anyone, you can use them to help improve communication, collaboration
3704 and trust on your team.")
3705 (home-page "https://cucumber.io/")
3706 (license license:expat)))
3707
3708 (define-public ruby-bio-logger
3709 (package
3710 (name "ruby-bio-logger")
3711 (version "1.0.1")
3712 (source
3713 (origin
3714 (method url-fetch)
3715 (uri (rubygems-uri "bio-logger" version))
3716 (sha256
3717 (base32
3718 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
3719 (build-system ruby-build-system)
3720 (arguments
3721 `(#:tests? #f)) ; rake errors, missing shoulda
3722 (propagated-inputs
3723 `(("ruby-log4r" ,ruby-log4r)))
3724 (synopsis "Log4r wrapper for Ruby")
3725 (description "Bio-logger is a wrapper around Log4r adding extra logging
3726 features such as filtering and fine grained logging.")
3727 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
3728 (license license:expat)))
3729
3730 (define-public ruby-yajl-ruby
3731 (package
3732 (name "ruby-yajl-ruby")
3733 (version "1.4.1")
3734 (source
3735 (origin
3736 (method url-fetch)
3737 (uri (rubygems-uri "yajl-ruby" version))
3738 (sha256
3739 (base32
3740 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
3741 (build-system ruby-build-system)
3742 (arguments
3743 '(#:test-target "spec"
3744 #:phases
3745 (modify-phases %standard-phases
3746 (add-before 'check 'patch-test-to-update-load-path
3747 (lambda _
3748 (substitute* "spec/parsing/large_number_spec.rb"
3749 (("require \"yajl\"")
3750 "$LOAD_PATH << 'lib'; require 'yajl'"))
3751 #t)))))
3752 (native-inputs
3753 `(("ruby-rake-compiler" ,ruby-rake-compiler)
3754 ("ruby-rspec" ,ruby-rspec)))
3755 (synopsis "Streaming JSON parsing and encoding library for Ruby")
3756 (description
3757 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
3758 is compatible with the JSON gem, so yajl-ruby can act as a drop in
3759 replacement.
3760
3761 A modified copy of yajl is used, and included in the package.")
3762 (home-page "https://github.com/brianmario/yajl-ruby")
3763 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
3764 license:bsd-3)))) ; Included, modified copy of yajl
3765
3766 (define-public ruby-yard
3767 (package
3768 (name "ruby-yard")
3769 (version "0.9.6")
3770 (source
3771 (origin
3772 (method url-fetch)
3773 ;; Tests do not pass if we build from the distributed gem.
3774 (uri (string-append "https://github.com/lsegal/yard/archive/v"
3775 version ".tar.gz"))
3776 (file-name (string-append name "-" version ".tar.gz"))
3777 (sha256
3778 (base32
3779 "0rsz4bghgx7fryzyhlz8wlnd2m9xgyvf1xhrq58mnzfrrfm41bdg"))))
3780 (build-system ruby-build-system)
3781 (arguments
3782 `(#:phases
3783 (modify-phases %standard-phases
3784 (replace 'check
3785 (lambda _
3786 ;; $HOME needs to be set to somewhere writeable for tests to run
3787 (setenv "HOME" "/tmp")
3788 ;; Run tests without using 'rake' to avoid dependencies.
3789 (invoke "rspec"))))))
3790 (native-inputs
3791 `(("ruby-rspec" ,ruby-rspec)
3792 ("ruby-rack" ,ruby-rack)))
3793 (synopsis "Documentation generation tool for Ruby")
3794 (description
3795 "YARD is a documentation generation tool for the Ruby programming
3796 language. It enables the user to generate consistent, usable documentation
3797 that can be exported to a number of formats very easily, and also supports
3798 extending for custom Ruby constructs such as custom class level definitions.")
3799 (home-page "https://yardoc.org")
3800 (license license:expat)))
3801
3802 (define-public ruby-clap
3803 (package
3804 (name "ruby-clap")
3805 (version "1.0.0")
3806 (source (origin
3807 (method url-fetch)
3808 (uri (rubygems-uri "clap" version))
3809 (sha256
3810 (base32
3811 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
3812 (build-system ruby-build-system)
3813 ;; Clap needs cutest for running tests, but cutest needs clap.
3814 (arguments `(#:tests? #f))
3815 (synopsis "Command line argument parsing for simple applications")
3816 (description
3817 "Clap provides command line argument parsing features. It covers the
3818 simple case of executing code based on the flags or parameters passed.")
3819 (home-page "https://github.com/djanowski/cutest")
3820 (license license:expat)))
3821
3822 (define-public ruby-cutest
3823 (package
3824 (name "ruby-cutest")
3825 (version "1.2.2")
3826 (source (origin
3827 (method url-fetch)
3828 (uri (rubygems-uri "cutest" version))
3829 (sha256
3830 (base32
3831 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
3832 (build-system ruby-build-system)
3833 (propagated-inputs
3834 `(("ruby-clap" ,ruby-clap)))
3835 (synopsis "Run tests in separate processes")
3836 (description
3837 "Cutest runs tests in separate processes to avoid shared state.")
3838 (home-page "https://github.com/djanowski/cutest")
3839 (license license:expat)))
3840
3841 (define-public ruby-pygmentize
3842 (package
3843 (name "ruby-pygmentize")
3844 (version "0.0.3")
3845 (source (origin
3846 (method url-fetch)
3847 (uri (rubygems-uri "pygmentize" version))
3848 (sha256
3849 (base32
3850 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
3851 (build-system ruby-build-system)
3852 (arguments
3853 `(#:phases
3854 (modify-phases %standard-phases
3855 (add-after 'unpack 'fix-pygmentize-path
3856 (lambda _
3857 (substitute* "lib/pygmentize.rb"
3858 (("\"/usr/bin/env python.*")
3859 (string-append "\"" (which "pygmentize") "\"\n")))
3860 #t))
3861 (add-after 'build 'do-not-use-vendor-directory
3862 (lambda _
3863 ;; Remove bundled pygments sources
3864 ;; FIXME: ruby-build-system does not support snippets.
3865 (delete-file-recursively "vendor")
3866 (substitute* "pygmentize.gemspec"
3867 (("\"vendor/\\*\\*/\\*\",") ""))
3868 #t)))))
3869 (inputs
3870 `(("pygments" ,python-pygments)))
3871 (native-inputs
3872 `(("ruby-cutest" ,ruby-cutest)
3873 ("ruby-nokogiri" ,ruby-nokogiri)))
3874 (synopsis "Thin Ruby wrapper around pygmentize")
3875 (description
3876 "Pygmentize provides a simple way to call pygmentize from within a Ruby
3877 application.")
3878 (home-page "https://github.com/djanowski/pygmentize")
3879 (license license:expat)))
3880
3881 (define-public ruby-eventmachine
3882 (package
3883 (name "ruby-eventmachine")
3884 (version "1.2.7")
3885 (source
3886 (origin
3887 (method url-fetch)
3888 (uri (rubygems-uri "eventmachine" version))
3889 (sha256
3890 (base32
3891 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
3892 (build-system ruby-build-system)
3893 (arguments
3894 '(#:tests? #f)) ; test suite tries to connect to google.com
3895 (native-inputs
3896 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
3897 (synopsis "Single-threaded network event framework for Ruby")
3898 (description
3899 "EventMachine implements a single-threaded engine for arbitrary network
3900 communications. EventMachine wraps all interactions with sockets, allowing
3901 programs to concentrate on the implementation of network protocols. It can be
3902 used to create both network servers and clients.")
3903 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
3904 (home-page "https://github.com/eventmachine/eventmachine")
3905 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
3906
3907 (define-public ruby-ruby-engine
3908 (package
3909 (name "ruby-ruby-engine")
3910 (version "1.0.1")
3911 (source
3912 (origin
3913 (method url-fetch)
3914 (uri (rubygems-uri "ruby_engine" version))
3915 (sha256
3916 (base32
3917 "1d0sd4q50zkcqhr395wj1wpn2ql52r0fpwhzjfvi1bljml7k546v"))))
3918 (build-system ruby-build-system)
3919 (arguments
3920 `(#:phases
3921 (modify-phases %standard-phases
3922 (add-before 'check 'clean-up
3923 (lambda _
3924 (delete-file "Gemfile.lock")
3925 (substitute* "ruby_engine.gemspec"
3926 ;; Remove unnecessary imports that would entail further
3927 ;; dependencies.
3928 ((".*<rdoc.*") "")
3929 ((".*<rubygems-tasks.*") "")
3930 ;; Remove extraneous .gem file
3931 (("\\\"pkg/ruby_engine-1.0.0.gem\\\",") "")
3932 ;; Soften rake dependency
3933 (("%q<rake>.freeze, \\[\\\"~> 10.0\\\"\\]")
3934 "%q<rake>.freeze, [\">= 10.0\"]")
3935 ;; Soften the rspec dependency
3936 (("%q<rspec>.freeze, \\[\\\"~> 2.4\\\"\\]")
3937 "%q<rspec>.freeze, [\">= 2.4\"]"))
3938 (substitute* "Rakefile"
3939 (("require 'rubygems/tasks'") "")
3940 (("Gem::Tasks.new") ""))
3941 ;; Remove extraneous .gem file that otherwise gets installed.
3942 (delete-file "pkg/ruby_engine-1.0.0.gem")
3943 #t)))))
3944 (native-inputs
3945 `(("bundler" ,bundler)
3946 ("ruby-rake" ,ruby-rake)
3947 ("ruby-rspec" ,ruby-rspec)))
3948 (synopsis "Simplifies checking for Ruby implementation")
3949 (description
3950 "@code{ruby_engine} provides an RubyEngine class that can be used to
3951 check which implementation of Ruby is in use. It can provide the interpreter
3952 name and provides query methods such as @{RubyEngine.mri?}.")
3953 (home-page "https://github.com/janlelis/ruby_engine")
3954 (license license:expat)))
3955
3956 (define-public ruby-turn
3957 (package
3958 (name "ruby-turn")
3959 (version "0.9.7")
3960 (source
3961 (origin
3962 (method url-fetch)
3963 (uri (rubygems-uri "turn" version))
3964 (sha256
3965 (base32
3966 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
3967 (build-system ruby-build-system)
3968 (arguments
3969 `(#:phases
3970 (modify-phases %standard-phases
3971 ;; Tests fail because turn changes its environment so can no longer
3972 ;; find test/unit. Instead simply test if the executable runs
3973 ;; without issue.
3974 (replace 'check
3975 (lambda _
3976 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
3977 (propagated-inputs
3978 `(("ruby-ansi" ,ruby-ansi)
3979 ("ruby-minitest" ,ruby-minitest-4)))
3980 (synopsis "Alternate set of alternative runners for MiniTest")
3981 (description
3982 "TURN provides a set of alternative runners for MiniTest which are both
3983 colorful and informative. TURN displays each test on a separate line with
3984 failures being displayed immediately instead of at the end of the tests. Note
3985 that TURN is no longer being maintained.")
3986 (home-page "http://rubygems.org/gems/turn")
3987 (license license:expat)))
3988
3989 (define-public ruby-mimemagic
3990 (package
3991 (name "ruby-mimemagic")
3992 (version "0.3.2")
3993 (source
3994 (origin
3995 (method url-fetch)
3996 (uri (rubygems-uri "mimemagic" version))
3997 (sha256
3998 (base32
3999 "00ibc1mhvdfyfyl103xwb45621nwyqxf124cni5hyfhag0fn1c3q"))))
4000 (build-system ruby-build-system)
4001 (arguments
4002 '(#:phases
4003 (modify-phases %standard-phases
4004 ;; This phase breaks the tests, as it patches some of the test data.
4005 (delete 'patch-source-shebangs))))
4006 (native-inputs
4007 `(("ruby-bacon" ,ruby-bacon)))
4008 (synopsis "Ruby library for MIME detection by extension or content")
4009 (description
4010 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
4011 extension or content, using the freedesktop.org.xml shared-mime-info
4012 database.")
4013 (home-page "https://github.com/minad/mimemagic")
4014 (license license:expat)))
4015
4016 (define-public ruby-mime-types-data
4017 (package
4018 (name "ruby-mime-types-data")
4019 (version "3.2016.0521")
4020 (source
4021 (origin
4022 (method url-fetch)
4023 (uri (rubygems-uri "mime-types-data" version))
4024 (sha256
4025 (base32
4026 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
4027 (build-system ruby-build-system)
4028 (native-inputs
4029 `(("ruby-hoe" ,ruby-hoe)))
4030 (synopsis "Registry for information about MIME media type definitions")
4031 (description
4032 "@code{mime-types-data} provides a registry for information about
4033 Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
4034 be used with the Ruby mime-types library or other software to determine
4035 defined filename extensions for MIME types, or to use filename extensions to
4036 look up the likely MIME type definitions.")
4037 (home-page "https://github.com/mime-types/mime-types-data/")
4038 (license license:expat)))
4039
4040 (define-public ruby-mime-types
4041 (package
4042 (name "ruby-mime-types")
4043 (version "3.1")
4044 (source
4045 (origin
4046 (method url-fetch)
4047 (uri (rubygems-uri "mime-types" version))
4048 (sha256
4049 (base32
4050 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
4051 (build-system ruby-build-system)
4052 (propagated-inputs
4053 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
4054 (native-inputs
4055 `(("ruby-hoe" ,ruby-hoe)
4056 ("ruby-fivemat" ,ruby-fivemat)
4057 ("ruby-minitest-focus" ,ruby-minitest-focus)
4058 ("ruby-minitest-rg" ,ruby-minitest-rg)
4059 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
4060 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
4061 (synopsis "Library and registry for MIME content type definitions")
4062 (description "The mime-types library provides a library and registry for
4063 information about Multipurpose Internet Mail Extensions (MIME) content type
4064 definitions. It can be used to determine defined filename extensions for MIME
4065 types, or to use filename extensions to look up the likely MIME type
4066 definitions.")
4067 (home-page "https://github.com/mime-types/ruby-mime-types")
4068 (license license:expat)))
4069
4070 (define-public ruby-fivemat
4071 (package
4072 (name "ruby-fivemat")
4073 (version "1.3.6")
4074 (source
4075 (origin
4076 (method url-fetch)
4077 (uri (rubygems-uri "fivemat" version))
4078 (sha256
4079 (base32
4080 "006n7b09vviv5bs5hv2ccmjxw9iw3brcsm3xh3dhzfncsknz4jp7"))))
4081 (build-system ruby-build-system)
4082 (arguments
4083 `(#:tests? #f)) ; no tests
4084 (synopsis "Each test file given its own line of dots")
4085 (description
4086 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
4087 its own line of dots during testing. It aims to provide test output that is
4088 neither too verbose nor too minimal.")
4089 (home-page "https://github.com/tpope/fivemat")
4090 (license license:expat)))
4091
4092 (define-public ruby-sqlite3
4093 (package
4094 (name "ruby-sqlite3")
4095 (version "1.3.13")
4096 (source
4097 (origin
4098 (method url-fetch)
4099 (uri (rubygems-uri "sqlite3" version))
4100 (sha256
4101 (base32
4102 "01ifzp8nwzqppda419c9wcvr8n82ysmisrs0hph9pdmv1lpa4f5i"))))
4103 (build-system ruby-build-system)
4104 (arguments
4105 `(#:phases
4106 (modify-phases %standard-phases
4107 (add-before 'check 'adjust-failing-test
4108 (lambda _
4109 ;; XXX: This test fails with SQLite versions >= 3.21.
4110 ;; See <https://github.com/sparklemotion/sqlite3-ruby/issues/226>.
4111 (substitute* "test/test_integration_resultset.rb"
4112 (("\"integer\", \"text\"") "\"INTEGER\", \"text\""))
4113 #t))
4114 (add-before 'check 'add-gemtest-file
4115 ;; This file exists in the repository but is not distributed.
4116 (lambda _ (invoke "touch" ".gemtest"))))))
4117 (inputs
4118 `(("sqlite" ,sqlite)))
4119 (native-inputs
4120 `(("ruby-hoe" ,ruby-hoe)
4121 ("ruby-rake-compiler" ,ruby-rake-compiler)
4122 ("ruby-mini-portile" ,ruby-mini-portile)))
4123 (synopsis "Interface with SQLite3 databases")
4124 (description
4125 "This module allows Ruby programs to interface with the SQLite3 database
4126 engine.")
4127 (home-page
4128 "https://github.com/sparklemotion/sqlite3-ruby")
4129 (license license:bsd-3)))
4130
4131 (define-public ruby-shoulda-context
4132 (package
4133 (name "ruby-shoulda-context")
4134 (version "1.2.2")
4135 (source
4136 (origin
4137 (method url-fetch)
4138 (uri (rubygems-uri "shoulda-context" version))
4139 (sha256
4140 (base32
4141 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
4142 (build-system ruby-build-system)
4143 (arguments
4144 `(#:phases
4145 (modify-phases %standard-phases
4146 (replace 'check
4147 (lambda _
4148 ;; Do not run tests to avoid circular dependence with rails.
4149 ;; Instead just import the library to test.
4150 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
4151 (synopsis "Test::Unit context framework extracted from Shoulda")
4152 (description
4153 "@code{shoulda-context} is the context framework extracted from Shoulda.
4154 Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
4155 context, setup, and should blocks combine to produce natural test method
4156 names.")
4157 (home-page "https://github.com/thoughtbot/shoulda-context")
4158 (license license:expat)))
4159
4160 (define-public ruby-shoulda-matchers
4161 (package
4162 (name "ruby-shoulda-matchers")
4163 (version "3.1.2")
4164 (source
4165 (origin
4166 (method url-fetch)
4167 (uri (rubygems-uri "shoulda-matchers" version))
4168 (sha256
4169 (base32
4170 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
4171 (build-system ruby-build-system)
4172 (arguments
4173 `(#:phases
4174 (modify-phases %standard-phases
4175 (replace 'check
4176 (lambda _
4177 ;; Do not run tests to avoid circular dependence with rails. Instead
4178 ;; just import the library to test.
4179 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
4180 (propagated-inputs
4181 `(("ruby-activesupport" ,ruby-activesupport)))
4182 (synopsis "Collection of testing matchers extracted from Shoulda")
4183 (description
4184 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
4185 test common Rails functionality. These tests would otherwise be much longer,
4186 more complex, and error-prone.")
4187 (home-page "https://github.com/thoughtbot/shoulda-matchers")
4188 (license license:expat)))
4189
4190 (define-public ruby-shoulda-matchers-2
4191 (package
4192 (inherit ruby-shoulda-matchers)
4193 (version "2.8.0")
4194 (source (origin
4195 (method url-fetch)
4196 (uri (rubygems-uri "shoulda-matchers" version))
4197 (sha256
4198 (base32
4199 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
4200
4201 (define-public ruby-shoulda
4202 (package
4203 (name "ruby-shoulda")
4204 (version "3.5.0")
4205 (source
4206 (origin
4207 (method url-fetch)
4208 (uri (rubygems-uri "shoulda" version))
4209 (sha256
4210 (base32
4211 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
4212 (build-system ruby-build-system)
4213 (arguments
4214 `(#:phases
4215 (modify-phases %standard-phases
4216 (replace 'check
4217 ;; Don't run tests to avoid circular dependence with rails. Instead
4218 ;; just import the library to test.
4219 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
4220 (propagated-inputs
4221 `(("ruby-shoulda-context" ,ruby-shoulda-context)
4222 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
4223 (synopsis "Context framework and matchers for testing")
4224 (description
4225 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
4226 @code{shoulda-matchers} providing tools for writing tests.")
4227 (home-page "https://github.com/thoughtbot/shoulda")
4228 (license license:expat)))
4229
4230 (define-public ruby-unf
4231 (package
4232 (name "ruby-unf")
4233 (version "0.1.4")
4234 (source
4235 (origin
4236 (method url-fetch)
4237 (uri (rubygems-uri "unf" version))
4238 (sha256
4239 (base32
4240 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
4241 (build-system ruby-build-system)
4242 (arguments
4243 `(#:phases
4244 (modify-phases %standard-phases
4245 (add-before 'check 'add-dependency-to-bundler
4246 (lambda _
4247 ;; test-unit is required but not provided by the bundler
4248 ;; environment. This is fixed in the upstream repository but fix
4249 ;; has not been released.
4250 (substitute* "Gemfile"
4251 (("^gemspec") "gem 'test-unit'\ngemspec"))
4252 #t)))))
4253 (propagated-inputs
4254 `(("ruby-unf-ext" ,ruby-unf-ext)))
4255 (native-inputs
4256 `(("ruby-shoulda" ,ruby-shoulda)
4257 ("bundler" ,bundler)
4258 ("ruby-test-unit" ,ruby-test-unit)))
4259 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
4260 (description
4261 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
4262 support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
4263 @code{java.text.Normalizer} on JRuby.")
4264 (home-page "https://github.com/knu/ruby-unf")
4265 (license license:bsd-2)))
4266
4267 (define-public ruby-domain-name
4268 (package
4269 (name "ruby-domain-name")
4270 (version "0.5.20180417")
4271 (source
4272 (origin
4273 (method url-fetch)
4274 (uri (rubygems-uri "domain_name" version))
4275 (sha256
4276 (base32
4277 "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v"))))
4278 (build-system ruby-build-system)
4279 (arguments
4280 `(#:phases
4281 (modify-phases %standard-phases
4282 (add-before 'check 'fix-versions
4283 (lambda _
4284 ;; Fix NameError that appears to already be fixed upstream.
4285 (substitute* "Rakefile"
4286 (("DomainName::VERSION")
4287 "Bundler::GemHelper.gemspec.version"))
4288 ;; Loosen unnecessarily strict test-unit version specification.
4289 (substitute* "domain_name.gemspec"
4290 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
4291 #t)))))
4292 (propagated-inputs
4293 `(("ruby-unf" ,ruby-unf)))
4294 (native-inputs
4295 `(("ruby-shoulda" ,ruby-shoulda)
4296 ("bundler" ,bundler)
4297 ("ruby-test-unit" ,ruby-test-unit)))
4298 (synopsis "Domain name manipulation library")
4299 (description
4300 "@code{domain_name} is a Domain name manipulation library. It parses a
4301 domain name ready for extracting the registered domain and TLD (Top Level
4302 Domain). It can also be used for cookie domain validation based on the Public
4303 Suffix List.")
4304 (home-page "https://github.com/knu/ruby-domain_name")
4305 (license license:bsd-2)))
4306
4307 (define-public ruby-http-cookie
4308 (package
4309 (name "ruby-http-cookie")
4310 (version "1.0.3")
4311 (source
4312 (origin
4313 (method url-fetch)
4314 (uri (rubygems-uri "http-cookie" version))
4315 (sha256
4316 (base32
4317 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
4318 (build-system ruby-build-system)
4319 (arguments
4320 `(#:phases
4321 (modify-phases %standard-phases
4322 (add-before 'check 'add-dependency-to-bundler
4323 (lambda _
4324 ;; Fix NameError
4325 (substitute* "Rakefile"
4326 (("HTTP::Cookie::VERSION")
4327 "Bundler::GemHelper.gemspec.version"))
4328 #t)))))
4329 (propagated-inputs
4330 `(("ruby-domain-name" ,ruby-domain-name)))
4331 (native-inputs
4332 `(("rubysimplecov" ,ruby-simplecov)
4333 ("bundler" ,bundler)
4334 ("ruby-sqlite3" ,ruby-sqlite3)
4335 ("ruby-test-unit" ,ruby-test-unit)))
4336 (synopsis "Handle HTTP Cookies based on RFC 6265")
4337 (description
4338 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
4339 RFC 6265. It has been designed with security, standards compliance and
4340 compatibility in mind, to behave just the same as today's major web browsers.
4341 It has built-in support for the legacy @code{cookies.txt} and
4342 @code{cookies.sqlite} formats of Mozilla Firefox.")
4343 (home-page "https://github.com/sparklemotion/http-cookie")
4344 (license license:expat)))
4345
4346 (define-public ruby-httpclient
4347 (package
4348 (name "ruby-httpclient")
4349 (version "2.8.3")
4350 (source
4351 (origin
4352 (method url-fetch)
4353 (uri (rubygems-uri "httpclient" version))
4354 (sha256
4355 (base32
4356 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
4357 (build-system ruby-build-system)
4358 (arguments
4359 '(;; TODO: Some tests currently fail
4360 ;; ------
4361 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
4362 ;; 2 omissions, 0 notifications
4363 ;; 91.866% passed
4364 ;; ------
4365 ;; 6.49 tests/s, 22.41 assertions/s
4366 #:tests? #f
4367 #:phases
4368 (modify-phases %standard-phases
4369 (replace 'check
4370 (lambda* (#:key tests? #:allow-other-keys)
4371 (if tests?
4372 (invoke "ruby"
4373 "-Ilib"
4374 "test/runner.rb")
4375 #t))))))
4376 (native-inputs
4377 `(("ruby-rack" ,ruby-rack)))
4378 (synopsis
4379 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
4380 (description
4381 "The @code{httpclient} ruby library provides functionality related to
4382 HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
4383 Cookie, multithreading and authentication (digest, NTLM) support.
4384
4385 Also provided is a @command{httpclient} command, which can perform HTTP
4386 requests either using arguments or with an interactive prompt.")
4387 (home-page "https://github.com/nahi/httpclient")
4388 (license license:ruby)))
4389
4390 (define-public ruby-ansi
4391 (package
4392 (name "ruby-ansi")
4393 (version "1.5.0")
4394 (source
4395 (origin
4396 (method url-fetch)
4397 ;; Fetch from GitHub as the gem does not contain testing code.
4398 (uri (string-append "https://github.com/rubyworks/ansi/archive/"
4399 version ".tar.gz"))
4400 (file-name (string-append name "-" version ".tar.gz"))
4401 (sha256
4402 (base32
4403 "1zdip30hivyipi8hndhb457bhiz033awd00bgrsk5axjrwp6zhly"))))
4404 (build-system ruby-build-system)
4405 (arguments
4406 `(#:phases
4407 (modify-phases %standard-phases
4408 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
4409 ;; cycle ansi, qed, ansi. Instead simply test that the library can
4410 ;; be require'd.
4411 (replace 'check
4412 (lambda _
4413 (invoke "ruby" "-Ilib" "-r" "ansi")))
4414 (add-before 'validate-runpath 'replace-broken-symlink
4415 (lambda* (#:key outputs #:allow-other-keys)
4416 (let* ((out (assoc-ref outputs "out"))
4417 (file (string-append
4418 out "/lib/ruby/vendor_ruby/gems/ansi-"
4419 ,version "/lib/ansi.yml")))
4420 ;; XXX: This symlink is broken since ruby 2.4.
4421 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
4422 (delete-file file)
4423 (symlink "../.index" file)
4424 #t))))))
4425 (synopsis "ANSI escape code related libraries")
4426 (description
4427 "This package is a collection of ANSI escape code related libraries
4428 enabling ANSI colorization and stylization of console output. Included in the
4429 library are the @code{Code} module, which defines ANSI codes as constants and
4430 methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
4431 @code{ProgressBar}, and a @code{String} subclass. The library also includes a
4432 @code{Terminal} module which provides information about the current output
4433 device.")
4434 (home-page "https://rubyworks.github.io/ansi")
4435 (license license:bsd-2)))
4436
4437 (define-public ruby-systemu
4438 (package
4439 (name "ruby-systemu")
4440 (version "2.6.5")
4441 (source
4442 (origin
4443 (method url-fetch)
4444 (uri (rubygems-uri "systemu" version))
4445 (sha256
4446 (base32
4447 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
4448 (build-system ruby-build-system)
4449 (arguments
4450 `(#:phases
4451 (modify-phases %standard-phases
4452 (add-before 'check 'set-version
4453 (lambda _
4454 (setenv "VERSION" ,version)
4455 #t)))))
4456 (synopsis "Capture of stdout/stderr and handling of child processes")
4457 (description
4458 "Systemu can be used on any platform to return status, stdout, and stderr
4459 of any command. Unlike other methods like @code{open3} and @code{popen4}
4460 there is no danger of full pipes or threading issues hanging your process or
4461 subprocess.")
4462 (home-page "https://github.com/ahoward/systemu")
4463 (license license:ruby)))
4464
4465 (define-public ruby-bio-commandeer
4466 (package
4467 (name "ruby-bio-commandeer")
4468 (version "0.4.0")
4469 (source
4470 (origin
4471 (method url-fetch)
4472 (uri (rubygems-uri "bio-commandeer" version))
4473 (sha256
4474 (base32
4475 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
4476 (build-system ruby-build-system)
4477 (arguments
4478 `(#:phases
4479 (modify-phases %standard-phases
4480 (replace 'check
4481 ;; Run test without calling 'rake' so that jeweler is
4482 ;; not required as an input.
4483 (lambda _
4484 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
4485 (propagated-inputs
4486 `(("ruby-bio-logger" ,ruby-bio-logger)
4487 ("ruby-systemu" ,ruby-systemu)))
4488 (native-inputs
4489 `(("bundler" ,bundler)
4490 ("ruby-rspec" ,ruby-rspec)))
4491 (synopsis "Simplified running of shell commands from within Ruby")
4492 (description
4493 "Bio-commandeer provides an opinionated method of running shell commands
4494 from within Ruby. The advantage of bio-commandeer over other methods of
4495 running external commands is that when something goes wrong, messages printed
4496 to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
4497 detail to ease debugging.")
4498 (home-page "https://github.com/wwood/bioruby-commandeer")
4499 (license license:expat)))
4500
4501 (define-public ruby-rubytest
4502 (package
4503 (name "ruby-rubytest")
4504 (version "0.8.1")
4505 (source
4506 (origin
4507 (method url-fetch)
4508 (uri (rubygems-uri "rubytest" version))
4509 (sha256
4510 (base32
4511 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
4512 (build-system ruby-build-system)
4513 (arguments
4514 ;; Disable regular testing to break the cycle rubytest, qed, brass,
4515 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
4516 ;; simply test that the library can be require'd.
4517 `(#:phases
4518 (modify-phases %standard-phases
4519 (replace 'check
4520 (lambda _
4521 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
4522 (propagated-inputs
4523 `(("ruby-ansi" ,ruby-ansi)))
4524 (synopsis "Universal test harness for Ruby")
4525 (description
4526 "Rubytest is a testing meta-framework for Ruby. It can handle any
4527 compliant test framework and can run tests from multiple frameworks in a
4528 single pass.")
4529 (home-page "https://rubyworks.github.io/rubytest")
4530 (license license:bsd-2)))
4531
4532 (define-public ruby-brass
4533 (package
4534 (name "ruby-brass")
4535 (version "1.2.1")
4536 (source
4537 (origin
4538 (method url-fetch)
4539 (uri (rubygems-uri "brass" version))
4540 (sha256
4541 (base32
4542 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
4543 (build-system ruby-build-system)
4544 (arguments
4545 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
4546 ;; Instead simply test that the library can be require'd.
4547 `(#:phases
4548 (modify-phases %standard-phases
4549 (replace 'check
4550 (lambda _
4551 (invoke "ruby" "-Ilib" "-r" "brass"))))))
4552 (synopsis "Basic foundational assertions framework")
4553 (description
4554 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
4555 foundational assertions framework for other assertion and test frameworks to
4556 make use of.")
4557 (home-page "https://rubyworks.github.io/brass")
4558 (license license:bsd-2)))
4559
4560 (define-public ruby-qed
4561 (package
4562 (name "ruby-qed")
4563 (version "2.9.2")
4564 (source
4565 (origin
4566 (method url-fetch)
4567 (uri (rubygems-uri "qed" version))
4568 (sha256
4569 (base32
4570 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
4571 (build-system ruby-build-system)
4572 (arguments
4573 ;; Disable testing to break the cycle qed, ansi, qed, among others.
4574 ;; Instead simply test that the executable runs using --copyright.
4575 `(#:phases
4576 (modify-phases %standard-phases
4577 (replace 'check
4578 (lambda _
4579 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
4580 (propagated-inputs
4581 `(("ruby-ansi" ,ruby-ansi)
4582 ("ruby-brass" ,ruby-brass)))
4583 (synopsis "Test framework utilizing literate programming techniques")
4584 (description
4585 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
4586 @dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
4587 Development} (BDD) utilizing Literate Programming techniques. QED sits
4588 somewhere between lower-level testing tools like @code{Test::Unit} and
4589 requirement specifications systems like Cucumber.")
4590 (home-page "https://rubyworks.github.io/qed")
4591 (license license:bsd-2)))
4592
4593 (define-public ruby-ae
4594 (package
4595 (name "ruby-ae")
4596 (version "1.8.2")
4597 (source
4598 (origin
4599 (method url-fetch)
4600 ;; Fetch from github so tests are included.
4601 (uri (string-append
4602 "https://github.com/rubyworks/ae/archive/"
4603 version ".tar.gz"))
4604 (file-name (string-append name "-" version ".tar.gz"))
4605 (sha256
4606 (base32
4607 "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl"))))
4608 (build-system ruby-build-system)
4609 (arguments
4610 `(#:phases
4611 (modify-phases %standard-phases
4612 (replace 'check
4613 (lambda _ (invoke "qed")))
4614 (add-before 'validate-runpath 'replace-broken-symlink
4615 (lambda* (#:key outputs #:allow-other-keys)
4616 (let* ((out (assoc-ref outputs "out"))
4617 (file (string-append
4618 out "/lib/ruby/vendor_ruby/gems/ae-"
4619 ,version "/lib/ae.yml")))
4620 ;; XXX: This symlink is broken since ruby 2.4.
4621 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
4622 (delete-file file)
4623 (symlink "../.index" file)
4624 #t))))))
4625 (propagated-inputs
4626 `(("ruby-ansi" ,ruby-ansi)))
4627 (native-inputs
4628 `(("ruby-qed" ,ruby-qed)))
4629 (synopsis "Assertions library")
4630 (description
4631 "Assertive Expressive (AE) is an assertions library specifically designed
4632 for reuse by other test frameworks.")
4633 (home-page "https://rubyworks.github.io/ae")
4634 (license license:bsd-2)))
4635
4636 (define-public ruby-lemon
4637 (package
4638 (name "ruby-lemon")
4639 (version "0.9.1")
4640 (source
4641 (origin
4642 (method url-fetch)
4643 (uri (rubygems-uri "lemon" version))
4644 (sha256
4645 (base32
4646 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
4647 (build-system ruby-build-system)
4648 (arguments
4649 `(#:phases
4650 (modify-phases %standard-phases
4651 (replace 'check (lambda _ (invoke "qed"))))))
4652 (propagated-inputs
4653 `(("ruby-ae" ,ruby-ae)
4654 ("ruby-ansi" ,ruby-ansi)
4655 ("ruby-rubytest" ,ruby-rubytest)))
4656 (native-inputs
4657 `(("ruby-qed" ,ruby-qed)))
4658 (synopsis "Test framework correlating code structure and test unit")
4659 (description
4660 "Lemon is a unit testing framework that enforces highly formal
4661 case-to-class and unit-to-method test construction. This enforcement can help
4662 focus concern on individual units of behavior.")
4663 (home-page "https://rubyworks.github.io/lemon")
4664 (license license:bsd-2)))
4665
4666 (define-public ruby-rubytest-cli
4667 (package
4668 (name "ruby-rubytest-cli")
4669 (version "0.2.0")
4670 (source
4671 (origin
4672 (method url-fetch)
4673 (uri (rubygems-uri "rubytest-cli" version))
4674 (sha256
4675 (base32
4676 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
4677 (build-system ruby-build-system)
4678 (arguments
4679 `(#:tests? #f)) ; no tests
4680 (propagated-inputs
4681 `(("ruby-ansi" ,ruby-ansi)
4682 ("ruby-rubytest" ,ruby-rubytest)))
4683 (synopsis "Command-line interface for rubytest")
4684 (description
4685 "Rubytest CLI is a command-line interface for running tests for
4686 Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
4687 (home-page "https://rubyworks.github.io/rubytest-cli")
4688 (license license:bsd-2)))
4689
4690 (define-public ruby-hashery
4691 (package
4692 (name "ruby-hashery")
4693 (version "2.1.2")
4694 (source
4695 (origin
4696 (method url-fetch)
4697 (uri (rubygems-uri "hashery" version))
4698 (sha256
4699 (base32
4700 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
4701 (build-system ruby-build-system)
4702 (arguments
4703 `(#:phases
4704 (modify-phases %standard-phases
4705 (replace 'check
4706 (lambda _
4707 (invoke "qed")
4708 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
4709 (native-inputs
4710 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
4711 ("ruby-qed" ,ruby-qed)
4712 ("ruby-lemon" ,ruby-lemon)))
4713 (synopsis "Hash-like classes with extra features")
4714 (description
4715 "The Hashery is a tight collection of @code{Hash}-like classes.
4716 Included are the auto-sorting @code{Dictionary} class, the efficient
4717 @code{LRUHash}, the flexible @code{OpenHash} and the convenient
4718 @code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
4719 defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
4720 standard @code{Hash} making it possible to subclass and augment to fit any
4721 specific use case.")
4722 (home-page "https://rubyworks.github.io/hashery")
4723 (license license:bsd-2)))
4724
4725 (define-public ruby-rc4
4726 (package
4727 (name "ruby-rc4")
4728 (version "0.1.5")
4729 (source
4730 (origin
4731 (method url-fetch)
4732 (uri (rubygems-uri "ruby-rc4" version))
4733 (sha256
4734 (base32
4735 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
4736 (build-system ruby-build-system)
4737 (arguments
4738 `(#:phases
4739 (modify-phases %standard-phases
4740 (replace 'check
4741 (lambda _
4742 (invoke "rspec" "spec/rc4_spec.rb"))))))
4743 (native-inputs
4744 `(("ruby-rspec" ,ruby-rspec-2)))
4745 (synopsis "Implementation of the RC4 algorithm")
4746 (description
4747 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
4748 (home-page "https://github.com/caiges/Ruby-RC4")
4749 (license license:expat)))
4750
4751 (define-public ruby-afm
4752 (package
4753 (name "ruby-afm")
4754 (version "0.2.2")
4755 (source
4756 (origin
4757 (method url-fetch)
4758 (uri (rubygems-uri "afm" version))
4759 (sha256
4760 (base32
4761 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
4762 (build-system ruby-build-system)
4763 (native-inputs
4764 `(("bundler" ,bundler)))
4765 (synopsis "Read Adobe Font Metrics (afm) files")
4766 (description
4767 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
4768 files and use the data therein.")
4769 (home-page "https://github.com/halfbyte/afm")
4770 (license license:expat)))
4771
4772 (define-public ruby-ascii85
4773 (package
4774 (name "ruby-ascii85")
4775 (version "1.0.3")
4776 (source
4777 (origin
4778 (method url-fetch)
4779 (uri (rubygems-uri "Ascii85" version))
4780 (sha256
4781 (base32
4782 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
4783 (build-system ruby-build-system)
4784 (native-inputs
4785 `(("bundler" ,bundler)))
4786 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
4787 (description
4788 "This library provides methods to encode and decode Ascii85
4789 binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
4790 @dfn{Portable Document Format} (PDF) file formats.")
4791 (home-page "https://github.com/datawraith/ascii85gem")
4792 (license license:expat)))
4793
4794 (define-public ruby-ttfunk
4795 (package
4796 (name "ruby-ttfunk")
4797 (version "1.5.1")
4798 (source
4799 (origin
4800 (method url-fetch)
4801 ;; fetch from github as the gem does not contain testing code
4802 (uri (string-append
4803 "https://github.com/prawnpdf/ttfunk/archive/"
4804 version ".tar.gz"))
4805 (file-name (string-append name "-" version ".tar.gz"))
4806 (sha256
4807 (base32
4808 "1ymcn12n5iws401yz03zsj8rr653fdqq13czsrciq09phgh9jzc5"))))
4809 (build-system ruby-build-system)
4810 (arguments
4811 `(#:test-target "spec"
4812 #:phases
4813 (modify-phases %standard-phases
4814 (add-before 'build 'remove-ssh
4815 (lambda _
4816 ;; remove dependency on an ssh key pair that doesn't exist
4817 (substitute* "ttfunk.gemspec"
4818 (("spec.signing_key.*") ""))
4819 #t))
4820 (add-before 'check 'remove-rubocop
4821 (lambda _
4822 ;; remove rubocop as a dependency as not needed for testing
4823 (substitute* "ttfunk.gemspec"
4824 (("spec.add_development_dependency\\('rubocop'.*") ""))
4825 (substitute* "Rakefile"
4826 (("require 'rubocop/rake_task'") "")
4827 (("RuboCop::RakeTask.new") ""))
4828 #t)))))
4829 (native-inputs
4830 `(("ruby-rspec" ,ruby-rspec)
4831 ("ruby-yard" ,ruby-yard)
4832 ("bundler" ,bundler)))
4833 (synopsis "Font metrics parser for the Prawn PDF generator")
4834 (description
4835 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
4836 part of the Prawn PDF generator.")
4837 (home-page "https://github.com/prawnpdf/ttfunk")
4838 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
4839 ;; for details."
4840 (license (list license:gpl2 license:gpl3 license:ruby))))
4841
4842 (define-public ruby-puma
4843 (package
4844 (name "ruby-puma")
4845 (version "3.9.1")
4846 (source
4847 (origin
4848 (method url-fetch)
4849 ;; Fetch from GitHub because distributed gem does not contain tests.
4850 (uri (string-append "https://github.com/puma/puma/archive/v"
4851 version ".tar.gz"))
4852 (file-name (string-append name "-" version ".tar.gz"))
4853 (sha256
4854 (base32
4855 "03pifga841h17brh4vgia8i2ybh3cmsyg0dbybzdf6dq51wzcxdx"))))
4856 (build-system ruby-build-system)
4857 (arguments
4858 `(#:tests? #f ; Tests require an out-dated version of minitest.
4859 #:phases
4860 (modify-phases %standard-phases
4861 (add-before 'build 'fix-gemspec
4862 (lambda _
4863 (substitute* "puma.gemspec"
4864 (("git ls-files") "find * |sort"))
4865 #t)))))
4866 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
4867 (description
4868 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
4869 for Ruby/Rack applications. Puma is intended for use in both development and
4870 production environments. In order to get the best throughput, it is highly
4871 recommended that you use a Ruby implementation with real threads like Rubinius
4872 or JRuby.")
4873 (home-page "http://puma.io")
4874 (license license:expat)))
4875
4876 (define-public ruby-hoe-git
4877 (package
4878 (name "ruby-hoe-git")
4879 (version "1.6.0")
4880 (source
4881 (origin
4882 (method url-fetch)
4883 (uri (rubygems-uri "hoe-git" version))
4884 (sha256
4885 (base32
4886 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
4887 (build-system ruby-build-system)
4888 (propagated-inputs
4889 `(("ruby-hoe" ,ruby-hoe)
4890 ("git" ,git)))
4891 (synopsis "Hoe plugins for tighter Git integration")
4892 (description
4893 "This package provides a set of Hoe plugins for tighter Git integration.
4894 It provides tasks to automate release tagging and pushing and changelog
4895 generation.")
4896 (home-page "https://github.com/jbarnette/hoe-git")
4897 (license license:expat)))
4898
4899 (define-public ruby-sequel
4900 (package
4901 (name "ruby-sequel")
4902 (version "4.49.0")
4903 (source
4904 (origin
4905 (method url-fetch)
4906 (uri (rubygems-uri "sequel" version))
4907 (sha256
4908 (base32
4909 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
4910 (build-system ruby-build-system)
4911 (arguments
4912 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
4913 (synopsis "Database toolkit for Ruby")
4914 (description "Sequel provides thread safety, connection pooling and a
4915 concise DSL for constructing SQL queries and table schemas. It includes a
4916 comprehensive ORM layer for mapping records to Ruby objects and handling
4917 associated records.")
4918 (home-page "http://sequel.jeremyevans.net")
4919 (license license:expat)))
4920
4921 (define-public ruby-timecop
4922 (package
4923 (name "ruby-timecop")
4924 (version "0.9.1")
4925 (source
4926 (origin
4927 (method url-fetch)
4928 (uri (rubygems-uri "timecop" version))
4929 (sha256
4930 (base32
4931 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
4932 (build-system ruby-build-system)
4933 (arguments
4934 `(#:phases
4935 (modify-phases %standard-phases
4936 (add-before 'check 'set-check-rubylib
4937 (lambda _
4938 ;; Set RUBYLIB so timecop tests finds its own lib.
4939 (setenv "RUBYLIB" "lib")
4940 #t)))))
4941 (native-inputs
4942 `(("bundler" ,bundler)
4943 ("ruby-minitest-rg" ,ruby-minitest-rg)
4944 ("ruby-mocha" ,ruby-mocha)
4945 ("ruby-activesupport" ,ruby-activesupport)))
4946 (synopsis "Test mocks for time-dependent functions")
4947 (description
4948 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
4949 making it easier to test time-dependent code. It provides a unified method to
4950 mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
4951 call.")
4952 (home-page "https://github.com/travisjeffery/timecop")
4953 (license license:expat)))
4954
4955 (define-public ruby-concurrent
4956 (package
4957 (name "ruby-concurrent")
4958 (version "1.0.5")
4959 (source
4960 (origin
4961 (method url-fetch)
4962 ;; Download from GitHub because the rubygems version does not contain
4963 ;; Rakefile.
4964 (uri (string-append
4965 "https://github.com/ruby-concurrency/concurrent-ruby/archive/v"
4966 version
4967 ".tar.gz"))
4968 (file-name (string-append name "-" version ".tar.gz"))
4969 (sha256
4970 (base32
4971 "0qhv0qzsby4iijgwa4s9r88zj8123pmyz1dwaqzdk57xgqll9pny"))
4972 ;; Exclude failing test reported at
4973 ;; https://github.com/ruby-concurrency/concurrent-ruby/issues/534
4974 (patches (search-patches "ruby-concurrent-ignore-broken-test.patch"
4975 "ruby-concurrent-test-arm.patch"))))
4976 (build-system ruby-build-system)
4977 (arguments
4978 `(#:test-target "spec"
4979 #:phases
4980 (modify-phases %standard-phases
4981 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
4982 (lambda _
4983 ;; Delete extra gemspec files so 'first-gemspec' chooses the
4984 ;; correct one.
4985 (delete-file "concurrent-ruby-edge.gemspec")
4986 (delete-file "concurrent-ruby-ext.gemspec")
4987 #t))
4988 (add-before 'build 'replace-git-ls-files2
4989 (lambda _
4990 (substitute* "support/file_map.rb"
4991 (("git ls-files") "find * |sort"))
4992 #t))
4993 (add-before 'check 'rake-compile
4994 ;; Fix the test error described at
4995 ;; https://github.com/ruby-concurrency/concurrent-ruby/pull/408
4996 (lambda _ (invoke "rake" "compile")))
4997 (add-before 'check 'remove-timecop-dependency
4998 ;; Remove timecop-dependent tests as having timecop as a depedency
4999 ;; causes circular depedencies.
5000 (lambda _
5001 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
5002 (delete-file "spec/concurrent/scheduled_task_spec.rb")
5003 #t)))))
5004 (native-inputs
5005 `(("ruby-rake-compiler" ,ruby-rake-compiler)
5006 ("ruby-rspec" ,ruby-rspec)))
5007 (synopsis "Concurrency tools for Ruby")
5008 (description
5009 "This library provides modern concurrency tools including agents,
5010 futures, promises, thread pools, actors, supervisors, and more. It is
5011 inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
5012 patterns.")
5013 (home-page "http://www.concurrent-ruby.com")
5014 (license license:expat)))
5015
5016 (define-public ruby-pkg-config
5017 (package
5018 (name "ruby-pkg-config")
5019 (version "1.2.5")
5020 (source
5021 (origin
5022 (method url-fetch)
5023 (uri (rubygems-uri "pkg-config" version))
5024 (sha256
5025 (base32
5026 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
5027 (build-system ruby-build-system)
5028 (arguments
5029 ;; Tests require extra files not included in the gem.
5030 `(#:tests? #f))
5031 (synopsis "Detect libraries for compiling Ruby native extensions")
5032 (description
5033 "@code{pkg-config} can be used in your extconf.rb to properly detect need
5034 libraries for compiling Ruby native extensions.")
5035 (home-page "https://github.com/ruby-gnome2/pkg-config")
5036 (license license:lgpl2.0+)))
5037
5038 (define-public ruby-net-http-digest-auth
5039 (package
5040 (name "ruby-net-http-digest-auth")
5041 (version "1.4.1")
5042 (source
5043 (origin
5044 (method url-fetch)
5045 (uri (rubygems-uri "net-http-digest_auth" version))
5046 (sha256
5047 (base32
5048 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
5049 (build-system ruby-build-system)
5050 (native-inputs
5051 `(("ruby-hoe" ,ruby-hoe)))
5052 (synopsis "RFC 2617 HTTP digest authentication library")
5053 (description
5054 "This library implements HTTP's digest authentication scheme based on
5055 RFC 2617. This enables the use of the digest authentication scheme instead
5056 of the more insecure basic authentication scheme.")
5057 (home-page "https://github.com/drbrain/net-http-digest_auth")
5058 (license license:expat)))
5059
5060 (define-public ruby-mail
5061 (package
5062 (name "ruby-mail")
5063 (version "2.6.6")
5064 (source
5065 (origin
5066 (method url-fetch)
5067 (uri (rubygems-uri "mail" version))
5068 (sha256
5069 (base32
5070 "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
5071 (build-system ruby-build-system)
5072 (propagated-inputs
5073 `(("ruby-mime-types" ,ruby-mime-types)))
5074 (arguments
5075 ;; Tests require extra gems not included in the Gemfile.
5076 ;; XXX: Try enabling this for the next version with mini_mime.
5077 `(#:tests? #f))
5078 (synopsis "Mail library for Ruby")
5079 (description
5080 "Mail is an internet library for Ruby that is designed to handle email
5081 generation, parsing and sending. The purpose of this library is to provide
5082 a single point of access to handle all email functions, including sending
5083 and receiving emails. All network type actions are done through proxy
5084 methods to @code{Net::SMTP}, @code{Net::POP3} etc.
5085
5086 Mail has been designed with a very simple object oriented system that
5087 really opens up the email messages you are parsing, if you know what you
5088 are doing, you can fiddle with every last bit of your email directly.")
5089 (home-page "https://github.com/mikel/mail")
5090 (license license:expat)))
5091
5092 (define-public ruby-mathn
5093 (package
5094 (name "ruby-mathn")
5095 (version "0.1.0")
5096 (source
5097 (origin
5098 (method url-fetch)
5099 (uri (rubygems-uri "mathn" version))
5100 (sha256
5101 (base32
5102 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
5103 (build-system ruby-build-system)
5104 (native-inputs
5105 `(("bundler" ,bundler)
5106 ("ruby-rake-compiler" ,ruby-rake-compiler)))
5107 (synopsis "Extends math operations for increased precision")
5108 (description
5109 "This gem makes mathematical operations more precise in Ruby and
5110 integrates other mathematical standard libraries. Prior to Ruby 2.5,
5111 @code{mathn} was part of the Ruby standard library.")
5112 (home-page "https://github.com/ruby/mathn")
5113 (license license:bsd-2)))
5114
5115 (define-public ruby-code-statistics
5116 (package
5117 (name "ruby-code-statistics")
5118 (version "0.2.13")
5119 (source
5120 (origin
5121 (method url-fetch)
5122 (uri (rubygems-uri "code_statistics" version))
5123 (sha256
5124 (base32
5125 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
5126 (build-system ruby-build-system)
5127 (arguments
5128 `(#:tests? #f)) ; Not all test code is included in gem.
5129 (synopsis "Port of the rails 'rake stats' method")
5130 (description
5131 "This gem is a port of the rails 'rake stats' method so it can be made
5132 more robust and work for non rails projects.")
5133 (home-page "http://github.com/danmayer/code_statistics")
5134 (license license:expat)))
5135
5136 (define-public ruby-rubypants
5137 (package
5138 (name "ruby-rubypants")
5139 (version "0.6.0")
5140 (source (origin
5141 (method url-fetch)
5142 (uri (rubygems-uri "rubypants" version))
5143 (sha256
5144 (base32
5145 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
5146 (build-system ruby-build-system)
5147 (arguments
5148 '(#:tests? #f)) ; need Codecov
5149 (synopsis "Port of the smart-quotes library SmartyPants")
5150 (description
5151 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
5152 original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
5153 and BBEdit that easily translates plain ASCII punctuation characters into
5154 smart typographic punctuation HTML entities.")
5155 (home-page "https://github.com/jmcnevin/rubypants")
5156 (license license:bsd-2)))
5157
5158 (define-public ruby-org-ruby
5159 (package
5160 (name "ruby-org-ruby")
5161 (version "0.9.12")
5162 (source (origin
5163 (method url-fetch)
5164 (uri (rubygems-uri "org-ruby" version))
5165 (sha256
5166 (base32
5167 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
5168 (build-system ruby-build-system)
5169 (arguments
5170 '(#:tests? #f)) ; no rakefile
5171 (propagated-inputs
5172 `(("ruby-rubypants" ,ruby-rubypants)))
5173 (synopsis "Org-mode parser written in Ruby")
5174 (description
5175 "Org-ruby is an org-mode parser written in Ruby. The most significant
5176 thing this library does today is convert org-mode files to HTML or Textile or
5177 Markdown.")
5178 (home-page "https://github.com/wallyqs/org-ruby")
5179 (license license:expat)))
5180
5181 (define-public ruby-rake
5182 (package
5183 (name "ruby-rake")
5184 (version "12.3.1")
5185 (source
5186 (origin
5187 (method url-fetch)
5188 (uri (rubygems-uri "rake" version))
5189 (sha256
5190 (base32
5191 "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg"))))
5192 (build-system ruby-build-system)
5193 (native-inputs
5194 `(("bundler" ,bundler)))
5195 (synopsis "Rake is a Make-like program implemented in Ruby")
5196 (description
5197 "Rake is a Make-like program where tasks and dependencies are specified
5198 in standard Ruby syntax.")
5199 (home-page "https://github.com/ruby/rake")
5200 (license license:expat)))
5201
5202 (define-public ruby-childprocess-0.6
5203 (package
5204 (name "ruby-childprocess")
5205 (version "0.6.3")
5206 (source
5207 (origin
5208 (method url-fetch)
5209 (uri (rubygems-uri "childprocess" version))
5210 (sha256
5211 (base32
5212 "1p3f43scdzx9zxmy2kw5zsc3az6v46nq4brwcxmnscjy4w4racbv"))))
5213 (build-system ruby-build-system)
5214 (arguments
5215 `(#:tests? #f))
5216 (native-inputs
5217 `(("bundler" ,bundler)
5218 ("ruby-rspec" ,ruby-rspec)))
5219 (propagated-inputs
5220 `(("ruby-ffi" ,ruby-ffi)))
5221 (synopsis "Control external programs running in the background, in Ruby")
5222 (description "@code{childprocess} provides a gem to control external
5223 programs running in the background, in Ruby.")
5224 (home-page "http://github.com/enkessler/childprocess")
5225 (license license:expat)))
5226
5227 (define-public ruby-childprocess
5228 (package
5229 (inherit ruby-childprocess-0.6)
5230 (name "ruby-childprocess")
5231 (version "0.9.0")
5232 (source
5233 (origin
5234 (method url-fetch)
5235 (uri (rubygems-uri "childprocess" version))
5236 (sha256
5237 (base32
5238 "0a61922kmvcxyj5l70fycapr87gz1dzzlkfpq85rfqk5vdh3d28p"))))))
5239
5240 (define-public ruby-public-suffix
5241 (package
5242 (name "ruby-public-suffix")
5243 (version "3.0.3")
5244 (source (origin
5245 (method url-fetch)
5246 (uri (rubygems-uri "public_suffix" version))
5247 (sha256
5248 (base32
5249 "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l"))))
5250 (build-system ruby-build-system)
5251 (arguments
5252 ;; Tests require network
5253 `(#:tests? #f))
5254 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
5255 (synopsis "Domain name parser")
5256 (description "The gem @code{public_suffix} is a domain name parser,
5257 written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
5258 is one under which Internet users can (or historically could) directly
5259 register names. Some examples of public suffixes are @code{.com},
5260 @code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
5261 all known public suffixes.")
5262 (license license:expat)))
5263
5264 (define-public ruby-addressable
5265 (package
5266 (name "ruby-addressable")
5267 (version "2.5.2")
5268 (source (origin
5269 (method url-fetch)
5270 (uri (rubygems-uri "addressable" version))
5271 (sha256
5272 (base32
5273 "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk"))))
5274 (build-system ruby-build-system)
5275 (propagated-inputs
5276 `(("ruby-public-suffix" ,ruby-public-suffix)))
5277 (arguments
5278 ;; No test target
5279 `(#:tests? #f))
5280 (home-page "https://github.com/sporkmonger/addressable")
5281 (synopsis "Alternative URI implementation")
5282 (description "Addressable is a replacement for the URI implementation that
5283 is part of Ruby's standard library. It more closely conforms to RFC 3986,
5284 RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
5285 (license license:asl2.0)))
5286
5287 (define-public ruby-colorator
5288 (package
5289 (name "ruby-colorator")
5290 (version "1.1.0")
5291 (source (origin
5292 (method url-fetch)
5293 (uri (rubygems-uri "colorator" version))
5294 (sha256
5295 (base32
5296 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
5297 (build-system ruby-build-system)
5298 (arguments
5299 ;; No test target
5300 `(#:tests? #f))
5301 (home-page "http://octopress.org/colorator/")
5302 (synopsis "Terminal color library")
5303 (description "Colorator is a Ruby gem that helps you colorize your text
5304 for the terminal.")
5305 (license license:expat)))
5306
5307 (define-public ruby-command-line-reporter
5308 (package
5309 (name "ruby-command-line-reporter")
5310 (version "4.0.0")
5311 (source (origin
5312 (method url-fetch)
5313 (uri (rubygems-uri "command_line_reporter" version))
5314 (sha256
5315 (base32
5316 "1qma35xrb772whxwy1rs9bicb9d6lvz0s2dd2dnn4fr6zcbcxc0a"))))
5317 (build-system ruby-build-system)
5318 (arguments
5319 ;; No Rakefile
5320 `(#:tests? #f
5321 #:phases
5322 (modify-phases %standard-phases
5323 (add-before 'build 'fix-dependencies
5324 (lambda _
5325 (substitute* ".gemspec"
5326 ;; colored is unmaintained
5327 (("colored") "colorator")
5328 ;; colorator version
5329 (("= 1.2") "= 1.1"))
5330 #t)))))
5331 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
5332 (home-page "https://github.com/wbailey/command_line_reporter")
5333 (synopsis "Report production while executing Ruby scripts")
5334 (description "This gem provides a DSL that makes it easy to write reports
5335 of various types in ruby. It eliminates the need to litter your source with
5336 puts statements, instead providing a more readable, expressive interface to
5337 your application.")
5338 (license license:asl2.0)))
5339
5340 (define-public ruby-command-line-reporter-3
5341 (package
5342 (inherit ruby-command-line-reporter)
5343 (version "3.3.6")
5344 (source (origin
5345 (method url-fetch)
5346 (uri (rubygems-uri "command_line_reporter" version))
5347 (sha256
5348 (base32
5349 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
5350
5351 (define-public ruby-rdoc
5352 (package
5353 (name "ruby-rdoc")
5354 (version "6.0.4")
5355 (source
5356 (origin
5357 (method url-fetch)
5358 (uri (rubygems-uri "rdoc" version))
5359 (sha256
5360 (base32
5361 "0anv42cqcdc6g4n386mrva7mgav5i0c2ry3yzvzzc6z6hymkmcr7"))))
5362 (build-system ruby-build-system)
5363 (native-inputs
5364 `(("bundler" ,bundler)))
5365 (home-page "https://ruby.github.io/rdoc/")
5366 (synopsis "HTML and command-line documentation utility")
5367 (description "RDoc produces HTML and command-line documentation for Ruby
5368 projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
5369 documentation from the command-line.")
5370 (license license:gpl2+)))
5371
5372 (define-public ruby-sass-listen
5373 (package
5374 (name "ruby-sass-listen")
5375 (version "4.0.0")
5376 (source (origin
5377 (method url-fetch)
5378 (uri (rubygems-uri "sass-listen" version))
5379 (sha256
5380 (base32
5381 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
5382 (build-system ruby-build-system)
5383 (arguments
5384 ;; No test target
5385 `(#:tests? #f))
5386 (propagated-inputs
5387 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
5388 ("ruby-rb-inotify" ,ruby-rb-inotify)))
5389 (home-page "https://github.com/sass/listen")
5390 (synopsis "File modification notification library")
5391 (description "The Listen gem listens to file modifications and notifies you
5392 about the changes.")
5393 (license license:expat)))
5394
5395 (define-public ruby-terminfo
5396 (package
5397 (name "ruby-terminfo")
5398 (version "0.1.1")
5399 (source
5400 (origin
5401 (method url-fetch)
5402 (uri (rubygems-uri "ruby-terminfo" version))
5403 (sha256
5404 (base32
5405 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
5406 (build-system ruby-build-system)
5407 (arguments
5408 `(#:test-target "test"
5409 ;; Rakefile requires old packages and would need modification to
5410 ;; work with current software.
5411 #:tests? #f))
5412 (inputs
5413 `(("ncurses" ,ncurses)))
5414 (native-inputs
5415 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
5416 ("ruby-rdoc" ,ruby-rdoc)))
5417 (home-page "http://www.a-k-r.org/ruby-terminfo/")
5418 (synopsis "Terminfo binding for Ruby")
5419 (description "Ruby-terminfo provides terminfo binding for Ruby.")
5420 (license license:bsd-3)))
5421
5422 (define-public ruby-diffy
5423 (package
5424 (name "ruby-diffy")
5425 (version "3.2.1")
5426 (source
5427 (origin
5428 (method url-fetch)
5429 (uri (rubygems-uri "diffy" version))
5430 (sha256
5431 (base32
5432 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
5433 (build-system ruby-build-system)
5434 (arguments
5435 ;; No tests
5436 `(#:tests? #f))
5437 (native-inputs
5438 `(("ruby-rspec" ,ruby-rspec)))
5439 (home-page "https://github.com/samg/diffy")
5440 (synopsis "Convenient diffing in ruby")
5441 (description "Diffy provides a convenient way to generate a diff from two
5442 strings or files.")
5443 (license license:expat)))
5444
5445 (define-public ruby-sass-spec
5446 (package
5447 (name "ruby-sass-spec")
5448 (version "3.5.4")
5449 (source (origin
5450 (method url-fetch)
5451 (uri (string-append "https://github.com/sass/sass-spec/archive/v"
5452 version ".tar.gz"))
5453 (file-name (string-append name "-" version ".tar.gz"))
5454 (sha256
5455 (base32
5456 "0nx8lp7c9qa58w489crgqa3c489xsyarn1a8h4np9mwwfqm1h3rr"))))
5457 (build-system ruby-build-system)
5458 (propagated-inputs
5459 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
5460 ("ruby-diffy" ,ruby-diffy)
5461 ("ruby-terminfo" ,ruby-terminfo)))
5462 (arguments
5463 `(;; This package contains tests for a sass implementation, and the to
5464 ;; avoid any circular dependencies, the tests are not run here
5465 #:tests? #f
5466 #:phases
5467 (modify-phases %standard-phases
5468 (add-after 'unpack 'patch-test
5469 (lambda _
5470 (delete-file "spec/values/colors/alpha_hex-3.5/error")
5471 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
5472 (("string") "color")))))))
5473 (home-page "https://github.com/sass/sass-spec")
5474 (synopsis "Test suite for Sass")
5475 (description "Sass Spec is a test suite for Sass. Test cases are all in
5476 the @file{spec} directory.")
5477 (license license:expat)))
5478
5479 (define-public ruby-sass
5480 (package
5481 (name "ruby-sass")
5482 (version "3.6.0")
5483 (source (origin
5484 (method url-fetch)
5485 (uri (rubygems-uri "sass" version))
5486 (sha256
5487 (base32
5488 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
5489 (build-system ruby-build-system)
5490 (propagated-inputs
5491 `(("ruby-sass-listen" ,ruby-sass-listen)))
5492 (native-inputs
5493 `(("ruby-sass-spec" ,ruby-sass-spec)
5494 ("ruby-mathn" ,ruby-mathn)))
5495 (home-page "http://sass-lang.com/")
5496 (synopsis "CSS extension language")
5497 (description "Sass is a CSS extension language. It extends CSS with
5498 features that don't exist yet like variables, nesting, mixins and inheritance.")
5499 (license license:expat)))
5500
5501 (define-public ruby-jekyll-sass-converter
5502 (package
5503 (name "ruby-jekyll-sass-converter")
5504 (version "1.5.2")
5505 (source (origin
5506 (method url-fetch)
5507 (uri (rubygems-uri "jekyll-sass-converter" version))
5508 (sha256
5509 (base32
5510 "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk"))))
5511 (build-system ruby-build-system)
5512 (propagated-inputs
5513 `(("ruby-sass" ,ruby-sass)))
5514 (arguments
5515 ;; No rakefile
5516 `(#:tests? #f))
5517 (home-page "https://github.com/jekyll/jekyll-sass-converter")
5518 (synopsis "Sass converter for Jekyll")
5519 (description "This gem provide built-in support for the Sass converter
5520 in Jekyll.")
5521 (license license:expat)))
5522
5523 (define-public ruby-jekyll-watch
5524 (package
5525 (name "ruby-jekyll-watch")
5526 (version "2.0.0")
5527 (source (origin
5528 (method url-fetch)
5529 (uri (rubygems-uri "jekyll-watch" version))
5530 (sha256
5531 (base32
5532 "0m7scvj3ki8bmyx5v8pzibpg6my10nycnc28lip98dskf8iakprp"))))
5533 (build-system ruby-build-system)
5534 (propagated-inputs
5535 `(("ruby-listen-3.0" ,ruby-listen-3.0)))
5536 (arguments
5537 ;; No rakefile
5538 `(#:tests? #f))
5539 (home-page "https://github.com/jekyll/jekyll-watch")
5540 (synopsis "Jekyll auto-rebuild support")
5541 (description "This gems add the @code{--watch} switch to the jekyll CLI
5542 interface. It allows Jekyll to rebuild your site when a file changes.")
5543 (license license:expat)))
5544
5545 (define-public ruby-parallel
5546 (package
5547 (name "ruby-parallel")
5548 (version "1.12.1")
5549 (source (origin
5550 (method url-fetch)
5551 (uri (rubygems-uri "parallel" version))
5552 (sha256
5553 (base32
5554 "01hj8v1qnyl5ndrs33g8ld8ibk0rbcqdpkpznr04gkbxd11pqn67"))))
5555 (build-system ruby-build-system)
5556 (arguments `(#:tests? #f)); No rakefile
5557 (home-page "https://github.com/grosser/parallel")
5558 (synopsis "Parallel processing in Ruby")
5559 (description "Parallel allows you to run any code in parallel Processes
5560 (to use all CPUs) or Threads(to speedup blocking operations). It is best
5561 suited for map-reduce or e.g. parallel downloads/uploads.")
5562 (license license:expat)))
5563
5564 (define-public ruby-cane
5565 (package
5566 (name "ruby-cane")
5567 (version "3.0.0")
5568 (source (origin
5569 (method url-fetch)
5570 (uri (rubygems-uri "cane" version))
5571 (sha256
5572 (base32
5573 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
5574 (build-system ruby-build-system)
5575 (arguments `(#:tests? #f)); No rakefile
5576 (home-page "https://github.com/square/cane")
5577 (propagated-inputs
5578 `(("ruby-parallel" ,ruby-parallel)))
5579 (synopsis "Code quality threshold checking")
5580 (description "Cane fails your build if code quality thresholds are not met.")
5581 (license license:asl2.0)))
5582
5583 (define-public ruby-morecane
5584 (package
5585 (name "ruby-morecane")
5586 (version "0.2.0")
5587 (source (origin
5588 (method url-fetch)
5589 (uri (rubygems-uri "morecane" version))
5590 (sha256
5591 (base32
5592 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
5593 (build-system ruby-build-system)
5594 (home-page "https://github.com/yob/morecane")
5595 (arguments `(#:tests? #f)); No rakefile
5596 (propagated-inputs
5597 `(("ruby-parallel" ,ruby-parallel)))
5598 (synopsis "Extra checks for cane")
5599 (description "The cane gem provides a great framework for running quality
5600 checks over your ruby project as part of continuous integration build. It
5601 comes with a few checks out of the box, but also provides an API for loading
5602 custom checks. This gem provides a set of additional checks.")
5603 (license license:expat)))
5604
5605 (define-public ruby-pdf-reader
5606 (package
5607 (name "ruby-pdf-reader")
5608 (version "2.1.0")
5609 (source (origin
5610 (method url-fetch)
5611 (uri (rubygems-uri "pdf-reader" version))
5612 (sha256
5613 (base32
5614 "1b3ig4wpcgdbqa7yw0ahwbmikkkywn2a22bfmrknl5ls7g066x45"))))
5615 (build-system ruby-build-system)
5616 (arguments `(#:test-target "spec"))
5617 (native-inputs
5618 `(("bundler" ,bundler)
5619 ("ruby-rspec" ,ruby-rspec)
5620 ("ruby-cane" ,ruby-cane)
5621 ("ruby-morecane" ,ruby-morecane)))
5622 (propagated-inputs
5623 `(("ruby-afm" ,ruby-afm)
5624 ("ruby-ascii85" ,ruby-ascii85)
5625 ("ruby-hashery" ,ruby-hashery)
5626 ("ruby-rc4" ,ruby-rc4)
5627 ("ruby-ttfunk" ,ruby-ttfunk)))
5628 (home-page "https://github.com/yob/pdf-reader")
5629 (synopsis "PDF parser in Ruby")
5630 (description "The PDF::Reader library implements a PDF parser conforming as
5631 much as possible to the PDF specification from Adobe. It provides programmatic
5632 access to the contents of a PDF file with a high degree of flexibility.")
5633 (license license:gpl3+)))
5634
5635 (define-public ruby-pdf-inspector
5636 (package
5637 (name "ruby-pdf-inspector")
5638 (version "1.3.0")
5639 (source (origin
5640 (method url-fetch)
5641 (uri (rubygems-uri "pdf-inspector" version))
5642 (sha256
5643 (base32
5644 "1g853az4xzgqxr5xiwhb76g4sqmjg4s79mm35mp676zjsrwpa47w"))))
5645 (build-system ruby-build-system)
5646 (propagated-inputs
5647 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
5648 (arguments `(#:tests? #f)); No rakefile
5649 (home-page "https://github.com/prawnpdf/pdf-inspector")
5650 (synopsis "Analysis classes for inspecting PDF output")
5651 (description "This library provides a number of PDF::Reader based tools for
5652 use in testing PDF output. Presently, the primary purpose of this tool is to
5653 support the tests found in Prawn, a pure Ruby PDF generation library.")
5654 (license license:gpl3+)))
5655
5656 (define-public ruby-pdf-core
5657 (package
5658 (name "ruby-pdf-core")
5659 (version "0.8.1")
5660 (source (origin
5661 (method url-fetch)
5662 (uri (rubygems-uri "pdf-core" version))
5663 (sha256
5664 (base32
5665 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
5666 (build-system ruby-build-system)
5667 (arguments
5668 ; No test target
5669 `(#:tests? #f))
5670 (home-page "https://github.com/prawnpdf/pdf-core")
5671 (synopsis "Low level PDF features for Prawn")
5672 (description "This is an experimental gem that extracts low-level PDF
5673 functionality from Prawn.")
5674 (license license:gpl3+)))
5675
5676 (define-public ruby-yard
5677 (package
5678 (name "ruby-yard")
5679 (version "0.9.16")
5680 (source (origin
5681 (method url-fetch)
5682 (uri (rubygems-uri "yard" version))
5683 (sha256
5684 (base32
5685 "0lmmr1839qgbb3zxfa7jf5mzy17yjl1yirwlgzdhws4452gqhn67"))))
5686 (build-system ruby-build-system)
5687 (arguments `(#:test-target "spec"))
5688 (home-page "https://yardoc.org/")
5689 (synopsis "Ruby documentation tool")
5690 (description "YARD is a documentation generation tool for the Ruby
5691 programming language. It enables the user to generate consistent, usable
5692 documentation that can be exported to a number of formats very easily, and
5693 also supports extending for custom Ruby constructs such as custom class level
5694 definitions.")
5695 (license license:expat)))
5696
5697 (define-public ruby-prawn
5698 (package
5699 (name "ruby-prawn")
5700 (version "2.2.2")
5701 (source (origin
5702 (method url-fetch)
5703 (uri (rubygems-uri "prawn" version))
5704 (sha256
5705 (base32
5706 "1qdjf1v6sfl44g3rqxlg8k4jrzkwaxgvh2l4xws97a8f3xv4na4m"))))
5707 (build-system ruby-build-system)
5708 (arguments
5709 ; No tests
5710 `(#:tests? #f
5711 #:phases
5712 (modify-phases %standard-phases
5713 (add-before 'build 'fix-dependencies
5714 (lambda _
5715 (substitute* "prawn.gemspec"
5716 (("~> 0.7.0") "~> 0.7"))
5717 #t)))))
5718 (propagated-inputs
5719 `(("ruby-pdf-core" ,ruby-pdf-core)
5720 ("ruby-ttfunk" ,ruby-ttfunk)))
5721 (native-inputs
5722 `(("bundler" ,bundler)
5723 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
5724 ("ruby-rspec" ,ruby-rspec)
5725 ("ruby-simplecov" ,ruby-simplecov)
5726 ("ruby-yard" ,ruby-yard)))
5727 (home-page "http://prawnpdf.org/api-docs/2.0/")
5728 (synopsis "PDF generation for Ruby")
5729 (description "Prawn is a pure Ruby PDF generation library.")
5730 (license license:gpl3+)))
5731
5732 (define-public ruby-prawn-table
5733 (package
5734 (name "ruby-prawn-table")
5735 (version "0.2.2")
5736 (source (origin
5737 (method url-fetch)
5738 (uri (rubygems-uri "prawn-table" version))
5739 (sha256
5740 (base32
5741 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
5742 (build-system ruby-build-system)
5743 (arguments `(#:tests? #f)); No rakefile
5744 (propagated-inputs
5745 `(("ruby-prawn" ,ruby-prawn)))
5746 (home-page "https://github.com/prawnpdf/prawn-table")
5747 (synopsis "Tables support for Prawn")
5748 (description "This gem provides tables support for Prawn.")
5749 (license license:gpl3+)))
5750
5751 (define-public ruby-kramdown
5752 (package
5753 (name "ruby-kramdown")
5754 (version "1.17.0")
5755 (source (origin
5756 (method url-fetch)
5757 (uri (rubygems-uri "kramdown" version))
5758 (sha256
5759 (base32
5760 "1n1c4jmrh5ig8iv1rw81s4mw4xsp4v97hvf8zkigv4hn5h542qjq"))))
5761 (build-system ruby-build-system)
5762 (arguments `(#:tests? #f)); FIXME: some test failures
5763 (native-inputs
5764 `(("ruby-prawn" ,ruby-prawn)
5765 ("ruby-prawn-table" ,ruby-prawn-table)))
5766 (home-page "https://kramdown.gettalong.org/")
5767 (synopsis "Markdown parsing and converting library")
5768 (description "Kramdown is a library for parsing and converting a superset
5769 of Markdown. It is completely written in Ruby, supports standard Markdown
5770 (with some minor modifications) and various extensions that have been made
5771 popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
5772 (license license:expat)))
5773
5774 (define-public ruby-http-parser.rb
5775 (package
5776 (name "ruby-http-parser.rb")
5777 (version "0.6.0")
5778 (source
5779 (origin
5780 (method url-fetch)
5781 (uri (rubygems-uri "http_parser.rb" version))
5782 (sha256
5783 (base32
5784 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
5785 (build-system ruby-build-system)
5786 (arguments
5787 ;; No tests
5788 `(#:tests? #f))
5789 (native-inputs
5790 `(("ruby-rake-compiler" ,ruby-rake-compiler)
5791 ("ruby-rspec" ,ruby-rspec)))
5792 (home-page "https://github.com/tmm1/http_parser.rb")
5793 (synopsis "HTTP parser un Ruby")
5794 (description "This gem is a simple callback-based HTTP request/response
5795 parser for writing http servers, clients and proxies.")
5796 (license license:expat)))
5797
5798 (define-public ruby-em-websocket
5799 (package
5800 (name "ruby-em-websocket")
5801 (version "0.5.1")
5802 (source
5803 (origin
5804 (method url-fetch)
5805 (uri (rubygems-uri "em-websocket" version))
5806 (sha256
5807 (base32
5808 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
5809 (build-system ruby-build-system)
5810 (arguments
5811 ;; No tests
5812 `(#:tests? #f))
5813 (propagated-inputs
5814 `(("ruby-eventmachine" ,ruby-eventmachine)
5815 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
5816 (native-inputs
5817 `(("bundler" ,bundler)
5818 ("ruby-rspec" ,ruby-rspec)))
5819 (home-page "https://github.com/igrigorik/em-websocket")
5820 (synopsis "EventMachine based WebSocket server")
5821 (description "Em-websocket is an EventMachine based WebSocket server
5822 implementation.")
5823 (license license:expat)))
5824
5825 (define-public ruby-rouge
5826 (package
5827 (name "ruby-rouge")
5828 (version "3.2.1")
5829 (source (origin
5830 (method url-fetch)
5831 (uri (rubygems-uri "rouge" version))
5832 (sha256
5833 (base32
5834 "0h79gn2wmn1wix2d27lgiaimccyj8gvizrllyym500pir408x62f"))))
5835 (build-system ruby-build-system)
5836 (arguments `(#:tests? #f)); No rakefile
5837 (home-page "http://rouge.jneen.net/")
5838 (synopsis "Code highlighter")
5839 (description "Rouge is a code highlighter written in Ruby. It supports more
5840 than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
5841 is compatible with stylesheets designed for pygments.")
5842 (license (list
5843 ;; rouge is licensed under expat
5844 license:expat
5845 ;; pygments is licensed under bsd-2
5846 license:bsd-2))))
5847
5848 (define-public ruby-rouge-2
5849 (package
5850 (inherit ruby-rouge)
5851 (version "2.2.1")
5852 (source (origin
5853 (method url-fetch)
5854 (uri (rubygems-uri "rouge" version))
5855 (sha256
5856 (base32
5857 "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs"))))))
5858
5859 (define-public ruby-hashie
5860 (package
5861 (name "ruby-hashie")
5862 (version "3.6.0")
5863 (source (origin
5864 (method url-fetch)
5865 (uri (rubygems-uri "hashie" version))
5866 (sha256
5867 (base32
5868 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
5869 (build-system ruby-build-system)
5870 (native-inputs
5871 `(("bundler" ,bundler)))
5872 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
5873 (home-page "https://github.com/intridea/hashie")
5874 (synopsis "Extensions to Ruby Hashes")
5875 (description "Hashie is a collection of classes and mixins that make Ruby
5876 hashes more powerful.")
5877 (license license:expat)))
5878
5879 (define-public ruby-heredoc-unindent
5880 (package
5881 (name "ruby-heredoc-unindent")
5882 (version "1.2.0")
5883 (source (origin
5884 (method url-fetch)
5885 (uri (rubygems-uri "heredoc_unindent" version))
5886 (sha256
5887 (base32
5888 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
5889 (build-system ruby-build-system)
5890 (native-inputs
5891 `(("ruby-hoe" ,ruby-hoe)))
5892 (home-page "https://github.com/adrianomitre/heredoc_unindent")
5893 (synopsis "Heredoc indentation cleaner")
5894 (description "This gem removes common margin from indented strings, such
5895 as the ones produced by indented heredocs. In other words, it strips out
5896 leading whitespace chars at the beginning of each line, but only as much as
5897 the line with the smallest margin.
5898
5899 It is acknowledged that many strings defined by heredocs are just code and
5900 fact is that most parsers are insensitive to indentation. If, however, the
5901 strings are to be used otherwise, be it for printing or testing, the extra
5902 indentation will probably be an issue and hence this gem.")
5903 (license license:expat)))
5904
5905 (define-public ruby-safe-yaml
5906 (package
5907 (name "ruby-safe-yaml")
5908 (version "1.0.4")
5909 (source (origin
5910 (method url-fetch)
5911 (uri (rubygems-uri "safe_yaml" version))
5912 (sha256
5913 (base32
5914 "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094"))))
5915 (build-system ruby-build-system)
5916 (native-inputs
5917 `(("ruby-rspec" ,ruby-rspec)
5918 ("ruby-hashie" ,ruby-hashie)
5919 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
5920 (arguments `(#:test-target "spec"
5921 #:tests? #f));; FIXME: one failure
5922 (home-page "https://github.com/dtao/safe_yaml")
5923 (synopsis "YAML parser")
5924 (description "The SafeYAML gem provides an alternative implementation of
5925 YAML.load suitable for accepting user input in Ruby applications.")
5926 (license license:expat)))
5927
5928 (define-public ruby-mercenary
5929 (package
5930 (name "ruby-mercenary")
5931 (version "0.3.6")
5932 (source (origin
5933 (method url-fetch)
5934 (uri (rubygems-uri "mercenary" version))
5935 (sha256
5936 (base32
5937 "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"))))
5938 (build-system ruby-build-system)
5939 (arguments `(#:test-target "spec"))
5940 (native-inputs
5941 `(("bundler" ,bundler)))
5942 (home-page "https://github.com/jekyll/mercenary")
5943 (synopsis "Command-line apps library in Ruby")
5944 (description "Mercenary is a lightweight and flexible library for writing
5945 command-line apps in Ruby.")
5946 (license license:expat)))
5947
5948 (define-public ruby-liquid
5949 (package
5950 (name "ruby-liquid")
5951 (version "4.0.0")
5952 (source (origin
5953 (method url-fetch)
5954 (uri (rubygems-uri "liquid" version))
5955 (sha256
5956 (base32
5957 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
5958 (build-system ruby-build-system)
5959 (arguments `(#:tests? #f)); No rakefile
5960 (home-page "https://shopify.github.io/liquid/")
5961 (synopsis "Template language")
5962 (description "Liquid is a template language written in Ruby. It is used
5963 to load dynamic content on storefronts.")
5964 (license license:expat)))
5965
5966 (define-public ruby-forwardable-extended
5967 (package
5968 (name "ruby-forwardable-extended")
5969 (version "2.6.0")
5970 (source (origin
5971 (method url-fetch)
5972 (uri (rubygems-uri "forwardable-extended" version))
5973 (sha256
5974 (base32
5975 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
5976 (build-system ruby-build-system)
5977 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
5978 (home-page "https://github.com/envygeeks/forwardable-extended")
5979 (synopsis "Delegation to hashes and instance variables in Forwardable")
5980 (description "Forwardable Extended provides more @code{Forwardable}
5981 methods for your source as @code{Forwardable::Extended}.")
5982 (license license:expat)))
5983
5984 (define-public ruby-pathutil
5985 (package
5986 (name "ruby-pathutil")
5987 (version "0.16.1")
5988 (source (origin
5989 (method url-fetch)
5990 (uri (rubygems-uri "pathutil" version))
5991 (sha256
5992 (base32
5993 "0wc18ms1rzi44lpjychyw2a96jcmgxqdvy2949r4vvb5f4p0lgvz"))))
5994 (build-system ruby-build-system)
5995 (propagated-inputs
5996 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
5997 (native-inputs
5998 `(("bundler" ,bundler)
5999 ("ruby-rspec" ,ruby-rspec)))
6000 ;; Fails with: cannot load such file --
6001 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
6002 (arguments `(#:tests? #f))
6003 (home-page "https://github.com/envygeeks/pathutil")
6004 (synopsis "Extended implementation of Pathname")
6005 (description "Pathutil tries to be a faster pure Ruby implementation of
6006 Pathname.")
6007 (license license:expat)))
6008
6009 (define-public jekyll
6010 (package
6011 (name "jekyll")
6012 (version "3.8.3")
6013 (source (origin
6014 (method url-fetch)
6015 (uri (rubygems-uri "jekyll" version))
6016 (sha256
6017 (base32
6018 "1iw90wihk9dscgmppf5v6lysg3kjmnx50mjyl4gghkdb4spw97xk"))))
6019 (build-system ruby-build-system)
6020 (arguments
6021 ;; No rakefile, but a test subdirectory
6022 `(#:tests? #f
6023 #:phases
6024 (modify-phases %standard-phases
6025 (add-before 'build 'fix-i18n
6026 (lambda _
6027 (substitute* ".gemspec"
6028 (("~> 0.7") ">= 0.7"))
6029 #t)))))
6030 (propagated-inputs
6031 `(("ruby-addressable" ,ruby-addressable)
6032 ("ruby-colorator" ,ruby-colorator)
6033 ("ruby-em-websocket" ,ruby-em-websocket)
6034 ("ruby-i18n" ,ruby-i18n)
6035 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
6036 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
6037 ("ruby-kramdown" ,ruby-kramdown)
6038 ("ruby-liquid" ,ruby-liquid)
6039 ("ruby-mercenary" ,ruby-mercenary)
6040 ("ruby-pathutil" ,ruby-pathutil)
6041 ("ruby-rouge" ,ruby-rouge-2)
6042 ("ruby-safe-yaml" ,ruby-safe-yaml)))
6043 (home-page "https://jekyllrb.com/")
6044 (synopsis "Static site generator")
6045 (description "Jekyll is a simple, blog aware, static site generator.")
6046 (license license:expat)))
6047
6048 (define-public ruby-jekyll-paginate-v2
6049 (package
6050 (name "ruby-jekyll-paginate-v2")
6051 (version "2.0.0")
6052 (source (origin
6053 (method url-fetch)
6054 (uri (rubygems-uri "jekyll-paginate-v2" version))
6055 (sha256
6056 (base32
6057 "154bfpyml6abxww9868hhyfvxasl8qhsc5zy2q30c7dxaj0igdib"))))
6058 (build-system ruby-build-system)
6059 (propagated-inputs
6060 `(("jekyll" ,jekyll)))
6061 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
6062 (synopsis "Pagination Generator for Jekyll 3")
6063 (description "The Pagination Generator forms the core of the pagination
6064 logic in Jekyll. It calculates and generates the pagination pages.")
6065 (license license:expat)))