gnu: ruby: Update some RSpec packages.
[jackhill/guix/guix.git] / gnu / packages / ruby.scm
CommitLineData
6ef8c59a 1;;; GNU Guix --- Functional package management for GNU
37ab3aba 2;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
402b03e6 3;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
f586c877 4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
37ab3aba 5;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
6742c6f6 6;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
cba53c60 7;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
47956fa0 8;;; Copyright © 2017 ng0 <ng0@n0.is>
0899352f 9;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
2e77bbed 10;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
81a22171 11;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
6a9d2266 12;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
433e3154 13;;; Copyright © 2017, 2018, 2019 Christopher Baines <mail@cbaines.net>
4db80f8b 14;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
8ef06557 15;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
3355e49c 16;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
6ef8c59a
PP
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)
1db791d5 36 #:use-module (gnu packages base)
933dad91 37 #:use-module (gnu packages bison)
15b16c2c 38 #:use-module (gnu packages check)
6ef8c59a 39 #:use-module (gnu packages compression)
2a9ce5cb 40 #:use-module (gnu packages crypto)
4a9e0585 41 #:use-module (gnu packages databases)
255d1bbe 42 #:use-module (gnu packages dbm)
c41fba01 43 #:use-module (gnu packages rails)
6ef8c59a 44 #:use-module (gnu packages readline)
6ef8c59a 45 #:use-module (gnu packages autotools)
ad79eb55 46 #:use-module (gnu packages java)
6ef8c59a 47 #:use-module (gnu packages libffi)
f3d7bb93 48 #:use-module (gnu packages libidn)
c41fba01
CB
49 #:use-module (gnu packages linux)
50 #:use-module (gnu packages lsof)
34138e42 51 #:use-module (gnu packages maths)
0c8eedc1 52 #:use-module (gnu packages ncurses)
fe5dd5f4 53 #:use-module (gnu packages networking)
3ca43524 54 #:use-module (gnu packages node)
ac09beba 55 #:use-module (gnu packages python)
44d10b1f 56 #:use-module (gnu packages python-xyz)
763624f5 57 #:use-module (gnu packages ragel)
30f08487 58 #:use-module (gnu packages rsync)
cd0322a3 59 #:use-module (gnu packages sqlite)
cc2b77df 60 #:use-module (gnu packages tls)
66e20863 61 #:use-module (gnu packages version-control)
6ef8c59a
PP
62 #:use-module (guix packages)
63 #:use-module (guix download)
bda0c139 64 #:use-module (guix git-download)
6ef8c59a 65 #:use-module (guix utils)
acf735f2 66 #:use-module (guix build-system gnu)
e920bfca 67 #:use-module (gnu packages xml)
c2c4e5b2 68 #:use-module (gnu packages web)
15b16c2c
CB
69 #:use-module (guix build-system ruby)
70 #:use-module ((srfi srfi-1) #:select (alist-delete)))
6ef8c59a
PP
71
72(define-public ruby
73 (package
74 (name "ruby")
35db2ba7 75 (version "2.5.3")
6ef8c59a
PP
76 (source
77 (origin
78 (method url-fetch)
6becfdff
MW
79 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
80 (version-major+minor version)
12d39eb5 81 "/ruby-" version ".tar.xz"))
6ef8c59a
PP
82 (sha256
83 (base32
35db2ba7 84 "0vrhrw7kcz9mg0jkqnihkcxqy5k05v8k1j0y2735z8wfk8sx1j8w"))
65e84e31
BW
85 (modules '((guix build utils)))
86 (snippet `(begin
87 ;; Remove bundled libffi
c033c195 88 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
65e84e31 89 #t))))
6ef8c59a
PP
90 (build-system gnu-build-system)
91 (arguments
92 `(#:test-target "test"
6ef8c59a 93 #:phases
9656b8be 94 (modify-phases %standard-phases
65e84e31 95 (add-before 'configure 'replace-bin-sh-and-remove-libffi
9656b8be
BW
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)))))
6ef8c59a
PP
110 (inputs
111 `(("readline" ,readline)
6ef8c59a
PP
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")
3cb3fa67 119 (files (list (string-append "lib/ruby/vendor_ruby"))))))
6becfdff 120 (synopsis "Programming language interpreter")
6ef8c59a
PP
121 (description "Ruby is a dynamic object-oriented programming language with
122a focus on simplicity and productivity.")
bf3be6a5 123 (home-page "https://www.ruby-lang.org")
6ef8c59a
PP
124 (license license:ruby)))
125
93cae02f
CB
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
98bb983c 146(define-public ruby-2.3
800a7dd5
BW
147 (package
148 (inherit ruby)
2e77bbed 149 (version "2.3.8")
800a7dd5
BW
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
2e77bbed 158 "1zhxbjff08pvbnxvn58krns6q0p6g4977q6ykfn823gxhifn63wi"))
800a7dd5
BW
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
933dad91
RW
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
221language. Its syntax is Ruby 1.9 compatible. mruby can be linked and
222embedded within your application.")
223 (license license:expat)))
224
34372d39
RW
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
261executables. Commander bridges the gap between other terminal related
262libraries (OptionParser, HighLine), while providing many new features, and an
263elegant API.")
264 (license license:expat)))
265
823ed097
CB
266(define-public ruby-highline
267 (package
268 (name "ruby-highline")
6742c6f6 269 (version "2.0.1")
823ed097
CB
270 (source
271 (origin
272 (method url-fetch)
273 (uri (rubygems-uri "highline" version))
274 (sha256
275 (base32
6742c6f6 276 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
823ed097
CB
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,
287type conversion, and more for command-line interfaces. HighLine also includes
288a 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
bda0c139
DT
292(define-public ruby-hoe
293 (package
294 (name "ruby-hoe")
05f2f8bc 295 (version "3.16.2")
bda0c139 296 (source (origin
e83c6d00
DT
297 (method url-fetch)
298 (uri (rubygems-uri "hoe" version))
bda0c139
DT
299 (sha256
300 (base32
05f2f8bc 301 "12q6dn2irsfamdbjpqvs0dwl4i1vl7wflxrcg972h9jw0ds38f3a"))))
bda0c139 302 (build-system ruby-build-system)
bda0c139
DT
303 (synopsis "Ruby project management helper")
304 (description
305 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
306maintain, and release projects and includes a dynamic plug-in system allowing
307for easy extensibility. Hoe ships with plug-ins for all the usual project
308tasks including rdoc generation, testing, packaging, deployment, and
309announcement.")
2f3800e5 310 (home-page "https://www.zenspider.com/projects/hoe.html")
bda0c139
DT
311 (license license:expat)))
312
022170dc
PP
313(define-public ruby-rake-compiler
314 (package
315 (name "ruby-rake-compiler")
0cd7b816 316 (version "1.0.4")
022170dc
PP
317 (source (origin
318 (method url-fetch)
e83c6d00 319 (uri (rubygems-uri "rake-compiler" version))
022170dc
PP
320 (sha256
321 (base32
0cd7b816 322 "1xpdi4w8zaklk1i9ps8g3k0icw3v5fcks092l84w28rgrpx82qip"))))
022170dc
PP
323 (build-system ruby-build-system)
324 (arguments
e83c6d00 325 '(#:tests? #f)) ; needs cucumber
022170dc 326 (synopsis "Building and packaging helper for Ruby native extensions")
e881752c 327 (description "Rake-compiler provides a framework for building and
022170dc
PP
328packaging native C and Java extensions in Ruby.")
329 (home-page "https://github.com/rake-compiler/rake-compiler")
330 (license license:expat)))
331
30f08487
RW
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
364hosts by wrapping the @file{rsync} binary.")
365 (license license:expat)))
366
acf735f2
DT
367(define-public ruby-i18n
368 (package
369 (name "ruby-i18n")
cbb50182 370 (version "1.1.0")
acf735f2
DT
371 (source (origin
372 (method url-fetch)
e83c6d00 373 (uri (rubygems-uri "i18n" version))
acf735f2
DT
374 (sha256
375 (base32
cbb50182 376 "0ppvmla21hssvrfm8g1n2fnb4lxn4yhy9qmmba0imanflgldrjmr"))))
acf735f2
DT
377 (build-system ruby-build-system)
378 (arguments
0bfdfd37 379 '(#:tests? #f)) ; no tests
cbb50182 380 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
acf735f2
DT
381 (synopsis "Internationalization library for Ruby")
382 (description "Ruby i18n is an internationalization and localization
383solution for Ruby programs. It features translation and localization,
384interpolation of values to translations, pluralization, customizable
385transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
386translation data, custom key/scope separator, custom exception handlers, and
387an extensible architecture with a swappable backend.")
7bf837fd 388 (home-page "https://github.com/svenfuchs/i18n")
acf735f2 389 (license license:expat)))
eb0c2dd6 390
62b138ca
CB
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.
443notebook).")
444 (home-page "https://github.com/SciRuby/iruby")
445 (license license:expat)))
446
eb0c2dd6
DT
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 ruby-rspec-support
451 (package
452 (name "ruby-rspec-support")
bee67d18 453 (version "3.8.0")
eb0c2dd6
DT
454 (source (origin
455 (method url-fetch)
e83c6d00 456 (uri (rubygems-uri "rspec-support" version))
eb0c2dd6
DT
457 (sha256
458 (base32
bee67d18 459 "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609"))))
eb0c2dd6
DT
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")
bee67d18 471 (version "3.8.0")
eb0c2dd6
DT
472 (source (origin
473 (method url-fetch)
e83c6d00 474 (uri (rubygems-uri "rspec-core" version))
eb0c2dd6
DT
475 (sha256
476 (base32
bee67d18 477 "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p"))))
eb0c2dd6
DT
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
485groups.")
486 (home-page "https://github.com/rspec/rspec-core")
487 (license license:expat)))
e6962009 488
64c318f2
BW
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
20c05ea9 500(define-public ruby-diff-lcs
e6962009
DT
501 (package
502 (name "ruby-diff-lcs")
e2fcef39 503 (version "1.3")
e6962009
DT
504 (source (origin
505 (method url-fetch)
e83c6d00 506 (uri (rubygems-uri "diff-lcs" version))
e6962009
DT
507 (sha256
508 (base32
e2fcef39 509 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
e6962009
DT
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
515sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
516It includes utilities to create a simple HTML diff output format and a
517standard 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")
bee67d18 524 (version "3.8.2")
e6962009
DT
525 (source (origin
526 (method url-fetch)
e83c6d00 527 (uri (rubygems-uri "rspec-expectations" version))
e6962009
DT
528 (sha256
529 (base32
bee67d18 530 "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm"))))
e6962009
DT
531 (build-system ruby-build-system)
532 (arguments
533 '(#:tests? #f)) ; avoid dependency cycles
534 (propagated-inputs
535 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 536 ("ruby-diff-lcs" ,ruby-diff-lcs)))
e881752c 537 (synopsis "RSpec expectations library")
e6962009
DT
538 (description "Rspec-expectations provides a simple API to express expected
539outcomes of a code example.")
540 (home-page "https://github.com/rspec/rspec-expectations")
541 (license license:expat)))
4f2a0cac 542
fb157f25
BW
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
999ffb26
DM
555(define-public ruby-rspec-its
556 (package
557 (name "ruby-rspec-its")
558 (version "1.2.0")
559 (source
560 (origin
3306f02a
CB
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))
999ffb26
DM
566 (sha256
567 (base32
3306f02a
CB
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")))))))
999ffb26
DM
579 (build-system ruby-build-system)
580 (arguments
3306f02a
CB
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)))))
999ffb26
DM
598 (propagated-inputs
599 `(("ruby-rspec-core" ,ruby-rspec-core)
600 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
3306f02a
CB
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
608value of an attribute. For example, one can use @code{its(:size)\\{should
609eq(1)\\}}.")
999ffb26
DM
610 (home-page "https://github.com/rspec/rspec-its")
611 (license license:expat)))
612
4f2a0cac
DT
613(define-public ruby-rspec-mocks
614 (package
615 (name "ruby-rspec-mocks")
bee67d18 616 (version "3.8.0")
4f2a0cac
DT
617 (source (origin
618 (method url-fetch)
e83c6d00 619 (uri (rubygems-uri "rspec-mocks" version))
4f2a0cac
DT
620 (sha256
621 (base32
bee67d18 622 "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp"))))
4f2a0cac
DT
623 (build-system ruby-build-system)
624 (arguments
625 '(#:tests? #f)) ; avoid dependency cycles
626 (propagated-inputs
627 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 628 ("ruby-diff-lcs" ,ruby-diff-lcs)))
4f2a0cac
DT
629 (synopsis "RSpec stubbing and mocking library")
630 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
631support for stubbing and mocking.")
632 (home-page "https://github.com/rspec/rspec-mocks")
633 (license license:expat)))
d4fde1f2 634
6da9adeb
BW
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
198bc648
CB
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
666RSpec tests.")
667 (home-page "https://github.com/dblock/rspec-rerun")
668 (license license:expat)))
669
d4fde1f2
DT
670(define-public ruby-rspec
671 (package
672 (name "ruby-rspec")
bee67d18 673 (version "3.8.0")
d4fde1f2
DT
674 (source (origin
675 (method url-fetch)
e83c6d00 676 (uri (rubygems-uri "rspec" version))
d4fde1f2
DT
677 (sha256
678 (base32
bee67d18 679 "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3"))))
d4fde1f2
DT
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
689Ruby. This meta-package includes the RSpec test runner, along with the
690expectations and mocks frameworks.")
691 (home-page "http://rspec.info/")
692 (license license:expat)))
2cbc105b 693
5ac984b3
BW
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
2cbc105b
DT
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")
4fdd4d33 713 (version "1.17.3")
2cbc105b
DT
714 (source (origin
715 (method url-fetch)
e83c6d00 716 (uri (rubygems-uri "bundler" version))
2cbc105b
DT
717 (sha256
718 (base32
4fdd4d33 719 "0ln3gnk7cls81gwsbxvrmlidsfd78s6b2hzlm4d4a9wbaidzfjxw"))))
2cbc105b
DT
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
725specified in a \"Gemfile\", as well as their dependencies.")
2f3800e5 726 (home-page "https://bundler.io/")
2cbc105b 727 (license license:expat)))
98b87b82 728
cf36174f
RW
729(define-public ruby-builder
730 (package
731 (name "ruby-builder")
42b48db2 732 (version "3.2.3")
cf36174f
RW
733 (source (origin
734 (method url-fetch)
735 (uri (rubygems-uri "builder" version))
736 (sha256
737 (base32
42b48db2 738 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
cf36174f
RW
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
750easy to create structured data. Currently the following builder objects are
751supported: XML Markup and XML Events.")
752 (home-page "https://github.com/jimweirich/builder")
753 (license license:expat)))
754
566f71f8
CB
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
773next patch version for example.")
774 (home-page "https://github.com/gregorym/bump")
775 (license license:expat)))
776
ad79eb55
RW
777(define-public ruby-rjb
778 (package
779 (name "ruby-rjb")
aeb4e61e 780 (version "1.5.5")
ad79eb55
RW
781 (source (origin
782 (method url-fetch)
783 (uri (rubygems-uri "rjb" version))
784 (sha256
785 (base32
aeb4e61e 786 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
ad79eb55
RW
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
d2540f80 797 `(("jdk" ,icedtea "jdk")))
ad79eb55
RW
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
800Java Native Interface.")
2f3800e5 801 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
ad79eb55
RW
802 (license license:lgpl2.1+)))
803
f9ae2c06
PP
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
820in Ruby for use in Ruby programs. It features a hierarchical logging
821system of any number of levels, custom level names, logger
822inheritance, multiple output destinations per log event, execution
823tracing, custom formatting, thread safteyness, XML and YAML
824configuration, and more.")
825 (home-page "http://log4r.rubyforge.org/")
826 (license license:bsd-3)))
827
71a03c29
RW
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
847tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
848script.")
849 (home-page "http://rubyforge.org/projects/antwrap/")
850 (license license:expat)))
851
fe1ddad5
RW
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
868given Ruby source code Saikuro will generate a report listing the cyclomatic
869complexity of each method found. In addition, Saikuro counts the number of
870lines per method and can generate a listing of the number of tokens on each
871line 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
34138e42
BW
878(define-public ruby-asciidoctor
879 (package
880 (name "ruby-asciidoctor")
9933a8e7 881 (version "1.5.7.1")
34138e42
BW
882 (source
883 (origin
884 (method url-fetch)
885 (uri (rubygems-uri "asciidoctor" version))
886 (sha256
887 (base32
9933a8e7 888 "0v52bzc72cvg7zfgq27pa4mgyf29dx9m20fghrw1xmvwgd519n1w"))))
34138e42
BW
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
20860819 909AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other formats.")
bba082a1 910 (home-page "https://asciidoctor.org")
34138e42
BW
911 (license license:expat)))
912
d5840f77
CB
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.
956It does this through immutable data structures.")
957 (home-page "https://whitequark.github.io/ast/")
958 (license license:expat)))
959
b88502c9
BW
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
986continue trying routes if the response returns pass. This allows multiple
987routes to be nested or stacked on top of each other.")
988 (home-page "https://github.com/sporkmonger/rack-mount")
989 (license license:expat))))
990
2f9e0b68
RW
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
1012you to generate XML reports of your test runs. The resulting files can be
1013read by a continuous integration system that understands Ant's JUnit report
1014format.")
1015 (home-page "https://github.com/nicksieger/ci_reporter")
1016 (license license:expat)))
1017
2ed201c1
CB
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
1047correct inputs and output for a method, and will raise an error if a incorrect
1048value is found.")
1049 (home-page "https://github.com/egonSchiele/contracts.ruby")
1050 (license license:bsd-2)))
1051
6f8bf0eb
CB
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
1080code in Merb and Rails.")
1081 (home-page "https://github.com/jnunemaker/crack")
1082 (license license:expat)))
1083
d7f9f887
CB
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
bef3506e
CB
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
1132dependencies, including versions.")
1133 (home-page "https://github.com/yaauie/cliver")
1134 (license license:expat)))
1135
fe5dd5f4
CB
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
1171used 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
d0afff26
CB
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
1209CZMQ. The focus of of CZTop is on being easy to use and providing first class
1210support for security mechanisms.")
1211 (home-page "https://github.com/paddor/cztop")
1212 (license license:isc)))
1213
b004fb6a
RW
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
1235which it is run. It uses Saikuro under the covers to analyze Ruby code
1236complexity.")
7bf837fd 1237 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
b004fb6a
RW
1238 (license license:expat)))
1239
92b37500
CB
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
1263with a similar style to the original OAuth spec.")
1264 (home-page "https://github.com/oauth-xx/oauth2")
1265 (license license:expat)))
1266
29dc4823
CB
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
1287authentication.")
1288 (home-page "https://github.com/omniauth/omniauth")
1289 (license license:expat)))
1290
d6084cdb
CB
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
1328doesn't provide a way to gather user information, so should be used as a
1329building block for authentication strategies.")
1330 (home-page "https://github.com/omniauth/omniauth-oauth2")
1331 (license license:expat)))
1332
433e3154
CB
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
1363input and output.")
1364 (home-page "https://github.com/ahoward/open4")
1365 (license license:ruby)))
1366
cef87ed6
CB
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.
fe27238c
CB
1387 (setenv "LIB" "options")
1388 #t)))))
cef87ed6
CB
1389 (synopsis "Ruby library to parse options from *args cleanly")
1390 (description
1391 "The @code{options} library helps with parsing keyword options in Ruby
1392functions.")
1393 (home-page "https://github.com/ahoward/options")
1394 (license license:ruby)))
1395
d15dbe83
CB
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
1411Erubis")
1412 (home-page "https://github.com/jeremyevans/erubi")
1413 (license license:expat)))
1414
d64ebebd
BW
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
1432features such as multi-language support, auto escaping, auto trimming spaces
1433around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
1434support.")
1435 (home-page "http://www.kuwata-lab.com/erubis/")
1436 (license license:expat)))
1437
3ca43524
CB
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
1466runtime to evaluate your JavaScript program, then returns the result to you as
1467a Ruby object.")
1468 (home-page "https://github.com/rails/execjs")
1469 (license license:expat)))
1470
cc53e630
RW
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
1486implementation that preserves the order of items and features some array-like
1487extensions.")
1488 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
1489 (license license:public-domain)))
1490
28c5d42d
PP
1491(define-public ruby-libxml
1492 (package
1493 (name "ruby-libxml")
acbc5062 1494 (version "3.0.0")
28c5d42d
PP
1495 (source
1496 (origin
1497 (method url-fetch)
1498 (uri (rubygems-uri "libxml-ruby" version))
1499 (sha256
1500 (base32
acbc5062 1501 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
28c5d42d
PP
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
1515the GNOME Libxml2 XML toolkit.")
2f3800e5 1516 (home-page "https://xml4r.github.com/libxml-ruby")
28c5d42d
PP
1517 (license license:expat)))
1518
b3222518
CB
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
1539an interface to add options as well as managing the standard input, output and
1540error streams.")
1541 (home-page "https://github.com/tobyclemson/lino")
1542 (license license:expat)))
1543
8b9bde07
RW
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
1559Ruby.")
1560 (home-page "https://github.com/maik/xml-simple")
1561 (license license:ruby)))
1562
2cb3ab48
RW
1563(define-public ruby-thor
1564 (package
1565 (name "ruby-thor")
2e8cd862 1566 (version "0.19.4")
2cb3ab48
RW
1567 (source (origin
1568 (method url-fetch)
1569 (uri (rubygems-uri "thor" version))
1570 (sha256
1571 (base32
2e8cd862 1572 "01n5dv9kql60m6a00zc0r66jvaxx98qhdny3klyj0p3w34pad2ns"))))
2cb3ab48
RW
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
1580interfaces.")
1581 (home-page "http://whatisthor.com/")
1582 (license license:expat)))
1583
ec79018e
RW
1584(define-public ruby-lumberjack
1585 (package
1586 (name "ruby-lumberjack")
41700efa 1587 (version "1.0.13")
ec79018e
RW
1588 (source (origin
1589 (method url-fetch)
1590 (uri (rubygems-uri "lumberjack" version))
1591 (sha256
1592 (base32
41700efa 1593 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
ec79018e
RW
1594 (build-system ruby-build-system)
1595 (native-inputs
8be62d3f
BW
1596 `(("ruby-rspec" ,ruby-rspec)
1597 ("ruby-timecop" ,ruby-timecop)))
ec79018e
RW
1598 (synopsis "Logging utility library for Ruby")
1599 (description "Lumberjack is a simple logging utility that can be a drop in
1600replacement for Logger or ActiveSupport::BufferedLogger. It provides support
1601for automatically rolling log files even with multiple processes writing the
1602same log file.")
7bf837fd 1603 (home-page "https://github.com/bdurand/lumberjack")
ec79018e
RW
1604 (license license:expat)))
1605
2a9ce5cb
CB
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
1658Cryptography (NaCl) library, also known as libsodium. This provides a
1659high-level toolkit for building cryptographic systems and protocols.")
1660 (home-page "https://github.com/crypto-rb/rbnacl")
1661 (license license:expat)))
1662
70b4cf38
RW
1663(define-public ruby-nenv
1664 (package
1665 (name "ruby-nenv")
12313cd0 1666 (version "0.3.0")
70b4cf38
RW
1667 (source (origin
1668 (method url-fetch)
1669 (uri (rubygems-uri "nenv" version))
1670 (sha256
1671 (base32
12313cd0 1672 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
70b4cf38
RW
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
1681and inspect the environment.")
1682 (home-page "https://github.com/e2/nenv")
1683 (license license:expat)))
1684
8d9e9f28
RW
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 _
9923d5a4 1708 (invoke "ruby" "-Ilib" "test/test.rb"))))))
8d9e9f28
RW
1709 (synopsis "Library to perform operations with sequence permutations")
1710 (description "This package provides a Ruby library to perform different
1711operations with permutations of sequences, such as strings and arrays.")
2f3800e5 1712 (home-page "https://flori.github.io/permutation")
8d9e9f28
RW
1713 (license license:gpl2))) ; GPL 2 only
1714
c5d14d42
RW
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
1741the output produced by running shell commands.")
1742 (home-page "https://rubygems.org/gems/shellany")
1743 (license license:expat)))
1744
d152162f
RW
1745(define-public ruby-notiffany
1746 (package
1747 (name "ruby-notiffany")
a7ca218c 1748 (version "0.1.1")
d152162f
RW
1749 (source (origin
1750 (method url-fetch)
1751 (uri (rubygems-uri "notiffany" version))
1752 (sha256
1753 (base32
a7ca218c 1754 "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx"))))
d152162f
RW
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
1765libraries such as Libnotify.")
1766 (home-page "https://github.com/guard/notiffany")
1767 (license license:expat)))
1768
8528365b
RW
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
1785standard output stream.")
7bf837fd 1786 (home-page "https://github.com/geemus/formatador")
8528365b
RW
1787 (license license:expat)))
1788
5437c741
CB
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
1832string of letters and dots as feedback. It also stops on the first test
1833failure.")
1834 (home-page "https://github.com/thekompanee/fuubar")
1835 (license license:expat)))
1836
8ea991e3
CB
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
1857HTML or XML that is designed to express the structure of documents using
1858indentation rather than closing tags. It was originally envisioned as a
1859plugin for Ruby on Rails, but it can function as a stand-alone templating
1860engine.")
1861 (home-page "http://haml.info/")
1862 (license license:expat)))
1863
353b7eb8
CB
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
1906immutable queue or stack).")
1907 (home-page "https://github.com/hamstergem/hamster")
1908 (license license:expat)))
1909
21781436
CB
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
1938two hashes.")
1939 (home-page "https://github.com/liufengyun/hashdiff")
1940 (license license:expat)))
1941
7ac4610f
RW
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
0b060e34
CB
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)))))
7ac4610f
RW
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
f13636f2
RW
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
1992Ruby Gems.")
1993 (home-page "https://github.com/postmodern/rubygems-tasks")
1994 (license license:expat)))
1995
cb6bc5df
CB
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
58b59742
RW
2031(define-public ruby-simplecov-html
2032 (package
2033 (name "ruby-simplecov-html")
53fd476f 2034 (version "0.10.2")
58b59742
RW
2035 (source (origin
2036 (method url-fetch)
2037 (uri (rubygems-uri "simplecov-html" version))
2038 (sha256
2039 (base32
53fd476f 2040 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
58b59742 2041 (build-system ruby-build-system)
8b749cf3 2042 (arguments `(#:tests? #f)) ; there are no tests
58b59742
RW
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
2047the 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
a84fa2ad
RW
2051(define-public ruby-simplecov
2052 (package
2053 (name "ruby-simplecov")
1b107245 2054 (version "0.12.0")
a84fa2ad
RW
2055 (source (origin
2056 (method url-fetch)
2057 (uri (rubygems-uri "simplecov" version))
2058 (sha256
2059 (base32
1b107245 2060 "0ffhyrfnq2zm2mc1742a4hqy475g3qa1zf6yfldwg1ldh5sn3qbx"))))
a84fa2ad
RW
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
2073powerful configuration library and automatic merging of coverage across test
2074suites.")
7bf837fd 2075 (home-page "https://github.com/colszowka/simplecov")
a84fa2ad
RW
2076 (license license:expat)))
2077
98b87b82
DT
2078(define-public ruby-useragent
2079 (package
2080 (name "ruby-useragent")
3b0e45c8 2081 (version "0.16.8")
98b87b82
DT
2082 (source (origin
2083 (method url-fetch)
e83c6d00 2084 (uri (rubygems-uri "useragent" version))
98b87b82
DT
2085 (sha256
2086 (base32
3b0e45c8 2087 "1139cjqyv1hk1qcw89k81ajjkqyakqgbcyvmfrsmjqi8yn9kgqhq"))))
98b87b82
DT
2088 (build-system ruby-build-system)
2089 (arguments
e83c6d00 2090 '(#:tests? #f)) ; no test suite
98b87b82
DT
2091 (synopsis "HTTP user agent parser for Ruby")
2092 (description "UserAgent is a Ruby library that parses and compares HTTP
2093User Agents.")
2094 (home-page "https://github.com/gshutler/useragent")
2095 (license license:expat)))
96086cc5 2096
f7e9b2f3
CB
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
2118backports of some features.")
2119 (home-page "https://github.com/marcandre/backports")
2120 (license license:expat)))
2121
96086cc5
DT
2122(define-public ruby-bacon
2123 (package
2124 (name "ruby-bacon")
e83c6d00 2125 (version "1.2.0")
96086cc5
DT
2126 (source (origin
2127 (method url-fetch)
e83c6d00 2128 (uri (rubygems-uri "bacon" version))
96086cc5
DT
2129 (sha256
2130 (base32
e83c6d00 2131 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
96086cc5 2132 (build-system ruby-build-system)
96086cc5
DT
2133 (synopsis "Small RSpec clone")
2134 (description "Bacon is a small RSpec clone providing all essential
2135features.")
2136 (home-page "https://github.com/chneukirchen/bacon")
2137 (license license:expat)))
de59d316 2138
a8d2bf3c
CB
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
2156blocks and more")
2157 (description
2158 "This extends the bacon testing framework with useful extensions to
2159disable 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
65f65889
CB
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
2183output.")
2184 (home-page "https://github.com/whitequark/bacon-colored_output")
2185 (license license:expat)))
2186
e259bdf0
DT
2187(define-public ruby-connection-pool
2188 (package
2189 (name "ruby-connection-pool")
58021db4 2190 (version "2.2.2")
e259bdf0
DT
2191 (source (origin
2192 (method url-fetch)
e83c6d00 2193 (uri (rubygems-uri "connection_pool" version))
e259bdf0
DT
2194 (sha256
2195 (base32
58021db4 2196 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
e259bdf0
DT
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
2202interface for Ruby programs.")
2203 (home-page "https://github.com/mperham/connection_pool")
2204 (license license:expat)))
4c0aeb44
DT
2205
2206(define-public ruby-net-http-persistent
2207 (package
2208 (name "ruby-net-http-persistent")
185ea446 2209 (version "3.0.0")
4c0aeb44
DT
2210 (source (origin
2211 (method url-fetch)
e83c6d00 2212 (uri (rubygems-uri "net-http-persistent" version))
4c0aeb44
DT
2213 (sha256
2214 (base32
185ea446 2215 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
4c0aeb44 2216 (build-system ruby-build-system)
4c0aeb44
DT
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
2222using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
2223 (home-page "https://github.com/drbrain/net-http-persistent")
2224 (license license:expat)))
afbbdf77 2225
f88bacaf
RW
2226(define-public ruby-power-assert
2227 (package
2228 (name "ruby-power-assert")
3918146b 2229 (version "0.2.7")
f88bacaf
RW
2230 (source (origin
2231 (method url-fetch)
2232 (uri (rubygems-uri "power_assert" version))
2233 (sha256
2234 (base32
3918146b 2235 "0ka6w71lcan4wgf111xi3pcn9ma9lhakv31jg8w007nwzi0xfjbi"))))
f88bacaf
RW
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
2241assertion messages for tests.")
2242 (home-page "https://github.com/k-tsj/power_assert")
2243 (license (list license:bsd-2 license:ruby))))
2244
e42e3bfa
CB
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,
2266including @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
347eb21e
RW
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
2292localization.")
2293 (home-page "https://github.com/ruby-gettext/locale")
2294 (license (list license:lgpl3+ license:ruby))))
2295
09e2b0af
CB
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
2315Ruby.")
2316 (home-page "https://github.com/judofyr/temple")
2317 (license license:expat)))
2318
e2333ea3
RW
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,
2333Soundex, Metaphone, Double Metaphone, Porter Stemming.")
7bf837fd 2334 (home-page "https://github.com/threedaymonk/text")
e2333ea3
RW
2335 (license license:expat)))
2336
c1f52261
RW
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
2361file (po-file) used is the same as that used by GNU gettext, allowing you to
2362use GNU gettext tools for maintenance.")
2f3800e5 2363 (home-page "https://ruby-gettext.github.com/")
c1f52261
RW
2364 (license (list license:lgpl3+ license:ruby))))
2365
cc5aeb8c
RW
2366(define-public ruby-packnga
2367 (package
2368 (name "ruby-packnga")
1d60c436 2369 (version "1.0.4")
cc5aeb8c
RW
2370 (source (origin
2371 (method url-fetch)
2372 (uri (rubygems-uri "packnga" version))
2373 (sha256
2374 (base32
1d60c436 2375 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
cc5aeb8c
RW
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
93dc8684
CB
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
2410temporary files and directories during tests.")
2411 (home-page "https://github.com/bhb/test_construct")
2412 (license license:expat)))
2413
3383f5bd
RW
2414(define-public ruby-test-unit
2415 (package
2416 (name "ruby-test-unit")
d74d96e4 2417 (version "3.2.5")
3383f5bd
RW
2418 (source (origin
2419 (method url-fetch)
2420 (uri (rubygems-uri "test-unit" version))
2421 (sha256
2422 (base32
d74d96e4 2423 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
3383f5bd
RW
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
2433on xUnit principles. These were originally designed by Kent Beck, creator of
2434extreme programming software development methodology, for Smalltalk's SUnit.
2435It allows writing tests, checking results and automated testing in Ruby.")
2f3800e5 2436 (home-page "https://test-unit.github.io/")
3383f5bd
RW
2437 (license (list license:psfl license:ruby))))
2438
76b732fb
CB
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
2471the functionality provided by @acronym{ERB, Embeded Ruby}, but without the
2472mixture of HTML and additional ERB syntax.")
2473 (home-page "http://markaby.github.io/")
2474 (license license:expat)))
2475
b9511aa9
CB
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
2505HTML, and PDF through LaTeX.")
2506 (home-page "https://github.com/bhollis/maruku")
2507 (license license:expat)))
2508
25d6d49b
RW
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
761e7042 2524 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2525 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
2526 (substitute* "Rakefile"
2527 (("t\\.libs << \"test\"" line)
2528 (string-append line "; t.libs << \""
3cb3fa67 2529 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
2530 "/gems/test-unit-"
2531 ,(package-version ruby-test-unit)
2532 "/lib\""))))
2533 #t)))))
25d6d49b
RW
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
2540objects.")
7bf837fd 2541 (home-page "https://github.com/floehopper/metaclass")
25d6d49b
RW
2542 (license license:expat)))
2543
1d1d20b0
CB
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
2582for basic features. MSpec contains additional features that assist in writing
2583specs for Ruby implementations in ruby/spec.")
2584 (home-page "http://rubyspec.org")
2585 (license license:expat)))
2586
b8aecc31
CB
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
2641libmysql.")
2642 (home-page "https://github.com/brianmario/mysql2")
2643 (license license:expat)))
2644
21f7b7bd
RW
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
9923d5a4 2660 (lambda _ (invoke "rspec" "spec/"))))))
21f7b7bd
RW
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
2667methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
2668as a base class when writing classes that depend upon
2669@code{method_missing} (e.g. dynamic proxies).")
7bf837fd 2670 (home-page "https://github.com/masover/blankslate")
21f7b7bd
RW
2671 (license license:expat)))
2672
afdb437c
CB
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
2690and more")
2691 (description
2692 "Bond can autocomplete argument(s) to methods, uniquely completing per
2693module, per method and per argument. Bond provides a configuration system and
2694a DSL for creating custom completions and completion rules. Bond can also
2695load completions that ship with gems. Bond is able to offer more than irb's
2696completion since it uses the full line of input when completing as opposed to
2697irb's last-word approach.")
2698 (home-page "http://tagaholic.me/bond/")
2699 (license license:expat)))
2700
f3d7bb93
CB
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
2736Stringprep, Punycode and IDNA specifications. These are used to encode and
2737decode internationalized domain + names according to the IDNA2003
2738specifications.
2739
2740Included are the most important parts of the Stringprep, Punycode and IDNA
2741APIs like performing Stringprep processings, encoding to and decoding from
2742Punycode strings and converting entire domain names to and from the ACE
2743encoded form.")
2744 (home-page "https://github.com/deepfryed/idn-ruby")
2745 (license license:asl2.0)))
2746
4016ba3f
RW
2747(define-public ruby-instantiator
2748 (package
2749 (name "ruby-instantiator")
688c9076 2750 (version "0.0.7")
4016ba3f
RW
2751 (source (origin
2752 (method url-fetch)
2753 (uri (rubygems-uri "instantiator" version))
2754 (sha256
2755 (base32
688c9076 2756 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
4016ba3f
RW
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
761e7042 2762 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2763 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
2764 (substitute* "Rakefile"
2765 (("t\\.libs << \"test\"" line)
2766 (string-append line "; t.libs << \""
3cb3fa67 2767 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
2768 "/gems/test-unit-"
2769 ,(package-version ruby-test-unit)
2770 "/lib\""))))
2771 #t)))))
4016ba3f
RW
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
2780knowing anything about the constructor.")
2781 (home-page "https://github.com/floehopper/instantiator")
2782 (license license:expat)))
2783
97aee8d3
RW
2784(define-public ruby-introspection
2785 (package
2786 (name "ruby-introspection")
98ff58a5 2787 (version "0.0.4")
97aee8d3
RW
2788 (source (origin
2789 (method url-fetch)
2790 (uri (rubygems-uri "introspection" version))
2791 (sha256
2792 (base32
98ff58a5 2793 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
97aee8d3
RW
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)
3cb3fa67 2800 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
2801 (substitute* "Rakefile"
2802 (("t\\.libs << \"test\"" line)
2803 (string-append line "; t.libs << \""
3cb3fa67 2804 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
2805 "/gems/test-unit-"
2806 ,(package-version ruby-test-unit)
2807 "/lib\""))))
97aee8d3
RW
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
2819definitions on a Ruby object.")
2820 (home-page "https://github.com/floehopper/introspection")
2821 (license license:expat)))
2822
d93062fd
RW
2823(define-public ruby-redcarpet
2824 (package
2825 (name "ruby-redcarpet")
5ca48923 2826 (version "3.4.0")
d93062fd
RW
2827 (source (origin
2828 (method url-fetch)
2829 (uri (rubygems-uri "redcarpet" version))
2830 (sha256
2831 (base32
5ca48923 2832 "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7"))))
d93062fd
RW
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
2851conversion to (X)HTML.")
7bf837fd 2852 (home-page "https://github.com/vmg/redcarpet")
d93062fd
RW
2853 (license license:expat)))
2854
4f2a52ae
RW
2855(define-public ruby-mocha
2856 (package
2857 (name "ruby-mocha")
2858 (version "1.1.0")
2859 (source (origin
2860 (method url-fetch)
2861 (uri (rubygems-uri "mocha" version))
2862 (sha256
2863 (base32
2864 "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
2865 (build-system ruby-build-system)
2866 (arguments
2867 `(#:phases
2868 (modify-phases %standard-phases
2869 (add-after 'unpack 'add-test-unit-to-search-path
2870 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2871 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
2872 (substitute* "Rakefile"
2873 (("t\\.libs << 'test'" line)
2874 (string-append line "; t.libs << \""
3cb3fa67 2875 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
2876 "/gems/test-unit-"
2877 ,(package-version ruby-test-unit)
2878 "/lib\""))))
4f2a52ae
RW
2879 #t))
2880 (add-before 'check 'use-latest-redcarpet
2881 (lambda _
2882 (substitute* "mocha.gemspec"
71596c3c
BW
2883 (("<redcarpet>.freeze, \\[\"~> 1\"\\]")
2884 "<redcarpet>.freeze, [\">= 3\"]"))
4f2a52ae
RW
2885 #t))
2886 (add-before 'check 'hardcode-version
2887 (lambda _
2888 ;; Mocha is undefined at build time
2889 (substitute* "Rakefile"
2890 (("#\\{Mocha::VERSION\\}") ,version))
2891 #t))
2892 (add-before 'check 'remove-failing-test
2893 ;; FIXME: This test fails for reasons unrelated to Guix packaging.
2894 (lambda _
2895 (delete-file "test/acceptance/stubbing_nil_test.rb")
2896 #t)))))
2897 (propagated-inputs
2898 `(("ruby-metaclass" ,ruby-metaclass)))
2899 (native-inputs
2900 `(("bundler" ,bundler)
2901 ("ruby-yard" ,ruby-yard)
2902 ("ruby-introspection" ,ruby-introspection)
2903 ("ruby-test-unit" ,ruby-test-unit)
2904 ("ruby-redcarpet" ,ruby-redcarpet)))
2905 (synopsis "Mocking and stubbing library for Ruby")
2906 (description
2907 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
2908allows mocking and stubbing of methods on real (non-mock) classes.")
2909 (home-page "http://gofreerange.com/mocha/docs")
2910 (license license:expat)))
2911
cf646acf
CB
2912(define-public ruby-mocha-on-bacon
2913 (package
2914 (name "ruby-mocha-on-bacon")
2915 (version "0.2.3")
2916 (source
2917 (origin
2918 (method url-fetch)
2919 (uri (rubygems-uri "mocha-on-bacon" version))
2920 (sha256
2921 (base32
2922 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
2923 (build-system ruby-build-system)
2924 (arguments
2925 ;; rubygems.org release missing tests
2926 '(#:tests? #f))
2927 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
2928 (synopsis "Mocha adapter for Bacon")
2929 (description
2930 "This package provides a Mocha adapter for Bacon, allowing you to use the
2931Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
2932 (home-page
2933 "https://github.com/alloy/mocha-on-bacon")
2934 (license license:expat)))
2935
2c84ba7e
RW
2936(define-public ruby-net-ssh
2937 (package
2938 (name "ruby-net-ssh")
5803f872 2939 (version "4.2.0")
2c84ba7e
RW
2940 (source (origin
2941 (method url-fetch)
2942 (uri (rubygems-uri "net-ssh" version))
2943 (sha256
2944 (base32
5803f872 2945 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
2c84ba7e
RW
2946 (build-system ruby-build-system)
2947 (native-inputs
a7938625
MB
2948 `(("bundler" ,bundler)
2949 ("ruby-mocha" ,ruby-mocha)
2c84ba7e
RW
2950 ("ruby-test-unit" ,ruby-test-unit)))
2951 (synopsis "Ruby implementation of the SSH2 client protocol")
2952 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
2953client protocol. It allows you to write programs that invoke and interact
2954with processes on remote servers, via SSH2.")
2955 (home-page "https://github.com/net-ssh/net-ssh")
2956 (license license:expat)))
2957
d38755cb
DM
2958(define-public ruby-net-scp
2959 (package
2960 (name "ruby-net-scp")
2961 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
2962 (version "1.2.2.rc2")
2963 (source
2964 (origin
2965 (method url-fetch)
2966 (uri (string-append "https://github.com/net-ssh/net-scp/archive/v"
2967 version ".tar.gz"))
2968 (sha256
2969 (base32
2970 "0xyf17mhgvyz54xjj9ria4wnq3x62bhmkfgzqv8jwiip2bplv1nk"))))
2971 (build-system ruby-build-system)
2972 (native-inputs
2973 `(("bundler" ,bundler)
2974 ("ruby-test-unit" ,ruby-test-unit)
2975 ("ruby-mocha" ,ruby-mocha)))
2976 (propagated-inputs
2977 `(("ruby-net-ssh" ,ruby-net-ssh)))
2978 (synopsis "Pure-Ruby SCP client library")
2979 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
2980client protocol.")
2981 (home-page "https://github.com/net-ssh/net-scp")
2982 (license license:expat)))
2983
2206e948
DT
2984(define-public ruby-minitest
2985 (package
2986 (name "ruby-minitest")
88a105c1 2987 (version "5.11.3")
2206e948 2988 (source (origin
e83c6d00
DT
2989 (method url-fetch)
2990 (uri (rubygems-uri "minitest" version))
2206e948
DT
2991 (sha256
2992 (base32
88a105c1 2993 "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"))))
2206e948 2994 (build-system ruby-build-system)
2206e948
DT
2995 (native-inputs
2996 `(("ruby-hoe" ,ruby-hoe)))
2997 (synopsis "Small test suite library for Ruby")
2998 (description "Minitest provides a complete suite of Ruby testing
2999facilities supporting TDD, BDD, mocking, and benchmarking.")
3000 (home-page "https://github.com/seattlerb/minitest")
3001 (license license:expat)))
3002
1db6e09f
RW
3003;; This is the last release of Minitest 4, which is used by some packages.
3004(define-public ruby-minitest-4
3005 (package (inherit ruby-minitest)
3006 (version "4.7.5")
3007 (source (origin
3008 (method url-fetch)
3009 (uri (rubygems-uri "minitest" version))
3010 (sha256
3011 (base32
3012 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
3013 (arguments
3014 `(#:phases
3015 (modify-phases %standard-phases
3016 (add-after 'unpack 'remove-unsupported-method
3017 (lambda _
3018 (substitute* "Rakefile"
3019 (("self\\.rubyforge_name = .*") ""))
9a7017eb
BW
3020 #t))
3021 (add-after 'build 'exclude-failing-tests
3022 (lambda _
3023 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
3024 ;; Fixnum.
3025 (delete-file "test/minitest/test_minitest_spec.rb")
3026 #t)))))))
1db6e09f 3027
450a3f7f
CB
3028(define-public ruby-minitest-around
3029 (package
3030 (name "ruby-minitest-around")
3031 (version "0.5.0")
3032 (source
3033 (origin
3034 (method url-fetch)
3035 (uri (rubygems-uri "minitest-around" version))
3036 (sha256
3037 (base32
3038 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
3039 (build-system ruby-build-system)
3040 (arguments
3041 '(#:phases
3042 (modify-phases %standard-phases
3043 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
3044 (lambda _
3045 (substitute* "minitest-around.gemspec"
3046 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n"))
3047 #t)))))
3048 (propagated-inputs
3049 `(("ruby-minitest" ,ruby-minitest)))
3050 (native-inputs
3051 `(("bundler" ,bundler)
3052 ("ruby-cucumber" ,ruby-cucumber)
3053 ("ruby-bump" ,ruby-bump)
3054 ("ruby-test-construct" ,ruby-test-construct)))
3055 (synopsis "Run code around tests in Minitest")
3056 (description
3057 "This library provides a way to run code around tests in Minitest,
3058written using either the unit test or spec style.")
3059 (home-page "https://github.com/splattael/minitest-around")
3060 (license license:expat)))
3061
35130835
DT
3062(define-public ruby-minitest-sprint
3063 (package
3064 (name "ruby-minitest-sprint")
3065 (version "1.1.0")
3066 (source (origin
e83c6d00
DT
3067 (method url-fetch)
3068 (uri (rubygems-uri "minitest-sprint" version))
35130835
DT
3069 (sha256
3070 (base32
e83c6d00 3071 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
35130835 3072 (build-system ruby-build-system)
35130835
DT
3073 (native-inputs
3074 `(("ruby-hoe" ,ruby-hoe)
3075 ("ruby-minitest" ,ruby-minitest)))
3076 (synopsis "Fast test suite runner for minitest")
3077 (description "Minitest-sprint is a test runner for minitest that makes it
3078easier to re-run individual failing tests.")
3079 (home-page "https://github.com/seattlerb/minitest-sprint")
3080 (license license:expat)))
3081
0808e361
DT
3082(define-public ruby-minitest-bacon
3083 (package
3084 (name "ruby-minitest-bacon")
6f9652b0 3085 (version "1.0.3")
0808e361 3086 (source (origin
e83c6d00
DT
3087 (method url-fetch)
3088 (uri (rubygems-uri "minitest-bacon" version))
0808e361
DT
3089 (sha256
3090 (base32
6f9652b0 3091 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
0808e361 3092 (build-system ruby-build-system)
0808e361
DT
3093 (native-inputs
3094 `(("ruby-hoe" ,ruby-hoe)))
3095 (inputs
3096 `(("ruby-minitest" ,ruby-minitest)))
3097 (synopsis "Bacon compatibility library for minitest")
3098 (description "Minitest-bacon extends minitest with bacon-like
3099functionality, making it easier to migrate test suites from bacon to minitest.")
3100 (home-page "https://github.com/seattlerb/minitest-bacon")
3101 (license license:expat)))
3102
39dc0eb5
BW
3103(define-public ruby-minitest-focus
3104 (package
3105 (name "ruby-minitest-focus")
3106 (version "1.1.2")
3107 (source
3108 (origin
3109 (method url-fetch)
3110 (uri (rubygems-uri "minitest-focus" version))
3111 (sha256
3112 (base32
3113 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
3114 (build-system ruby-build-system)
3115 (propagated-inputs
3116 `(("ruby-minitest" ,ruby-minitest)))
3117 (native-inputs
3118 `(("ruby-hoe" ,ruby-hoe)))
3119 (synopsis "Allows a few specific tests to be focused on")
3120 (description
3121 "@code{minitest-focus} gives the ability focus on a few tests with ease
3122without having to use command-line arguments. It introduces a @code{focus}
3123class method for use in testing classes, specifying that the next defined test
3124is to be run.")
3125 (home-page "https://github.com/seattlerb/minitest-focus")
3126 (license license:expat)))
3127
99fc5cd5
BW
3128(define-public ruby-minitest-pretty-diff
3129 ;; Use git reference because gem is out of date and does not contain testing
3130 ;; script. There are no releases on GitHub.
3131 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
3132 (package
3133 (name "ruby-minitest-pretty-diff")
3134 (version (string-append "0.1-1." (string-take commit 8)))
3135 (source (origin
3136 (method git-fetch)
3137 (uri (git-reference
3138 (url "https://github.com/adammck/minitest-pretty_diff.git")
3139 (commit commit)))
3140 (file-name (string-append name "-" version "-checkout"))
3141 (sha256
3142 (base32
3143 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
3144 (build-system ruby-build-system)
3145 (arguments
3146 `(#:phases
3147 (modify-phases %standard-phases
3148 (replace 'check
3149 (lambda _
9923d5a4 3150 (invoke "script/test"))))))
99fc5cd5
BW
3151 (native-inputs
3152 `(("bundler" ,bundler)
3153 ("ruby-turn" ,ruby-turn)))
3154 (synopsis "Pretty-print hashes and arrays in MiniTest")
3155 (description
3156 "@code{minitest-pretty_diff} monkey-patches
3157@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
3158diffing them. This makes it easier to spot differences between nested
3159structures when tests fail.")
3160 (home-page "https://github.com/adammck/minitest-pretty_diff")
3161 (license license:expat))))
3162
685d0d2f
BW
3163(define-public ruby-minitest-moar
3164 (package
3165 (name "ruby-minitest-moar")
3166 (version "0.0.4")
3167 (source
3168 (origin
3169 (method url-fetch)
3170 (uri (rubygems-uri "minitest-moar" version))
3171 (sha256
3172 (base32
3173 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
3174 (build-system ruby-build-system)
3175 (arguments
3176 `(#:phases
3177 (modify-phases %standard-phases
3178 (add-before 'check 'clean-dependencies
3179 (lambda _
3180 ;; Remove all gems defined in the Gemfile because these are not
3181 ;; truly needed.
3182 (substitute* "Gemfile"
3183 (("gem .*") ""))
3184 ;; Remove byebug as not needed to run tests.
3185 (substitute* "test/test_helper.rb"
3186 (("require 'byebug'") ""))
3187 #t)))))
3188 (native-inputs
3189 `(("bundler" ,bundler)
3190 ("ruby-minitest" ,ruby-minitest)))
3191 (synopsis "Extra features and changes to MiniTest")
3192 (description "@code{MiniTest Moar} add some additional features and
3193changes some default behaviours in MiniTest. For instance, Moar replaces the
3194MiniTest @code{Object#stub} with a global @code{stub} method.")
3195 (home-page "https://github.com/dockyard/minitest-moar")
3196 (license license:expat)))
3197
e07ef1d6
BW
3198(define-public ruby-minitest-bonus-assertions
3199 (package
3200 (name "ruby-minitest-bonus-assertions")
c9e261b7 3201 (version "3.0")
e07ef1d6
BW
3202 (source
3203 (origin
3204 (method url-fetch)
3205 (uri (rubygems-uri "minitest-bonus-assertions" version))
3206 (sha256
3207 (base32
c9e261b7 3208 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
e07ef1d6
BW
3209 (build-system ruby-build-system)
3210 (arguments
3211 `(#:phases
3212 (modify-phases %standard-phases
3213 (add-before 'check 'clean-dependencies
3214 (lambda _
3215 ;; Remove unneeded require statement that would entail another
3216 ;; dependency.
3217 (substitute* "test/minitest_config.rb"
3218 (("require 'minitest/bisect'") ""))
3219 #t)))))
3220 (native-inputs
3221 `(("ruby-hoe" ,ruby-hoe)
3222 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
3223 ("ruby-minitest-focus" ,ruby-minitest-focus)
3224 ("ruby-minitest-moar" ,ruby-minitest-moar)))
3225 (synopsis "Bonus assertions for @code{Minitest}")
3226 (description
3227 "Minitest bonus assertions provides extra MiniTest assertions. For
3228instance, it provides @code{assert_true}, @code{assert_false} and
3229@code{assert_set_equal}.")
3230 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
3231 (license license:expat)))
3232
e2c9a9cc
CB
3233(define-public ruby-minitest-reporters
3234 (package
3235 (name "ruby-minitest-reporters")
3236 (version "1.3.6")
3237 (source
3238 (origin
3239 (method url-fetch)
3240 (uri (rubygems-uri "minitest-reporters" version))
3241 (sha256
3242 (base32
3243 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
3244 (build-system ruby-build-system)
3245 (arguments
3246 '(#:phases
3247 (modify-phases %standard-phases
3248 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
3249 ;; including it as an input can lead to circular dependencies.
3250 (add-after 'unpack 'remove-rubocop-from-Rakefile
3251 (lambda _
3252 (substitute* "Rakefile"
3253 (("require 'rubocop/rake\\_task'") "")
3254 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
3255 #t))
3256 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
3257 (lambda _
3258 (substitute* "minitest-reporters.gemspec"
3259 ((".*%q<rubocop>.*") "\n"))
3260 #t)))))
3261 (propagated-inputs
3262 `(("ruby-ansi" ,ruby-ansi)
3263 ("ruby-builder" ,ruby-builder)
3264 ("ruby-minitest" ,ruby-minitest)
3265 ("ruby-progressbar" ,ruby-progressbar)))
3266 (native-inputs
3267 `(("bundler" ,bundler)
3268 ("ruby-maruku" ,ruby-maruku)))
3269 (synopsis "Enhanced reporting for Minitest tests")
3270 (description
3271 "@code{minitest/reporters} provides a custom Minitest runner to improve
3272how the test state is reported. A number of different reporters are
3273available, including a spec reporter, progress bar reporter, a HTML
3274reporter.")
3275 (home-page "https://github.com/kern/minitest-reporters")
3276 (license license:expat)))
3277
e582fa93
BW
3278(define-public ruby-minitest-rg
3279 (package
3280 (name "ruby-minitest-rg")
3281 (version "5.2.0")
3282 (source
3283 (origin
3284 (method url-fetch)
3285 (uri (rubygems-uri "minitest-rg" version))
3286 (sha256
3287 (base32
3288 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
3289 (build-system ruby-build-system)
3290 (arguments
3291 ;; Some tests fail even outside Guix, so disable tests.
3292 ;; https://github.com/blowmage/minitest-rg/issues/12
3293 ;; https://github.com/blowmage/minitest-rg/pull/13
3294 `(#:tests? #f))
3295 (propagated-inputs
3296 `(("ruby-minitest" ,ruby-minitest)))
3297 (synopsis "Coloured output for Minitest")
3298 (description
3299 "@code{minitest-rg} changes the colour of the output from Minitest.")
3300 (home-page "http://blowmage.com/minitest-rg")
3301 (license license:expat)))
3302
2a96dbe6
BW
3303(define-public ruby-minitest-hooks
3304 (package
3305 (name "ruby-minitest-hooks")
eaaf8b12 3306 (version "1.4.2")
2a96dbe6
BW
3307 (source
3308 (origin
3309 (method url-fetch)
3310 (uri (rubygems-uri "minitest-hooks" version))
3311 (sha256
3312 (base32
eaaf8b12 3313 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
2a96dbe6
BW
3314 (build-system ruby-build-system)
3315 (arguments
3316 '(#:test-target "spec"))
3317 (native-inputs
3318 `(("ruby-sequel" ,ruby-sequel)
3319 ("ruby-sqlite3" ,ruby-sqlite3)))
3320 (synopsis "Hooks for the minitest framework")
3321 (description
3322 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
3323@code{around_all} hooks for Minitest. This allows, for instance, running each
3324suite of specs inside a database transaction, running each spec inside its own
3325savepoint inside that transaction. This can significantly speed up testing
3326for specs that share expensive database setup code.")
7bf837fd 3327 (home-page "https://github.com/jeremyevans/minitest-hooks")
2a96dbe6
BW
3328 (license license:expat)))
3329
afbbdf77
DT
3330(define-public ruby-daemons
3331 (package
3332 (name "ruby-daemons")
f03153db 3333 (version "1.2.5")
afbbdf77
DT
3334 (source (origin
3335 (method url-fetch)
e83c6d00 3336 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
3337 (sha256
3338 (base32
f03153db 3339 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
afbbdf77
DT
3340 (build-system ruby-build-system)
3341 (arguments
3342 `(#:tests? #f)) ; no test suite
3343 (synopsis "Daemonize Ruby programs")
3344 (description "Daemons provides a way to wrap existing Ruby scripts to be
3345run as a daemon and to be controlled by simple start/stop/restart commands.")
3346 (home-page "https://github.com/thuehlinger/daemons")
3347 (license license:expat)))
b03eb6ac
CB
3348
3349(define-public ruby-data_uri
3350 (package
3351 (name "ruby-data_uri")
3352 (version "0.1.0")
3353 (source
3354 (origin
3355 (method url-fetch)
3356 (uri (rubygems-uri "data_uri" version))
3357 (sha256
3358 (base32
3359 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
3360 (build-system ruby-build-system)
3361 (synopsis "URI class for parsing data URIs")
3362 (description
3363 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
3364embedded inside a URI. The URI::Data class provides support for parsing these
3365URIs using the normal URI.parse method.")
3366 (home-page "https://github.com/dball/data_uri")
3367 (license license:expat)))
66e20863
DT
3368
3369(define-public ruby-git
3370 (package
3371 (name "ruby-git")
ceaff59e 3372 (version "1.3.0")
66e20863
DT
3373 (source (origin
3374 (method url-fetch)
e83c6d00 3375 (uri (rubygems-uri "git" version))
66e20863
DT
3376 (sha256
3377 (base32
ceaff59e 3378 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
66e20863
DT
3379 (build-system ruby-build-system)
3380 (arguments
e83c6d00
DT
3381 `(#:tests? #f ; no tests
3382 #:phases (modify-phases %standard-phases
3383 (add-after 'install 'patch-git-binary
3384 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
3385 ;; Make the default git binary an absolute path to the
3386 ;; store.
e83c6d00
DT
3387 (let ((git (string-append (assoc-ref inputs "git")
3388 "/bin/git"))
3cb3fa67
CB
3389 (config (string-append
3390 (assoc-ref outputs "out")
3391 "/lib/ruby/vendor_ruby/gems/git-"
3392 ,version "/lib/git/config.rb")))
e83c6d00 3393 (substitute* (list config)
66e20863
DT
3394 (("'git'")
3395 (string-append "'" git "'")))
e83c6d00 3396 #t))))))
66e20863
DT
3397 (inputs
3398 `(("git" ,git)))
3399 (synopsis "Ruby wrappers for Git")
3400 (description "Ruby/Git is a Ruby library that can be used to create, read
3401and manipulate Git repositories by wrapping system calls to the git binary.")
3402 (home-page "https://github.com/schacon/ruby-git")
3403 (license license:expat)))
71d3e2c2
DT
3404
3405(define-public ruby-slop
3406 (package
3407 (name "ruby-slop")
d14e5eaa 3408 (version "4.5.0")
71d3e2c2
DT
3409 (source (origin
3410 (method url-fetch)
e83c6d00 3411 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
3412 (sha256
3413 (base32
d14e5eaa 3414 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
71d3e2c2
DT
3415 (build-system ruby-build-system)
3416 (native-inputs
3417 `(("ruby-minitest" ,ruby-minitest)))
3418 (synopsis "Ruby command line option parser")
3419 (description "Slop provides a Ruby domain specific language for gathering
3420options and parsing command line flags.")
3421 (home-page "https://github.com/leejarvis/slop")
3422 (license license:expat)))
e778a549 3423
5337f8b9
DT
3424(define-public ruby-slop-3
3425 (package (inherit ruby-slop)
3426 (version "3.6.0")
3427 (source (origin
3428 (method url-fetch)
3429 (uri (rubygems-uri "slop" version))
3430 (sha256
3431 (base32
3432 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
3433
ca914b5b
CB
3434(define-public ruby-multi-xml
3435 (package
3436 (name "ruby-multi-xml")
3437 (version "0.6.0")
3438 (source
3439 (origin
3440 (method url-fetch)
3441 (uri (rubygems-uri "multi_xml" version))
3442 (sha256
3443 (base32
3444 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
3445 (build-system ruby-build-system)
3446 (arguments
3447 '(#:tests? #f)) ; No included tests
3448 (synopsis "Swappable XML backends for Ruby")
3449 (description
3450 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
3451Nokogiri, Ox, or REXML.")
3452 (home-page "https://github.com/sferik/multi_xml")
3453 (license license:expat)))
3454
e778a549
DT
3455(define-public ruby-multipart-post
3456 (package
3457 (name "ruby-multipart-post")
3458 (version "2.0.0")
3459 (source (origin
3460 (method url-fetch)
e83c6d00 3461 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
3462 (sha256
3463 (base32
e83c6d00 3464 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
3465 (build-system ruby-build-system)
3466 (native-inputs
3467 `(("bundler" ,bundler)))
3468 (synopsis "Multipart POST library for Ruby")
3469 (description "Multipart-Post Adds multipart POST capability to Ruby's
3470net/http library.")
3471 (home-page "https://github.com/nicksieger/multipart-post")
3472 (license license:expat)))
f8da3af0 3473
9a97e7ce
CB
3474(define-public ruby-multi-json
3475 (package
3476 (name "ruby-multi-json")
1b6f5475 3477 (version "1.13.1")
9a97e7ce
CB
3478 (source
3479 (origin
3480 (method url-fetch)
1b6f5475
BW
3481 ;; Tests are not distributed at rubygems.org so download from GitHub
3482 ;; instead.
3483 (uri (string-append "https://github.com/intridea/multi_json/archive/v"
3484 version ".tar.gz"))
3485 (file-name (string-append name "-" version ".tar.gz"))
9a97e7ce
CB
3486 (sha256
3487 (base32
1b6f5475 3488 "1s64xqvrnrxmb59v6b2kchnisawg5ai9ky1w60dy6z6ws9la1xv4"))))
9a97e7ce
CB
3489 (build-system ruby-build-system)
3490 (arguments
1b6f5475
BW
3491 `(#:phases
3492 (modify-phases %standard-phases
3493 (add-after 'unpack 'remove-signing-key-reference
3494 (lambda _
3495 (substitute* "multi_json.gemspec"
3496 ((".*spec.signing_key.*") ""))
3497 #t)))))
3498 (native-inputs
3499 `(("bundler" ,bundler)
3500 ("ruby-rspec" ,ruby-rspec)
3501 ("ruby-yard" ,ruby-yard)
3502 ("ruby-json-pure" ,ruby-json-pure)
3503 ("ruby-oj" ,ruby-oj)
3504 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
9a97e7ce
CB
3505 (synopsis "Common interface to multiple JSON libraries for Ruby")
3506 (description
3507 "This package provides a common interface to multiple JSON libraries,
3508including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
3509NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
1b6f5475 3510 (home-page "https://github.com/intridea/multi_json")
9a97e7ce
CB
3511 (license license:expat)))
3512
5edef88b
BW
3513(define-public ruby-multi-test
3514 (package
3515 (name "ruby-multi-test")
3516 (version "0.1.2")
3517 (source
3518 (origin
3519 (method url-fetch)
3520 (uri (rubygems-uri "multi_test" version))
3521 (sha256
3522 (base32
3523 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
3524 (build-system ruby-build-system)
3525 (arguments
3526 '(;; Tests require different sets of specific gem versions to be available,
3527 ;; and there is no gemfile that specifies the newest versions of
3528 ;; dependencies to be tested.
3529 #:tests? #f))
3530 (synopsis
3531 "Interface to testing libraries loaded into a running Ruby process")
3532 (description
3533 "@code{multi_test} provides a uniform interface onto whatever testing
3534libraries that have been loaded into a running Ruby process to help control
3535rogue test/unit/autorun requires.")
3536 (home-page "https://github.com/cucumber/multi_test")
9a97e7ce
CB
3537 (license license:expat)))
3538
f8da3af0
DT
3539(define-public ruby-arel
3540 (package
3541 (name "ruby-arel")
aecd533d 3542 (version "9.0.0")
f8da3af0
DT
3543 (source (origin
3544 (method url-fetch)
3545 (uri (rubygems-uri "arel" version))
3546 (sha256
3547 (base32
aecd533d 3548 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
f8da3af0
DT
3549 (build-system ruby-build-system)
3550 (arguments '(#:tests? #f)) ; no tests
3551 (home-page "https://github.com/rails/arel")
3552 (synopsis "SQL AST manager for Ruby")
6f23e2fb
TGR
3553 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
3554Ruby. It simplifies the generation of complex SQL queries and adapts to
3555various relational database implementations.")
f8da3af0 3556 (license license:expat)))
616eaead 3557
554bf4f6
CB
3558(define-public ruby-marcel
3559 (package
3560 (name "ruby-marcel")
3561 (version "0.3.3")
3562 (source
3563 (origin
3564 (method url-fetch)
3565 (uri (rubygems-uri "marcel" version))
3566 (sha256
3567 (base32
3568 "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
3569 (build-system ruby-build-system)
3570 (arguments
3571 '(;; No included tests
3572 #:tests? #f))
3573 (propagated-inputs
3574 `(("ruby-mimemagic" ,ruby-mimemagic)))
3575 (synopsis "MIME type detection using magic numbers, filenames and extensions")
3576 (description
3577 "@code{marcel} provides @acronym{MIME, Multipurpose Internet Mail
3578Extensions} type detection using magic numbers, filenames, and extensions")
3579 (home-page "https://github.com/basecamp/marcel")
3580 (license license:expat)))
3581
616eaead 3582(define-public ruby-minitar
bfaf8efd
BW
3583 ;; We package from the GitHub source to fix the security issue reported at
3584 ;; https://github.com/halostatue/minitar/issues/16.
3585 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
3586 (package
3587 (name "ruby-minitar")
3588 (version (string-append "0.5.4-1." (string-take commit 8)))
3589 (source
3590 (origin
3591 (method git-fetch)
3592 (uri (git-reference
3593 (url "https://github.com/halostatue/minitar.git")
3594 (commit commit)))
3595 (file-name (string-append name "-" version "-checkout"))
3596 (sha256
3597 (base32
3598 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
3599 (build-system ruby-build-system)
3600 (arguments
3601 '(#:tests? #f)) ; missing a gemspec
3602 (synopsis "Ruby library and utility for handling tar archives")
3603 (description
3604 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
616eaead 3605that provides the ability to deal with POSIX tar archive files.")
bfaf8efd
BW
3606 (home-page "http://www.github.com/atoulme/minitar")
3607 (license (list license:gpl2+ license:ruby)))))
bea1c0e2
DT
3608
3609(define-public ruby-mini-portile
3610 (package
3611 (name "ruby-mini-portile")
3612 (version "0.6.2")
3613 (source
3614 (origin
3615 (method url-fetch)
3616 (uri (rubygems-uri "mini_portile" version))
3617 (sha256
3618 (base32
3619 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
3620 (build-system ruby-build-system)
3621 (arguments
3622 '(#:tests? #f)) ; tests require network access
3623 (synopsis "Ports system for Ruby developers")
3624 (description "Mini-portile is a port/recipe system for Ruby developers.
3625It provides a standard way to compile against specific versions of libraries
3626to reproduce user environments.")
7bf837fd 3627 (home-page "https://github.com/flavorjones/mini_portile")
bea1c0e2 3628 (license license:expat)))
e920bfca 3629
d000fc92
BW
3630(define-public ruby-mini-portile-2
3631 (package (inherit ruby-mini-portile)
26f4a377 3632 (version "2.2.0")
d000fc92
BW
3633 (source (origin
3634 (method url-fetch)
3635 (uri (rubygems-uri "mini_portile2" version))
3636 (sha256
3637 (base32
26f4a377 3638 "0g5bpgy08q0nc0anisg3yvwc1gc3inl854fcrg48wvg7glqd6dpm"))))))
d000fc92 3639
e920bfca
DT
3640(define-public ruby-nokogiri
3641 (package
3642 (name "ruby-nokogiri")
efb94fda 3643 (version "1.8.0")
e920bfca
DT
3644 (source (origin
3645 (method url-fetch)
3646 (uri (rubygems-uri "nokogiri" version))
3647 (sha256
3648 (base32
efb94fda 3649 "1nffsyx1xjg6v5n9rrbi8y1arrcx2i5f21cp6clgh9iwiqkr7rnn"))))
e920bfca
DT
3650 (build-system ruby-build-system)
3651 (arguments
3652 ;; Tests fail because Nokogiri can only test with an installed extension,
3653 ;; and also because many test framework dependencies are missing.
7b01f250 3654 `(#:tests? #f
e920bfca
DT
3655 #:gem-flags (list "--" "--use-system-libraries"
3656 (string-append "--with-xml2-include="
3657 (assoc-ref %build-inputs "libxml2")
5e7f1b0b
BW
3658 "/include/libxml2" ))
3659 #:phases
3660 (modify-phases %standard-phases
7b01f250
BW
3661 (add-before 'build 'patch-extconf
3662 ;; 'pkg-config' is not included in the GEM_PATH during
3663 ;; installation, so we add it directly to the load path.
3664 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 3665 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
7b01f250
BW
3666 (substitute* "ext/nokogiri/extconf.rb"
3667 (("gem 'pkg-config'.*")
3668 (string-append "$:.unshift '"
3cb3fa67 3669 pkg-config "/lib/ruby/vendor_ruby"
7b01f250
BW
3670 "/gems/pkg-config-"
3671 ,(package-version ruby-pkg-config)
3672 "/lib'\n"))))
5e7f1b0b 3673 #t)))))
e920bfca 3674 (native-inputs
7b01f250 3675 `(("ruby-hoe" ,ruby-hoe)))
e920bfca
DT
3676 (inputs
3677 `(("zlib" ,zlib)
3678 ("libxml2" ,libxml2)
3679 ("libxslt" ,libxslt)))
3680 (propagated-inputs
7b01f250
BW
3681 `(("ruby-mini-portile" ,ruby-mini-portile-2)
3682 ("ruby-pkg-config" ,ruby-pkg-config)))
e920bfca
DT
3683 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
3684 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
3685both CSS3 selector and XPath 1.0 support.")
3686 (home-page "http://www.nokogiri.org/")
3687 (license license:expat)))
30b0b725
DT
3688
3689(define-public ruby-method-source
3690 (package
3691 (name "ruby-method-source")
c8355037 3692 (version "0.9.0")
30b0b725
DT
3693 (source
3694 (origin
3695 (method url-fetch)
3696 (uri (rubygems-uri "method_source" version))
3697 (sha256
3698 (base32
c8355037 3699 "0xqj21j3vfq4ldia6i2akhn2qd84m0iqcnsl49kfpq3xk6x0dzgn"))))
30b0b725 3700 (build-system ruby-build-system)
c8355037
BW
3701 (arguments
3702 `(#:test-target "spec"))
30b0b725 3703 (native-inputs
c8355037 3704 `(("ruby-rspec" ,ruby-rspec)
30b0b725
DT
3705 ("git" ,git)))
3706 (synopsis "Retrieve the source code for Ruby methods")
3707 (description "Method_source retrieves the source code for Ruby methods.
3708Additionally, it can extract source code from Proc and Lambda objects or just
3709extract comments.")
3710 (home-page "https://github.com/banister/method_source")
3711 (license license:expat)))
2e3fdea4
DT
3712
3713(define-public ruby-coderay
3714 (package
3715 (name "ruby-coderay")
5cf0997a 3716 (version "1.1.2")
2e3fdea4
DT
3717 (source
3718 (origin
3719 (method url-fetch)
3720 (uri (rubygems-uri "coderay" version))
3721 (sha256
3722 (base32
5cf0997a 3723 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
2e3fdea4
DT
3724 (build-system ruby-build-system)
3725 (arguments
3726 '(#:tests? #f)) ; missing test files
3727 (synopsis "Ruby syntax highlighting library")
3728 (description "Coderay is a Ruby library that provides syntax highlighting
3729for select languages.")
3730 (home-page "http://coderay.rubychan.de")
3731 (license license:expat)))
96e76083 3732
54993457
CB
3733(define-public ruby-parser
3734 (package
3735 (name "ruby-parser")
3736 (version "2.6.0.0")
3737 (source
3738 (origin
3739 (method url-fetch)
3740 (uri (rubygems-uri "parser" version))
3741 (sha256
3742 (base32
3743 "1hhz2k5417vr2k1llwqgjdnmyrhlpqicy0y2arr6r1gp04fg9wlm"))))
3744 (build-system ruby-build-system)
3745 (native-inputs
3746 `(("bundler" ,bundler)
3747 ("ruby-cliver" ,ruby-cliver)
3748 ("ruby-simplecov" ,ruby-simplecov)
3749 ("ruby-racc" ,ruby-racc)))
3750 (inputs
3751 `(("ragel" ,ragel)))
3752 (propagated-inputs
3753 `(("ruby-ast" ,ruby-ast)))
3754 (synopsis "Ruby parser written in pure Ruby")
3755 (description
3756 "This package provides a Ruby parser written in pure Ruby.")
3757 (home-page "https://github.com/whitequark/parser")
3758 (license license:expat)))
3759
16f423cb
CB
3760(define-public ruby-prawn-manual-builder
3761 (package
3762 (name "ruby-prawn-manual-builder")
3763 (version "0.3.0")
3764 (source
3765 (origin
3766 (method url-fetch)
3767 (uri (rubygems-uri "prawn-manual_builder" version))
3768 (sha256
3769 (base32
3770 "0wbjnkqp55p5wmz85ldypcray223glckd209hmdxhnzk8s5pb3za"))))
3771 (build-system ruby-build-system)
3772 (arguments
3773 '(;; No included tests
3774 #:tests? #f
3775 #:phases
3776 (modify-phases %standard-phases
3777 (add-after 'extract-gemspec 'patch-gemspec
3778 (lambda _
3779 (substitute* ".gemspec"
3780 ;; Loosen the requirement for pdf-inspector
3781 (("~> 1\\.0\\.7") ">= 0")))))))
3782 (propagated-inputs
3783 `(("ruby-coderay" ,ruby-coderay)))
3784 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
3785 (description
3786 "This package provides a tool for writing manuals for Prawn and Prawn
3787accessories")
3788 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
3789 (license (list
3790 ;; GPLv2 or GPLv3 or custom license described in LICENSE file
3791 license:gpl2
3792 license:gpl3))))
3793
268643b9
CB
3794(define-public ruby-progress_bar
3795 (package
3796 (name "ruby-progress_bar")
3797 (version "1.1.0")
3798 (source
3799 (origin
3800 (method url-fetch)
3801 (uri (rubygems-uri "progress_bar" version))
3802 (sha256
3803 (base32
3804 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
3805 (build-system ruby-build-system)
3806 (arguments
3807 '(#:test-target "spec"))
3808 (propagated-inputs
3809 `(("ruby-highline" ,ruby-highline)
3810 ("ruby-options" ,ruby-options)))
3811 (native-inputs
3812 `(("bundler" ,bundler)
3813 ("ruby-rspec" ,ruby-rspec)
3814 ("ruby-timecop" ,ruby-timecop)))
3815 (synopsis
3816 "Ruby library for displaying progress bars")
3817 (description
3818 "ProgressBar is a simple library for displaying progress bars. The
3819maximum value is configurable, and additional information can be displayed
3820like the percentage completion, estimated time remaining, elapsed time and
3821rate.")
3822 (home-page "https://github.com/paul/progress_bar")
3823 (license license:wtfpl2)))
3824
95f85d44
CB
3825(define-public ruby-dep
3826 (package
3827 (name "ruby-dep")
3828 (version "1.5.0")
3829 (source
3830 (origin
3831 (method url-fetch)
3832 (uri (rubygems-uri "ruby_dep" version))
3833 (sha256
3834 (base32
3835 "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
3836 (build-system ruby-build-system)
3837 (arguments
3838 '(#:tests? #f)) ; No included tests
3839 (synopsis "Creates a version constraint of supported Rubies")
3840 (description
3841 "This package helps create a version constraint of supported Rubies,
3842suitable for a gemspec file.")
3843 (home-page "https://github.com/e2/ruby_dep")
3844 (license license:expat)))
3845
158a9253
CB
3846(define-public ruby-progressbar
3847 (package
3848 (name "ruby-progressbar")
3849 (version "1.10.0")
3850 (source
3851 (origin
3852 (method url-fetch)
3853 (uri (rubygems-uri "ruby-progressbar" version))
3854 (sha256
3855 (base32
3856 "1cv2ym3rl09svw8940ny67bav7b2db4ms39i4raaqzkf59jmhglk"))))
3857 (build-system ruby-build-system)
3858 (arguments
3859 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
3860 #:tests? #f))
3861 (synopsis "Text progress bar library for Ruby")
3862 (description
3863 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
3864The output can be customized with a formatting system.")
3865 (home-page "https://github.com/jfelchner/ruby-progressbar")
3866 (license license:expat)))
3867
96e76083
DT
3868(define-public ruby-pry
3869 (package
3870 (name "ruby-pry")
1bf02b20 3871 (version "0.11.3")
96e76083
DT
3872 (source
3873 (origin
3874 (method url-fetch)
3875 (uri (rubygems-uri "pry" version))
3876 (sha256
3877 (base32
1bf02b20 3878 "1mh312k3y94sj0pi160wpia0ps8f4kmzvm505i6bvwynfdh7v30g"))))
96e76083
DT
3879 (build-system ruby-build-system)
3880 (arguments
3881 '(#:tests? #f)) ; no tests
3882 (propagated-inputs
3883 `(("ruby-coderay" ,ruby-coderay)
1960d4fd 3884 ("ruby-method-source" ,ruby-method-source)))
96e76083
DT
3885 (synopsis "Ruby REPL")
3886 (description "Pry is an IRB alternative and runtime developer console for
3887Ruby. It features syntax highlighting, a plugin architecture, runtime
3888invocation, and source and documentation browsing.")
2f3800e5 3889 (home-page "https://pryrepl.org")
96e76083 3890 (license license:expat)))
1415792a 3891
051deeb7
RW
3892(define-public ruby-guard
3893 (package
3894 (name "ruby-guard")
3895 (version "2.13.0")
3896 (source (origin
3897 (method url-fetch)
3898 ;; The gem does not include a Rakefile, nor does it contain a
3899 ;; gemspec file, nor does it come with the tests. This is why
3900 ;; we fetch the tarball from Github.
3901 (uri (string-append "https://github.com/guard/guard/archive/v"
3902 version ".tar.gz"))
3903 (file-name (string-append name "-" version ".tar.gz"))
3904 (sha256
3905 (base32
3906 "1hwj0yi17k6f5axrm0k2bb7fq71dlp0zfywmd7pij9iimbppcca0"))))
3907 (build-system ruby-build-system)
3908 (arguments
3909 `(#:tests? #f ; tests require cucumber
3910 #:phases
3911 (modify-phases %standard-phases
3912 (add-after 'unpack 'remove-git-ls-files
3913 (lambda* (#:key outputs #:allow-other-keys)
3914 (substitute* "guard.gemspec"
3915 (("git ls-files -z") "find . -type f -print0"))
3916 #t))
3917 (replace 'build
3918 (lambda _
9923d5a4 3919 (invoke "gem" "build" "guard.gemspec"))))))
051deeb7
RW
3920 (propagated-inputs
3921 `(("ruby-formatador" ,ruby-formatador)
3922 ("ruby-listen" ,ruby-listen)
3923 ("ruby-lumberjack" ,ruby-lumberjack)
3924 ("ruby-nenv" ,ruby-nenv)
3925 ("ruby-notiffany" ,ruby-notiffany)
3926 ("ruby-pry" ,ruby-pry)
3927 ("ruby-shellany" ,ruby-shellany)
3928 ("ruby-thor" ,ruby-thor)))
3929 (native-inputs
3930 `(("bundler" ,bundler)
3931 ("ruby-rspec" ,ruby-rspec)))
3932 (synopsis "Tool to handle events on file system modifications")
3933 (description
3934 "Guard is a command line tool to easily handle events on file system
3935modifications. Guard automates various tasks by running custom rules whenever
3936file or directories are modified.")
3937 (home-page "http://guardgem.org/")
3938 (license license:expat)))
3939
bcbb3cc9
CB
3940(define-public ruby-tilt
3941 (package
3942 (name "ruby-tilt")
3943 (version "2.0.9")
3944 (source
3945 (origin
3946 (method url-fetch)
3947 (uri (rubygems-uri "tilt" version))
3948 (sha256
3949 (base32
3950 "0ca4k0clwf0rkvy7726x4nxpjxkpv67w043i39saxgldxd97zmwz"))))
3951 (build-system ruby-build-system)
3952 (arguments
3953 '(#:phases
3954 (modify-phases %standard-phases
3955 (add-after 'unpack 'remove-some-dependencies
3956 (lambda _
3957 (substitute* "Gemfile"
3958 ;; TODO ronn is used for generating the manual
3959 (("gem 'ronn'.*") "\n")
3960 ;; ruby-haml has a runtime dependency on ruby-tilt, so don't
3961 ;; pass it in as a native-input
3962 (("gem 'haml'.*") "\n")
3963 ;; TODO Not all of these gems are packaged for Guix yet:
3964 ;; less, coffee-script, livescript, babel-transpiler,
3965 ;; typescript-node
3966 (("if can_execjs") "if false")
3967 ;; Disable the secondary group to reduce the number of
3968 ;; dependencies. None of the normal approaches work, so patch
3969 ;; the Gemfile instead.
3970 (("group :secondary") "[].each"))
3971 #t)))))
3972 (native-inputs
3973 `(("bundler" ,bundler)
3974 ("ruby-yard" ,ruby-yard)
3975 ("ruby-builder" ,ruby-builder)
3976 ("ruby-erubis" ,ruby-erubis)
3977 ("ruby-markaby" ,ruby-markaby)
3978 ("ruby-sassc" ,ruby-sassc)))
3979 (synopsis "Generic interface to multiple Ruby template engines")
3980 (description
3981 "Tilt is a thin interface over a number of different Ruby template
3982engines in an attempt to make their usage as generic as possible.")
3983 (home-page "https://github.com/rtomayko/tilt/")
3984 (license license:expat)))
3985
1415792a
DT
3986(define-public ruby-thread-safe
3987 (package
3988 (name "ruby-thread-safe")
313dd5dd 3989 (version "0.3.6")
1415792a
DT
3990 (source
3991 (origin
3992 (method url-fetch)
3993 (uri (rubygems-uri "thread_safe" version))
3994 (sha256
3995 (base32
313dd5dd 3996 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
1415792a
DT
3997 (build-system ruby-build-system)
3998 (arguments
3999 '(#:tests? #f)) ; needs simplecov, among others
4000 (synopsis "Thread-safe utilities for Ruby")
4001 (description "The thread_safe library provides thread-safe collections and
4002utilities for Ruby.")
4003 (home-page "https://github.com/ruby-concurrency/thread_safe")
4004 (license license:asl2.0)))
08a1b701
DT
4005
4006(define-public ruby-tzinfo
4007 (package
4008 (name "ruby-tzinfo")
4237af85 4009 (version "1.2.4")
08a1b701
DT
4010 (source
4011 (origin
4012 (method url-fetch)
4013 (uri (rubygems-uri "tzinfo" version))
4014 (sha256
4015 (base32
4237af85 4016 "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp"))))
08a1b701
DT
4017 (build-system ruby-build-system)
4018 (propagated-inputs
4019 `(("ruby-thread-safe" ,ruby-thread-safe)))
4020 (synopsis "Time zone library for Ruby")
4021 (description "TZInfo is a Ruby library that provides daylight savings
4022aware transformations between times in different time zones.")
2f3800e5 4023 (home-page "https://tzinfo.github.io")
1e12924a
BW
4024 (license license:expat)))
4025
4026(define-public ruby-tzinfo-data
4027 (package
4028 (name "ruby-tzinfo-data")
92513191 4029 (version "1.2017.3")
1e12924a
BW
4030 (source
4031 (origin
4032 (method url-fetch)
4033 ;; Download from GitHub because the rubygems version does not contain
4034 ;; Rakefile or tests.
4035 (uri (string-append
4036 "https://github.com/tzinfo/tzinfo-data/archive/v"
4037 version
4038 ".tar.gz"))
4039 (file-name (string-append name "-" version ".tar.gz"))
4040 (sha256
4041 (base32
92513191 4042 "01wff7syqzikbxalbg3isgxasmvzicr85bzadzkb6bf20bip4v54"))
1e12924a
BW
4043 ;; Remove the known test failure.
4044 ;; https://github.com/tzinfo/tzinfo-data/issues/10
4045 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
4046 (patches (search-patches
4047 "ruby-tzinfo-data-ignore-broken-test.patch"))))
4048 (build-system ruby-build-system)
4049 (propagated-inputs
4050 `(("ruby-tzinfo" ,ruby-tzinfo)))
4051 (synopsis "Data from the IANA Time Zone database")
4052 (description
4053 "This library provides @code{TZInfo::Data}, which contains data from the
4054IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
2f3800e5 4055 (home-page "https://tzinfo.github.io")
08a1b701 4056 (license license:expat)))
c99e2247 4057
48e6851f
RW
4058(define-public ruby-rb-inotify
4059 (package
4060 (name "ruby-rb-inotify")
32bbfea8 4061 (version "0.9.10")
48e6851f
RW
4062 (source
4063 (origin
4064 (method url-fetch)
4065 (uri (rubygems-uri "rb-inotify" version))
4066 (sha256
4067 (base32
32bbfea8 4068 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
48e6851f
RW
4069 (build-system ruby-build-system)
4070 (arguments
4071 '(#:tests? #f ; there are no tests
4072 #:phases
4073 (modify-phases %standard-phases
4074 ;; Building the gemspec with rake is not working here since it is
4075 ;; generated with Jeweler. It is also unnecessary because the
4076 ;; existing gemspec does not use any development tools to generate a
4077 ;; list of files.
4078 (replace 'build
4079 (lambda _
9923d5a4 4080 (invoke "gem" "build" "rb-inotify.gemspec"))))))
48e6851f
RW
4081 (propagated-inputs
4082 `(("ruby-ffi" ,ruby-ffi)))
4083 (native-inputs
4084 `(("ruby-yard" ,ruby-yard)))
4085 (synopsis "Ruby wrapper for Linux's inotify")
4086 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
4087kernel subsystem for monitoring changes to files and directories.")
4088 (home-page "https://github.com/nex3/rb-inotify")
4089 (license license:expat)))
4090
a75bdfce
RW
4091(define-public ruby-pry-editline
4092 (package
4093 (name "ruby-pry-editline")
4094 (version "1.1.2")
4095 (source (origin
4096 (method url-fetch)
4097 (uri (rubygems-uri "pry-editline" version))
4098 (sha256
4099 (base32
4100 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
4101 (build-system ruby-build-system)
4102 (arguments `(#:tests? #f)) ; no tests included
4103 (native-inputs
4104 `(("bundler" ,bundler)))
4105 (synopsis "Open the current REPL line in an editor")
4106 (description
4107 "This gem provides a plugin for the Ruby REPL to enable opening the
4108current line in an external editor.")
4109 (home-page "https://github.com/tpope/pry-editline")
4110 (license license:expat)))
4111
d3b20a02
RW
4112(define-public ruby-sdoc
4113 (package
4114 (name "ruby-sdoc")
fdf3a68d 4115 (version "0.4.2")
d3b20a02
RW
4116 (source (origin
4117 (method url-fetch)
4118 (uri (rubygems-uri "sdoc" version))
4119 (sha256
4120 (base32
fdf3a68d 4121 "0qhvy10vnmrqcgh8494m13kd5ag9c3sczzhfasv8j0294ylk679n"))))
d3b20a02
RW
4122 (build-system ruby-build-system)
4123 (arguments
4124 `(#:phases
4125 (modify-phases %standard-phases
fc29d5e6 4126 (add-before 'check 'set-rubylib-and-patch-gemfile
d3b20a02 4127 (lambda _
fdf3a68d 4128 (setenv "RUBYLIB" "lib")
fc29d5e6
BW
4129 (substitute* "sdoc.gemspec"
4130 (("s.add_runtime_dependency.*") "\n")
4131 (("s.add_dependency.*") "\n"))
4132 (substitute* "Gemfile"
4133 (("gem \"rake\".*")
4134 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
d3b20a02
RW
4135 #t)))))
4136 (propagated-inputs
4137 `(("ruby-json" ,ruby-json)))
4138 (native-inputs
4139 `(("bundler" ,bundler)
fdf3a68d
BW
4140 ("ruby-minitest" ,ruby-minitest)
4141 ("ruby-hoe" ,ruby-hoe)))
d3b20a02
RW
4142 (synopsis "Generate searchable RDoc documentation")
4143 (description
4144 "SDoc is an RDoc documentation generator to build searchable HTML
4145documentation for Ruby code.")
7bf837fd 4146 (home-page "https://github.com/voloko/sdoc")
d3b20a02
RW
4147 (license license:expat)))
4148
70b002aa
RW
4149(define-public ruby-tins
4150 (package
4151 (name "ruby-tins")
fbefd6ff 4152 (version "1.15.0")
70b002aa
RW
4153 (source (origin
4154 (method url-fetch)
4155 (uri (rubygems-uri "tins" version))
4156 (sha256
4157 (base32
fbefd6ff 4158 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
70b002aa
RW
4159 (build-system ruby-build-system)
4160 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
4161 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
4162 ;; the gemspec.
4163 (arguments
4164 `(#:tests? #f ; there are no tests
4165 #:phases
4166 (modify-phases %standard-phases
4167 (replace 'build
4168 (lambda _
4169 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
4170 ;; causes an error.
4171 (substitute* "tins.gemspec"
4172 (("\"lib/spruz\", ") ""))
9923d5a4 4173 (invoke "gem" "build" "tins.gemspec"))))))
70b002aa
RW
4174 (synopsis "Assorted tools for Ruby")
4175 (description "Tins is a Ruby library providing assorted tools.")
4176 (home-page "https://github.com/flori/tins")
4177 (license license:expat)))
4178
bc8277e4
RW
4179(define-public ruby-gem-hadar
4180 (package
4181 (name "ruby-gem-hadar")
3fd577e3 4182 (version "1.9.1")
bc8277e4
RW
4183 (source (origin
4184 (method url-fetch)
4185 (uri (rubygems-uri "gem_hadar" version))
4186 (sha256
4187 (base32
3fd577e3 4188 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
bc8277e4
RW
4189 (build-system ruby-build-system)
4190 ;; This gem needs itself at development time. We disable rebuilding of the
4191 ;; gemspec to avoid this loop.
4192 (arguments
4193 `(#:tests? #f ; there are no tests
4194 #:phases
4195 (modify-phases %standard-phases
4196 (replace 'build
4197 (lambda _
9923d5a4 4198 (invoke "gem" "build" "gem_hadar.gemspec"))))))
bc8277e4
RW
4199 (propagated-inputs
4200 `(("git" ,git)
4201 ("ruby-tins" ,ruby-tins)
3fd577e3 4202 ("ruby-yard" ,ruby-yard)))
bc8277e4
RW
4203 (synopsis "Library for the development of Ruby gems")
4204 (description
4205 "This library contains some useful functionality to support the
4206development of Ruby gems.")
4207 (home-page "https://github.com/flori/gem_hadar")
4208 (license license:expat)))
4209
d8cafe29
RW
4210(define-public ruby-minitest-tu-shim
4211 (package
4212 (name "ruby-minitest-tu-shim")
4213 (version "1.3.3")
4214 (source (origin
4215 (method url-fetch)
4216 (uri (rubygems-uri "minitest_tu_shim" version))
4217 (sha256
4218 (base32
4219 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
4220 (build-system ruby-build-system)
4221 (arguments
4222 `(#:phases
4223 (modify-phases %standard-phases
4224 (add-after 'unpack 'fix-test-include-path
4225 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 4226 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
761e7042
BW
4227 (substitute* "Rakefile"
4228 (("Hoe\\.add_include_dirs .*")
4229 (string-append "Hoe.add_include_dirs \""
3cb3fa67 4230 minitest "/lib/ruby/vendor_ruby"
761e7042
BW
4231 "/gems/minitest-"
4232 ,(package-version ruby-minitest-4)
4233 "/lib" "\""))))
4234 #t))
d8cafe29
RW
4235 (add-before 'check 'fix-test-assumptions
4236 (lambda _
4237 ;; The test output includes the file name, so a couple of tests
4238 ;; fail. Changing the regular expressions slightly fixes this
4239 ;; problem.
4240 (substitute* "test/test_mini_test.rb"
4241 (("output.sub!\\(.*, 'FILE:LINE'\\)")
4242 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
4243 (("gsub\\(/.*, 'FILE:LINE'\\)")
4244 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
4245 #t)))))
4246 (propagated-inputs
4247 `(("ruby-minitest-4" ,ruby-minitest-4)))
4248 (native-inputs
4249 `(("ruby-hoe" ,ruby-hoe)))
4250 (synopsis "Adapter library between minitest and test/unit")
4251 (description
4252 "This library bridges the gap between the small and fast minitest and
4253Ruby's large and slower test/unit.")
4254 (home-page "https://rubygems.org/gems/minitest_tu_shim")
4255 (license license:expat)))
4256
fd83a212
RW
4257(define-public ruby-term-ansicolor
4258 (package
4259 (name "ruby-term-ansicolor")
f3a6311a 4260 (version "1.6.0")
fd83a212
RW
4261 (source (origin
4262 (method url-fetch)
4263 (uri (rubygems-uri "term-ansicolor" version))
4264 (sha256
4265 (base32
f3a6311a 4266 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
fd83a212
RW
4267 (build-system ruby-build-system)
4268 ;; Rebuilding the gemspec seems to require git, even though this is not a
4269 ;; git repository, so we just build the gem from the existing gemspec.
4270 (arguments
4271 `(#:phases
4272 (modify-phases %standard-phases
39ecb977
CB
4273 (add-after 'unpack 'fix-test
4274 (lambda -
4275 (substitute* "tests/hsl_triple_test.rb"
4276 (("0\\\\\\.0%")
4277 "0\\.?0?%"))))
fd83a212
RW
4278 (replace 'build
4279 (lambda _
9923d5a4 4280 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
fd83a212
RW
4281 (propagated-inputs
4282 `(("ruby-tins" ,ruby-tins)))
4283 (native-inputs
4284 `(("ruby-gem-hadar" ,ruby-gem-hadar)
4285 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
4286 (synopsis "Ruby library to control the attributes of terminal output")
4287 (description
4288 "This Ruby library uses ANSI escape sequences to control the attributes
4289of terminal output.")
2f3800e5 4290 (home-page "https://flori.github.io/term-ansicolor/")
fd83a212
RW
4291 ;; There is no mention of the "or later" clause.
4292 (license license:gpl2)))
4293
a714c30f
CB
4294(define-public ruby-terraform
4295 (package
4296 (name "ruby-terraform")
4297 (version "0.22.0")
4298 (source
4299 (origin
4300 (method url-fetch)
4301 (uri (rubygems-uri "ruby-terraform" version))
4302 (sha256
4303 (base32
4304 "13zjkp71cd19j2ds2h9rqwcfr1zdg5nsh63p89l6qcsc9z39z324"))))
4305 (build-system ruby-build-system)
4306 (arguments
4307 '(#:tests? #f)) ; No included tests
4308 (propagated-inputs
4309 `(("ruby-lino" ,ruby-lino)))
4310 (synopsis "Ruby wrapper around the Terraform command line interface")
4311 (description
4312 "This package provides a Ruby wrapper around the Terraform command line
4313interface so that Terraform can be more easily invoked from Ruby code.")
4314 (home-page "https://github.com/infrablocks/ruby_terraform")
4315 (license license:expat)))
4316
6e376ca4
RW
4317(define-public ruby-pstree
4318 (package
4319 (name "ruby-pstree")
4320 (version "0.1.0")
4321 (source (origin
4322 (method url-fetch)
4323 (uri (rubygems-uri "pstree" version))
4324 (sha256
4325 (base32
4326 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
4327 (build-system ruby-build-system)
4328 (native-inputs
4329 `(("ruby-gem-hadar" ,ruby-gem-hadar)
4330 ("bundler" ,bundler)))
4331 (synopsis "Create a process tree data structure")
4332 (description
4333 "This library uses the output of the @code{ps} command to create a
4334process tree data structure for the current host.")
2f3800e5 4335 (home-page "https://github.com/flori/pstree")
6e376ca4
RW
4336 ;; There is no mention of the "or later" clause.
4337 (license license:gpl2)))
4338
53239b5f
RW
4339(define-public ruby-utils
4340 (package
4341 (name "ruby-utils")
cd698b6e 4342 (version "0.9.0")
53239b5f
RW
4343 (source (origin
4344 (method url-fetch)
4345 (uri (rubygems-uri "utils" version))
4346 (sha256
4347 (base32
cd698b6e 4348 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
53239b5f
RW
4349 (build-system ruby-build-system)
4350 (propagated-inputs
4351 `(("ruby-tins" ,ruby-tins)
4352 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
4353 ("ruby-pstree" ,ruby-pstree)
4354 ("ruby-pry-editline" ,ruby-pry-editline)))
4355 (native-inputs
4356 `(("ruby-gem-hadar" ,ruby-gem-hadar)
4357 ("bundler" ,bundler)))
4358 (synopsis "Command line tools for working with Ruby")
4359 (description
4360 "This package provides assorted command line tools that may be useful
4361when working with Ruby code.")
4362 (home-page "https://github.com/flori/utils")
4363 ;; There is no mention of the "or later" clause.
4364 (license license:gpl2)))
4365
433f10b5
CB
4366(define-public ruby-jaro-winkler
4367 (package
4368 (name "ruby-jaro-winkler")
4369 (version "1.5.2")
4370 (source
4371 (origin
4372 (method url-fetch)
4373 (uri (rubygems-uri "jaro_winkler" version))
4374 (sha256
4375 (base32
4376 "1zz27z88qznix4r65gd9h56gl177snlfpgv10b0s69vi8qpl909l"))))
4377 (build-system ruby-build-system)
4378 (arguments
4379 '(;; No included tests
4380 #:tests? #f))
4381 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
4382 (description
4383 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
4384algorithm. It is written as a C extension and will fallback to a pure Ruby
4385implementation on platforms where this is unsupported.")
4386 (home-page "https://github.com/tonytonyjan/jaro_winkler")
4387 (license license:expat)))
4388
c99e2247
DT
4389(define-public ruby-json
4390 (package
4391 (name "ruby-json")
a281acce 4392 (version "2.1.0")
c99e2247
DT
4393 (source
4394 (origin
4395 (method url-fetch)
4396 (uri (rubygems-uri "json" version))
4397 (sha256
4398 (base32
a281acce 4399 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
c99e2247
DT
4400 (build-system ruby-build-system)
4401 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
4402 (synopsis "JSON library for Ruby")
4403 (description "This Ruby library provides a JSON implementation written as
4404a native C extension.")
4405 (home-page "http://json-jruby.rubyforge.org/")
4406 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 4407
763624f5
RW
4408(define-public ruby-json-pure
4409 (package
4410 (name "ruby-json-pure")
ac01cb07 4411 (version "2.1.0")
763624f5
RW
4412 (source (origin
4413 (method url-fetch)
4414 (uri (rubygems-uri "json_pure" version))
4415 (sha256
4416 (base32
ac01cb07 4417 "12yf9fmhr4c2jm3xl20vf1qyz5i63vc8a6ngz9j0f86nqwhmi2as"))))
763624f5
RW
4418 (build-system ruby-build-system)
4419 (arguments
ac01cb07 4420 `(#:phases
763624f5 4421 (modify-phases %standard-phases
ac01cb07 4422 (add-after 'unpack 'fix-rakefile
763624f5 4423 (lambda _
ac01cb07
BW
4424 (substitute* "Rakefile"
4425 ;; Since this is not a git repository, do not call 'git'.
4426 (("`git ls-files`") "`find . -type f |sort`")
4427 ;; Loosen dependency constraint.
4428 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
4429 #t))
4430 (add-after 'replace-git-ls-files 'regenerate-gemspec
4431 (lambda _
4432 ;; Regenerate gemspec so loosened dependency constraints are
4433 ;; propagated.
17cfb7ae
CB
4434 (invoke "rake" "gemspec")))
4435 (add-after 'regenerate-gemspec 'fix-json-java.gemspec
4436 (lambda _
4437 ;; This gemspec doesn't look to be generated by the above
4438 ;; command, so patch it separately.
4439 (substitute* "json-java.gemspec"
4440 (("%q<test-unit>\\.freeze, \\[\"~> 2\\.0\"\\]")
4441 "%q<test-unit>.freeze, [\">= 2.0\"]"))
4442 #t)))))
763624f5 4443 (native-inputs
ac01cb07 4444 `(("bundler" ,bundler)
0c9f73cd
TGR
4445 ("ragel" ,ragel)
4446 ("ruby-simplecov" ,ruby-simplecov)
4447 ("ruby-test-unit" ,ruby-test-unit)))
763624f5
RW
4448 (synopsis "JSON implementation in pure Ruby")
4449 (description
4450 "This package provides a JSON implementation written in pure Ruby.")
2f3800e5 4451 (home-page "https://flori.github.com/json")
763624f5
RW
4452 (license license:ruby)))
4453
2a8581ac
CB
4454(define-public ruby-jwt
4455 (package
4456 (name "ruby-jwt")
4457 (version "2.1.0")
4458 (source
4459 (origin
4460 (method url-fetch)
4461 (uri (rubygems-uri "jwt" version))
4462 (sha256
4463 (base32
4464 "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky"))))
4465 (build-system ruby-build-system)
4466 (arguments
4467 '(#:test-target "test"
4468 #:phases
4469 (modify-phases %standard-phases
4470 (add-after 'unpack 'remove-unnecessary-dependencies
4471 (lambda _
4472 (substitute* "spec/spec_helper.rb"
4473 (("require 'simplecov.*") "\n")
4474 ;; Use [].each to disable running the SimpleCov configuration
4475 ;; block
4476 (("SimpleCov\\.configure") "[].each")
4477 (("require 'codeclimate-test-reporter'") "")
4478 (("require 'codacy-coverage'") "")
4479 (("Codacy::Reporter\\.start") ""))
4480 #t)))))
4481 (native-inputs
4482 `(("bundler" ,bundler)
4483 ("ruby-rspec" ,ruby-rspec)
4484 ("ruby-rbnacl" ,ruby-rbnacl)))
4485 (synopsis "Ruby implementation of the JSON Web Token standard")
4486 (description
4487 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
4488@acronym{JWT, JSON Web Token} standard.")
4489 (home-page "https://github.com/jwt/ruby-jwt")
4490 (license license:expat)))
4491
16b324cd
RW
4492;; Even though this package only provides bindings for a Mac OSX API it is
4493;; required by "ruby-listen" at runtime.
4494(define-public ruby-rb-fsevent
4495 (package
4496 (name "ruby-rb-fsevent")
b0ef15ed 4497 (version "0.10.3")
16b324cd
RW
4498 (source (origin
4499 (method url-fetch)
4500 (uri (rubygems-uri "rb-fsevent" version))
4501 (sha256
4502 (base32
b0ef15ed 4503 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
16b324cd
RW
4504 (build-system ruby-build-system)
4505 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
4506 ;; "listen", which needs "rb-fsevent" at runtime.
4507 (arguments `(#:tests? #f))
4508 (synopsis "FSEvents API with signals catching")
4509 (description
4510 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
4511 (home-page "https://rubygems.org/gems/rb-fsevent")
4512 (license license:expat)))
4513
b86be2ad
RW
4514(define-public ruby-listen
4515 (package
4516 (name "ruby-listen")
c3b36fa1 4517 (version "3.1.5")
b86be2ad
RW
4518 (source
4519 (origin
35602819
CB
4520 ;; The gem does not include a Rakefile, so fetch from the Git
4521 ;; repository.
4522 (method git-fetch)
4523 (uri (git-reference
4524 (url "https://github.com/guard/listen.git")
4525 (commit (string-append "v" version))))
4526 (file-name (git-file-name name version))
b86be2ad
RW
4527 (sha256
4528 (base32
35602819 4529 "1hqmkfa9f2xb5jlvqbafdxjd5ax75jm8gqj5nh3k22xq0kacsvgg"))))
b86be2ad 4530 (build-system ruby-build-system)
35602819
CB
4531 (arguments
4532 `(#:test-target "spec"
4533 #:phases
4534 (modify-phases %standard-phases
4535 (add-after 'unpack 'fix-files-in-gemspec
4536 (lambda _
4537 (substitute* "listen.gemspec"
4538 (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
4539 #t))
4540 (add-before 'check 'remove-unnecessary-dependencies'
4541 (lambda _
4542 (substitute* "Rakefile"
4543 ;; Rubocop is for code linting, and is unnecessary for running
4544 ;; the tests.
4545 ((".*rubocop.*") ""))
4546 #t)))))
4547 (native-inputs
4548 `(("bundler" ,bundler)
4549 ("ruby-rspec" ,ruby-rspec)))
4550 (inputs
4551 `(;; ruby-thor is used for the command line interface, and is referenced
4552 ;; in the wrapper, and therefore just needs to be an input.
4553 ("ruby-thor" ,ruby-thor)))
b86be2ad 4554 (propagated-inputs
35602819
CB
4555 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
4556 ("ruby-rb-inotify" ,ruby-rb-inotify)
4557 ("ruby-dep" ,ruby-dep)))
b86be2ad
RW
4558 (synopsis "Listen to file modifications")
4559 (description "The Listen gem listens to file modifications and notifies
4560you about the changes.")
4561 (home-page "https://github.com/guard/listen")
4562 (license license:expat)))
4563
8d3c5ff6
CB
4564(define-public ruby-loofah
4565 (package
4566 (name "ruby-loofah")
4567 (version "2.2.3")
4568 (source
4569 (origin
4570 (method url-fetch)
4571 (uri (rubygems-uri "loofah" version))
4572 (sha256
4573 (base32
4574 "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg"))))
4575 (build-system ruby-build-system)
4576 (arguments
4577 '(#:phases
4578 (modify-phases %standard-phases
4579 (add-after 'unpack 'remove-unnecessary-dependencies
4580 (lambda _
4581 ;; concourse is a development tool which is unused, so remove it
4582 ;; so it's not required.
4583 (substitute* "Gemfile"
4584 ((".*\"concourse\".*") "\n"))
4585 (substitute* "Rakefile"
4586 (("require 'concourse'") "")
4587 (("Concourse\\.new.*") "\n"))
4588 #t)))))
4589 (native-inputs
4590 `(("ruby-hoe" ,ruby-hoe)
4591 ("ruby-rr" ,ruby-rr)))
4592 (propagated-inputs
4593 `(("ruby-nokogiri" ,ruby-nokogiri)
4594 ("ruby-crass" ,ruby-crass)))
4595 (synopsis "Ruby library for manipulating and transforming HTML/XML")
4596 (description
4597 "Loofah is a general library for manipulating and transforming HTML/XML
4598documents and fragments. It's built on top of Nokogiri and libxml2.")
4599 (home-page "https://github.com/flavorjones/loofah")
4600 (license license:expat)))
4601
5ff89a1b
DT
4602(define-public ruby-activesupport
4603 (package
4604 (name "ruby-activesupport")
bcf1fe5b 4605 (version "5.2.2.1")
5ff89a1b
DT
4606 (source
4607 (origin
4608 (method url-fetch)
4609 (uri (rubygems-uri "activesupport" version))
4610 (sha256
4611 (base32
bcf1fe5b 4612 "161bp4p01v1a1lvszrhd1a02zf9x1p1l1yhw79a3rix1kvzkkdqb"))))
5ff89a1b
DT
4613 (build-system ruby-build-system)
4614 (arguments
2af45e50
BW
4615 `(#:phases
4616 (modify-phases %standard-phases
4617 (replace 'check
4618 (lambda _
9923d5a4
TGR
4619 ;; There are no tests, instead attempt to load the library.
4620 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
5ff89a1b 4621 (propagated-inputs
2af45e50
BW
4622 `(("ruby-concurrent" ,ruby-concurrent)
4623 ("ruby-i18n" ,ruby-i18n)
5ff89a1b 4624 ("ruby-minitest" ,ruby-minitest)
606ee9a1
BW
4625 ("ruby-tzinfo" ,ruby-tzinfo)
4626 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
5ff89a1b
DT
4627 (synopsis "Ruby on Rails utility library")
4628 (description "ActiveSupport is a toolkit of support libraries and Ruby
4629core extensions extracted from the Rails framework. It includes support for
4630multibyte strings, internationalization, time zones, and testing.")
4631 (home-page "http://www.rubyonrails.org")
4632 (license license:expat)))
f847ad7b 4633
3996f0aa
RW
4634(define-public ruby-crass
4635 (package
4636 (name "ruby-crass")
a0e0f9d7 4637 (version "1.0.4")
3996f0aa
RW
4638 (source (origin
4639 (method url-fetch)
4640 (uri (rubygems-uri "crass" version))
4641 (sha256
4642 (base32
a0e0f9d7 4643 "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi"))))
3996f0aa
RW
4644 (build-system ruby-build-system)
4645 (native-inputs
4646 `(("bundler" ,bundler)
4647 ("ruby-minitest" ,ruby-minitest)))
4648 (synopsis "Pure Ruby CSS parser")
4649 (description
4650 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
4651 (home-page "https://github.com/rgrove/crass/")
4652 (license license:expat)))
4653
c2c4e5b2 4654(define-public ruby-nokogumbo
f1ae7c62
BW
4655 (let ((commit "fb51ff299a1c34346837580b6d1d9a60fadf5dbd"))
4656 (package
4657 (name "ruby-nokogumbo")
4658 (version (string-append "1.4.7-1." (string-take commit 8)))
4659 (source (origin
4660 ;; We use the git reference, because there's no Rakefile in the
4661 ;; published gem and the tarball on Github is outdated.
4662 (method git-fetch)
4663 (uri (git-reference
4664 (url "https://github.com/rubys/nokogumbo.git")
4665 (commit "d56f954d20a")))
4666 (file-name (string-append name "-" version "-checkout"))
4667 (sha256
4668 (base32
4669 "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
4670 (build-system ruby-build-system)
4671 (arguments
4672 `(#:modules ((guix build ruby-build-system)
4673 (guix build utils)
4674 (ice-9 rdelim))
4675 #:phases
4676 (modify-phases %standard-phases
5c31e981 4677 (add-after 'unpack 'build-gemspec
f1ae7c62
BW
4678 (lambda _
4679 (substitute* "Rakefile"
4680 ;; Build Makefile even without a copy of gumbo-parser sources
4681 (("'gumbo-parser/src',") "")
4682 ;; We don't bundle gumbo-parser sources
4683 (("'gumbo-parser/src/\\*',") "")
4684 (("'gumbo-parser/visualc/include/\\*',") "")
4685 ;; The definition of SOURCES will be cut in gemspec, and
4686 ;; "FileList" will be undefined.
4687 (("SOURCES \\+ FileList\\[")
4688 "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
4689
4690 ;; Copy the Rakefile and cut out the gemspec.
4691 (copy-file "Rakefile" ".gemspec")
4692 (with-atomic-file-replacement ".gemspec"
4693 (lambda (in out)
4694 (let loop ((line (read-line in 'concat))
4695 (skipping? #t))
4696 (if (eof-object? line)
4697 #t
4698 (let ((skip-next? (if skipping?
4699 (not (string-prefix? "SPEC =" line))
4700 (string-prefix? "end" line))))
4701 (when (or (not skipping?)
4702 (and skipping? (not skip-next?)))
4703 (format #t "~a" line)
4704 (display line out))
4705 (loop (read-line in 'concat) skip-next?))))))
4706 #t)))))
4707 (inputs
4708 `(("gumbo-parser" ,gumbo-parser)))
4709 (propagated-inputs
4710 `(("ruby-nokogiri" ,ruby-nokogiri)))
4711 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
4712 (description
4713 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
c2c4e5b2 4714access the result as a Nokogiri parsed document.")
f1ae7c62
BW
4715 (home-page "https://github.com/rubys/nokogumbo/")
4716 (license license:asl2.0))))
c2c4e5b2 4717
d56ff88b
RW
4718(define-public ruby-sanitize
4719 (package
4720 (name "ruby-sanitize")
f812145e 4721 (version "4.6.3")
d56ff88b
RW
4722 (source (origin
4723 (method url-fetch)
4724 ;; The gem does not include the Rakefile, so we download the
4725 ;; release tarball from Github.
4726 (uri (string-append "https://github.com/rgrove/"
4727 "sanitize/archive/v" version ".tar.gz"))
4728 (file-name (string-append name "-" version ".tar.gz"))
4729 (sha256
4730 (base32
f812145e 4731 "1fmqppwif3cm8h79006jfzkdnlxxzlry9kzk03psk0d5xpg55ycc"))))
d56ff88b
RW
4732 (build-system ruby-build-system)
4733 (propagated-inputs
4734 `(("ruby-crass" ,ruby-crass)
4735 ("ruby-nokogiri" ,ruby-nokogiri)
4736 ("ruby-nokogumbo" ,ruby-nokogumbo)))
4737 (native-inputs
4738 `(("bundler" ,bundler)
4739 ("ruby-minitest" ,ruby-minitest)
4740 ("ruby-redcarpet" ,ruby-redcarpet)
4741 ("ruby-yard" ,ruby-yard)))
4742 (synopsis "Whitelist-based HTML and CSS sanitizer")
4743 (description
4744 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
4745acceptable elements, attributes, and CSS properties, Sanitize will remove all
4746unacceptable HTML and/or CSS from a string.")
4747 (home-page "https://github.com/rgrove/sanitize/")
4748 (license license:expat)))
4749
ed4b6b18
BW
4750(define-public ruby-oj
4751 (package
4752 (name "ruby-oj")
4753 (version "3.6.7")
4754 (source
4755 (origin
4756 (method url-fetch)
4757 ;; Version on rubygems.org does not contain Rakefile, so download from
4758 ;; GitHub instead.
4759 (uri (string-append "https://github.com/ohler55/oj/archive/v"
4760 version ".tar.gz"))
4761 (file-name (string-append name "-" version ".tar.gz"))
4762 (sha256
4763 (base32
4764 "1x28ga72jxlnmsd8g8c0fw81vlh54r0qgagw2lxsd3x3la091g2h"))))
4765 (build-system ruby-build-system)
4766 (arguments
4767 '(#:test-target "test_all"
4768 #:phases
4769 (modify-phases %standard-phases
4770 (add-before 'check 'disable-bundler
4771 (lambda _
4772 (substitute* "Rakefile"
4773 (("Bundler\\.with_clean_env") "1.times")
4774 (("bundle exec ") "")))))))
4775 (native-inputs
4776 `(("bundler" ,bundler)
4777 ("ruby-rspec" ,ruby-rspec)
4778 ("ruby-rake-compiler" ,ruby-rake-compiler)))
4779 (synopsis "JSON parser for Ruby optimized for speed")
4780 (description
4781 "Oj is a JSON parser and generator for Ruby, where the encoding and
4782decoding of JSON is implemented as a C extension to Ruby.")
4783 (home-page "http://www.ohler.com/oj")
4784 (license (list license:expat ; Ruby code
4785 license:bsd-3)))) ; extension code
4786
f847ad7b
DT
4787(define-public ruby-ox
4788 (package
4789 (name "ruby-ox")
263c0dbf 4790 (version "2.6.0")
f847ad7b
DT
4791 (source
4792 (origin
4793 (method url-fetch)
4794 (uri (rubygems-uri "ox" version))
4795 (sha256
4796 (base32
263c0dbf 4797 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
f847ad7b
DT
4798 (build-system ruby-build-system)
4799 (arguments
4800 '(#:tests? #f)) ; no tests
4801 (synopsis "Optimized XML library for Ruby")
4802 (description
4803 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
4804written as a native C extension. It was designed to be an alternative to
4805Nokogiri and other Ruby XML parsers for generic XML parsing and as an
4806alternative to Marshal for Object serialization. ")
4807 (home-page "http://www.ohler.com/ox")
4808 (license license:expat)))
4a9e0585 4809
0c4e7625
RW
4810(define-public ruby-redcloth
4811 (package
4812 (name "ruby-redcloth")
2a91494e 4813 (version "4.3.2")
0c4e7625
RW
4814 (source (origin
4815 (method url-fetch)
4816 (uri (rubygems-uri "RedCloth" version))
4817 (sha256
4818 (base32
2a91494e 4819 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
0c4e7625
RW
4820 (build-system ruby-build-system)
4821 (arguments
4822 `(#:tests? #f ; no tests
4823 #:phases
4824 (modify-phases %standard-phases
4825 ;; Redcloth has complicated rake tasks to build various versions for
4826 ;; multiple targets using RVM. We don't want this so we just use the
4827 ;; existing gemspec.
4828 (replace 'build
4829 (lambda _
9923d5a4 4830 (invoke "gem" "build" "redcloth.gemspec"))))))
0c4e7625
RW
4831 (native-inputs
4832 `(("bundler" ,bundler)
4833 ("ruby-diff-lcs" ,ruby-diff-lcs)
4834 ("ruby-rspec-2" ,ruby-rspec-2)))
4835 (synopsis "Textile markup language parser for Ruby")
4836 (description
4837 "RedCloth is a Ruby parser for the Textile markup language.")
4838 (home-page "http://redcloth.org")
4839 (license license:expat)))
4840
4a9e0585
DT
4841(define-public ruby-pg
4842 (package
4843 (name "ruby-pg")
4db80f8b 4844 (version "1.1.3")
4a9e0585
DT
4845 (source
4846 (origin
4847 (method url-fetch)
4848 (uri (rubygems-uri "pg" version))
4849 (sha256
4850 (base32
4db80f8b 4851 "1pnjw3rspdfjssxyf42jnbsdlgri8ylysimp0s28wxb93k6ff2qb"))))
4a9e0585
DT
4852 (build-system ruby-build-system)
4853 (arguments
4854 '(#:test-target "spec"))
4855 (native-inputs
4856 `(("ruby-rake-compiler" ,ruby-rake-compiler)
4857 ("ruby-hoe" ,ruby-hoe)
4858 ("ruby-rspec" ,ruby-rspec)))
4859 (inputs
abd78128 4860 `(("postgresql" ,postgresql-9.6)))
4a9e0585
DT
4861 (synopsis "Ruby interface to PostgreSQL")
4862 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
4db80f8b 4863with PostgreSQL 9.0 and later.")
4a9e0585
DT
4864 (home-page "https://bitbucket.org/ged/ruby-pg")
4865 (license license:ruby)))
468e5657
DT
4866
4867(define-public ruby-byebug
4868 (package
4869 (name "ruby-byebug")
d5489a61 4870 (version "9.0.6")
468e5657
DT
4871 (source
4872 (origin
4873 (method url-fetch)
4874 (uri (rubygems-uri "byebug" version))
4875 (sha256
4876 (base32
d5489a61 4877 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
468e5657
DT
4878 (build-system ruby-build-system)
4879 (arguments
4880 '(#:tests? #f)) ; no tests
4881 (synopsis "Debugger for Ruby 2")
4882 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
4883TracePoint C API for execution control and the Debug Inspector C API for call
4884stack navigation. The core component provides support that front-ends can
4885build on. It provides breakpoint handling and bindings for stack frames among
4886other things and it comes with a command line interface.")
7bf837fd 4887 (home-page "https://github.com/deivid-rodriguez/byebug")
468e5657 4888 (license license:bsd-2)))
64b6ccc3 4889
5799bc2b
RW
4890(define-public ruby-netrc
4891 (package
4892 (name "ruby-netrc")
4893 (version "0.11.0")
4894 (source (origin
4895 (method url-fetch)
4896 (uri (rubygems-uri "netrc" version))
4897 (sha256
4898 (base32
4899 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
4900 (build-system ruby-build-system)
4901 (arguments
4902 `(#:phases
4903 (modify-phases %standard-phases
4904 (replace 'check
4905 ;; There is no Rakefile and minitest can only run one file at once,
4906 ;; so we have to iterate over all test files.
4907 (lambda _
9923d5a4
TGR
4908 (map (lambda (file)
4909 (invoke "ruby" "-Itest" file))
4910 (find-files "./test" "test_.*\\.rb")))))))
5799bc2b
RW
4911 (native-inputs
4912 `(("ruby-minitest" ,ruby-minitest)))
4913 (synopsis "Library to read and update netrc files")
4914 (description
4915 "This library can read and update netrc files, preserving formatting
4916including comments and whitespace.")
4917 (home-page "https://github.com/geemus/netrc")
4918 (license license:expat)))
4919
3a6989ce
RW
4920(define-public ruby-unf-ext
4921 (package
4922 (name "ruby-unf-ext")
4923 (version "0.0.7.1")
4924 (source (origin
4925 (method url-fetch)
4926 (uri (rubygems-uri "unf_ext" version))
4927 (sha256
4928 (base32
4929 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
4930 (build-system ruby-build-system)
b809cc9a
RW
4931 (arguments
4932 `(#:phases
4933 (modify-phases %standard-phases
4934 (add-after 'build 'build-ext
9923d5a4 4935 (lambda _ (invoke "rake" "compile:unf_ext"))))))
3a6989ce
RW
4936 (native-inputs
4937 `(("bundler" ,bundler)
4938 ("ruby-rake-compiler" ,ruby-rake-compiler)
4939 ("ruby-test-unit" ,ruby-test-unit)))
4940 (synopsis "Unicode normalization form support library")
4941 (description
4942 "This package provides unicode normalization form support for Ruby.")
4943 (home-page "https://github.com/knu/ruby-unf_ext")
4944 (license license:expat)))
4945
2632a067 4946(define-public ruby-tdiff
5071f17b
BW
4947 ;; Use a newer than released snapshot so that rspec-2 is not required.
4948 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
4949 (package
4950 (name "ruby-tdiff")
4951 (version (string-append "0.3.3-1." (string-take commit 8)))
4952 (source (origin
4953 (method git-fetch)
4954 (uri (git-reference
4955 (url "https://github.com/postmodern/tdiff.git")
4956 (commit commit)))
4957 (file-name (string-append name "-" version "-checkout"))
4958 (sha256
4959 (base32
4960 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
4961 (build-system ruby-build-system)
4962 (native-inputs
4963 `(("ruby-rspec" ,ruby-rspec)
4964 ("ruby-yard" ,ruby-yard)
4965 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
4966 (synopsis "Calculate the differences between two tree-like structures")
4967 (description
4968 "This library provides functions to calculate the differences between two
2632a067 4969tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
5071f17b
BW
4970 (home-page "https://github.com/postmodern/tdiff")
4971 (license license:expat))))
2632a067 4972
f60f5002 4973(define-public ruby-nokogiri-diff
5b0c223a
BW
4974 ;; Use a newer than released snapshot so that rspec-2 is not required.
4975 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
4976 (package
4977 (name "ruby-nokogiri-diff")
4978 (version (string-append "0.2.0-1." (string-take commit 8)))
4979 (source (origin
4980 (method git-fetch)
4981 (uri (git-reference
4982 (url "https://github.com/postmodern/nokogiri-diff.git")
4983 (commit commit)))
4984 (file-name (string-append name "-" version "-checkout"))
4985 (sha256
4986 (base32
4987 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
4988 (build-system ruby-build-system)
4989 (propagated-inputs
4990 `(("ruby-tdiff" ,ruby-tdiff)
4991 ("ruby-nokogiri" ,ruby-nokogiri)))
4992 (native-inputs
4993 `(("ruby-rspec" ,ruby-rspec)
4994 ("ruby-yard" ,ruby-yard)
4995 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
4996 (synopsis "Calculate the differences between two XML/HTML documents")
4997 (description
4998 "@code{Nokogiri::Diff} adds the ability to calculate the
f60f5002 4999differences (added or removed nodes) between two XML/HTML documents.")
5b0c223a
BW
5000 (home-page "https://github.com/postmodern/nokogiri-diff")
5001 (license license:expat))))
f60f5002 5002
6dc21310
CB
5003(define-public ruby-racc
5004 (package
5005 (name "ruby-racc")
5006 (version "1.4.14")
5007 (source
5008 (origin
5009 (method url-fetch)
5010 (uri (rubygems-uri "racc" version))
5011 (sha256
5012 (base32
5013 "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
5014 (build-system ruby-build-system)
5015 (native-inputs
5016 `(("ruby-hoe" ,ruby-hoe)
5017 ("ruby-rake-compiler" ,ruby-rake-compiler)))
5018 (synopsis "LALR(1) parser generator for Ruby")
5019 (description
5020 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
5021generates Ruby program.")
5022 (home-page "http://i.loveruby.net/en/projects/racc/")
5023 (license (list
5024 ;; Generally licensed under the LGPL2.1, and some files also
5025 ;; available under the same license as Ruby.
5026 license:lgpl2.1
5027 license:ruby))))
5028
64b6ccc3
DT
5029(define-public ruby-rack
5030 (package
5031 (name "ruby-rack")
288d2480 5032 (version "2.0.6")
64b6ccc3
DT
5033 (source
5034 (origin
5035 (method url-fetch)
1db791d5
BW
5036 ;; Download from GitHub so that the patch can be applied.
5037 (uri (string-append
5038 "https://github.com/rack/rack/archive/"
5039 version
5040 ".tar.gz"))
5041 (file-name (string-append name "-" version ".tar.gz"))
64b6ccc3
DT
5042 (sha256
5043 (base32
288d2480 5044 "0pb3g5ymvbf07xaxcn51dpqv3djlxavckp3qkxsjdxiqznb0d9p1"))
1db791d5
BW
5045 ;; Ignore test which fails inside the build environment but works
5046 ;; outside.
5047 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
64b6ccc3
DT
5048 (build-system ruby-build-system)
5049 (arguments
5050 '(#:phases
5051 (modify-phases %standard-phases
5052 (add-before 'check 'fix-tests
5053 (lambda _
5054 ;; A few of the tests use the length of a file on disk for
5055 ;; Content-Length and Content-Range headers. However, this file
5056 ;; has a shebang in it which an earlier phase patches, growing
5057 ;; the file size from 193 to 239 bytes when the store prefix is
5058 ;; "/gnu/store".
5059 (let ((size-diff (- (string-length (which "ruby"))
5060 (string-length "/usr/bin/env ruby"))))
5061 (substitute* '("test/spec_file.rb")
5062 (("193")
5063 (number->string (+ 193 size-diff)))
5064 (("bytes(.)22-33" all delimiter)
5065 (string-append "bytes"
5066 delimiter
5067 (number->string (+ 22 size-diff))
5068 "-"
5069 (number->string (+ 33 size-diff))))))
5070 #t)))))
5071 (native-inputs
1db791d5
BW
5072 `(("ruby-minitest" ,ruby-minitest)
5073 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
5074 ("which" ,which)))
5075 (propagated-inputs
5076 `(("ruby-concurrent" ,ruby-concurrent)))
64b6ccc3
DT
5077 (synopsis "Unified web application interface for Ruby")
5078 (description "Rack provides a minimal, modular and adaptable interface for
5079developing web applications in Ruby. By wrapping HTTP requests and responses,
5080it unifies the API for web servers, web frameworks, and software in between
5081into a single method call.")
2f3800e5 5082 (home-page "https://rack.github.io/")
64b6ccc3 5083 (license license:expat)))
62e4cc5a 5084
20a0f804
BW
5085(define-public ruby-rack-test
5086 (package
5087 (name "ruby-rack-test")
5088 (version "0.8.3")
5089 (source
5090 (origin
5091 (method url-fetch)
5092 (uri (rubygems-uri "rack-test" version))
5093 (sha256
5094 (base32
5095 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
5096 (build-system ruby-build-system)
5097 (arguments
5098 ;; Disable tests because of circular dependencies: requires sinatra,
5099 ;; which requires rack-protection, which requires rack-test. Instead
5100 ;; simply require the library.
5101 `(#:phases
5102 (modify-phases %standard-phases
5103 (replace 'check
5104 (lambda _
5105 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
5106 (propagated-inputs
5107 `(("ruby-rack" ,ruby-rack)))
5108 (synopsis "Testing API for Rack applications")
5109 (description
5110 "Rack::Test is a small, simple testing API for Rack applications. It can
5111be used on its own or as a reusable starting point for Web frameworks and
5112testing libraries to build on.")
5113 (home-page "https://github.com/rack-test/rack-test")
5114 (license license:expat)))
5115
a0a7e690
BW
5116(define-public ruby-rack-protection
5117 (package
5118 (name "ruby-rack-protection")
3355e49c 5119 (version "2.0.5")
a0a7e690
BW
5120 (source
5121 (origin
5122 (method url-fetch)
5123 (uri (rubygems-uri "rack-protection" version))
5124 (sha256
5125 (base32
3355e49c 5126 "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk"))))
a0a7e690
BW
5127 (build-system ruby-build-system)
5128 (arguments
fafeeaa2 5129 '(;; Tests missing from the gem.
a0a7e690
BW
5130 #:tests? #f))
5131 (propagated-inputs
5132 `(("ruby-rack" ,ruby-rack)))
5133 (native-inputs
5134 `(("bundler" ,bundler)
5135 ("ruby-rspec" ,ruby-rspec-2)
5136 ("ruby-rack-test" ,ruby-rack-test)))
5137 (synopsis "Rack middleware that protects against typical web attacks")
5138 (description "Rack middleware that can be used to protect against typical
5139web attacks. It can protect all Rack apps, including Rails. For instance, it
5140protects against cross site request forgery, cross site scripting,
5141clickjacking, directory traversal, session hijacking and IP spoofing.")
5142 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
5143 (license license:expat)))
5144
6edabcb2
CB
5145(define-public ruby-rainbow
5146 (package
5147 (name "ruby-rainbow")
5148 (version "3.0.0")
5149 (source
5150 (origin
5151 (method url-fetch)
5152 (uri (rubygems-uri "rainbow" version))
5153 (sha256
5154 (base32
5155 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
5156 (build-system ruby-build-system)
5157 (arguments
5158 '(#:phases
5159 (modify-phases %standard-phases
5160 ;; Run rspec directly, to avoid requiring Rubocop which is used from
5161 ;; the Rakefile.
5162 (replace 'check
5163 (lambda* (#:key tests? #:allow-other-keys)
5164 (when tests?
5165 (invoke "rspec"))
5166 #t)))))
5167 (native-inputs
5168 `(("bundler" ,bundler)
5169 ("ruby-rspec" ,ruby-rspec)))
5170 (synopsis "Colorize printed text on ANSI terminals")
5171 (description
5172 "@code{rainbow} provides a string presenter object to colorize strings by
5173wrapping them in ANSI escape codes.")
5174 (home-page "https://github.com/sickill/rainbow")
79193b20
CB
5175 (license license:expat)))
5176
6188d643
CB
5177(define-public ruby-rr
5178 (package
5179 (name "ruby-rr")
5180 (version "1.2.1")
5181 (source
5182 (origin
5183 (method url-fetch)
5184 (uri (rubygems-uri "rr" version))
5185 (sha256
5186 (base32
5187 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
5188 (build-system ruby-build-system)
5189 (arguments
5190 '(#:tests? #f)) ; test files not included
5191 (native-inputs
5192 `(("bundler" ,bundler)
5193 ("ruby-rspec" ,ruby-rspec)))
5194 (synopsis "Ruby test double framework")
5195 (description
5196 "RR is a test double framework that features a rich selection of double
5197techniques and a terse syntax.")
5198 (home-page "https://rr.github.io/rr/")
5199 (license license:expat)))
5200
79193b20
CB
5201(define-public ruby-rest-client
5202 (package
5203 (name "ruby-rest-client")
5204 (version "2.0.2")
5205 (source
5206 (origin
5207 (method url-fetch)
5208 (uri (rubygems-uri "rest-client" version))
5209 (sha256
5210 (base32
5211 "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
5212 (build-system ruby-build-system)
5213 (arguments
5214 '(#:phases
5215 (modify-phases %standard-phases
5216 (add-before 'check 'remove-unnecessary-development-dependencies
5217 (lambda _
5218 (substitute* "rest-client.gemspec"
5219 ;; Remove rubocop as it's unused. Rubocop also indirectly
5220 ;; depends on this package through ruby-parser and ruby-ast so
5221 ;; this avoids a dependency loop.
5222 ((".*rubocop.*") "\n")
5223 ;; Remove pry as it's unused, it's a debugging tool
5224 ((".*pry.*") "\n")
5225 ;; Remove an unnecessarily strict rdoc dependency
5226 ((".*rdoc.*") "\n"))
5227 #t))
5228 (add-before 'check 'delete-network-dependent-tests
5229 (lambda _
5230 (delete-file "spec/integration/request_spec.rb")
5231 (delete-file "spec/integration/httpbin_spec.rb")
5232 #t)))))
5233 (propagated-inputs
5234 `(("ruby-http-cookie" ,ruby-http-cookie)
5235 ("ruby-mime-types" ,ruby-mime-types)
5236 ("ruby-netrc" ,ruby-netrc)))
5237 (native-inputs
5238 `(("bundler" ,bundler)
5239 ("ruby-webmock", ruby-webmock-2)
5240 ("ruby-rspec", ruby-rspec)))
5241 (synopsis "Simple HTTP and REST client for Ruby")
5242 (description
5243 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
5244inspired by the Sinatra microframework style of specifying actions:
5245@code{get}, @code{put}, @code{post}, @code{delete}.")
5246 (home-page "https://github.com/rest-client/rest-client")
6edabcb2
CB
5247 (license license:expat)))
5248
5d8fe6de
CB
5249(define-public ruby-rubocop
5250 (package
5251 (name "ruby-rubocop")
5252 (version "0.64.0")
5253 (source
5254 (origin
5255 (method url-fetch)
5256 (uri (rubygems-uri "rubocop" version))
5257 (sha256
5258 (base32
5259 "07shi6kncwhkvlh9ci9rgccrjsq4448hbic3yrakh2w65ppynvbj"))))
5260 (build-system ruby-build-system)
5261 (arguments
5262 '(;; No included tests
5263 #:tests? #f))
5264 (propagated-inputs
5265 `(("ruby-parser" ,ruby-parser)
5266 ("ruby-powerpack" ,ruby-powerpack)
5267 ("ruby-rainbow" ,ruby-rainbow)
5268 ("ruby-progressbar" ,ruby-progressbar)
5269 ("ruby-parallel" ,ruby-parallel)
5270 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
5271 ("ruby-unicode-display-width" ,ruby-unicode-display-width)))
5272 (synopsis "Ruby code style checking tool")
5273 (description
5274 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
5275the community-driven Ruby Style Guide.")
5276 (home-page "https://github.com/rubocop-hq/rubocop")
5277 (license license:expat)))
5278
6ef85256
BW
5279(define-public ruby-contest
5280 (package
5281 (name "ruby-contest")
5282 (version "0.1.3")
5283 (source
5284 (origin
5285 (method url-fetch)
5286 (uri (rubygems-uri "contest" version))
5287 (sha256
5288 (base32
5289 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
5290 (build-system ruby-build-system)
5291 (synopsis "Write declarative tests using nested contexts")
5292 (description
5293 "Contest allows writing declarative @code{Test::Unit} tests using nested
5294contexts without performance penalties.")
5295 (home-page "https://github.com/citrusbyte/contest")
5296 (license license:expat)))
5297
c4550f75
BW
5298(define-public ruby-creole
5299 (package
5300 (name "ruby-creole")
5301 (version "0.5.0")
5302 (source
5303 (origin
5304 (method url-fetch)
5305 (uri (rubygems-uri "creole" version))
5306 (sha256
5307 (base32
5308 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
5309 (build-system ruby-build-system)
5310 (native-inputs
5311 `(("ruby-bacon" ,ruby-bacon)))
5312 (synopsis "Creole markup language converter")
5313 (description
5314 "Creole is a lightweight markup language and this library for converting
5315creole to @code{HTML}.")
5316 (home-page "https://github.com/minad/creole")
5317 (license license:ruby)))
5318
6aaa815e
PP
5319(define-public ruby-docile
5320 (package
5321 (name "ruby-docile")
5322 (version "1.1.5")
5323 (source
5324 (origin
5325 (method url-fetch)
5326 (uri (rubygems-uri "docile" version))
5327 (sha256
5328 (base32
5329 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
5330 (build-system ruby-build-system)
5331 (arguments
5332 '(#:tests? #f)) ; needs github-markup, among others
5333 (synopsis "Ruby EDSL helper library")
5334 (description "Docile is a Ruby library that provides an interface for
5335creating embedded domain specific languages (EDSLs) that manipulate existing
5336Ruby classes.")
5337 (home-page "https://ms-ati.github.io/docile/")
5338 (license license:expat)))
5339
44514637 5340(define-public ruby-gherkin
62e4cc5a 5341 (package
44514637 5342 (name "ruby-gherkin")
aada5f6f 5343 (version "5.1.0")
62e4cc5a
PP
5344 (source
5345 (origin
5346 (method url-fetch)
44514637 5347 (uri (rubygems-uri "gherkin" version))
62e4cc5a
PP
5348 (sha256
5349 (base32
aada5f6f 5350 "1cgcdchwwdm10rsk44frjwqd4ihprhxjbm799nscqy2q1raqfj5s"))))
62e4cc5a
PP
5351 (build-system ruby-build-system)
5352 (native-inputs
5353 `(("bundler" ,bundler)))
5354 (arguments
5355 '(#:tests? #f)) ; needs simplecov, among others
5356 (synopsis "Gherkin parser for Ruby")
44514637 5357 (description "Gherkin is a parser and compiler for the Gherkin language.
aada5f6f
CB
5358It is intended be used by all Cucumber implementations to parse
5359@file{.feature} files.")
5360 (home-page "https://github.com/cucumber-attic/gherkin")
62e4cc5a 5361 (license license:expat)))
cd89fecb 5362
15b16c2c
CB
5363(define-public ruby-aruba
5364 (package
5365 (name "ruby-aruba")
5366 (version "0.14.8")
5367 (source
5368 (origin
5369 (method url-fetch)
5370 (uri (rubygems-uri "aruba" version))
5371 (sha256
5372 (base32
5373 "0zdd81l1lp0x78sxa6kkfqclpj5il3xl70nz05wqv2sfzzhqydxh"))))
5374 (build-system ruby-build-system)
5375 (arguments
5376 '(#:test-target "spec"
5377 #:phases
5378 (modify-phases %standard-phases
5379 (add-after 'unpack 'patch
5380 (lambda _
5381 (substitute* "spec/aruba/api_spec.rb"
5382 ;; This resolves some errors in the specs
5383 ;;
5384 ;; undefined method `parse' for Time:Class
5385 (("require 'spec_helper'")
5386 "require 'spec_helper'\nrequire 'time'"))
5387 ;; Avoid shebang issues in this spec file
5388 (substitute* "spec/aruba/matchers/command_spec.rb"
5389 (("/usr/bin/env bash")
5390 (which "bash")))
5391 #t))
5392 (add-before 'check 'remove-unnecessary-dependencies
5393 (lambda _
5394 (substitute* "Gemfile"
5395 ((".*byebug.*") "\n")
5396 ((".*pry.*") "\n")
5397 ((".*yaml.*") "\n")
5398 ((".*bcat.*") "\n")
5399 ((".*kramdown.*") "\n")
5400 ((".*rubocop.*") "\n")
5401 ((".*cucumber-pro.*") "\n")
5402 ((".*cucumber.*") "\n")
5403 ((".*license_finder.*") "\n")
5404 ((".*rake.*") "gem 'rake'\n")
5405 ((".*simplecov.*") "\n")
5406 ((".*relish.*") "\n"))
5407 (substitute* "spec/spec_helper.rb"
5408 ((".*simplecov.*") "")
5409 (("^SimpleCov.*") ""))
5410 (substitute* "aruba.gemspec"
5411 (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
5412 "spec.add_runtime_dependency 'cucumber'"))
5413 #t))
5414 (add-before 'check 'set-home
5415 (lambda _ (setenv "HOME" "/tmp") #t)))))
5416 (native-inputs
5417 `(("bundler" ,bundler)
5418 ("ruby-rspec" ,ruby-rspec)
5419 ("ruby-fuubar" ,ruby-fuubar)))
5420 (propagated-inputs
5421 `(("ruby-childprocess" ,ruby-childprocess)
5422 ("ruby-contracts" ,ruby-contracts)
5423 ("ruby-cucumber" ,ruby-cucumber)
5424 ("ruby-ffi" ,ruby-ffi)
5425 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
5426 ("ruby-thor" ,ruby-thor)
5427 ("ruby-yard" ,ruby-yard)))
5428 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
5429 (description
5430 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
5431command-line applications. It supports applications written in any
5432language.")
5433 (home-page "https://github.com/cucumber/aruba")
5434 (license license:expat)))
5435
5436;; A version of ruby-aruba without tests run so that circular dependencies can
5437;; be avoided.
5438(define ruby-aruba-without-tests
5439 (package
5440 (inherit ruby-aruba)
5441 (arguments '(#:tests? #f))
5442 (propagated-inputs
5443 `(("ruby-cucumber" ,ruby-cucumber-without-tests)
5444 ,@(alist-delete "ruby-cucumber"
5445 (package-propagated-inputs ruby-aruba))))
5446 (native-inputs '())))
5447
5448(define-public ruby-cucumber
5449 (package
5450 (name "ruby-cucumber")
5451 (version "3.1.2")
5452 (source
5453 (origin
5454 (method git-fetch)
5455 (uri (git-reference
5456 (url "https://github.com/cucumber/cucumber-ruby.git")
5457 (commit (string-append "v" version))))
5458 (file-name (git-file-name name version))
5459 (sha256
5460 (base32
5461 "0764wp2cjg60qa3l69q1dxda5g06a01n5w92szqbf89d2hgl47n3"))))
5462 (build-system ruby-build-system)
5463 (arguments
5464 '(#:test-target "spec"
5465 #:phases
5466 (modify-phases %standard-phases
5467 ;; Don't run or require rubocop, the code linting tool, as this is a
5468 ;; bit unnecessary.
5469 (add-after 'unpack 'dont-run-rubocop
5470 (lambda _
5471 (substitute* "Rakefile"
5472 ((".*rubocop/rake\\_task.*") "")
5473 ((".*RuboCop.*") ""))
5474 #t)))))
5475 (propagated-inputs
5476 `(("ruby-builder" ,ruby-builder)
5477 ("ruby-cucumber-core" ,ruby-cucumber-core)
5478 ("ruby-cucumber-wire" ,ruby-cucumber-wire)
5479 ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
5480 ("ruby-diff-lcs" ,ruby-diff-lcs)
5481 ("ruby-gherkin" ,ruby-gherkin)
5482 ("ruby-multi-json" ,ruby-multi-json)
5483 ("ruby-multi-test" ,ruby-multi-test)))
5484 (native-inputs
5485 `(("bundler" ,bundler)
5486 ;; Use a untested version of aruba, to avoid a circular dependency, as
5487 ;; ruby-aruba depends on ruby-cucumber.
5488 ("ruby-aruba", ruby-aruba-without-tests)
5489 ("ruby-rspec" ,ruby-rspec)
5490 ("ruby-pry" ,ruby-pry)
5491 ("ruby-nokogiri" ,ruby-nokogiri)))
5492 (synopsis "Describe automated tests in plain language")
5493 (description
5494 "Cucumber is a tool for running automated tests written in plain
5495language. It's designed to support a Behaviour Driven Development (BDD)
5496software development workflow.")
5497 (home-page "https://cucumber.io/")
5498 (license license:expat)))
5499
5500(define ruby-cucumber-without-tests
5501 (package (inherit ruby-cucumber)
5502 (arguments
5503 '(#:tests? #f))
5504 (native-inputs
5505 '())))
5506
cd89fecb
PP
5507(define-public ruby-cucumber-core
5508 (package
5509 (name "ruby-cucumber-core")
5cd047e8
CB
5510 ;; Stick to major version 3, until version 4 of Cucumber is released.
5511 (version "3.2.1")
cd89fecb
PP
5512 (source
5513 (origin
5514 (method url-fetch)
5515 (uri (rubygems-uri "cucumber-core" version))
5516 (sha256
5517 (base32
5cd047e8 5518 "1iavlh8hqj9lwljbpkw06259gdicbr1bdb6pbj5yy3n8szgr8k3c"))))
cd89fecb
PP
5519 (build-system ruby-build-system)
5520 (propagated-inputs
5cd047e8
CB
5521 `(("ruby-backports" ,ruby-backports)
5522 ("ruby-gherkin" ,ruby-gherkin)
5523 ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
cd89fecb
PP
5524 (native-inputs
5525 `(("bundler" ,bundler)))
5526 (arguments
5527 '(#:tests? #f)) ; needs simplecov, among others
5528 (synopsis "Core library for the Cucumber BDD app")
5529 (description "Cucumber is a tool for running automated tests
5530written in plain language. Because they're written in plain language,
5531they can be read by anyone on your team. Because they can be read by
5532anyone, you can use them to help improve communication, collaboration
5533and trust on your team.")
5534 (home-page "https://cucumber.io/")
5535 (license license:expat)))
212d563d 5536
fb1a8954
CB
5537(define-public ruby-cucumber-expressions
5538 (package
5539 (name "ruby-cucumber-expressions")
5540 (version "6.0.1")
5541 (source
5542 (origin
5543 (method url-fetch)
5544 (uri (rubygems-uri "cucumber-expressions" version))
5545 (sha256
5546 (base32
5547 "0zwmv6hznyz9vk81f5dhwcr9jhxx2vmbk8yyazayvllvhy0fkpdw"))))
5548 (build-system ruby-build-system)
5549 (arguments
5550 '(#:test-target "spec"))
5551 (native-inputs
5552 `(("bundler" ,bundler)
5553 ("ruby-rspec" ,ruby-rspec)
5554 ("ruby-simplecov" ,ruby-simplecov)))
5555 (synopsis "Simpler alternative to Regular Expressions")
5556 (description "Cucumber Expressions offer similar functionality to Regular
5557Expressions, with a syntax that is easier to read and write. Cucumber
5558Expressions are extensible with parameter types.")
5559 (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
5560 (license license:expat)))
5561
ce872770
CB
5562(define-public ruby-cucumber-wire
5563 (package
5564 (name "ruby-cucumber-wire")
5565 ;; Package version 0.0.1 initially, as this is what's needed by Cucumber
5566 ;; 3, and Cucumber 4 hasn't been released yet.
5567 (version "0.0.1")
5568 (source
5569 (origin
5570 (method url-fetch)
5571 (uri (rubygems-uri "cucumber-wire" version))
5572 (sha256
5573 (base32
5574 "09ymvqb0sbw2if1nxg8rcj33sf0va88ancq5nmp8g01dfwzwma2f"))))
5575 (build-system ruby-build-system)
5576 (arguments
5577 '(;; TODO: Currently, the tests can't be run as cucumber is required,
5578 ;; which would lead to a circular dependency.
5579 #:tests? #f
5580 #:test-target "default"
5581 #:phases
5582 (modify-phases %standard-phases
5583 (add-before 'check 'set-CUCUMBER_USE_RELEASED_GEMS
5584 (lambda _
5585 (setenv "CUCUMBER_USE_RELEASED_GEMS" "true")
5586 #t)))))
5587 (native-inputs
5588 `(("bundler" ,bundler)
5589 ("ruby-rspec" ,ruby-rspec)))
5590 (synopsis "Cucumber wire protocol plugin")
5591 (description
5592 "Cucumber's wire protocol allows step definitions to be implemented and
5593invoked on any platform.")
5594 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
5595 (license license:expat)))
5596
0ce8f344
CB
5597(define-public ruby-cucumber-tag-expressions
5598 (package
5599 (name "ruby-cucumber-tag-expressions")
5600 (version "1.1.1")
5601 (source
5602 (origin
5603 (method url-fetch)
5604 (uri (rubygems-uri "cucumber-tag_expressions" version))
5605 (sha256
5606 (base32
5607 "0cvmbljybws0qzjs1l67fvr9gqr005l8jk1ni5gcsis9pfmqh3vc"))))
5608 (build-system ruby-build-system)
5609 (arguments
5610 '(#:phases
5611 (modify-phases %standard-phases
5612 (replace 'check
5613 (lambda _
5614 (invoke "rspec")
5615 #t)))))
5616 (native-inputs
5617 `(("ruby-rspec" ,ruby-rspec)))
5618 (synopsis "Cucumber tag expressions for Ruby")
5619 (description
5620 "Cucumber tag expression parser for Ruby. A tag expression is an infix
5621boolean expression used by Cucumber.")
5622 (home-page "https://github.com/cucumber/tag-expressions-ruby")
5623 (license license:expat)))
5624
73a5aff7
CB
5625(define-public ruby-bindex
5626 (package
5627 (name "ruby-bindex")
5628 (version "0.5.0")
5629 (source
5630 (origin
5631 (method url-fetch)
5632 (uri (rubygems-uri "bindex" version))
5633 (sha256
5634 (base32
5635 "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
5636 (build-system ruby-build-system)
5637 (arguments
5638 '(#:test-target "default"))
5639 (native-inputs
5640 `(("bundler" ,bundler)
5641 ("ruby-rake-compiler" ,ruby-rake-compiler)))
5642 (synopsis "Provides access for bindings relating to Ruby exceptions")
5643 (description
5644 "@code{bindex} provides a way to access the bindings that relate to
5645exceptions in Ruby, providing more information about the context in which the
5646exception occurred.")
5647 (home-page "https://github.com/gsamokovarov/bindex")
5648 (license license:expat)))
5649
212d563d
PP
5650(define-public ruby-bio-logger
5651 (package
5652 (name "ruby-bio-logger")
5653 (version "1.0.1")
5654 (source
5655 (origin
5656 (method url-fetch)
5657 (uri (rubygems-uri "bio-logger" version))
5658 (sha256
5659 (base32
5660 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
5661 (build-system ruby-build-system)
5662 (arguments
5663 `(#:tests? #f)) ; rake errors, missing shoulda
5664 (propagated-inputs
5665 `(("ruby-log4r" ,ruby-log4r)))
5666 (synopsis "Log4r wrapper for Ruby")
5667 (description "Bio-logger is a wrapper around Log4r adding extra logging
5668features such as filtering and fine grained logging.")
5669 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
5670 (license license:expat)))
07f61cb2 5671
2db0f9c8
BW
5672(define-public ruby-yajl-ruby
5673 (package
5674 (name "ruby-yajl-ruby")
5675 (version "1.4.1")
5676 (source
5677 (origin
5678 (method url-fetch)
5679 (uri (rubygems-uri "yajl-ruby" version))
5680 (sha256
5681 (base32
5682 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
5683 (build-system ruby-build-system)
5684 (arguments
5685 '(#:test-target "spec"
5686 #:phases
5687 (modify-phases %standard-phases
5688 (add-before 'check 'patch-test-to-update-load-path
5689 (lambda _
5690 (substitute* "spec/parsing/large_number_spec.rb"
5691 (("require \"yajl\"")
5692 "$LOAD_PATH << 'lib'; require 'yajl'"))
5693 #t)))))
5694 (native-inputs
5695 `(("ruby-rake-compiler" ,ruby-rake-compiler)
5696 ("ruby-rspec" ,ruby-rspec)))
5697 (synopsis "Streaming JSON parsing and encoding library for Ruby")
5698 (description
5699 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
5700is compatible with the JSON gem, so yajl-ruby can act as a drop in
5701replacement.
5702
5703A modified copy of yajl is used, and included in the package.")
5704 (home-page "https://github.com/brianmario/yajl-ruby")
5705 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
5706 license:bsd-3)))) ; Included, modified copy of yajl
5707
07f61cb2 5708(define-public ruby-yard
6499893e
BW
5709 (package
5710 (name "ruby-yard")
50135ff8 5711 (version "0.9.16")
6499893e
BW
5712 (source
5713 (origin
5714 (method url-fetch)
5715 ;; Tests do not pass if we build from the distributed gem.
5716 (uri (string-append "https://github.com/lsegal/yard/archive/v"
3a3e3099 5717 version ".tar.gz"))
6499893e
BW
5718 (file-name (string-append name "-" version ".tar.gz"))
5719 (sha256
5720 (base32
50135ff8 5721 "0sqpbayy9sb406jh0zqg6qha1xds863qz9531dh6vp58hc00clfq"))))
6499893e
BW
5722 (build-system ruby-build-system)
5723 (arguments
5724 `(#:phases
5725 (modify-phases %standard-phases
5726 (replace 'check
5727 (lambda _
5728 ;; $HOME needs to be set to somewhere writeable for tests to run
5729 (setenv "HOME" "/tmp")
5730 ;; Run tests without using 'rake' to avoid dependencies.
9923d5a4 5731 (invoke "rspec"))))))
6499893e
BW
5732 (native-inputs
5733 `(("ruby-rspec" ,ruby-rspec)
5734 ("ruby-rack" ,ruby-rack)))
5735 (synopsis "Documentation generation tool for Ruby")
5736 (description
5737 "YARD is a documentation generation tool for the Ruby programming
07f61cb2
BW
5738language. It enables the user to generate consistent, usable documentation
5739that can be exported to a number of formats very easily, and also supports
5740extending for custom Ruby constructs such as custom class level definitions.")
2f3800e5 5741 (home-page "https://yardoc.org")
6499893e 5742 (license license:expat)))
2cbcd23a 5743
ad686ef3
RW
5744(define-public ruby-clap
5745 (package
5746 (name "ruby-clap")
5747 (version "1.0.0")
5748 (source (origin
5749 (method url-fetch)
5750 (uri (rubygems-uri "clap" version))
5751 (sha256
5752 (base32
5753 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
5754 (build-system ruby-build-system)
5755 ;; Clap needs cutest for running tests, but cutest needs clap.
5756 (arguments `(#:tests? #f))
5757 (synopsis "Command line argument parsing for simple applications")
5758 (description
5759 "Clap provides command line argument parsing features. It covers the
5760simple case of executing code based on the flags or parameters passed.")
5761 (home-page "https://github.com/djanowski/cutest")
0c80451e
RW
5762 (license license:expat)))
5763
5764(define-public ruby-cutest
5765 (package
5766 (name "ruby-cutest")
5767 (version "1.2.2")
5768 (source (origin
5769 (method url-fetch)
5770 (uri (rubygems-uri "cutest" version))
5771 (sha256
5772 (base32
5773 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
5774 (build-system ruby-build-system)
5775 (propagated-inputs
5776 `(("ruby-clap" ,ruby-clap)))
5777 (synopsis "Run tests in separate processes")
5778 (description
5779 "Cutest runs tests in separate processes to avoid shared state.")
5780 (home-page "https://github.com/djanowski/cutest")
ad686ef3
RW
5781 (license license:expat)))
5782
ac09beba
RW
5783(define-public ruby-pygmentize
5784 (package
5785 (name "ruby-pygmentize")
5786 (version "0.0.3")
5787 (source (origin
5788 (method url-fetch)
5789 (uri (rubygems-uri "pygmentize" version))
5790 (sha256
5791 (base32
5792 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
5793 (build-system ruby-build-system)
5794 (arguments
5795 `(#:phases
5796 (modify-phases %standard-phases
5797 (add-after 'unpack 'fix-pygmentize-path
5798 (lambda _
5799 (substitute* "lib/pygmentize.rb"
5800 (("\"/usr/bin/env python.*")
5801 (string-append "\"" (which "pygmentize") "\"\n")))
5802 #t))
5803 (add-after 'build 'do-not-use-vendor-directory
5804 (lambda _
5805 ;; Remove bundled pygments sources
5806 ;; FIXME: ruby-build-system does not support snippets.
5807 (delete-file-recursively "vendor")
5808 (substitute* "pygmentize.gemspec"
5809 (("\"vendor/\\*\\*/\\*\",") ""))
5810 #t)))))
5811 (inputs
5812 `(("pygments" ,python-pygments)))
5813 (native-inputs
5814 `(("ruby-cutest" ,ruby-cutest)
5815 ("ruby-nokogiri" ,ruby-nokogiri)))
5816 (synopsis "Thin Ruby wrapper around pygmentize")
5817 (description
5818 "Pygmentize provides a simple way to call pygmentize from within a Ruby
5819application.")
5820 (home-page "https://github.com/djanowski/pygmentize")
5821 (license license:expat)))
5822
2cbcd23a
DT
5823(define-public ruby-eventmachine
5824 (package
5825 (name "ruby-eventmachine")
c207fa5e 5826 (version "1.2.7")
2cbcd23a
DT
5827 (source
5828 (origin
5829 (method url-fetch)
5830 (uri (rubygems-uri "eventmachine" version))
5831 (sha256
5832 (base32
c207fa5e 5833 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
2cbcd23a
DT
5834 (build-system ruby-build-system)
5835 (arguments
c5d269fb 5836 '(#:tests? #f)) ; test suite tries to connect to google.com
2cbcd23a
DT
5837 (native-inputs
5838 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
5839 (synopsis "Single-threaded network event framework for Ruby")
5840 (description
5841 "EventMachine implements a single-threaded engine for arbitrary network
5842communications. EventMachine wraps all interactions with sockets, allowing
5843programs to concentrate on the implementation of network protocols. It can be
5844used to create both network servers and clients.")
24a26227
TGR
5845 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
5846 (home-page "https://github.com/eventmachine/eventmachine")
2cbcd23a 5847 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
7d3a1a2d 5848
e218b0c8
BW
5849(define-public ruby-ruby-engine
5850 (package
5851 (name "ruby-ruby-engine")
5852 (version "1.0.1")
5853 (source
5854 (origin
5855 (method url-fetch)
5856 (uri (rubygems-uri "ruby_engine" version))
5857 (sha256
5858 (base32
5859 "1d0sd4q50zkcqhr395wj1wpn2ql52r0fpwhzjfvi1bljml7k546v"))))
5860 (build-system ruby-build-system)
5861 (arguments
5862 `(#:phases
5863 (modify-phases %standard-phases
5864 (add-before 'check 'clean-up
5865 (lambda _
5866 (delete-file "Gemfile.lock")
5867 (substitute* "ruby_engine.gemspec"
5868 ;; Remove unnecessary imports that would entail further
5869 ;; dependencies.
5870 ((".*<rdoc.*") "")
5871 ((".*<rubygems-tasks.*") "")
5872 ;; Remove extraneous .gem file
5873 (("\\\"pkg/ruby_engine-1.0.0.gem\\\",") "")
5874 ;; Soften rake dependency
5875 (("%q<rake>.freeze, \\[\\\"~> 10.0\\\"\\]")
5876 "%q<rake>.freeze, [\">= 10.0\"]")
5877 ;; Soften the rspec dependency
5878 (("%q<rspec>.freeze, \\[\\\"~> 2.4\\\"\\]")
5879 "%q<rspec>.freeze, [\">= 2.4\"]"))
5880 (substitute* "Rakefile"
5881 (("require 'rubygems/tasks'") "")
5882 (("Gem::Tasks.new") ""))
5883 ;; Remove extraneous .gem file that otherwise gets installed.
5884 (delete-file "pkg/ruby_engine-1.0.0.gem")
5885 #t)))))
5886 (native-inputs
5887 `(("bundler" ,bundler)
5888 ("ruby-rake" ,ruby-rake)
5889 ("ruby-rspec" ,ruby-rspec)))
5890 (synopsis "Simplifies checking for Ruby implementation")
5891 (description
5892 "@code{ruby_engine} provides an RubyEngine class that can be used to
5893check which implementation of Ruby is in use. It can provide the interpreter
5894name and provides query methods such as @{RubyEngine.mri?}.")
5895 (home-page "https://github.com/janlelis/ruby_engine")
5896 (license license:expat)))
5897
8092e333
BW
5898(define-public ruby-turn
5899 (package
5900 (name "ruby-turn")
5901 (version "0.9.7")
5902 (source
5903 (origin
5904 (method url-fetch)
5905 (uri (rubygems-uri "turn" version))
5906 (sha256
5907 (base32
5908 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
5909 (build-system ruby-build-system)
5910 (arguments
5911 `(#:phases
5912 (modify-phases %standard-phases
5913 ;; Tests fail because turn changes its environment so can no longer
5914 ;; find test/unit. Instead simply test if the executable runs
5915 ;; without issue.
5916 (replace 'check
5917 (lambda _
9923d5a4 5918 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
8092e333
BW
5919 (propagated-inputs
5920 `(("ruby-ansi" ,ruby-ansi)
5921 ("ruby-minitest" ,ruby-minitest-4)))
5922 (synopsis "Alternate set of alternative runners for MiniTest")
5923 (description
5924 "TURN provides a set of alternative runners for MiniTest which are both
5925colorful and informative. TURN displays each test on a separate line with
5926failures being displayed immediately instead of at the end of the tests. Note
5927that TURN is no longer being maintained.")
5928 (home-page "http://rubygems.org/gems/turn")
5929 (license license:expat)))
5930
8279b1d3
CB
5931(define-public ruby-mimemagic
5932 (package
5933 (name "ruby-mimemagic")
5934 (version "0.3.2")
5935 (source
5936 (origin
5937 (method url-fetch)
5938 (uri (rubygems-uri "mimemagic" version))
5939 (sha256
5940 (base32
5941 "00ibc1mhvdfyfyl103xwb45621nwyqxf124cni5hyfhag0fn1c3q"))))
5942 (build-system ruby-build-system)
5943 (arguments
5944 '(#:phases
5945 (modify-phases %standard-phases
5946 ;; This phase breaks the tests, as it patches some of the test data.
5947 (delete 'patch-source-shebangs))))
5948 (native-inputs
5949 `(("ruby-bacon" ,ruby-bacon)))
5950 (synopsis "Ruby library for MIME detection by extension or content")
5951 (description
5952 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
5953extension or content, using the freedesktop.org.xml shared-mime-info
5954database.")
5955 (home-page "https://github.com/minad/mimemagic")
5956 (license license:expat)))
5957
32d1c06f
BW
5958(define-public ruby-mime-types-data
5959 (package
5960 (name "ruby-mime-types-data")
f49511db 5961 (version "3.2016.0521")
32d1c06f
BW
5962 (source
5963 (origin
5964 (method url-fetch)
5965 (uri (rubygems-uri "mime-types-data" version))
5966 (sha256
5967 (base32
f49511db 5968 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
32d1c06f
BW
5969 (build-system ruby-build-system)
5970 (native-inputs
5971 `(("ruby-hoe" ,ruby-hoe)))
5972 (synopsis "Registry for information about MIME media type definitions")
5973 (description
5974 "@code{mime-types-data} provides a registry for information about
5975Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
5976be used with the Ruby mime-types library or other software to determine
5977defined filename extensions for MIME types, or to use filename extensions to
5978look up the likely MIME type definitions.")
5979 (home-page "https://github.com/mime-types/mime-types-data/")
5980 (license license:expat)))
5981
d39b606c
BW
5982(define-public ruby-mime-types
5983 (package
5984 (name "ruby-mime-types")
803bcc81 5985 (version "3.1")
d39b606c
BW
5986 (source
5987 (origin
5988 (method url-fetch)
5989 (uri (rubygems-uri "mime-types" version))
5990 (sha256
5991 (base32
803bcc81 5992 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
d39b606c
BW
5993 (build-system ruby-build-system)
5994 (propagated-inputs
5995 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
5996 (native-inputs
5997 `(("ruby-hoe" ,ruby-hoe)
5998 ("ruby-fivemat" ,ruby-fivemat)
5999 ("ruby-minitest-focus" ,ruby-minitest-focus)
6000 ("ruby-minitest-rg" ,ruby-minitest-rg)
803bcc81
BW
6001 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
6002 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
d39b606c
BW
6003 (synopsis "Library and registry for MIME content type definitions")
6004 (description "The mime-types library provides a library and registry for
6005information about Multipurpose Internet Mail Extensions (MIME) content type
6006definitions. It can be used to determine defined filename extensions for MIME
6007types, or to use filename extensions to look up the likely MIME type
6008definitions.")
6009 (home-page "https://github.com/mime-types/ruby-mime-types")
6010 (license license:expat)))
6011
eb5e0bd9
BW
6012(define-public ruby-fivemat
6013 (package
6014 (name "ruby-fivemat")
c664ebcc 6015 (version "1.3.7")
eb5e0bd9
BW
6016 (source
6017 (origin
6018 (method url-fetch)
6019 (uri (rubygems-uri "fivemat" version))
6020 (sha256
6021 (base32
c664ebcc 6022 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
eb5e0bd9
BW
6023 (build-system ruby-build-system)
6024 (arguments
6025 `(#:tests? #f)) ; no tests
6026 (synopsis "Each test file given its own line of dots")
6027 (description
6028 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
6029its own line of dots during testing. It aims to provide test output that is
6030neither too verbose nor too minimal.")
6031 (home-page "https://github.com/tpope/fivemat")
6032 (license license:expat)))
6033
4fea500b
BW
6034(define-public ruby-sqlite3
6035 (package
6036 (name "ruby-sqlite3")
cba53c60 6037 (version "1.3.13")
4fea500b
BW
6038 (source
6039 (origin
6040 (method url-fetch)
6041 (uri (rubygems-uri "sqlite3" version))
6042 (sha256
6043 (base32
cba53c60 6044 "01ifzp8nwzqppda419c9wcvr8n82ysmisrs0hph9pdmv1lpa4f5i"))))
4fea500b
BW
6045 (build-system ruby-build-system)
6046 (arguments
6047 `(#:phases
6048 (modify-phases %standard-phases
54a93355
MB
6049 (add-before 'check 'adjust-failing-test
6050 (lambda _
6051 ;; XXX: This test fails with SQLite versions >= 3.21.
6052 ;; See <https://github.com/sparklemotion/sqlite3-ruby/issues/226>.
6053 (substitute* "test/test_integration_resultset.rb"
6054 (("\"integer\", \"text\"") "\"INTEGER\", \"text\""))
6055 #t))
4fea500b
BW
6056 (add-before 'check 'add-gemtest-file
6057 ;; This file exists in the repository but is not distributed.
9923d5a4 6058 (lambda _ (invoke "touch" ".gemtest"))))))
4fea500b
BW
6059 (inputs
6060 `(("sqlite" ,sqlite)))
6061 (native-inputs
6062 `(("ruby-hoe" ,ruby-hoe)
6063 ("ruby-rake-compiler" ,ruby-rake-compiler)
6064 ("ruby-mini-portile" ,ruby-mini-portile)))
6065 (synopsis "Interface with SQLite3 databases")
6066 (description
6067 "This module allows Ruby programs to interface with the SQLite3 database
6068engine.")
6069 (home-page
6070 "https://github.com/sparklemotion/sqlite3-ruby")
6071 (license license:bsd-3)))
6072
4dfa39cc
BW
6073(define-public ruby-shoulda-context
6074 (package
6075 (name "ruby-shoulda-context")
e7d1d472 6076 (version "1.2.2")
4dfa39cc
BW
6077 (source
6078 (origin
6079 (method url-fetch)
6080 (uri (rubygems-uri "shoulda-context" version))
6081 (sha256
6082 (base32
e7d1d472 6083 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
4dfa39cc
BW
6084 (build-system ruby-build-system)
6085 (arguments
6086 `(#:phases
6087 (modify-phases %standard-phases
6088 (replace 'check
6089 (lambda _
6090 ;; Do not run tests to avoid circular dependence with rails.
6091 ;; Instead just import the library to test.
9923d5a4 6092 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
4dfa39cc
BW
6093 (synopsis "Test::Unit context framework extracted from Shoulda")
6094 (description
6095 "@code{shoulda-context} is the context framework extracted from Shoulda.
6096Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
6097context, setup, and should blocks combine to produce natural test method
6098names.")
6099 (home-page "https://github.com/thoughtbot/shoulda-context")
6100 (license license:expat)))
6101
e4fea008
BW
6102(define-public ruby-shoulda-matchers
6103 (package
6104 (name "ruby-shoulda-matchers")
d1c1f368 6105 (version "3.1.2")
e4fea008
BW
6106 (source
6107 (origin
6108 (method url-fetch)
6109 (uri (rubygems-uri "shoulda-matchers" version))
6110 (sha256
6111 (base32
d1c1f368 6112 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
e4fea008
BW
6113 (build-system ruby-build-system)
6114 (arguments
6115 `(#:phases
6116 (modify-phases %standard-phases
e4fea008
BW
6117 (replace 'check
6118 (lambda _
6119 ;; Do not run tests to avoid circular dependence with rails. Instead
6120 ;; just import the library to test.
9923d5a4 6121 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
e4fea008
BW
6122 (propagated-inputs
6123 `(("ruby-activesupport" ,ruby-activesupport)))
6124 (synopsis "Collection of testing matchers extracted from Shoulda")
6125 (description
6126 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
6127test common Rails functionality. These tests would otherwise be much longer,
6128more complex, and error-prone.")
6129 (home-page "https://github.com/thoughtbot/shoulda-matchers")
6130 (license license:expat)))
6131
3885c58b
BW
6132(define-public ruby-shoulda-matchers-2
6133 (package
6134 (inherit ruby-shoulda-matchers)
6135 (version "2.8.0")
6136 (source (origin
6137 (method url-fetch)
6138 (uri (rubygems-uri "shoulda-matchers" version))
6139 (sha256
6140 (base32
6141 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
6142
6f390716
BW
6143(define-public ruby-shoulda
6144 (package
6145 (name "ruby-shoulda")
6146 (version "3.5.0")
6147 (source
6148 (origin
6149 (method url-fetch)
6150 (uri (rubygems-uri "shoulda" version))
6151 (sha256
6152 (base32
6153 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
6154 (build-system ruby-build-system)
6155 (arguments
6156 `(#:phases
6157 (modify-phases %standard-phases
6158 (replace 'check
6159 ;; Don't run tests to avoid circular dependence with rails. Instead
6160 ;; just import the library to test.
9923d5a4 6161 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
6f390716
BW
6162 (propagated-inputs
6163 `(("ruby-shoulda-context" ,ruby-shoulda-context)
6164 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
6165 (synopsis "Context framework and matchers for testing")
6166 (description
6167 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
6168@code{shoulda-matchers} providing tools for writing tests.")
6169 (home-page "https://github.com/thoughtbot/shoulda")
6170 (license license:expat)))
6171
3b44bcdf
BW
6172(define-public ruby-unf
6173 (package
6174 (name "ruby-unf")
6175 (version "0.1.4")
6176 (source
6177 (origin
6178 (method url-fetch)
6179 (uri (rubygems-uri "unf" version))
6180 (sha256
6181 (base32
6182 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
6183 (build-system ruby-build-system)
6184 (arguments
6185 `(#:phases
6186 (modify-phases %standard-phases
6187 (add-before 'check 'add-dependency-to-bundler
6188 (lambda _
6189 ;; test-unit is required but not provided by the bundler
6190 ;; environment. This is fixed in the upstream repository but fix
6191 ;; has not been released.
6192 (substitute* "Gemfile"
6193 (("^gemspec") "gem 'test-unit'\ngemspec"))
6194 #t)))))
6195 (propagated-inputs
6196 `(("ruby-unf-ext" ,ruby-unf-ext)))
6197 (native-inputs
6198 `(("ruby-shoulda" ,ruby-shoulda)
6199 ("bundler" ,bundler)
6200 ("ruby-test-unit" ,ruby-test-unit)))
6201 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
6202 (description
6203 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
6204support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
6205@code{java.text.Normalizer} on JRuby.")
6206 (home-page "https://github.com/knu/ruby-unf")
6207 (license license:bsd-2)))
6208
e32c99d2
CB
6209(define-public ruby-warden
6210 (package
6211 (name "ruby-warden")
6212 (version "1.2.8")
6213 (source
6214 (origin
6215 (method url-fetch)
6216 (uri (rubygems-uri "warden" version))
6217 (sha256
6218 (base32
6219 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
6220 (build-system ruby-build-system)
6221 (arguments
6222 '(#:tests? #f)) ; No included tests
6223 (propagated-inputs
6224 `(("ruby-rack" ,ruby-rack)))
6225 (synopsis "Rack middleware providing authentication")
6226 (description
6227 "Warden is a Rack-based middleware that provides a mechanism for
6228authentication in Ruby web applications.")
6229 (home-page "https://github.com/wardencommunity/warden")
6230 (license license:expat)))
6231
e42eecdb
CB
6232(define-public ruby-warden-oauth2
6233 (package
6234 (name "ruby-warden-oauth2")
6235 (version "0.0.1")
6236 (source
6237 (origin
6238 (method url-fetch)
6239 (uri (rubygems-uri "warden-oauth2" version))
6240 (sha256
6241 (base32
6242 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
6243 (build-system ruby-build-system)
6244 (arguments
6245 '(#:test-target "spec"
6246 #:phases
6247 (modify-phases %standard-phases
6248 (add-after 'unpack 'remove-unnecessary-dependencies
6249 (lambda _
6250 (substitute* "Gemfile"
6251 ;; All of these gems relate to development, and are unnecessary
6252 ;; when running the tests
6253 (("gem 'guard-bundler'") "")
6254 (("gem 'guard'") "")
6255 (("gem 'guard-rspec'") "")
6256 (("gem 'rb-fsevent'") "")
6257 (("gem 'pry'") "")
6258 (("gem 'growl'") ""))
6259 #t))
6260 ;; The test suite doesn't work with rspec@2, and this is incompatible
6261 ;; with the current version of Rake, so invoke Rspec directly
6262 (replace 'check
6263 (lambda* (#:key tests? #:allow-other-keys)
6264 (when tests?
6265 (invoke "bundle" "exec" "rspec"))
6266 #t)))))
6267 (propagated-inputs
6268 `(("ruby-warden" ,ruby-warden)))
6269 (native-inputs
6270 `(("bundler" ,bundler)
6271 ("ruby-rspec" ,ruby-rspec-2)
6272 ("ruby-rack-test" ,ruby-rack-test)))
6273 (synopsis "OAuth 2.0 strategies for Warden")
6274 (description
6275 "This library extends Warden to support OAuth 2.0 authorized API
6276requests.")
6277 (home-page "https://github.com/opperator/warden-oauth2")
6278 (license license:expat)))
6279
8c7ae384
CB
6280(define-public ruby-webmock-2
6281 (package
6282 (name "ruby-webmock")
6283 (version "2.3.2")
6284 (source
6285 (origin
6286 (method url-fetch)
6287 (uri (rubygems-uri "webmock" version))
6288 (sha256
6289 (base32
6290 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))
6291 (build-system ruby-build-system)
6292 (native-inputs
6293 `(("bundler" ,bundler)
6294 ("ruby-rspec" ,ruby-rspec)))
6295 (propagated-inputs
6296 `(("ruby-addressable" ,ruby-addressable)
6297 ("ruby-crack" ,ruby-crack)
6298 ("ruby-hashdiff" ,ruby-hashdiff)))
6299 (synopsis "Allows stubbing and setting expectations on HTTP requests")
6300 (description
6301 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
6302requests. This is useful when testing software.")
6303 (home-page "https://github.com/bblimke/webmock")
6304 (license license:expat)))
6305
d8c189ed
CB
6306(define-public ruby-unicode-display-width
6307 (package
6308 (name "ruby-unicode-display-width")
6309 (version "1.4.1")
6310 (source
6311 (origin
6312 (method url-fetch)
6313 (uri (rubygems-uri "unicode-display_width" version))
6314 (sha256
6315 (base32
6316 "0bq528fibi8s0jmxz0xzlgzggdq0x4fx46wfqz49478pv8gb2diq"))))
6317 (build-system ruby-build-system)
6318 (arguments
6319 '(;; Test data not included.
6320 #:tests? #f))
6321 (synopsis "Determine the monospace display width of Ruby strings")
6322 (description
6323 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
6324display width of strings in Ruby.")
6325 (home-page "https://github.com/janlelis/unicode-display_width")
6326 (license license:expat)))
6327
6120589f
CB
6328;; There is another gem called 'ruby-version' so we use an underscore in this
6329;; name
6330(define-public ruby_version
6331 (package
6332 (name "ruby_version")
6333 (version "1.0.1")
6334 (source
6335 (origin
6336 (method url-fetch)
6337 (uri (rubygems-uri "ruby_version" version))
6338 (sha256
6339 (base32
6340 "0854i1bjy56176anr05l5m0vc81nl53c7fyfg7sljj62m1d64dgj"))))
6341 (build-system ruby-build-system)
6342 (arguments
6343 '(#:phases
6344 (modify-phases %standard-phases
6345 (add-before 'check 'fix-dependencies
6346 (lambda _
6347 ;; Remove the Gemfile.lock, as we want to use Guix packages at
6348 ;; whatever versions.
6349 (delete-file "Gemfile.lock")
6350 ;; Remove the incldued gem file as it's unnecessary.
6351 (delete-file "pkg/ruby_version-1.0.0.gem")
6352 (substitute* "ruby_version.gemspec"
6353 ;; Don't require rdoc and rubygems-tasks as they're unnecessary
6354 ((".*rdoc.*") "\n")
6355 ((".*rubygems-tasks.*") "\n")
6356 ;; Accept any version of rake and rspec
6357 (("%q<rake.*") "%q<rake>)\n")
6358 (("%q<rspec.*") "%q<rspec>)\n"))
6359 ;; Remove the use of rubygems-tasks from the Rakefile, as it's
6360 ;; unnecessary.
6361 (substitute* "Rakefile"
6362 (("^require 'rubygems/tasks'") "")
6363 (("Gem::Tasks.new") ""))
6364 #t)))))
6365 (native-inputs
6366 `(("bundler" ,bundler)
6367 ("ruby-rspec" ,ruby-rspec)))
6368 (synopsis "Ruby library to help check the Ruby version")
6369 (description
6370 "@code{ruby_version} provides a @code{RubyVersion} module to simplify
6371checking for the right Ruby version in software.")
6372 (home-page "https://github.com/janlelis/ruby_version")
6373 (license license:expat)))
6374
a229acff
CB
6375(define-public ruby-websocket-driver
6376 (package
6377 (name "ruby-websocket-driver")
6378 (version "0.7.0")
6379 (source
6380 (origin
6381 (method url-fetch)
6382 (uri (rubygems-uri "websocket-driver" version))
6383 (sha256
6384 (base32
6385 "1551k3fs3kkb3ghqfj3n5lps0ikb9pyrdnzmvgfdxy8574n4g1dn"))))
6386 (build-system ruby-build-system)
6387 (arguments
6388 '(;; No included tests
6389 #:tests? #f))
6390 (propagated-inputs
6391 `(("ruby-websocket-extensions" ,ruby-websocket-extensions)))
6392 (synopsis "WebSocket protocol handler with pluggable I/O")
6393 (description
6394 "@code{websocket-driver} provides a complete implementation of the
6395WebSocket protocols that can be hooked up to any TCP library")
6396 (home-page "https://github.com/faye/websocket-driver-ruby")
6397 (license license:expat)))
6398
52b015a9
CB
6399(define-public ruby-websocket-extensions
6400 (package
6401 (name "ruby-websocket-extensions")
6402 (version "0.1.3")
6403 (source
6404 (origin
6405 (method url-fetch)
6406 (uri (rubygems-uri "websocket-extensions" version))
6407 (sha256
6408 (base32
6409 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
6410 (build-system ruby-build-system)
6411 (arguments
6412 '(;; No included tests
6413 #:tests? #f))
6414 (synopsis "Generic extension manager for WebSocket connections")
6415 (description
6416 "@code{websocket-extensions} provides a container for registering
6417extension plugins.")
6418 (home-page "https://github.com/faye/websocket-extensions-ruby")
6419 (license license:expat)))
6420
5799aadd
BW
6421(define-public ruby-domain-name
6422 (package
6423 (name "ruby-domain-name")
222999c9 6424 (version "0.5.20180417")
5799aadd
BW
6425 (source
6426 (origin
6427 (method url-fetch)
6428 (uri (rubygems-uri "domain_name" version))
6429 (sha256
6430 (base32
222999c9 6431 "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v"))))
5799aadd
BW
6432 (build-system ruby-build-system)
6433 (arguments
6434 `(#:phases
6435 (modify-phases %standard-phases
6436 (add-before 'check 'fix-versions
6437 (lambda _
6438 ;; Fix NameError that appears to already be fixed upstream.
6439 (substitute* "Rakefile"
6440 (("DomainName::VERSION")
6441 "Bundler::GemHelper.gemspec.version"))
6442 ;; Loosen unnecessarily strict test-unit version specification.
6443 (substitute* "domain_name.gemspec"
71596c3c 6444 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
5799aadd
BW
6445 #t)))))
6446 (propagated-inputs
6447 `(("ruby-unf" ,ruby-unf)))
6448 (native-inputs
6449 `(("ruby-shoulda" ,ruby-shoulda)
6450 ("bundler" ,bundler)
6451 ("ruby-test-unit" ,ruby-test-unit)))
6452 (synopsis "Domain name manipulation library")
6453 (description
6454 "@code{domain_name} is a Domain name manipulation library. It parses a
6455domain name ready for extracting the registered domain and TLD (Top Level
6456Domain). It can also be used for cookie domain validation based on the Public
6457Suffix List.")
6458 (home-page "https://github.com/knu/ruby-domain_name")
6459 (license license:bsd-2)))
6460
d114ceeb
BW
6461(define-public ruby-http-cookie
6462 (package
6463 (name "ruby-http-cookie")
2a2eb07d 6464 (version "1.0.3")
d114ceeb
BW
6465 (source
6466 (origin
6467 (method url-fetch)
6468 (uri (rubygems-uri "http-cookie" version))
6469 (sha256
6470 (base32
2a2eb07d 6471 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
d114ceeb
BW
6472 (build-system ruby-build-system)
6473 (arguments
6474 `(#:phases
6475 (modify-phases %standard-phases
6476 (add-before 'check 'add-dependency-to-bundler
6477 (lambda _
6478 ;; Fix NameError
6479 (substitute* "Rakefile"
6480 (("HTTP::Cookie::VERSION")
6481 "Bundler::GemHelper.gemspec.version"))
6482 #t)))))
6483 (propagated-inputs
6484 `(("ruby-domain-name" ,ruby-domain-name)))
6485 (native-inputs
6486 `(("rubysimplecov" ,ruby-simplecov)
6487 ("bundler" ,bundler)
6488 ("ruby-sqlite3" ,ruby-sqlite3)
6489 ("ruby-test-unit" ,ruby-test-unit)))
6490 (synopsis "Handle HTTP Cookies based on RFC 6265")
6491 (description
6492 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
6493RFC 6265. It has been designed with security, standards compliance and
6494compatibility in mind, to behave just the same as today's major web browsers.
6495It has built-in support for the legacy @code{cookies.txt} and
6496@code{cookies.sqlite} formats of Mozilla Firefox.")
6497 (home-page "https://github.com/sparklemotion/http-cookie")
6498 (license license:expat)))
6499
1c8e6fd3
CB
6500(define-public ruby-httpclient
6501 (package
6502 (name "ruby-httpclient")
6503 (version "2.8.3")
6504 (source
6505 (origin
6506 (method url-fetch)
6507 (uri (rubygems-uri "httpclient" version))
6508 (sha256
6509 (base32
6510 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
6511 (build-system ruby-build-system)
6512 (arguments
6513 '(;; TODO: Some tests currently fail
6514 ;; ------
6515 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
6516 ;; 2 omissions, 0 notifications
6517 ;; 91.866% passed
6518 ;; ------
6519 ;; 6.49 tests/s, 22.41 assertions/s
6520 #:tests? #f
6521 #:phases
6522 (modify-phases %standard-phases
6523 (replace 'check
6524 (lambda* (#:key tests? #:allow-other-keys)
6525 (if tests?
9923d5a4
TGR
6526 (invoke "ruby"
6527 "-Ilib"
6528 "test/runner.rb")
0076f5a9 6529 #t))))))
1c8e6fd3
CB
6530 (native-inputs
6531 `(("ruby-rack" ,ruby-rack)))
6532 (synopsis
6533 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
6534 (description
6535 "The @code{httpclient} ruby library provides functionality related to
6536HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
6537Cookie, multithreading and authentication (digest, NTLM) support.
6538
6539Also provided is a @command{httpclient} command, which can perform HTTP
6540requests either using arguments or with an interactive prompt.")
6541 (home-page "https://github.com/nahi/httpclient")
6542 (license license:ruby)))
6543
7d3a1a2d
BW
6544(define-public ruby-ansi
6545 (package
6546 (name "ruby-ansi")
6547 (version "1.5.0")
6548 (source
6549 (origin
6550 (method url-fetch)
6551 ;; Fetch from GitHub as the gem does not contain testing code.
6552 (uri (string-append "https://github.com/rubyworks/ansi/archive/"
6553 version ".tar.gz"))
6554 (file-name (string-append name "-" version ".tar.gz"))
6555 (sha256
6556 (base32
6557 "1zdip30hivyipi8hndhb457bhiz033awd00bgrsk5axjrwp6zhly"))))
6558 (build-system ruby-build-system)
6559 (arguments
6560 `(#:phases
6561 (modify-phases %standard-phases
6562 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
6563 ;; cycle ansi, qed, ansi. Instead simply test that the library can
6564 ;; be require'd.
6565 (replace 'check
6566 (lambda _
9923d5a4 6567 (invoke "ruby" "-Ilib" "-r" "ansi")))
0899352f
MB
6568 (add-before 'validate-runpath 'replace-broken-symlink
6569 (lambda* (#:key outputs #:allow-other-keys)
6570 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
6571 (file (string-append
6572 out "/lib/ruby/vendor_ruby/gems/ansi-"
6573 ,version "/lib/ansi.yml")))
0899352f
MB
6574 ;; XXX: This symlink is broken since ruby 2.4.
6575 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
6576 (delete-file file)
6577 (symlink "../.index" file)
6578 #t))))))
7d3a1a2d
BW
6579 (synopsis "ANSI escape code related libraries")
6580 (description
6581 "This package is a collection of ANSI escape code related libraries
6582enabling ANSI colorization and stylization of console output. Included in the
6583library are the @code{Code} module, which defines ANSI codes as constants and
6584methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
6585@code{ProgressBar}, and a @code{String} subclass. The library also includes a
6586@code{Terminal} module which provides information about the current output
6587device.")
2f3800e5 6588 (home-page "https://rubyworks.github.io/ansi")
7d3a1a2d 6589 (license license:bsd-2)))
7c033c46
BW
6590
6591(define-public ruby-systemu
6592 (package
6593 (name "ruby-systemu")
6594 (version "2.6.5")
6595 (source
6596 (origin
6597 (method url-fetch)
6598 (uri (rubygems-uri "systemu" version))
6599 (sha256
6600 (base32
6601 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
6602 (build-system ruby-build-system)
6603 (arguments
6604 `(#:phases
6605 (modify-phases %standard-phases
6606 (add-before 'check 'set-version
6607 (lambda _
6608 (setenv "VERSION" ,version)
6609 #t)))))
6610 (synopsis "Capture of stdout/stderr and handling of child processes")
6611 (description
6612 "Systemu can be used on any platform to return status, stdout, and stderr
6613of any command. Unlike other methods like @code{open3} and @code{popen4}
6614there is no danger of full pipes or threading issues hanging your process or
6615subprocess.")
6616 (home-page "https://github.com/ahoward/systemu")
6617 (license license:ruby)))
3d84a99e
BW
6618
6619(define-public ruby-bio-commandeer
6620 (package
6621 (name "ruby-bio-commandeer")
37b08547 6622 (version "0.4.0")
3d84a99e
BW
6623 (source
6624 (origin
6625 (method url-fetch)
6626 (uri (rubygems-uri "bio-commandeer" version))
6627 (sha256
6628 (base32
37b08547 6629 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
3d84a99e
BW
6630 (build-system ruby-build-system)
6631 (arguments
6632 `(#:phases
6633 (modify-phases %standard-phases
6634 (replace 'check
6635 ;; Run test without calling 'rake' so that jeweler is
6636 ;; not required as an input.
6637 (lambda _
9923d5a4 6638 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
3d84a99e
BW
6639 (propagated-inputs
6640 `(("ruby-bio-logger" ,ruby-bio-logger)
6641 ("ruby-systemu" ,ruby-systemu)))
6642 (native-inputs
6643 `(("bundler" ,bundler)
6644 ("ruby-rspec" ,ruby-rspec)))
6645 (synopsis "Simplified running of shell commands from within Ruby")
6646 (description
6647 "Bio-commandeer provides an opinionated method of running shell commands
6648from within Ruby. The advantage of bio-commandeer over other methods of
6649running external commands is that when something goes wrong, messages printed
6650to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
6651detail to ease debugging.")
7bf837fd 6652 (home-page "https://github.com/wwood/bioruby-commandeer")
3d84a99e 6653 (license license:expat)))
7c8131c7
BW
6654
6655(define-public ruby-rubytest
6656 (package
6657 (name "ruby-rubytest")
6658 (version "0.8.1")
6659 (source
6660 (origin
6661 (method url-fetch)
6662 (uri (rubygems-uri "rubytest" version))
6663 (sha256
6664 (base32
6665 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
6666 (build-system ruby-build-system)
6667 (arguments
6668 ;; Disable regular testing to break the cycle rubytest, qed, brass,
6669 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
6670 ;; simply test that the library can be require'd.
6671 `(#:phases
6672 (modify-phases %standard-phases
6673 (replace 'check
6674 (lambda _
9923d5a4 6675 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
7c8131c7
BW
6676 (propagated-inputs
6677 `(("ruby-ansi" ,ruby-ansi)))
6678 (synopsis "Universal test harness for Ruby")
6679 (description
6680 "Rubytest is a testing meta-framework for Ruby. It can handle any
6681compliant test framework and can run tests from multiple frameworks in a
6682single pass.")
2f3800e5 6683 (home-page "https://rubyworks.github.io/rubytest")
7c8131c7 6684 (license license:bsd-2)))
90fcedf2
BW
6685
6686(define-public ruby-brass
6687 (package
6688 (name "ruby-brass")
6689 (version "1.2.1")
6690 (source
6691 (origin
6692 (method url-fetch)
6693 (uri (rubygems-uri "brass" version))
6694 (sha256
6695 (base32
6696 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
6697 (build-system ruby-build-system)
6698 (arguments
6699 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
6700 ;; Instead simply test that the library can be require'd.
6701 `(#:phases
6702 (modify-phases %standard-phases
6703 (replace 'check
6704 (lambda _
9923d5a4 6705 (invoke "ruby" "-Ilib" "-r" "brass"))))))
90fcedf2
BW
6706 (synopsis "Basic foundational assertions framework")
6707 (description
6708 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
6709foundational assertions framework for other assertion and test frameworks to
6710make use of.")
2f3800e5 6711 (home-page "https://rubyworks.github.io/brass")
90fcedf2 6712 (license license:bsd-2)))
120fc74b
BW
6713
6714(define-public ruby-qed
6715 (package
6716 (name "ruby-qed")
6717 (version "2.9.2")
6718 (source
6719 (origin
6720 (method url-fetch)
6721 (uri (rubygems-uri "qed" version))
6722 (sha256
6723 (base32
6724 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
6725 (build-system ruby-build-system)
6726 (arguments
6727 ;; Disable testing to break the cycle qed, ansi, qed, among others.
6728 ;; Instead simply test that the executable runs using --copyright.
6729 `(#:phases
6730 (modify-phases %standard-phases
6731 (replace 'check
6732 (lambda _
9923d5a4 6733 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
120fc74b
BW
6734 (propagated-inputs
6735 `(("ruby-ansi" ,ruby-ansi)
6736 ("ruby-brass" ,ruby-brass)))
6737 (synopsis "Test framework utilizing literate programming techniques")
6738 (description
6739 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
6740@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
6741Development} (BDD) utilizing Literate Programming techniques. QED sits
6742somewhere between lower-level testing tools like @code{Test::Unit} and
6743requirement specifications systems like Cucumber.")
2f3800e5 6744 (home-page "https://rubyworks.github.io/qed")
120fc74b 6745 (license license:bsd-2)))
9273ee8f 6746
dbbe88d3
CB
6747(define-public ruby-que
6748 (package
6749 (name "ruby-que")
6750 (version "1.0.0.beta3")
6751 (source
6752 (origin
6753 (method url-fetch)
6754 (uri (rubygems-uri "que" version))
6755 (sha256
6756 (base32
6757 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
6758 (build-system ruby-build-system)
6759 (arguments
6760 '(#:tests? #f)) ; No included tests
6761 (synopsis "Job queue using PostgreSQL written in Ruby")
6762 (description
6763 "This package provides a job queue that uses PostgreSQL for storing jobs
6764and locking between worker processes.")
6765 (home-page "https://github.com/chanks/que")
6766 (license license:expat)))
6767
9273ee8f
BW
6768(define-public ruby-ae
6769 (package
6770 (name "ruby-ae")
6771 (version "1.8.2")
6772 (source
6773 (origin
6774 (method url-fetch)
6775 ;; Fetch from github so tests are included.
6776 (uri (string-append
6777 "https://github.com/rubyworks/ae/archive/"
6778 version ".tar.gz"))
6779 (file-name (string-append name "-" version ".tar.gz"))
6780 (sha256
6781 (base32
6782 "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl"))))
6783 (build-system ruby-build-system)
6784 (arguments
6785 `(#:phases
6786 (modify-phases %standard-phases
6787 (replace 'check
9923d5a4 6788 (lambda _ (invoke "qed")))
de6f6efd
MB
6789 (add-before 'validate-runpath 'replace-broken-symlink
6790 (lambda* (#:key outputs #:allow-other-keys)
6791 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
6792 (file (string-append
6793 out "/lib/ruby/vendor_ruby/gems/ae-"
6794 ,version "/lib/ae.yml")))
de6f6efd
MB
6795 ;; XXX: This symlink is broken since ruby 2.4.
6796 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
6797 (delete-file file)
6798 (symlink "../.index" file)
6799 #t))))))
9273ee8f
BW
6800 (propagated-inputs
6801 `(("ruby-ansi" ,ruby-ansi)))
6802 (native-inputs
6803 `(("ruby-qed" ,ruby-qed)))
6804 (synopsis "Assertions library")
6805 (description
6806 "Assertive Expressive (AE) is an assertions library specifically designed
6807for reuse by other test frameworks.")
2f3800e5 6808 (home-page "https://rubyworks.github.io/ae")
9273ee8f 6809 (license license:bsd-2)))
78bb471f
BW
6810
6811(define-public ruby-lemon
6812 (package
6813 (name "ruby-lemon")
6814 (version "0.9.1")
6815 (source
6816 (origin
6817 (method url-fetch)
6818 (uri (rubygems-uri "lemon" version))
6819 (sha256
6820 (base32
6821 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
6822 (build-system ruby-build-system)
6823 (arguments
6824 `(#:phases
6825 (modify-phases %standard-phases
9923d5a4 6826 (replace 'check (lambda _ (invoke "qed"))))))
78bb471f
BW
6827 (propagated-inputs
6828 `(("ruby-ae" ,ruby-ae)
6829 ("ruby-ansi" ,ruby-ansi)
6830 ("ruby-rubytest" ,ruby-rubytest)))
6831 (native-inputs
6832 `(("ruby-qed" ,ruby-qed)))
6833 (synopsis "Test framework correlating code structure and test unit")
6834 (description
6835 "Lemon is a unit testing framework that enforces highly formal
6836case-to-class and unit-to-method test construction. This enforcement can help
6837focus concern on individual units of behavior.")
2f3800e5 6838 (home-page "https://rubyworks.github.io/lemon")
78bb471f 6839 (license license:bsd-2)))
0832804e
BW
6840
6841(define-public ruby-rubytest-cli
6842 (package
6843 (name "ruby-rubytest-cli")
6844 (version "0.2.0")
6845 (source
6846 (origin
6847 (method url-fetch)
6848 (uri (rubygems-uri "rubytest-cli" version))
6849 (sha256
6850 (base32
6851 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
6852 (build-system ruby-build-system)
6853 (arguments
6854 `(#:tests? #f)) ; no tests
6855 (propagated-inputs
6856 `(("ruby-ansi" ,ruby-ansi)
6857 ("ruby-rubytest" ,ruby-rubytest)))
6858 (synopsis "Command-line interface for rubytest")
6859 (description
6860 "Rubytest CLI is a command-line interface for running tests for
6861Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
2f3800e5 6862 (home-page "https://rubyworks.github.io/rubytest-cli")
0832804e 6863 (license license:bsd-2)))
72ccbfe3
BW
6864
6865(define-public ruby-hashery
6866 (package
6867 (name "ruby-hashery")
cba96208 6868 (version "2.1.2")
72ccbfe3
BW
6869 (source
6870 (origin
6871 (method url-fetch)
6872 (uri (rubygems-uri "hashery" version))
6873 (sha256
6874 (base32
cba96208 6875 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
72ccbfe3
BW
6876 (build-system ruby-build-system)
6877 (arguments
6878 `(#:phases
6879 (modify-phases %standard-phases
6880 (replace 'check
6881 (lambda _
9923d5a4
TGR
6882 (invoke "qed")
6883 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
72ccbfe3
BW
6884 (native-inputs
6885 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
6886 ("ruby-qed" ,ruby-qed)
6887 ("ruby-lemon" ,ruby-lemon)))
6888 (synopsis "Hash-like classes with extra features")
6889 (description
6890 "The Hashery is a tight collection of @code{Hash}-like classes.
6891Included are the auto-sorting @code{Dictionary} class, the efficient
6892@code{LRUHash}, the flexible @code{OpenHash} and the convenient
6893@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
6894defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
6895standard @code{Hash} making it possible to subclass and augment to fit any
6896specific use case.")
2f3800e5 6897 (home-page "https://rubyworks.github.io/hashery")
72ccbfe3 6898 (license license:bsd-2)))
1f1d71e0
BW
6899
6900(define-public ruby-rc4
6901 (package
6902 (name "ruby-rc4")
6903 (version "0.1.5")
6904 (source
6905 (origin
6906 (method url-fetch)
6907 (uri (rubygems-uri "ruby-rc4" version))
6908 (sha256
6909 (base32
6910 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
6911 (build-system ruby-build-system)
6912 (arguments
6913 `(#:phases
6914 (modify-phases %standard-phases
6915 (replace 'check
6916 (lambda _
9923d5a4 6917 (invoke "rspec" "spec/rc4_spec.rb"))))))
1f1d71e0
BW
6918 (native-inputs
6919 `(("ruby-rspec" ,ruby-rspec-2)))
6920 (synopsis "Implementation of the RC4 algorithm")
6921 (description
6922 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
6923 (home-page "https://github.com/caiges/Ruby-RC4")
6924 (license license:expat)))
f3e085a8
BW
6925
6926(define-public ruby-afm
6927 (package
6928 (name "ruby-afm")
6929 (version "0.2.2")
6930 (source
6931 (origin
6932 (method url-fetch)
6933 (uri (rubygems-uri "afm" version))
6934 (sha256
6935 (base32
6936 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
6937 (build-system ruby-build-system)
6938 (native-inputs
6939 `(("bundler" ,bundler)))
6940 (synopsis "Read Adobe Font Metrics (afm) files")
6941 (description
6942 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
6943files and use the data therein.")
7bf837fd 6944 (home-page "https://github.com/halfbyte/afm")
f3e085a8 6945 (license license:expat)))
acb6be42
BW
6946
6947(define-public ruby-ascii85
6948 (package
6949 (name "ruby-ascii85")
5854082a 6950 (version "1.0.3")
acb6be42
BW
6951 (source
6952 (origin
6953 (method url-fetch)
6954 (uri (rubygems-uri "Ascii85" version))
6955 (sha256
6956 (base32
5854082a 6957 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
acb6be42
BW
6958 (build-system ruby-build-system)
6959 (native-inputs
6960 `(("bundler" ,bundler)))
6961 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
6962 (description
6963 "This library provides methods to encode and decode Ascii85
6964binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
6965@dfn{Portable Document Format} (PDF) file formats.")
6966 (home-page "https://github.com/datawraith/ascii85gem")
6967 (license license:expat)))
edf8caae
BW
6968
6969(define-public ruby-ttfunk
6970 (package
6971 (name "ruby-ttfunk")
afb7a3e8 6972 (version "1.5.1")
edf8caae
BW
6973 (source
6974 (origin
6975 (method url-fetch)
6976 ;; fetch from github as the gem does not contain testing code
6977 (uri (string-append
6978 "https://github.com/prawnpdf/ttfunk/archive/"
6979 version ".tar.gz"))
6980 (file-name (string-append name "-" version ".tar.gz"))
6981 (sha256
6982 (base32
afb7a3e8 6983 "1ymcn12n5iws401yz03zsj8rr653fdqq13czsrciq09phgh9jzc5"))))
edf8caae
BW
6984 (build-system ruby-build-system)
6985 (arguments
6986 `(#:test-target "spec"
6987 #:phases
6988 (modify-phases %standard-phases
afb7a3e8
JL
6989 (add-before 'build 'remove-ssh
6990 (lambda _
6991 ;; remove dependency on an ssh key pair that doesn't exist
6992 (substitute* "ttfunk.gemspec"
6993 (("spec.signing_key.*") ""))
6994 #t))
edf8caae
BW
6995 (add-before 'check 'remove-rubocop
6996 (lambda _
6997 ;; remove rubocop as a dependency as not needed for testing
6998 (substitute* "ttfunk.gemspec"
6999 (("spec.add_development_dependency\\('rubocop'.*") ""))
7000 (substitute* "Rakefile"
7001 (("require 'rubocop/rake_task'") "")
afb7a3e8 7002 (("RuboCop::RakeTask.new") ""))
edf8caae
BW
7003 #t)))))
7004 (native-inputs
7005 `(("ruby-rspec" ,ruby-rspec)
afb7a3e8 7006 ("ruby-yard" ,ruby-yard)
edf8caae
BW
7007 ("bundler" ,bundler)))
7008 (synopsis "Font metrics parser for the Prawn PDF generator")
7009 (description
7010 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
7011part of the Prawn PDF generator.")
7012 (home-page "https://github.com/prawnpdf/ttfunk")
7013 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
7014 ;; for details."
7015 (license (list license:gpl2 license:gpl3 license:ruby))))
cbdd428c 7016
9270298f
BW
7017(define-public ruby-puma
7018 (package
7019 (name "ruby-puma")
63755fcd 7020 (version "3.9.1")
9270298f
BW
7021 (source
7022 (origin
7023 (method url-fetch)
7024 ;; Fetch from GitHub because distributed gem does not contain tests.
7025 (uri (string-append "https://github.com/puma/puma/archive/v"
7026 version ".tar.gz"))
7027 (file-name (string-append name "-" version ".tar.gz"))
7028 (sha256
7029 (base32
63755fcd 7030 "03pifga841h17brh4vgia8i2ybh3cmsyg0dbybzdf6dq51wzcxdx"))))
9270298f
BW
7031 (build-system ruby-build-system)
7032 (arguments
63755fcd
BW
7033 `(#:tests? #f ; Tests require an out-dated version of minitest.
7034 #:phases
9270298f
BW
7035 (modify-phases %standard-phases
7036 (add-before 'build 'fix-gemspec
7037 (lambda _
7038 (substitute* "puma.gemspec"
7039 (("git ls-files") "find * |sort"))
7040 #t)))))
9270298f
BW
7041 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
7042 (description
7043 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
7044for Ruby/Rack applications. Puma is intended for use in both development and
7045production environments. In order to get the best throughput, it is highly
7046recommended that you use a Ruby implementation with real threads like Rubinius
7047or JRuby.")
7048 (home-page "http://puma.io")
7049 (license license:expat)))
7050
b0813490
BW
7051(define-public ruby-hoe-git
7052 (package
7053 (name "ruby-hoe-git")
7054 (version "1.6.0")
7055 (source
7056 (origin
7057 (method url-fetch)
7058 (uri (rubygems-uri "hoe-git" version))
7059 (sha256
7060 (base32
7061 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
7062 (build-system ruby-build-system)
7063 (propagated-inputs
7064 `(("ruby-hoe" ,ruby-hoe)
7065 ("git" ,git)))
7066 (synopsis "Hoe plugins for tighter Git integration")
7067 (description
7068 "This package provides a set of Hoe plugins for tighter Git integration.
7069It provides tasks to automate release tagging and pushing and changelog
7070generation.")
7bf837fd 7071 (home-page "https://github.com/jbarnette/hoe-git")
b0813490
BW
7072 (license license:expat)))
7073
cbdd428c
BW
7074(define-public ruby-sequel
7075 (package
7076 (name "ruby-sequel")
65a7f09c 7077 (version "4.49.0")
cbdd428c
BW
7078 (source
7079 (origin
7080 (method url-fetch)
7081 (uri (rubygems-uri "sequel" version))
7082 (sha256
7083 (base32
65a7f09c 7084 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
cbdd428c
BW
7085 (build-system ruby-build-system)
7086 (arguments
7087 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
7088 (synopsis "Database toolkit for Ruby")
7089 (description "Sequel provides thread safety, connection pooling and a
7090concise DSL for constructing SQL queries and table schemas. It includes a
7091comprehensive ORM layer for mapping records to Ruby objects and handling
7092associated records.")
7093 (home-page "http://sequel.jeremyevans.net")
7094 (license license:expat)))
3cc78097
BW
7095
7096(define-public ruby-timecop
7097 (package
7098 (name "ruby-timecop")
3d4a5eb5 7099 (version "0.9.1")
3cc78097
BW
7100 (source
7101 (origin
7102 (method url-fetch)
7103 (uri (rubygems-uri "timecop" version))
7104 (sha256
7105 (base32
3d4a5eb5 7106 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
3cc78097
BW
7107 (build-system ruby-build-system)
7108 (arguments
7109 `(#:phases
7110 (modify-phases %standard-phases
7111 (add-before 'check 'set-check-rubylib
7112 (lambda _
7113 ;; Set RUBYLIB so timecop tests finds its own lib.
7114 (setenv "RUBYLIB" "lib")
7115 #t)))))
7116 (native-inputs
7117 `(("bundler" ,bundler)
7118 ("ruby-minitest-rg" ,ruby-minitest-rg)
7119 ("ruby-mocha" ,ruby-mocha)
7120 ("ruby-activesupport" ,ruby-activesupport)))
66e07664 7121 (synopsis "Test mocks for time-dependent functions")
3cc78097
BW
7122 (description
7123 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
7124making it easier to test time-dependent code. It provides a unified method to
7125mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
7126call.")
7127 (home-page "https://github.com/travisjeffery/timecop")
7128 (license license:expat)))
7129
dae620b8
BW
7130(define-public ruby-concurrent
7131 (package
7132 (name "ruby-concurrent")
21aecec1 7133 (version "1.0.5")
dae620b8
BW
7134 (source
7135 (origin
7136 (method url-fetch)
7137 ;; Download from GitHub because the rubygems version does not contain
7138 ;; Rakefile.
7139 (uri (string-append
7140 "https://github.com/ruby-concurrency/concurrent-ruby/archive/v"
7141 version
7142 ".tar.gz"))
7143 (file-name (string-append name "-" version ".tar.gz"))
7144 (sha256
7145 (base32
21aecec1 7146 "0qhv0qzsby4iijgwa4s9r88zj8123pmyz1dwaqzdk57xgqll9pny"))
dae620b8
BW
7147 ;; Exclude failing test reported at
7148 ;; https://github.com/ruby-concurrency/concurrent-ruby/issues/534
402b03e6
LC
7149 (patches (search-patches "ruby-concurrent-ignore-broken-test.patch"
7150 "ruby-concurrent-test-arm.patch"))))
dae620b8
BW
7151 (build-system ruby-build-system)
7152 (arguments
7153 `(#:test-target "spec"
7154 #:phases
7155 (modify-phases %standard-phases
520e89eb 7156 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
dae620b8
BW
7157 (lambda _
7158 ;; Delete extra gemspec files so 'first-gemspec' chooses the
7159 ;; correct one.
7160 (delete-file "concurrent-ruby-edge.gemspec")
7161 (delete-file "concurrent-ruby-ext.gemspec")
7162 #t))
520e89eb
BW
7163 (add-before 'build 'replace-git-ls-files2
7164 (lambda _
7165 (substitute* "support/file_map.rb"
7166 (("git ls-files") "find * |sort"))
7167 #t))
dae620b8
BW
7168 (add-before 'check 'rake-compile
7169 ;; Fix the test error described at
7170 ;; https://github.com/ruby-concurrency/concurrent-ruby/pull/408
9923d5a4 7171 (lambda _ (invoke "rake" "compile")))
9019b37f
BW
7172 (add-before 'check 'remove-timecop-dependency
7173 ;; Remove timecop-dependent tests as having timecop as a depedency
7174 ;; causes circular depedencies.
7175 (lambda _
7176 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
7177 (delete-file "spec/concurrent/scheduled_task_spec.rb")
7178 #t)))))
dae620b8
BW
7179 (native-inputs
7180 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9019b37f 7181 ("ruby-rspec" ,ruby-rspec)))
dae620b8
BW
7182 (synopsis "Concurrency tools for Ruby")
7183 (description
7184 "This library provides modern concurrency tools including agents,
7185futures, promises, thread pools, actors, supervisors, and more. It is
7186inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
7187patterns.")
7188 (home-page "http://www.concurrent-ruby.com")
7189 (license license:expat)))
2de61e34
BW
7190
7191(define-public ruby-pkg-config
7192 (package
7193 (name "ruby-pkg-config")
884a80dd 7194 (version "1.2.5")
2de61e34
BW
7195 (source
7196 (origin
7197 (method url-fetch)
7198 (uri (rubygems-uri "pkg-config" version))
7199 (sha256
7200 (base32
884a80dd 7201 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
2de61e34
BW
7202 (build-system ruby-build-system)
7203 (arguments
7204 ;; Tests require extra files not included in the gem.
7205 `(#:tests? #f))
7206 (synopsis "Detect libraries for compiling Ruby native extensions")
7207 (description
7208 "@code{pkg-config} can be used in your extconf.rb to properly detect need
7209libraries for compiling Ruby native extensions.")
7210 (home-page "https://github.com/ruby-gnome2/pkg-config")
7211 (license license:lgpl2.0+)))
6689c636
MFM
7212
7213(define-public ruby-net-http-digest-auth
7214 (package
7215 (name "ruby-net-http-digest-auth")
ba074a85 7216 (version "1.4.1")
6689c636
MFM
7217 (source
7218 (origin
7219 (method url-fetch)
7220 (uri (rubygems-uri "net-http-digest_auth" version))
7221 (sha256
7222 (base32
ba074a85 7223 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
6689c636
MFM
7224 (build-system ruby-build-system)
7225 (native-inputs
7226 `(("ruby-hoe" ,ruby-hoe)))
7227 (synopsis "RFC 2617 HTTP digest authentication library")
7228 (description
7229 "This library implements HTTP's digest authentication scheme based on
7230RFC 2617. This enables the use of the digest authentication scheme instead
7231of the more insecure basic authentication scheme.")
7bf837fd 7232 (home-page "https://github.com/drbrain/net-http-digest_auth")
6689c636 7233 (license license:expat)))
06116573 7234
7235(define-public ruby-mail
7236 (package
7237 (name "ruby-mail")
04de0cb5 7238 (version "2.6.6")
06116573 7239 (source
7240 (origin
7241 (method url-fetch)
7242 (uri (rubygems-uri "mail" version))
7243 (sha256
7244 (base32
04de0cb5 7245 "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
06116573 7246 (build-system ruby-build-system)
7247 (propagated-inputs
7248 `(("ruby-mime-types" ,ruby-mime-types)))
7249 (arguments
7250 ;; Tests require extra gems not included in the Gemfile.
7251 ;; XXX: Try enabling this for the next version with mini_mime.
7252 `(#:tests? #f))
7253 (synopsis "Mail library for Ruby")
7254 (description
7255 "Mail is an internet library for Ruby that is designed to handle email
7256generation, parsing and sending. The purpose of this library is to provide
7257a single point of access to handle all email functions, including sending
7258and receiving emails. All network type actions are done through proxy
7259methods to @code{Net::SMTP}, @code{Net::POP3} etc.
7260
7261Mail has been designed with a very simple object oriented system that
7262really opens up the email messages you are parsing, if you know what you
7263are doing, you can fiddle with every last bit of your email directly.")
7264 (home-page "https://github.com/mikel/mail")
7265 (license license:expat)))
9b4c8e1b 7266
4d372cb9
CB
7267(define-public ruby-mathn
7268 (package
7269 (name "ruby-mathn")
7270 (version "0.1.0")
7271 (source
7272 (origin
7273 (method url-fetch)
7274 (uri (rubygems-uri "mathn" version))
7275 (sha256
7276 (base32
7277 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
7278 (build-system ruby-build-system)
7279 (native-inputs
7280 `(("bundler" ,bundler)
7281 ("ruby-rake-compiler" ,ruby-rake-compiler)))
7282 (synopsis "Extends math operations for increased precision")
7283 (description
7284 "This gem makes mathematical operations more precise in Ruby and
7285integrates other mathematical standard libraries. Prior to Ruby 2.5,
7286@code{mathn} was part of the Ruby standard library.")
7287 (home-page "https://github.com/ruby/mathn")
7288 (license license:bsd-2)))
7289
9b4c8e1b
BW
7290(define-public ruby-code-statistics
7291 (package
7292 (name "ruby-code-statistics")
7293 (version "0.2.13")
7294 (source
7295 (origin
7296 (method url-fetch)
7297 (uri (rubygems-uri "code_statistics" version))
7298 (sha256
7299 (base32
7300 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
7301 (build-system ruby-build-system)
7302 (arguments
7303 `(#:tests? #f)) ; Not all test code is included in gem.
7304 (synopsis "Port of the rails 'rake stats' method")
7305 (description
7306 "This gem is a port of the rails 'rake stats' method so it can be made
7307more robust and work for non rails projects.")
7308 (home-page "http://github.com/danmayer/code_statistics")
7309 (license license:expat)))
f90c25c1
CL
7310
7311(define-public ruby-rubypants
7312 (package
7313 (name "ruby-rubypants")
7314 (version "0.6.0")
7315 (source (origin
7316 (method url-fetch)
7317 (uri (rubygems-uri "rubypants" version))
7318 (sha256
7319 (base32
7320 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
7321 (build-system ruby-build-system)
7322 (arguments
7323 '(#:tests? #f)) ; need Codecov
7324 (synopsis "Port of the smart-quotes library SmartyPants")
7325 (description
7326 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
7327original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
7328and BBEdit that easily translates plain ASCII punctuation characters into
7329smart typographic punctuation HTML entities.")
7330 (home-page "https://github.com/jmcnevin/rubypants")
7331 (license license:bsd-2)))
beb34835
CL
7332
7333(define-public ruby-org-ruby
7334 (package
7335 (name "ruby-org-ruby")
7336 (version "0.9.12")
7337 (source (origin
7338 (method url-fetch)
7339 (uri (rubygems-uri "org-ruby" version))
7340 (sha256
7341 (base32
7342 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
7343 (build-system ruby-build-system)
7344 (arguments
7345 '(#:tests? #f)) ; no rakefile
7346 (propagated-inputs
7347 `(("ruby-rubypants" ,ruby-rubypants)))
7348 (synopsis "Org-mode parser written in Ruby")
7349 (description
7350 "Org-ruby is an org-mode parser written in Ruby. The most significant
7351thing this library does today is convert org-mode files to HTML or Textile or
7352Markdown.")
7353 (home-page "https://github.com/wallyqs/org-ruby")
7354 (license license:expat)))
670ee20a
BW
7355
7356(define-public ruby-rake
7357 (package
7358 (name "ruby-rake")
d6fb32b8 7359 (version "12.3.1")
670ee20a
BW
7360 (source
7361 (origin
7362 (method url-fetch)
7363 (uri (rubygems-uri "rake" version))
7364 (sha256
7365 (base32
d6fb32b8 7366 "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg"))))
670ee20a
BW
7367 (build-system ruby-build-system)
7368 (native-inputs
7369 `(("bundler" ,bundler)))
7370 (synopsis "Rake is a Make-like program implemented in Ruby")
7371 (description
7372 "Rake is a Make-like program where tasks and dependencies are specified
7373in standard Ruby syntax.")
7374 (home-page "https://github.com/ruby/rake")
7375 (license license:expat)))
45498f51 7376
1f10e28d 7377(define-public ruby-childprocess-0.6
45498f51
DM
7378 (package
7379 (name "ruby-childprocess")
1f10e28d 7380 (version "0.6.3")
45498f51
DM
7381 (source
7382 (origin
7383 (method url-fetch)
7384 (uri (rubygems-uri "childprocess" version))
7385 (sha256
7386 (base32
1f10e28d 7387 "1p3f43scdzx9zxmy2kw5zsc3az6v46nq4brwcxmnscjy4w4racbv"))))
45498f51
DM
7388 (build-system ruby-build-system)
7389 (arguments
7390 `(#:tests? #f))
7391 (native-inputs
7392 `(("bundler" ,bundler)
7393 ("ruby-rspec" ,ruby-rspec)))
7394 (propagated-inputs
7395 `(("ruby-ffi" ,ruby-ffi)))
7396 (synopsis "Control external programs running in the background, in Ruby")
7397 (description "@code{childprocess} provides a gem to control external
7398programs running in the background, in Ruby.")
7399 (home-page "http://github.com/enkessler/childprocess")
7400 (license license:expat)))
1f10e28d
DM
7401
7402(define-public ruby-childprocess
7403 (package
7404 (inherit ruby-childprocess-0.6)
7405 (name "ruby-childprocess")
7406 (version "0.9.0")
7407 (source
7408 (origin
7409 (method url-fetch)
7410 (uri (rubygems-uri "childprocess" version))
7411 (sha256
7412 (base32
7413 "0a61922kmvcxyj5l70fycapr87gz1dzzlkfpq85rfqk5vdh3d28p"))))))
0d16905b
JL
7414
7415(define-public ruby-public-suffix
7416 (package
7417 (name "ruby-public-suffix")
7418 (version "3.0.3")
7419 (source (origin
7420 (method url-fetch)
7421 (uri (rubygems-uri "public_suffix" version))
7422 (sha256
7423 (base32
7424 "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l"))))
7425 (build-system ruby-build-system)
7426 (arguments
1f4fc125
CB
7427 '(#:phases
7428 (modify-phases %standard-phases
7429 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
7430 ;; including it as an input can lead to circular dependencies.
7431 (add-after 'unpack 'remove-rubocop-from-Rakefile
7432 (lambda _
7433 (substitute* "Rakefile"
7434 (("require \"rubocop/rake\\_task\"") "")
7435 (("RuboCop::RakeTask\\.new") ""))
7436 #t)))))
7437 (native-inputs
7438 `(("bundler" ,bundler)
7439 ("ruby-yard" ,ruby-yard)
7440 ("ruby-mocha" ,ruby-mocha)
7441 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
0d16905b
JL
7442 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
7443 (synopsis "Domain name parser")
7444 (description "The gem @code{public_suffix} is a domain name parser,
7445written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
7446is one under which Internet users can (or historically could) directly
7447register names. Some examples of public suffixes are @code{.com},
7448@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
7449all known public suffixes.")
7450 (license license:expat)))
6f2c4efb
JL
7451
7452(define-public ruby-addressable
7453 (package
7454 (name "ruby-addressable")
0a794b30 7455 (version "2.6.0")
6f2c4efb
JL
7456 (source (origin
7457 (method url-fetch)
7458 (uri (rubygems-uri "addressable" version))
7459 (sha256
7460 (base32
0a794b30 7461 "0bcm2hchn897xjhqj9zzsxf3n9xhddymj4lsclz508f4vw3av46l"))))
6f2c4efb 7462 (build-system ruby-build-system)
0a794b30
CB
7463 (arguments
7464 '(#:test-target "spec"
7465 #:phases
7466 (modify-phases %standard-phases
7467 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
7468 (lambda _
7469 (substitute* "Gemfile"
7470 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
7471 ((".*launchy.*") "")
7472 ((".*rake.*") "gem 'rake'\n")
7473 ((".*redcarpet.*") ""))
7474 #t))
7475 (add-before 'check 'delete-network-dependent-test
7476 (lambda _
7477 (delete-file "spec/addressable/net_http_compat_spec.rb")
7478 #t)))))
7479 (native-inputs
7480 `(("ruby-rspec" ,ruby-rspec)
7481 ("bundler" ,bundler)
7482 ("ruby-idn-ruby" ,ruby-idn-ruby)
7483 ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
7484 ("ruby-rspec-its", ruby-rspec-its)
7485 ("ruby-yard" ,ruby-yard)
7486 ("ruby-simplecov" ,ruby-simplecov)))
6f2c4efb
JL
7487 (propagated-inputs
7488 `(("ruby-public-suffix" ,ruby-public-suffix)))
6f2c4efb
JL
7489 (home-page "https://github.com/sporkmonger/addressable")
7490 (synopsis "Alternative URI implementation")
7491 (description "Addressable is a replacement for the URI implementation that
7492is part of Ruby's standard library. It more closely conforms to RFC 3986,
7493RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
7494 (license license:asl2.0)))
9c7f15c0
JL
7495
7496(define-public ruby-colorator
7497 (package
7498 (name "ruby-colorator")
7499 (version "1.1.0")
7500 (source (origin
7501 (method url-fetch)
7502 (uri (rubygems-uri "colorator" version))
7503 (sha256
7504 (base32
7505 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
7506 (build-system ruby-build-system)
7507 (arguments
7508 ;; No test target
7509 `(#:tests? #f))
7510 (home-page "http://octopress.org/colorator/")
7511 (synopsis "Terminal color library")
7512 (description "Colorator is a Ruby gem that helps you colorize your text
7513for the terminal.")
7514 (license license:expat)))
78b9c291
JL
7515
7516(define-public ruby-command-line-reporter
7517 (package
7518 (name "ruby-command-line-reporter")
7519 (version "4.0.0")
7520 (source (origin
7521 (method url-fetch)
7522 (uri (rubygems-uri "command_line_reporter" version))
7523 (sha256
7524 (base32
7525 "1qma35xrb772whxwy1rs9bicb9d6lvz0s2dd2dnn4fr6zcbcxc0a"))))
7526 (build-system ruby-build-system)
7527 (arguments
7528 ;; No Rakefile
7529 `(#:tests? #f
7530 #:phases
7531 (modify-phases %standard-phases
7532 (add-before 'build 'fix-dependencies
7533 (lambda _
7534 (substitute* ".gemspec"
7535 ;; colored is unmaintained
7536 (("colored") "colorator")
7537 ;; colorator version
7538 (("= 1.2") "= 1.1"))
7539 #t)))))
7540 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
7541 (home-page "https://github.com/wbailey/command_line_reporter")
7542 (synopsis "Report production while executing Ruby scripts")
7543 (description "This gem provides a DSL that makes it easy to write reports
7544of various types in ruby. It eliminates the need to litter your source with
7545puts statements, instead providing a more readable, expressive interface to
7546your application.")
7547 (license license:asl2.0)))
f22c0387
JL
7548
7549(define-public ruby-command-line-reporter-3
7550 (package
7551 (inherit ruby-command-line-reporter)
7552 (version "3.3.6")
7553 (source (origin
7554 (method url-fetch)
7555 (uri (rubygems-uri "command_line_reporter" version))
7556 (sha256
7557 (base32
7558 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
6bba8ecf
JL
7559
7560(define-public ruby-rdoc
7561 (package
7562 (name "ruby-rdoc")
7563 (version "6.0.4")
7564 (source
7565 (origin
7566 (method url-fetch)
7567 (uri (rubygems-uri "rdoc" version))
7568 (sha256
7569 (base32
7570 "0anv42cqcdc6g4n386mrva7mgav5i0c2ry3yzvzzc6z6hymkmcr7"))))
7571 (build-system ruby-build-system)
7572 (native-inputs
7573 `(("bundler" ,bundler)))
7574 (home-page "https://ruby.github.io/rdoc/")
7575 (synopsis "HTML and command-line documentation utility")
7576 (description "RDoc produces HTML and command-line documentation for Ruby
7577projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
7578documentation from the command-line.")
7579 (license license:gpl2+)))
18077ffc
JL
7580
7581(define-public ruby-sass-listen
7582 (package
7583 (name "ruby-sass-listen")
7584 (version "4.0.0")
7585 (source (origin
7586 (method url-fetch)
7587 (uri (rubygems-uri "sass-listen" version))
7588 (sha256
7589 (base32
7590 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
7591 (build-system ruby-build-system)
7592 (arguments
7593 ;; No test target
7594 `(#:tests? #f))
7595 (propagated-inputs
7596 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
7597 ("ruby-rb-inotify" ,ruby-rb-inotify)))
7598 (home-page "https://github.com/sass/listen")
7599 (synopsis "File modification notification library")
7600 (description "The Listen gem listens to file modifications and notifies you
7601about the changes.")
7602 (license license:expat)))
0c8eedc1
JL
7603
7604(define-public ruby-terminfo
7605 (package
7606 (name "ruby-terminfo")
7607 (version "0.1.1")
7608 (source
7609 (origin
7610 (method url-fetch)
7611 (uri (rubygems-uri "ruby-terminfo" version))
7612 (sha256
7613 (base32
7614 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
7615 (build-system ruby-build-system)
7616 (arguments
7617 `(#:test-target "test"
7618 ;; Rakefile requires old packages and would need modification to
7619 ;; work with current software.
7620 #:tests? #f))
7621 (inputs
7622 `(("ncurses" ,ncurses)))
7623 (native-inputs
7624 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
7625 ("ruby-rdoc" ,ruby-rdoc)))
7626 (home-page "http://www.a-k-r.org/ruby-terminfo/")
7627 (synopsis "Terminfo binding for Ruby")
7628 (description "Ruby-terminfo provides terminfo binding for Ruby.")
7629 (license license:bsd-3)))
ddc3a667
JL
7630
7631(define-public ruby-diffy
7632 (package
7633 (name "ruby-diffy")
7634 (version "3.2.1")
7635 (source
7636 (origin
7637 (method url-fetch)
7638 (uri (rubygems-uri "diffy" version))
7639 (sha256
7640 (base32
7641 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
7642 (build-system ruby-build-system)
7643 (arguments
7644 ;; No tests
7645 `(#:tests? #f))
7646 (native-inputs
7647 `(("ruby-rspec" ,ruby-rspec)))
7648 (home-page "https://github.com/samg/diffy")
7649 (synopsis "Convenient diffing in ruby")
7650 (description "Diffy provides a convenient way to generate a diff from two
7651strings or files.")
7652 (license license:expat)))
6456beef
JL
7653
7654(define-public ruby-sass-spec
7655 (package
7656 (name "ruby-sass-spec")
7657 (version "3.5.4")
7658 (source (origin
7659 (method url-fetch)
7660 (uri (string-append "https://github.com/sass/sass-spec/archive/v"
7661 version ".tar.gz"))
7662 (file-name (string-append name "-" version ".tar.gz"))
7663 (sha256
7664 (base32
7665 "0nx8lp7c9qa58w489crgqa3c489xsyarn1a8h4np9mwwfqm1h3rr"))))
7666 (build-system ruby-build-system)
7667 (propagated-inputs
7668 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
7669 ("ruby-diffy" ,ruby-diffy)
7670 ("ruby-terminfo" ,ruby-terminfo)))
7671 (arguments
2c7cb711
CB
7672 `(;; This package contains tests for a sass implementation, and the to
7673 ;; avoid any circular dependencies, the tests are not run here
7674 #:tests? #f
7675 #:phases
7676 (modify-phases %standard-phases
7677 (add-after 'unpack 'patch-test
7678 (lambda _
7679 (delete-file "spec/values/colors/alpha_hex-3.5/error")
7680 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
7681 (("string") "color")))))))
6456beef
JL
7682 (home-page "https://github.com/sass/sass-spec")
7683 (synopsis "Test suite for Sass")
7684 (description "Sass Spec is a test suite for Sass. Test cases are all in
7685the @file{spec} directory.")
7686 (license license:expat)))
f00f4492
JL
7687
7688(define-public ruby-sass
7689 (package
7690 (name "ruby-sass")
11ff2adc 7691 (version "3.6.0")
f00f4492
JL
7692 (source (origin
7693 (method url-fetch)
7694 (uri (rubygems-uri "sass" version))
7695 (sha256
7696 (base32
11ff2adc 7697 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
f00f4492
JL
7698 (build-system ruby-build-system)
7699 (propagated-inputs
7700 `(("ruby-sass-listen" ,ruby-sass-listen)))
7701 (native-inputs
11ff2adc
CB
7702 `(("ruby-sass-spec" ,ruby-sass-spec)
7703 ("ruby-mathn" ,ruby-mathn)))
f00f4492
JL
7704 (home-page "http://sass-lang.com/")
7705 (synopsis "CSS extension language")
7706 (description "Sass is a CSS extension language. It extends CSS with
7707features that don't exist yet like variables, nesting, mixins and inheritance.")
7708 (license license:expat)))
5e242cb4 7709
9efc888d
CB
7710(define-public ruby-sassc
7711 (package
7712 (name "ruby-sassc")
7713 (version "2.0.1")
7714 (source
7715 (origin
7716 (method url-fetch)
7717 (uri (rubygems-uri "sassc" version))
7718 (sha256
7719 (base32
7720 "1sr4825rlwsrl7xrsm0sgalcpf5zgp4i56dbi3qxfa9lhs8r6zh4"))))
7721 (build-system ruby-build-system)
7722 (arguments
7723 '(#:phases
7724 (modify-phases %standard-phases
7725 ;; TODO: This would be better as a snippet, but the ruby-build-system
7726 ;; doesn't seem to support that
7727 (add-after 'unpack 'remove-libsass
7728 (lambda _
7729 (delete-file-recursively "ext")
7730 #t))
7731 (add-after 'unpack 'dont-check-the-libsass-version
7732 (lambda _
7733 (substitute* "test/native_test.rb"
7734 (("assert_equal.*Native\\.version") ""))
7735 #t))
7736 (add-after 'unpack 'remove-git-from-gemspec
7737 (lambda _
7738 (substitute* "sassc.gemspec"
7739 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`")
7740 (("`git submodule --quiet foreach pwd`") "''"))
7741 #t))
7742 (add-after 'unpack 'remove-extensions-from-gemspec
7743 (lambda _
7744 (substitute* "sassc.gemspec"
7745 (("\\[\"ext/Rakefile\"\\]") "[]"))
7746 #t))
7747 (add-after 'unpack 'fix-Rakefile
7748 (lambda _
7749 (substitute* "Rakefile"
7750 (("test: 'libsass:compile'") ":test"))
7751 #t))
7752 (add-after 'unpack 'remove-unnecessary-dependencies
7753 (lambda _
7754 (substitute* "test/test_helper.rb"
7755 (("require \"pry\"") ""))
7756 #t))
7757 (add-before 'build 'patch-native.rb
7758 (lambda* (#:key inputs #:allow-other-keys)
7759 (substitute* "lib/sassc/native.rb"
7760 ((".*gem_root = spec.gem_dir") "")
7761 (("ffi_lib .*\n")
7762 (string-append
7763 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))
7764 #t))
7765 ;; The gemspec still references the libsass files, so just keep the
7766 ;; one in the gem.
7767 (delete 'extract-gemspec))))
7768 (propagated-inputs
7769 `(("ruby-ffi" ,ruby-ffi)
7770 ("ruby-rake" ,ruby-rake)))
7771 (inputs
7772 `(("libsass" ,libsass)))
7773 (native-inputs
7774 `(("bundler" ,bundler)
7775 ("ruby-minitest-around" ,ruby-minitest-around)
7776 ("ruby-test-construct" ,ruby-test-construct)))
7777 (synopsis "Use libsss from Ruby")
7778 (description
7779 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
7780bindings to the libsass library. This enables rendering
7781@acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
7782 (home-page "https://github.com/sass/sassc-ruby")
7783 (license license:expat)))
7784
5e242cb4
JL
7785(define-public ruby-jekyll-sass-converter
7786 (package
7787 (name "ruby-jekyll-sass-converter")
7788 (version "1.5.2")
7789 (source (origin
7790 (method url-fetch)
7791 (uri (rubygems-uri "jekyll-sass-converter" version))
7792 (sha256
7793 (base32
7794 "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk"))))
7795 (build-system ruby-build-system)
7796 (propagated-inputs
7797 `(("ruby-sass" ,ruby-sass)))
7798 (arguments
7799 ;; No rakefile
7800 `(#:tests? #f))
7801 (home-page "https://github.com/jekyll/jekyll-sass-converter")
7802 (synopsis "Sass converter for Jekyll")
7803 (description "This gem provide built-in support for the Sass converter
7804in Jekyll.")
7805 (license license:expat)))
ceac6f6f
JL
7806
7807(define-public ruby-jekyll-watch
7808 (package
7809 (name "ruby-jekyll-watch")
6cbba8a3 7810 (version "2.1.2")
ceac6f6f
JL
7811 (source (origin
7812 (method url-fetch)
7813 (uri (rubygems-uri "jekyll-watch" version))
7814 (sha256
7815 (base32
6cbba8a3 7816 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
ceac6f6f
JL
7817 (build-system ruby-build-system)
7818 (propagated-inputs
6cbba8a3 7819 `(("ruby-listen" ,ruby-listen)))
ceac6f6f
JL
7820 (arguments
7821 ;; No rakefile
7822 `(#:tests? #f))
7823 (home-page "https://github.com/jekyll/jekyll-watch")
7824 (synopsis "Jekyll auto-rebuild support")
7825 (description "This gems add the @code{--watch} switch to the jekyll CLI
7826interface. It allows Jekyll to rebuild your site when a file changes.")
7827 (license license:expat)))
3224a5a8
JL
7828
7829(define-public ruby-parallel
7830 (package
7831 (name "ruby-parallel")
c41fba01
CB
7832 (version "1.13.0")
7833 (source
7834 (origin
7835 (method git-fetch)
7836 (uri (git-reference
7837 (url "https://github.com/grosser/parallel.git")
7838 (commit (string-append "v" version))))
7839 (file-name (git-file-name name version))
7840 (sha256
7841 (base32
7842 "1isqzbqxz2ndad4i5z3lb9ldrhaijfncj8bmffv04sq44sv87ikv"))))
3224a5a8 7843 (build-system ruby-build-system)
c41fba01
CB
7844 (arguments
7845 `(;; TODO 3 test failures
7846 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
7847 ;; open unnecessary pipes
7848 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
7849 ;; SQLite in processes
7850 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
7851 ;; SQLite in threads
7852 #:tests? #f
7853 #:test-target "rspec-rerun:spec"
7854 #:phases
7855 (modify-phases %standard-phases
7856 (add-after 'unpack 'patch-Gemfile
7857 (lambda _
7858 (substitute* "Gemfile"
7859 (("gem 'rspec-legacy_formatters'") "")
7860 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
7861 (add-before 'check 'delete-Gemfile.lock
7862 (lambda _
7863 ;; Bundler isn't being used for fetching dependendencies, so
7864 ;; delete the Gemfile.lock
7865 (delete-file "Gemfile.lock")
7866 #t))
7867 (add-before 'build 'patch-gemspec
7868 (lambda _
7869 (substitute* "parallel.gemspec"
7870 (("git ls-files") "find"))
7871 #t)))))
7872 (native-inputs
7873 `(("ruby-rspec" ,ruby-rspec)
7874 ("ruby-rspec-rerun" ,ruby-rspec-rerun)
7875 ("bundler" ,bundler)
7876 ("ruby-activerecord" ,ruby-activerecord)
7877 ("ruby-progressbar" ,ruby-progressbar)
7878 ("ruby-bump" ,ruby-bump)
7879 ("procps" ,procps)
7880 ("lsof" ,lsof)
7881 ("ruby-mysql2" ,ruby-mysql2)
7882 ("ruby-sqlite3" ,ruby-sqlite3)
7883 ("ruby-i18n" ,ruby-i18n)))
3224a5a8
JL
7884 (home-page "https://github.com/grosser/parallel")
7885 (synopsis "Parallel processing in Ruby")
7886 (description "Parallel allows you to run any code in parallel Processes
7887(to use all CPUs) or Threads(to speedup blocking operations). It is best
7888suited for map-reduce or e.g. parallel downloads/uploads.")
7889 (license license:expat)))
83d9f672
JL
7890
7891(define-public ruby-cane
7892 (package
7893 (name "ruby-cane")
7894 (version "3.0.0")
7895 (source (origin
7896 (method url-fetch)
7897 (uri (rubygems-uri "cane" version))
7898 (sha256
7899 (base32
7900 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
7901 (build-system ruby-build-system)
7902 (arguments `(#:tests? #f)); No rakefile
7903 (home-page "https://github.com/square/cane")
7904 (propagated-inputs
7905 `(("ruby-parallel" ,ruby-parallel)))
7906 (synopsis "Code quality threshold checking")
7907 (description "Cane fails your build if code quality thresholds are not met.")
7908 (license license:asl2.0)))
00d71efc
JL
7909
7910(define-public ruby-morecane
7911 (package
7912 (name "ruby-morecane")
7913 (version "0.2.0")
7914 (source (origin
7915 (method url-fetch)
7916 (uri (rubygems-uri "morecane" version))
7917 (sha256
7918 (base32
7919 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
7920 (build-system ruby-build-system)
7921 (home-page "https://github.com/yob/morecane")
7922 (arguments `(#:tests? #f)); No rakefile
7923 (propagated-inputs
7924 `(("ruby-parallel" ,ruby-parallel)))
7925 (synopsis "Extra checks for cane")
7926 (description "The cane gem provides a great framework for running quality
7927checks over your ruby project as part of continuous integration build. It
7928comes with a few checks out of the box, but also provides an API for loading
7929custom checks. This gem provides a set of additional checks.")
7930 (license license:expat)))
abbe629c
JL
7931
7932(define-public ruby-pdf-reader
7933 (package
7934 (name "ruby-pdf-reader")
7935 (version "2.1.0")
7936 (source (origin
7937 (method url-fetch)
7938 (uri (rubygems-uri "pdf-reader" version))
7939 (sha256
7940 (base32
7941 "1b3ig4wpcgdbqa7yw0ahwbmikkkywn2a22bfmrknl5ls7g066x45"))))
7942 (build-system ruby-build-system)
7943 (arguments `(#:test-target "spec"))
7944 (native-inputs
7945 `(("bundler" ,bundler)
7946 ("ruby-rspec" ,ruby-rspec)
7947 ("ruby-cane" ,ruby-cane)
7948 ("ruby-morecane" ,ruby-morecane)))
7949 (propagated-inputs
7950 `(("ruby-afm" ,ruby-afm)
7951 ("ruby-ascii85" ,ruby-ascii85)
7952 ("ruby-hashery" ,ruby-hashery)
7953 ("ruby-rc4" ,ruby-rc4)
7954 ("ruby-ttfunk" ,ruby-ttfunk)))
7955 (home-page "https://github.com/yob/pdf-reader")
7956 (synopsis "PDF parser in Ruby")
7957 (description "The PDF::Reader library implements a PDF parser conforming as
7958much as possible to the PDF specification from Adobe. It provides programmatic
7959access to the contents of a PDF file with a high degree of flexibility.")
7960 (license license:gpl3+)))
461fb859
JL
7961
7962(define-public ruby-pdf-inspector
7963 (package
7964 (name "ruby-pdf-inspector")
7965 (version "1.3.0")
7966 (source (origin
7967 (method url-fetch)
7968 (uri (rubygems-uri "pdf-inspector" version))
7969 (sha256
7970 (base32
7971 "1g853az4xzgqxr5xiwhb76g4sqmjg4s79mm35mp676zjsrwpa47w"))))
7972 (build-system ruby-build-system)
7973 (propagated-inputs
7974 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
7975 (arguments `(#:tests? #f)); No rakefile
7976 (home-page "https://github.com/prawnpdf/pdf-inspector")
7977 (synopsis "Analysis classes for inspecting PDF output")
7978 (description "This library provides a number of PDF::Reader based tools for
7979use in testing PDF output. Presently, the primary purpose of this tool is to
7980support the tests found in Prawn, a pure Ruby PDF generation library.")
7981 (license license:gpl3+)))
770e3b53
JL
7982
7983(define-public ruby-pdf-core
7984 (package
7985 (name "ruby-pdf-core")
7986 (version "0.8.1")
7987 (source (origin
7988 (method url-fetch)
7989 (uri (rubygems-uri "pdf-core" version))
7990 (sha256
7991 (base32
7992 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
7993 (build-system ruby-build-system)
7994 (arguments
7995 ; No test target
7996 `(#:tests? #f))
7997 (home-page "https://github.com/prawnpdf/pdf-core")
7998 (synopsis "Low level PDF features for Prawn")
7999 (description "This is an experimental gem that extracts low-level PDF
8000functionality from Prawn.")
8001 (license license:gpl3+)))
37fbced7 8002
7ad8dd08
JL
8003(define-public ruby-prawn
8004 (package
8005 (name "ruby-prawn")
8006 (version "2.2.2")
8007 (source (origin
8008 (method url-fetch)
8009 (uri (rubygems-uri "prawn" version))
8010 (sha256
8011 (base32
8012 "1qdjf1v6sfl44g3rqxlg8k4jrzkwaxgvh2l4xws97a8f3xv4na4m"))))
8013 (build-system ruby-build-system)
8014 (arguments
8015 ; No tests
8016 `(#:tests? #f
8017 #:phases
8018 (modify-phases %standard-phases
8019 (add-before 'build 'fix-dependencies
8020 (lambda _
8021 (substitute* "prawn.gemspec"
8022 (("~> 0.7.0") "~> 0.7"))
8023 #t)))))
8024 (propagated-inputs
8025 `(("ruby-pdf-core" ,ruby-pdf-core)
8026 ("ruby-ttfunk" ,ruby-ttfunk)))
8027 (native-inputs
8028 `(("bundler" ,bundler)
8029 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
8030 ("ruby-rspec" ,ruby-rspec)
8031 ("ruby-simplecov" ,ruby-simplecov)
8032 ("ruby-yard" ,ruby-yard)))
8033 (home-page "http://prawnpdf.org/api-docs/2.0/")
8034 (synopsis "PDF generation for Ruby")
8035 (description "Prawn is a pure Ruby PDF generation library.")
8036 (license license:gpl3+)))
197ca8ec
JL
8037
8038(define-public ruby-prawn-table
8039 (package
8040 (name "ruby-prawn-table")
8041 (version "0.2.2")
8042 (source (origin
8043 (method url-fetch)
8044 (uri (rubygems-uri "prawn-table" version))
8045 (sha256
8046 (base32
8047 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
8048 (build-system ruby-build-system)
197ca8ec 8049 (propagated-inputs
0927b039
CB
8050 `(("ruby-prawn" ,ruby-prawn)
8051 ("ruby-pdf-inspector" ,ruby-pdf-inspector)))
8052 (native-inputs
8053 `(("bundler" ,bundler)
8054 ("ruby-yard" ,ruby-yard)
8055 ("ruby-mocha" ,ruby-mocha)
8056 ("ruby-coderay" ,ruby-coderay)
8057 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
8058 ("ruby-simplecov" ,ruby-simplecov)
8059 ("ruby-rspec-2" ,ruby-rspec-2)))
8060 (arguments
8061 '(;; TODO: 1 test fails
8062 ;; Failure/Error: pdf.page_count.should == 1
8063 ;; expected: 1
8064 ;; got: 2 (using ==)
8065 ;; # ./spec/table_spec.rb:1308
8066 ;;
8067 ;; 225 examples, 1 failure
8068 #:tests? #f
8069 #:phases
8070 (modify-phases %standard-phases
8071 (add-before 'check 'patch-gemspec
8072 (lambda _
8073 (substitute* "prawn-table.gemspec"
8074 ;; Loosen the requirement for pdf-inspector
8075 (("~> 1\\.1\\.0") ">= 0")
8076 ;; Loosen the requirement for pdf-reader
8077 (("~> 1\\.2") ">= 0"))))
8078 (replace 'check
8079 (lambda* (#:key tests? #:allow-other-keys)
8080 (when tests?
8081 (invoke "rspec"))
8082 #t)))))
197ca8ec
JL
8083 (home-page "https://github.com/prawnpdf/prawn-table")
8084 (synopsis "Tables support for Prawn")
8085 (description "This gem provides tables support for Prawn.")
8086 (license license:gpl3+)))
03127069
JL
8087
8088(define-public ruby-kramdown
8089 (package
8090 (name "ruby-kramdown")
8091 (version "1.17.0")
8092 (source (origin
8093 (method url-fetch)
8094 (uri (rubygems-uri "kramdown" version))
8095 (sha256
8096 (base32
8097 "1n1c4jmrh5ig8iv1rw81s4mw4xsp4v97hvf8zkigv4hn5h542qjq"))))
8098 (build-system ruby-build-system)
8099 (arguments `(#:tests? #f)); FIXME: some test failures
8100 (native-inputs
8101 `(("ruby-prawn" ,ruby-prawn)
8102 ("ruby-prawn-table" ,ruby-prawn-table)))
8103 (home-page "https://kramdown.gettalong.org/")
8104 (synopsis "Markdown parsing and converting library")
8105 (description "Kramdown is a library for parsing and converting a superset
8106of Markdown. It is completely written in Ruby, supports standard Markdown
8107(with some minor modifications) and various extensions that have been made
8108popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
8109 (license license:expat)))
fa0063bc
JL
8110
8111(define-public ruby-http-parser.rb
8112 (package
8113 (name "ruby-http-parser.rb")
8114 (version "0.6.0")
8115 (source
8116 (origin
8117 (method url-fetch)
8118 (uri (rubygems-uri "http_parser.rb" version))
8119 (sha256
8120 (base32
8121 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
8122 (build-system ruby-build-system)
8123 (arguments
8124 ;; No tests
8125 `(#:tests? #f))
8126 (native-inputs
8127 `(("ruby-rake-compiler" ,ruby-rake-compiler)
8128 ("ruby-rspec" ,ruby-rspec)))
8129 (home-page "https://github.com/tmm1/http_parser.rb")
8130 (synopsis "HTTP parser un Ruby")
8131 (description "This gem is a simple callback-based HTTP request/response
8132parser for writing http servers, clients and proxies.")
8133 (license license:expat)))
5e2f74bd
JL
8134
8135(define-public ruby-em-websocket
8136 (package
8137 (name "ruby-em-websocket")
8138 (version "0.5.1")
8139 (source
8140 (origin
8141 (method url-fetch)
8142 (uri (rubygems-uri "em-websocket" version))
8143 (sha256
8144 (base32
8145 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
8146 (build-system ruby-build-system)
8147 (arguments
8148 ;; No tests
8149 `(#:tests? #f))
8150 (propagated-inputs
8151 `(("ruby-eventmachine" ,ruby-eventmachine)
8152 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
8153 (native-inputs
8154 `(("bundler" ,bundler)
8155 ("ruby-rspec" ,ruby-rspec)))
8156 (home-page "https://github.com/igrigorik/em-websocket")
8157 (synopsis "EventMachine based WebSocket server")
8158 (description "Em-websocket is an EventMachine based WebSocket server
8159implementation.")
8160 (license license:expat)))
4ce0414b
JL
8161
8162(define-public ruby-rouge
8163 (package
8164 (name "ruby-rouge")
8165 (version "3.2.1")
8166 (source (origin
8167 (method url-fetch)
8168 (uri (rubygems-uri "rouge" version))
8169 (sha256
8170 (base32
8171 "0h79gn2wmn1wix2d27lgiaimccyj8gvizrllyym500pir408x62f"))))
8172 (build-system ruby-build-system)
8173 (arguments `(#:tests? #f)); No rakefile
8174 (home-page "http://rouge.jneen.net/")
8175 (synopsis "Code highlighter")
8176 (description "Rouge is a code highlighter written in Ruby. It supports more
8177than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
8178is compatible with stylesheets designed for pygments.")
8179 (license (list
8180 ;; rouge is licensed under expat
8181 license:expat
8182 ;; pygments is licensed under bsd-2
8183 license:bsd-2))))
2c5028bd
JL
8184
8185(define-public ruby-rouge-2
8186 (package
8187 (inherit ruby-rouge)
8188 (version "2.2.1")
8189 (source (origin
8190 (method url-fetch)
8191 (uri (rubygems-uri "rouge" version))
8192 (sha256
8193 (base32
8194 "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs"))))))
2e072e37
JL
8195
8196(define-public ruby-hashie
8197 (package
8198 (name "ruby-hashie")
8199 (version "3.6.0")
8200 (source (origin
8201 (method url-fetch)
8202 (uri (rubygems-uri "hashie" version))
8203 (sha256
8204 (base32
8205 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
8206 (build-system ruby-build-system)
8207 (native-inputs
8208 `(("bundler" ,bundler)))
8209 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
8210 (home-page "https://github.com/intridea/hashie")
8211 (synopsis "Extensions to Ruby Hashes")
8212 (description "Hashie is a collection of classes and mixins that make Ruby
8213hashes more powerful.")
8214 (license license:expat)))
73bfc125
JL
8215
8216(define-public ruby-heredoc-unindent
8217 (package
8218 (name "ruby-heredoc-unindent")
8219 (version "1.2.0")
8220 (source (origin
8221 (method url-fetch)
8222 (uri (rubygems-uri "heredoc_unindent" version))
8223 (sha256
8224 (base32
8225 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
8226 (build-system ruby-build-system)
8227 (native-inputs
8228 `(("ruby-hoe" ,ruby-hoe)))
8229 (home-page "https://github.com/adrianomitre/heredoc_unindent")
8230 (synopsis "Heredoc indentation cleaner")
8231 (description "This gem removes common margin from indented strings, such
8232as the ones produced by indented heredocs. In other words, it strips out
4f66ae28 8233leading whitespace chars at the beginning of each line, but only as much as
73bfc125
JL
8234the line with the smallest margin.
8235
8236It is acknowledged that many strings defined by heredocs are just code and
8237fact is that most parsers are insensitive to indentation. If, however, the
8238strings are to be used otherwise, be it for printing or testing, the extra
8239indentation will probably be an issue and hence this gem.")
8240 (license license:expat)))
f8ae2ee5
JL
8241
8242(define-public ruby-safe-yaml
8243 (package
8244 (name "ruby-safe-yaml")
8245 (version "1.0.4")
28cf8dab
CB
8246 (source
8247 (origin
8248 ;; TODO Fetch from the git repository so a patch can be applied
8249 (method git-fetch)
8250 (uri (git-reference
8251 (url "https://github.com/dtao/safe_yaml.git")
8252 (commit version)))
8253 (file-name (git-file-name name version))
8254 (sha256
8255 (base32
8256 "1wnln8xdy8g6kwdj4amm8773xwffqxpf2sxslk6jjh2wxsy1lrig"))
8257 (patches
8258 (search-patches "ruby-safe-yaml-add-require-time.patch"))))
f8ae2ee5
JL
8259 (build-system ruby-build-system)
8260 (native-inputs
8261 `(("ruby-rspec" ,ruby-rspec)
8262 ("ruby-hashie" ,ruby-hashie)
8263 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
28cf8dab
CB
8264 (arguments
8265 '(#:test-target "spec"
8266 #:phases
8267 (modify-phases %standard-phases
8268 (add-before 'check 'set-TZ
8269 (lambda _
8270 ;; This test is dependent on the timezone
8271 ;; spec/transform/to_date_spec.rb:35
8272 ;; # SafeYAML::Transform::ToDate converts times to the local
8273 ;; timezone
8274 (setenv "TZ" "UTC-11")
8275 #t)))))
f8ae2ee5
JL
8276 (home-page "https://github.com/dtao/safe_yaml")
8277 (synopsis "YAML parser")
8278 (description "The SafeYAML gem provides an alternative implementation of
8279YAML.load suitable for accepting user input in Ruby applications.")
8280 (license license:expat)))
f1ec4d76
JL
8281
8282(define-public ruby-mercenary
8283 (package
8284 (name "ruby-mercenary")
8285 (version "0.3.6")
8286 (source (origin
8287 (method url-fetch)
8288 (uri (rubygems-uri "mercenary" version))
8289 (sha256
8290 (base32
8291 "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"))))
8292 (build-system ruby-build-system)
8293 (arguments `(#:test-target "spec"))
8294 (native-inputs
8295 `(("bundler" ,bundler)))
8296 (home-page "https://github.com/jekyll/mercenary")
8297 (synopsis "Command-line apps library in Ruby")
8298 (description "Mercenary is a lightweight and flexible library for writing
8299command-line apps in Ruby.")
8300 (license license:expat)))
a13d451e
JL
8301
8302(define-public ruby-liquid
8303 (package
8304 (name "ruby-liquid")
8305 (version "4.0.0")
8306 (source (origin
8307 (method url-fetch)
8308 (uri (rubygems-uri "liquid" version))
8309 (sha256
8310 (base32
8311 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
8312 (build-system ruby-build-system)
8313 (arguments `(#:tests? #f)); No rakefile
8314 (home-page "https://shopify.github.io/liquid/")
8315 (synopsis "Template language")
8316 (description "Liquid is a template language written in Ruby. It is used
8317to load dynamic content on storefronts.")
8318 (license license:expat)))
49395112
JL
8319
8320(define-public ruby-forwardable-extended
8321 (package
8322 (name "ruby-forwardable-extended")
8323 (version "2.6.0")
8324 (source (origin
8325 (method url-fetch)
8326 (uri (rubygems-uri "forwardable-extended" version))
8327 (sha256
8328 (base32
8329 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
8330 (build-system ruby-build-system)
8331 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
8332 (home-page "https://github.com/envygeeks/forwardable-extended")
8333 (synopsis "Delegation to hashes and instance variables in Forwardable")
8334 (description "Forwardable Extended provides more @code{Forwardable}
8335methods for your source as @code{Forwardable::Extended}.")
8336 (license license:expat)))
37296113
JL
8337
8338(define-public ruby-pathutil
8339 (package
8340 (name "ruby-pathutil")
8341 (version "0.16.1")
8342 (source (origin
8343 (method url-fetch)
8344 (uri (rubygems-uri "pathutil" version))
8345 (sha256
8346 (base32
8347 "0wc18ms1rzi44lpjychyw2a96jcmgxqdvy2949r4vvb5f4p0lgvz"))))
8348 (build-system ruby-build-system)
8349 (propagated-inputs
8350 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
8351 (native-inputs
8352 `(("bundler" ,bundler)
8353 ("ruby-rspec" ,ruby-rspec)))
8354 ;; Fails with: cannot load such file --
8355 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
8356 (arguments `(#:tests? #f))
8357 (home-page "https://github.com/envygeeks/pathutil")
8358 (synopsis "Extended implementation of Pathname")
8359 (description "Pathutil tries to be a faster pure Ruby implementation of
8360Pathname.")
8361 (license license:expat)))
49e1dde5
JL
8362
8363(define-public jekyll
8364 (package
8365 (name "jekyll")
5cf3e6fc 8366 (version "3.8.5")
49e1dde5
JL
8367 (source (origin
8368 (method url-fetch)
8369 (uri (rubygems-uri "jekyll" version))
8370 (sha256
8371 (base32
5cf3e6fc 8372 "1nn2sc308l2mz0yiall4r90l6vy67qp4sy9zapi73a948nd4a5k3"))))
49e1dde5
JL
8373 (build-system ruby-build-system)
8374 (arguments
8375 ;; No rakefile, but a test subdirectory
8376 `(#:tests? #f
8377 #:phases
8378 (modify-phases %standard-phases
8379 (add-before 'build 'fix-i18n
8380 (lambda _
8381 (substitute* ".gemspec"
8382 (("~> 0.7") ">= 0.7"))
8383 #t)))))
8384 (propagated-inputs
8385 `(("ruby-addressable" ,ruby-addressable)
8386 ("ruby-colorator" ,ruby-colorator)
8387 ("ruby-em-websocket" ,ruby-em-websocket)
8388 ("ruby-i18n" ,ruby-i18n)
8389 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
8390 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
8391 ("ruby-kramdown" ,ruby-kramdown)
8392 ("ruby-liquid" ,ruby-liquid)
8393 ("ruby-mercenary" ,ruby-mercenary)
8394 ("ruby-pathutil" ,ruby-pathutil)
8395 ("ruby-rouge" ,ruby-rouge-2)
8396 ("ruby-safe-yaml" ,ruby-safe-yaml)))
8397 (home-page "https://jekyllrb.com/")
8398 (synopsis "Static site generator")
8399 (description "Jekyll is a simple, blog aware, static site generator.")
8400 (license license:expat)))
37a0f470
JL
8401
8402(define-public ruby-jekyll-paginate-v2
8403 (package
8404 (name "ruby-jekyll-paginate-v2")
8405 (version "2.0.0")
8406 (source (origin
8407 (method url-fetch)
8408 (uri (rubygems-uri "jekyll-paginate-v2" version))
8409 (sha256
8410 (base32
8411 "154bfpyml6abxww9868hhyfvxasl8qhsc5zy2q30c7dxaj0igdib"))))
8412 (build-system ruby-build-system)
8413 (propagated-inputs
8414 `(("jekyll" ,jekyll)))
8415 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
8416 (synopsis "Pagination Generator for Jekyll 3")
8417 (description "The Pagination Generator forms the core of the pagination
8418logic in Jekyll. It calculates and generates the pagination pages.")
8419 (license license:expat)))
909eae21
CB
8420
8421(define-public ruby-faraday
8422 (package
8423 (name "ruby-faraday")
8424 (version "0.15.4")
8425 (source
8426 (origin
8427 (method url-fetch)
8428 (uri (rubygems-uri "faraday" version))
8429 (sha256
8430 (base32
8431 "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0"))))
8432 (build-system ruby-build-system)
8433 (arguments
8434 '(#:tests? #f))
8435 (propagated-inputs
8436 `(("ruby-multipart-post" ,ruby-multipart-post)))
8437 (synopsis "Ruby HTTP/REST API client library")
8438 (description
8439 "Faraday is a HTTP/REST API client library which provides a common
8440interface over different adapters.")
8441 (home-page "https://github.com/lostisland/faraday")
8442 (license license:expat)))
a058cbfd
CB
8443
8444(define-public ruby-nio4r
8445 (package
8446 (name "ruby-nio4r")
8447 (version "2.3.1")
8448 (source
8449 (origin
8450 (method url-fetch)
8451 (uri (rubygems-uri "nio4r" version))
8452 (sha256
8453 (base32
8454 "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr"))))
8455 (build-system ruby-build-system)
8456 (arguments
8457 '(#:phases
8458 (modify-phases %standard-phases
8459 (add-after 'unpack 'remove-unnecessary-dependencies
8460 (lambda _
8461 (substitute* "spec/spec_helper.rb"
8462 ;; Coveralls is for uploading test coverage information to an
8463 ;; online service, and thus unnecessary for building the Guix
8464 ;; package
8465 (("require \"coveralls\"") "")
8466 (("Coveralls\\.wear!") "")
8467 ;; Remove rspec/retry as we are not retrying the tests
8468 (("require \"rspec/retry\"") "")
8469 (("config\\.display_try_failure_messages = true") "")
8470 (("config\\.verbose_retry = true") ""))
8471 #t))
8472 (add-before 'check 'compile
8473 (lambda _
8474 (invoke "rake" "compile")
8475 #t))
8476 (replace 'check
8477 (lambda* (#:key tests? #:allow-other-keys)
8478 (when tests?
8479 (invoke "rspec"))
8480 #t)))))
8481 (native-inputs
8482 `(("bundler" ,bundler)
8483 ("ruby-rake-compiler" ,ruby-rake-compiler)
8484 ("ruby-rspec" ,ruby-rspec)
8485 ("ruby-rubocop" ,ruby-rubocop)))
8486 (synopsis "New I/O for Ruby")
8487 (description
8488 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
8489for scalable network clients and servers.")
8490 (home-page "https://github.com/socketry/nio4r")
8491 (license license:expat)))
f9da1ada
CB
8492
8493(define-public ruby-globalid
8494 (package
8495 (name "ruby-globalid")
8496 (version "0.4.2")
8497 (source
8498 (origin
8499 (method url-fetch)
8500 (uri (rubygems-uri "globalid" version))
8501 (sha256
8502 (base32
8503 "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"))))
8504 (build-system ruby-build-system)
8505 (arguments
8506 '(;; No included tests
8507 #:tests? #f))
8508 (propagated-inputs
8509 `(("ruby-activesupport" ,ruby-activesupport)))
8510 (synopsis "Generate URIs idenfitying model instances in Ruby")
8511 (description
8512 "@code{GlobalID} provides a way to generate URIs from a model in Ruby that
8513uniquely identify it.")
8514 (home-page "https://rubyonrails.org/")
8515 (license license:expat)))
15606d98
CB
8516
8517(define-public ruby-sprockets
8518 (package
8519 (name "ruby-sprockets")
8520 (version "3.7.2")
8521 (source
8522 (origin
8523 (method url-fetch)
8524 (uri (rubygems-uri "sprockets" version))
8525 (sha256
8526 (base32
8527 "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"))))
8528 (build-system ruby-build-system)
8529 (arguments
8530 '(;; No included tests
8531 #:tests? #f))
8532 (propagated-inputs
8533 `(("ruby-concurrent" ,ruby-concurrent)
8534 ("ruby-rack" ,ruby-rack)))
8535 (synopsis "Sprockets is a Rack-based asset packaging system")
8536 (description
8537 "Sprockets is a Rack-based asset packaging system that concatenates and
8538serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
8539 (home-page "https://github.com/rails/sprockets")
8540 (license license:expat)))
acb9e3d8
PN
8541
8542(define-public ruby-mustermann
8543 (package
8544 (name "ruby-mustermann")
8545 (version "1.0.3")
8546 (source
8547 (origin
8548 (method url-fetch)
8549 (uri (rubygems-uri "mustermann" version))
8550 (sha256
8551 (base32
8552 "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1"))))
8553 (build-system ruby-build-system)
8554 (arguments
8555 ;; No tests.
8556 '(#:tests? #f))
8557 (synopsis "Library implementing patterns that behave like regular expressions")
8558 (description "Given a string pattern, Mustermann will turn it into an
8559object that behaves like a regular expression and has comparable performance
8560characteristics.")
8561 (home-page "https://github.com/sinatra/mustermann")
8562 (license license:expat)))
3bb094e2
PN
8563
8564(define-public ruby-sinatra
8565 (package
8566 (name "ruby-sinatra")
8567 (version "2.0.5")
8568 (source
8569 (origin
8570 (method url-fetch)
8571 (uri (rubygems-uri "sinatra" version))
8572 (sha256
8573 (base32
8574 "1gasgn5f15myv08k10i16p326pchxjsy37pgqfw0xm66kcc5d7ry"))))
8575 (build-system ruby-build-system)
8576 (propagated-inputs
8577 `(("ruby-mustermann" ,ruby-mustermann)
8578 ("ruby-rack" ,ruby-rack)
8579 ("ruby-rack-protection" ,ruby-rack-protection)
8580 ("ruby-tilt" ,ruby-tilt)))
8581 (synopsis "DSL for quick web applications creation in Ruby")
8582 (description
8583 "Sinatra is a DSL for quickly creating web applications in Ruby with
8584minimal effort.")
8585 (home-page "http://sinatrarb.com/")
8586 (license license:expat)))
6e87695b
PN
8587
8588(define-public ruby-thin
8589 (package
8590 (name "ruby-thin")
8591 (version "1.7.2")
8592 (source
8593 (origin
8594 (method url-fetch)
8595 (uri (rubygems-uri "thin" version))
8596 (sha256
8597 (base32
8598 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
8599 (build-system ruby-build-system)
8600 (arguments
8601 ;; No tests.
8602 '(#:tests? #f))
8603 (propagated-inputs
8604 `(("ruby-daemons" ,ruby-daemons)
8605 ("ruby-eventmachine" ,ruby-eventmachine)
8606 ("ruby-rack" ,ruby-rack)))
8607 (synopsis "Thin and fast web server for Ruby")
8608 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
8609@itemize
8610@item the Mongrel parser,
8611@item Event Machine, a network I/O library with high scalability, performance
8612and stability,
8613@item Rack, a minimal interface between webservers and Ruby frameworks.
8614@end itemize\n")
8615 (home-page "http://code.macournoyer.com/thin/")
8616 (license license:ruby)))
be6016db
PN
8617
8618(define-public ruby-skinny
8619 (package
8620 (name "ruby-skinny")
8621 (version "0.2.4")
8622 (source
8623 (origin
8624 (method url-fetch)
8625 (uri (rubygems-uri "skinny" version))
8626 (sha256
8627 (base32
8628 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
8629 (build-system ruby-build-system)
8630 (arguments
8631 '(#:tests? #f ; No included tests
8632 #:phases
8633 (modify-phases %standard-phases
8634 (add-before 'build 'patch-gemspec
8635 (lambda _
8636 (substitute* ".gemspec"
8637 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
8638 "<eventmachine>, [\">= 1.0.0\"")
8639 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, ["))
8640 #t)))))
8641 (propagated-inputs
8642 `(("ruby-eventmachine" ,ruby-eventmachine)
8643 ("ruby-thin" ,ruby-thin)))
8644 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
8645 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
8646the Thin library.")
8647 (home-page "https://github.com/sj26/skinny")
8648 (license license:expat)))
df747c8d
PN
8649
8650(define-public mailcatcher
8651 (package
8652 (name "mailcatcher")
8653 (version "0.7.1")
8654 (source
8655 (origin
8656 (method url-fetch)
8657 (uri (rubygems-uri "mailcatcher" version))
8658 (sha256
8659 (base32
8660 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
8661 (build-system ruby-build-system)
8662 (arguments
8663 ;; Tests require web/assets which is not included in the output. We
8664 ;; might be able to fix this by adding the Git repository to the GEM_PATH
8665 ;; of the tests. See ruby-mysql2.
8666 '(#:tests? #f
8667 #:phases
8668 (modify-phases %standard-phases
8669 (add-before 'build 'patch-gemspec
8670 (lambda _
8671 (substitute* ".gemspec"
8672 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
8673 "<eventmachine>, [\">= 1.0.9.1")
8674 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
8675 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
8676 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))
8677 #t))
8678 (add-before 'build 'loosen-dependency-contraint
8679 (lambda _
8680 (substitute* "lib/mail_catcher.rb"
8681 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
8682 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
8683 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
8684 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))
8685 #t)))))
8686 (inputs
8687 `(("ruby-eventmachine" ,ruby-eventmachine)
8688 ("ruby-mail" ,ruby-mail)
8689 ("ruby-rack" ,ruby-rack)
8690 ("ruby-sinatra" ,ruby-sinatra)
8691 ("ruby-skinny" ,ruby-skinny)
8692 ("ruby-sqlite3" ,ruby-sqlite3)
8693 ("ruby-thin" ,ruby-thin)))
8694 (synopsis "SMTP server which catches messages to display them a browser")
8695 (description
8696 "MailCatcher runs a super simple SMTP server which catches any message
8697sent to it to display in a web interface. Run mailcatcher, set your favourite
8698app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
8699then check out http://127.0.0.1:1080 to see the mail.")
8700 (home-page "https://mailcatcher.me")
8701 (license license:expat)))