gnu: ruby-pg: Update to 0.20.0.
[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")
5b884348 1201 (version "3.2.4")
3383f5bd
RW
1202 (source (origin
1203 (method url-fetch)
1204 (uri (rubygems-uri "test-unit" version))
1205 (sha256
1206 (base32
5b884348 1207 "09mb34lnffracsqxl4dav4c21p5nr4pj9hm5qy2s83k5hbjya3s7"))))
3383f5bd
RW
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")
3fd577e3 2288 (version "1.9.1")
bc8277e4
RW
2289 (source (origin
2290 (method url-fetch)
2291 (uri (rubygems-uri "gem_hadar" version))
2292 (sha256
2293 (base32
3fd577e3 2294 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
bc8277e4
RW
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)
3fd577e3 2308 ("ruby-yard" ,ruby-yard)))
bc8277e4
RW
2309 (synopsis "Library for the development of Ruby gems")
2310 (description
2311 "This library contains some useful functionality to support the
2312development of Ruby gems.")
2313 (home-page "https://github.com/flori/gem_hadar")
2314 (license license:expat)))
2315
d8cafe29
RW
2316(define-public ruby-minitest-tu-shim
2317 (package
2318 (name "ruby-minitest-tu-shim")
2319 (version "1.3.3")
2320 (source (origin
2321 (method url-fetch)
2322 (uri (rubygems-uri "minitest_tu_shim" version))
2323 (sha256
2324 (base32
2325 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
2326 (build-system ruby-build-system)
2327 (arguments
2328 `(#:phases
2329 (modify-phases %standard-phases
2330 (add-after 'unpack 'fix-test-include-path
2331 (lambda* (#:key inputs #:allow-other-keys)
761e7042
BW
2332 (let* ((minitest (assoc-ref inputs "ruby-minitest-4"))
2333 (minitest-home (gem-home minitest
2334 ,(package-version ruby))))
2335 (substitute* "Rakefile"
2336 (("Hoe\\.add_include_dirs .*")
2337 (string-append "Hoe.add_include_dirs \""
2338 minitest-home
2339 "/gems/minitest-"
2340 ,(package-version ruby-minitest-4)
2341 "/lib" "\""))))
2342 #t))
d8cafe29
RW
2343 (add-before 'check 'fix-test-assumptions
2344 (lambda _
2345 ;; The test output includes the file name, so a couple of tests
2346 ;; fail. Changing the regular expressions slightly fixes this
2347 ;; problem.
2348 (substitute* "test/test_mini_test.rb"
2349 (("output.sub!\\(.*, 'FILE:LINE'\\)")
2350 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
2351 (("gsub\\(/.*, 'FILE:LINE'\\)")
2352 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
2353 #t)))))
2354 (propagated-inputs
2355 `(("ruby-minitest-4" ,ruby-minitest-4)))
2356 (native-inputs
2357 `(("ruby-hoe" ,ruby-hoe)))
2358 (synopsis "Adapter library between minitest and test/unit")
2359 (description
2360 "This library bridges the gap between the small and fast minitest and
2361Ruby's large and slower test/unit.")
2362 (home-page "https://rubygems.org/gems/minitest_tu_shim")
2363 (license license:expat)))
2364
fd83a212
RW
2365(define-public ruby-term-ansicolor
2366 (package
2367 (name "ruby-term-ansicolor")
2368 (version "1.3.2")
2369 (source (origin
2370 (method url-fetch)
2371 (uri (rubygems-uri "term-ansicolor" version))
2372 (sha256
2373 (base32
2374 "0ydbbyjmk5p7fsi55ffnkq79jnfqx65c3nj8d9rpgl6sw85ahyys"))))
2375 (build-system ruby-build-system)
2376 ;; Rebuilding the gemspec seems to require git, even though this is not a
2377 ;; git repository, so we just build the gem from the existing gemspec.
2378 (arguments
2379 `(#:phases
2380 (modify-phases %standard-phases
2381 (replace 'build
2382 (lambda _
2383 (zero? (system* "gem" "build" "term-ansicolor.gemspec")))))))
2384 (propagated-inputs
2385 `(("ruby-tins" ,ruby-tins)))
2386 (native-inputs
2387 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2388 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
2389 (synopsis "Ruby library to control the attributes of terminal output")
2390 (description
2391 "This Ruby library uses ANSI escape sequences to control the attributes
2392of terminal output.")
2393 (home-page "http://flori.github.io/term-ansicolor/")
2394 ;; There is no mention of the "or later" clause.
2395 (license license:gpl2)))
2396
6e376ca4
RW
2397(define-public ruby-pstree
2398 (package
2399 (name "ruby-pstree")
2400 (version "0.1.0")
2401 (source (origin
2402 (method url-fetch)
2403 (uri (rubygems-uri "pstree" version))
2404 (sha256
2405 (base32
2406 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
2407 (build-system ruby-build-system)
2408 (native-inputs
2409 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2410 ("bundler" ,bundler)))
2411 (synopsis "Create a process tree data structure")
2412 (description
2413 "This library uses the output of the @code{ps} command to create a
2414process tree data structure for the current host.")
2415 (home-page "http://flori.github.com/pstree")
2416 ;; There is no mention of the "or later" clause.
2417 (license license:gpl2)))
2418
53239b5f
RW
2419(define-public ruby-utils
2420 (package
2421 (name "ruby-utils")
2422 (version "0.2.4")
2423 (source (origin
2424 (method url-fetch)
2425 (uri (rubygems-uri "utils" version))
2426 (sha256
2427 (base32
2428 "0vycgscxf3s1xn4yyfsq54zlh082581ga8azybmqgc4pij6iz2cd"))))
2429 (build-system ruby-build-system)
2430 (propagated-inputs
2431 `(("ruby-tins" ,ruby-tins)
2432 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
2433 ("ruby-pstree" ,ruby-pstree)
2434 ("ruby-pry-editline" ,ruby-pry-editline)))
2435 (native-inputs
2436 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2437 ("bundler" ,bundler)))
2438 (synopsis "Command line tools for working with Ruby")
2439 (description
2440 "This package provides assorted command line tools that may be useful
2441when working with Ruby code.")
2442 (home-page "https://github.com/flori/utils")
2443 ;; There is no mention of the "or later" clause.
2444 (license license:gpl2)))
2445
c99e2247
DT
2446(define-public ruby-json
2447 (package
2448 (name "ruby-json")
a281acce 2449 (version "2.1.0")
c99e2247
DT
2450 (source
2451 (origin
2452 (method url-fetch)
2453 (uri (rubygems-uri "json" version))
2454 (sha256
2455 (base32
a281acce 2456 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
c99e2247
DT
2457 (build-system ruby-build-system)
2458 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
2459 (synopsis "JSON library for Ruby")
2460 (description "This Ruby library provides a JSON implementation written as
2461a native C extension.")
2462 (home-page "http://json-jruby.rubyforge.org/")
2463 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 2464
763624f5
RW
2465(define-public ruby-json-pure
2466 (package
2467 (name "ruby-json-pure")
2468 (version "1.8.3")
2469 (source (origin
2470 (method url-fetch)
2471 (uri (rubygems-uri "json_pure" version))
2472 (sha256
2473 (base32
2474 "025aykr360x6dr1jmg8pmsrx7gr30pws4p1q686vnb48zyw1sc94"))))
2475 (build-system ruby-build-system)
2476 (arguments
2477 `(#:modules ((srfi srfi-1)
2478 (ice-9 regex)
2479 (rnrs io ports)
2480 (guix build ruby-build-system)
2481 (guix build utils))
2482 #:phases
2483 (modify-phases %standard-phases
2484 (add-after 'unpack 'replace-git-ls-files
2485 (lambda _
2486 ;; The existing gemspec file already contains a nice list of
2487 ;; files that belong to the gem. We extract the list from the
2488 ;; gemspec file and then replace the file list in the Rakefile to
2489 ;; get rid of the call to "git ls-files".
2490 (let* ((contents (call-with-input-file "json.gemspec" get-string-all))
2491 ;; Guile is unhappy about the #\nul characters in comments.
2492 (filtered (string-filter (lambda (char)
2493 (not (equal? #\nul char)))
2494 contents))
2495 (files (match:substring
2496 (string-match " s\\.files = ([^]]+\\])" filtered) 1)))
2497 (substitute* "Rakefile"
2498 (("FileList\\[`git ls-files`\\.split\\(/\\\\n/\\)\\]")
2499 (string-append "FileList" files))))
a8de0d1e
BW
2500 (substitute* "Gemfile"
2501 ((".*json-java.*") "\n"))
763624f5
RW
2502 #t)))))
2503 (native-inputs
2504 `(("ruby-permutation" ,ruby-permutation)
2505 ("ruby-utils" ,ruby-utils)
2506 ("ragel" ,ragel)
2507 ("bundler" ,bundler)))
2508 (synopsis "JSON implementation in pure Ruby")
2509 (description
2510 "This package provides a JSON implementation written in pure Ruby.")
2511 (home-page "http://flori.github.com/json")
2512 (license license:ruby)))
2513
16b324cd
RW
2514;; Even though this package only provides bindings for a Mac OSX API it is
2515;; required by "ruby-listen" at runtime.
2516(define-public ruby-rb-fsevent
2517 (package
2518 (name "ruby-rb-fsevent")
2519 (version "0.9.6")
2520 (source (origin
2521 (method url-fetch)
2522 (uri (rubygems-uri "rb-fsevent" version))
2523 (sha256
2524 (base32
2525 "1hq57by28iv0ijz8pk9ynih0xdg7vnl1010xjcijfklrcv89a1j2"))))
2526 (build-system ruby-build-system)
2527 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
2528 ;; "listen", which needs "rb-fsevent" at runtime.
2529 (arguments `(#:tests? #f))
2530 (synopsis "FSEvents API with signals catching")
2531 (description
2532 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
2533 (home-page "https://rubygems.org/gems/rb-fsevent")
2534 (license license:expat)))
2535
b86be2ad
RW
2536(define-public ruby-listen
2537 (package
2538 (name "ruby-listen")
2539 (version "3.0.3")
2540 (source
2541 (origin
2542 (method url-fetch)
2543 (uri (rubygems-uri "listen" version))
2544 (sha256
2545 (base32
2546 "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
2547 (build-system ruby-build-system)
2548 (arguments '(#:tests? #f)) ; no tests
2549 (propagated-inputs
cf1a01f4
RW
2550 `(("ruby-rb-inotify" ,ruby-rb-inotify)
2551 ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
b86be2ad
RW
2552 (synopsis "Listen to file modifications")
2553 (description "The Listen gem listens to file modifications and notifies
2554you about the changes.")
2555 (home-page "https://github.com/guard/listen")
2556 (license license:expat)))
2557
5ff89a1b
DT
2558(define-public ruby-activesupport
2559 (package
2560 (name "ruby-activesupport")
2af45e50 2561 (version "5.0.0")
5ff89a1b
DT
2562 (source
2563 (origin
2564 (method url-fetch)
2565 (uri (rubygems-uri "activesupport" version))
2566 (sha256
2567 (base32
2af45e50 2568 "0k7zhnz0aw1ym8phs10r85f91ja45vsd058fm9v0h2k0igw12cpf"))))
5ff89a1b
DT
2569 (build-system ruby-build-system)
2570 (arguments
2af45e50
BW
2571 `(#:phases
2572 (modify-phases %standard-phases
2573 (replace 'check
2574 (lambda _
2575 ;; There is no tests, instead attempt to load the library.
2576 (zero? (system* "ruby" "-Ilib" "-r" "active_support")))))))
5ff89a1b 2577 (propagated-inputs
2af45e50
BW
2578 `(("ruby-concurrent" ,ruby-concurrent)
2579 ("ruby-i18n" ,ruby-i18n)
5ff89a1b 2580 ("ruby-minitest" ,ruby-minitest)
606ee9a1
BW
2581 ("ruby-tzinfo" ,ruby-tzinfo)
2582 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
5ff89a1b
DT
2583 (synopsis "Ruby on Rails utility library")
2584 (description "ActiveSupport is a toolkit of support libraries and Ruby
2585core extensions extracted from the Rails framework. It includes support for
2586multibyte strings, internationalization, time zones, and testing.")
2587 (home-page "http://www.rubyonrails.org")
2588 (license license:expat)))
f847ad7b 2589
3996f0aa
RW
2590(define-public ruby-crass
2591 (package
2592 (name "ruby-crass")
2593 (version "1.0.2")
2594 (source (origin
2595 (method url-fetch)
2596 (uri (rubygems-uri "crass" version))
2597 (sha256
2598 (base32
2599 "1c377r8g7m58y22803iyjgqkkvnnii0pymskda1pardxrzaighj9"))))
2600 (build-system ruby-build-system)
2601 (native-inputs
2602 `(("bundler" ,bundler)
2603 ("ruby-minitest" ,ruby-minitest)))
2604 (synopsis "Pure Ruby CSS parser")
2605 (description
2606 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
2607 (home-page "https://github.com/rgrove/crass/")
2608 (license license:expat)))
2609
c2c4e5b2 2610(define-public ruby-nokogumbo
f1ae7c62
BW
2611 (let ((commit "fb51ff299a1c34346837580b6d1d9a60fadf5dbd"))
2612 (package
2613 (name "ruby-nokogumbo")
2614 (version (string-append "1.4.7-1." (string-take commit 8)))
2615 (source (origin
2616 ;; We use the git reference, because there's no Rakefile in the
2617 ;; published gem and the tarball on Github is outdated.
2618 (method git-fetch)
2619 (uri (git-reference
2620 (url "https://github.com/rubys/nokogumbo.git")
2621 (commit "d56f954d20a")))
2622 (file-name (string-append name "-" version "-checkout"))
2623 (sha256
2624 (base32
2625 "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
2626 (build-system ruby-build-system)
2627 (arguments
2628 `(#:modules ((guix build ruby-build-system)
2629 (guix build utils)
2630 (ice-9 rdelim))
2631 #:phases
2632 (modify-phases %standard-phases
5c31e981 2633 (add-after 'unpack 'build-gemspec
f1ae7c62
BW
2634 (lambda _
2635 (substitute* "Rakefile"
2636 ;; Build Makefile even without a copy of gumbo-parser sources
2637 (("'gumbo-parser/src',") "")
2638 ;; We don't bundle gumbo-parser sources
2639 (("'gumbo-parser/src/\\*',") "")
2640 (("'gumbo-parser/visualc/include/\\*',") "")
2641 ;; The definition of SOURCES will be cut in gemspec, and
2642 ;; "FileList" will be undefined.
2643 (("SOURCES \\+ FileList\\[")
2644 "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
2645
2646 ;; Copy the Rakefile and cut out the gemspec.
2647 (copy-file "Rakefile" ".gemspec")
2648 (with-atomic-file-replacement ".gemspec"
2649 (lambda (in out)
2650 (let loop ((line (read-line in 'concat))
2651 (skipping? #t))
2652 (if (eof-object? line)
2653 #t
2654 (let ((skip-next? (if skipping?
2655 (not (string-prefix? "SPEC =" line))
2656 (string-prefix? "end" line))))
2657 (when (or (not skipping?)
2658 (and skipping? (not skip-next?)))
2659 (format #t "~a" line)
2660 (display line out))
2661 (loop (read-line in 'concat) skip-next?))))))
2662 #t)))))
2663 (inputs
2664 `(("gumbo-parser" ,gumbo-parser)))
2665 (propagated-inputs
2666 `(("ruby-nokogiri" ,ruby-nokogiri)))
2667 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
2668 (description
2669 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
c2c4e5b2 2670access the result as a Nokogiri parsed document.")
f1ae7c62
BW
2671 (home-page "https://github.com/rubys/nokogumbo/")
2672 (license license:asl2.0))))
c2c4e5b2 2673
d56ff88b
RW
2674(define-public ruby-sanitize
2675 (package
2676 (name "ruby-sanitize")
2677 (version "4.0.0")
2678 (source (origin
2679 (method url-fetch)
2680 ;; The gem does not include the Rakefile, so we download the
2681 ;; release tarball from Github.
2682 (uri (string-append "https://github.com/rgrove/"
2683 "sanitize/archive/v" version ".tar.gz"))
2684 (file-name (string-append name "-" version ".tar.gz"))
2685 (sha256
2686 (base32
2687 "055xnj38l60gxnnng76kpy2l2jbrp0byjdyq17jw79w7l4b40znr"))))
2688 (build-system ruby-build-system)
2689 (propagated-inputs
2690 `(("ruby-crass" ,ruby-crass)
2691 ("ruby-nokogiri" ,ruby-nokogiri)
2692 ("ruby-nokogumbo" ,ruby-nokogumbo)))
2693 (native-inputs
2694 `(("bundler" ,bundler)
2695 ("ruby-minitest" ,ruby-minitest)
2696 ("ruby-redcarpet" ,ruby-redcarpet)
2697 ("ruby-yard" ,ruby-yard)))
2698 (synopsis "Whitelist-based HTML and CSS sanitizer")
2699 (description
2700 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
2701acceptable elements, attributes, and CSS properties, Sanitize will remove all
2702unacceptable HTML and/or CSS from a string.")
2703 (home-page "https://github.com/rgrove/sanitize/")
2704 (license license:expat)))
2705
f847ad7b
DT
2706(define-public ruby-ox
2707 (package
2708 (name "ruby-ox")
39d4d6f6 2709 (version "2.5.0")
f847ad7b
DT
2710 (source
2711 (origin
2712 (method url-fetch)
2713 (uri (rubygems-uri "ox" version))
2714 (sha256
2715 (base32
39d4d6f6 2716 "0rar0xr5qn3zac1r2z18kmpapx121c2l3z8jsgh60vsddwzpdh7h"))))
f847ad7b
DT
2717 (build-system ruby-build-system)
2718 (arguments
2719 '(#:tests? #f)) ; no tests
2720 (synopsis "Optimized XML library for Ruby")
2721 (description
2722 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
2723written as a native C extension. It was designed to be an alternative to
2724Nokogiri and other Ruby XML parsers for generic XML parsing and as an
2725alternative to Marshal for Object serialization. ")
2726 (home-page "http://www.ohler.com/ox")
2727 (license license:expat)))
4a9e0585 2728
0c4e7625
RW
2729(define-public ruby-redcloth
2730 (package
2731 (name "ruby-redcloth")
2732 (version "4.2.9")
2733 (source (origin
2734 (method url-fetch)
2735 (uri (rubygems-uri "RedCloth" version))
2736 (sha256
2737 (base32
2738 "06pahxyrckhgb7alsxwhhlx1ib2xsx33793finj01jk8i054bkxl"))))
2739 (build-system ruby-build-system)
2740 (arguments
2741 `(#:tests? #f ; no tests
2742 #:phases
2743 (modify-phases %standard-phases
2744 ;; Redcloth has complicated rake tasks to build various versions for
2745 ;; multiple targets using RVM. We don't want this so we just use the
2746 ;; existing gemspec.
2747 (replace 'build
2748 (lambda _
2749 (zero? (system* "gem" "build" "redcloth.gemspec"))))
2750 ;; Make sure that the "redcloth" executable finds required Ruby
2751 ;; libraries.
2752 (add-after 'install 'wrap-bin-redcloth
2753 (lambda* (#:key outputs #:allow-other-keys)
2754 (wrap-program (string-append (assoc-ref outputs "out")
2755 "/bin/redcloth")
2756 `("GEM_HOME" ":" prefix (,(getenv "GEM_HOME"))))
2757 #t)))))
2758 (native-inputs
2759 `(("bundler" ,bundler)
2760 ("ruby-diff-lcs" ,ruby-diff-lcs)
2761 ("ruby-rspec-2" ,ruby-rspec-2)))
2762 (synopsis "Textile markup language parser for Ruby")
2763 (description
2764 "RedCloth is a Ruby parser for the Textile markup language.")
2765 (home-page "http://redcloth.org")
2766 (license license:expat)))
2767
4a9e0585
DT
2768(define-public ruby-pg
2769 (package
2770 (name "ruby-pg")
71153ef1 2771 (version "0.20.0")
4a9e0585
DT
2772 (source
2773 (origin
2774 (method url-fetch)
2775 (uri (rubygems-uri "pg" version))
2776 (sha256
2777 (base32
71153ef1 2778 "03xcgwjs6faxis81jxf2plnlalg55dhhafqv3kvjxfr8ic7plpw5"))))
4a9e0585
DT
2779 (build-system ruby-build-system)
2780 (arguments
2781 '(#:test-target "spec"))
2782 (native-inputs
2783 `(("ruby-rake-compiler" ,ruby-rake-compiler)
2784 ("ruby-hoe" ,ruby-hoe)
2785 ("ruby-rspec" ,ruby-rspec)))
2786 (inputs
2787 `(("postgresql" ,postgresql)))
2788 (synopsis "Ruby interface to PostgreSQL")
2789 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
2790with PostgreSQL 8.4 and later.")
2791 (home-page "https://bitbucket.org/ged/ruby-pg")
2792 (license license:ruby)))
468e5657
DT
2793
2794(define-public ruby-byebug
2795 (package
2796 (name "ruby-byebug")
2797 (version "6.0.2")
2798 (source
2799 (origin
2800 (method url-fetch)
2801 (uri (rubygems-uri "byebug" version))
2802 (sha256
2803 (base32
2804 "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
2805 (build-system ruby-build-system)
2806 (arguments
2807 '(#:tests? #f)) ; no tests
2808 (synopsis "Debugger for Ruby 2")
2809 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
2810TracePoint C API for execution control and the Debug Inspector C API for call
2811stack navigation. The core component provides support that front-ends can
2812build on. It provides breakpoint handling and bindings for stack frames among
2813other things and it comes with a command line interface.")
7bf837fd 2814 (home-page "https://github.com/deivid-rodriguez/byebug")
468e5657 2815 (license license:bsd-2)))
64b6ccc3 2816
5799bc2b
RW
2817(define-public ruby-netrc
2818 (package
2819 (name "ruby-netrc")
2820 (version "0.11.0")
2821 (source (origin
2822 (method url-fetch)
2823 (uri (rubygems-uri "netrc" version))
2824 (sha256
2825 (base32
2826 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
2827 (build-system ruby-build-system)
2828 (arguments
2829 `(#:phases
2830 (modify-phases %standard-phases
2831 (replace 'check
2832 ;; There is no Rakefile and minitest can only run one file at once,
2833 ;; so we have to iterate over all test files.
2834 (lambda _
2835 (and (map (lambda (file)
2836 (zero? (system* "ruby" "-Itest" file)))
2837 (find-files "./test" "test_.*\\.rb"))))))))
2838 (native-inputs
2839 `(("ruby-minitest" ,ruby-minitest)))
2840 (synopsis "Library to read and update netrc files")
2841 (description
2842 "This library can read and update netrc files, preserving formatting
2843including comments and whitespace.")
2844 (home-page "https://github.com/geemus/netrc")
2845 (license license:expat)))
2846
3a6989ce
RW
2847(define-public ruby-unf-ext
2848 (package
2849 (name "ruby-unf-ext")
2850 (version "0.0.7.1")
2851 (source (origin
2852 (method url-fetch)
2853 (uri (rubygems-uri "unf_ext" version))
2854 (sha256
2855 (base32
2856 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
2857 (build-system ruby-build-system)
b809cc9a
RW
2858 (arguments
2859 `(#:phases
2860 (modify-phases %standard-phases
2861 (add-after 'build 'build-ext
2862 (lambda _ (zero? (system* "rake" "compile:unf_ext")))))))
3a6989ce
RW
2863 (native-inputs
2864 `(("bundler" ,bundler)
2865 ("ruby-rake-compiler" ,ruby-rake-compiler)
2866 ("ruby-test-unit" ,ruby-test-unit)))
2867 (synopsis "Unicode normalization form support library")
2868 (description
2869 "This package provides unicode normalization form support for Ruby.")
2870 (home-page "https://github.com/knu/ruby-unf_ext")
2871 (license license:expat)))
2872
2632a067
RW
2873(define-public ruby-tdiff
2874 (package
2875 (name "ruby-tdiff")
2876 (version "0.3.3")
2877 (source (origin
2878 (method url-fetch)
2879 (uri (rubygems-uri "tdiff" version))
2880 (sha256
2881 (base32
2882 "0k41jbvn8qq4mgrixnhlk742b971d136i8wpbcv2cczvi22xpc86"))))
2883 (build-system ruby-build-system)
2884 (native-inputs
2885 `(("ruby-rspec-2" ,ruby-rspec-2)
2886 ("ruby-yard" ,ruby-yard)
2887 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
2888 (synopsis "Calculate the differences between two tree-like structures")
2889 (description
2890 "This library provides functions to calculate the differences between two
2891tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
2892 (home-page "https://github.com/postmodern/tdiff")
2893 (license license:expat)))
2894
f60f5002
RW
2895(define-public ruby-nokogiri-diff
2896 (package
2897 (name "ruby-nokogiri-diff")
2898 (version "0.2.0")
2899 (source (origin
2900 (method url-fetch)
2901 (uri (rubygems-uri "nokogiri-diff" version))
2902 (sha256
2903 (base32
2904 "0njr1s42war0bj1axb2psjvk49l74a8wzr799wckqqdcb6n51lc1"))))
2905 (build-system ruby-build-system)
2906 (propagated-inputs
2907 `(("ruby-tdiff" ,ruby-tdiff)
2908 ("ruby-nokogiri" ,ruby-nokogiri)))
2909 (native-inputs
2910 `(("ruby-rspec-2" ,ruby-rspec-2)
2911 ("ruby-yard" ,ruby-yard)
2912 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
2913 (synopsis "Calculate the differences between two XML/HTML documents")
2914 (description
2915 "@code{Nokogiri::Diff} adds the ability to calculate the
2916differences (added or removed nodes) between two XML/HTML documents.")
2917 (home-page "https://github.com/postmodern/nokogiri-diff")
2918 (license license:expat)))
2919
64b6ccc3
DT
2920(define-public ruby-rack
2921 (package
2922 (name "ruby-rack")
8d171471 2923 (version "2.0.3")
64b6ccc3
DT
2924 (source
2925 (origin
2926 (method url-fetch)
1db791d5
BW
2927 ;; Download from GitHub so that the patch can be applied.
2928 (uri (string-append
2929 "https://github.com/rack/rack/archive/"
2930 version
2931 ".tar.gz"))
2932 (file-name (string-append name "-" version ".tar.gz"))
64b6ccc3
DT
2933 (sha256
2934 (base32
8d171471 2935 "12bnqrcg43x9hsswjqg31qqwk8cwj2fh0d2m179y20bjghhn54kx"))
1db791d5
BW
2936 ;; Ignore test which fails inside the build environment but works
2937 ;; outside.
2938 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
64b6ccc3
DT
2939 (build-system ruby-build-system)
2940 (arguments
2941 '(#:phases
2942 (modify-phases %standard-phases
2943 (add-before 'check 'fix-tests
2944 (lambda _
2945 ;; A few of the tests use the length of a file on disk for
2946 ;; Content-Length and Content-Range headers. However, this file
2947 ;; has a shebang in it which an earlier phase patches, growing
2948 ;; the file size from 193 to 239 bytes when the store prefix is
2949 ;; "/gnu/store".
2950 (let ((size-diff (- (string-length (which "ruby"))
2951 (string-length "/usr/bin/env ruby"))))
2952 (substitute* '("test/spec_file.rb")
2953 (("193")
2954 (number->string (+ 193 size-diff)))
2955 (("bytes(.)22-33" all delimiter)
2956 (string-append "bytes"
2957 delimiter
2958 (number->string (+ 22 size-diff))
2959 "-"
2960 (number->string (+ 33 size-diff))))))
2961 #t)))))
2962 (native-inputs
1db791d5
BW
2963 `(("ruby-minitest" ,ruby-minitest)
2964 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
2965 ("which" ,which)))
2966 (propagated-inputs
2967 `(("ruby-concurrent" ,ruby-concurrent)))
64b6ccc3
DT
2968 (synopsis "Unified web application interface for Ruby")
2969 (description "Rack provides a minimal, modular and adaptable interface for
2970developing web applications in Ruby. By wrapping HTTP requests and responses,
2971it unifies the API for web servers, web frameworks, and software in between
2972into a single method call.")
2973 (home-page "http://rack.github.io/")
2974 (license license:expat)))
62e4cc5a 2975
6aaa815e
PP
2976(define-public ruby-docile
2977 (package
2978 (name "ruby-docile")
2979 (version "1.1.5")
2980 (source
2981 (origin
2982 (method url-fetch)
2983 (uri (rubygems-uri "docile" version))
2984 (sha256
2985 (base32
2986 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
2987 (build-system ruby-build-system)
2988 (arguments
2989 '(#:tests? #f)) ; needs github-markup, among others
2990 (synopsis "Ruby EDSL helper library")
2991 (description "Docile is a Ruby library that provides an interface for
2992creating embedded domain specific languages (EDSLs) that manipulate existing
2993Ruby classes.")
2994 (home-page "https://ms-ati.github.io/docile/")
2995 (license license:expat)))
2996
44514637 2997(define-public ruby-gherkin
62e4cc5a 2998 (package
44514637
BW
2999 (name "ruby-gherkin")
3000 (version "4.0.0")
62e4cc5a
PP
3001 (source
3002 (origin
3003 (method url-fetch)
44514637 3004 (uri (rubygems-uri "gherkin" version))
62e4cc5a
PP
3005 (sha256
3006 (base32
44514637 3007 "1ripjv97hg746xszx9isal8z8vrlb98asc2rdxl291b3hr6pj0pr"))))
62e4cc5a
PP
3008 (build-system ruby-build-system)
3009 (native-inputs
3010 `(("bundler" ,bundler)))
3011 (arguments
3012 '(#:tests? #f)) ; needs simplecov, among others
3013 (synopsis "Gherkin parser for Ruby")
44514637
BW
3014 (description "Gherkin is a parser and compiler for the Gherkin language.
3015It is intended be used by all Cucumber implementations to parse '.feature'
3016files.")
62e4cc5a
PP
3017 (home-page "https://github.com/cucumber/gherkin3")
3018 (license license:expat)))
cd89fecb
PP
3019
3020(define-public ruby-cucumber-core
3021 (package
3022 (name "ruby-cucumber-core")
1817d30a 3023 (version "1.5.0")
cd89fecb
PP
3024 (source
3025 (origin
3026 (method url-fetch)
3027 (uri (rubygems-uri "cucumber-core" version))
3028 (sha256
3029 (base32
1817d30a 3030 "0qj2fsqvp94nggnikbnrfvnmzr1pl6ifmdsxj69kdw1kkab30jjr"))))
cd89fecb
PP
3031 (build-system ruby-build-system)
3032 (propagated-inputs
44514637 3033 `(("ruby-gherkin" ,ruby-gherkin)))
cd89fecb
PP
3034 (native-inputs
3035 `(("bundler" ,bundler)))
3036 (arguments
3037 '(#:tests? #f)) ; needs simplecov, among others
3038 (synopsis "Core library for the Cucumber BDD app")
3039 (description "Cucumber is a tool for running automated tests
3040written in plain language. Because they're written in plain language,
3041they can be read by anyone on your team. Because they can be read by
3042anyone, you can use them to help improve communication, collaboration
3043and trust on your team.")
3044 (home-page "https://cucumber.io/")
3045 (license license:expat)))
212d563d
PP
3046
3047(define-public ruby-bio-logger
3048 (package
3049 (name "ruby-bio-logger")
3050 (version "1.0.1")
3051 (source
3052 (origin
3053 (method url-fetch)
3054 (uri (rubygems-uri "bio-logger" version))
3055 (sha256
3056 (base32
3057 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
3058 (build-system ruby-build-system)
3059 (arguments
3060 `(#:tests? #f)) ; rake errors, missing shoulda
3061 (propagated-inputs
3062 `(("ruby-log4r" ,ruby-log4r)))
3063 (synopsis "Log4r wrapper for Ruby")
3064 (description "Bio-logger is a wrapper around Log4r adding extra logging
3065features such as filtering and fine grained logging.")
3066 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
3067 (license license:expat)))
07f61cb2
BW
3068
3069(define-public ruby-yard
6499893e
BW
3070 (package
3071 (name "ruby-yard")
3072 (version "0.9.6")
3073 (source
3074 (origin
3075 (method url-fetch)
3076 ;; Tests do not pass if we build from the distributed gem.
3077 (uri (string-append "https://github.com/lsegal/yard/archive/v"
3a3e3099 3078 version ".tar.gz"))
6499893e
BW
3079 (file-name (string-append name "-" version ".tar.gz"))
3080 (sha256
3081 (base32
3082 "0rsz4bghgx7fryzyhlz8wlnd2m9xgyvf1xhrq58mnzfrrfm41bdg"))))
3083 (build-system ruby-build-system)
3084 (arguments
3085 `(#:phases
3086 (modify-phases %standard-phases
3087 (replace 'check
3088 (lambda _
3089 ;; $HOME needs to be set to somewhere writeable for tests to run
3090 (setenv "HOME" "/tmp")
3091 ;; Run tests without using 'rake' to avoid dependencies.
3092 (zero? (system* "rspec")))))))
3093 (native-inputs
3094 `(("ruby-rspec" ,ruby-rspec)
3095 ("ruby-rack" ,ruby-rack)))
3096 (synopsis "Documentation generation tool for Ruby")
3097 (description
3098 "YARD is a documentation generation tool for the Ruby programming
07f61cb2
BW
3099language. It enables the user to generate consistent, usable documentation
3100that can be exported to a number of formats very easily, and also supports
3101extending for custom Ruby constructs such as custom class level definitions.")
6499893e
BW
3102 (home-page "http://yardoc.org")
3103 (license license:expat)))
2cbcd23a 3104
ad686ef3
RW
3105(define-public ruby-clap
3106 (package
3107 (name "ruby-clap")
3108 (version "1.0.0")
3109 (source (origin
3110 (method url-fetch)
3111 (uri (rubygems-uri "clap" version))
3112 (sha256
3113 (base32
3114 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
3115 (build-system ruby-build-system)
3116 ;; Clap needs cutest for running tests, but cutest needs clap.
3117 (arguments `(#:tests? #f))
3118 (synopsis "Command line argument parsing for simple applications")
3119 (description
3120 "Clap provides command line argument parsing features. It covers the
3121simple case of executing code based on the flags or parameters passed.")
3122 (home-page "https://github.com/djanowski/cutest")
0c80451e
RW
3123 (license license:expat)))
3124
3125(define-public ruby-cutest
3126 (package
3127 (name "ruby-cutest")
3128 (version "1.2.2")
3129 (source (origin
3130 (method url-fetch)
3131 (uri (rubygems-uri "cutest" version))
3132 (sha256
3133 (base32
3134 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
3135 (build-system ruby-build-system)
3136 (propagated-inputs
3137 `(("ruby-clap" ,ruby-clap)))
3138 (synopsis "Run tests in separate processes")
3139 (description
3140 "Cutest runs tests in separate processes to avoid shared state.")
3141 (home-page "https://github.com/djanowski/cutest")
ad686ef3
RW
3142 (license license:expat)))
3143
ac09beba
RW
3144(define-public ruby-pygmentize
3145 (package
3146 (name "ruby-pygmentize")
3147 (version "0.0.3")
3148 (source (origin
3149 (method url-fetch)
3150 (uri (rubygems-uri "pygmentize" version))
3151 (sha256
3152 (base32
3153 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
3154 (build-system ruby-build-system)
3155 (arguments
3156 `(#:phases
3157 (modify-phases %standard-phases
3158 (add-after 'unpack 'fix-pygmentize-path
3159 (lambda _
3160 (substitute* "lib/pygmentize.rb"
3161 (("\"/usr/bin/env python.*")
3162 (string-append "\"" (which "pygmentize") "\"\n")))
3163 #t))
3164 (add-after 'build 'do-not-use-vendor-directory
3165 (lambda _
3166 ;; Remove bundled pygments sources
3167 ;; FIXME: ruby-build-system does not support snippets.
3168 (delete-file-recursively "vendor")
3169 (substitute* "pygmentize.gemspec"
3170 (("\"vendor/\\*\\*/\\*\",") ""))
3171 #t)))))
3172 (inputs
3173 `(("pygments" ,python-pygments)))
3174 (native-inputs
3175 `(("ruby-cutest" ,ruby-cutest)
3176 ("ruby-nokogiri" ,ruby-nokogiri)))
3177 (synopsis "Thin Ruby wrapper around pygmentize")
3178 (description
3179 "Pygmentize provides a simple way to call pygmentize from within a Ruby
3180application.")
3181 (home-page "https://github.com/djanowski/pygmentize")
3182 (license license:expat)))
3183
2cbcd23a
DT
3184(define-public ruby-eventmachine
3185 (package
3186 (name "ruby-eventmachine")
3187 (version "1.0.8")
3188 (source
3189 (origin
3190 (method url-fetch)
3191 (uri (rubygems-uri "eventmachine" version))
3192 (sha256
3193 (base32
3194 "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp"))))
3195 (build-system ruby-build-system)
3196 (arguments
3197 '(#:tests? #f)) ; test suite tries to connect to google.com
3198 (native-inputs
3199 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
3200 (synopsis "Single-threaded network event framework for Ruby")
3201 (description
3202 "EventMachine implements a single-threaded engine for arbitrary network
3203communications. EventMachine wraps all interactions with sockets, allowing
3204programs to concentrate on the implementation of network protocols. It can be
3205used to create both network servers and clients.")
3206 (home-page "http://rubyeventmachine.com")
3207 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
7d3a1a2d 3208
8092e333
BW
3209(define-public ruby-turn
3210 (package
3211 (name "ruby-turn")
3212 (version "0.9.7")
3213 (source
3214 (origin
3215 (method url-fetch)
3216 (uri (rubygems-uri "turn" version))
3217 (sha256
3218 (base32
3219 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
3220 (build-system ruby-build-system)
3221 (arguments
3222 `(#:phases
3223 (modify-phases %standard-phases
3224 ;; Tests fail because turn changes its environment so can no longer
3225 ;; find test/unit. Instead simply test if the executable runs
3226 ;; without issue.
3227 (replace 'check
3228 (lambda _
3229 (zero? (system* "ruby" "-Ilib" "bin/turn" "-h")))))))
3230 (propagated-inputs
3231 `(("ruby-ansi" ,ruby-ansi)
3232 ("ruby-minitest" ,ruby-minitest-4)))
3233 (synopsis "Alternate set of alternative runners for MiniTest")
3234 (description
3235 "TURN provides a set of alternative runners for MiniTest which are both
3236colorful and informative. TURN displays each test on a separate line with
3237failures being displayed immediately instead of at the end of the tests. Note
3238that TURN is no longer being maintained.")
3239 (home-page "http://rubygems.org/gems/turn")
3240 (license license:expat)))
3241
32d1c06f
BW
3242(define-public ruby-mime-types-data
3243 (package
3244 (name "ruby-mime-types-data")
f49511db 3245 (version "3.2016.0521")
32d1c06f
BW
3246 (source
3247 (origin
3248 (method url-fetch)
3249 (uri (rubygems-uri "mime-types-data" version))
3250 (sha256
3251 (base32
f49511db 3252 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
32d1c06f
BW
3253 (build-system ruby-build-system)
3254 (native-inputs
3255 `(("ruby-hoe" ,ruby-hoe)))
3256 (synopsis "Registry for information about MIME media type definitions")
3257 (description
3258 "@code{mime-types-data} provides a registry for information about
3259Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
3260be used with the Ruby mime-types library or other software to determine
3261defined filename extensions for MIME types, or to use filename extensions to
3262look up the likely MIME type definitions.")
3263 (home-page "https://github.com/mime-types/mime-types-data/")
3264 (license license:expat)))
3265
d39b606c
BW
3266(define-public ruby-mime-types
3267 (package
3268 (name "ruby-mime-types")
803bcc81 3269 (version "3.1")
d39b606c
BW
3270 (source
3271 (origin
3272 (method url-fetch)
3273 (uri (rubygems-uri "mime-types" version))
3274 (sha256
3275 (base32
803bcc81 3276 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
d39b606c
BW
3277 (build-system ruby-build-system)
3278 (propagated-inputs
3279 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
3280 (native-inputs
3281 `(("ruby-hoe" ,ruby-hoe)
3282 ("ruby-fivemat" ,ruby-fivemat)
3283 ("ruby-minitest-focus" ,ruby-minitest-focus)
3284 ("ruby-minitest-rg" ,ruby-minitest-rg)
803bcc81
BW
3285 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
3286 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
d39b606c
BW
3287 (synopsis "Library and registry for MIME content type definitions")
3288 (description "The mime-types library provides a library and registry for
3289information about Multipurpose Internet Mail Extensions (MIME) content type
3290definitions. It can be used to determine defined filename extensions for MIME
3291types, or to use filename extensions to look up the likely MIME type
3292definitions.")
3293 (home-page "https://github.com/mime-types/ruby-mime-types")
3294 (license license:expat)))
3295
eb5e0bd9
BW
3296(define-public ruby-fivemat
3297 (package
3298 (name "ruby-fivemat")
3299 (version "1.3.2")
3300 (source
3301 (origin
3302 (method url-fetch)
3303 (uri (rubygems-uri "fivemat" version))
3304 (sha256
3305 (base32
3306 "1gvw6g4yc96l2pcyvigahyfsjxpdjx21iiwzvf965zippchdh6gk"))))
3307 (build-system ruby-build-system)
3308 (arguments
3309 `(#:tests? #f)) ; no tests
3310 (synopsis "Each test file given its own line of dots")
3311 (description
3312 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
3313its own line of dots during testing. It aims to provide test output that is
3314neither too verbose nor too minimal.")
3315 (home-page "https://github.com/tpope/fivemat")
3316 (license license:expat)))
3317
4fea500b
BW
3318(define-public ruby-sqlite3
3319 (package
3320 (name "ruby-sqlite3")
cba53c60 3321 (version "1.3.13")
4fea500b
BW
3322 (source
3323 (origin
3324 (method url-fetch)
3325 (uri (rubygems-uri "sqlite3" version))
3326 (sha256
3327 (base32
cba53c60 3328 "01ifzp8nwzqppda419c9wcvr8n82ysmisrs0hph9pdmv1lpa4f5i"))))
4fea500b
BW
3329 (build-system ruby-build-system)
3330 (arguments
3331 `(#:phases
3332 (modify-phases %standard-phases
3333 (add-before 'check 'add-gemtest-file
3334 ;; This file exists in the repository but is not distributed.
3335 (lambda _ (zero? (system* "touch" ".gemtest")))))))
3336 (inputs
3337 `(("sqlite" ,sqlite)))
3338 (native-inputs
3339 `(("ruby-hoe" ,ruby-hoe)
3340 ("ruby-rake-compiler" ,ruby-rake-compiler)
3341 ("ruby-mini-portile" ,ruby-mini-portile)))
3342 (synopsis "Interface with SQLite3 databases")
3343 (description
3344 "This module allows Ruby programs to interface with the SQLite3 database
3345engine.")
3346 (home-page
3347 "https://github.com/sparklemotion/sqlite3-ruby")
3348 (license license:bsd-3)))
3349
4dfa39cc
BW
3350(define-public ruby-shoulda-context
3351 (package
3352 (name "ruby-shoulda-context")
e7d1d472 3353 (version "1.2.2")
4dfa39cc
BW
3354 (source
3355 (origin
3356 (method url-fetch)
3357 (uri (rubygems-uri "shoulda-context" version))
3358 (sha256
3359 (base32
e7d1d472 3360 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
4dfa39cc
BW
3361 (build-system ruby-build-system)
3362 (arguments
3363 `(#:phases
3364 (modify-phases %standard-phases
3365 (replace 'check
3366 (lambda _
3367 ;; Do not run tests to avoid circular dependence with rails.
3368 ;; Instead just import the library to test.
3369 (zero? (system* "ruby" "-Ilib" "-r" "shoulda-context")))))))
3370 (synopsis "Test::Unit context framework extracted from Shoulda")
3371 (description
3372 "@code{shoulda-context} is the context framework extracted from Shoulda.
3373Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
3374context, setup, and should blocks combine to produce natural test method
3375names.")
3376 (home-page "https://github.com/thoughtbot/shoulda-context")
3377 (license license:expat)))
3378
e4fea008
BW
3379(define-public ruby-shoulda-matchers
3380 (package
3381 (name "ruby-shoulda-matchers")
80756fa6 3382 (version "3.1.1")
e4fea008
BW
3383 (source
3384 (origin
3385 (method url-fetch)
3386 (uri (rubygems-uri "shoulda-matchers" version))
3387 (sha256
3388 (base32
80756fa6 3389 "1cf6d2d9br82vylr9p362yk9cfrd14jz8v77n0yb0lbcxdbk7xzq"))))
e4fea008
BW
3390 (build-system ruby-build-system)
3391 (arguments
3392 `(#:phases
3393 (modify-phases %standard-phases
e4fea008
BW
3394 (replace 'check
3395 (lambda _
3396 ;; Do not run tests to avoid circular dependence with rails. Instead
3397 ;; just import the library to test.
3398 (zero? (system* "ruby" "-Ilib" "-r" "shoulda-matchers")))))))
3399 (propagated-inputs
3400 `(("ruby-activesupport" ,ruby-activesupport)))
3401 (synopsis "Collection of testing matchers extracted from Shoulda")
3402 (description
3403 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
3404test common Rails functionality. These tests would otherwise be much longer,
3405more complex, and error-prone.")
3406 (home-page "https://github.com/thoughtbot/shoulda-matchers")
3407 (license license:expat)))
3408
3885c58b
BW
3409(define-public ruby-shoulda-matchers-2
3410 (package
3411 (inherit ruby-shoulda-matchers)
3412 (version "2.8.0")
3413 (source (origin
3414 (method url-fetch)
3415 (uri (rubygems-uri "shoulda-matchers" version))
3416 (sha256
3417 (base32
3418 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
3419
6f390716
BW
3420(define-public ruby-shoulda
3421 (package
3422 (name "ruby-shoulda")
3423 (version "3.5.0")
3424 (source
3425 (origin
3426 (method url-fetch)
3427 (uri (rubygems-uri "shoulda" version))
3428 (sha256
3429 (base32
3430 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
3431 (build-system ruby-build-system)
3432 (arguments
3433 `(#:phases
3434 (modify-phases %standard-phases
3435 (replace 'check
3436 ;; Don't run tests to avoid circular dependence with rails. Instead
3437 ;; just import the library to test.
3438 (lambda _ (zero? (system* "ruby" "-Ilib" "-r" "shoulda")))))))
3439 (propagated-inputs
3440 `(("ruby-shoulda-context" ,ruby-shoulda-context)
3441 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
3442 (synopsis "Context framework and matchers for testing")
3443 (description
3444 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
3445@code{shoulda-matchers} providing tools for writing tests.")
3446 (home-page "https://github.com/thoughtbot/shoulda")
3447 (license license:expat)))
3448
3b44bcdf
BW
3449(define-public ruby-unf
3450 (package
3451 (name "ruby-unf")
3452 (version "0.1.4")
3453 (source
3454 (origin
3455 (method url-fetch)
3456 (uri (rubygems-uri "unf" version))
3457 (sha256
3458 (base32
3459 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
3460 (build-system ruby-build-system)
3461 (arguments
3462 `(#:phases
3463 (modify-phases %standard-phases
3464 (add-before 'check 'add-dependency-to-bundler
3465 (lambda _
3466 ;; test-unit is required but not provided by the bundler
3467 ;; environment. This is fixed in the upstream repository but fix
3468 ;; has not been released.
3469 (substitute* "Gemfile"
3470 (("^gemspec") "gem 'test-unit'\ngemspec"))
3471 #t)))))
3472 (propagated-inputs
3473 `(("ruby-unf-ext" ,ruby-unf-ext)))
3474 (native-inputs
3475 `(("ruby-shoulda" ,ruby-shoulda)
3476 ("bundler" ,bundler)
3477 ("ruby-test-unit" ,ruby-test-unit)))
3478 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
3479 (description
3480 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
3481support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
3482@code{java.text.Normalizer} on JRuby.")
3483 (home-page "https://github.com/knu/ruby-unf")
3484 (license license:bsd-2)))
3485
5799aadd
BW
3486(define-public ruby-domain-name
3487 (package
3488 (name "ruby-domain-name")
ca083914 3489 (version "0.5.20161021")
5799aadd
BW
3490 (source
3491 (origin
3492 (method url-fetch)
3493 (uri (rubygems-uri "domain_name" version))
3494 (sha256
3495 (base32
ca083914 3496 "1y5c96gzyh6z4nrnkisljqngfvljdba36dww657ka0x7khzvx7jl"))))
5799aadd
BW
3497 (build-system ruby-build-system)
3498 (arguments
3499 `(#:phases
3500 (modify-phases %standard-phases
3501 (add-before 'check 'fix-versions
3502 (lambda _
3503 ;; Fix NameError that appears to already be fixed upstream.
3504 (substitute* "Rakefile"
3505 (("DomainName::VERSION")
3506 "Bundler::GemHelper.gemspec.version"))
3507 ;; Loosen unnecessarily strict test-unit version specification.
3508 (substitute* "domain_name.gemspec"
71596c3c 3509 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
5799aadd
BW
3510 #t)))))
3511 (propagated-inputs
3512 `(("ruby-unf" ,ruby-unf)))
3513 (native-inputs
3514 `(("ruby-shoulda" ,ruby-shoulda)
3515 ("bundler" ,bundler)
3516 ("ruby-test-unit" ,ruby-test-unit)))
3517 (synopsis "Domain name manipulation library")
3518 (description
3519 "@code{domain_name} is a Domain name manipulation library. It parses a
3520domain name ready for extracting the registered domain and TLD (Top Level
3521Domain). It can also be used for cookie domain validation based on the Public
3522Suffix List.")
3523 (home-page "https://github.com/knu/ruby-domain_name")
3524 (license license:bsd-2)))
3525
d114ceeb
BW
3526(define-public ruby-http-cookie
3527 (package
3528 (name "ruby-http-cookie")
2a2eb07d 3529 (version "1.0.3")
d114ceeb
BW
3530 (source
3531 (origin
3532 (method url-fetch)
3533 (uri (rubygems-uri "http-cookie" version))
3534 (sha256
3535 (base32
2a2eb07d 3536 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
d114ceeb
BW
3537 (build-system ruby-build-system)
3538 (arguments
3539 `(#:phases
3540 (modify-phases %standard-phases
3541 (add-before 'check 'add-dependency-to-bundler
3542 (lambda _
3543 ;; Fix NameError
3544 (substitute* "Rakefile"
3545 (("HTTP::Cookie::VERSION")
3546 "Bundler::GemHelper.gemspec.version"))
3547 #t)))))
3548 (propagated-inputs
3549 `(("ruby-domain-name" ,ruby-domain-name)))
3550 (native-inputs
3551 `(("rubysimplecov" ,ruby-simplecov)
3552 ("bundler" ,bundler)
3553 ("ruby-sqlite3" ,ruby-sqlite3)
3554 ("ruby-test-unit" ,ruby-test-unit)))
3555 (synopsis "Handle HTTP Cookies based on RFC 6265")
3556 (description
3557 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
3558RFC 6265. It has been designed with security, standards compliance and
3559compatibility in mind, to behave just the same as today's major web browsers.
3560It has built-in support for the legacy @code{cookies.txt} and
3561@code{cookies.sqlite} formats of Mozilla Firefox.")
3562 (home-page "https://github.com/sparklemotion/http-cookie")
3563 (license license:expat)))
3564
7d3a1a2d
BW
3565(define-public ruby-ansi
3566 (package
3567 (name "ruby-ansi")
3568 (version "1.5.0")
3569 (source
3570 (origin
3571 (method url-fetch)
3572 ;; Fetch from GitHub as the gem does not contain testing code.
3573 (uri (string-append "https://github.com/rubyworks/ansi/archive/"
3574 version ".tar.gz"))
3575 (file-name (string-append name "-" version ".tar.gz"))
3576 (sha256
3577 (base32
3578 "1zdip30hivyipi8hndhb457bhiz033awd00bgrsk5axjrwp6zhly"))))
3579 (build-system ruby-build-system)
3580 (arguments
3581 `(#:phases
3582 (modify-phases %standard-phases
3583 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
3584 ;; cycle ansi, qed, ansi. Instead simply test that the library can
3585 ;; be require'd.
3586 (replace 'check
3587 (lambda _
3588 (zero? (system* "ruby" "-Ilib" "-r" "ansi")))))))
3589 (synopsis "ANSI escape code related libraries")
3590 (description
3591 "This package is a collection of ANSI escape code related libraries
3592enabling ANSI colorization and stylization of console output. Included in the
3593library are the @code{Code} module, which defines ANSI codes as constants and
3594methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
3595@code{ProgressBar}, and a @code{String} subclass. The library also includes a
3596@code{Terminal} module which provides information about the current output
3597device.")
3598 (home-page "http://rubyworks.github.io/ansi")
3599 (license license:bsd-2)))
7c033c46
BW
3600
3601(define-public ruby-systemu
3602 (package
3603 (name "ruby-systemu")
3604 (version "2.6.5")
3605 (source
3606 (origin
3607 (method url-fetch)
3608 (uri (rubygems-uri "systemu" version))
3609 (sha256
3610 (base32
3611 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
3612 (build-system ruby-build-system)
3613 (arguments
3614 `(#:phases
3615 (modify-phases %standard-phases
3616 (add-before 'check 'set-version
3617 (lambda _
3618 (setenv "VERSION" ,version)
3619 #t)))))
3620 (synopsis "Capture of stdout/stderr and handling of child processes")
3621 (description
3622 "Systemu can be used on any platform to return status, stdout, and stderr
3623of any command. Unlike other methods like @code{open3} and @code{popen4}
3624there is no danger of full pipes or threading issues hanging your process or
3625subprocess.")
3626 (home-page "https://github.com/ahoward/systemu")
3627 (license license:ruby)))
3d84a99e
BW
3628
3629(define-public ruby-bio-commandeer
3630 (package
3631 (name "ruby-bio-commandeer")
9bb46c15 3632 (version "0.1.3")
3d84a99e
BW
3633 (source
3634 (origin
3635 (method url-fetch)
3636 (uri (rubygems-uri "bio-commandeer" version))
3637 (sha256
3638 (base32
9bb46c15 3639 "0lin6l99ldqqjc90l9ihcrv882c4xgbgqm16jqkdy6jf955jd9a8"))))
3d84a99e
BW
3640 (build-system ruby-build-system)
3641 (arguments
3642 `(#:phases
3643 (modify-phases %standard-phases
3644 (replace 'check
3645 ;; Run test without calling 'rake' so that jeweler is
3646 ;; not required as an input.
3647 (lambda _
3648 (zero? (system* "rspec" "spec/bio-commandeer_spec.rb")))))))
3649 (propagated-inputs
3650 `(("ruby-bio-logger" ,ruby-bio-logger)
3651 ("ruby-systemu" ,ruby-systemu)))
3652 (native-inputs
3653 `(("bundler" ,bundler)
3654 ("ruby-rspec" ,ruby-rspec)))
3655 (synopsis "Simplified running of shell commands from within Ruby")
3656 (description
3657 "Bio-commandeer provides an opinionated method of running shell commands
3658from within Ruby. The advantage of bio-commandeer over other methods of
3659running external commands is that when something goes wrong, messages printed
3660to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
3661detail to ease debugging.")
7bf837fd 3662 (home-page "https://github.com/wwood/bioruby-commandeer")
3d84a99e 3663 (license license:expat)))
7c8131c7
BW
3664
3665(define-public ruby-rubytest
3666 (package
3667 (name "ruby-rubytest")
3668 (version "0.8.1")
3669 (source
3670 (origin
3671 (method url-fetch)
3672 (uri (rubygems-uri "rubytest" version))
3673 (sha256
3674 (base32
3675 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
3676 (build-system ruby-build-system)
3677 (arguments
3678 ;; Disable regular testing to break the cycle rubytest, qed, brass,
3679 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
3680 ;; simply test that the library can be require'd.
3681 `(#:phases
3682 (modify-phases %standard-phases
3683 (replace 'check
3684 (lambda _
3685 (zero? (system* "ruby" "-Ilib" "-r" "rubytest")))))))
3686 (propagated-inputs
3687 `(("ruby-ansi" ,ruby-ansi)))
3688 (synopsis "Universal test harness for Ruby")
3689 (description
3690 "Rubytest is a testing meta-framework for Ruby. It can handle any
3691compliant test framework and can run tests from multiple frameworks in a
3692single pass.")
3693 (home-page "http://rubyworks.github.io/rubytest")
3694 (license license:bsd-2)))
90fcedf2
BW
3695
3696(define-public ruby-brass
3697 (package
3698 (name "ruby-brass")
3699 (version "1.2.1")
3700 (source
3701 (origin
3702 (method url-fetch)
3703 (uri (rubygems-uri "brass" version))
3704 (sha256
3705 (base32
3706 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
3707 (build-system ruby-build-system)
3708 (arguments
3709 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
3710 ;; Instead simply test that the library can be require'd.
3711 `(#:phases
3712 (modify-phases %standard-phases
3713 (replace 'check
3714 (lambda _
3715 (zero? (system* "ruby" "-Ilib" "-r" "brass")))))))
3716 (synopsis "Basic foundational assertions framework")
3717 (description
3718 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
3719foundational assertions framework for other assertion and test frameworks to
3720make use of.")
3721 (home-page "http://rubyworks.github.io/brass")
3722 (license license:bsd-2)))
120fc74b
BW
3723
3724(define-public ruby-qed
3725 (package
3726 (name "ruby-qed")
3727 (version "2.9.2")
3728 (source
3729 (origin
3730 (method url-fetch)
3731 (uri (rubygems-uri "qed" version))
3732 (sha256
3733 (base32
3734 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
3735 (build-system ruby-build-system)
3736 (arguments
3737 ;; Disable testing to break the cycle qed, ansi, qed, among others.
3738 ;; Instead simply test that the executable runs using --copyright.
3739 `(#:phases
3740 (modify-phases %standard-phases
3741 (replace 'check
3742 (lambda _
3743 (zero? (system* "ruby" "-Ilib" "bin/qed" "--copyright")))))))
3744 (propagated-inputs
3745 `(("ruby-ansi" ,ruby-ansi)
3746 ("ruby-brass" ,ruby-brass)))
3747 (synopsis "Test framework utilizing literate programming techniques")
3748 (description
3749 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
3750@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
3751Development} (BDD) utilizing Literate Programming techniques. QED sits
3752somewhere between lower-level testing tools like @code{Test::Unit} and
3753requirement specifications systems like Cucumber.")
3754 (home-page "http://rubyworks.github.io/qed")
3755 (license license:bsd-2)))
9273ee8f
BW
3756
3757(define-public ruby-ae
3758 (package
3759 (name "ruby-ae")
3760 (version "1.8.2")
3761 (source
3762 (origin
3763 (method url-fetch)
3764 ;; Fetch from github so tests are included.
3765 (uri (string-append
3766 "https://github.com/rubyworks/ae/archive/"
3767 version ".tar.gz"))
3768 (file-name (string-append name "-" version ".tar.gz"))
3769 (sha256
3770 (base32
3771 "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl"))))
3772 (build-system ruby-build-system)
3773 (arguments
3774 `(#:phases
3775 (modify-phases %standard-phases
3776 (replace 'check
3777 (lambda _ (zero? (system* "qed")))))))
3778 (propagated-inputs
3779 `(("ruby-ansi" ,ruby-ansi)))
3780 (native-inputs
3781 `(("ruby-qed" ,ruby-qed)))
3782 (synopsis "Assertions library")
3783 (description
3784 "Assertive Expressive (AE) is an assertions library specifically designed
3785for reuse by other test frameworks.")
3786 (home-page "http://rubyworks.github.io/ae")
3787 (license license:bsd-2)))
78bb471f
BW
3788
3789(define-public ruby-lemon
3790 (package
3791 (name "ruby-lemon")
3792 (version "0.9.1")
3793 (source
3794 (origin
3795 (method url-fetch)
3796 (uri (rubygems-uri "lemon" version))
3797 (sha256
3798 (base32
3799 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
3800 (build-system ruby-build-system)
3801 (arguments
3802 `(#:phases
3803 (modify-phases %standard-phases
3804 (replace 'check (lambda _ (zero? (system* "qed")))))))
3805 (propagated-inputs
3806 `(("ruby-ae" ,ruby-ae)
3807 ("ruby-ansi" ,ruby-ansi)
3808 ("ruby-rubytest" ,ruby-rubytest)))
3809 (native-inputs
3810 `(("ruby-qed" ,ruby-qed)))
3811 (synopsis "Test framework correlating code structure and test unit")
3812 (description
3813 "Lemon is a unit testing framework that enforces highly formal
3814case-to-class and unit-to-method test construction. This enforcement can help
3815focus concern on individual units of behavior.")
3816 (home-page "http://rubyworks.github.io/lemon")
3817 (license license:bsd-2)))
0832804e
BW
3818
3819(define-public ruby-rubytest-cli
3820 (package
3821 (name "ruby-rubytest-cli")
3822 (version "0.2.0")
3823 (source
3824 (origin
3825 (method url-fetch)
3826 (uri (rubygems-uri "rubytest-cli" version))
3827 (sha256
3828 (base32
3829 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
3830 (build-system ruby-build-system)
3831 (arguments
3832 `(#:tests? #f)) ; no tests
3833 (propagated-inputs
3834 `(("ruby-ansi" ,ruby-ansi)
3835 ("ruby-rubytest" ,ruby-rubytest)))
3836 (synopsis "Command-line interface for rubytest")
3837 (description
3838 "Rubytest CLI is a command-line interface for running tests for
3839Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
3840 (home-page "http://rubyworks.github.io/rubytest-cli")
3841 (license license:bsd-2)))
72ccbfe3
BW
3842
3843(define-public ruby-hashery
3844 (package
3845 (name "ruby-hashery")
cba96208 3846 (version "2.1.2")
72ccbfe3
BW
3847 (source
3848 (origin
3849 (method url-fetch)
3850 (uri (rubygems-uri "hashery" version))
3851 (sha256
3852 (base32
cba96208 3853 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
72ccbfe3
BW
3854 (build-system ruby-build-system)
3855 (arguments
3856 `(#:phases
3857 (modify-phases %standard-phases
3858 (replace 'check
3859 (lambda _
3860 (and (zero? (system* "qed"))
3861 (zero? (system* "rubytest" "-Ilib" "-Itest" "test/"))))))))
3862 (native-inputs
3863 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
3864 ("ruby-qed" ,ruby-qed)
3865 ("ruby-lemon" ,ruby-lemon)))
3866 (synopsis "Hash-like classes with extra features")
3867 (description
3868 "The Hashery is a tight collection of @code{Hash}-like classes.
3869Included are the auto-sorting @code{Dictionary} class, the efficient
3870@code{LRUHash}, the flexible @code{OpenHash} and the convenient
3871@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
3872defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
3873standard @code{Hash} making it possible to subclass and augment to fit any
3874specific use case.")
3875 (home-page "http://rubyworks.github.io/hashery")
3876 (license license:bsd-2)))
1f1d71e0
BW
3877
3878(define-public ruby-rc4
3879 (package
3880 (name "ruby-rc4")
3881 (version "0.1.5")
3882 (source
3883 (origin
3884 (method url-fetch)
3885 (uri (rubygems-uri "ruby-rc4" version))
3886 (sha256
3887 (base32
3888 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
3889 (build-system ruby-build-system)
3890 (arguments
3891 `(#:phases
3892 (modify-phases %standard-phases
3893 (replace 'check
3894 (lambda _
3895 (zero? (system* "rspec" "spec/rc4_spec.rb")))))))
3896 (native-inputs
3897 `(("ruby-rspec" ,ruby-rspec-2)))
3898 (synopsis "Implementation of the RC4 algorithm")
3899 (description
3900 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
3901 (home-page "https://github.com/caiges/Ruby-RC4")
3902 (license license:expat)))
f3e085a8
BW
3903
3904(define-public ruby-afm
3905 (package
3906 (name "ruby-afm")
3907 (version "0.2.2")
3908 (source
3909 (origin
3910 (method url-fetch)
3911 (uri (rubygems-uri "afm" version))
3912 (sha256
3913 (base32
3914 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
3915 (build-system ruby-build-system)
3916 (native-inputs
3917 `(("bundler" ,bundler)))
3918 (synopsis "Read Adobe Font Metrics (afm) files")
3919 (description
3920 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
3921files and use the data therein.")
7bf837fd 3922 (home-page "https://github.com/halfbyte/afm")
f3e085a8 3923 (license license:expat)))
acb6be42
BW
3924
3925(define-public ruby-ascii85
3926 (package
3927 (name "ruby-ascii85")
3928 (version "1.0.2")
3929 (source
3930 (origin
3931 (method url-fetch)
3932 (uri (rubygems-uri "Ascii85" version))
3933 (sha256
3934 (base32
3935 "0j95sbxd18kc8rhcnvl1w37kflqpax1r12h1x47gh4xxn3mz4m7q"))))
3936 (build-system ruby-build-system)
3937 (native-inputs
3938 `(("bundler" ,bundler)))
3939 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
3940 (description
3941 "This library provides methods to encode and decode Ascii85
3942binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
3943@dfn{Portable Document Format} (PDF) file formats.")
3944 (home-page "https://github.com/datawraith/ascii85gem")
3945 (license license:expat)))
edf8caae
BW
3946
3947(define-public ruby-ttfunk
3948 (package
3949 (name "ruby-ttfunk")
3950 (version "1.4.0")
3951 (source
3952 (origin
3953 (method url-fetch)
3954 ;; fetch from github as the gem does not contain testing code
3955 (uri (string-append
3956 "https://github.com/prawnpdf/ttfunk/archive/"
3957 version ".tar.gz"))
3958 (file-name (string-append name "-" version ".tar.gz"))
3959 (sha256
3960 (base32
3961 "1izq84pnm9niyvkzp8k0vl232q9zj41hwmp9na9fzycfh1pbnsl6"))))
3962 (build-system ruby-build-system)
3963 (arguments
3964 `(#:test-target "spec"
3965 #:phases
3966 (modify-phases %standard-phases
3967 (add-before 'check 'remove-rubocop
3968 (lambda _
3969 ;; remove rubocop as a dependency as not needed for testing
3970 (substitute* "ttfunk.gemspec"
3971 (("spec.add_development_dependency\\('rubocop'.*") ""))
3972 (substitute* "Rakefile"
3973 (("require 'rubocop/rake_task'") "")
3974 (("Rubocop::RakeTask.new") ""))
3975 #t)))))
3976 (native-inputs
3977 `(("ruby-rspec" ,ruby-rspec)
3978 ("bundler" ,bundler)))
3979 (synopsis "Font metrics parser for the Prawn PDF generator")
3980 (description
3981 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
3982part of the Prawn PDF generator.")
3983 (home-page "https://github.com/prawnpdf/ttfunk")
3984 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
3985 ;; for details."
3986 (license (list license:gpl2 license:gpl3 license:ruby))))
cbdd428c 3987
9270298f
BW
3988(define-public ruby-puma
3989 (package
3990 (name "ruby-puma")
3840373b 3991 (version "3.6.0")
9270298f
BW
3992 (source
3993 (origin
3994 (method url-fetch)
3995 ;; Fetch from GitHub because distributed gem does not contain tests.
3996 (uri (string-append "https://github.com/puma/puma/archive/v"
3997 version ".tar.gz"))
3998 (file-name (string-append name "-" version ".tar.gz"))
3999 (sha256
4000 (base32
3840373b
BW
4001 "08aws79n9slcr50d9lwm011cp1pxvr1409c2jmyjxywvrc0a30v1"))
4002 ;; Ignore broken tests reported upstream.
9270298f 4003 ;; https://github.com/puma/puma/issues/995
3840373b 4004 ;; https://github.com/puma/puma/issues/1044
9270298f
BW
4005 (patches (search-patches "ruby-puma-ignore-broken-test.patch"))))
4006 (build-system ruby-build-system)
4007 (arguments
4008 `(#:phases
4009 (modify-phases %standard-phases
3840373b
BW
4010 (add-after 'unpack 'delete-integration-tests
4011 (lambda _
4012 ;; One broken test in this file cannot be easily removed in
4013 ;; isolation, it probably causes race conditions. So we delete
4014 ;; the entire file.
4015 (delete-file "test/test_integration.rb")
4016 #t))
9270298f
BW
4017 (add-before 'build 'fix-gemspec
4018 (lambda _
4019 (substitute* "puma.gemspec"
4020 (("git ls-files") "find * |sort"))
4021 #t)))))
4022 (native-inputs
4023 `(("ruby-hoe" ,ruby-hoe)
4024 ("ruby-rake-compiler" ,ruby-rake-compiler)
4025 ("ruby-hoe-git" ,ruby-hoe-git)
4026 ("ruby-rack" ,ruby-rack)))
4027 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
4028 (description
4029 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
4030for Ruby/Rack applications. Puma is intended for use in both development and
4031production environments. In order to get the best throughput, it is highly
4032recommended that you use a Ruby implementation with real threads like Rubinius
4033or JRuby.")
4034 (home-page "http://puma.io")
4035 (license license:expat)))
4036
b0813490
BW
4037(define-public ruby-hoe-git
4038 (package
4039 (name "ruby-hoe-git")
4040 (version "1.6.0")
4041 (source
4042 (origin
4043 (method url-fetch)
4044 (uri (rubygems-uri "hoe-git" version))
4045 (sha256
4046 (base32
4047 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
4048 (build-system ruby-build-system)
4049 (propagated-inputs
4050 `(("ruby-hoe" ,ruby-hoe)
4051 ("git" ,git)))
4052 (synopsis "Hoe plugins for tighter Git integration")
4053 (description
4054 "This package provides a set of Hoe plugins for tighter Git integration.
4055It provides tasks to automate release tagging and pushing and changelog
4056generation.")
7bf837fd 4057 (home-page "https://github.com/jbarnette/hoe-git")
b0813490
BW
4058 (license license:expat)))
4059
cbdd428c
BW
4060(define-public ruby-sequel
4061 (package
4062 (name "ruby-sequel")
420fdfef 4063 (version "4.40.0")
cbdd428c
BW
4064 (source
4065 (origin
4066 (method url-fetch)
4067 (uri (rubygems-uri "sequel" version))
4068 (sha256
4069 (base32
420fdfef 4070 "0r39dv3yprai0cy7hslfxswjr4fg783xwxskmbih8ry24f18lbk0"))))
cbdd428c
BW
4071 (build-system ruby-build-system)
4072 (arguments
4073 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
4074 (synopsis "Database toolkit for Ruby")
4075 (description "Sequel provides thread safety, connection pooling and a
4076concise DSL for constructing SQL queries and table schemas. It includes a
4077comprehensive ORM layer for mapping records to Ruby objects and handling
4078associated records.")
4079 (home-page "http://sequel.jeremyevans.net")
4080 (license license:expat)))
3cc78097
BW
4081
4082(define-public ruby-timecop
4083 (package
4084 (name "ruby-timecop")
4085 (version "0.8.1")
4086 (source
4087 (origin
4088 (method url-fetch)
4089 (uri (rubygems-uri "timecop" version))
4090 (sha256
4091 (base32
4092 "0vwbkwqyxhavzvr1820hqwz43ylnfcf6w4x6sag0nghi44sr9kmx"))))
4093 (build-system ruby-build-system)
4094 (arguments
4095 `(#:phases
4096 (modify-phases %standard-phases
4097 (add-before 'check 'set-check-rubylib
4098 (lambda _
4099 ;; Set RUBYLIB so timecop tests finds its own lib.
4100 (setenv "RUBYLIB" "lib")
4101 #t)))))
4102 (native-inputs
4103 `(("bundler" ,bundler)
4104 ("ruby-minitest-rg" ,ruby-minitest-rg)
4105 ("ruby-mocha" ,ruby-mocha)
4106 ("ruby-activesupport" ,ruby-activesupport)))
66e07664 4107 (synopsis "Test mocks for time-dependent functions")
3cc78097
BW
4108 (description
4109 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
4110making it easier to test time-dependent code. It provides a unified method to
4111mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
4112call.")
4113 (home-page "https://github.com/travisjeffery/timecop")
4114 (license license:expat)))
4115
dae620b8
BW
4116(define-public ruby-concurrent
4117 (package
4118 (name "ruby-concurrent")
21aecec1 4119 (version "1.0.5")
dae620b8
BW
4120 (source
4121 (origin
4122 (method url-fetch)
4123 ;; Download from GitHub because the rubygems version does not contain
4124 ;; Rakefile.
4125 (uri (string-append
4126 "https://github.com/ruby-concurrency/concurrent-ruby/archive/v"
4127 version
4128 ".tar.gz"))
4129 (file-name (string-append name "-" version ".tar.gz"))
4130 (sha256
4131 (base32
21aecec1 4132 "0qhv0qzsby4iijgwa4s9r88zj8123pmyz1dwaqzdk57xgqll9pny"))
dae620b8
BW
4133 ;; Exclude failing test reported at
4134 ;; https://github.com/ruby-concurrency/concurrent-ruby/issues/534
402b03e6
LC
4135 (patches (search-patches "ruby-concurrent-ignore-broken-test.patch"
4136 "ruby-concurrent-test-arm.patch"))))
dae620b8
BW
4137 (build-system ruby-build-system)
4138 (arguments
4139 `(#:test-target "spec"
4140 #:phases
4141 (modify-phases %standard-phases
520e89eb 4142 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
dae620b8
BW
4143 (lambda _
4144 ;; Delete extra gemspec files so 'first-gemspec' chooses the
4145 ;; correct one.
4146 (delete-file "concurrent-ruby-edge.gemspec")
4147 (delete-file "concurrent-ruby-ext.gemspec")
4148 #t))
520e89eb
BW
4149 (add-before 'build 'replace-git-ls-files2
4150 (lambda _
4151 (substitute* "support/file_map.rb"
4152 (("git ls-files") "find * |sort"))
4153 #t))
dae620b8
BW
4154 (add-before 'check 'rake-compile
4155 ;; Fix the test error described at
4156 ;; https://github.com/ruby-concurrency/concurrent-ruby/pull/408
9019b37f
BW
4157 (lambda _ (zero? (system* "rake" "compile"))))
4158 (add-before 'check 'remove-timecop-dependency
4159 ;; Remove timecop-dependent tests as having timecop as a depedency
4160 ;; causes circular depedencies.
4161 (lambda _
4162 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
4163 (delete-file "spec/concurrent/scheduled_task_spec.rb")
4164 #t)))))
dae620b8
BW
4165 (native-inputs
4166 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9019b37f 4167 ("ruby-rspec" ,ruby-rspec)))
dae620b8
BW
4168 (synopsis "Concurrency tools for Ruby")
4169 (description
4170 "This library provides modern concurrency tools including agents,
4171futures, promises, thread pools, actors, supervisors, and more. It is
4172inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
4173patterns.")
4174 (home-page "http://www.concurrent-ruby.com")
4175 (license license:expat)))
2de61e34
BW
4176
4177(define-public ruby-pkg-config
4178 (package
4179 (name "ruby-pkg-config")
4180 (version "1.1.7")
4181 (source
4182 (origin
4183 (method url-fetch)
4184 (uri (rubygems-uri "pkg-config" version))
4185 (sha256
4186 (base32
4187 "0lljiqnm0b4z6iy87lzapwrdfa6ps63x2z5zbs038iig8dqx2g0z"))))
4188 (build-system ruby-build-system)
4189 (arguments
4190 ;; Tests require extra files not included in the gem.
4191 `(#:tests? #f))
4192 (synopsis "Detect libraries for compiling Ruby native extensions")
4193 (description
4194 "@code{pkg-config} can be used in your extconf.rb to properly detect need
4195libraries for compiling Ruby native extensions.")
4196 (home-page "https://github.com/ruby-gnome2/pkg-config")
4197 (license license:lgpl2.0+)))
6689c636
MFM
4198
4199(define-public ruby-net-http-digest-auth
4200 (package
4201 (name "ruby-net-http-digest-auth")
4202 (version "1.4")
4203 (source
4204 (origin
4205 (method url-fetch)
4206 (uri (rubygems-uri "net-http-digest_auth" version))
4207 (sha256
4208 (base32
4209 "14801gr34g0rmqz9pv4rkfa3crfdbyfk6r48vpg5a5407v0sixqi"))))
4210 (build-system ruby-build-system)
4211 (native-inputs
4212 `(("ruby-hoe" ,ruby-hoe)))
4213 (synopsis "RFC 2617 HTTP digest authentication library")
4214 (description
4215 "This library implements HTTP's digest authentication scheme based on
4216RFC 2617. This enables the use of the digest authentication scheme instead
4217of the more insecure basic authentication scheme.")
7bf837fd 4218 (home-page "https://github.com/drbrain/net-http-digest_auth")
6689c636 4219 (license license:expat)))
06116573 4220
4221(define-public ruby-mail
4222 (package
4223 (name "ruby-mail")
4224 (version "2.6.4")
4225 (source
4226 (origin
4227 (method url-fetch)
4228 (uri (rubygems-uri "mail" version))
4229 (sha256
4230 (base32
4231 "0c9vqfy0na9b5096i5i4qvrvhwamjnmajhgqi3kdsdfl8l6agmkp"))))
4232 (build-system ruby-build-system)
4233 (propagated-inputs
4234 `(("ruby-mime-types" ,ruby-mime-types)))
4235 (arguments
4236 ;; Tests require extra gems not included in the Gemfile.
4237 ;; XXX: Try enabling this for the next version with mini_mime.
4238 `(#:tests? #f))
4239 (synopsis "Mail library for Ruby")
4240 (description
4241 "Mail is an internet library for Ruby that is designed to handle email
4242generation, parsing and sending. The purpose of this library is to provide
4243a single point of access to handle all email functions, including sending
4244and receiving emails. All network type actions are done through proxy
4245methods to @code{Net::SMTP}, @code{Net::POP3} etc.
4246
4247Mail has been designed with a very simple object oriented system that
4248really opens up the email messages you are parsing, if you know what you
4249are doing, you can fiddle with every last bit of your email directly.")
4250 (home-page "https://github.com/mikel/mail")
4251 (license license:expat)))