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