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