gnu: ruby-sdoc: Relax dependency requirement versions.
[jackhill/guix/guix.git] / gnu / packages / ruby.scm
CommitLineData
6ef8c59a 1;;; GNU Guix --- Functional package management for GNU
37ab3aba 2;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
402b03e6 3;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
f586c877 4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
37ab3aba 5;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
cf36174f 6;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
cba53c60 7;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
06116573 8;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
6ef8c59a
PP
9;;;
10;;; This file is part of GNU Guix.
11;;;
12;;; GNU Guix is free software; you can redistribute it and/or modify it
13;;; under the terms of the GNU General Public License as published by
14;;; the Free Software Foundation; either version 3 of the License, or (at
15;;; your option) any later version.
16;;;
17;;; GNU Guix is distributed in the hope that it will be useful, but
18;;; WITHOUT ANY WARRANTY; without even the implied warranty of
19;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20;;; GNU General Public License for more details.
21;;;
22;;; You should have received a copy of the GNU General Public License
23;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
24
25(define-module (gnu packages ruby)
26 #:use-module ((guix licenses) #:prefix license:)
27 #:use-module (gnu packages)
1db791d5 28 #:use-module (gnu packages base)
6ef8c59a 29 #:use-module (gnu packages compression)
4a9e0585 30 #:use-module (gnu packages databases)
6ef8c59a 31 #:use-module (gnu packages readline)
6ef8c59a 32 #:use-module (gnu packages autotools)
ad79eb55 33 #:use-module (gnu packages java)
6ef8c59a 34 #:use-module (gnu packages libffi)
ac09beba 35 #:use-module (gnu packages python)
763624f5 36 #:use-module (gnu packages ragel)
cc2b77df 37 #:use-module (gnu packages tls)
66e20863 38 #:use-module (gnu packages version-control)
6ef8c59a
PP
39 #:use-module (guix packages)
40 #:use-module (guix download)
bda0c139 41 #:use-module (guix git-download)
6ef8c59a 42 #:use-module (guix utils)
acf735f2 43 #:use-module (guix build-system gnu)
e920bfca 44 #:use-module (gnu packages xml)
c2c4e5b2 45 #:use-module (gnu packages web)
acf735f2 46 #:use-module (guix build-system ruby))
6ef8c59a
PP
47
48(define-public ruby
49 (package
50 (name "ruby")
98bb983c 51 (version "2.4.0")
6ef8c59a
PP
52 (source
53 (origin
54 (method url-fetch)
6becfdff
MW
55 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
56 (version-major+minor version)
12d39eb5 57 "/ruby-" version ".tar.xz"))
6ef8c59a
PP
58 (sha256
59 (base32
98bb983c 60 "141nnsdk2q83c23p5kl404id8gy1ap261gin48rbjj5sbksgx1rs"))
65e84e31
BW
61 (modules '((guix build utils)))
62 (snippet `(begin
63 ;; Remove bundled libffi
c033c195 64 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
65e84e31 65 #t))))
6ef8c59a
PP
66 (build-system gnu-build-system)
67 (arguments
68 `(#:test-target "test"
6ef8c59a 69 #:phases
9656b8be 70 (modify-phases %standard-phases
65e84e31 71 (add-before 'configure 'replace-bin-sh-and-remove-libffi
9656b8be
BW
72 (lambda _
73 (substitute* '("Makefile.in"
74 "ext/pty/pty.c"
75 "io.c"
76 "lib/mkmf.rb"
77 "process.c"
78 "test/rubygems/test_gem_ext_configure_builder.rb"
79 "test/rdoc/test_rdoc_parser.rb"
80 "test/ruby/test_rubyoptions.rb"
81 "test/ruby/test_process.rb"
82 "test/ruby/test_system.rb"
83 "tool/rbinstall.rb")
84 (("/bin/sh") (which "sh")))
85 #t)))))
6ef8c59a
PP
86 (inputs
87 `(("readline" ,readline)
6ef8c59a
PP
88 ("openssl" ,openssl)
89 ("libffi" ,libffi)
90 ("gdbm" ,gdbm)
91 ("zlib" ,zlib)))
92 (native-search-paths
93 (list (search-path-specification
94 (variable "GEM_PATH")
af070955
LC
95 (files (list (string-append "lib/ruby/gems/"
96 (version-major+minor version)
97 ".0"))))))
6becfdff 98 (synopsis "Programming language interpreter")
6ef8c59a
PP
99 (description "Ruby is a dynamic object-oriented programming language with
100a focus on simplicity and productivity.")
101 (home-page "https://ruby-lang.org")
102 (license license:ruby)))
103
98bb983c 104(define-public ruby-2.3
800a7dd5
BW
105 (package
106 (inherit ruby)
800a7dd5 107 (version "2.3.4")
98bb983c 108 (replacement #f)
800a7dd5
BW
109 (source
110 (origin
111 (method url-fetch)
112 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
113 (version-major+minor version)
114 "/ruby-" version ".tar.xz"))
115 (sha256
116 (base32
117 "132p5kc1sx97svbx04g40pz5pr7p8f6jlmnq5r2prlcz5q1xj71l"))
118 (modules '((guix build utils)))
119 (snippet `(begin
120 ;; Remove bundled libffi
121 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
122 #t))))))
123
65e84e31
BW
124(define-public ruby-2.2
125 (package (inherit ruby)
6e02766d 126 (replacement #f)
22a494ec 127 (version "2.2.7")
65e84e31
BW
128 (source
129 (origin
130 (method url-fetch)
131 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
132 (version-major+minor version)
133 "/ruby-" version ".tar.xz"))
134 (sha256
135 (base32
22a494ec 136 "0lyb7gnbbhs3a3v9grsjgbaixm20wxz6x3h0czyrxnj3cpp8lk13"))))))
65e84e31 137
9942e803
PP
138(define-public ruby-2.1
139 (package (inherit ruby)
6e02766d 140 (replacement #f)
a754eaf1 141 (version "2.1.10")
9942e803
PP
142 (source
143 (origin
144 (method url-fetch)
145 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
146 (version-major+minor version)
147 "/ruby-" version ".tar.bz2"))
148 (sha256
149 (base32
a754eaf1 150 "1wglbd599mlwxfcb2xgqcxi2shr363pjn5dpbv11m04si9bpaim7"))))
9942e803
PP
151 (arguments
152 `(#:test-target "test"
153 #:parallel-tests? #f
154 #:phases
155 (alist-cons-before
156 'configure 'replace-bin-sh
157 (lambda _
158 (substitute* '("Makefile.in"
159 "ext/pty/pty.c"
160 "io.c"
161 "lib/mkmf.rb"
162 "process.c")
163 (("/bin/sh") (which "sh"))))
164 %standard-phases)))
165 (native-search-paths
166 (list (search-path-specification
167 (variable "GEM_PATH")
168 (files (list (string-append "lib/ruby/gems/"
169 (version-major+minor version)
170 ".0"))))))))
171
218ee89b
PP
172(define-public ruby-1.8
173 (package (inherit ruby)
6e02766d 174 (replacement #f)
218ee89b
PP
175 (version "1.8.7-p374")
176 (source
177 (origin
178 (method url-fetch)
6becfdff
MW
179 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
180 (version-major+minor version)
181 "/ruby-" version ".tar.bz2"))
218ee89b
PP
182 (sha256
183 (base32
184 "1qq7khilwkayrhwmzlxk83scrmiqfi7lgsn4c63znyvz2c1lgqxl"))))
185 (native-search-paths '())
186 (arguments
187 `(#:test-target "test"
188 #:parallel-tests? #f
189 #:phases
190 (alist-cons-before
191 'configure 'replace-bin-sh
192 (lambda _
193 (substitute* '("Makefile.in"
194 "ext/pty/pty.c"
195 "io.c"
196 "lib/mkmf.rb"
197 "process.c")
198 (("/bin/sh") (which "sh"))))
199 %standard-phases)))))
200
bda0c139
DT
201(define-public ruby-hoe
202 (package
203 (name "ruby-hoe")
8e941f20 204 (version "3.16.0")
bda0c139 205 (source (origin
e83c6d00
DT
206 (method url-fetch)
207 (uri (rubygems-uri "hoe" version))
bda0c139
DT
208 (sha256
209 (base32
8e941f20 210 "03r8nsw4n4mnia9iqiqk9kqhvrl96m2i81j4yg8cpnppd8vk7vlb"))))
bda0c139 211 (build-system ruby-build-system)
bda0c139
DT
212 (synopsis "Ruby project management helper")
213 (description
214 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
215maintain, and release projects and includes a dynamic plug-in system allowing
216for easy extensibility. Hoe ships with plug-ins for all the usual project
217tasks including rdoc generation, testing, packaging, deployment, and
218announcement.")
219 (home-page "http://www.zenspider.com/projects/hoe.html")
220 (license license:expat)))
221
022170dc
PP
222(define-public ruby-rake-compiler
223 (package
224 (name "ruby-rake-compiler")
16d8d8b2 225 (version "1.0.1")
022170dc
PP
226 (source (origin
227 (method url-fetch)
e83c6d00 228 (uri (rubygems-uri "rake-compiler" version))
022170dc
PP
229 (sha256
230 (base32
16d8d8b2 231 "1lf91nf1fcnmsh54mxz06wyfmjkwh58vljr35zns5cwbg8fwmi20"))))
022170dc
PP
232 (build-system ruby-build-system)
233 (arguments
e83c6d00 234 '(#:tests? #f)) ; needs cucumber
022170dc 235 (synopsis "Building and packaging helper for Ruby native extensions")
e881752c 236 (description "Rake-compiler provides a framework for building and
022170dc
PP
237packaging native C and Java extensions in Ruby.")
238 (home-page "https://github.com/rake-compiler/rake-compiler")
239 (license license:expat)))
240
acf735f2
DT
241(define-public ruby-i18n
242 (package
243 (name "ruby-i18n")
0bfdfd37 244 (version "0.7.0")
acf735f2
DT
245 (source (origin
246 (method url-fetch)
e83c6d00 247 (uri (rubygems-uri "i18n" version))
acf735f2
DT
248 (sha256
249 (base32
0bfdfd37 250 "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758"))))
acf735f2
DT
251 (build-system ruby-build-system)
252 (arguments
0bfdfd37 253 '(#:tests? #f)) ; no tests
acf735f2
DT
254 (synopsis "Internationalization library for Ruby")
255 (description "Ruby i18n is an internationalization and localization
256solution for Ruby programs. It features translation and localization,
257interpolation of values to translations, pluralization, customizable
258transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
259translation data, custom key/scope separator, custom exception handlers, and
260an extensible architecture with a swappable backend.")
7bf837fd 261 (home-page "https://github.com/svenfuchs/i18n")
acf735f2 262 (license license:expat)))
eb0c2dd6
DT
263
264;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
265;; dependencies use RSpec for their test suites! To avoid these circular
266;; dependencies, we disable tests for all of the RSpec-related packages.
267(define ruby-rspec-support
268 (package
269 (name "ruby-rspec-support")
2d9f1c06 270 (version "3.5.0")
eb0c2dd6
DT
271 (source (origin
272 (method url-fetch)
e83c6d00 273 (uri (rubygems-uri "rspec-support" version))
eb0c2dd6
DT
274 (sha256
275 (base32
2d9f1c06 276 "10vf3k3d472y573mag2kzfsfrf6rv355s13kadnpryk8d36yq5r0"))))
eb0c2dd6
DT
277 (build-system ruby-build-system)
278 (arguments
279 '(#:tests? #f)) ; avoid dependency cycles
280 (synopsis "RSpec support library")
281 (description "Support utilities for RSpec gems.")
282 (home-page "https://github.com/rspec/rspec-support")
283 (license license:expat)))
284
285(define-public ruby-rspec-core
286 (package
287 (name "ruby-rspec-core")
c5949118 288 (version "3.5.4")
eb0c2dd6
DT
289 (source (origin
290 (method url-fetch)
e83c6d00 291 (uri (rubygems-uri "rspec-core" version))
eb0c2dd6
DT
292 (sha256
293 (base32
c5949118 294 "1nacs062qbr98fx6czf1vwppn1js956nv2c8vfwj6i65axdfs46i"))))
eb0c2dd6
DT
295 (build-system ruby-build-system)
296 (arguments
297 '(#:tests? #f)) ; avoid dependency cycles
298 (propagated-inputs
299 `(("ruby-rspec-support" ,ruby-rspec-support)))
300 (synopsis "RSpec core library")
301 (description "Rspec-core provides the RSpec test runner and example
302groups.")
303 (home-page "https://github.com/rspec/rspec-core")
304 (license license:expat)))
e6962009 305
64c318f2
BW
306(define-public ruby-rspec-core-2
307 (package (inherit ruby-rspec-core)
308 (version "2.14.8")
309 (source (origin
310 (method url-fetch)
311 (uri (rubygems-uri "rspec-core" version))
312 (sha256
313 (base32
314 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
315 (propagated-inputs `())))
316
20c05ea9 317(define-public ruby-diff-lcs
e6962009
DT
318 (package
319 (name "ruby-diff-lcs")
320 (version "1.2.5")
321 (source (origin
322 (method url-fetch)
e83c6d00 323 (uri (rubygems-uri "diff-lcs" version))
e6962009
DT
324 (sha256
325 (base32
e83c6d00 326 "1vf9civd41bnqi6brr5d9jifdw73j9khc6fkhfl1f8r9cpkdvlx1"))))
e6962009
DT
327 (build-system ruby-build-system)
328 (arguments
329 '(#:tests? #f)) ; avoid dependency cycles
330 (synopsis "Compute the difference between two Enumerable sequences")
331 (description "Diff::LCS computes the difference between two Enumerable
332sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
333It includes utilities to create a simple HTML diff output format and a
334standard diff-like tool.")
335 (home-page "https://github.com/halostatue/diff-lcs")
336 (license license:expat)))
337
338(define-public ruby-rspec-expectations
339 (package
340 (name "ruby-rspec-expectations")
2d9f1c06 341 (version "3.5.0")
e6962009
DT
342 (source (origin
343 (method url-fetch)
e83c6d00 344 (uri (rubygems-uri "rspec-expectations" version))
e6962009
DT
345 (sha256
346 (base32
2d9f1c06 347 "0bbqfrb1x8gmwf8x2xhhwvvlhwbbafq4isbvlibxi6jk602f09gs"))))
e6962009
DT
348 (build-system ruby-build-system)
349 (arguments
350 '(#:tests? #f)) ; avoid dependency cycles
351 (propagated-inputs
352 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 353 ("ruby-diff-lcs" ,ruby-diff-lcs)))
e881752c 354 (synopsis "RSpec expectations library")
e6962009
DT
355 (description "Rspec-expectations provides a simple API to express expected
356outcomes of a code example.")
357 (home-page "https://github.com/rspec/rspec-expectations")
358 (license license:expat)))
4f2a0cac 359
fb157f25
BW
360(define-public ruby-rspec-expectations-2
361 (package (inherit ruby-rspec-expectations)
362 (version "2.14.5")
363 (source (origin
364 (method url-fetch)
365 (uri (rubygems-uri "rspec-expectations" version))
366 (sha256
367 (base32
368 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
369 (propagated-inputs
370 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
371
4f2a0cac
DT
372(define-public ruby-rspec-mocks
373 (package
374 (name "ruby-rspec-mocks")
2d9f1c06 375 (version "3.5.0")
4f2a0cac
DT
376 (source (origin
377 (method url-fetch)
e83c6d00 378 (uri (rubygems-uri "rspec-mocks" version))
4f2a0cac
DT
379 (sha256
380 (base32
2d9f1c06 381 "0nl3ksivh9wwrjjd47z5dggrwx40v6gpb3a0gzbp1gs06a5dmk24"))))
4f2a0cac
DT
382 (build-system ruby-build-system)
383 (arguments
384 '(#:tests? #f)) ; avoid dependency cycles
385 (propagated-inputs
386 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 387 ("ruby-diff-lcs" ,ruby-diff-lcs)))
4f2a0cac
DT
388 (synopsis "RSpec stubbing and mocking library")
389 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
390support for stubbing and mocking.")
391 (home-page "https://github.com/rspec/rspec-mocks")
392 (license license:expat)))
d4fde1f2 393
6da9adeb
BW
394(define-public ruby-rspec-mocks-2
395 (package (inherit ruby-rspec-mocks)
396 (version "2.14.6")
397 (source (origin
398 (method url-fetch)
399 (uri (rubygems-uri "rspec-mocks" version))
400 (sha256
401 (base32
402 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
403 (propagated-inputs
404 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
405
d4fde1f2
DT
406(define-public ruby-rspec
407 (package
408 (name "ruby-rspec")
2d9f1c06 409 (version "3.5.0")
d4fde1f2
DT
410 (source (origin
411 (method url-fetch)
e83c6d00 412 (uri (rubygems-uri "rspec" version))
d4fde1f2
DT
413 (sha256
414 (base32
2d9f1c06 415 "16g3mmih999f0b6vcz2c3qsc7ks5zy4lj1rzjh8hf6wk531nvc6s"))))
d4fde1f2
DT
416 (build-system ruby-build-system)
417 (arguments
418 '(#:tests? #f)) ; avoid dependency cycles
419 (propagated-inputs
420 `(("ruby-rspec-core" ,ruby-rspec-core)
421 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
422 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
423 (synopsis "Behavior-driven development framework for Ruby")
424 (description "RSpec is a behavior-driven development (BDD) framework for
425Ruby. This meta-package includes the RSpec test runner, along with the
426expectations and mocks frameworks.")
427 (home-page "http://rspec.info/")
428 (license license:expat)))
2cbc105b 429
5ac984b3
BW
430(define-public ruby-rspec-2
431 (package (inherit ruby-rspec)
432 (version "2.14.1")
433 (source (origin
434 (method url-fetch)
435 (uri (rubygems-uri "rspec" version))
436 (sha256
437 (base32
438 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
439 (propagated-inputs
440 `(("ruby-rspec-core" ,ruby-rspec-core-2)
441 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
442 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
443
2cbc105b
DT
444;; Bundler is yet another source of circular dependencies, so we must disable
445;; its test suite as well.
446(define-public bundler
447 (package
448 (name "bundler")
fb407489 449 (version "1.15.1")
2cbc105b
DT
450 (source (origin
451 (method url-fetch)
e83c6d00 452 (uri (rubygems-uri "bundler" version))
2cbc105b
DT
453 (sha256
454 (base32
fb407489 455 "1mq0n8g08vf2rnd7fvylx3f4sspx15abid49gycf9zzsjj7w8vps"))))
2cbc105b
DT
456 (build-system ruby-build-system)
457 (arguments
458 '(#:tests? #f)) ; avoid dependency cycles
459 (synopsis "Ruby gem bundler")
460 (description "Bundler automatically downloads and installs a list of gems
461specified in a \"Gemfile\", as well as their dependencies.")
462 (home-page "http://bundler.io/")
463 (license license:expat)))
98b87b82 464
cf36174f
RW
465(define-public ruby-builder
466 (package
467 (name "ruby-builder")
468 (version "3.2.2")
469 (source (origin
470 (method url-fetch)
471 (uri (rubygems-uri "builder" version))
472 (sha256
473 (base32
474 "14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2"))))
475 (build-system ruby-build-system)
476 (arguments
477 `(#:phases
478 (modify-phases %standard-phases
479 (add-after 'unpack 'do-not-use-rvm
480 (lambda _
481 (substitute* "rakelib/tags.rake"
482 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
483 #t)))))
484 (synopsis "Ruby library to create structured data")
485 (description "Builder provides a number of builder objects that make it
486easy to create structured data. Currently the following builder objects are
487supported: XML Markup and XML Events.")
488 (home-page "https://github.com/jimweirich/builder")
489 (license license:expat)))
490
ad79eb55
RW
491(define-public ruby-rjb
492 (package
493 (name "ruby-rjb")
494 (version "1.5.3")
495 (source (origin
496 (method url-fetch)
497 (uri (rubygems-uri "rjb" version))
498 (sha256
499 (base32
500 "0gzs92dagk981s4vrymnqg0vll783b9k564j0cdgp167nc5a2zg4"))))
501 (build-system ruby-build-system)
502 (arguments
503 `(#:tests? #f ; no rakefile
504 #:phases
505 (modify-phases %standard-phases
506 (add-before 'build 'set-java-home
507 (lambda* (#:key inputs #:allow-other-keys)
508 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
509 #t)))))
510 (native-inputs
d2540f80 511 `(("jdk" ,icedtea "jdk")))
ad79eb55
RW
512 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
513 (description "RJB is a bridge program that connects Ruby and Java via the
514Java Native Interface.")
515 (home-page "http://www.artonx.org/collabo/backyard/?RubyJavaBridge")
516 (license license:lgpl2.1+)))
517
f9ae2c06
PP
518(define-public ruby-log4r
519 (package
520 (name "ruby-log4r")
521 (version "1.1.10")
522 (source
523 (origin
524 (method url-fetch)
525 (uri (rubygems-uri "log4r" version))
526 (sha256
527 (base32
528 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
529 (build-system ruby-build-system)
530 (arguments
531 '(#:tests? #f)) ; no Rakefile in gem
532 (synopsis "Flexible logging library for Ruby")
533 (description "Comprehensive and flexible logging library written
534in Ruby for use in Ruby programs. It features a hierarchical logging
535system of any number of levels, custom level names, logger
536inheritance, multiple output destinations per log event, execution
537tracing, custom formatting, thread safteyness, XML and YAML
538configuration, and more.")
539 (home-page "http://log4r.rubyforge.org/")
540 (license license:bsd-3)))
541
71a03c29
RW
542(define-public ruby-atoulme-antwrap
543 (package
544 (name "ruby-atoulme-antwrap")
545 (version "0.7.5")
546 (source (origin
547 (method url-fetch)
548 (uri (rubygems-uri "atoulme-Antwrap" version))
549 (sha256
550 (base32
551 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
552 (build-system ruby-build-system)
553 ;; Test data required for most of the tests are not included.
554 (arguments `(#:tests? #f))
555 (native-inputs
556 `(("ruby-hoe" ,ruby-hoe)))
557 (inputs
558 `(("ruby-rjb" ,ruby-rjb)))
559 (synopsis "Ruby wrapper for the Ant build tool")
560 (description "Antwrap is a Ruby module that wraps the Apache Ant build
561tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
562script.")
563 (home-page "http://rubyforge.org/projects/antwrap/")
564 (license license:expat)))
565
fe1ddad5
RW
566(define-public ruby-atoulme-saikuro
567 (package
568 (name "ruby-atoulme-saikuro")
569 (version "1.2.1")
570 (source (origin
571 (method url-fetch)
572 (uri (rubygems-uri "atoulme-Saikuro" version))
573 (sha256
574 (base32
575 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
576 (build-system ruby-build-system)
577 ;; FIXME: There are no unit tests. The tests are demonstrations of the
578 ;; "saikuro" tool.
579 (arguments `(#:tests? #f))
580 (synopsis "Cyclomatic complexity analyzer")
581 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
582given Ruby source code Saikuro will generate a report listing the cyclomatic
583complexity of each method found. In addition, Saikuro counts the number of
584lines per method and can generate a listing of the number of tokens on each
585line of code.")
586 (home-page "http://www.github.com/atoulme/Saikuro")
587 ;; File headers contain the BSD-3 license and the README.rdoc says that
588 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
589 ;; of the Expat license.
590 (license license:bsd-3)))
591
2f9e0b68
RW
592(define-public ruby-ci-reporter
593 (package
594 (name "ruby-ci-reporter")
595 (version "2.0.0")
596 (source (origin
597 (method url-fetch)
598 (uri (rubygems-uri "ci_reporter" version))
599 (sha256
600 (base32
601 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
602 (build-system ruby-build-system)
603 (arguments
604 `(#:test-target "rspec"))
605 (propagated-inputs
606 `(("ruby-builder" ,ruby-builder)))
607 (native-inputs
608 `(("bundler" ,bundler)
609 ("ruby-rspec" ,ruby-rspec)))
610 (synopsis "Generate XML reports of runs test")
611 (description
612 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
613you to generate XML reports of your test runs. The resulting files can be
614read by a continuous integration system that understands Ant's JUnit report
615format.")
616 (home-page "https://github.com/nicksieger/ci_reporter")
617 (license license:expat)))
618
b004fb6a
RW
619(define-public ruby-saikuro-treemap
620 (package
621 (name "ruby-saikuro-treemap")
622 (version "0.2.0")
623 (source (origin
624 (method url-fetch)
625 (uri (rubygems-uri "saikuro_treemap" version))
626 (sha256
627 (base32
628 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
629 (build-system ruby-build-system)
630 ;; Some of the tests fail because the generated JSON has keys in a
631 ;; different order. This is a problem with the test suite rather than any
632 ;; of the involved libraries.
633 (arguments `(#:tests? #f))
634 (propagated-inputs
635 `(("ruby-json-pure" ,ruby-json-pure)
636 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
637 (synopsis "Generate complexity treemap based on saikuro analysis")
638 (description
639 "This gem generates a treemap showing the complexity of Ruby code on
640which it is run. It uses Saikuro under the covers to analyze Ruby code
641complexity.")
7bf837fd 642 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
b004fb6a
RW
643 (license license:expat)))
644
cc53e630
RW
645(define-public ruby-orderedhash
646 (package
647 (name "ruby-orderedhash")
648 (version "0.0.6")
649 (source (origin
650 (method url-fetch)
651 (uri (rubygems-uri "orderedhash" version))
652 (sha256
653 (base32
654 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
655 (build-system ruby-build-system)
656 (arguments
657 '(#:tests? #f)) ; no test suite
658 (synopsis "Ruby library providing an order-preserving hash")
659 (description "Orderedhash is a Ruby library providing a hash
660implementation that preserves the order of items and features some array-like
661extensions.")
662 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
663 (license license:public-domain)))
664
28c5d42d
PP
665(define-public ruby-libxml
666 (package
667 (name "ruby-libxml")
668 (version "2.8.0")
669 (source
670 (origin
671 (method url-fetch)
672 (uri (rubygems-uri "libxml-ruby" version))
673 (sha256
674 (base32
675 "1dhjqp4r9vkdp00l6h1cj8qfndzxlhlxk6b9g0w4v55gz857ilhb"))))
676 (build-system ruby-build-system)
677 (inputs
678 `(("zlib" ,zlib)
679 ("libxml2" ,libxml2)))
680 (arguments
681 '(#:tests? #f ; test suite hangs for unknown reason
682 #:gem-flags
683 (list "--"
684 (string-append "--with-xml2-include="
685 (assoc-ref %build-inputs "libxml2")
686 "/include/libxml2" ))))
687 (synopsis "Ruby bindings for GNOME Libxml2")
688 (description "The Libxml-Ruby project provides Ruby language bindings for
689the GNOME Libxml2 XML toolkit.")
690 (home-page "http://xml4r.github.com/libxml-ruby")
691 (license license:expat)))
692
8b9bde07
RW
693(define-public ruby-xml-simple
694 (package
695 (name "ruby-xml-simple")
696 (version "1.1.5")
697 (source (origin
698 (method url-fetch)
699 (uri (rubygems-uri "xml-simple" version))
700 (sha256
701 (base32
702 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
703 (build-system ruby-build-system)
704 (arguments
705 '(#:tests? #f)) ; no test suite
706 (synopsis "Simple Ruby library for XML processing")
707 (description "This library provides a simple API for XML processing in
708Ruby.")
709 (home-page "https://github.com/maik/xml-simple")
710 (license license:ruby)))
711
2cb3ab48
RW
712(define-public ruby-thor
713 (package
714 (name "ruby-thor")
715 (version "0.19.1")
716 (source (origin
717 (method url-fetch)
718 (uri (rubygems-uri "thor" version))
719 (sha256
720 (base32
721 "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z"))))
722 (build-system ruby-build-system)
723 (arguments
724 '(#:tests? #f)) ; no test suite
725 (native-inputs
726 `(("bundler" ,bundler)))
727 (synopsis "Ruby toolkit for building command-line interfaces")
728 (description "Thor is a toolkit for building powerful command-line
729interfaces.")
730 (home-page "http://whatisthor.com/")
731 (license license:expat)))
732
ec79018e
RW
733(define-public ruby-lumberjack
734 (package
735 (name "ruby-lumberjack")
8be62d3f 736 (version "1.0.10")
ec79018e
RW
737 (source (origin
738 (method url-fetch)
739 (uri (rubygems-uri "lumberjack" version))
740 (sha256
741 (base32
8be62d3f 742 "0ily8j83q959w19zb7qm6m7y53sdj9afxj4x6mn2adl4i7vpdsv4"))))
ec79018e
RW
743 (build-system ruby-build-system)
744 (native-inputs
8be62d3f
BW
745 `(("ruby-rspec" ,ruby-rspec)
746 ("ruby-timecop" ,ruby-timecop)))
ec79018e
RW
747 (synopsis "Logging utility library for Ruby")
748 (description "Lumberjack is a simple logging utility that can be a drop in
749replacement for Logger or ActiveSupport::BufferedLogger. It provides support
750for automatically rolling log files even with multiple processes writing the
751same log file.")
7bf837fd 752 (home-page "https://github.com/bdurand/lumberjack")
ec79018e
RW
753 (license license:expat)))
754
70b4cf38
RW
755(define-public ruby-nenv
756 (package
757 (name "ruby-nenv")
758 (version "0.2.0")
759 (source (origin
760 (method url-fetch)
761 (uri (rubygems-uri "nenv" version))
762 (sha256
763 (base32
764 "152wxwri0afwgnxdf93gi6wjl9rr5z7vwp8ln0gpa3rddbfc27s6"))))
765 (build-system ruby-build-system)
766 (arguments
767 `(#:tests? #f)) ; no tests included
768 (native-inputs
769 `(("ruby-rspec" ,ruby-rspec)
770 ("bundler" ,bundler)))
771 (synopsis "Ruby interface for modifying the environment")
772 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
773and inspect the environment.")
774 (home-page "https://github.com/e2/nenv")
775 (license license:expat)))
776
8d9e9f28
RW
777(define-public ruby-permutation
778 (package
779 (name "ruby-permutation")
780 (version "0.1.8")
781 (source (origin
782 (method url-fetch)
783 (uri (rubygems-uri "permutation" version))
784 (sha256
785 (base32
786 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
787 (build-system ruby-build-system)
788 (arguments
789 `(#:phases
790 (modify-phases %standard-phases
791 (add-after 'unpack 'fix-rakefile
792 (lambda _
793 (substitute* "Rakefile"
794 (("require 'rake/gempackagetask'")
795 "require 'rubygems/package_task'")
796 (("include Config") ""))
797 #t))
798 (replace 'check
799 (lambda _
800 (zero? (system* "ruby" "-Ilib" "test/test.rb")))))))
801 (synopsis "Library to perform operations with sequence permutations")
802 (description "This package provides a Ruby library to perform different
803operations with permutations of sequences, such as strings and arrays.")
804 (home-page "http://flori.github.io/permutation")
805 (license license:gpl2))) ; GPL 2 only
806
c5d14d42
RW
807(define-public ruby-shellany
808 (package
809 (name "ruby-shellany")
810 (version "0.0.1")
811 (source (origin
812 (method url-fetch)
813 (uri (rubygems-uri "shellany" version))
814 (sha256
815 (base32
816 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
817 (build-system ruby-build-system)
818 (arguments
819 `(#:test-target "default"
820 #:phases
821 (modify-phases %standard-phases
822 (add-after 'unpack 'fix-version-test
823 (lambda _
824 (substitute* "spec/shellany_spec.rb"
825 (("^RSpec") "require \"shellany\"\nRSpec"))
826 #t)))))
827 (native-inputs
828 `(("ruby-rspec" ,ruby-rspec)
829 ("ruby-nenv" ,ruby-nenv)
830 ("bundler" ,bundler)))
831 (synopsis "Capture command output")
832 (description "Shellany is a Ruby library providing functions to capture
833the output produced by running shell commands.")
834 (home-page "https://rubygems.org/gems/shellany")
835 (license license:expat)))
836
d152162f
RW
837(define-public ruby-notiffany
838 (package
839 (name "ruby-notiffany")
840 (version "0.0.7")
841 (source (origin
842 (method url-fetch)
843 (uri (rubygems-uri "notiffany" version))
844 (sha256
845 (base32
846 "1v5x1w59qq85r6dpv3y9ga34dfd7hka1qxyiykaw7gm0i6kggbhi"))))
847 (build-system ruby-build-system)
848 ;; Tests are not included in the gem.
849 (arguments `(#:tests? #f))
850 (propagated-inputs
851 `(("ruby-shellany" ,ruby-shellany)
852 ("ruby-nenv" ,ruby-nenv)))
853 (native-inputs
854 `(("bundler" ,bundler)))
855 (synopsis "Wrapper libray for notification libraries")
856 (description "Notiffany is a Ruby wrapper libray for notification
857libraries such as Libnotify.")
858 (home-page "https://github.com/guard/notiffany")
859 (license license:expat)))
860
8528365b
RW
861(define-public ruby-formatador
862 (package
863 (name "ruby-formatador")
864 (version "0.2.5")
865 (source (origin
866 (method url-fetch)
867 (uri (rubygems-uri "formatador" version))
868 (sha256
869 (base32
870 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
871 (build-system ruby-build-system)
872 ;; Circular dependency: Tests require ruby-shindo, which requires
873 ;; ruby-formatador at runtime.
874 (arguments `(#:tests? #f))
875 (synopsis "Ruby library to format text on stdout")
876 (description "Formatador is a Ruby library to format text printed to the
877standard output stream.")
7bf837fd 878 (home-page "https://github.com/geemus/formatador")
8528365b
RW
879 (license license:expat)))
880
7ac4610f
RW
881(define-public ruby-shindo
882 (package
883 (name "ruby-shindo")
884 (version "0.3.8")
885 (source (origin
886 (method url-fetch)
887 (uri (rubygems-uri "shindo" version))
888 (sha256
889 (base32
890 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
891 (build-system ruby-build-system)
892 (arguments
893 `(#:test-target "shindo_tests"
894 #:phases
895 (modify-phases %standard-phases
896 (add-after 'unpack 'fix-tests
897 (lambda _
898 (substitute* "Rakefile"
899 (("system \"shindo") "system \"./bin/shindo")
900 ;; This test doesn't work, so we disable it.
901 (("fail \"The build_error test should fail") "#"))
902 #t)))))
903 (propagated-inputs
904 `(("ruby-formatador" ,ruby-formatador)))
905 (synopsis "Simple depth first Ruby testing")
906 (description "Shindo is a simple depth first testing library for Ruby.")
907 (home-page "https://github.com/geemus/shindo")
908 (license license:expat)))
909
f13636f2
RW
910(define-public ruby-rubygems-tasks
911 (package
912 (name "ruby-rubygems-tasks")
913 (version "0.2.4")
914 (source (origin
915 (method url-fetch)
916 (uri (rubygems-uri "rubygems-tasks" version))
917 (sha256
918 (base32
919 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
920 (build-system ruby-build-system)
921 ;; Tests need Internet access.
922 (arguments `(#:tests? #f))
923 (native-inputs
924 `(("ruby-rspec" ,ruby-rspec)
925 ("ruby-yard" ,ruby-yard)))
926 (synopsis "Rake tasks for managing and releasing Ruby Gems")
927 (description "Rubygems-task provides Rake tasks for managing and releasing
928Ruby Gems.")
929 (home-page "https://github.com/postmodern/rubygems-tasks")
930 (license license:expat)))
931
2417fce3
RW
932(define-public ruby-ffi
933 (package
934 (name "ruby-ffi")
26af1c8d 935 (version "1.9.14")
2417fce3
RW
936 (source (origin
937 (method url-fetch)
938 (uri (rubygems-uri "ffi" version))
939 (sha256
940 (base32
26af1c8d 941 "1nkcrmxqr0vb1y4rwliclwlj2ajsi4ddpdx2gvzjy0xbkk5iqzfp"))))
2417fce3
RW
942 (build-system ruby-build-system)
943 ;; FIXME: Before running tests the build system attempts to build libffi
944 ;; from sources.
945 (arguments `(#:tests? #f))
946 (native-inputs
947 `(("ruby-rake-compiler" ,ruby-rake-compiler)
948 ("ruby-rspec" ,ruby-rspec)
949 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
950 (inputs
951 `(("libffi" ,libffi)))
952 (synopsis "Ruby foreign function interface library")
953 (description "Ruby-FFI is a Ruby extension for programmatically loading
954dynamic libraries, binding functions within them, and calling those functions
955from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby
956and JRuby.")
957 (home-page "http://wiki.github.com/ffi/ffi")
958 (license license:bsd-3)))
959
58b59742
RW
960(define-public ruby-simplecov-html
961 (package
962 (name "ruby-simplecov-html")
963 (version "0.10.0")
964 (source (origin
965 (method url-fetch)
966 (uri (rubygems-uri "simplecov-html" version))
967 (sha256
968 (base32
8b749cf3 969 "1qni8g0xxglkx25w54qcfbi4wjkpvmb28cb7rj5zk3iqynjcdrqf"))))
58b59742 970 (build-system ruby-build-system)
8b749cf3 971 (arguments `(#:tests? #f)) ; there are no tests
58b59742
RW
972 (native-inputs
973 `(("bundler" ,bundler)))
974 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
975 (description "This package provides the default HTML formatter for
976the SimpleCov code coverage tool for Ruby version 1.9 and above.")
977 (home-page "https://github.com/colszowka/simplecov-html")
978 (license license:expat)))
979
a84fa2ad
RW
980(define-public ruby-simplecov
981 (package
982 (name "ruby-simplecov")
1b107245 983 (version "0.12.0")
a84fa2ad
RW
984 (source (origin
985 (method url-fetch)
986 (uri (rubygems-uri "simplecov" version))
987 (sha256
988 (base32
1b107245 989 "0ffhyrfnq2zm2mc1742a4hqy475g3qa1zf6yfldwg1ldh5sn3qbx"))))
a84fa2ad
RW
990 (build-system ruby-build-system)
991 ;; Simplecov depends on rubocop for code style checking at build time.
992 ;; Rubocop needs simplecov at build time.
993 (arguments `(#:tests? #f))
994 (propagated-inputs
995 `(("ruby-json" ,ruby-json)
996 ("ruby-docile" ,ruby-docile)
997 ("ruby-simplecov-html" ,ruby-simplecov-html)))
998 (native-inputs
999 `(("bundler" ,bundler)))
1000 (synopsis "Code coverage framework for Ruby")
1001 (description "SimpleCov is a code coverage framework for Ruby with a
1002powerful configuration library and automatic merging of coverage across test
1003suites.")
7bf837fd 1004 (home-page "https://github.com/colszowka/simplecov")
a84fa2ad
RW
1005 (license license:expat)))
1006
98b87b82
DT
1007(define-public ruby-useragent
1008 (package
1009 (name "ruby-useragent")
1010 (version "0.13.3")
1011 (source (origin
1012 (method url-fetch)
e83c6d00 1013 (uri (rubygems-uri "useragent" version))
98b87b82
DT
1014 (sha256
1015 (base32
e83c6d00 1016 "0kz7yyz7528bv4a2kfymvkcm8whqcddhmgaw1ksw1d90n30hhkpc"))))
98b87b82
DT
1017 (build-system ruby-build-system)
1018 (arguments
e83c6d00 1019 '(#:tests? #f)) ; no test suite
98b87b82
DT
1020 (synopsis "HTTP user agent parser for Ruby")
1021 (description "UserAgent is a Ruby library that parses and compares HTTP
1022User Agents.")
1023 (home-page "https://github.com/gshutler/useragent")
1024 (license license:expat)))
96086cc5
DT
1025
1026(define-public ruby-bacon
1027 (package
1028 (name "ruby-bacon")
e83c6d00 1029 (version "1.2.0")
96086cc5
DT
1030 (source (origin
1031 (method url-fetch)
e83c6d00 1032 (uri (rubygems-uri "bacon" version))
96086cc5
DT
1033 (sha256
1034 (base32
e83c6d00 1035 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
96086cc5 1036 (build-system ruby-build-system)
96086cc5
DT
1037 (synopsis "Small RSpec clone")
1038 (description "Bacon is a small RSpec clone providing all essential
1039features.")
1040 (home-page "https://github.com/chneukirchen/bacon")
1041 (license license:expat)))
de59d316 1042
e259bdf0
DT
1043(define-public ruby-connection-pool
1044 (package
1045 (name "ruby-connection-pool")
1046 (version "2.2.0")
1047 (source (origin
1048 (method url-fetch)
e83c6d00 1049 (uri (rubygems-uri "connection_pool" version))
e259bdf0
DT
1050 (sha256
1051 (base32
e83c6d00 1052 "1b2bb3k39ni5mzcnqlv9y4yjkbin20s7dkwzp0jw2jf1rmzcgrmy"))))
e259bdf0
DT
1053 (build-system ruby-build-system)
1054 (native-inputs
1055 `(("bundler" ,bundler)))
1056 (synopsis "Generic connection pool for Ruby")
1057 (description "Connection_pool provides a generic connection pooling
1058interface for Ruby programs.")
1059 (home-page "https://github.com/mperham/connection_pool")
1060 (license license:expat)))
4c0aeb44
DT
1061
1062(define-public ruby-net-http-persistent
1063 (package
1064 (name "ruby-net-http-persistent")
1065 (version "2.9.4")
1066 (source (origin
1067 (method url-fetch)
e83c6d00 1068 (uri (rubygems-uri "net-http-persistent" version))
4c0aeb44
DT
1069 (sha256
1070 (base32
e83c6d00 1071 "1y9fhaax0d9kkslyiqi1zys6cvpaqx9a0y0cywp24rpygwh4s9r4"))))
4c0aeb44 1072 (build-system ruby-build-system)
4c0aeb44
DT
1073 (native-inputs
1074 `(("ruby-connection-pool" ,ruby-connection-pool)
1075 ("ruby-hoe" ,ruby-hoe)))
1076 (synopsis "Persistent HTTP connection manager")
1077 (description "Net::HTTP::Persistent manages persistent HTTP connections
1078using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
1079 (home-page "https://github.com/drbrain/net-http-persistent")
1080 (license license:expat)))
afbbdf77 1081
f88bacaf
RW
1082(define-public ruby-power-assert
1083 (package
1084 (name "ruby-power-assert")
3918146b 1085 (version "0.2.7")
f88bacaf
RW
1086 (source (origin
1087 (method url-fetch)
1088 (uri (rubygems-uri "power_assert" version))
1089 (sha256
1090 (base32
3918146b 1091 "0ka6w71lcan4wgf111xi3pcn9ma9lhakv31jg8w007nwzi0xfjbi"))))
f88bacaf
RW
1092 (build-system ruby-build-system)
1093 (native-inputs
1094 `(("bundler" ,bundler)))
1095 (synopsis "Assert library with descriptive assertion messages")
1096 (description "Power-assert is an assertion library providing descriptive
1097assertion messages for tests.")
1098 (home-page "https://github.com/k-tsj/power_assert")
1099 (license (list license:bsd-2 license:ruby))))
1100
347eb21e
RW
1101(define-public ruby-locale
1102 (package
1103 (name "ruby-locale")
1104 (version "2.1.2")
1105 (source (origin
1106 (method url-fetch)
1107 (uri (rubygems-uri "locale" version))
1108 (sha256
1109 (base32
1110 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
1111 (build-system ruby-build-system)
1112 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1113 ;; which needs ruby-gettext, which needs ruby-locale. To break the
1114 ;; dependency cycle we disable tests.
1115 (arguments `(#:tests? #f))
1116 (native-inputs
1117 `(("bundler" ,bundler)
1118 ("ruby-yard" ,ruby-yard)))
1119 (synopsis "Ruby library providing basic localization APIs")
1120 (description
1121 "Ruby-Locale is the pure ruby library which provides basic APIs for
1122localization.")
1123 (home-page "https://github.com/ruby-gettext/locale")
1124 (license (list license:lgpl3+ license:ruby))))
1125
e2333ea3
RW
1126(define-public ruby-text
1127 (package
1128 (name "ruby-text")
1129 (version "1.3.1")
1130 (source (origin
1131 (method url-fetch)
1132 (uri (rubygems-uri "text" version))
1133 (sha256
1134 (base32
1135 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
1136 (build-system ruby-build-system)
1137 (synopsis "Collection of text algorithms for Ruby")
1138 (description
1139 "This package provides a collection of text algorithms: Levenshtein,
1140Soundex, Metaphone, Double Metaphone, Porter Stemming.")
7bf837fd 1141 (home-page "https://github.com/threedaymonk/text")
e2333ea3
RW
1142 (license license:expat)))
1143
c1f52261
RW
1144(define-public ruby-gettext
1145 (package
1146 (name "ruby-gettext")
1147 (version "3.1.7")
1148 (source (origin
1149 (method url-fetch)
1150 (uri (rubygems-uri "gettext" version))
1151 (sha256
1152 (base32
1153 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
1154 (build-system ruby-build-system)
1155 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1156 ;; which needs ruby-gettext. To break the dependency cycle we disable
1157 ;; tests.
1158 (arguments `(#:tests? #f))
1159 (propagated-inputs
1160 `(("ruby-locale" ,ruby-locale)
1161 ("ruby-text" ,ruby-text)))
1162 (native-inputs
1163 `(("bundler" ,bundler)
1164 ("ruby-yard" ,ruby-yard)))
1165 (synopsis "GNU gettext-like program for Ruby")
1166 (description
1167 "Gettext is a GNU gettext-like program for Ruby. The catalog
1168file (po-file) used is the same as that used by GNU gettext, allowing you to
1169use GNU gettext tools for maintenance.")
1170 (home-page "http://ruby-gettext.github.com/")
1171 (license (list license:lgpl3+ license:ruby))))
1172
cc5aeb8c
RW
1173(define-public ruby-packnga
1174 (package
1175 (name "ruby-packnga")
1176 (version "1.0.1")
1177 (source (origin
1178 (method url-fetch)
1179 (uri (rubygems-uri "packnga" version))
1180 (sha256
1181 (base32
1182 "1i71yhvlkvi5fp3m8jl9317cnddkbnrcy0syrmiw4y1lrq0cbncj"))))
1183 (build-system ruby-build-system)
1184 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
1185 ;; To break the dependency cycle we disable tests.
1186 (arguments `(#:tests? #f))
1187 (propagated-inputs
1188 `(("ruby-gettext" ,ruby-gettext)
1189 ("ruby-yard" ,ruby-yard)))
1190 (native-inputs
1191 `(("bundler" ,bundler)))
1192 (synopsis "Utility library to package internationalized libraries")
1193 (description
1194 "Packnga is a library to translate to many languages using YARD.")
1195 (home-page "http://ranguba.org/packnga/")
1196 (license license:lgpl2.0+)))
1197
3383f5bd
RW
1198(define-public ruby-test-unit
1199 (package
1200 (name "ruby-test-unit")
1201 (version "3.1.5")
1202 (source (origin
1203 (method url-fetch)
1204 (uri (rubygems-uri "test-unit" version))
1205 (sha256
1206 (base32
1207 "0jxznjzwmrlp8wqjxsd06qbiddffn68pdhz6nrqpjbiln1z3af4w"))))
1208 (build-system ruby-build-system)
1209 (propagated-inputs
1210 `(("ruby-power-assert" ,ruby-power-assert)))
1211 (native-inputs
1212 `(("bundler" ,bundler)
1213 ("ruby-packnga" ,ruby-packnga)
1214 ("ruby-yard" ,ruby-yard)))
1215 (synopsis "Unit testing framework for Ruby")
1216 (description "@code{Test::Unit} is unit testing framework for Ruby, based
1217on xUnit principles. These were originally designed by Kent Beck, creator of
1218extreme programming software development methodology, for Smalltalk's SUnit.
1219It allows writing tests, checking results and automated testing in Ruby.")
1220 (home-page "http://test-unit.github.io/")
1221 (license (list license:psfl license:ruby))))
1222
25d6d49b
RW
1223(define-public ruby-metaclass
1224 (package
1225 (name "ruby-metaclass")
1226 (version "0.0.4")
1227 (source (origin
1228 (method url-fetch)
1229 (uri (rubygems-uri "metaclass" version))
1230 (sha256
1231 (base32
1232 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
1233 (build-system ruby-build-system)
1234 (arguments
1235 `(#:phases
1236 (modify-phases %standard-phases
1237 (add-after 'unpack 'add-test-unit-to-search-path
761e7042
BW
1238 (lambda* (#:key inputs #:allow-other-keys)
1239 (let* ((test-unit (assoc-ref inputs "ruby-test-unit"))
1240 (test-unit-home (gem-home test-unit
1241 ,(package-version ruby))))
1242 (substitute* "Rakefile"
1243 (("t\\.libs << \"test\"" line)
1244 (string-append line "; t.libs << \""
1245 test-unit-home
1246 "/gems/test-unit-"
1247 ,(package-version ruby-test-unit)
1248 "/lib\""))))
1249 #t)))))
25d6d49b
RW
1250 (native-inputs
1251 `(("bundler" ,bundler)
1252 ("ruby-test-unit" ,ruby-test-unit)))
1253 (synopsis "Ruby library adding metaclass method to all objects")
1254 (description
1255 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
1256objects.")
7bf837fd 1257 (home-page "https://github.com/floehopper/metaclass")
25d6d49b
RW
1258 (license license:expat)))
1259
21f7b7bd
RW
1260(define-public ruby-blankslate
1261 (package
1262 (name "ruby-blankslate")
1263 (version "3.1.3")
1264 (source (origin
1265 (method url-fetch)
1266 (uri (rubygems-uri "blankslate" version))
1267 (sha256
1268 (base32
1269 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
1270 (build-system ruby-build-system)
1271 (arguments
1272 `(#:phases
1273 (modify-phases %standard-phases
1274 (replace 'check
1275 (lambda _ (zero? (system* "rspec" "spec/")))))))
1276 (native-inputs
1277 `(("bundler" ,bundler)
1278 ("ruby-rspec" ,ruby-rspec)))
1279 (synopsis "Abstract base class with no predefined methods")
1280 (description
1281 "BlankSlate provides an abstract base class with no predefined
1282methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
1283as a base class when writing classes that depend upon
1284@code{method_missing} (e.g. dynamic proxies).")
7bf837fd 1285 (home-page "https://github.com/masover/blankslate")
21f7b7bd
RW
1286 (license license:expat)))
1287
4016ba3f
RW
1288(define-public ruby-instantiator
1289 (package
1290 (name "ruby-instantiator")
1291 (version "0.0.6")
1292 (source (origin
1293 (method url-fetch)
1294 (uri (rubygems-uri "instantiator" version))
1295 (sha256
1296 (base32
1297 "0mfmqhg9xrv9i8i1kmphf15ywddhivyh2z3ccl0xjw8qy54zr21i"))))
1298 (build-system ruby-build-system)
1299 (arguments
1300 `(#:phases
1301 (modify-phases %standard-phases
1302 (add-after 'unpack 'add-test-unit-to-search-path
761e7042
BW
1303 (lambda* (#:key inputs #:allow-other-keys)
1304 (let* ((test-unit (assoc-ref inputs "ruby-test-unit"))
1305 (test-unit-home (gem-home test-unit ,(package-version
1306 ruby))))
1307 (substitute* "Rakefile"
1308 (("t\\.libs << \"test\"" line)
1309 (string-append line "; t.libs << \""
1310 test-unit-home
1311 "/gems/test-unit-"
1312 ,(package-version ruby-test-unit)
1313 "/lib\""))))
1314 #t)))))
4016ba3f
RW
1315 (propagated-inputs
1316 `(("ruby-blankslate" ,ruby-blankslate)))
1317 (native-inputs
1318 `(("bundler" ,bundler)
1319 ("ruby-test-unit" ,ruby-test-unit)))
1320 (synopsis "Instantiate an arbitrary Ruby class")
1321 (description
1322 "Instantiator lets you instantiate an arbitrary Ruby class without
1323knowing anything about the constructor.")
1324 (home-page "https://github.com/floehopper/instantiator")
1325 (license license:expat)))
1326
97aee8d3
RW
1327(define-public ruby-introspection
1328 (package
1329 (name "ruby-introspection")
1330 (version "0.0.3")
1331 (source (origin
1332 (method url-fetch)
1333 (uri (rubygems-uri "introspection" version))
1334 (sha256
1335 (base32
1336 "0g1j71sqfxbqk32wj7d0bkd3dlayfqzprfq3dbr0rq107xbxjcrr"))))
1337 (build-system ruby-build-system)
1338 (arguments
1339 `(#:phases
1340 (modify-phases %standard-phases
1341 (add-after 'unpack 'add-test-unit-to-search-path
1342 (lambda* (#:key inputs #:allow-other-keys)
761e7042
BW
1343 (let* ((test-unit (assoc-ref inputs "ruby-test-unit"))
1344 (test-unit-home (gem-home test-unit ,(package-version
1345 ruby))))
1346 (substitute* "Rakefile"
1347 (("t\\.libs << \"test\"" line)
1348 (string-append line "; t.libs << \""
1349 test-unit-home
1350 "/gems/test-unit-"
1351 ,(package-version ruby-test-unit)
1352 "/lib\""))))
97aee8d3
RW
1353 #t)))))
1354 (propagated-inputs
1355 `(("ruby-instantiator" ,ruby-instantiator)
1356 ("ruby-metaclass" ,ruby-metaclass)))
1357 (native-inputs
1358 `(("bundler" ,bundler)
1359 ("ruby-blankslate" ,ruby-blankslate)
1360 ("ruby-test-unit" ,ruby-test-unit)))
1361 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
1362 (description
1363 "Introspection provides tools to inspect the hierarchy of method
1364definitions on a Ruby object.")
1365 (home-page "https://github.com/floehopper/introspection")
1366 (license license:expat)))
1367
d93062fd
RW
1368(define-public ruby-redcarpet
1369 (package
1370 (name "ruby-redcarpet")
1371 (version "3.3.3")
1372 (source (origin
1373 (method url-fetch)
1374 (uri (rubygems-uri "redcarpet" version))
1375 (sha256
1376 (base32
1377 "14i3wypp97bpk20679d1csy88q4hsgfqbnqw6mryl77m2g0d09pk"))))
1378 (build-system ruby-build-system)
1379 (arguments
1380 `(#:phases
1381 (modify-phases %standard-phases
1382 ;; The gem archive does not include the conformance tests.
1383 (add-after 'unpack 'disable-conformance-tests
1384 (lambda _
1385 (substitute* "Rakefile"
1386 (("task :test => %w\\[test:unit test:conformance\\]")
1387 "task :test => %w[test:unit]"))
1388 #t)))))
1389 (native-inputs
1390 `(("bundler" ,bundler)
1391 ("ruby-test-unit" ,ruby-test-unit)
1392 ("ruby-rake-compiler" ,ruby-rake-compiler)))
1393 (synopsis "Extensible Markdown to (X)HTML converter")
1394 (description
1395 "Redcarpet is an extensible Ruby library for Markdown processing and
1396conversion to (X)HTML.")
7bf837fd 1397 (home-page "https://github.com/vmg/redcarpet")
d93062fd
RW
1398 (license license:expat)))
1399
4f2a52ae
RW
1400(define-public ruby-mocha
1401 (package
1402 (name "ruby-mocha")
1403 (version "1.1.0")
1404 (source (origin
1405 (method url-fetch)
1406 (uri (rubygems-uri "mocha" version))
1407 (sha256
1408 (base32
1409 "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
1410 (build-system ruby-build-system)
1411 (arguments
1412 `(#:phases
1413 (modify-phases %standard-phases
1414 (add-after 'unpack 'add-test-unit-to-search-path
1415 (lambda* (#:key inputs #:allow-other-keys)
761e7042
BW
1416 (let* ((test-unit (assoc-ref inputs "ruby-test-unit"))
1417 (test-unit-home (gem-home test-unit
1418 ,(package-version ruby))))
1419 (substitute* "Rakefile"
1420 (("t\\.libs << 'test'" line)
1421 (string-append line "; t.libs << \""
1422 test-unit-home
1423 "/gems/test-unit-"
1424 ,(package-version ruby-test-unit)
1425 "/lib\""))))
4f2a52ae
RW
1426 #t))
1427 (add-before 'check 'use-latest-redcarpet
1428 (lambda _
1429 (substitute* "mocha.gemspec"
71596c3c
BW
1430 (("<redcarpet>.freeze, \\[\"~> 1\"\\]")
1431 "<redcarpet>.freeze, [\">= 3\"]"))
4f2a52ae
RW
1432 #t))
1433 (add-before 'check 'hardcode-version
1434 (lambda _
1435 ;; Mocha is undefined at build time
1436 (substitute* "Rakefile"
1437 (("#\\{Mocha::VERSION\\}") ,version))
1438 #t))
1439 (add-before 'check 'remove-failing-test
1440 ;; FIXME: This test fails for reasons unrelated to Guix packaging.
1441 (lambda _
1442 (delete-file "test/acceptance/stubbing_nil_test.rb")
1443 #t)))))
1444 (propagated-inputs
1445 `(("ruby-metaclass" ,ruby-metaclass)))
1446 (native-inputs
1447 `(("bundler" ,bundler)
1448 ("ruby-yard" ,ruby-yard)
1449 ("ruby-introspection" ,ruby-introspection)
1450 ("ruby-test-unit" ,ruby-test-unit)
1451 ("ruby-redcarpet" ,ruby-redcarpet)))
1452 (synopsis "Mocking and stubbing library for Ruby")
1453 (description
1454 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
1455allows mocking and stubbing of methods on real (non-mock) classes.")
1456 (home-page "http://gofreerange.com/mocha/docs")
1457 (license license:expat)))
1458
2c84ba7e
RW
1459(define-public ruby-net-ssh
1460 (package
1461 (name "ruby-net-ssh")
1462 (version "3.0.1")
1463 (source (origin
1464 (method url-fetch)
1465 (uri (rubygems-uri "net-ssh" version))
1466 (sha256
1467 (base32
1468 "1dzqkgwi9xm6mbfk1rkk17rzmz8m5xakqi21w1b97ybng6kkw0hf"))))
1469 (build-system ruby-build-system)
1470 (native-inputs
1471 `(("ruby-mocha" ,ruby-mocha)
1472 ("ruby-test-unit" ,ruby-test-unit)))
1473 (synopsis "Ruby implementation of the SSH2 client protocol")
1474 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
1475client protocol. It allows you to write programs that invoke and interact
1476with processes on remote servers, via SSH2.")
1477 (home-page "https://github.com/net-ssh/net-ssh")
1478 (license license:expat)))
1479
2206e948
DT
1480(define-public ruby-minitest
1481 (package
1482 (name "ruby-minitest")
b4092cb8 1483 (version "5.10.2")
2206e948 1484 (source (origin
e83c6d00
DT
1485 (method url-fetch)
1486 (uri (rubygems-uri "minitest" version))
2206e948
DT
1487 (sha256
1488 (base32
b4092cb8 1489 "11my86fnihvpndyknn3c14hc82nhsgggnhlxh8h3bdjpmfsvl0my"))))
2206e948 1490 (build-system ruby-build-system)
2206e948
DT
1491 (native-inputs
1492 `(("ruby-hoe" ,ruby-hoe)))
1493 (synopsis "Small test suite library for Ruby")
1494 (description "Minitest provides a complete suite of Ruby testing
1495facilities supporting TDD, BDD, mocking, and benchmarking.")
1496 (home-page "https://github.com/seattlerb/minitest")
1497 (license license:expat)))
1498
1db6e09f
RW
1499;; This is the last release of Minitest 4, which is used by some packages.
1500(define-public ruby-minitest-4
1501 (package (inherit ruby-minitest)
1502 (version "4.7.5")
1503 (source (origin
1504 (method url-fetch)
1505 (uri (rubygems-uri "minitest" version))
1506 (sha256
1507 (base32
1508 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
1509 (arguments
1510 `(#:phases
1511 (modify-phases %standard-phases
1512 (add-after 'unpack 'remove-unsupported-method
1513 (lambda _
1514 (substitute* "Rakefile"
1515 (("self\\.rubyforge_name = .*") ""))
9a7017eb
BW
1516 #t))
1517 (add-after 'build 'exclude-failing-tests
1518 (lambda _
1519 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
1520 ;; Fixnum.
1521 (delete-file "test/minitest/test_minitest_spec.rb")
1522 #t)))))))
1db6e09f 1523
35130835
DT
1524(define-public ruby-minitest-sprint
1525 (package
1526 (name "ruby-minitest-sprint")
1527 (version "1.1.0")
1528 (source (origin
e83c6d00
DT
1529 (method url-fetch)
1530 (uri (rubygems-uri "minitest-sprint" version))
35130835
DT
1531 (sha256
1532 (base32
e83c6d00 1533 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
35130835 1534 (build-system ruby-build-system)
35130835
DT
1535 (native-inputs
1536 `(("ruby-hoe" ,ruby-hoe)
1537 ("ruby-minitest" ,ruby-minitest)))
1538 (synopsis "Fast test suite runner for minitest")
1539 (description "Minitest-sprint is a test runner for minitest that makes it
1540easier to re-run individual failing tests.")
1541 (home-page "https://github.com/seattlerb/minitest-sprint")
1542 (license license:expat)))
1543
0808e361
DT
1544(define-public ruby-minitest-bacon
1545 (package
1546 (name "ruby-minitest-bacon")
1547 (version "1.0.2")
1548 (source (origin
e83c6d00
DT
1549 (method url-fetch)
1550 (uri (rubygems-uri "minitest-bacon" version))
0808e361
DT
1551 (sha256
1552 (base32
e83c6d00 1553 "0cm7r68422743i3b6fm4rrm0r6cnnjmglq5gcmmgl1f0rk5hnf6r"))))
0808e361 1554 (build-system ruby-build-system)
0808e361
DT
1555 (native-inputs
1556 `(("ruby-hoe" ,ruby-hoe)))
1557 (inputs
1558 `(("ruby-minitest" ,ruby-minitest)))
1559 (synopsis "Bacon compatibility library for minitest")
1560 (description "Minitest-bacon extends minitest with bacon-like
1561functionality, making it easier to migrate test suites from bacon to minitest.")
1562 (home-page "https://github.com/seattlerb/minitest-bacon")
1563 (license license:expat)))
1564
39dc0eb5
BW
1565(define-public ruby-minitest-focus
1566 (package
1567 (name "ruby-minitest-focus")
1568 (version "1.1.2")
1569 (source
1570 (origin
1571 (method url-fetch)
1572 (uri (rubygems-uri "minitest-focus" version))
1573 (sha256
1574 (base32
1575 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
1576 (build-system ruby-build-system)
1577 (propagated-inputs
1578 `(("ruby-minitest" ,ruby-minitest)))
1579 (native-inputs
1580 `(("ruby-hoe" ,ruby-hoe)))
1581 (synopsis "Allows a few specific tests to be focused on")
1582 (description
1583 "@code{minitest-focus} gives the ability focus on a few tests with ease
1584without having to use command-line arguments. It introduces a @code{focus}
1585class method for use in testing classes, specifying that the next defined test
1586is to be run.")
1587 (home-page "https://github.com/seattlerb/minitest-focus")
1588 (license license:expat)))
1589
99fc5cd5
BW
1590(define-public ruby-minitest-pretty-diff
1591 ;; Use git reference because gem is out of date and does not contain testing
1592 ;; script. There are no releases on GitHub.
1593 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
1594 (package
1595 (name "ruby-minitest-pretty-diff")
1596 (version (string-append "0.1-1." (string-take commit 8)))
1597 (source (origin
1598 (method git-fetch)
1599 (uri (git-reference
1600 (url "https://github.com/adammck/minitest-pretty_diff.git")
1601 (commit commit)))
1602 (file-name (string-append name "-" version "-checkout"))
1603 (sha256
1604 (base32
1605 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
1606 (build-system ruby-build-system)
1607 (arguments
1608 `(#:phases
1609 (modify-phases %standard-phases
1610 (replace 'check
1611 (lambda _
1612 (zero? (system* "script/test")))))))
1613 (native-inputs
1614 `(("bundler" ,bundler)
1615 ("ruby-turn" ,ruby-turn)))
1616 (synopsis "Pretty-print hashes and arrays in MiniTest")
1617 (description
1618 "@code{minitest-pretty_diff} monkey-patches
1619@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
1620diffing them. This makes it easier to spot differences between nested
1621structures when tests fail.")
1622 (home-page "https://github.com/adammck/minitest-pretty_diff")
1623 (license license:expat))))
1624
685d0d2f
BW
1625(define-public ruby-minitest-moar
1626 (package
1627 (name "ruby-minitest-moar")
1628 (version "0.0.4")
1629 (source
1630 (origin
1631 (method url-fetch)
1632 (uri (rubygems-uri "minitest-moar" version))
1633 (sha256
1634 (base32
1635 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
1636 (build-system ruby-build-system)
1637 (arguments
1638 `(#:phases
1639 (modify-phases %standard-phases
1640 (add-before 'check 'clean-dependencies
1641 (lambda _
1642 ;; Remove all gems defined in the Gemfile because these are not
1643 ;; truly needed.
1644 (substitute* "Gemfile"
1645 (("gem .*") ""))
1646 ;; Remove byebug as not needed to run tests.
1647 (substitute* "test/test_helper.rb"
1648 (("require 'byebug'") ""))
1649 #t)))))
1650 (native-inputs
1651 `(("bundler" ,bundler)
1652 ("ruby-minitest" ,ruby-minitest)))
1653 (synopsis "Extra features and changes to MiniTest")
1654 (description "@code{MiniTest Moar} add some additional features and
1655changes some default behaviours in MiniTest. For instance, Moar replaces the
1656MiniTest @code{Object#stub} with a global @code{stub} method.")
1657 (home-page "https://github.com/dockyard/minitest-moar")
1658 (license license:expat)))
1659
e07ef1d6
BW
1660(define-public ruby-minitest-bonus-assertions
1661 (package
1662 (name "ruby-minitest-bonus-assertions")
1663 (version "2.0")
1664 (source
1665 (origin
1666 (method url-fetch)
1667 (uri (rubygems-uri "minitest-bonus-assertions" version))
1668 (sha256
1669 (base32
1670 "11nrd32kwy61ndg9csk7l1ifya79ghrrv3vsrxj57k50m7na6jkm"))))
1671 (build-system ruby-build-system)
1672 (arguments
1673 `(#:phases
1674 (modify-phases %standard-phases
1675 (add-before 'check 'clean-dependencies
1676 (lambda _
1677 ;; Remove unneeded require statement that would entail another
1678 ;; dependency.
1679 (substitute* "test/minitest_config.rb"
1680 (("require 'minitest/bisect'") ""))
1681 #t)))))
1682 (native-inputs
1683 `(("ruby-hoe" ,ruby-hoe)
1684 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
1685 ("ruby-minitest-focus" ,ruby-minitest-focus)
1686 ("ruby-minitest-moar" ,ruby-minitest-moar)))
1687 (synopsis "Bonus assertions for @code{Minitest}")
1688 (description
1689 "Minitest bonus assertions provides extra MiniTest assertions. For
1690instance, it provides @code{assert_true}, @code{assert_false} and
1691@code{assert_set_equal}.")
1692 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
1693 (license license:expat)))
1694
e582fa93
BW
1695(define-public ruby-minitest-rg
1696 (package
1697 (name "ruby-minitest-rg")
1698 (version "5.2.0")
1699 (source
1700 (origin
1701 (method url-fetch)
1702 (uri (rubygems-uri "minitest-rg" version))
1703 (sha256
1704 (base32
1705 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
1706 (build-system ruby-build-system)
1707 (arguments
1708 ;; Some tests fail even outside Guix, so disable tests.
1709 ;; https://github.com/blowmage/minitest-rg/issues/12
1710 ;; https://github.com/blowmage/minitest-rg/pull/13
1711 `(#:tests? #f))
1712 (propagated-inputs
1713 `(("ruby-minitest" ,ruby-minitest)))
1714 (synopsis "Coloured output for Minitest")
1715 (description
1716 "@code{minitest-rg} changes the colour of the output from Minitest.")
1717 (home-page "http://blowmage.com/minitest-rg")
1718 (license license:expat)))
1719
2a96dbe6
BW
1720(define-public ruby-minitest-hooks
1721 (package
1722 (name "ruby-minitest-hooks")
1723 (version "1.4.0")
1724 (source
1725 (origin
1726 (method url-fetch)
1727 (uri (rubygems-uri "minitest-hooks" version))
1728 (sha256
1729 (base32
1730 "092fymh0c09v3a585qw3hc15b0zf159s74rxx1ga87drk5jr958z"))))
1731 (build-system ruby-build-system)
1732 (arguments
1733 '(#:test-target "spec"))
1734 (native-inputs
1735 `(("ruby-sequel" ,ruby-sequel)
1736 ("ruby-sqlite3" ,ruby-sqlite3)))
1737 (synopsis "Hooks for the minitest framework")
1738 (description
1739 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
1740@code{around_all} hooks for Minitest. This allows, for instance, running each
1741suite of specs inside a database transaction, running each spec inside its own
1742savepoint inside that transaction. This can significantly speed up testing
1743for specs that share expensive database setup code.")
7bf837fd 1744 (home-page "https://github.com/jeremyevans/minitest-hooks")
2a96dbe6
BW
1745 (license license:expat)))
1746
afbbdf77
DT
1747(define-public ruby-daemons
1748 (package
1749 (name "ruby-daemons")
1750 (version "1.2.2")
1751 (source (origin
1752 (method url-fetch)
e83c6d00 1753 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
1754 (sha256
1755 (base32
e83c6d00 1756 "121c7vkimg3baxga69xvdkwxiq8wkmxqvdbyqi5i82vhih5d3cn3"))))
afbbdf77
DT
1757 (build-system ruby-build-system)
1758 (arguments
1759 `(#:tests? #f)) ; no test suite
1760 (synopsis "Daemonize Ruby programs")
1761 (description "Daemons provides a way to wrap existing Ruby scripts to be
1762run as a daemon and to be controlled by simple start/stop/restart commands.")
1763 (home-page "https://github.com/thuehlinger/daemons")
1764 (license license:expat)))
66e20863
DT
1765
1766(define-public ruby-git
1767 (package
1768 (name "ruby-git")
1769 (version "1.2.9.1")
1770 (source (origin
1771 (method url-fetch)
e83c6d00 1772 (uri (rubygems-uri "git" version))
66e20863
DT
1773 (sha256
1774 (base32
e83c6d00 1775 "1sqfj8lmhl7c5zamcckkpik4izfph2zkv6krw0i8mzj5pdws5acs"))))
66e20863
DT
1776 (build-system ruby-build-system)
1777 (arguments
e83c6d00
DT
1778 `(#:tests? #f ; no tests
1779 #:phases (modify-phases %standard-phases
1780 (add-after 'install 'patch-git-binary
1781 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
1782 ;; Make the default git binary an absolute path to the
1783 ;; store.
e83c6d00
DT
1784 (let ((git (string-append (assoc-ref inputs "git")
1785 "/bin/git"))
1786 (config (string-append (getenv "GEM_HOME")
1787 "/gems/git-" ,version
1788 "/lib/git/config.rb")))
1789 (substitute* (list config)
66e20863
DT
1790 (("'git'")
1791 (string-append "'" git "'")))
e83c6d00 1792 #t))))))
66e20863
DT
1793 (inputs
1794 `(("git" ,git)))
1795 (synopsis "Ruby wrappers for Git")
1796 (description "Ruby/Git is a Ruby library that can be used to create, read
1797and manipulate Git repositories by wrapping system calls to the git binary.")
1798 (home-page "https://github.com/schacon/ruby-git")
1799 (license license:expat)))
71d3e2c2
DT
1800
1801(define-public ruby-slop
1802 (package
1803 (name "ruby-slop")
1804 (version "4.1.0")
1805 (source (origin
1806 (method url-fetch)
e83c6d00 1807 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
1808 (sha256
1809 (base32
e83c6d00 1810 "0dj0ps6v1mqd02k84mgwd7hp578n2bzl7c51h3grdhxfl3jkfsj5"))))
71d3e2c2
DT
1811 (build-system ruby-build-system)
1812 (native-inputs
1813 `(("ruby-minitest" ,ruby-minitest)))
1814 (synopsis "Ruby command line option parser")
1815 (description "Slop provides a Ruby domain specific language for gathering
1816options and parsing command line flags.")
1817 (home-page "https://github.com/leejarvis/slop")
1818 (license license:expat)))
e778a549 1819
5337f8b9
DT
1820(define-public ruby-slop-3
1821 (package (inherit ruby-slop)
1822 (version "3.6.0")
1823 (source (origin
1824 (method url-fetch)
1825 (uri (rubygems-uri "slop" version))
1826 (sha256
1827 (base32
1828 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
1829
e778a549
DT
1830(define-public ruby-multipart-post
1831 (package
1832 (name "ruby-multipart-post")
1833 (version "2.0.0")
1834 (source (origin
1835 (method url-fetch)
e83c6d00 1836 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
1837 (sha256
1838 (base32
e83c6d00 1839 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
1840 (build-system ruby-build-system)
1841 (native-inputs
1842 `(("bundler" ,bundler)))
1843 (synopsis "Multipart POST library for Ruby")
1844 (description "Multipart-Post Adds multipart POST capability to Ruby's
1845net/http library.")
1846 (home-page "https://github.com/nicksieger/multipart-post")
1847 (license license:expat)))
f8da3af0
DT
1848
1849(define-public ruby-arel
1850 (package
1851 (name "ruby-arel")
e87dfdee 1852 (version "7.1.4")
f8da3af0
DT
1853 (source (origin
1854 (method url-fetch)
1855 (uri (rubygems-uri "arel" version))
1856 (sha256
1857 (base32
e87dfdee 1858 "0l757dkkaxk5fq3368l79jpyzq9a9driricjamhiwhwvh0h7xcyx"))))
f8da3af0
DT
1859 (build-system ruby-build-system)
1860 (arguments '(#:tests? #f)) ; no tests
1861 (home-page "https://github.com/rails/arel")
1862 (synopsis "SQL AST manager for Ruby")
6f23e2fb
TGR
1863 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
1864Ruby. It simplifies the generation of complex SQL queries and adapts to
1865various relational database implementations.")
f8da3af0 1866 (license license:expat)))
616eaead
DT
1867
1868(define-public ruby-minitar
bfaf8efd
BW
1869 ;; We package from the GitHub source to fix the security issue reported at
1870 ;; https://github.com/halostatue/minitar/issues/16.
1871 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
1872 (package
1873 (name "ruby-minitar")
1874 (version (string-append "0.5.4-1." (string-take commit 8)))
1875 (source
1876 (origin
1877 (method git-fetch)
1878 (uri (git-reference
1879 (url "https://github.com/halostatue/minitar.git")
1880 (commit commit)))
1881 (file-name (string-append name "-" version "-checkout"))
1882 (sha256
1883 (base32
1884 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
1885 (build-system ruby-build-system)
1886 (arguments
1887 '(#:tests? #f)) ; missing a gemspec
1888 (synopsis "Ruby library and utility for handling tar archives")
1889 (description
1890 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
616eaead 1891that provides the ability to deal with POSIX tar archive files.")
bfaf8efd
BW
1892 (home-page "http://www.github.com/atoulme/minitar")
1893 (license (list license:gpl2+ license:ruby)))))
bea1c0e2
DT
1894
1895(define-public ruby-mini-portile
1896 (package
1897 (name "ruby-mini-portile")
1898 (version "0.6.2")
1899 (source
1900 (origin
1901 (method url-fetch)
1902 (uri (rubygems-uri "mini_portile" version))
1903 (sha256
1904 (base32
1905 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
1906 (build-system ruby-build-system)
1907 (arguments
1908 '(#:tests? #f)) ; tests require network access
1909 (synopsis "Ports system for Ruby developers")
1910 (description "Mini-portile is a port/recipe system for Ruby developers.
1911It provides a standard way to compile against specific versions of libraries
1912to reproduce user environments.")
7bf837fd 1913 (home-page "https://github.com/flavorjones/mini_portile")
bea1c0e2 1914 (license license:expat)))
e920bfca 1915
d000fc92
BW
1916(define-public ruby-mini-portile-2
1917 (package (inherit ruby-mini-portile)
59884b71 1918 (version "2.1.0")
d000fc92
BW
1919 (source (origin
1920 (method url-fetch)
1921 (uri (rubygems-uri "mini_portile2" version))
1922 (sha256
1923 (base32
59884b71 1924 "1y25adxb1hgg1wb2rn20g3vl07qziq6fz364jc5694611zz863hb"))))))
d000fc92 1925
e920bfca
DT
1926(define-public ruby-nokogiri
1927 (package
1928 (name "ruby-nokogiri")
19e5fb60 1929 (version "1.7.0.1")
e920bfca
DT
1930 (source (origin
1931 (method url-fetch)
1932 (uri (rubygems-uri "nokogiri" version))
1933 (sha256
1934 (base32
19e5fb60 1935 "10xahg0fwydh27psm8bv429mdja2ks6x83vxizq26ib8wvs05mv3"))))
e920bfca
DT
1936 (build-system ruby-build-system)
1937 (arguments
1938 ;; Tests fail because Nokogiri can only test with an installed extension,
1939 ;; and also because many test framework dependencies are missing.
7b01f250 1940 `(#:tests? #f
e920bfca
DT
1941 #:gem-flags (list "--" "--use-system-libraries"
1942 (string-append "--with-xml2-include="
1943 (assoc-ref %build-inputs "libxml2")
5e7f1b0b
BW
1944 "/include/libxml2" ))
1945 #:phases
1946 (modify-phases %standard-phases
7b01f250
BW
1947 (add-before 'build 'patch-extconf
1948 ;; 'pkg-config' is not included in the GEM_PATH during
1949 ;; installation, so we add it directly to the load path.
1950 (lambda* (#:key inputs #:allow-other-keys)
1951 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config"))
1952 (pkg-config-home (gem-home pkg-config
1953 ,(package-version ruby))))
1954 (substitute* "ext/nokogiri/extconf.rb"
1955 (("gem 'pkg-config'.*")
1956 (string-append "$:.unshift '"
1957 pkg-config-home
1958 "/gems/pkg-config-"
1959 ,(package-version ruby-pkg-config)
1960 "/lib'\n"))))
5e7f1b0b 1961 #t)))))
e920bfca 1962 (native-inputs
7b01f250 1963 `(("ruby-hoe" ,ruby-hoe)))
e920bfca
DT
1964 (inputs
1965 `(("zlib" ,zlib)
1966 ("libxml2" ,libxml2)
1967 ("libxslt" ,libxslt)))
1968 (propagated-inputs
7b01f250
BW
1969 `(("ruby-mini-portile" ,ruby-mini-portile-2)
1970 ("ruby-pkg-config" ,ruby-pkg-config)))
e920bfca
DT
1971 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
1972 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
1973both CSS3 selector and XPath 1.0 support.")
1974 (home-page "http://www.nokogiri.org/")
1975 (license license:expat)))
30b0b725
DT
1976
1977(define-public ruby-method-source
1978 (package
1979 (name "ruby-method-source")
1980 (version "0.8.2")
1981 (source
1982 (origin
1983 (method url-fetch)
1984 (uri (rubygems-uri "method_source" version))
1985 (sha256
1986 (base32
1987 "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
1988 (build-system ruby-build-system)
1989 (native-inputs
1990 `(("ruby-bacon" ,ruby-bacon)
1991 ("git" ,git)))
1992 (synopsis "Retrieve the source code for Ruby methods")
1993 (description "Method_source retrieves the source code for Ruby methods.
1994Additionally, it can extract source code from Proc and Lambda objects or just
1995extract comments.")
1996 (home-page "https://github.com/banister/method_source")
1997 (license license:expat)))
2e3fdea4
DT
1998
1999(define-public ruby-coderay
2000 (package
2001 (name "ruby-coderay")
5e0535a7 2002 (version "1.1.1")
2e3fdea4
DT
2003 (source
2004 (origin
2005 (method url-fetch)
2006 (uri (rubygems-uri "coderay" version))
2007 (sha256
2008 (base32
5e0535a7 2009 "1x6z923iwr1hi04k6kz5a6llrixflz8h5sskl9mhaaxy9jx2x93r"))))
2e3fdea4
DT
2010 (build-system ruby-build-system)
2011 (arguments
2012 '(#:tests? #f)) ; missing test files
2013 (synopsis "Ruby syntax highlighting library")
2014 (description "Coderay is a Ruby library that provides syntax highlighting
2015for select languages.")
2016 (home-page "http://coderay.rubychan.de")
2017 (license license:expat)))
96e76083
DT
2018
2019(define-public ruby-pry
2020 (package
2021 (name "ruby-pry")
f1710d8d 2022 (version "0.10.4")
96e76083
DT
2023 (source
2024 (origin
2025 (method url-fetch)
2026 (uri (rubygems-uri "pry" version))
2027 (sha256
2028 (base32
f1710d8d 2029 "05xbzyin63aj2prrv8fbq2d5df2mid93m81hz5bvf2v4hnzs42ar"))))
96e76083
DT
2030 (build-system ruby-build-system)
2031 (arguments
2032 '(#:tests? #f)) ; no tests
2033 (propagated-inputs
2034 `(("ruby-coderay" ,ruby-coderay)
2035 ("ruby-method-source" ,ruby-method-source)
2036 ("ruby-slop" ,ruby-slop-3)))
2037 (synopsis "Ruby REPL")
2038 (description "Pry is an IRB alternative and runtime developer console for
2039Ruby. It features syntax highlighting, a plugin architecture, runtime
2040invocation, and source and documentation browsing.")
2041 (home-page "http://pryrepl.org")
2042 (license license:expat)))
1415792a 2043
051deeb7
RW
2044(define-public ruby-guard
2045 (package
2046 (name "ruby-guard")
2047 (version "2.13.0")
2048 (source (origin
2049 (method url-fetch)
2050 ;; The gem does not include a Rakefile, nor does it contain a
2051 ;; gemspec file, nor does it come with the tests. This is why
2052 ;; we fetch the tarball from Github.
2053 (uri (string-append "https://github.com/guard/guard/archive/v"
2054 version ".tar.gz"))
2055 (file-name (string-append name "-" version ".tar.gz"))
2056 (sha256
2057 (base32
2058 "1hwj0yi17k6f5axrm0k2bb7fq71dlp0zfywmd7pij9iimbppcca0"))))
2059 (build-system ruby-build-system)
2060 (arguments
2061 `(#:tests? #f ; tests require cucumber
2062 #:phases
2063 (modify-phases %standard-phases
2064 (add-after 'unpack 'remove-git-ls-files
2065 (lambda* (#:key outputs #:allow-other-keys)
2066 (substitute* "guard.gemspec"
2067 (("git ls-files -z") "find . -type f -print0"))
2068 #t))
2069 (replace 'build
2070 (lambda _
2071 (zero? (system* "gem" "build" "guard.gemspec")))))))
2072 (propagated-inputs
2073 `(("ruby-formatador" ,ruby-formatador)
2074 ("ruby-listen" ,ruby-listen)
2075 ("ruby-lumberjack" ,ruby-lumberjack)
2076 ("ruby-nenv" ,ruby-nenv)
2077 ("ruby-notiffany" ,ruby-notiffany)
2078 ("ruby-pry" ,ruby-pry)
2079 ("ruby-shellany" ,ruby-shellany)
2080 ("ruby-thor" ,ruby-thor)))
2081 (native-inputs
2082 `(("bundler" ,bundler)
2083 ("ruby-rspec" ,ruby-rspec)))
2084 (synopsis "Tool to handle events on file system modifications")
2085 (description
2086 "Guard is a command line tool to easily handle events on file system
2087modifications. Guard automates various tasks by running custom rules whenever
2088file or directories are modified.")
2089 (home-page "http://guardgem.org/")
2090 (license license:expat)))
2091
1415792a
DT
2092(define-public ruby-thread-safe
2093 (package
2094 (name "ruby-thread-safe")
2095 (version "0.3.5")
2096 (source
2097 (origin
2098 (method url-fetch)
2099 (uri (rubygems-uri "thread_safe" version))
2100 (sha256
2101 (base32
2102 "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
2103 (build-system ruby-build-system)
2104 (arguments
2105 '(#:tests? #f)) ; needs simplecov, among others
2106 (synopsis "Thread-safe utilities for Ruby")
2107 (description "The thread_safe library provides thread-safe collections and
2108utilities for Ruby.")
2109 (home-page "https://github.com/ruby-concurrency/thread_safe")
2110 (license license:asl2.0)))
08a1b701
DT
2111
2112(define-public ruby-tzinfo
2113 (package
2114 (name "ruby-tzinfo")
2115 (version "1.2.2")
2116 (source
2117 (origin
2118 (method url-fetch)
2119 (uri (rubygems-uri "tzinfo" version))
2120 (sha256
2121 (base32
2122 "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
2123 (build-system ruby-build-system)
2124 (propagated-inputs
2125 `(("ruby-thread-safe" ,ruby-thread-safe)))
2126 (synopsis "Time zone library for Ruby")
2127 (description "TZInfo is a Ruby library that provides daylight savings
2128aware transformations between times in different time zones.")
2129 (home-page "http://tzinfo.github.io")
1e12924a
BW
2130 (license license:expat)))
2131
2132(define-public ruby-tzinfo-data
2133 (package
2134 (name "ruby-tzinfo-data")
06028aed 2135 (version "1.2016.9")
1e12924a
BW
2136 (source
2137 (origin
2138 (method url-fetch)
2139 ;; Download from GitHub because the rubygems version does not contain
2140 ;; Rakefile or tests.
2141 (uri (string-append
2142 "https://github.com/tzinfo/tzinfo-data/archive/v"
2143 version
2144 ".tar.gz"))
2145 (file-name (string-append name "-" version ".tar.gz"))
2146 (sha256
2147 (base32
06028aed 2148 "0i8vz2j7wmcpr4pd066qvlg4if5blscjrgxk2imavfa49nq5lp06"))
1e12924a
BW
2149 ;; Remove the known test failure.
2150 ;; https://github.com/tzinfo/tzinfo-data/issues/10
2151 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
2152 (patches (search-patches
2153 "ruby-tzinfo-data-ignore-broken-test.patch"))))
2154 (build-system ruby-build-system)
2155 (propagated-inputs
2156 `(("ruby-tzinfo" ,ruby-tzinfo)))
2157 (synopsis "Data from the IANA Time Zone database")
2158 (description
2159 "This library provides @code{TZInfo::Data}, which contains data from the
2160IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
2161 (home-page "http://tzinfo.github.io")
08a1b701 2162 (license license:expat)))
c99e2247 2163
48e6851f
RW
2164(define-public ruby-rb-inotify
2165 (package
2166 (name "ruby-rb-inotify")
2167 (version "0.9.5")
2168 (source
2169 (origin
2170 (method url-fetch)
2171 (uri (rubygems-uri "rb-inotify" version))
2172 (sha256
2173 (base32
2174 "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"))))
2175 (build-system ruby-build-system)
2176 (arguments
2177 '(#:tests? #f ; there are no tests
2178 #:phases
2179 (modify-phases %standard-phases
2180 ;; Building the gemspec with rake is not working here since it is
2181 ;; generated with Jeweler. It is also unnecessary because the
2182 ;; existing gemspec does not use any development tools to generate a
2183 ;; list of files.
2184 (replace 'build
2185 (lambda _
2186 (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
2187 (propagated-inputs
2188 `(("ruby-ffi" ,ruby-ffi)))
2189 (native-inputs
2190 `(("ruby-yard" ,ruby-yard)))
2191 (synopsis "Ruby wrapper for Linux's inotify")
2192 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
2193kernel subsystem for monitoring changes to files and directories.")
2194 (home-page "https://github.com/nex3/rb-inotify")
2195 (license license:expat)))
2196
a75bdfce
RW
2197(define-public ruby-pry-editline
2198 (package
2199 (name "ruby-pry-editline")
2200 (version "1.1.2")
2201 (source (origin
2202 (method url-fetch)
2203 (uri (rubygems-uri "pry-editline" version))
2204 (sha256
2205 (base32
2206 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
2207 (build-system ruby-build-system)
2208 (arguments `(#:tests? #f)) ; no tests included
2209 (native-inputs
2210 `(("bundler" ,bundler)))
2211 (synopsis "Open the current REPL line in an editor")
2212 (description
2213 "This gem provides a plugin for the Ruby REPL to enable opening the
2214current line in an external editor.")
2215 (home-page "https://github.com/tpope/pry-editline")
2216 (license license:expat)))
2217
d3b20a02
RW
2218(define-public ruby-sdoc
2219 (package
2220 (name "ruby-sdoc")
fdf3a68d 2221 (version "0.4.2")
d3b20a02
RW
2222 (source (origin
2223 (method url-fetch)
2224 (uri (rubygems-uri "sdoc" version))
2225 (sha256
2226 (base32
fdf3a68d 2227 "0qhvy10vnmrqcgh8494m13kd5ag9c3sczzhfasv8j0294ylk679n"))))
d3b20a02
RW
2228 (build-system ruby-build-system)
2229 (arguments
2230 `(#:phases
2231 (modify-phases %standard-phases
fc29d5e6 2232 (add-before 'check 'set-rubylib-and-patch-gemfile
d3b20a02 2233 (lambda _
fdf3a68d 2234 (setenv "RUBYLIB" "lib")
fc29d5e6
BW
2235 (substitute* "sdoc.gemspec"
2236 (("s.add_runtime_dependency.*") "\n")
2237 (("s.add_dependency.*") "\n"))
2238 (substitute* "Gemfile"
2239 (("gem \"rake\".*")
2240 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
d3b20a02
RW
2241 #t)))))
2242 (propagated-inputs
2243 `(("ruby-json" ,ruby-json)))
2244 (native-inputs
2245 `(("bundler" ,bundler)
fdf3a68d
BW
2246 ("ruby-minitest" ,ruby-minitest)
2247 ("ruby-hoe" ,ruby-hoe)))
d3b20a02
RW
2248 (synopsis "Generate searchable RDoc documentation")
2249 (description
2250 "SDoc is an RDoc documentation generator to build searchable HTML
2251documentation for Ruby code.")
7bf837fd 2252 (home-page "https://github.com/voloko/sdoc")
d3b20a02
RW
2253 (license license:expat)))
2254
70b002aa
RW
2255(define-public ruby-tins
2256 (package
2257 (name "ruby-tins")
2258 (version "1.7.0")
2259 (source (origin
2260 (method url-fetch)
2261 (uri (rubygems-uri "tins" version))
2262 (sha256
2263 (base32
2264 "1060h8dgnjl9az0sv1b74yrni8d4mh3x858wq6yfbfdf5dxrfl0a"))))
2265 (build-system ruby-build-system)
2266 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
2267 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
2268 ;; the gemspec.
2269 (arguments
2270 `(#:tests? #f ; there are no tests
2271 #:phases
2272 (modify-phases %standard-phases
2273 (replace 'build
2274 (lambda _
2275 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
2276 ;; causes an error.
2277 (substitute* "tins.gemspec"
2278 (("\"lib/spruz\", ") ""))
2279 (zero? (system* "gem" "build" "tins.gemspec")))))))
2280 (synopsis "Assorted tools for Ruby")
2281 (description "Tins is a Ruby library providing assorted tools.")
2282 (home-page "https://github.com/flori/tins")
2283 (license license:expat)))
2284
bc8277e4
RW
2285(define-public ruby-gem-hadar
2286 (package
2287 (name "ruby-gem-hadar")
2288 (version "1.3.1")
2289 (source (origin
2290 (method url-fetch)
2291 (uri (rubygems-uri "gem_hadar" version))
2292 (sha256
2293 (base32
2294 "1j8qri4m9wf8nbfv0kakrgsv2x8vg10914xgm6f69nw8zi3i39ws"))))
2295 (build-system ruby-build-system)
2296 ;; This gem needs itself at development time. We disable rebuilding of the
2297 ;; gemspec to avoid this loop.
2298 (arguments
2299 `(#:tests? #f ; there are no tests
2300 #:phases
2301 (modify-phases %standard-phases
2302 (replace 'build
2303 (lambda _
2304 (zero? (system* "gem" "build" "gem_hadar.gemspec")))))))
2305 (propagated-inputs
2306 `(("git" ,git)
2307 ("ruby-tins" ,ruby-tins)
2308 ("ruby-sdoc" ,ruby-sdoc)))
2309 (native-inputs
2310 `(("bundler" ,bundler)))
2311 (synopsis "Library for the development of Ruby gems")
2312 (description
2313 "This library contains some useful functionality to support the
2314development of Ruby gems.")
2315 (home-page "https://github.com/flori/gem_hadar")
2316 (license license:expat)))
2317
d8cafe29
RW
2318(define-public ruby-minitest-tu-shim
2319 (package
2320 (name "ruby-minitest-tu-shim")
2321 (version "1.3.3")
2322 (source (origin
2323 (method url-fetch)
2324 (uri (rubygems-uri "minitest_tu_shim" version))
2325 (sha256
2326 (base32
2327 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
2328 (build-system ruby-build-system)
2329 (arguments
2330 `(#:phases
2331 (modify-phases %standard-phases
2332 (add-after 'unpack 'fix-test-include-path
2333 (lambda* (#:key inputs #:allow-other-keys)
761e7042
BW
2334 (let* ((minitest (assoc-ref inputs "ruby-minitest-4"))
2335 (minitest-home (gem-home minitest
2336 ,(package-version ruby))))
2337 (substitute* "Rakefile"
2338 (("Hoe\\.add_include_dirs .*")
2339 (string-append "Hoe.add_include_dirs \""
2340 minitest-home
2341 "/gems/minitest-"
2342 ,(package-version ruby-minitest-4)
2343 "/lib" "\""))))
2344 #t))
d8cafe29
RW
2345 (add-before 'check 'fix-test-assumptions
2346 (lambda _
2347 ;; The test output includes the file name, so a couple of tests
2348 ;; fail. Changing the regular expressions slightly fixes this
2349 ;; problem.
2350 (substitute* "test/test_mini_test.rb"
2351 (("output.sub!\\(.*, 'FILE:LINE'\\)")
2352 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
2353 (("gsub\\(/.*, 'FILE:LINE'\\)")
2354 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
2355 #t)))))
2356 (propagated-inputs
2357 `(("ruby-minitest-4" ,ruby-minitest-4)))
2358 (native-inputs
2359 `(("ruby-hoe" ,ruby-hoe)))
2360 (synopsis "Adapter library between minitest and test/unit")
2361 (description
2362 "This library bridges the gap between the small and fast minitest and
2363Ruby's large and slower test/unit.")
2364 (home-page "https://rubygems.org/gems/minitest_tu_shim")
2365 (license license:expat)))
2366
fd83a212
RW
2367(define-public ruby-term-ansicolor
2368 (package
2369 (name "ruby-term-ansicolor")
2370 (version "1.3.2")
2371 (source (origin
2372 (method url-fetch)
2373 (uri (rubygems-uri "term-ansicolor" version))
2374 (sha256
2375 (base32
2376 "0ydbbyjmk5p7fsi55ffnkq79jnfqx65c3nj8d9rpgl6sw85ahyys"))))
2377 (build-system ruby-build-system)
2378 ;; Rebuilding the gemspec seems to require git, even though this is not a
2379 ;; git repository, so we just build the gem from the existing gemspec.
2380 (arguments
2381 `(#:phases
2382 (modify-phases %standard-phases
2383 (replace 'build
2384 (lambda _
2385 (zero? (system* "gem" "build" "term-ansicolor.gemspec")))))))
2386 (propagated-inputs
2387 `(("ruby-tins" ,ruby-tins)))
2388 (native-inputs
2389 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2390 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
2391 (synopsis "Ruby library to control the attributes of terminal output")
2392 (description
2393 "This Ruby library uses ANSI escape sequences to control the attributes
2394of terminal output.")
2395 (home-page "http://flori.github.io/term-ansicolor/")
2396 ;; There is no mention of the "or later" clause.
2397 (license license:gpl2)))
2398
6e376ca4
RW
2399(define-public ruby-pstree
2400 (package
2401 (name "ruby-pstree")
2402 (version "0.1.0")
2403 (source (origin
2404 (method url-fetch)
2405 (uri (rubygems-uri "pstree" version))
2406 (sha256
2407 (base32
2408 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
2409 (build-system ruby-build-system)
2410 (native-inputs
2411 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2412 ("bundler" ,bundler)))
2413 (synopsis "Create a process tree data structure")
2414 (description
2415 "This library uses the output of the @code{ps} command to create a
2416process tree data structure for the current host.")
2417 (home-page "http://flori.github.com/pstree")
2418 ;; There is no mention of the "or later" clause.
2419 (license license:gpl2)))
2420
53239b5f
RW
2421(define-public ruby-utils
2422 (package
2423 (name "ruby-utils")
2424 (version "0.2.4")
2425 (source (origin
2426 (method url-fetch)
2427 (uri (rubygems-uri "utils" version))
2428 (sha256
2429 (base32
2430 "0vycgscxf3s1xn4yyfsq54zlh082581ga8azybmqgc4pij6iz2cd"))))
2431 (build-system ruby-build-system)
2432 (propagated-inputs
2433 `(("ruby-tins" ,ruby-tins)
2434 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
2435 ("ruby-pstree" ,ruby-pstree)
2436 ("ruby-pry-editline" ,ruby-pry-editline)))
2437 (native-inputs
2438 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2439 ("bundler" ,bundler)))
2440 (synopsis "Command line tools for working with Ruby")
2441 (description
2442 "This package provides assorted command line tools that may be useful
2443when working with Ruby code.")
2444 (home-page "https://github.com/flori/utils")
2445 ;; There is no mention of the "or later" clause.
2446 (license license:gpl2)))
2447
c99e2247
DT
2448(define-public ruby-json
2449 (package
2450 (name "ruby-json")
a281acce 2451 (version "2.1.0")
c99e2247
DT
2452 (source
2453 (origin
2454 (method url-fetch)
2455 (uri (rubygems-uri "json" version))
2456 (sha256
2457 (base32
a281acce 2458 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
c99e2247
DT
2459 (build-system ruby-build-system)
2460 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
2461 (synopsis "JSON library for Ruby")
2462 (description "This Ruby library provides a JSON implementation written as
2463a native C extension.")
2464 (home-page "http://json-jruby.rubyforge.org/")
2465 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 2466
763624f5
RW
2467(define-public ruby-json-pure
2468 (package
2469 (name "ruby-json-pure")
2470 (version "1.8.3")
2471 (source (origin
2472 (method url-fetch)
2473 (uri (rubygems-uri "json_pure" version))
2474 (sha256
2475 (base32
2476 "025aykr360x6dr1jmg8pmsrx7gr30pws4p1q686vnb48zyw1sc94"))))
2477 (build-system ruby-build-system)
2478 (arguments
2479 `(#:modules ((srfi srfi-1)
2480 (ice-9 regex)
2481 (rnrs io ports)
2482 (guix build ruby-build-system)
2483 (guix build utils))
2484 #:phases
2485 (modify-phases %standard-phases
2486 (add-after 'unpack 'replace-git-ls-files
2487 (lambda _
2488 ;; The existing gemspec file already contains a nice list of
2489 ;; files that belong to the gem. We extract the list from the
2490 ;; gemspec file and then replace the file list in the Rakefile to
2491 ;; get rid of the call to "git ls-files".
2492 (let* ((contents (call-with-input-file "json.gemspec" get-string-all))
2493 ;; Guile is unhappy about the #\nul characters in comments.
2494 (filtered (string-filter (lambda (char)
2495 (not (equal? #\nul char)))
2496 contents))
2497 (files (match:substring
2498 (string-match " s\\.files = ([^]]+\\])" filtered) 1)))
2499 (substitute* "Rakefile"
2500 (("FileList\\[`git ls-files`\\.split\\(/\\\\n/\\)\\]")
2501 (string-append "FileList" files))))
a8de0d1e
BW
2502 (substitute* "Gemfile"
2503 ((".*json-java.*") "\n"))
763624f5
RW
2504 #t)))))
2505 (native-inputs
2506 `(("ruby-permutation" ,ruby-permutation)
2507 ("ruby-utils" ,ruby-utils)
2508 ("ragel" ,ragel)
2509 ("bundler" ,bundler)))
2510 (synopsis "JSON implementation in pure Ruby")
2511 (description
2512 "This package provides a JSON implementation written in pure Ruby.")
2513 (home-page "http://flori.github.com/json")
2514 (license license:ruby)))
2515
16b324cd
RW
2516;; Even though this package only provides bindings for a Mac OSX API it is
2517;; required by "ruby-listen" at runtime.
2518(define-public ruby-rb-fsevent
2519 (package
2520 (name "ruby-rb-fsevent")
2521 (version "0.9.6")
2522 (source (origin
2523 (method url-fetch)
2524 (uri (rubygems-uri "rb-fsevent" version))
2525 (sha256
2526 (base32
2527 "1hq57by28iv0ijz8pk9ynih0xdg7vnl1010xjcijfklrcv89a1j2"))))
2528 (build-system ruby-build-system)
2529 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
2530 ;; "listen", which needs "rb-fsevent" at runtime.
2531 (arguments `(#:tests? #f))
2532 (synopsis "FSEvents API with signals catching")
2533 (description
2534 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
2535 (home-page "https://rubygems.org/gems/rb-fsevent")
2536 (license license:expat)))
2537
b86be2ad
RW
2538(define-public ruby-listen
2539 (package
2540 (name "ruby-listen")
2541 (version "3.0.3")
2542 (source
2543 (origin
2544 (method url-fetch)
2545 (uri (rubygems-uri "listen" version))
2546 (sha256
2547 (base32
2548 "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
2549 (build-system ruby-build-system)
2550 (arguments '(#:tests? #f)) ; no tests
2551 (propagated-inputs
cf1a01f4
RW
2552 `(("ruby-rb-inotify" ,ruby-rb-inotify)
2553 ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
b86be2ad
RW
2554 (synopsis "Listen to file modifications")
2555 (description "The Listen gem listens to file modifications and notifies
2556you about the changes.")
2557 (home-page "https://github.com/guard/listen")
2558 (license license:expat)))
2559
5ff89a1b
DT
2560(define-public ruby-activesupport
2561 (package
2562 (name "ruby-activesupport")
2af45e50 2563 (version "5.0.0")
5ff89a1b
DT
2564 (source
2565 (origin
2566 (method url-fetch)
2567 (uri (rubygems-uri "activesupport" version))
2568 (sha256
2569 (base32
2af45e50 2570 "0k7zhnz0aw1ym8phs10r85f91ja45vsd058fm9v0h2k0igw12cpf"))))
5ff89a1b
DT
2571 (build-system ruby-build-system)
2572 (arguments
2af45e50
BW
2573 `(#:phases
2574 (modify-phases %standard-phases
2575 (replace 'check
2576 (lambda _
2577 ;; There is no tests, instead attempt to load the library.
2578 (zero? (system* "ruby" "-Ilib" "-r" "active_support")))))))
5ff89a1b 2579 (propagated-inputs
2af45e50
BW
2580 `(("ruby-concurrent" ,ruby-concurrent)
2581 ("ruby-i18n" ,ruby-i18n)
5ff89a1b 2582 ("ruby-minitest" ,ruby-minitest)
606ee9a1
BW
2583 ("ruby-tzinfo" ,ruby-tzinfo)
2584 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
5ff89a1b
DT
2585 (synopsis "Ruby on Rails utility library")
2586 (description "ActiveSupport is a toolkit of support libraries and Ruby
2587core extensions extracted from the Rails framework. It includes support for
2588multibyte strings, internationalization, time zones, and testing.")
2589 (home-page "http://www.rubyonrails.org")
2590 (license license:expat)))
f847ad7b 2591
3996f0aa
RW
2592(define-public ruby-crass
2593 (package
2594 (name "ruby-crass")
2595 (version "1.0.2")
2596 (source (origin
2597 (method url-fetch)
2598 (uri (rubygems-uri "crass" version))
2599 (sha256
2600 (base32
2601 "1c377r8g7m58y22803iyjgqkkvnnii0pymskda1pardxrzaighj9"))))
2602 (build-system ruby-build-system)
2603 (native-inputs
2604 `(("bundler" ,bundler)
2605 ("ruby-minitest" ,ruby-minitest)))
2606 (synopsis "Pure Ruby CSS parser")
2607 (description
2608 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
2609 (home-page "https://github.com/rgrove/crass/")
2610 (license license:expat)))
2611
c2c4e5b2 2612(define-public ruby-nokogumbo
f1ae7c62
BW
2613 (let ((commit "fb51ff299a1c34346837580b6d1d9a60fadf5dbd"))
2614 (package
2615 (name "ruby-nokogumbo")
2616 (version (string-append "1.4.7-1." (string-take commit 8)))
2617 (source (origin
2618 ;; We use the git reference, because there's no Rakefile in the
2619 ;; published gem and the tarball on Github is outdated.
2620 (method git-fetch)
2621 (uri (git-reference
2622 (url "https://github.com/rubys/nokogumbo.git")
2623 (commit "d56f954d20a")))
2624 (file-name (string-append name "-" version "-checkout"))
2625 (sha256
2626 (base32
2627 "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
2628 (build-system ruby-build-system)
2629 (arguments
2630 `(#:modules ((guix build ruby-build-system)
2631 (guix build utils)
2632 (ice-9 rdelim))
2633 #:phases
2634 (modify-phases %standard-phases
5c31e981 2635 (add-after 'unpack 'build-gemspec
f1ae7c62
BW
2636 (lambda _
2637 (substitute* "Rakefile"
2638 ;; Build Makefile even without a copy of gumbo-parser sources
2639 (("'gumbo-parser/src',") "")
2640 ;; We don't bundle gumbo-parser sources
2641 (("'gumbo-parser/src/\\*',") "")
2642 (("'gumbo-parser/visualc/include/\\*',") "")
2643 ;; The definition of SOURCES will be cut in gemspec, and
2644 ;; "FileList" will be undefined.
2645 (("SOURCES \\+ FileList\\[")
2646 "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
2647
2648 ;; Copy the Rakefile and cut out the gemspec.
2649 (copy-file "Rakefile" ".gemspec")
2650 (with-atomic-file-replacement ".gemspec"
2651 (lambda (in out)
2652 (let loop ((line (read-line in 'concat))
2653 (skipping? #t))
2654 (if (eof-object? line)
2655 #t
2656 (let ((skip-next? (if skipping?
2657 (not (string-prefix? "SPEC =" line))
2658 (string-prefix? "end" line))))
2659 (when (or (not skipping?)
2660 (and skipping? (not skip-next?)))
2661 (format #t "~a" line)
2662 (display line out))
2663 (loop (read-line in 'concat) skip-next?))))))
2664 #t)))))
2665 (inputs
2666 `(("gumbo-parser" ,gumbo-parser)))
2667 (propagated-inputs
2668 `(("ruby-nokogiri" ,ruby-nokogiri)))
2669 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
2670 (description
2671 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
c2c4e5b2 2672access the result as a Nokogiri parsed document.")
f1ae7c62
BW
2673 (home-page "https://github.com/rubys/nokogumbo/")
2674 (license license:asl2.0))))
c2c4e5b2 2675
d56ff88b
RW
2676(define-public ruby-sanitize
2677 (package
2678 (name "ruby-sanitize")
2679 (version "4.0.0")
2680 (source (origin
2681 (method url-fetch)
2682 ;; The gem does not include the Rakefile, so we download the
2683 ;; release tarball from Github.
2684 (uri (string-append "https://github.com/rgrove/"
2685 "sanitize/archive/v" version ".tar.gz"))
2686 (file-name (string-append name "-" version ".tar.gz"))
2687 (sha256
2688 (base32
2689 "055xnj38l60gxnnng76kpy2l2jbrp0byjdyq17jw79w7l4b40znr"))))
2690 (build-system ruby-build-system)
2691 (propagated-inputs
2692 `(("ruby-crass" ,ruby-crass)
2693 ("ruby-nokogiri" ,ruby-nokogiri)
2694 ("ruby-nokogumbo" ,ruby-nokogumbo)))
2695 (native-inputs
2696 `(("bundler" ,bundler)
2697 ("ruby-minitest" ,ruby-minitest)
2698 ("ruby-redcarpet" ,ruby-redcarpet)
2699 ("ruby-yard" ,ruby-yard)))
2700 (synopsis "Whitelist-based HTML and CSS sanitizer")
2701 (description
2702 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
2703acceptable elements, attributes, and CSS properties, Sanitize will remove all
2704unacceptable HTML and/or CSS from a string.")
2705 (home-page "https://github.com/rgrove/sanitize/")
2706 (license license:expat)))
2707
f847ad7b
DT
2708(define-public ruby-ox
2709 (package
2710 (name "ruby-ox")
2711 (version "2.2.1")
2712 (source
2713 (origin
2714 (method url-fetch)
2715 (uri (rubygems-uri "ox" version))
2716 (sha256
2717 (base32
2718 "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
2719 (build-system ruby-build-system)
2720 (arguments
2721 '(#:tests? #f)) ; no tests
2722 (synopsis "Optimized XML library for Ruby")
2723 (description
2724 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
2725written as a native C extension. It was designed to be an alternative to
2726Nokogiri and other Ruby XML parsers for generic XML parsing and as an
2727alternative to Marshal for Object serialization. ")
2728 (home-page "http://www.ohler.com/ox")
2729 (license license:expat)))
4a9e0585 2730
0c4e7625
RW
2731(define-public ruby-redcloth
2732 (package
2733 (name "ruby-redcloth")
2734 (version "4.2.9")
2735 (source (origin
2736 (method url-fetch)
2737 (uri (rubygems-uri "RedCloth" version))
2738 (sha256
2739 (base32
2740 "06pahxyrckhgb7alsxwhhlx1ib2xsx33793finj01jk8i054bkxl"))))
2741 (build-system ruby-build-system)
2742 (arguments
2743 `(#:tests? #f ; no tests
2744 #:phases
2745 (modify-phases %standard-phases
2746 ;; Redcloth has complicated rake tasks to build various versions for
2747 ;; multiple targets using RVM. We don't want this so we just use the
2748 ;; existing gemspec.
2749 (replace 'build
2750 (lambda _
2751 (zero? (system* "gem" "build" "redcloth.gemspec"))))
2752 ;; Make sure that the "redcloth" executable finds required Ruby
2753 ;; libraries.
2754 (add-after 'install 'wrap-bin-redcloth
2755 (lambda* (#:key outputs #:allow-other-keys)
2756 (wrap-program (string-append (assoc-ref outputs "out")
2757 "/bin/redcloth")
2758 `("GEM_HOME" ":" prefix (,(getenv "GEM_HOME"))))
2759 #t)))))
2760 (native-inputs
2761 `(("bundler" ,bundler)
2762 ("ruby-diff-lcs" ,ruby-diff-lcs)
2763 ("ruby-rspec-2" ,ruby-rspec-2)))
2764 (synopsis "Textile markup language parser for Ruby")
2765 (description
2766 "RedCloth is a Ruby parser for the Textile markup language.")
2767 (home-page "http://redcloth.org")
2768 (license license:expat)))
2769
4a9e0585
DT
2770(define-public ruby-pg
2771 (package
2772 (name "ruby-pg")
2773 (version "0.18.2")
2774 (source
2775 (origin
2776 (method url-fetch)
2777 (uri (rubygems-uri "pg" version))
2778 (sha256
2779 (base32
2780 "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
2781 (build-system ruby-build-system)
2782 (arguments
2783 '(#:test-target "spec"))
2784 (native-inputs
2785 `(("ruby-rake-compiler" ,ruby-rake-compiler)
2786 ("ruby-hoe" ,ruby-hoe)
2787 ("ruby-rspec" ,ruby-rspec)))
2788 (inputs
2789 `(("postgresql" ,postgresql)))
2790 (synopsis "Ruby interface to PostgreSQL")
2791 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
2792with PostgreSQL 8.4 and later.")
2793 (home-page "https://bitbucket.org/ged/ruby-pg")
2794 (license license:ruby)))
468e5657
DT
2795
2796(define-public ruby-byebug
2797 (package
2798 (name "ruby-byebug")
2799 (version "6.0.2")
2800 (source
2801 (origin
2802 (method url-fetch)
2803 (uri (rubygems-uri "byebug" version))
2804 (sha256
2805 (base32
2806 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
2807 (build-system ruby-build-system)
2808 (arguments
2809 '(#:tests? #f)) ; no tests
2810 (synopsis "Debugger for Ruby 2")
2811 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
2812TracePoint C API for execution control and the Debug Inspector C API for call
2813stack navigation. The core component provides support that front-ends can
2814build on. It provides breakpoint handling and bindings for stack frames among
2815other things and it comes with a command line interface.")
7bf837fd 2816 (home-page "https://github.com/deivid-rodriguez/byebug")
468e5657 2817 (license license:bsd-2)))
64b6ccc3 2818
5799bc2b
RW
2819(define-public ruby-netrc
2820 (package
2821 (name "ruby-netrc")
2822 (version "0.11.0")
2823 (source (origin
2824 (method url-fetch)
2825 (uri (rubygems-uri "netrc" version))
2826 (sha256
2827 (base32
2828 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
2829 (build-system ruby-build-system)
2830 (arguments
2831 `(#:phases
2832 (modify-phases %standard-phases
2833 (replace 'check
2834 ;; There is no Rakefile and minitest can only run one file at once,
2835 ;; so we have to iterate over all test files.
2836 (lambda _
2837 (and (map (lambda (file)
2838 (zero? (system* "ruby" "-Itest" file)))
2839 (find-files "./test" "test_.*\\.rb"))))))))
2840 (native-inputs
2841 `(("ruby-minitest" ,ruby-minitest)))
2842 (synopsis "Library to read and update netrc files")
2843 (description
2844 "This library can read and update netrc files, preserving formatting
2845including comments and whitespace.")
2846 (home-page "https://github.com/geemus/netrc")
2847 (license license:expat)))
2848
3a6989ce
RW
2849(define-public ruby-unf-ext
2850 (package
2851 (name "ruby-unf-ext")
2852 (version "0.0.7.1")
2853 (source (origin
2854 (method url-fetch)
2855 (uri (rubygems-uri "unf_ext" version))
2856 (sha256
2857 (base32
2858 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
2859 (build-system ruby-build-system)
b809cc9a
RW
2860 (arguments
2861 `(#:phases
2862 (modify-phases %standard-phases
2863 (add-after 'build 'build-ext
2864 (lambda _ (zero? (system* "rake" "compile:unf_ext")))))))
3a6989ce
RW
2865 (native-inputs
2866 `(("bundler" ,bundler)
2867 ("ruby-rake-compiler" ,ruby-rake-compiler)
2868 ("ruby-test-unit" ,ruby-test-unit)))
2869 (synopsis "Unicode normalization form support library")
2870 (description
2871 "This package provides unicode normalization form support for Ruby.")
2872 (home-page "https://github.com/knu/ruby-unf_ext")
2873 (license license:expat)))
2874
2632a067
RW
2875(define-public ruby-tdiff
2876 (package
2877 (name "ruby-tdiff")
2878 (version "0.3.3")
2879 (source (origin
2880 (method url-fetch)
2881 (uri (rubygems-uri "tdiff" version))
2882 (sha256
2883 (base32
2884 "0k41jbvn8qq4mgrixnhlk742b971d136i8wpbcv2cczvi22xpc86"))))
2885 (build-system ruby-build-system)
2886 (native-inputs
2887 `(("ruby-rspec-2" ,ruby-rspec-2)
2888 ("ruby-yard" ,ruby-yard)
2889 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
2890 (synopsis "Calculate the differences between two tree-like structures")
2891 (description
2892 "This library provides functions to calculate the differences between two
2893tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
2894 (home-page "https://github.com/postmodern/tdiff")
2895 (license license:expat)))
2896
f60f5002
RW
2897(define-public ruby-nokogiri-diff
2898 (package
2899 (name "ruby-nokogiri-diff")
2900 (version "0.2.0")
2901 (source (origin
2902 (method url-fetch)
2903 (uri (rubygems-uri "nokogiri-diff" version))
2904 (sha256
2905 (base32
2906 "0njr1s42war0bj1axb2psjvk49l74a8wzr799wckqqdcb6n51lc1"))))
2907 (build-system ruby-build-system)
2908 (propagated-inputs
2909 `(("ruby-tdiff" ,ruby-tdiff)
2910 ("ruby-nokogiri" ,ruby-nokogiri)))
2911 (native-inputs
2912 `(("ruby-rspec-2" ,ruby-rspec-2)
2913 ("ruby-yard" ,ruby-yard)
2914 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
2915 (synopsis "Calculate the differences between two XML/HTML documents")
2916 (description
2917 "@code{Nokogiri::Diff} adds the ability to calculate the
2918differences (added or removed nodes) between two XML/HTML documents.")
2919 (home-page "https://github.com/postmodern/nokogiri-diff")
2920 (license license:expat)))
2921
64b6ccc3
DT
2922(define-public ruby-rack
2923 (package
2924 (name "ruby-rack")
8d171471 2925 (version "2.0.3")
64b6ccc3
DT
2926 (source
2927 (origin
2928 (method url-fetch)
1db791d5
BW
2929 ;; Download from GitHub so that the patch can be applied.
2930 (uri (string-append
2931 "https://github.com/rack/rack/archive/"
2932 version
2933 ".tar.gz"))
2934 (file-name (string-append name "-" version ".tar.gz"))
64b6ccc3
DT
2935 (sha256
2936 (base32
8d171471 2937 "12bnqrcg43x9hsswjqg31qqwk8cwj2fh0d2m179y20bjghhn54kx"))
1db791d5
BW
2938 ;; Ignore test which fails inside the build environment but works
2939 ;; outside.
2940 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
64b6ccc3
DT
2941 (build-system ruby-build-system)
2942 (arguments
2943 '(#:phases
2944 (modify-phases %standard-phases
2945 (add-before 'check 'fix-tests
2946 (lambda _
2947 ;; A few of the tests use the length of a file on disk for
2948 ;; Content-Length and Content-Range headers. However, this file
2949 ;; has a shebang in it which an earlier phase patches, growing
2950 ;; the file size from 193 to 239 bytes when the store prefix is
2951 ;; "/gnu/store".
2952 (let ((size-diff (- (string-length (which "ruby"))
2953 (string-length "/usr/bin/env ruby"))))
2954 (substitute* '("test/spec_file.rb")
2955 (("193")
2956 (number->string (+ 193 size-diff)))
2957 (("bytes(.)22-33" all delimiter)
2958 (string-append "bytes"
2959 delimiter
2960 (number->string (+ 22 size-diff))
2961 "-"
2962 (number->string (+ 33 size-diff))))))
2963 #t)))))
2964 (native-inputs
1db791d5
BW
2965 `(("ruby-minitest" ,ruby-minitest)
2966 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
2967 ("which" ,which)))
2968 (propagated-inputs
2969 `(("ruby-concurrent" ,ruby-concurrent)))
64b6ccc3
DT
2970 (synopsis "Unified web application interface for Ruby")
2971 (description "Rack provides a minimal, modular and adaptable interface for
2972developing web applications in Ruby. By wrapping HTTP requests and responses,
2973it unifies the API for web servers, web frameworks, and software in between
2974into a single method call.")
2975 (home-page "http://rack.github.io/")
2976 (license license:expat)))
62e4cc5a 2977
6aaa815e
PP
2978(define-public ruby-docile
2979 (package
2980 (name "ruby-docile")
2981 (version "1.1.5")
2982 (source
2983 (origin
2984 (method url-fetch)
2985 (uri (rubygems-uri "docile" version))
2986 (sha256
2987 (base32
2988 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
2989 (build-system ruby-build-system)
2990 (arguments
2991 '(#:tests? #f)) ; needs github-markup, among others
2992 (synopsis "Ruby EDSL helper library")
2993 (description "Docile is a Ruby library that provides an interface for
2994creating embedded domain specific languages (EDSLs) that manipulate existing
2995Ruby classes.")
2996 (home-page "https://ms-ati.github.io/docile/")
2997 (license license:expat)))
2998
44514637 2999(define-public ruby-gherkin
62e4cc5a 3000 (package
44514637
BW
3001 (name "ruby-gherkin")
3002 (version "4.0.0")
62e4cc5a
PP
3003 (source
3004 (origin
3005 (method url-fetch)
44514637 3006 (uri (rubygems-uri "gherkin" version))
62e4cc5a
PP
3007 (sha256
3008 (base32
44514637 3009 "1ripjv97hg746xszx9isal8z8vrlb98asc2rdxl291b3hr6pj0pr"))))
62e4cc5a
PP
3010 (build-system ruby-build-system)
3011 (native-inputs
3012 `(("bundler" ,bundler)))
3013 (arguments
3014 '(#:tests? #f)) ; needs simplecov, among others
3015 (synopsis "Gherkin parser for Ruby")
44514637
BW
3016 (description "Gherkin is a parser and compiler for the Gherkin language.
3017It is intended be used by all Cucumber implementations to parse '.feature'
3018files.")
62e4cc5a
PP
3019 (home-page "https://github.com/cucumber/gherkin3")
3020 (license license:expat)))
cd89fecb
PP
3021
3022(define-public ruby-cucumber-core
3023 (package
3024 (name "ruby-cucumber-core")
1817d30a 3025 (version "1.5.0")
cd89fecb
PP
3026 (source
3027 (origin
3028 (method url-fetch)
3029 (uri (rubygems-uri "cucumber-core" version))
3030 (sha256
3031 (base32
1817d30a 3032 "0qj2fsqvp94nggnikbnrfvnmzr1pl6ifmdsxj69kdw1kkab30jjr"))))
cd89fecb
PP
3033 (build-system ruby-build-system)
3034 (propagated-inputs
44514637 3035 `(("ruby-gherkin" ,ruby-gherkin)))
cd89fecb
PP
3036 (native-inputs
3037 `(("bundler" ,bundler)))
3038 (arguments
3039 '(#:tests? #f)) ; needs simplecov, among others
3040 (synopsis "Core library for the Cucumber BDD app")
3041 (description "Cucumber is a tool for running automated tests
3042written in plain language. Because they're written in plain language,
3043they can be read by anyone on your team. Because they can be read by
3044anyone, you can use them to help improve communication, collaboration
3045and trust on your team.")
3046 (home-page "https://cucumber.io/")
3047 (license license:expat)))
212d563d
PP
3048
3049(define-public ruby-bio-logger
3050 (package
3051 (name "ruby-bio-logger")
3052 (version "1.0.1")
3053 (source
3054 (origin
3055 (method url-fetch)
3056 (uri (rubygems-uri "bio-logger" version))
3057 (sha256
3058 (base32
3059 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
3060 (build-system ruby-build-system)
3061 (arguments
3062 `(#:tests? #f)) ; rake errors, missing shoulda
3063 (propagated-inputs
3064 `(("ruby-log4r" ,ruby-log4r)))
3065 (synopsis "Log4r wrapper for Ruby")
3066 (description "Bio-logger is a wrapper around Log4r adding extra logging
3067features such as filtering and fine grained logging.")
3068 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
3069 (license license:expat)))
07f61cb2
BW
3070
3071(define-public ruby-yard
6499893e
BW
3072 (package
3073 (name "ruby-yard")
3074 (version "0.9.6")
3075 (source
3076 (origin
3077 (method url-fetch)
3078 ;; Tests do not pass if we build from the distributed gem.
3079 (uri (string-append "https://github.com/lsegal/yard/archive/v"
3a3e3099 3080 version ".tar.gz"))
6499893e
BW
3081 (file-name (string-append name "-" version ".tar.gz"))
3082 (sha256
3083 (base32
3084 "0rsz4bghgx7fryzyhlz8wlnd2m9xgyvf1xhrq58mnzfrrfm41bdg"))))
3085 (build-system ruby-build-system)
3086 (arguments
3087 `(#:phases
3088 (modify-phases %standard-phases
3089 (replace 'check
3090 (lambda _
3091 ;; $HOME needs to be set to somewhere writeable for tests to run
3092 (setenv "HOME" "/tmp")
3093 ;; Run tests without using 'rake' to avoid dependencies.
3094 (zero? (system* "rspec")))))))
3095 (native-inputs
3096 `(("ruby-rspec" ,ruby-rspec)
3097 ("ruby-rack" ,ruby-rack)))
3098 (synopsis "Documentation generation tool for Ruby")
3099 (description
3100 "YARD is a documentation generation tool for the Ruby programming
07f61cb2
BW
3101language. It enables the user to generate consistent, usable documentation
3102that can be exported to a number of formats very easily, and also supports
3103extending for custom Ruby constructs such as custom class level definitions.")
6499893e
BW
3104 (home-page "http://yardoc.org")
3105 (license license:expat)))
2cbcd23a 3106
ad686ef3
RW
3107(define-public ruby-clap
3108 (package
3109 (name "ruby-clap")
3110 (version "1.0.0")
3111 (source (origin
3112 (method url-fetch)
3113 (uri (rubygems-uri "clap" version))
3114 (sha256
3115 (base32
3116 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
3117 (build-system ruby-build-system)
3118 ;; Clap needs cutest for running tests, but cutest needs clap.
3119 (arguments `(#:tests? #f))
3120 (synopsis "Command line argument parsing for simple applications")
3121 (description
3122 "Clap provides command line argument parsing features. It covers the
3123simple case of executing code based on the flags or parameters passed.")
3124 (home-page "https://github.com/djanowski/cutest")
0c80451e
RW
3125 (license license:expat)))
3126
3127(define-public ruby-cutest
3128 (package
3129 (name "ruby-cutest")
3130 (version "1.2.2")
3131 (source (origin
3132 (method url-fetch)
3133 (uri (rubygems-uri "cutest" version))
3134 (sha256
3135 (base32
3136 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
3137 (build-system ruby-build-system)
3138 (propagated-inputs
3139 `(("ruby-clap" ,ruby-clap)))
3140 (synopsis "Run tests in separate processes")
3141 (description
3142 "Cutest runs tests in separate processes to avoid shared state.")
3143 (home-page "https://github.com/djanowski/cutest")
ad686ef3
RW
3144 (license license:expat)))
3145
ac09beba
RW
3146(define-public ruby-pygmentize
3147 (package
3148 (name "ruby-pygmentize")
3149 (version "0.0.3")
3150 (source (origin
3151 (method url-fetch)
3152 (uri (rubygems-uri "pygmentize" version))
3153 (sha256
3154 (base32
3155 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
3156 (build-system ruby-build-system)
3157 (arguments
3158 `(#:phases
3159 (modify-phases %standard-phases
3160 (add-after 'unpack 'fix-pygmentize-path
3161 (lambda _
3162 (substitute* "lib/pygmentize.rb"
3163 (("\"/usr/bin/env python.*")
3164 (string-append "\"" (which "pygmentize") "\"\n")))
3165 #t))
3166 (add-after 'build 'do-not-use-vendor-directory
3167 (lambda _
3168 ;; Remove bundled pygments sources
3169 ;; FIXME: ruby-build-system does not support snippets.
3170 (delete-file-recursively "vendor")
3171 (substitute* "pygmentize.gemspec"
3172 (("\"vendor/\\*\\*/\\*\",") ""))
3173 #t)))))
3174 (inputs
3175 `(("pygments" ,python-pygments)))
3176 (native-inputs
3177 `(("ruby-cutest" ,ruby-cutest)
3178 ("ruby-nokogiri" ,ruby-nokogiri)))
3179 (synopsis "Thin Ruby wrapper around pygmentize")
3180 (description
3181 "Pygmentize provides a simple way to call pygmentize from within a Ruby
3182application.")
3183 (home-page "https://github.com/djanowski/pygmentize")
3184 (license license:expat)))
3185
2cbcd23a
DT
3186(define-public ruby-eventmachine
3187 (package
3188 (name "ruby-eventmachine")
3189 (version "1.0.8")
3190 (source
3191 (origin
3192 (method url-fetch)
3193 (uri (rubygems-uri "eventmachine" version))
3194 (sha256
3195 (base32
3196 "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp"))))
3197 (build-system ruby-build-system)
3198 (arguments
3199 '(#:tests? #f)) ; test suite tries to connect to google.com
3200 (native-inputs
3201 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
3202 (synopsis "Single-threaded network event framework for Ruby")
3203 (description
3204 "EventMachine implements a single-threaded engine for arbitrary network
3205communications. EventMachine wraps all interactions with sockets, allowing
3206programs to concentrate on the implementation of network protocols. It can be
3207used to create both network servers and clients.")
3208 (home-page "http://rubyeventmachine.com")
3209 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
7d3a1a2d 3210
8092e333
BW
3211(define-public ruby-turn
3212 (package
3213 (name "ruby-turn")
3214 (version "0.9.7")
3215 (source
3216 (origin
3217 (method url-fetch)
3218 (uri (rubygems-uri "turn" version))
3219 (sha256
3220 (base32
3221 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
3222 (build-system ruby-build-system)
3223 (arguments
3224 `(#:phases
3225 (modify-phases %standard-phases
3226 ;; Tests fail because turn changes its environment so can no longer
3227 ;; find test/unit. Instead simply test if the executable runs
3228 ;; without issue.
3229 (replace 'check
3230 (lambda _
3231 (zero? (system* "ruby" "-Ilib" "bin/turn" "-h")))))))
3232 (propagated-inputs
3233 `(("ruby-ansi" ,ruby-ansi)
3234 ("ruby-minitest" ,ruby-minitest-4)))
3235 (synopsis "Alternate set of alternative runners for MiniTest")
3236 (description
3237 "TURN provides a set of alternative runners for MiniTest which are both
3238colorful and informative. TURN displays each test on a separate line with
3239failures being displayed immediately instead of at the end of the tests. Note
3240that TURN is no longer being maintained.")
3241 (home-page "http://rubygems.org/gems/turn")
3242 (license license:expat)))
3243
32d1c06f
BW
3244(define-public ruby-mime-types-data
3245 (package
3246 (name "ruby-mime-types-data")
f49511db 3247 (version "3.2016.0521")
32d1c06f
BW
3248 (source
3249 (origin
3250 (method url-fetch)
3251 (uri (rubygems-uri "mime-types-data" version))
3252 (sha256
3253 (base32
f49511db 3254 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
32d1c06f
BW
3255 (build-system ruby-build-system)
3256 (native-inputs
3257 `(("ruby-hoe" ,ruby-hoe)))
3258 (synopsis "Registry for information about MIME media type definitions")
3259 (description
3260 "@code{mime-types-data} provides a registry for information about
3261Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
3262be used with the Ruby mime-types library or other software to determine
3263defined filename extensions for MIME types, or to use filename extensions to
3264look up the likely MIME type definitions.")
3265 (home-page "https://github.com/mime-types/mime-types-data/")
3266 (license license:expat)))
3267
d39b606c
BW
3268(define-public ruby-mime-types
3269 (package
3270 (name "ruby-mime-types")
803bcc81 3271 (version "3.1")
d39b606c
BW
3272 (source
3273 (origin
3274 (method url-fetch)
3275 (uri (rubygems-uri "mime-types" version))
3276 (sha256
3277 (base32
803bcc81 3278 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
d39b606c
BW
3279 (build-system ruby-build-system)
3280 (propagated-inputs
3281 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
3282 (native-inputs
3283 `(("ruby-hoe" ,ruby-hoe)
3284 ("ruby-fivemat" ,ruby-fivemat)
3285 ("ruby-minitest-focus" ,ruby-minitest-focus)
3286 ("ruby-minitest-rg" ,ruby-minitest-rg)
803bcc81
BW
3287 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
3288 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
d39b606c
BW
3289 (synopsis "Library and registry for MIME content type definitions")
3290 (description "The mime-types library provides a library and registry for
3291information about Multipurpose Internet Mail Extensions (MIME) content type
3292definitions. It can be used to determine defined filename extensions for MIME
3293types, or to use filename extensions to look up the likely MIME type
3294definitions.")
3295 (home-page "https://github.com/mime-types/ruby-mime-types")
3296 (license license:expat)))
3297
eb5e0bd9
BW
3298(define-public ruby-fivemat
3299 (package
3300 (name "ruby-fivemat")
3301 (version "1.3.2")
3302 (source
3303 (origin
3304 (method url-fetch)
3305 (uri (rubygems-uri "fivemat" version))
3306 (sha256
3307 (base32
3308 "1gvw6g4yc96l2pcyvigahyfsjxpdjx21iiwzvf965zippchdh6gk"))))
3309 (build-system ruby-build-system)
3310 (arguments
3311 `(#:tests? #f)) ; no tests
3312 (synopsis "Each test file given its own line of dots")
3313 (description
3314 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
3315its own line of dots during testing. It aims to provide test output that is
3316neither too verbose nor too minimal.")
3317 (home-page "https://github.com/tpope/fivemat")
3318 (license license:expat)))
3319
4fea500b
BW
3320(define-public ruby-sqlite3
3321 (package
3322 (name "ruby-sqlite3")
cba53c60 3323 (version "1.3.13")
4fea500b
BW
3324 (source
3325 (origin
3326 (method url-fetch)
3327 (uri (rubygems-uri "sqlite3" version))
3328 (sha256
3329 (base32
cba53c60 3330 "01ifzp8nwzqppda419c9wcvr8n82ysmisrs0hph9pdmv1lpa4f5i"))))
4fea500b
BW
3331 (build-system ruby-build-system)
3332 (arguments
3333 `(#:phases
3334 (modify-phases %standard-phases
3335 (add-before 'check 'add-gemtest-file
3336 ;; This file exists in the repository but is not distributed.
3337 (lambda _ (zero? (system* "touch" ".gemtest")))))))
3338 (inputs
3339 `(("sqlite" ,sqlite)))
3340 (native-inputs
3341 `(("ruby-hoe" ,ruby-hoe)
3342 ("ruby-rake-compiler" ,ruby-rake-compiler)
3343 ("ruby-mini-portile" ,ruby-mini-portile)))
3344 (synopsis "Interface with SQLite3 databases")
3345 (description
3346 "This module allows Ruby programs to interface with the SQLite3 database
3347engine.")
3348 (home-page
3349 "https://github.com/sparklemotion/sqlite3-ruby")
3350 (license license:bsd-3)))
3351
4dfa39cc
BW
3352(define-public ruby-shoulda-context
3353 (package
3354 (name "ruby-shoulda-context")
e7d1d472 3355 (version "1.2.2")
4dfa39cc
BW
3356 (source
3357 (origin
3358 (method url-fetch)
3359 (uri (rubygems-uri "shoulda-context" version))
3360 (sha256
3361 (base32
e7d1d472 3362 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
4dfa39cc
BW
3363 (build-system ruby-build-system)
3364 (arguments
3365 `(#:phases
3366 (modify-phases %standard-phases
3367 (replace 'check
3368 (lambda _
3369 ;; Do not run tests to avoid circular dependence with rails.
3370 ;; Instead just import the library to test.
3371 (zero? (system* "ruby" "-Ilib" "-r" "shoulda-context")))))))
3372 (synopsis "Test::Unit context framework extracted from Shoulda")
3373 (description
3374 "@code{shoulda-context} is the context framework extracted from Shoulda.
3375Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
3376context, setup, and should blocks combine to produce natural test method
3377names.")
3378 (home-page "https://github.com/thoughtbot/shoulda-context")
3379 (license license:expat)))
3380
e4fea008
BW
3381(define-public ruby-shoulda-matchers
3382 (package
3383 (name "ruby-shoulda-matchers")
80756fa6 3384 (version "3.1.1")
e4fea008
BW
3385 (source
3386 (origin
3387 (method url-fetch)
3388 (uri (rubygems-uri "shoulda-matchers" version))
3389 (sha256
3390 (base32
80756fa6 3391 "1cf6d2d9br82vylr9p362yk9cfrd14jz8v77n0yb0lbcxdbk7xzq"))))
e4fea008
BW
3392 (build-system ruby-build-system)
3393 (arguments
3394 `(#:phases
3395 (modify-phases %standard-phases
e4fea008
BW
3396 (replace 'check
3397 (lambda _
3398 ;; Do not run tests to avoid circular dependence with rails. Instead
3399 ;; just import the library to test.
3400 (zero? (system* "ruby" "-Ilib" "-r" "shoulda-matchers")))))))
3401 (propagated-inputs
3402 `(("ruby-activesupport" ,ruby-activesupport)))
3403 (synopsis "Collection of testing matchers extracted from Shoulda")
3404 (description
3405 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
3406test common Rails functionality. These tests would otherwise be much longer,
3407more complex, and error-prone.")
3408 (home-page "https://github.com/thoughtbot/shoulda-matchers")
3409 (license license:expat)))
3410
3885c58b
BW
3411(define-public ruby-shoulda-matchers-2
3412 (package
3413 (inherit ruby-shoulda-matchers)
3414 (version "2.8.0")
3415 (source (origin
3416 (method url-fetch)
3417 (uri (rubygems-uri "shoulda-matchers" version))
3418 (sha256
3419 (base32
3420 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
3421
6f390716
BW
3422(define-public ruby-shoulda
3423 (package
3424 (name "ruby-shoulda")
3425 (version "3.5.0")
3426 (source
3427 (origin
3428 (method url-fetch)
3429 (uri (rubygems-uri "shoulda" version))
3430 (sha256
3431 (base32
3432 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
3433 (build-system ruby-build-system)
3434 (arguments
3435 `(#:phases
3436 (modify-phases %standard-phases
3437 (replace 'check
3438 ;; Don't run tests to avoid circular dependence with rails. Instead
3439 ;; just import the library to test.
3440 (lambda _ (zero? (system* "ruby" "-Ilib" "-r" "shoulda")))))))
3441 (propagated-inputs
3442 `(("ruby-shoulda-context" ,ruby-shoulda-context)
3443 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
3444 (synopsis "Context framework and matchers for testing")
3445 (description
3446 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
3447@code{shoulda-matchers} providing tools for writing tests.")
3448 (home-page "https://github.com/thoughtbot/shoulda")
3449 (license license:expat)))
3450
3b44bcdf
BW
3451(define-public ruby-unf
3452 (package
3453 (name "ruby-unf")
3454 (version "0.1.4")
3455 (source
3456 (origin
3457 (method url-fetch)
3458 (uri (rubygems-uri "unf" version))
3459 (sha256
3460 (base32
3461 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
3462 (build-system ruby-build-system)
3463 (arguments
3464 `(#:phases
3465 (modify-phases %standard-phases
3466 (add-before 'check 'add-dependency-to-bundler
3467 (lambda _
3468 ;; test-unit is required but not provided by the bundler
3469 ;; environment. This is fixed in the upstream repository but fix
3470 ;; has not been released.
3471 (substitute* "Gemfile"
3472 (("^gemspec") "gem 'test-unit'\ngemspec"))
3473 #t)))))
3474 (propagated-inputs
3475 `(("ruby-unf-ext" ,ruby-unf-ext)))
3476 (native-inputs
3477 `(("ruby-shoulda" ,ruby-shoulda)
3478 ("bundler" ,bundler)
3479 ("ruby-test-unit" ,ruby-test-unit)))
3480 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
3481 (description
3482 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
3483support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
3484@code{java.text.Normalizer} on JRuby.")
3485 (home-page "https://github.com/knu/ruby-unf")
3486 (license license:bsd-2)))
3487
5799aadd
BW
3488(define-public ruby-domain-name
3489 (package
3490 (name "ruby-domain-name")
ca083914 3491 (version "0.5.20161021")
5799aadd
BW
3492 (source
3493 (origin
3494 (method url-fetch)
3495 (uri (rubygems-uri "domain_name" version))
3496 (sha256
3497 (base32
ca083914 3498 "1y5c96gzyh6z4nrnkisljqngfvljdba36dww657ka0x7khzvx7jl"))))
5799aadd
BW
3499 (build-system ruby-build-system)
3500 (arguments
3501 `(#:phases
3502 (modify-phases %standard-phases
3503 (add-before 'check 'fix-versions
3504 (lambda _
3505 ;; Fix NameError that appears to already be fixed upstream.
3506 (substitute* "Rakefile"
3507 (("DomainName::VERSION")
3508 "Bundler::GemHelper.gemspec.version"))
3509 ;; Loosen unnecessarily strict test-unit version specification.
3510 (substitute* "domain_name.gemspec"
71596c3c 3511 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
5799aadd
BW
3512 #t)))))
3513 (propagated-inputs
3514 `(("ruby-unf" ,ruby-unf)))
3515 (native-inputs
3516 `(("ruby-shoulda" ,ruby-shoulda)
3517 ("bundler" ,bundler)
3518 ("ruby-test-unit" ,ruby-test-unit)))
3519 (synopsis "Domain name manipulation library")
3520 (description
3521 "@code{domain_name} is a Domain name manipulation library. It parses a
3522domain name ready for extracting the registered domain and TLD (Top Level
3523Domain). It can also be used for cookie domain validation based on the Public
3524Suffix List.")
3525 (home-page "https://github.com/knu/ruby-domain_name")
3526 (license license:bsd-2)))
3527
d114ceeb
BW
3528(define-public ruby-http-cookie
3529 (package
3530 (name "ruby-http-cookie")
2a2eb07d 3531 (version "1.0.3")
d114ceeb
BW
3532 (source
3533 (origin
3534 (method url-fetch)
3535 (uri (rubygems-uri "http-cookie" version))
3536 (sha256
3537 (base32
2a2eb07d 3538 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
d114ceeb
BW
3539 (build-system ruby-build-system)
3540 (arguments
3541 `(#:phases
3542 (modify-phases %standard-phases
3543 (add-before 'check 'add-dependency-to-bundler
3544 (lambda _
3545 ;; Fix NameError
3546 (substitute* "Rakefile"
3547 (("HTTP::Cookie::VERSION")
3548 "Bundler::GemHelper.gemspec.version"))
3549 #t)))))
3550 (propagated-inputs
3551 `(("ruby-domain-name" ,ruby-domain-name)))
3552 (native-inputs
3553 `(("rubysimplecov" ,ruby-simplecov)
3554 ("bundler" ,bundler)
3555 ("ruby-sqlite3" ,ruby-sqlite3)
3556 ("ruby-test-unit" ,ruby-test-unit)))
3557 (synopsis "Handle HTTP Cookies based on RFC 6265")
3558 (description
3559 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
3560RFC 6265. It has been designed with security, standards compliance and
3561compatibility in mind, to behave just the same as today's major web browsers.
3562It has built-in support for the legacy @code{cookies.txt} and
3563@code{cookies.sqlite} formats of Mozilla Firefox.")
3564 (home-page "https://github.com/sparklemotion/http-cookie")
3565 (license license:expat)))
3566
7d3a1a2d
BW
3567(define-public ruby-ansi
3568 (package
3569 (name "ruby-ansi")
3570 (version "1.5.0")
3571 (source
3572 (origin
3573 (method url-fetch)
3574 ;; Fetch from GitHub as the gem does not contain testing code.
3575 (uri (string-append "https://github.com/rubyworks/ansi/archive/"
3576 version ".tar.gz"))
3577 (file-name (string-append name "-" version ".tar.gz"))
3578 (sha256
3579 (base32
3580 "1zdip30hivyipi8hndhb457bhiz033awd00bgrsk5axjrwp6zhly"))))
3581 (build-system ruby-build-system)
3582 (arguments
3583 `(#:phases
3584 (modify-phases %standard-phases
3585 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
3586 ;; cycle ansi, qed, ansi. Instead simply test that the library can
3587 ;; be require'd.
3588 (replace 'check
3589 (lambda _
3590 (zero? (system* "ruby" "-Ilib" "-r" "ansi")))))))
3591 (synopsis "ANSI escape code related libraries")
3592 (description
3593 "This package is a collection of ANSI escape code related libraries
3594enabling ANSI colorization and stylization of console output. Included in the
3595library are the @code{Code} module, which defines ANSI codes as constants and
3596methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
3597@code{ProgressBar}, and a @code{String} subclass. The library also includes a
3598@code{Terminal} module which provides information about the current output
3599device.")
3600 (home-page "http://rubyworks.github.io/ansi")
3601 (license license:bsd-2)))
7c033c46
BW
3602
3603(define-public ruby-systemu
3604 (package
3605 (name "ruby-systemu")
3606 (version "2.6.5")
3607 (source
3608 (origin
3609 (method url-fetch)
3610 (uri (rubygems-uri "systemu" version))
3611 (sha256
3612 (base32
3613 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
3614 (build-system ruby-build-system)
3615 (arguments
3616 `(#:phases
3617 (modify-phases %standard-phases
3618 (add-before 'check 'set-version
3619 (lambda _
3620 (setenv "VERSION" ,version)
3621 #t)))))
3622 (synopsis "Capture of stdout/stderr and handling of child processes")
3623 (description
3624 "Systemu can be used on any platform to return status, stdout, and stderr
3625of any command. Unlike other methods like @code{open3} and @code{popen4}
3626there is no danger of full pipes or threading issues hanging your process or
3627subprocess.")
3628 (home-page "https://github.com/ahoward/systemu")
3629 (license license:ruby)))
3d84a99e
BW
3630
3631(define-public ruby-bio-commandeer
3632 (package
3633 (name "ruby-bio-commandeer")
9bb46c15 3634 (version "0.1.3")
3d84a99e
BW
3635 (source
3636 (origin
3637 (method url-fetch)
3638 (uri (rubygems-uri "bio-commandeer" version))
3639 (sha256
3640 (base32
9bb46c15 3641 "0lin6l99ldqqjc90l9ihcrv882c4xgbgqm16jqkdy6jf955jd9a8"))))
3d84a99e
BW
3642 (build-system ruby-build-system)
3643 (arguments
3644 `(#:phases
3645 (modify-phases %standard-phases
3646 (replace 'check
3647 ;; Run test without calling 'rake' so that jeweler is
3648 ;; not required as an input.
3649 (lambda _
3650 (zero? (system* "rspec" "spec/bio-commandeer_spec.rb")))))))
3651 (propagated-inputs
3652 `(("ruby-bio-logger" ,ruby-bio-logger)
3653 ("ruby-systemu" ,ruby-systemu)))
3654 (native-inputs
3655 `(("bundler" ,bundler)
3656 ("ruby-rspec" ,ruby-rspec)))
3657 (synopsis "Simplified running of shell commands from within Ruby")
3658 (description
3659 "Bio-commandeer provides an opinionated method of running shell commands
3660from within Ruby. The advantage of bio-commandeer over other methods of
3661running external commands is that when something goes wrong, messages printed
3662to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
3663detail to ease debugging.")
7bf837fd 3664 (home-page "https://github.com/wwood/bioruby-commandeer")
3d84a99e 3665 (license license:expat)))
7c8131c7
BW
3666
3667(define-public ruby-rubytest
3668 (package
3669 (name "ruby-rubytest")
3670 (version "0.8.1")
3671 (source
3672 (origin
3673 (method url-fetch)
3674 (uri (rubygems-uri "rubytest" version))
3675 (sha256
3676 (base32
3677 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
3678 (build-system ruby-build-system)
3679 (arguments
3680 ;; Disable regular testing to break the cycle rubytest, qed, brass,
3681 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
3682 ;; simply test that the library can be require'd.
3683 `(#:phases
3684 (modify-phases %standard-phases
3685 (replace 'check
3686 (lambda _
3687 (zero? (system* "ruby" "-Ilib" "-r" "rubytest")))))))
3688 (propagated-inputs
3689 `(("ruby-ansi" ,ruby-ansi)))
3690 (synopsis "Universal test harness for Ruby")
3691 (description
3692 "Rubytest is a testing meta-framework for Ruby. It can handle any
3693compliant test framework and can run tests from multiple frameworks in a
3694single pass.")
3695 (home-page "http://rubyworks.github.io/rubytest")
3696 (license license:bsd-2)))
90fcedf2
BW
3697
3698(define-public ruby-brass
3699 (package
3700 (name "ruby-brass")
3701 (version "1.2.1")
3702 (source
3703 (origin
3704 (method url-fetch)
3705 (uri (rubygems-uri "brass" version))
3706 (sha256
3707 (base32
3708 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
3709 (build-system ruby-build-system)
3710 (arguments
3711 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
3712 ;; Instead simply test that the library can be require'd.
3713 `(#:phases
3714 (modify-phases %standard-phases
3715 (replace 'check
3716 (lambda _
3717 (zero? (system* "ruby" "-Ilib" "-r" "brass")))))))
3718 (synopsis "Basic foundational assertions framework")
3719 (description
3720 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
3721foundational assertions framework for other assertion and test frameworks to
3722make use of.")
3723 (home-page "http://rubyworks.github.io/brass")
3724 (license license:bsd-2)))
120fc74b
BW
3725
3726(define-public ruby-qed
3727 (package
3728 (name "ruby-qed")
3729 (version "2.9.2")
3730 (source
3731 (origin
3732 (method url-fetch)
3733 (uri (rubygems-uri "qed" version))
3734 (sha256
3735 (base32
3736 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
3737 (build-system ruby-build-system)
3738 (arguments
3739 ;; Disable testing to break the cycle qed, ansi, qed, among others.
3740 ;; Instead simply test that the executable runs using --copyright.
3741 `(#:phases
3742 (modify-phases %standard-phases
3743 (replace 'check
3744 (lambda _
3745 (zero? (system* "ruby" "-Ilib" "bin/qed" "--copyright")))))))
3746 (propagated-inputs
3747 `(("ruby-ansi" ,ruby-ansi)
3748 ("ruby-brass" ,ruby-brass)))
3749 (synopsis "Test framework utilizing literate programming techniques")
3750 (description
3751 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
3752@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
3753Development} (BDD) utilizing Literate Programming techniques. QED sits
3754somewhere between lower-level testing tools like @code{Test::Unit} and
3755requirement specifications systems like Cucumber.")
3756 (home-page "http://rubyworks.github.io/qed")
3757 (license license:bsd-2)))
9273ee8f
BW
3758
3759(define-public ruby-ae
3760 (package
3761 (name "ruby-ae")
3762 (version "1.8.2")
3763 (source
3764 (origin
3765 (method url-fetch)
3766 ;; Fetch from github so tests are included.
3767 (uri (string-append
3768 "https://github.com/rubyworks/ae/archive/"
3769 version ".tar.gz"))
3770 (file-name (string-append name "-" version ".tar.gz"))
3771 (sha256
3772 (base32
3773 "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl"))))
3774 (build-system ruby-build-system)
3775 (arguments
3776 `(#:phases
3777 (modify-phases %standard-phases
3778 (replace 'check
3779 (lambda _ (zero? (system* "qed")))))))
3780 (propagated-inputs
3781 `(("ruby-ansi" ,ruby-ansi)))
3782 (native-inputs
3783 `(("ruby-qed" ,ruby-qed)))
3784 (synopsis "Assertions library")
3785 (description
3786 "Assertive Expressive (AE) is an assertions library specifically designed
3787for reuse by other test frameworks.")
3788 (home-page "http://rubyworks.github.io/ae")
3789 (license license:bsd-2)))
78bb471f
BW
3790
3791(define-public ruby-lemon
3792 (package
3793 (name "ruby-lemon")
3794 (version "0.9.1")
3795 (source
3796 (origin
3797 (method url-fetch)
3798 (uri (rubygems-uri "lemon" version))
3799 (sha256
3800 (base32
3801 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
3802 (build-system ruby-build-system)
3803 (arguments
3804 `(#:phases
3805 (modify-phases %standard-phases
3806 (replace 'check (lambda _ (zero? (system* "qed")))))))
3807 (propagated-inputs
3808 `(("ruby-ae" ,ruby-ae)
3809 ("ruby-ansi" ,ruby-ansi)
3810 ("ruby-rubytest" ,ruby-rubytest)))
3811 (native-inputs
3812 `(("ruby-qed" ,ruby-qed)))
3813 (synopsis "Test framework correlating code structure and test unit")
3814 (description
3815 "Lemon is a unit testing framework that enforces highly formal
3816case-to-class and unit-to-method test construction. This enforcement can help
3817focus concern on individual units of behavior.")
3818 (home-page "http://rubyworks.github.io/lemon")
3819 (license license:bsd-2)))
0832804e
BW
3820
3821(define-public ruby-rubytest-cli
3822 (package
3823 (name "ruby-rubytest-cli")
3824 (version "0.2.0")
3825 (source
3826 (origin
3827 (method url-fetch)
3828 (uri (rubygems-uri "rubytest-cli" version))
3829 (sha256
3830 (base32
3831 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
3832 (build-system ruby-build-system)
3833 (arguments
3834 `(#:tests? #f)) ; no tests
3835 (propagated-inputs
3836 `(("ruby-ansi" ,ruby-ansi)
3837 ("ruby-rubytest" ,ruby-rubytest)))
3838 (synopsis "Command-line interface for rubytest")
3839 (description
3840 "Rubytest CLI is a command-line interface for running tests for
3841Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
3842 (home-page "http://rubyworks.github.io/rubytest-cli")
3843 (license license:bsd-2)))
72ccbfe3
BW
3844
3845(define-public ruby-hashery
3846 (package
3847 (name "ruby-hashery")
cba96208 3848 (version "2.1.2")
72ccbfe3
BW
3849 (source
3850 (origin
3851 (method url-fetch)
3852 (uri (rubygems-uri "hashery" version))
3853 (sha256
3854 (base32
cba96208 3855 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
72ccbfe3
BW
3856 (build-system ruby-build-system)
3857 (arguments
3858 `(#:phases
3859 (modify-phases %standard-phases
3860 (replace 'check
3861 (lambda _
3862 (and (zero? (system* "qed"))
3863 (zero? (system* "rubytest" "-Ilib" "-Itest" "test/"))))))))
3864 (native-inputs
3865 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
3866 ("ruby-qed" ,ruby-qed)
3867 ("ruby-lemon" ,ruby-lemon)))
3868 (synopsis "Hash-like classes with extra features")
3869 (description
3870 "The Hashery is a tight collection of @code{Hash}-like classes.
3871Included are the auto-sorting @code{Dictionary} class, the efficient
3872@code{LRUHash}, the flexible @code{OpenHash} and the convenient
3873@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
3874defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
3875standard @code{Hash} making it possible to subclass and augment to fit any
3876specific use case.")
3877 (home-page "http://rubyworks.github.io/hashery")
3878 (license license:bsd-2)))
1f1d71e0
BW
3879
3880(define-public ruby-rc4
3881 (package
3882 (name "ruby-rc4")
3883 (version "0.1.5")
3884 (source
3885 (origin
3886 (method url-fetch)
3887 (uri (rubygems-uri "ruby-rc4" version))
3888 (sha256
3889 (base32
3890 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
3891 (build-system ruby-build-system)
3892 (arguments
3893 `(#:phases
3894 (modify-phases %standard-phases
3895 (replace 'check
3896 (lambda _
3897 (zero? (system* "rspec" "spec/rc4_spec.rb")))))))
3898 (native-inputs
3899 `(("ruby-rspec" ,ruby-rspec-2)))
3900 (synopsis "Implementation of the RC4 algorithm")
3901 (description
3902 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
3903 (home-page "https://github.com/caiges/Ruby-RC4")
3904 (license license:expat)))
f3e085a8
BW
3905
3906(define-public ruby-afm
3907 (package
3908 (name "ruby-afm")
3909 (version "0.2.2")
3910 (source
3911 (origin
3912 (method url-fetch)
3913 (uri (rubygems-uri "afm" version))
3914 (sha256
3915 (base32
3916 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
3917 (build-system ruby-build-system)
3918 (native-inputs
3919 `(("bundler" ,bundler)))
3920 (synopsis "Read Adobe Font Metrics (afm) files")
3921 (description
3922 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
3923files and use the data therein.")
7bf837fd 3924 (home-page "https://github.com/halfbyte/afm")
f3e085a8 3925 (license license:expat)))
acb6be42
BW
3926
3927(define-public ruby-ascii85
3928 (package
3929 (name "ruby-ascii85")
3930 (version "1.0.2")
3931 (source
3932 (origin
3933 (method url-fetch)
3934 (uri (rubygems-uri "Ascii85" version))
3935 (sha256
3936 (base32
3937 "0j95sbxd18kc8rhcnvl1w37kflqpax1r12h1x47gh4xxn3mz4m7q"))))
3938 (build-system ruby-build-system)
3939 (native-inputs
3940 `(("bundler" ,bundler)))
3941 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
3942 (description
3943 "This library provides methods to encode and decode Ascii85
3944binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
3945@dfn{Portable Document Format} (PDF) file formats.")
3946 (home-page "https://github.com/datawraith/ascii85gem")
3947 (license license:expat)))
edf8caae
BW
3948
3949(define-public ruby-ttfunk
3950 (package
3951 (name "ruby-ttfunk")
3952 (version "1.4.0")
3953 (source
3954 (origin
3955 (method url-fetch)
3956 ;; fetch from github as the gem does not contain testing code
3957 (uri (string-append
3958 "https://github.com/prawnpdf/ttfunk/archive/"
3959 version ".tar.gz"))
3960 (file-name (string-append name "-" version ".tar.gz"))
3961 (sha256
3962 (base32
3963 "1izq84pnm9niyvkzp8k0vl232q9zj41hwmp9na9fzycfh1pbnsl6"))))
3964 (build-system ruby-build-system)
3965 (arguments
3966 `(#:test-target "spec"
3967 #:phases
3968 (modify-phases %standard-phases
3969 (add-before 'check 'remove-rubocop
3970 (lambda _
3971 ;; remove rubocop as a dependency as not needed for testing
3972 (substitute* "ttfunk.gemspec"
3973 (("spec.add_development_dependency\\('rubocop'.*") ""))
3974 (substitute* "Rakefile"
3975 (("require 'rubocop/rake_task'") "")
3976 (("Rubocop::RakeTask.new") ""))
3977 #t)))))
3978 (native-inputs
3979 `(("ruby-rspec" ,ruby-rspec)
3980 ("bundler" ,bundler)))
3981 (synopsis "Font metrics parser for the Prawn PDF generator")
3982 (description
3983 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
3984part of the Prawn PDF generator.")
3985 (home-page "https://github.com/prawnpdf/ttfunk")
3986 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
3987 ;; for details."
3988 (license (list license:gpl2 license:gpl3 license:ruby))))
cbdd428c 3989
9270298f
BW
3990(define-public ruby-puma
3991 (package
3992 (name "ruby-puma")
3840373b 3993 (version "3.6.0")
9270298f
BW
3994 (source
3995 (origin
3996 (method url-fetch)
3997 ;; Fetch from GitHub because distributed gem does not contain tests.
3998 (uri (string-append "https://github.com/puma/puma/archive/v"
3999 version ".tar.gz"))
4000 (file-name (string-append name "-" version ".tar.gz"))
4001 (sha256
4002 (base32
3840373b
BW
4003 "08aws79n9slcr50d9lwm011cp1pxvr1409c2jmyjxywvrc0a30v1"))
4004 ;; Ignore broken tests reported upstream.
9270298f 4005 ;; https://github.com/puma/puma/issues/995
3840373b 4006 ;; https://github.com/puma/puma/issues/1044
9270298f
BW
4007 (patches (search-patches "ruby-puma-ignore-broken-test.patch"))))
4008 (build-system ruby-build-system)
4009 (arguments
4010 `(#:phases
4011 (modify-phases %standard-phases
3840373b
BW
4012 (add-after 'unpack 'delete-integration-tests
4013 (lambda _
4014 ;; One broken test in this file cannot be easily removed in
4015 ;; isolation, it probably causes race conditions. So we delete
4016 ;; the entire file.
4017 (delete-file "test/test_integration.rb")
4018 #t))
9270298f
BW
4019 (add-before 'build 'fix-gemspec
4020 (lambda _
4021 (substitute* "puma.gemspec"
4022 (("git ls-files") "find * |sort"))
4023 #t)))))
4024 (native-inputs
4025 `(("ruby-hoe" ,ruby-hoe)
4026 ("ruby-rake-compiler" ,ruby-rake-compiler)
4027 ("ruby-hoe-git" ,ruby-hoe-git)
4028 ("ruby-rack" ,ruby-rack)))
4029 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
4030 (description
4031 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
4032for Ruby/Rack applications. Puma is intended for use in both development and
4033production environments. In order to get the best throughput, it is highly
4034recommended that you use a Ruby implementation with real threads like Rubinius
4035or JRuby.")
4036 (home-page "http://puma.io")
4037 (license license:expat)))
4038
b0813490
BW
4039(define-public ruby-hoe-git
4040 (package
4041 (name "ruby-hoe-git")
4042 (version "1.6.0")
4043 (source
4044 (origin
4045 (method url-fetch)
4046 (uri (rubygems-uri "hoe-git" version))
4047 (sha256
4048 (base32
4049 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
4050 (build-system ruby-build-system)
4051 (propagated-inputs
4052 `(("ruby-hoe" ,ruby-hoe)
4053 ("git" ,git)))
4054 (synopsis "Hoe plugins for tighter Git integration")
4055 (description
4056 "This package provides a set of Hoe plugins for tighter Git integration.
4057It provides tasks to automate release tagging and pushing and changelog
4058generation.")
7bf837fd 4059 (home-page "https://github.com/jbarnette/hoe-git")
b0813490
BW
4060 (license license:expat)))
4061
cbdd428c
BW
4062(define-public ruby-sequel
4063 (package
4064 (name "ruby-sequel")
420fdfef 4065 (version "4.40.0")
cbdd428c
BW
4066 (source
4067 (origin
4068 (method url-fetch)
4069 (uri (rubygems-uri "sequel" version))
4070 (sha256
4071 (base32
420fdfef 4072 "0r39dv3yprai0cy7hslfxswjr4fg783xwxskmbih8ry24f18lbk0"))))
cbdd428c
BW
4073 (build-system ruby-build-system)
4074 (arguments
4075 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
4076 (synopsis "Database toolkit for Ruby")
4077 (description "Sequel provides thread safety, connection pooling and a
4078concise DSL for constructing SQL queries and table schemas. It includes a
4079comprehensive ORM layer for mapping records to Ruby objects and handling
4080associated records.")
4081 (home-page "http://sequel.jeremyevans.net")
4082 (license license:expat)))
3cc78097
BW
4083
4084(define-public ruby-timecop
4085 (package
4086 (name "ruby-timecop")
4087 (version "0.8.1")
4088 (source
4089 (origin
4090 (method url-fetch)
4091 (uri (rubygems-uri "timecop" version))
4092 (sha256
4093 (base32
4094 "0vwbkwqyxhavzvr1820hqwz43ylnfcf6w4x6sag0nghi44sr9kmx"))))
4095 (build-system ruby-build-system)
4096 (arguments
4097 `(#:phases
4098 (modify-phases %standard-phases
4099 (add-before 'check 'set-check-rubylib
4100 (lambda _
4101 ;; Set RUBYLIB so timecop tests finds its own lib.
4102 (setenv "RUBYLIB" "lib")
4103 #t)))))
4104 (native-inputs
4105 `(("bundler" ,bundler)
4106 ("ruby-minitest-rg" ,ruby-minitest-rg)
4107 ("ruby-mocha" ,ruby-mocha)
4108 ("ruby-activesupport" ,ruby-activesupport)))
66e07664 4109 (synopsis "Test mocks for time-dependent functions")
3cc78097
BW
4110 (description
4111 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
4112making it easier to test time-dependent code. It provides a unified method to
4113mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
4114call.")
4115 (home-page "https://github.com/travisjeffery/timecop")
4116 (license license:expat)))
4117
dae620b8
BW
4118(define-public ruby-concurrent
4119 (package
4120 (name "ruby-concurrent")
21aecec1 4121 (version "1.0.5")
dae620b8
BW
4122 (source
4123 (origin
4124 (method url-fetch)
4125 ;; Download from GitHub because the rubygems version does not contain
4126 ;; Rakefile.
4127 (uri (string-append
4128 "https://github.com/ruby-concurrency/concurrent-ruby/archive/v"
4129 version
4130 ".tar.gz"))
4131 (file-name (string-append name "-" version ".tar.gz"))
4132 (sha256
4133 (base32
21aecec1 4134 "0qhv0qzsby4iijgwa4s9r88zj8123pmyz1dwaqzdk57xgqll9pny"))
dae620b8
BW
4135 ;; Exclude failing test reported at
4136 ;; https://github.com/ruby-concurrency/concurrent-ruby/issues/534
402b03e6
LC
4137 (patches (search-patches "ruby-concurrent-ignore-broken-test.patch"
4138 "ruby-concurrent-test-arm.patch"))))
dae620b8
BW
4139 (build-system ruby-build-system)
4140 (arguments
4141 `(#:test-target "spec"
4142 #:phases
4143 (modify-phases %standard-phases
520e89eb 4144 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
dae620b8
BW
4145 (lambda _
4146 ;; Delete extra gemspec files so 'first-gemspec' chooses the
4147 ;; correct one.
4148 (delete-file "concurrent-ruby-edge.gemspec")
4149 (delete-file "concurrent-ruby-ext.gemspec")
4150 #t))
520e89eb
BW
4151 (add-before 'build 'replace-git-ls-files2
4152 (lambda _
4153 (substitute* "support/file_map.rb"
4154 (("git ls-files") "find * |sort"))
4155 #t))
dae620b8
BW
4156 (add-before 'check 'rake-compile
4157 ;; Fix the test error described at
4158 ;; https://github.com/ruby-concurrency/concurrent-ruby/pull/408
9019b37f
BW
4159 (lambda _ (zero? (system* "rake" "compile"))))
4160 (add-before 'check 'remove-timecop-dependency
4161 ;; Remove timecop-dependent tests as having timecop as a depedency
4162 ;; causes circular depedencies.
4163 (lambda _
4164 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
4165 (delete-file "spec/concurrent/scheduled_task_spec.rb")
4166 #t)))))
dae620b8
BW
4167 (native-inputs
4168 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9019b37f 4169 ("ruby-rspec" ,ruby-rspec)))
dae620b8
BW
4170 (synopsis "Concurrency tools for Ruby")
4171 (description
4172 "This library provides modern concurrency tools including agents,
4173futures, promises, thread pools, actors, supervisors, and more. It is
4174inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
4175patterns.")
4176 (home-page "http://www.concurrent-ruby.com")
4177 (license license:expat)))
2de61e34
BW
4178
4179(define-public ruby-pkg-config
4180 (package
4181 (name "ruby-pkg-config")
4182 (version "1.1.7")
4183 (source
4184 (origin
4185 (method url-fetch)
4186 (uri (rubygems-uri "pkg-config" version))
4187 (sha256
4188 (base32
4189 "0lljiqnm0b4z6iy87lzapwrdfa6ps63x2z5zbs038iig8dqx2g0z"))))
4190 (build-system ruby-build-system)
4191 (arguments
4192 ;; Tests require extra files not included in the gem.
4193 `(#:tests? #f))
4194 (synopsis "Detect libraries for compiling Ruby native extensions")
4195 (description
4196 "@code{pkg-config} can be used in your extconf.rb to properly detect need
4197libraries for compiling Ruby native extensions.")
4198 (home-page "https://github.com/ruby-gnome2/pkg-config")
4199 (license license:lgpl2.0+)))
6689c636
MFM
4200
4201(define-public ruby-net-http-digest-auth
4202 (package
4203 (name "ruby-net-http-digest-auth")
4204 (version "1.4")
4205 (source
4206 (origin
4207 (method url-fetch)
4208 (uri (rubygems-uri "net-http-digest_auth" version))
4209 (sha256
4210 (base32
4211 "14801gr34g0rmqz9pv4rkfa3crfdbyfk6r48vpg5a5407v0sixqi"))))
4212 (build-system ruby-build-system)
4213 (native-inputs
4214 `(("ruby-hoe" ,ruby-hoe)))
4215 (synopsis "RFC 2617 HTTP digest authentication library")
4216 (description
4217 "This library implements HTTP's digest authentication scheme based on
4218RFC 2617. This enables the use of the digest authentication scheme instead
4219of the more insecure basic authentication scheme.")
7bf837fd 4220 (home-page "https://github.com/drbrain/net-http-digest_auth")
6689c636 4221 (license license:expat)))
06116573 4222
4223(define-public ruby-mail
4224 (package
4225 (name "ruby-mail")
4226 (version "2.6.4")
4227 (source
4228 (origin
4229 (method url-fetch)
4230 (uri (rubygems-uri "mail" version))
4231 (sha256
4232 (base32
4233 "0c9vqfy0na9b5096i5i4qvrvhwamjnmajhgqi3kdsdfl8l6agmkp"))))
4234 (build-system ruby-build-system)
4235 (propagated-inputs
4236 `(("ruby-mime-types" ,ruby-mime-types)))
4237 (arguments
4238 ;; Tests require extra gems not included in the Gemfile.
4239 ;; XXX: Try enabling this for the next version with mini_mime.
4240 `(#:tests? #f))
4241 (synopsis "Mail library for Ruby")
4242 (description
4243 "Mail is an internet library for Ruby that is designed to handle email
4244generation, parsing and sending. The purpose of this library is to provide
4245a single point of access to handle all email functions, including sending
4246and receiving emails. All network type actions are done through proxy
4247methods to @code{Net::SMTP}, @code{Net::POP3} etc.
4248
4249Mail has been designed with a very simple object oriented system that
4250really opens up the email messages you are parsing, if you know what you
4251are doing, you can fiddle with every last bit of your email directly.")
4252 (home-page "https://github.com/mikel/mail")
4253 (license license:expat)))