guix.scm

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