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