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