1(use-modules
2 ((guix licenses) #:prefix license:)
3 (guix packages)
4 (guix download)
5 (guix gexp)
6 (guix git-download)
7 (guix build-system ruby)
8 (guix build-system copy)
9 (gnu packages rails)
10 (gnu packages ruby)
11 (gnu packages tls)
12 (gnu packages databases)
13 (ice-9 rdelim)
14 (ice-9 popen))
15
16(define-public ruby-bigdecimal
17 (package
18 (name "ruby-bigdecimal")
19 (version "4.0.1")
20 (source
21 (origin
22 (method url-fetch)
23 (uri (rubygems-uri "bigdecimal" version))
24 (sha256
25 (base32 "19y406nx17arzsbc515mjmr6k5p59afprspa1k423yd9cp8d61wb"))))
26 (build-system ruby-build-system)
27 (arguments
28 `(#:tests? #f))
29 (synopsis
30 "This library provides arbitrary-precision decimal floating-point number class.")
31 (description
32 "This library provides arbitrary-precision decimal floating-point number class.")
33 (home-page "https://github.com/ruby/bigdecimal")
34 (license #f)))
35
36(define-public ruby-ox
37 (package
38 (name "ruby-ox")
39 (version "2.14.23")
40 (source
41 (origin
42 (method url-fetch)
43 (uri (rubygems-uri "ox" version))
44 (sha256
45 (base32 "0rhv8qdnm3s34yvsvmrii15f2238rk3psa6pq6x5x367sssfv6ja"))))
46 (build-system ruby-build-system)
47 (arguments
48 `(#:tests? #f))
49 (propagated-inputs (list ruby-bigdecimal))
50 (synopsis
51 "A fast XML parser and object serializer that uses only standard C lib.
52
53Optimized XML (Ox), as the name implies was written to provide speed optimized
54XML handling. It was designed to be an alternative to Nokogiri and other Ruby
55XML parsers for generic XML parsing and as an alternative to Marshal for Object
56serialization. ")
57 (description
58 "This package provides a fast XML parser and object serializer that uses only
59standard C lib. Optimized XML (Ox), as the name implies was written to provide
60speed optimized XML handling. It was designed to be an alternative to Nokogiri
61and other Ruby XML parsers for generic XML parsing and as an alternative to
62Marshal for Object serialization.")
63 (home-page "http://www.ohler.com/ox/")
64 (license license:expat)))
65
66(define-public ruby-base64
67 (package
68 (name "ruby-base64")
69 (version "0.3.0")
70 (source
71 (origin
72 (method url-fetch)
73 (uri (rubygems-uri "base64" version))
74 (sha256
75 (base32 "0yx9yn47a8lkfcjmigk79fykxvr80r4m1i35q82sxzynpbm7lcr7"))))
76 (build-system ruby-build-system)
77 (arguments
78 `(#:tests? #f))
79 (synopsis
80 "Support for encoding and decoding binary data using a Base64 representation.")
81 (description
82 "Support for encoding and decoding binary data using a Base64 representation.")
83 (home-page "https://github.com/ruby/base64")
84 (license #f)))
85
86(define-public ruby-addressable
87 (package
88 (name "ruby-addressable")
89 (version "2.8.8")
90 (source
91 (origin
92 (method url-fetch)
93 (uri (rubygems-uri "addressable" version))
94 (sha256
95 (base32 "0mxhjgihzsx45l9wh2n0ywl9w0c6k70igm5r0d63dxkcagwvh4vw"))))
96 (build-system ruby-build-system)
97 (arguments
98 `(#:tests? #f))
99 (propagated-inputs (list ruby-public-suffix))
100 (synopsis
101 "Addressable is an alternative implementation to the URI implementation that is
102part of Ruby's standard library. It is flexible, offers heuristic parsing, and
103additionally provides extensive support for IRIs and URI templates.
104")
105 (description
106 "Addressable is an alternative implementation to the URI implementation that is
107part of Ruby's standard library. It is flexible, offers heuristic parsing, and
108additionally provides extensive support for IRIs and URI templates.")
109 (home-page "https://github.com/sporkmonger/addressable")
110 (license #f)))
111
112(define-public ruby-multipart-parser
113 (package
114 (name "ruby-multipart-parser")
115 (version "0.1.1")
116 (source (origin
117 (method url-fetch)
118 (uri (rubygems-uri "multipart-parser" version))
119 (sha256
120 (base32
121 "0xb4p475yrfm883h9kn80a021myn17dvs50wpa1djzcmlq7p0882"))))
122 (build-system ruby-build-system)
123 (arguments
124 (list
125 #:phases #~(modify-phases %standard-phases
126 (add-after 'unpack 'skip-failing-test
127 ;; One test fails for unknown reasons (see:
128 ;; https://github.com/danabr/multipart-parser/issues/7).
129 (lambda _
130 (substitute* "test/multipart_parser/reader_test.rb"
131 (("def test_long" all)
132 (string-append all "\n return true"))))))))
133 (synopsis "Parser for multipart MIME messages")
134 (description "@code{multipart-parser} is a simple parser for multipart
135MIME messages, written in Ruby, based on felixge/node-formidable's parser. It
136has the following characteristics:
137@itemize
138@item Pure Ruby
139@item Event-driven API
140@item Only supports one level of multipart parsing
141@item Does not perform I/O
142@item Does not depend on any other library.
143@end itemize")
144 (home-page "https://github.com/danabr/multipart-parser")
145 (license license:expat)))
146
147(define-public ruby-ruby2-keywords
148 (package
149 (name "ruby-ruby2-keywords")
150 (version "0.0.5")
151 (source (origin
152 (method git-fetch)
153 (uri (git-reference
154 (url "https://github.com/ruby/ruby2_keywords")
155 (commit (string-append "v" version))))
156 (file-name (git-file-name name version))
157 (sha256
158 (base32
159 "1jhqb152zfr2yrxj6j8rzakkwdkg5viggwnnqrrfxwwy63msdi97"))))
160 (build-system ruby-build-system)
161 (arguments
162 (list
163 #:phases
164 #~(modify-phases %standard-phases
165 (add-after 'unpack 'delete-extraneous-rake-files
166 (lambda _
167 (for-each delete-file '("rakelib/changelogs.rake"
168 "rakelib/epoch.rake"
169 "rakelib/version.rake"))))
170 (add-after 'extract-gemspec 'adjust-files
171 (lambda _
172 (substitute* "ruby2_keywords.gemspec"
173 ;; This file is not present in the git checkout.
174 ((".*\"ChangeLog\",.*") "")))))))
175 (synopsis "Shim library for Module#ruby2_keywords")
176 (description "Provides empty @code{Module#ruby2_keywords} method, for the
177forward source-level compatibility against @command{ruby2.7} and
178@command{ruby3}.")
179 (home-page "https://github.com/ruby/ruby2_keywords")
180 (license license:bsd-2)))
181
182(define-public ruby-faraday-multipart
183 (package
184 (name "ruby-faraday-multipart")
185 (version "1.0.4")
186 (source (origin
187 (method git-fetch)
188 (uri (git-reference
189 (url "https://github.com/lostisland/faraday-multipart")
190 (commit (string-append "v" version))))
191 (file-name (git-file-name name version))
192 (sha256
193 (base32
194 "0ywxhff40a688n50lxrn4d8y096l8sbrwp1jfz4zd3kdiiygclka"))))
195 (build-system ruby-build-system)
196 (arguments (list #:tests? #f #:test-target "spec"))
197 (native-inputs (list ruby-multipart-parser ruby-rspec))
198 (propagated-inputs (list ruby-multipart-post))
199 (synopsis "Multipart-post requests extension for Faraday")
200 (description "This Ruby gem extends Faraday to perform multipart-post
201requests.")
202 (home-page "https://github.com/lostisland/faraday-multipart")
203 (license license:expat)))
204
205(define-public ruby-eventmachine-openssl
206 (package
207 (inherit ruby-eventmachine)
208 (inputs `(("openssl" ,openssl)))))
209
210(define-public ruby-countdownlatch
211 (package
212 (name "ruby-countdownlatch")
213 (version "1.0.0")
214 (source
215 (origin
216 (method url-fetch)
217 (uri (rubygems-uri "countdownlatch" version))
218 (sha256
219 (base32
220 "1v6pbay6z07fp7yvnba1hmyacbicvmjndd8rn2h1b5rmpcb5s0j3"))))
221 (build-system ruby-build-system)
222 (synopsis
223 "A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes")
224 (description
225 "This package provides a synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes")
226 (home-page
227 "https://github.com/benlangfeld/countdownlatch")
228 (license license:expat)))
229
230(define-public ruby-blather
231 (package
232 (name "ruby-blather")
233 (version "926da56cbb36ec63fe8fb74d1eafbb60a6c3cc91")
234 (source
235 (origin
236 (method git-fetch)
237 ;; Download from GitHub because the rubygems version requires old
238 ;; version of bundler Rakefile.
239 (uri (git-reference
240 (url "https://github.com/singpolyma/blather")
241 (commit version)))
242 (file-name (git-file-name name version))
243 (sha256
244 (base32
245 "0m3vvlhjaixi79fnp00jl7g69vd5kp40d3h83xvzamzdq1hfya03"))))
246 (build-system ruby-build-system)
247 (arguments
248 `(#:tests? #f #:phases
249 (modify-phases %standard-phases
250 (add-after 'extract-gemspec 'less-strict-dependencies
251 (lambda _
252 (substitute* "blather.gemspec"
253 ((".*guard-rspec.*") "\n")
254 ((".*bluecloth.*") "\n"))
255 #t)))))
256 (propagated-inputs
257 `(("ruby-activesupport" ,ruby-activesupport)
258 ("ruby-eventmachine" ,ruby-eventmachine)
259 ("ruby-niceogiri" ,ruby-niceogiri)
260 ("ruby-nokogiri" ,ruby-nokogiri)
261 ("ruby-sucker-punch" ,ruby-sucker-punch)))
262 (native-inputs
263 `(("ruby-rspec" ,ruby-rspec)
264 ("ruby-yard" ,ruby-yard)
265 ("ruby-countdownlatch" ,ruby-countdownlatch)
266 ("ruby-rb-fsevent" ,ruby-rb-fsevent)
267 ("ruby-mocha" ,ruby-mocha)))
268 (synopsis
269 "An XMPP DSL for Ruby written on top of EventMachine and Nokogiri")
270 (description
271 "An XMPP DSL for Ruby written on top of EventMachine and Nokogiri")
272 (home-page "http://adhearsion.com/blather")
273 (license license:expat)))
274
275(define-public ruby-rspec-junit-formatter
276 (package
277 (name "ruby-rspec-junit-formatter")
278 (version "0.6.0")
279 (source (origin
280 (method url-fetch)
281 (uri (rubygems-uri "rspec_junit_formatter" version))
282 (sha256
283 (base32
284 "059bnq1gcwl9g93cqf13zpz38zk7jxaa43anzz06qkmfwrsfdpa0"))))
285 (build-system ruby-build-system)
286 (arguments
287 `(#:tests? #f))
288 (propagated-inputs (list ruby-rspec-core))
289 (synopsis
290 "RSpec results that your continuous integration service can read.")
291 (description
292 "RSpec results that your continuous integration service can read.")
293 (home-page "https://github.com/sj26/rspec_junit_formatter")
294 (license license:expat)))
295
296(define-public ruby-braintree
297 (package
298 (name "ruby-braintree")
299 (version "4.12.0")
300 (source
301 (origin
302 (method git-fetch)
303 ;; Download from GitHub because the rubygems version does not contain
304 ;; Rakefile.
305 (uri (git-reference
306 (url "https://github.com/braintree/braintree_ruby")
307 (commit version)))
308 (file-name (git-file-name name version))
309 (sha256
310 (base32
311 "0gfgkymy3655drwgs42bj9ap9qib1l30sajxmypmp6s75m9w3gsh"))))
312 (build-system ruby-build-system)
313 (arguments
314 `(#:test-target "test:unit"
315 #:tests? #f
316 #:phases
317 (modify-phases %standard-phases
318 (add-after 'unpack 'less-strict-dependencies
319 (lambda _
320 (substitute* "Gemfile"
321 (("gem \"libxml-ruby\", \"3.2.0\"") "gem \"libxml-ruby\", \"~> 3.0.0\"")
322 (("gem \"rubocop\".*") "")
323 (("gem \"rake\", \"13.0.1\"") "gem \"rake\", \"~> 13.0.6\"")
324 (("gem \"rspec\", \"3.9.0\"") "gem \"rspec\", \"~> 3.12.0\"")
325 (("gem \"pry\", \"0.13.1\"") "gem \"pry\", \"~> 0.14.2\""))
326 (substitute* "Rakefile"
327 (("sh \"rubocop\"") "")))))))
328 (propagated-inputs
329 `(("ruby-builder" ,ruby-builder)
330 ("ruby-rexml" ,ruby-rexml)))
331 (native-inputs
332 (list
333 ruby-rspec
334 ruby-libxml
335 ruby-pry
336 ruby-rake
337 ruby-webrick
338 ruby-rspec-junit-formatter))
339 (synopsis
340 "Resources and tools for developers to integrate Braintree's global payments platform.")
341 (description
342 "Resources and tools for developers to integrate Braintree's global payments platform.")
343 (home-page "https://www.braintreepayments.com/")
344 (license license:expat)))
345
346(define-public ruby-value-semantics
347 (package
348 (name "ruby-value-semantics")
349 (version "a164e22449740775ed522c553999f7c04aa6ae85")
350 (source
351 (origin
352 (method git-fetch)
353 (uri (git-reference
354 (url "https://github.com/singpolyma/value_semantics")
355 (commit version)))
356 (file-name (git-file-name name version))
357 (sha256
358 (base32
359 "19fj4p6irmdiphp0z1r60b98d6j2gpfm84gawbc10bzm0zimlxns"))))
360 (build-system ruby-build-system)
361 (arguments
362 `(#:tests? #f))
363 (native-inputs
364 `(("ruby-rspec" ,ruby-rspec)))
365 (synopsis
366 "
367 Generates modules that provide conventional value semantics for a given set of attributes.
368 The behaviour is similar to an immutable `Struct` class,
369 plus extensible, lightweight validation and coercion.
370 ")
371 (description
372 "
373 Generates modules that provide conventional value semantics for a given set of attributes.
374 The behaviour is similar to an immutable `Struct` class,
375 plus extensible, lightweight validation and coercion.
376 ")
377 (home-page
378 "https://github.com/tomdalling/value_semantics")
379 (license license:expat)))
380
381(define-public ruby-promise.rb
382 (package
383 (name "ruby-promise.rb")
384 (version "0.7.4")
385 (source
386 (origin
387 (method url-fetch)
388 (uri (rubygems-uri "promise.rb" version))
389 (sha256
390 (base32
391 "0a819sikcqvhi8hck1y10d1nv2qkjvmmm553626fmrh51h2i089d"))))
392 (build-system ruby-build-system)
393 (arguments
394 `(#:test-target "spec"
395 #:phases
396 (modify-phases %standard-phases
397 (add-after 'extract-gemspec 'less-strict-dependencies
398 (lambda _
399 (substitute* "Rakefile"
400 (("if Gem.ruby_version.*") "if false\n"))
401 (substitute* "spec/spec_helper.rb"
402 ((".*devtools/spec_helper.*") "\n"))
403 #t)))))
404 (native-inputs
405 `(("ruby-rspec" ,ruby-rspec)
406 ("ruby-rspec-its" ,ruby-rspec-its)
407 ("ruby-awesome-print" ,ruby-awesome-print)
408 ("ruby-fuubar" ,ruby-fuubar)))
409 (synopsis "Promises/A+ for Ruby")
410 (description "Promises/A+ for Ruby")
411 (home-page "https://github.com/lgierth/promise")
412 (license license:unlicense)))
413
414(define-public ruby-multicodecs
415 (package
416 (name "ruby-multicodecs")
417 (version "0.2.1")
418 (source
419 (origin
420 (method url-fetch)
421 (uri (rubygems-uri "multicodecs" version))
422 (sha256
423 (base32
424 "0drq267di57l9zqw6zvqqimilz42rbc8z7392dwkk8wslq30s7v8"))))
425 (build-system ruby-build-system)
426 (synopsis
427 "This gem provides a PORO of the multicodec table for use with other
428 multiformat ruby gems.")
429 (description
430 "This gem provides a PORO of the multicodec table for use with other
431 multiformat ruby gems.")
432 (home-page
433 "https://github.com/SleeplessByte/ruby-multicodec")
434 (license license:expat)))
435
436(define-public ruby-multihashes
437 (package
438 (name "ruby-multihashes")
439 (version "0.2.0")
440 (source
441 (origin
442 (method url-fetch)
443 (uri (rubygems-uri "multihashes" version))
444 (sha256
445 (base32
446 "17wiyy3fiv8rpgdv9ca01yncsmaaf8yg15bg18wc7m9frss1vgqg"))))
447 (build-system ruby-build-system)
448 (propagated-inputs
449 `(("ruby-multicodecs" ,ruby-multicodecs)))
450 (synopsis
451 "A simple, low-level multihash (https://github.com/jbenet/multihash) implementation for ruby.")
452 (description
453 "This package provides a simple, low-level multihash (https://github.com/jbenet/multihash) implementation for ruby.")
454 (home-page
455 "https://github.com/neocities/ruby-multihashes")
456 (license license:expat)))
457
458(define-public ruby-lazy-object
459 (package
460 (name "ruby-lazy-object")
461 (version "0.0.3") ; move to 0.1.0 for ruby3
462 (source
463 (origin
464 (method url-fetch)
465 (uri (rubygems-uri "lazy_object" version))
466 (sha256
467 (base32
468 "08px15lahc28ik9smvw1hgamf792gd6gq0s4k94yq1h7jq25wjn8"))))
469 (build-system ruby-build-system)
470 (arguments
471 '(#:test-target "spec"))
472 (synopsis
473 "It's an object wrapper that forwards all calls to the reference object. This object is not created until the first method dispatch.")
474 (description
475 "It's an object wrapper that forwards all calls to the reference object. This object is not created until the first method dispatch.")
476 (home-page "")
477 (license license:expat)))
478
479(define-public ruby-citrus
480 (package
481 (name "ruby-citrus")
482 (version "3.0.2")
483 (source
484 (origin
485 (method git-fetch)
486 ;; Download from GitHub because the rubygems version does not contain
487 ;; files needed for tests
488 (uri (git-reference
489 (url "https://github.com/mjackson/citrus")
490 (commit (string-append "v" version))))
491 (file-name (git-file-name name version))
492 (sha256
493 (base32
494 "197wrgqrddgm1xs3yvjvd8vkvil4h4mdrcp16jmd4b57rxrrr769"))))
495 (build-system ruby-build-system)
496 (synopsis "Parsing Expressions for Ruby")
497 (description "Parsing Expressions for Ruby")
498 (home-page "http://mjackson.github.io/citrus")
499 (license license:expat)))
500
501(define-public ruby-cbor
502 (package
503 (name "ruby-cbor")
504 (version "0.5.9.6")
505 (source
506 (origin
507 (method url-fetch)
508 (uri (rubygems-uri "cbor" version))
509 (sha256
510 (base32
511 "0511idr8xps9625nh3kxr68sdy6l3xy2kcz7r57g47fxb1v18jj3"))))
512 (build-system ruby-build-system)
513 (arguments
514 '(#:test-target "spec"))
515 (native-inputs
516 `(("ruby-rspec" ,ruby-rspec)
517 ("ruby-rake-compiler" ,ruby-rake-compiler)
518 ("ruby-yard" ,ruby-yard)))
519 (synopsis
520 "CBOR is a library for the CBOR binary object representation format, based on Sadayuki Furuhashi's MessagePack library.")
521 (description
522 "CBOR is a library for the CBOR binary object representation format, based on Sadayuki Furuhashi's MessagePack library.")
523 (home-page "http://cbor.io/")
524 (license license:asl2.0)))
525
526(define-public ruby-gem-release
527 (package
528 (name "ruby-gem-release")
529 (version "2.2.2")
530 (source
531 (origin
532 (method url-fetch)
533 (uri (rubygems-uri "gem-release" version))
534 (sha256
535 (base32
536 "108rrfaiayi14zrqbb6z0cbwcxh8n15am5ry2a86v7c8c3niysq9"))))
537 (build-system ruby-build-system)
538 (arguments
539 ;; No rakefile
540 `(#:tests? #f))
541 (synopsis
542 "Release your ruby gems with ease. (What a bold statement for such a tiny plugin ...)")
543 (description
544 "Release your ruby gems with ease. (What a bold statement for such a tiny plugin ...)")
545 (home-page
546 "https://github.com/svenfuchs/gem-release")
547 (license license:expat)))
548
549(define-public ruby-base32
550 (package
551 (name "ruby-base32")
552 (version "0.3.4")
553 (source
554 (origin
555 (method url-fetch)
556 (uri (rubygems-uri "base32" version))
557 (sha256
558 (base32
559 "1fjs0l3c5g9qxwp43kcnhc45slx29yjb6m6jxbb2x1krgjmi166b"))))
560 (build-system ruby-build-system)
561 (native-inputs
562 `(("ruby-gem-release" ,ruby-gem-release)))
563 (synopsis
564 "Ruby extension for base32 encoding and decoding")
565 (description
566 "Ruby extension for base32 encoding and decoding")
567 (home-page "https://github.com/stesla/base32")
568 (license license:expat)))
569
570(define-public ruby-dhall
571 (package
572 (name "ruby-dhall")
573 (version "0.5.7")
574 (source
575 (origin
576 (method url-fetch)
577 (uri (rubygems-uri "dhall" version))
578 (sha256
579 (base32
580 "1fmd4jfd66sdyihqigc2vgdjzjy7gi513gjmwz07rds7f7x70fsq"))))
581 (build-system ruby-build-system)
582 (arguments
583 ;; No test in gem archive
584 `(#:tests? #f))
585 (propagated-inputs
586 `(("ruby-base32" ,ruby-base32)
587 ("ruby-cbor" ,ruby-cbor)
588 ("ruby-citrus" ,ruby-citrus)
589 ("ruby-lazy-object" ,ruby-lazy-object)
590 ("ruby-multihashes" ,ruby-multihashes)
591 ("ruby-promise.rb" ,ruby-promise.rb)
592 ("ruby-value-semantics" ,ruby-value-semantics)))
593 (synopsis
594 "This is a Ruby implementation of the Dhall configuration language. Dhall is a powerful, but safe and non-Turing-complete configuration language. For more information, see: https://dhall-lang.org")
595 (description
596 "This is a Ruby implementation of the Dhall configuration language. Dhall is a powerful, but safe and non-Turing-complete configuration language. For more information, see: https://dhall-lang.org")
597 (home-page
598 "https://git.sr.ht/~singpolyma/dhall-ruby")
599 (license license:gpl3)))
600
601(define-public ruby-money
602 (package
603 (name "ruby-money")
604 (version "6.16.0")
605 (source
606 (origin
607 (method url-fetch)
608 (uri (rubygems-uri "money" version))
609 (sha256
610 (base32
611 "0jkmsj5ymadik7bvl670bqwmvhsdyv7hjr8gq9z293hq35gnyiyg"))))
612 (build-system ruby-build-system)
613 (arguments
614 ;; No rakefile
615 `(#:tests? #f))
616 (propagated-inputs `(("ruby-i18n" ,ruby-i18n)))
617 (synopsis
618 "A Ruby Library for dealing with money and currency conversion.")
619 (description
620 "This package provides a Ruby Library for dealing with money and currency conversion.")
621 (home-page "https://rubymoney.github.io/money")
622 (license license:expat)))
623
624(define-public ruby-monetize
625 (package
626 (name "ruby-monetize")
627 (version "1.11.0")
628 (source
629 (origin
630 (method url-fetch)
631 (uri (rubygems-uri "monetize" version))
632 (sha256
633 (base32
634 "0cna2myxdbwfq0gn6k2hgrh368dq7wld3jklm96443ysykd0difn"))))
635 (build-system ruby-build-system)
636 (arguments
637 '(#:test-target "spec"))
638 (native-inputs
639 `(("ruby-rspec" ,ruby-rspec)))
640 (propagated-inputs `(("ruby-money" ,ruby-money)))
641 (synopsis
642 "A library for converting various objects into `Money` objects.")
643 (description
644 "This package provides a library for converting various objects into `Money` objects.")
645 (home-page
646 "https://github.com/RubyMoney/monetize")
647 (license license:expat)))
648
649(define-public ruby-money-open-exchange-rates
650 (package
651 (name "ruby-money-open-exchange-rates")
652 (version "1.4.0")
653 (source
654 (origin
655 (method git-fetch)
656 ;; Download from GitHub because the rubygems version does not contain
657 ;; Rakefile.
658 (uri (git-reference
659 (url "https://github.com/spk/money-open-exchange-rates")
660 (commit (string-append "v" version))))
661 (file-name (git-file-name name version))
662 (sha256
663 (base32
664 "11xwqli8snr19k48yh8h77sal5vxd4snzq9gxg08v61f0574m3gw"))))
665 (build-system ruby-build-system)
666 (propagated-inputs `(("ruby-money" ,ruby-money)))
667 (native-inputs
668 `(("ruby-minitest" ,ruby-minitest)
669 ("ruby-mocha" ,ruby-mocha)
670 ("ruby-timecop" ,ruby-timecop)
671 ("ruby-webmock" ,ruby-webmock)
672 ("ruby-monetize" ,ruby-monetize)
673 ("ruby-rake" ,ruby-rake)
674 ("ruby-rubocop" ,ruby-rubocop)))
675 (synopsis
676 "A gem that calculates the exchange rate using published rates from open-exchange-rates. Compatible with the money gem.")
677 (description
678 "This package provides a gem that calculates the exchange rate using published rates from open-exchange-rates. Compatible with the money gem.")
679 (home-page
680 "http://github.com/spk/money-open-exchange-rates")
681 (license license:expat)))
682
683(define-public ruby-roda
684 (package
685 (name "ruby-roda")
686 (version "3.47.0")
687 (source
688 (origin
689 (method url-fetch)
690 (uri (rubygems-uri "roda" version))
691 (sha256
692 (base32
693 "1g3zs4bk8hqii15ci1hsykcsya88vr2qv63gp1qbcx4bm14l8lkl"))))
694 (build-system ruby-build-system)
695 (arguments
696 ;; No rakefile
697 `(#:tests? #f))
698 (propagated-inputs `(("ruby-rack" ,ruby-rack)))
699 (synopsis "Routing tree web toolkit")
700 (description "Routing tree web toolkit")
701 (home-page "http://roda.jeremyevans.net")
702 (license license:expat)))
703
704(define-public ruby-nori
705 (package
706 (name "ruby-nori")
707 (version "2.6.0")
708 (source
709 (origin
710 (method url-fetch)
711 (uri (rubygems-uri "nori" version))
712 (sha256
713 (base32
714 "066wc774a2zp4vrq3k7k8p0fhv30ymqmxma1jj7yg5735zls8agn"))))
715 (build-system ruby-build-system)
716 (arguments
717 ;; Tests require too old version of rspec
718 `(#:tests? #f))
719 (native-inputs
720 `(("ruby-rspec" ,ruby-rspec)
721 ("ruby-rake" ,ruby-rake)
722 ("ruby-nokogiri" ,ruby-nokogiri)))
723 (synopsis "XML to Hash translator")
724 (description "XML to Hash translator")
725 (home-page "https://github.com/savonrb/nori")
726 (license license:expat)))
727
728(define-public ruby-faraday-middleware
729 (package
730 (name "ruby-faraday-middleware")
731 (version "1.1.0")
732 (source
733 (origin
734 (method url-fetch)
735 (uri (rubygems-uri "faraday_middleware" version))
736 (sha256
737 (base32
738 "0kgcphf7n74l3wlcvxafcp6a4l18b1bf4qslvz5dqj6v3gc8h8j4"))))
739 (build-system ruby-build-system)
740 (arguments
741 ;; No rakefile
742 `(#:tests? #f))
743 (propagated-inputs
744 `(("ruby-faraday" ,ruby-faraday)))
745 (synopsis "Various middleware for Faraday")
746 (description "Various middleware for Faraday")
747 (home-page
748 "https://github.com/lostisland/faraday_middleware")
749 (license license:expat)))
750
751(define-public ruby-faraday-follow-redirects
752 (package
753 (name "ruby-faraday-follow-redirects")
754 (version "0.5.0")
755 (source
756 (origin
757 (method url-fetch)
758 (uri (rubygems-uri "faraday-follow_redirects" version))
759 (sha256
760 (base32 "1b8hgpci3wjm3rm41bzpasvsc5j253ljyg5rsajl62dkjk497pjw"))))
761 (build-system ruby-build-system)
762 (arguments
763 `(#:tests? #f))
764 (propagated-inputs (list ruby-faraday))
765 (synopsis
766 "Faraday 1.x and 2.x compatible extraction of FaradayMiddleware::FollowRedirects.
767")
768 (description "Faraday 1.x and 2.x compatible extraction of
769@code{FaradayMiddleware::FollowRedirects}.")
770 (home-page "https://github.com/tisba/faraday-follow-redirects")
771 (license license:expat)))
772
773(define-public ruby-bandwidth-iris
774 (package
775 (name "ruby-bandwidth-iris")
776 (version "7.4.0")
777 (source
778 (origin
779 (method url-fetch)
780 (uri (rubygems-uri "ruby-bandwidth-iris" version))
781 (sha256
782 (base32 "1vixiw22jc57imsv5va0vb4h1ylqr3kf90az1q9k049wgf6ipqkn"))))
783 (build-system ruby-build-system)
784 (arguments
785 ; Tests don't require helper for some reason, so all fail...
786 '(#:tests? #f))
787 (propagated-inputs (list ruby-activesupport ruby-builder ruby-faraday
788 ruby-faraday-follow-redirects ruby-rexml))
789 (synopsis "Gem for integrating to Bandwidth's Iris API")
790 (description "Gem for integrating to Bandwidth's Iris API.")
791 (home-page "https://github.com/bandwidthcom/ruby-bandwidth-iris")
792 (license license:expat)))
793
794(define-public ruby-sentry-core
795 (package
796 (name "ruby-sentry-core")
797 (version "4.3.1")
798 (source
799 (origin
800 (method url-fetch)
801 (uri (rubygems-uri "sentry-ruby-core" version))
802 (sha256
803 (base32
804 "13z35s9mflh3v775a0scsnqhscz9q46kaak38y7zmx32z7sg2a3a"))))
805 (build-system ruby-build-system)
806 (arguments
807 ; No rakefile in gem
808 '(#:tests? #f))
809 (propagated-inputs
810 `(("ruby-concurrent" ,ruby-concurrent)
811 ("ruby-faraday" ,ruby-faraday)))
812 (synopsis
813 "A gem that provides a client interface for the Sentry error logger")
814 (description
815 "This package provides a gem that provides a client interface for the Sentry error logger")
816 (home-page
817 "https://github.com/getsentry/sentry-ruby")
818 (license license:expat)))
819
820(define-public ruby-sentry
821 (package
822 (name "ruby-sentry")
823 (version "4.3.1")
824 (source
825 (origin
826 (method url-fetch)
827 (uri (rubygems-uri "sentry-ruby" version))
828 (sha256
829 (base32
830 "101q3141xfkmh7vi8h4sjqqmxcx90xhyq51lmfnhfiwgii7cn9k8"))))
831 (build-system ruby-build-system)
832 (arguments
833 ; No rakefile in gem
834 '(#:tests? #f))
835 (propagated-inputs
836 `(("ruby-concurrent" ,ruby-concurrent)
837 ("ruby-faraday" ,ruby-faraday)
838 ("ruby-sentry-core" ,ruby-sentry-core)))
839 (synopsis
840 "A gem that provides a client interface for the Sentry error logger")
841 (description
842 "This package provides a gem that provides a client interface for the Sentry error logger")
843 (home-page
844 "https://github.com/getsentry/sentry-ruby")
845 (license license:expat)))
846
847(define-public ruby-webrick
848 (package
849 (name "ruby-webrick")
850 (version "1.7.0")
851 (source
852 (origin
853 (method url-fetch)
854 (uri (rubygems-uri "webrick" version))
855 (sha256
856 (base32
857 "1d4cvgmxhfczxiq5fr534lmizkhigd15bsx5719r5ds7k7ivisc7"))))
858 (build-system ruby-build-system)
859 (synopsis
860 "WEBrick is an HTTP server toolkit that can be configured as an HTTPS server, a proxy server, and a virtual-host server.")
861 (description
862 "WEBrick is an HTTP server toolkit that can be configured as an HTTPS server, a proxy server, and a virtual-host server.")
863 (home-page "https://github.com/ruby/webrick")
864 (license #f)))
865
866(define-public ruby-interception
867 (package
868 (name "ruby-interception")
869 (version "0.5")
870 (source
871 (origin
872 (method url-fetch)
873 (uri (rubygems-uri "interception" version))
874 (sha256
875 (base32
876 "01vrkn28psdx1ysh5js3hn17nfp1nvvv46wc1pwqsakm6vb1hf55"))))
877 (build-system ruby-build-system)
878 (native-inputs
879 `(("ruby-rspec" ,ruby-rspec)))
880 (synopsis
881 "Provides a cross-platform ability to intercept all exceptions as they are raised.")
882 (description
883 "This package provides a cross-platform ability to intercept all exceptions as they are raised.")
884 (home-page
885 "http://github.com/ConradIrwin/interception")
886 (license license:expat)))
887
888(define-public ruby-pry-rescue
889 (package
890 (name "ruby-pry-rescue")
891 (version "1.5.2")
892 (source
893 (origin
894 (method url-fetch)
895 (uri (rubygems-uri "pry-rescue" version))
896 (sha256
897 (base32
898 "1wn72y8y3d3g0ng350ld92nyjln012432q2z2iy9lhwzjc4dwi65"))))
899 (build-system ruby-build-system)
900 (arguments
901 `(#:phases
902 (modify-phases %standard-phases
903 (add-after 'unpack 'nuke-bad-test
904 (lambda _
905 (substitute* "spec/source_location_spec.rb"
906 (("time = Time.now") "skip"))
907 #t)))))
908 (propagated-inputs
909 `(("ruby-interception" ,ruby-interception)
910 ("ruby-pry" ,ruby-pry)))
911 (native-inputs
912 `(("ruby-rspec" ,ruby-rspec)
913 ("ruby-pry-stack-explorer" ,ruby-pry-stack-explorer)))
914 (synopsis
915 "Allows you to wrap code in Pry::rescue{ } to open a pry session at any unhandled exceptions")
916 (description
917 "Allows you to wrap code in Pry::rescue{ } to open a pry session at any unhandled exceptions")
918 (home-page
919 "https://github.com/ConradIrwin/pry-rescue")
920 (license license:expat)))
921
922(define-public ruby-rantly
923 (package
924 (name "ruby-rantly")
925 (version "2.0.0")
926 (source
927 (origin
928 (method url-fetch)
929 (uri (rubygems-uri "rantly" version))
930 (sha256
931 (base32
932 "11407cg0dzz83jsschnrpi9cqwz8b04q6bj6qj3m70ay52y222ix"))))
933 (build-system ruby-build-system)
934 (native-inputs
935 `(("ruby-rubocop" ,ruby-rubocop)
936 ("ruby-simplecov" ,ruby-simplecov)))
937 (synopsis
938 "Ruby Imperative Random Data Generator and Quickcheck")
939 (description
940 "Ruby Imperative Random Data Generator and Quickcheck")
941 (home-page "https://github.com/rantly-rb/rantly")
942 (license license:expat)))
943
944(define-public ruby-em-promise.rb
945 (package
946 (name "ruby-em-promise.rb")
947 (version "0.0.5")
948 (source (origin
949 (method url-fetch)
950 (uri (rubygems-uri "em_promise.rb" version))
951 (sha256
952 (base32
953 "00rkmacyf6i2gq0giaxzwr24ygrwwzndrq7kkbpqcq9glk01w692"))))
954 (build-system ruby-build-system)
955 (arguments
956 ;; No rakefile
957 `(#:tests? #f))
958 (propagated-inputs (list ruby-eventmachine ruby-promise.rb))
959 (synopsis "A subclass of promise.rb Promise for EventMachine.")
960 (description
961 "This package provides a subclass of promise.rb Promise for EventMachine.")
962 (home-page "https://git.singpolyma.net/em_promise.rb")
963 (license #f)))
964
965(define-public ruby-em-socksify
966 (package
967 (name "ruby-em-socksify")
968 (version "0.3.2")
969 (source (origin
970 (method url-fetch)
971 (uri (rubygems-uri "em-socksify" version))
972 (sha256
973 (base32
974 "0rk43ywaanfrd8180d98287xv2pxyl7llj291cwy87g1s735d5nk"))))
975 (build-system ruby-build-system)
976 (arguments
977 ;; Tests are broken
978 `(#:tests? #f))
979 (propagated-inputs (list ruby-eventmachine))
980 (synopsis "Transparent proxy support for any EventMachine protocol")
981 (description "Transparent proxy support for any EventMachine protocol")
982 (home-page "https://github.com/igrigorik/em-socksify")
983 (license license:expat)))
984
985(define-public ruby-rspec-collection-matchers
986 (package
987 (name "ruby-rspec-collection-matchers")
988 (version "1.2.0")
989 (source (origin
990 (method url-fetch)
991 (uri (rubygems-uri "rspec-collection_matchers" version))
992 (sha256
993 (base32
994 "1864xlxl7mi6mvjyp85a0gc10cyvpf6bj8lc86sf8737wlzn12ks"))))
995 (build-system ruby-build-system)
996 (arguments
997 ;; No rakefile
998 `(#:tests? #f))
999 (propagated-inputs (list ruby-rspec-expectations))
1000 (synopsis
1001 "Collection cardinality matchers, extracted from rspec-expectations")
1002 (description
1003 "Collection cardinality matchers, extracted from rspec-expectations")
1004 (home-page "https://github.com/rspec/rspec-collection_matchers")
1005 (license license:expat)))
1006
1007(define-public ruby-cookiejar
1008 (package
1009 (name "ruby-cookiejar")
1010 (version "0.3.3")
1011 (source (origin
1012 (method url-fetch)
1013 (uri (rubygems-uri "cookiejar" version))
1014 (sha256
1015 (base32
1016 "0q0kmbks9l3hl0wdq744hzy97ssq9dvlzywyqv9k9y1p3qc9va2a"))))
1017 (build-system ruby-build-system)
1018 (native-inputs
1019 `(("ruby-rspec" ,ruby-rspec)
1020 ("ruby-rspec-collection-matchers" ,ruby-rspec-collection-matchers)
1021 ("ruby-yard" ,ruby-yard)))
1022 (synopsis
1023 "Allows for parsing and returning cookies in Ruby HTTP client code")
1024 (description
1025 "Allows for parsing and returning cookies in Ruby HTTP client code")
1026 (home-page "http://alkaline-solutions.com")
1027 (license #f)))
1028
1029(define-public ruby-em-http-request
1030 (package
1031 (name "ruby-em-http-request")
1032 (version "b51f48fafa6443ad48c89930716c5c427561abd8")
1033 (source
1034 (origin
1035 (method git-fetch)
1036 (uri (git-reference
1037 (url "https://github.com/singpolyma/em-http-request")
1038 (commit version)))
1039 (file-name (git-file-name name version))
1040 (sha256
1041 (base32
1042 "1kbaghj1gqz1dpl2hikpa4xggfmavma2y442yzsgqk27gmfp9iqq"))))
1043 (build-system ruby-build-system)
1044 (arguments
1045 ;; Tests need a whole other set of dependencies
1046 `(#:tests? #f))
1047 (propagated-inputs (list ruby-addressable ruby-cookiejar ruby-em-socksify
1048 ruby-eventmachine ruby-http-parser.rb))
1049 (synopsis "EventMachine based, async HTTP Request client")
1050 (description "EventMachine based, async HTTP Request client")
1051 (home-page "http://github.com/igrigorik/em-http-request")
1052 (license license:expat)))
1053
1054(define-public ruby-em-synchrony
1055 (package
1056 (name "ruby-em-synchrony")
1057 (version "1.0.6")
1058 (source (origin
1059 (method url-fetch)
1060 (uri (rubygems-uri "em-synchrony" version))
1061 (sha256
1062 (base32
1063 "1jh6ygbcvapmarqiap79i6yl05bicldr2lnmc46w1fyrhjk70x3f"))))
1064 (build-system ruby-build-system)
1065 (arguments
1066 ;; Tests need a whole other set of dependencies
1067 `(#:tests? #f))
1068 (propagated-inputs (list ruby-eventmachine))
1069 (synopsis "Fiber aware EventMachine libraries")
1070 (description "Fiber aware EventMachine libraries")
1071 (home-page "http://github.com/igrigorik/em-synchrony")
1072 (license license:expat)))
1073
1074(define-public ruby-amazing-print
1075 (package
1076 (name "ruby-amazing-print")
1077 (version "1.5.0")
1078 (source
1079 (origin
1080 (method url-fetch)
1081 (uri (rubygems-uri "amazing_print" version))
1082 (sha256
1083 (base32 "0qik1igcs0ylw5b5dwx9npqac5r21d9fcv611h7klcspfari3x7r"))))
1084 (build-system ruby-build-system)
1085 (arguments
1086 `(#:tests? #f))
1087 (synopsis
1088 "Great Ruby debugging companion: pretty print Ruby objects to visualize their structure. Supports custom object formatting via plugins")
1089 (description
1090 "Great Ruby debugging companion: pretty print Ruby objects to visualize their
1091structure. Supports custom object formatting via plugins")
1092 (home-page "https://github.com/amazing-print/amazing_print")
1093 (license license:expat)))
1094
1095(define-public ruby-little-plugger
1096 (package
1097 (name "ruby-little-plugger")
1098 (version "1.1.4")
1099 (source
1100 (origin
1101 (method url-fetch)
1102 (uri (rubygems-uri "little-plugger" version))
1103 (sha256
1104 (base32 "1frilv82dyxnlg8k1jhrvyd73l6k17mxc5vwxx080r4x1p04gwym"))))
1105 (build-system ruby-build-system)
1106 (arguments
1107 `(#:tests? #f))
1108 (synopsis
1109 "LittlePlugger is a module that provides Gem based plugin management.
1110By extending your own class or module with LittlePlugger you can easily
1111manage the loading and initializing of plugins provided by other gems.")
1112 (description
1113 "@code{LittlePlugger} is a module that provides Gem based plugin management. By
1114extending your own class or module with @code{LittlePlugger} you can easily
1115manage the loading and initializing of plugins provided by other gems.")
1116 (home-page "http://gemcutter.org/gems/little-plugger")
1117 (license #f)))
1118
1119(define-public ruby-logging
1120 (package
1121 (name "ruby-logging")
1122 (version "2.3.1")
1123 (source
1124 (origin
1125 (method url-fetch)
1126 (uri (rubygems-uri "logging" version))
1127 (sha256
1128 (base32 "1zflchpx4g8c110gjdcs540bk5a336nq6nmx379rdg56xw0pjd02"))))
1129 (build-system ruby-build-system)
1130 (arguments
1131 `(#:tests? #f))
1132 (propagated-inputs (list ruby-little-plugger ruby-multi-json))
1133 (synopsis
1134 "**Logging** is a flexible logging library for use in Ruby programs based on the
1135design of Java's log4j library. It features a hierarchical logging system,
1136custom level names, multiple output destinations per log event, custom
1137formatting, and more.")
1138 (description
1139 "**Logging** is a flexible logging library for use in Ruby programs based on the
1140design of Java's log4j library. It features a hierarchical logging system,
1141custom level names, multiple output destinations per log event, custom
1142formatting, and more.")
1143 (home-page "http://rubygems.org/gems/logging")
1144 (license #f)))
1145
1146(define-public ruby-faraday-http-cache
1147 (package
1148 (name "ruby-faraday-http-cache")
1149 (version "2.5.1")
1150 (source
1151 (origin
1152 (method url-fetch)
1153 (uri (rubygems-uri "faraday-http-cache" version))
1154 (sha256
1155 (base32 "10wld3vk3i8zsr3pa9zyjiyi2zlyyln872812f08bbg1hnd15z6b"))))
1156 (build-system ruby-build-system)
1157 (arguments
1158 `(#:tests? #f))
1159 (propagated-inputs (list ruby-faraday))
1160 (synopsis "Middleware to handle HTTP caching")
1161 (description "Middleware to handle HTTP caching")
1162 (home-page "https://github.com/sourcelevel/faraday-http-cache")
1163 (license #f)))
1164
1165(define-public ruby-certifi
1166 (package
1167 (name "ruby-certifi")
1168 (version "2018.01.18")
1169 (source
1170 (origin
1171 (method url-fetch)
1172 (uri (rubygems-uri "certifi" version))
1173 (sha256
1174 (base32 "1qz95jaw1c2n61dnfxx70hncrhadjxm4j8wqhaj5alh44x5g1bym"))))
1175 (build-system ruby-build-system)
1176 (arguments
1177 `(#:tests? #f))
1178 (synopsis "Rubygem for providing Mozilla's CA Bundle")
1179 (description "Rubygem for providing Mozilla's CA Bundle")
1180 (home-page "http://certifi.io/")
1181 (license #f)))
1182
1183(define-public ruby-bandwidth-sdk
1184 (package
1185 (name "ruby-bandwidth-sdk")
1186 (version "17.3.0")
1187 (source
1188 (origin
1189 (method url-fetch)
1190 (uri (rubygems-uri "bandwidth-sdk" version))
1191 (sha256
1192 (base32 "0i2fihf2wg975nicqw4r0iji48qkfdnhjd6b5v56422slhxd7zz1"))))
1193 (build-system ruby-build-system)
1194 (arguments
1195 `(#:tests? #f))
1196 (propagated-inputs (list ruby-faraday ruby-faraday-multipart ruby-marcel
1197 ruby-ox))
1198 (synopsis
1199 "The official client SDK for Bandwidth's Voice, Messaging, MFA, and WebRTC APIs")
1200 (description
1201 "The official client SDK for Bandwidth's Voice, Messaging, MFA, and
1202@code{WebRTC} APIs.")
1203 (home-page "https://github.com/Bandwidth/ruby-sdk")
1204 (license license:expat)))
1205
1206(define-public ruby-unaccent
1207 (package
1208 (name "ruby-unaccent")
1209 (version "0.4.0")
1210 (source
1211 (origin
1212 (method url-fetch)
1213 (uri (rubygems-uri "unaccent" version))
1214 (sha256
1215 (base32 "0cvk3vhs95123r4faa60vqknishx3r6fiy2kq0bm7p3f04q849yr"))))
1216 (build-system ruby-build-system)
1217 (arguments
1218 `(#:tests? #f))
1219 (synopsis "Replace accented characters with unaccented characters.")
1220 (description "Replace accented characters with unaccented characters.")
1221 (home-page "https://github.com/hardpixel/unaccent")
1222 (license license:expat)))
1223
1224(define-public ruby-countries
1225 (package
1226 (name "ruby-countries")
1227 (version "5.7.1")
1228 (source
1229 (origin
1230 (method url-fetch)
1231 (uri (rubygems-uri "countries" version))
1232 (sha256
1233 (base32 "0wwjvwfbfbkhablr45k7aaib7jx5j1k6ii3wi6p3x0fq9f903q88"))))
1234 (build-system ruby-build-system)
1235 (arguments
1236 `(#:tests? #f))
1237 (propagated-inputs (list ruby-unaccent))
1238 (synopsis
1239 "All sorts of useful information about every country packaged as pretty little country objects. It includes data from ISO 3166")
1240 (description
1241 "All sorts of useful information about every country packaged as pretty little
1242country objects. It includes data from ISO 3166")
1243 (home-page "https://github.com/countries/countries")
1244 (license license:expat)))
1245
1246(define-public ruby-em-hiredis
1247 (package
1248 (name "ruby-em-hiredis")
1249 (version "0.3.1")
1250 (source
1251 (origin
1252 (method url-fetch)
1253 (uri (rubygems-uri "em-hiredis" version))
1254 (sha256
1255 (base32 "0lh276x6wngq9xy75fzzvciinmdlys93db7chy968i18japghk6z"))))
1256 (build-system ruby-build-system)
1257 (arguments
1258 `(#:tests? #f))
1259 (propagated-inputs (list ruby-eventmachine ruby-hiredis))
1260 (synopsis "Eventmachine redis client using hiredis native parser")
1261 (description "Eventmachine redis client using hiredis native parser")
1262 (home-page "http://github.com/mloughran/em-hiredis")
1263 (license #f)))
1264
1265(define-public ruby-em-pg-client
1266 (package
1267 (name "ruby-em-pg-client")
1268 (version "a32daf9c25ac9c44e73e843e80125e0fb4c2a8f1")
1269 (source
1270 (origin
1271 (method git-fetch)
1272 (uri (git-reference
1273 (url "https://github.com/singpolyma/ruby-em-pg-client")
1274 (commit version)))
1275 (file-name (git-file-name name version))
1276 (sha256
1277 (base32
1278 "0c3vxy5cv5xiaxbbv9b1kdasbh6h865f6fl269fi327x0fdnyk15"))))
1279 (build-system ruby-build-system)
1280 (arguments
1281 `(#:tests? #f))
1282 (propagated-inputs (list ruby-eventmachine ruby-pg))
1283 (synopsis
1284 "PostgreSQL asynchronous EventMachine client, based on pg interface (PG::Connection)")
1285 (description
1286 "@code{PostgreSQL} asynchronous @code{EventMachine} client, based on pg interface
1287(PG::Connection)")
1288 (home-page "http://github.com/royaltm/ruby-em-pg-client")
1289 (license license:expat)))
1290
1291(define-public ruby-faraday-em-http
1292 (package
1293 (name "ruby-faraday-em-http")
1294 (version "14a06dc1431429ff5e6291bc6f671db0c3a636a5")
1295 (source
1296 (origin
1297 (method git-fetch)
1298 (uri (git-reference
1299 (url "https://github.com/Amolith/faraday-em_http")
1300 (commit version)))
1301 (file-name (git-file-name name version))
1302 (sha256
1303 (base32
1304 "16nnsvyr7n2rw84zcw5n5aidhs4k6rrdhzf6002wqfj85mymxp7s"))))
1305 (build-system ruby-build-system)
1306 (arguments
1307 `(#:tests? #f))
1308 (synopsis "Faraday adapter for Em::Http")
1309 (description "Faraday adapter for Em::Http")
1310 (home-page "https://github.com/lostisland/faraday-em_http")
1311 (license license:expat)))
1312
1313(define-public ruby-faraday-retry
1314 (package
1315 (name "ruby-faraday-retry")
1316 (version "1.0.3")
1317 (source
1318 (origin
1319 (method url-fetch)
1320 (uri (rubygems-uri "faraday-retry" version))
1321 (sha256
1322 (base32 "153i967yrwnswqgvnnajgwp981k9p50ys1h80yz3q94rygs59ldd"))))
1323 (build-system ruby-build-system)
1324 (arguments
1325 `(#:tests? #f))
1326 (synopsis
1327 "Catches exceptions and retries each request a limited number of times.
1328")
1329 (description
1330 "Catches exceptions and retries each request a limited number of times.")
1331 (home-page "https://github.com/lostisland/faraday-retry")
1332 (license license:expat)))
1333
1334(define-public ruby-faraday-rack
1335 (package
1336 (name "ruby-faraday-rack")
1337 (version "1.0.0")
1338 (source
1339 (origin
1340 (method url-fetch)
1341 (uri (rubygems-uri "faraday-rack" version))
1342 (sha256
1343 (base32 "1h184g4vqql5jv9s9im6igy00jp6mrah2h14py6mpf9bkabfqq7g"))))
1344 (build-system ruby-build-system)
1345 (arguments
1346 `(#:tests? #f))
1347 (synopsis "Faraday adapter for Rack")
1348 (description "Faraday adapter for Rack")
1349 (home-page "https://github.com/lostisland/faraday-rack")
1350 (license license:expat)))
1351
1352(define-public ruby-faraday-patron
1353 (package
1354 (name "ruby-faraday-patron")
1355 (version "1.0.0")
1356 (source
1357 (origin
1358 (method url-fetch)
1359 (uri (rubygems-uri "faraday-patron" version))
1360 (sha256
1361 (base32 "19wgsgfq0xkski1g7m96snv39la3zxz6x7nbdgiwhg5v82rxfb6w"))))
1362 (build-system ruby-build-system)
1363 (arguments
1364 `(#:tests? #f))
1365 (propagated-inputs (list ruby-patron))
1366 (synopsis "Faraday adapter for Patron")
1367 (description "Faraday adapter for Patron")
1368 (home-page "https://github.com/lostisland/faraday-patron")
1369 (license license:expat)))
1370
1371(define-public ruby-faraday-net-http
1372 (package
1373 (name "ruby-faraday-net-http")
1374 (version "3.0.0")
1375 (source
1376 (origin
1377 (method url-fetch)
1378 (uri (rubygems-uri "faraday-net_http" version))
1379 (sha256
1380 (base32 "0yicplzlh5da8pr64286zga3my86cjsb2y9dqlzsacpw8hbkmjvw"))))
1381 (build-system ruby-build-system)
1382 (arguments
1383 `(#:tests? #f))
1384 ;(propagated-inputs (list ruby-net-http))
1385 (synopsis "Faraday adapter for Net::HTTP")
1386 (description "Faraday adapter for Net::HTTP.")
1387 (home-page "https://github.com/lostisland/faraday-net_http")
1388 (license license:expat)))
1389
1390(define-public ruby-faraday-net-http-persistent
1391 (package
1392 (name "ruby-faraday-net-http-persistent")
1393 (version "1.2.0")
1394 (source
1395 (origin
1396 (method url-fetch)
1397 (uri (rubygems-uri "faraday-net_http_persistent" version))
1398 (sha256
1399 (base32 "0dc36ih95qw3rlccffcb0vgxjhmipsvxhn6cw71l7ffs0f7vq30b"))))
1400 (build-system ruby-build-system)
1401 (arguments
1402 `(#:tests? #f))
1403 (propagated-inputs (list ruby-net-http-persistent))
1404 (synopsis "Faraday adapter for NetHttpPersistent")
1405 (description "Faraday adapter for @code{NetHttpPersistent}")
1406 (home-page "https://github.com/lostisland/faraday-net_http_persistent")
1407 (license license:expat)))
1408
1409(define-public ruby-excon
1410 (package
1411 (name "ruby-excon")
1412 (version "0.109.0")
1413 (source
1414 (origin
1415 (method url-fetch)
1416 (uri (rubygems-uri "excon" version))
1417 (sha256
1418 (base32 "1kmmwgjzlrnc3nnrdnw1z67c95nbw0hv54a73yj8jw6pcvl9585x"))))
1419 (build-system ruby-build-system)
1420 (arguments
1421 `(#:tests? #f))
1422 (synopsis "EXtended http(s) CONnections")
1423 (description "EXtended http(s) CONnections")
1424 (home-page "https://github.com/excon/excon")
1425 (license license:expat)))
1426
1427(define-public ruby-faraday-excon
1428 (package
1429 (name "ruby-faraday-excon")
1430 (version "1.1.0")
1431 (source
1432 (origin
1433 (method url-fetch)
1434 (uri (rubygems-uri "faraday-excon" version))
1435 (sha256
1436 (base32 "0h09wkb0k0bhm6dqsd47ac601qiaah8qdzjh8gvxfd376x1chmdh"))))
1437 (build-system ruby-build-system)
1438 (arguments
1439 `(#:tests? #f))
1440 (propagated-inputs (list ruby-excon))
1441 (synopsis "Faraday adapter for Excon")
1442 (description "Faraday adapter for Excon")
1443 (home-page "https://github.com/lostisland/faraday-excon")
1444 (license license:expat)))
1445
1446(define-public ruby-faraday-em-synchrony
1447 (package
1448 (name "ruby-faraday-em-synchrony")
1449 (version "b45e3d62e9fa4e5765806754c167be4b9b8f1168")
1450 (source
1451 (origin
1452 (method git-fetch)
1453 (uri (git-reference
1454 (url "https://github.com/Amolith/faraday-em_synchrony")
1455 (commit version)))
1456 (file-name (git-file-name name version))
1457 (sha256
1458 (base32
1459 "1lczay8fmg26wrkny48cn8w4nsp92frinag17sa40chfdm8ylzwn"))))
1460 (build-system ruby-build-system)
1461 (arguments
1462 `(#:tests? #f))
1463 (synopsis "Faraday adapter for EM::Synchrony")
1464 (description "Faraday adapter for EM::Synchrony")
1465 (home-page "https://github.com/lostisland/faraday-em_synchrony")
1466 (license license:expat)))
1467
1468(define-public ruby-faraday
1469 (package
1470 (name "ruby-faraday")
1471 (version "2.8.0")
1472 (source
1473 (origin
1474 (method url-fetch)
1475 (uri (rubygems-uri "faraday" version))
1476 (sha256
1477 (base32 "0nndw6c9rn7bqkzq44ay48qyhbsvg32wd0isy4gxpva1s7v17wy8"))))
1478 (build-system ruby-build-system)
1479 (arguments
1480 `(#:tests? #f))
1481 (propagated-inputs (list ruby-faraday-em-http
1482 ruby-faraday-em-synchrony
1483 ruby-faraday-net-http
1484 ruby-faraday-excon
1485 ruby-faraday-multipart
1486 ruby-faraday-patron
1487 ruby-faraday-rack
1488 ruby-faraday-retry
1489 ruby-base64
1490 ruby-ruby2-keywords))
1491 (synopsis "HTTP/REST API client library.")
1492 (description "HTTP/REST API client library.")
1493 (home-page "https://lostisland.github.io/faraday")
1494 (license license:expat)))
1495
1496(define-public ruby-link-header-parser
1497 (package
1498 (name "ruby-link-header-parser")
1499 (version "7.0.1")
1500 (source
1501 (origin
1502 (method url-fetch)
1503 (uri (rubygems-uri "link-header-parser" version))
1504 (sha256
1505 (base32 "0ayfijl4804pcxikc2znfdyq4lhxga9rf0v2xhr3zynlgfciz66h"))))
1506 (build-system ruby-build-system)
1507 (arguments
1508 `(#:tests? #f))
1509 (synopsis "Parse HTTP Link headers.")
1510 (description "Parse HTTP Link headers.")
1511 (home-page "https://github.com/jgarber623/link-header-parser-ruby")
1512 (license license:expat)))
1513
1514(define-public ruby-multibases
1515 (package
1516 (name "ruby-multibases")
1517 (version "0.3.2")
1518 (source
1519 (origin
1520 (method url-fetch)
1521 (uri (rubygems-uri "multibases" version))
1522 (sha256
1523 (base32 "0jsdwi3c3y9nnsivah0pxkbij8vkj949kb7bvrm161pawn6cvgzz"))))
1524 (build-system ruby-build-system)
1525 (synopsis
1526 "This is a low-level library, but high level implementations are provided.
1527 You can also bring your own encoder/decoder. This gem can be used _both_ for
1528 encoding into or decoding from multibase packed strings, as well as serve as
1529 a _general purpose_ library to do `BaseX` encoding and decoding _without_
1530 adding the prefix.")
1531 (description
1532 "This is a low-level library, but high level implementations are provided. You
1533can also bring your own encoder/decoder. This gem can be used _both_ for
1534encoding into or decoding from multibase packed strings, as well as serve as a
1535_general purpose_ library to do `@code{BaseX`} encoding and decoding _without_
1536adding the prefix.")
1537 (home-page "https://github.com/SleeplessByte/ruby-multibase")
1538 (license license:expat)))
1539
1540(define-public ruby-ougai
1541 (package
1542 (name "ruby-ougai")
1543 (version "2.0.0")
1544 (source
1545 (origin
1546 (method url-fetch)
1547 (uri (rubygems-uri "ougai" version))
1548 (sha256
1549 (base32 "0zmngsm3lrliscry7ljw7x5gnf3m4cn4kdgnxccaidhwj0mm539f"))))
1550 (build-system ruby-build-system)
1551 (arguments
1552 `(#:tests? #f))
1553 (propagated-inputs (list ruby-oj))
1554 (synopsis
1555 " A structured logging system is capable of handling a message, custom data or an exception easily.
1556 It has JSON formatters compatible with Bunyan or pino for Node.js and human readable formatter with Amazing Print for console.
1557")
1558 (description
1559 "This package provides a structured logging system is capable of handling a
1560message, custom data or an exception easily. It has JSON formatters compatible
1561with Bunyan or pino for Node.js and human readable formatter with Amazing Print
1562for console.")
1563 (home-page "https://github.com/tilfin/ougai")
1564 (license license:expat)))
1565
1566(define-public ruby-relative-time
1567 (package
1568 (name "ruby-relative-time")
1569 (version "1.1.0")
1570 (source
1571 (origin
1572 (method url-fetch)
1573 (uri (rubygems-uri "relative_time" version))
1574 (sha256
1575 (base32 "0x520r0vgcwjyknmgllblp997qii73vzk4r411c4xbwnlxh5fl99"))))
1576 (build-system ruby-build-system)
1577 (arguments
1578 `(#:tests? #f))
1579 (synopsis
1580 "Relative Time ago gem is used to calulate the relative time instead of using naive ruby time_ago_in_words helper method.
1581")
1582 (description
1583 "Relative Time ago gem is used to calulate the relative time instead of using
1584naive ruby time_ago_in_words helper method.")
1585 (home-page "https://github.com/lalithr95/Relative-Time-ago")
1586 (license license:expat)))
1587
1588(define-public ruby-statsd-instrument
1589 (package
1590 (name "ruby-statsd-instrument")
1591 (version "09b5fe1c6e51704ec40221cd5fdb6bb688f0f40b")
1592 (source
1593 (origin
1594 (method git-fetch)
1595 (uri (git-reference
1596 (url "https://github.com/singpolyma/statsd-instrument")
1597 (commit version)))
1598 (file-name (git-file-name name version))
1599 (sha256
1600 (base32
1601 "1pj87difhx2vkdxv75q7yskla2wg4g0h2528xsxxd27qa4bscf40"))))
1602 (build-system ruby-build-system)
1603 (arguments
1604 `(#:tests? #f))
1605 (synopsis
1606 "A StatsD client for Ruby apps. Provides metaprogramming methods to inject StatsD instrumentation into your code.")
1607 (description
1608 "This package provides a @code{StatsD} client for Ruby apps. Provides
1609metaprogramming methods to inject @code{StatsD} instrumentation into your code.")
1610 (home-page "https://github.com/Shopify/statsd-instrument")
1611 (license license:expat)))
1612
1613(define-public ruby-hiredis
1614 (package
1615 (name "ruby-hiredis")
1616 (version "0.6.3")
1617 (source
1618 (origin
1619 (method url-fetch)
1620 (uri (rubygems-uri "hiredis" version))
1621 (sha256
1622 (base32 "04jj8k7lxqxw24sp0jiravigdkgsyrpprxpxm71ba93x1wr2w1bz"))))
1623 (build-system ruby-build-system)
1624 (arguments
1625 `(#:tests? #f
1626 #:phases
1627 (modify-phases %standard-phases
1628 (add-after 'extract-gemspec 'set-cc
1629 (lambda _
1630 (putenv "CC=gcc"))))))
1631 (native-inputs (list ruby-rake-compiler))
1632 (synopsis
1633 "Ruby wrapper for hiredis (protocol serialization/deserialization and blocking I/O)")
1634 (description
1635 "Ruby wrapper for hiredis (protocol serialization/deserialization and blocking
1636I/O)")
1637 (home-page "http://github.com/redis/hiredis-rb")
1638 (license #f)))
1639
1640;;;;
1641
1642(define %source-dir (dirname (current-filename)))
1643(define %git-dir (string-append %source-dir "/.git"))
1644
1645; Bake a template by eval'ing the leaves
1646(define-public (bake tmpl)
1647 (list
1648 (car tmpl)
1649 (cons (caadr tmpl) (map
1650 (lambda (x) (list (car x) (eval (cadr x) (current-module))))
1651 (cdadr tmpl)))))
1652
1653; double-escaped template of the sgx-jmp sexp
1654; This allows us to bake the expression without doing a full eval to a record,
1655; so it can be written
1656(define-public sgx-jmp-template
1657 '((package-input-rewriting `((,ruby-eventmachine . ,ruby-eventmachine-openssl)))
1658 (package
1659 (name "sgx-jmp")
1660 (version (read-line (open-pipe* OPEN_READ "git" "--git-dir" %git-dir "describe" "--always" "--dirty")))
1661 (source
1662 `(origin
1663 (method git-fetch)
1664 (uri (git-reference
1665 (recursive? #t)
1666 (url "https://git.singpolyma.net/sgx-jmp")
1667 (commit ,(read-line (open-pipe* OPEN_READ "git" "--git-dir" %git-dir "rev-parse" "HEAD")))))
1668 (file-name (git-file-name name version))
1669 (sha256
1670 (base32
1671 ,(read-line (open-pipe* OPEN_READ "guix" "hash" "-rx" %source-dir))))))
1672 (build-system 'copy-build-system)
1673 (arguments
1674 ''(#:install-plan '(("." "share/sgx-jmp"))
1675 #:phases
1676 (modify-phases %standard-phases
1677 (add-after 'install 'wrap
1678 (lambda* (#:key outputs #:allow-other-keys)
1679 (use-modules (ice-9 ftw))
1680 (let* ((out (assoc-ref outputs "out"))
1681 (appbindir (string-append out "/share/sgx-jmp/bin/"))
1682 (bindir (string-append out "/bin/")))
1683 (for-each (lambda (bin)
1684 (mkdir-p bindir)
1685 (let ((binstub (string-append bindir bin)))
1686 (call-with-output-file binstub
1687 (lambda (port)
1688 (format port
1689 "#!~a~%ENV['GEM_PATH'] = ['~a', ENV['GEM_PATH']].compact.join(':')~%Gem.clear_paths~%load '~a~a'~%"
1690 (which "ruby")
1691 (getenv "GEM_PATH")
1692 appbindir
1693 bin)))
1694 (chmod binstub #o755)))
1695 (scandir appbindir
1696 (lambda (f) (eq? 'regular (stat:type (stat (string-append appbindir f))))))))
1697 #t))
1698 (add-before 'install 'check
1699 (lambda _
1700 (invoke "rake" "test"))))))
1701 (propagated-inputs
1702 '(list
1703 ruby
1704 ruby-amazing-print
1705 ruby-bandwidth-sdk
1706 ruby-blather
1707 ruby-braintree
1708 ruby-countries
1709 ruby-dhall
1710 ruby-em-hiredis
1711 ruby-em-http-request
1712 ruby-em-pg-client
1713 ruby-em-promise.rb
1714 ruby-em-synchrony
1715 ruby-eventmachine
1716 ruby-link-header-parser
1717 ruby-money-open-exchange-rates
1718 ruby-multibases
1719 ruby-multihashes
1720 ruby-ougai
1721 ruby-relative-time
1722 ruby-roda
1723 ruby-bandwidth-iris
1724 ruby-sentry
1725 ruby-slim
1726 ruby-statsd-instrument
1727 ruby-thin
1728 ruby-multi-json
1729 ruby-value-semantics))
1730 (native-inputs
1731 '(list
1732 ruby-rack-test
1733 ruby-rantly
1734 ruby-rubocop
1735 ruby-webmock))
1736 (synopsis
1737 "Main component for JMP.chat")
1738 (description
1739 "")
1740 (home-page
1741 "https://git.singpolyma.net/sgx-jmp")
1742 (license 'license:agpl3))))
1743
1744; Baked version of jmp-pay-template with leaves eval'd
1745(define-public sgx-jmp-baked
1746 (bake sgx-jmp-template))
1747
1748; Build clean from git the version from a local clone
1749; To build whatever is sitting in local use:
1750; guix build --with-source=$PWD -f guix.scm
1751
1752(eval sgx-jmp-baked (current-module))