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