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