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