guix.scm

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