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