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