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