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