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