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