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