about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEfraim Flashner2021-02-22 16:51:20 +0200
committerEfraim Flashner2021-02-22 16:51:20 +0200
commit82c5260265dc9f2c7bbe3f04a2b48b6cd1de2e7a (patch)
tree475684aefb1aa2e8bae4b4fabc4239bbcbfc2560
parent2297a96572410ff40912f1d0da195aa26057b36d (diff)
downloadguix-bioinformatics-82c5260265dc9f2c7bbe3f04a2b48b6cd1de2e7a.tar.gz
gn: more discourse packages
-rw-r--r--gn/packages/ruby.scm1309
1 files changed, 1303 insertions, 6 deletions
diff --git a/gn/packages/ruby.scm b/gn/packages/ruby.scm
index 4b6ea3e..01087e8 100644
--- a/gn/packages/ruby.scm
+++ b/gn/packages/ruby.scm
@@ -370,9 +370,14 @@ one-to-one, while still providing an idiomatic interface.")
            (lambda _
              (substitute* "Gemfile"
                (("6.0.3.3") "5.2.2.1")  ; different rails version
+               ((".*rails_failover.*") "")  ; need to upgrade rails to 6.0+
+               (("2.0.1") ,(package-version ruby-sassc))
                (("active_model_serializers.*") "active_model_serializers'\n")
-               ;; hide mini-racer for now, can't build libv8
+               ;; hide mini-racer and rbtrace for now, can't build libv8, rbtrace
                ((".*mini_racer.*") "")
+               ((".*rbtrace.*") "")
+               ;; ruby-cppjieba-rb never finishes the install phase
+               ((".*cppjieba_rb.*") "")
                )
              #t))
          (replace 'build
@@ -389,11 +394,17 @@ one-to-one, while still providing an idiomatic interface.")
        ("ruby-active-model-serializers" ,ruby-active-model-serializers)
        ("ruby-activemodel" ,ruby-activemodel)
        ("ruby-activerecord" ,ruby-activerecord)
+       ("ruby-annotate" ,ruby-annotate)
        ("ruby-aws-sdk-s3" ,ruby-aws-sdk-s3)
        ("ruby-aws-sdk-sns" ,ruby-aws-sdk-sns)
+       ("ruby-better-errors" ,ruby-better-errors)
+       ("ruby-binding-of-caller" ,ruby-binding-of-caller)
        ("ruby-bootsnap" ,ruby-bootsnap)
+       ("ruby-bullet" ,ruby-bullet)
        ("ruby-cbor" ,ruby-cbor)
+       ;("ruby-cppjieba-rb" ,ruby-cppjieba-rb)
        ("ruby-certified" ,ruby-certified)
+       ("ruby-colored2" ,ruby-colored2)
        ("ruby-cose" ,ruby-cose)
        ("ruby-css-parser" ,ruby-css-parser)
        ("ruby-diffy" ,ruby-diffy)
@@ -405,11 +416,22 @@ one-to-one, while still providing an idiomatic interface.")
        ("ruby-excon" ,ruby-excon)
        ("ruby-fabrication" ,ruby-fabrication)
        ("ruby-fakeweb" ,ruby-fakeweb)
+       ("ruby-fast-blank" ,ruby-fast-blank)
        ("ruby-fast-xs" ,ruby-fast-xs)
        ("ruby-fastimage" ,ruby-fastimage)
+       ("ruby-flamegraph" ,ruby-flamegraph)
+       ("ruby-gc-tracer" ,ruby-gc-tracer)
        ("ruby-highline" ,ruby-highline)
        ("ruby-http-accept-language" ,ruby-http-accept-language)
        ("ruby-listen" ,ruby-listen)
+       ("ruby-lograge" ,ruby-lograge)
+       ("ruby-logstash-event" ,ruby-logstash-event)
+       ("ruby-logstash-logger" ,ruby-logstash-logger)
+       ("ruby-logster" ,ruby-logster)
+       ("ruby-lru-redux" ,ruby-lru-redux)
+       ("ruby-lz4-ruby" ,ruby-lz4-ruby)
+       ("ruby-maxminddb" ,ruby-maxminddb)
+       ("ruby-memory-profiler" ,ruby-memory-profiler)
        ("ruby-message-bus" ,ruby-message-bus)
        ("ruby-mini-mime" ,ruby-mini-mime)
        ;("ruby-mini-racer" ,ruby-mini-racer)
@@ -429,14 +451,21 @@ one-to-one, while still providing an idiomatic interface.")
        ("ruby-pg" ,ruby-pg)
        ("ruby-pry-byebug" ,ruby-pry-byebug)
        ("ruby-pry-rails" ,ruby-pry-rails)
+       ("ruby-puma" ,ruby-puma)
        ("ruby-r2" ,ruby-r2)
+       ("ruby-rack-mini-profiler" ,ruby-rack-mini-profiler)
        ("ruby-rack-protection" ,ruby-rack-protection)
+       ;("ruby-rails-failover" ,ruby-rails-failover)
        ("ruby-rails-multisite" ,ruby-rails-multisite)
        ("ruby-railties" ,ruby-railties)
        ("ruby-rake" ,ruby-rake)
+       ;("ruby-rbtrace" ,ruby-rbtrace)
+       ("ruby-rchardet" ,ruby-rchardet)
        ("ruby-redis" ,ruby-redis)
        ("ruby-redis-namespace" ,ruby-redis-namespace)
        ("ruby-rinku" ,ruby-rinku)
+       ("ruby-rotp" ,ruby-rotp)
+       ("ruby-rqrcode" ,ruby-rqrcode)
        ("ruby-rspec" ,ruby-rspec)
        ("ruby-rspec-html-matchers" ,ruby-rspec-html-matchers)
        ("ruby-rspec-rails" ,ruby-rspec-rails)
@@ -444,16 +473,25 @@ one-to-one, while still providing an idiomatic interface.")
        ("ruby-rtlit" ,ruby-rtlit)
        ("ruby-rubocop-discourse" ,ruby-rubocop-discourse)
        ("ruby-ruby-prof" ,ruby-ruby-prof)
+       ("ruby-ruby-readability" ,ruby-ruby-readability)
+       ("ruby-rubyzip" ,ruby-rubyzip)
+       ("ruby-sassc" ,ruby-sassc)
+       ("ruby-sassc-rails" ,ruby-sassc-rails)
        ("ruby-seed-fu" ,ruby-seed-fu)
        ("ruby-shoulda-matchers" ,ruby-shoulda-matchers)
        ("ruby-sidekiq" ,ruby-sidekiq)
        ("ruby-simplecov" ,ruby-simplecov)
        ("ruby-sprockets-rails" ,ruby-sprockets-rails)
+       ("ruby-sshkey" ,ruby-sshkey)
+       ("ruby-stackprof" ,ruby-stackprof)
        ("ruby-test-prof" ,ruby-test-prof)
        ("ruby-uglifier" ,ruby-uglifier)
        ("ruby-unf" ,ruby-unf)
+       ("ruby-unicorn" ,ruby-unicorn)
        ("ruby-webmock" ,ruby-webmock)
+       ("ruby-webpush" ,ruby-webpush)
        ("ruby-xorcist" ,ruby-xorcist)
+       ("ruby-yaml-lint" ,ruby-yaml-lint)
        ))
     (native-inputs
      `(
@@ -1421,7 +1459,20 @@ and HTML without having to deal with character set issues.")
     (description
       "Measure following file dimensions: apng, bmp, cur, gif, ico, j2c, jp2, jpeg, jpx, mng, pam, pbm, pcx, pgm, png, ppm, psd, svg, swf, tiff, webp, xbm, xpm")
     (home-page "https://github.com/toy/image_size")
-    (license #f)))
+    (license license:ruby)))
+
+(define-public ruby-image-size-1.5
+  (package
+    (inherit ruby-image-size)
+    (name "ruby-image-size")
+    (version "1.5.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "image_size" version))
+        (sha256
+         (base32
+          "0zrn2mqaf1kk548wn1y35i1a6kwh3320q62m929kn9m8sqpy4fk7"))))))
 
 (define-public ruby-fspath
   (package
@@ -1507,7 +1558,7 @@ and HTML without having to deal with character set issues.")
     (propagated-inputs
      `(("ruby-exifr" ,ruby-exifr)
        ("ruby-fspath" ,ruby-fspath)
-       ("ruby-image-size" ,ruby-image-size)
+       ("ruby-image-size" ,ruby-image-size-1.5)
        ("ruby-in-threads" ,ruby-in-threads)
        ("ruby-progress" ,ruby-progress)))
     (synopsis
@@ -3007,6 +3058,10 @@ similar to Python's Requests.")
          (base32
           "0r8rd9q4g6wda6k2bvsgpwnn9wbaqglb843bm4f1q6xfjkhs5h0l"))))
     (build-system ruby-build-system)
+    (native-inputs
+     `(
+       ("ruby-rake-compiler" ,ruby-rake-compiler)
+       ))
     (synopsis
       "Psych is a YAML parser and emitter. Psych leverages libyaml[https://pyyaml.org/wiki/LibYAML]
 for its YAML parsing and emitting capabilities. In addition to wrapping libyaml,
@@ -3032,6 +3087,8 @@ Psych also knows how to serialize and de-serialize most Ruby objects to and from
          (base32
           "1ngxg3ysq5vip9dn3d32ajc7ly61kdin86hfycm1hkrcvkkn1vjf"))))
     (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; old package is old
     (synopsis
       "   Kwalify is a parser, schema validator, and data binding tool for YAML and JSON.
 ")
@@ -3053,11 +3110,19 @@ Psych also knows how to serialize and de-serialize most Ruby objects to and from
          (base32
           "1zlfvj1dh064y119sfz9w3rkj3d9qkwm1k6dkcjymr6cwj6cqqp2"))))
     (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; needs aruba ~> 1.0
     (propagated-inputs
      `(("ruby-kwalify" ,ruby-kwalify)
        ("ruby-parser" ,ruby-parser)
        ("ruby-psych" ,ruby-psych)
        ("ruby-rainbow" ,ruby-rainbow)))
+    (native-inputs
+     `(
+       ("ruby-aruba" ,ruby-aruba)
+       ("ruby-cucumber" ,ruby-cucumber)
+       ("ruby-rspec" ,ruby-rspec)
+       ))
     (synopsis
       "Reek is a tool that examines Ruby classes, modules and methods and reports any code smells it finds.")
     (description
@@ -3077,6 +3142,8 @@ Psych also knows how to serialize and de-serialize most Ruby objects to and from
          (base32
           "13imvg1x50rz3r0yyfbhxwv72lbf7q28qx9l9nfbb91h2n9ch58c"))))
     (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; Break dependency cycle with ruby-devtools.
     (synopsis
       "Turns your object into a method object")
     (description
@@ -3100,6 +3167,10 @@ Psych also knows how to serialize and de-serialize most Ruby objects to and from
      `(("ruby-path-expander" ,ruby-path-expander)
        ("ruby-ruby-parser" ,ruby-ruby-parser)
        ("ruby-sexp-processor" ,ruby-sexp-processor)))
+    (native-inputs
+     `(
+       ("ruby-hoe" ,ruby-hoe)
+       ))
     (synopsis
       "Flog reports the most tortured code in an easy to read pain
 report. The higher the score, the more pain the code is in.")
@@ -3121,6 +3192,10 @@ report.  The higher the score, the more pain the code is in.")
          (base32
           "1l40n8i959c8bk5m9cfs4m75h2cq01wjwhahnkw7jxgicpva30gv"))))
     (build-system ruby-build-system)
+    (native-inputs
+     `(
+       ("ruby-hoe" ,ruby-hoe)
+       ))
     (synopsis
       "PathExpander helps pre-process command-line arguments expanding
 directories into their constituent files. It further helps by
@@ -3162,11 +3237,17 @@ PathExpander.")
          (base32
           "1my4ga8a8wsqb4nqbf31gvml64ngr66r0zim4mx2kvi76zygczv7"))))
     (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; TODO: fix! only 1 failing test!
     (propagated-inputs
      `(("ruby-erubis" ,ruby-erubis)
        ("ruby-path-expander" ,ruby-path-expander)
        ("ruby-ruby-parser" ,ruby-ruby-parser)
        ("ruby-sexp-processor" ,ruby-sexp-processor)))
+    (native-inputs
+     `(
+       ("ruby-hoe" ,ruby-hoe)
+       ))
     (synopsis
       "Flay analyzes code for structural similarities. Differences in literal
 values, variable, class, method names, whitespace, programming style,
@@ -3190,6 +3271,8 @@ braces vs do/end, etc are all ignored.  Making this totally rad.")
          (base32
           "1vznyzcd3z7wiwjfgr941nq405kd7zm5vjb3sv2mzbbrcla9qkhq"))))
     (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; Break dependency cycle with ruby-devtools.
     (propagated-inputs
      `(("ruby-adamantium" ,ruby-adamantium)
        ("ruby-equalizer" ,ruby-equalizer)))
@@ -3210,6 +3293,8 @@ braces vs do/end, etc are all ignored.  Making this totally rad.")
          (base32
           "007wrc8px9ql4nqp34w0ffb9nj2nrbrcxvy036ng28bpbig7fzs6"))))
     (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; Break dependency cycle with ruby-devtools.
     (propagated-inputs
      `(("ruby-abstract-type" ,ruby-abstract-type)
        ("ruby-adamantium" ,ruby-adamantium)
@@ -3233,6 +3318,8 @@ braces vs do/end, etc are all ignored.  Making this totally rad.")
          (base32
           "1nv35qg1rps9fsis28hz2cq2fx1i96795f91q4nmkm934xynll2x"))))
     (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; Break dependency cycle with ruby-devtools.
     (synopsis "Deep Freeze Ruby Objects")
     (description "Deep Freeze Ruby Objects")
     (home-page "https://github.com/dkubb/ice_nine")
@@ -3250,6 +3337,8 @@ braces vs do/end, etc are all ignored.  Making this totally rad.")
          (base32
           "0165r2ikgfwv2rm8dzyijkp74fvg0ni72hpdx8ay2v7cj08dqyak"))))
     (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; Break dependency cycle with ruby-devtools.
     (propagated-inputs
      `(("ruby-ice-nine" ,ruby-ice-nine)
        ("ruby-memoizable" ,ruby-memoizable)))
@@ -3270,6 +3359,8 @@ braces vs do/end, etc are all ignored.  Making this totally rad.")
          (base32
           "09330cmhrc2wmfhdj9zzg82sv6cdhm3qgdkva5ni5xfjril2pf14"))))
     (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; Break dependency cycle with ruby-devtools.
     (synopsis
       "Module to declare abstract classes and methods")
     (description
@@ -3277,6 +3368,7 @@ braces vs do/end, etc are all ignored.  Making this totally rad.")
     (home-page "https://github.com/dkubb/abstract_type")
     (license license:expat)))
 
+;; TODO: This package somehow hardcodes the versions of its dependencies
 (define-public ruby-devtools
   (package
     (name "ruby-devtools")
@@ -3289,6 +3381,27 @@ braces vs do/end, etc are all ignored.  Making this totally rad.")
          (base32
           "08c8j2zcq9hhxpz9wsyy9v8mfs4d4smyagi0qr398w1qryb6w4m0"))))
     (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f  ; Devtools requires devtools for the tests.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda _
+             ;; Don't require self
+             (substitute* "Rakefile"
+               (("require 'devtools'") ""))
+             ;; Don't hardcode version dependencies
+             (substitute* "devtools.gemspec"
+               (("',\\s+'.*") "'\n"))
+             #t))
+         (add-after 'build 'unpin-versions
+           (lambda _
+             ;; Don't hardcode version dependencies
+             (substitute* "devtools.gemspec"
+               ((", \\[\\\"~>.*") ")\n"))
+             #t))
+         )
+       ))
     (propagated-inputs
      `(("ruby-abstract-type" ,ruby-abstract-type)
        ("ruby-adamantium" ,ruby-adamantium)
@@ -3361,12 +3474,16 @@ braces vs do/end, etc are all ignored.  Making this totally rad.")
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((target (string-append (assoc-ref outputs "out") "/lib/ruby/vendor_ruby/cache/./pkg/msgpack-" ,version ".gem")))
                (mkdir-p (dirname target))
-               (with-output-to-file target
-                 (lambda _ ""))
-               #t))))
+               (symlink
+                        (string-append "../../../msgpack-" ,version ".gem")
+                 target
+                        )
+               #t)))
+         )
        ))
     (native-inputs
      `(
+       ("ruby-rake" ,ruby-rake)
        ("ruby-rake-compiler" ,ruby-rake-compiler)
        ("ruby-rspec" ,ruby-rspec)
        ("ruby-yard" ,ruby-yard)
@@ -3434,6 +3551,12 @@ braces vs do/end, etc are all ignored.  Making this totally rad.")
      `(#:tests? #f  ; tests expect ruby-actionview >=6.0.a
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda _
+             (substitute* "actionview_precompiler.gemspec"
+               (("actionview\\\".*") "actionview\"\n")
+               )
+             #t))
          (add-before 'build 'delete-gemfile-lock
            (lambda _
              (delete-file "Gemfile.lock")
@@ -4428,3 +4551,1177 @@ both the the request and response in between unicorn and slow clients.")
     (home-page "https://github.com/rswag/rswag")
     (license license:expat)))
 
+(define-public ruby-uniform-notifier
+  (package
+    (name "ruby-uniform-notifier")
+    (version "1.13.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "uniform_notifier" version))
+        (sha256
+         (base32
+          "05s2y76zqg391q65mvs1zsrmyn5bjxq3x54ikkqpqm3lzjjcg1pp"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f)) ; not clear how to successfully run tests
+    (native-inputs
+     `(
+       ("ruby-rspec" ,ruby-rspec)
+       ))
+    (synopsis "Uniform notifier for rails logger")
+    (description
+     "@code{uniform_notifier} is extracted from bullet, it gives you the ability to send notification through rails logger, customized logger, javascript alert, javascript console, growl, xmpp, airbrake and honeybadger.")
+    (home-page "https://rubygems.org/gems/uniform_notifier")
+    (license license:expat)))
+
+(define-public ruby-bullet
+  (package
+    (name "ruby-bullet")
+    (version "6.1.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "bullet" version))
+        (sha256
+         (base32
+          "04wm807czdixpgnqp446vj8vc7dj96k26p90rmwll9ahlib37mmm"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f  ; tests want rails' source directory
+       #:test-target "default"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda _
+             (setenv "HOME" (getcwd))
+             #t)))))
+    (propagated-inputs
+     `(("ruby-activesupport" ,ruby-activesupport)
+       ("ruby-uniform-notifier" ,ruby-uniform-notifier)))
+    (synopsis
+      "help to kill N+1 queries and unused eager loading.")
+    (description
+      "help to kill N+1 queries and unused eager loading.")
+    (home-page "https://github.com/flyerhzm/bullet")
+    (license license:expat)))
+
+(define-public ruby-better-errors
+  (package
+    (name "ruby-better-errors")
+    (version "2.9.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/BetterErrors/better_errors")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "185im2i62j9f3sa0xzq8q806xlckypjmi3lwdivrzln4gw2l4z38"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda _
+             ;; Don't specify version numbers.
+             (substitute* "better_errors.gemspec"
+               (("rake.*") "rake\"\n"))
+             (substitute* "Gemfile"
+               ((".*gem-release.*") ""))
+             #t)))))
+    (propagated-inputs
+     `(("ruby-coderay" ,ruby-coderay)
+       ("ruby-erubi" ,ruby-erubi)
+       ("ruby-rack" ,ruby-rack)))
+    (native-inputs
+     `(
+       ("ruby-kramdown" ,ruby-kramdown)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-rspec-html-matchers" ,ruby-rspec-html-matchers)
+       ("ruby-rspec-its" ,ruby-rspec-its)
+       ("ruby-simplecov" ,ruby-simplecov)
+       ("ruby-simplecov-lcov" ,ruby-simplecov-lcov)
+       ("ruby-yard" ,ruby-yard)
+       ))
+    (synopsis "Error page for Rails and other Rack apps")
+    (description
+      "This package provides a better error page for Rails and other Rack apps.  Includes source code inspection, a live REPL and local/instance variable inspection for all stack frames.")
+    (home-page "https://github.com/BetterErrors/better_errors")
+    (license license:expat)))
+
+;; 0.8.0 needs simplecov ~> 0.18
+(define-public ruby-simplecov-lcov
+  (package
+    (name "ruby-simplecov-lcov")
+    (version "0.7.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "simplecov-lcov" version))
+        (sha256
+         (base32
+          "0r3pmjjdjvprk8bzmcvarhf57sp5xzgj1c6007qaqhs7b4fhvxvb"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f  ; tests want rails' source directory. Also skip ruby-jeweler
+       ;#:test-target "default"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda _
+             ;(setenv "HOME" (getcwd))
+             #t)))))
+    (native-inputs
+     `(
+       ;("ruby-jeweler" ,ruby-jeweler)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-simplecov" ,ruby-simplecov)
+       ))
+    (synopsis
+      "Custom SimpleCov formatter to generate a lcov style coverage.")
+    (description
+      "Custom SimpleCov formatter to generate a lcov style coverage.")
+    (home-page "https://github.com/fortissimo1997/simplecov-lcov")
+    (license license:expat)))
+
+(define-public ruby-semver2
+  (package
+    (name "ruby-semver2")
+    (version "3.4.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/haf/semver")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "10yj3vglkw8h1am80jpzkxq7l9ywbvd9fsdjg1mm0c33k1y2jw65"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "spec"))
+    (native-inputs
+     `(
+       ("ruby-rake-compiler" ,ruby-rake-compiler)
+       ("ruby-rspec" ,ruby-rspec)
+       ))
+    (synopsis
+      "maintain versions as per http://semver.org")
+    (description
+      "maintain versions as per http://semver.org")
+    (home-page "https://github.com/haf/semver")
+    (license license:expat)))
+
+(define-public ruby-descendants-tracker
+  (package
+    (name "ruby-descendants-tracker")
+    (version "0.0.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "descendants_tracker" version))
+        (sha256
+         (base32
+          "15q8g3fcqyb41qixn6cky0k3p86291y7xsh1jfd851dvrza1vi79"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; old package is old
+    (propagated-inputs
+     `(("ruby-thread-safe" ,ruby-thread-safe)))
+    (native-inputs
+     `(
+       ;("ruby-devtools" ,ruby-devtools)
+       ))
+    (synopsis
+      "Module that adds descendant tracking to a class")
+    (description
+      "Module that adds descendant tracking to a class")
+    (home-page "https://github.com/dkubb/descendants_tracker")
+    (license license:expat)))
+
+(define-public ruby-github-api
+  (package
+    (name "ruby-github-api")
+    (version "0.19.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/piotrmurach/github")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "13ysd56b473m0yvjdxmqgia2w96m3qq29xzvpdqhz50xjid2mqk2"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(;#:tests? #f  ; tests depend on ruby-vcr, which is non-free
+       #:test-target "spec" ; default fails on the ':features' portion
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda _
+             (setenv "HOME" (getcwd))
+             ;; Don't specify version numbers.
+             (substitute* "github_api.gemspec"
+               (("cucumber.*") "cucumber\"\n")
+               (("vcr.*") "vcr\"\n")
+               )
+             #t)))))
+    (propagated-inputs
+     `(("ruby-addressable" ,ruby-addressable)
+       ("ruby-descendants-tracker" ,ruby-descendants-tracker)
+       ("ruby-faraday" ,ruby-faraday)
+       ("ruby-hashie" ,ruby-hashie)
+       ("ruby-oauth2" ,ruby-oauth2)))
+    (native-inputs
+     `(
+       ("ruby-cucumber" ,ruby-cucumber)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-rspec-its" ,ruby-rspec-its)
+       ("ruby-vcr" ,ruby-vcr)
+       ("ruby-webmock" ,ruby-webmock)
+       ))
+    (synopsis "Ruby client of GitHub API methods")
+    (description
+     "This package provides a Ruby client that supports all of the GitHub API methods.")
+    (home-page "https://piotrmurach.github.io/github/")
+    (license license:expat)))
+
+(define-public ruby-jeweler
+  (package
+    (name "ruby-jeweler")
+    (version "2.3.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "jeweler" version))
+        (sha256
+         (base32
+          "0jbivh9vf9wm91kwjnlcvswqyk2g24bnxj9gavinx9jh4bphagi5"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     `(("ruby-builder" ,ruby-builder)
+       ("bundler" ,bundler)
+       ("ruby-git" ,ruby-git)
+       ("ruby-github-api" ,ruby-github-api)
+       ("ruby-highline" ,ruby-highline)
+       ("ruby-nokogiri" ,ruby-nokogiri)
+       ("ruby-psych" ,ruby-psych)
+       ("ruby-rake" ,ruby-rake)
+       ("ruby-rdoc" ,ruby-rdoc)
+       ("ruby-semver2" ,ruby-semver2)))
+    (synopsis
+      "Simple and opinionated helper for creating Rubygem projects on GitHub")
+    (description
+      "Simple and opinionated helper for creating Rubygem projects on GitHub")
+    (home-page "https://github.com/technicalpickles/jeweler")
+    (license license:expat)))
+
+;; 5.0.0 is the last version under a free license. 5.1.0+ are under the Hippocratic License
+(define-public ruby-vcr
+  (package
+    (name "ruby-vcr")
+    (version "5.0.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/vcr/vcr")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1anich4cgjz7adbk1sh07q494dgb757np74qdiz0nwjzl41s6iyp"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f  ; TODO: figure out test suite
+       #:test-target "default"))
+    (native-inputs
+     `(
+       ("ruby-codeclimate-test-reporter" ,ruby-codeclimate-test-reporter)
+       ("ruby-cucumber" ,ruby-cucumber)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-simplecov" ,ruby-simplecov)
+       ))
+    (synopsis
+      "Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.")
+    (description
+      "Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.")
+    (home-page "https://relishapp.com/vcr/vcr/docs")
+    (license license:expat)))
+
+(define-public ruby-yaml-lint
+  (package
+    (name "ruby-yaml-lint")
+    (version "0.0.10")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "yaml-lint" version))
+        (sha256
+         (base32
+          "1m9n4sg7i0334yac7dcrhnhv5rzvrccgnh687n9x77ba3awk4yx1"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "rspec"))
+             #t)))))
+    (native-inputs
+     `(
+       ("ruby-rspec" ,ruby-rspec)
+       ))
+    (synopsis
+      "Check if your YAML files can be loaded.")
+    (description
+      "Check if your YAML files can be loaded.")
+    (home-page "https://github.com/Pryz/yaml-lint")
+    (license license:expat)))
+
+(define-public ruby-annotate
+  (package
+    (name "ruby-annotate")
+    (version "3.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "annotate" version))
+        (sha256
+         (base32
+          "1dxrfppwfg13vqmambbs56xjj8qsdgcy58r2yc44vvy3z1g5yflw"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; no tests in gem
+    (propagated-inputs
+     `(("ruby-activerecord" ,ruby-activerecord)
+       ("ruby-rake" ,ruby-rake)))
+    (synopsis
+      "Annotates Rails/ActiveRecord Models, routes, fixtures, and others based on the database schema.")
+    (description
+      "Annotates Rails/ActiveRecord Models, routes, fixtures, and others based on the database schema.")
+    (home-page "https://github.com/ctran/annotate_models")
+    (license #f)))
+
+(define-public ruby-flamegraph
+  (package
+    (name "ruby-flamegraph")
+    (version "0.9.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "flamegraph" version))
+        (sha256
+         (base32
+          "1p785nmhdzbwj0qpxn5fzrmr4kgimcds83v4f95f387z6w3050x6"))))
+    (build-system ruby-build-system)
+    (synopsis
+      "Flamegraph support for arbitrary ruby apps")
+    (description
+      "Flamegraph support for arbitrary ruby apps")
+    (home-page "https://github.com/SamSaffron/flamegraph")
+    (license license:expat)))
+
+(define-public ruby-optimist
+  (package
+    (name "ruby-optimist")
+    (version "3.0.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "optimist" version))
+        (sha256
+         (base32
+          "1vg2chy1cfmdj6c1gryl8zvjhhmb3plwgyh1jfnpq4fnfqv7asrk"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     `(
+       ;; https://github.com/ManageIQ/optimist/issues/109
+       ("ruby-chronic" ,ruby-chronic)
+       ))
+    (synopsis
+      "Optimist is a commandline option parser for Ruby that just
+gets out of your way. One line of code per option is all you need to write.
+For that, you get a nice automatically-generated help page, robust option
+parsing, command subcompletion, and sensible defaults for everything you don't
+specify.")
+    (description
+      "Optimist is a commandline option parser for Ruby that just
+gets out of your way.  One line of code per option is all you need to write.
+For that, you get a nice automatically-generated help page, robust option
+parsing, command subcompletion, and sensible defaults for everything you don't
+specify.")
+    (home-page "https://manageiq.github.io/optimist/")
+    (license license:expat)))
+
+;; TODO: Unbundle msgpack
+(define-public ruby-rbtrace
+  (package
+    (name "ruby-rbtrace")
+    (version "0.4.14")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "rbtrace" version))
+        (sha256
+         (base32
+          "0s8prj0klfgpmpfcpdzbf149qrrsdxgnb6w6kkqc9gyars4vyaqn"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f  ; no test suite
+       #:phases
+       (modify-phases %standard-phases
+         ;(replace 'build
+         ;  (lambda _
+         ;    (setenv "HOME" (getcwd))
+         ;    (substitute* "rbtrace.gemspec"
+         ;      (("~>") ">="))
+         ;    (setenv "CC" ,(cc-for-target))
+         ;    (invoke "bundle" "exec" "rake" "build")))
+         )
+       ))
+    (propagated-inputs
+     `(("ruby-ffi" ,ruby-ffi)
+       ("ruby-msgpack" ,ruby-msgpack)
+       ("ruby-optimist" ,ruby-optimist)))
+    (synopsis
+      "rbtrace shows you method calls happening inside another ruby process in real time.")
+    (description
+      "rbtrace shows you method calls happening inside another ruby process in real time.")
+    (home-page "https://github.com/tmm1/rbtrace")
+    (license license:expat)))
+
+(define-public ruby-gc-tracer
+  (package
+    (name "ruby-gc-tracer")
+    (version "1.5.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "gc_tracer" version))
+        (sha256
+         (base32
+          "1yv3mp8lx74lfzs04fd5h4g89209iwhzpc407y35p7cmzgx6a4kv"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "default"))
+    (native-inputs
+     `(
+       ("ruby-rake-compiler" ,ruby-rake-compiler)
+       ("ruby-rspec" ,ruby-rspec)
+       ))
+    (synopsis
+      "gc_tracer gem adds GC::Tracer module.")
+    (description
+      "gc_tracer gem adds GC::Tracer module.")
+    (home-page "https://github.com/ko1/gc_tracer")
+    (license license:expat)))
+
+(define-public ruby-guess-html-encoding
+  (package
+    (name "ruby-guess-html-encoding")
+    (version "0.0.11")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "guess_html_encoding" version))
+        (sha256
+         (base32
+          "16700fk6kmif3q3kpc1ldhy3nsc9pkxlgl8sqhznff2zjj5lddna"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "default"))
+    (native-inputs
+     `(
+       ("ruby-rspec" ,ruby-rspec)
+       ))
+    (synopsis
+      "A small gem that attempts to guess and then force encoding of HTML documents for Ruby 1.9")
+    (description
+      "This package provides a small gem that attempts to guess and then force encoding of HTML documents for Ruby 1.9")
+    (home-page "https://github.com/cantino/guess_html_encoding")
+   (license expat)))
+
+(define-public ruby-ruby-readability
+  (package
+    (name "ruby-ruby-readability")
+    (version "0.7.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "ruby-readability" version))
+        (sha256
+         (base32
+          "15ivhbry7hf82lww1bzcrwfyjymijfb3rb0wdd32g2z0942wdspa"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f  ; ':spec" fails with newer ruby versions
+       #:test-target "default"))
+    (propagated-inputs
+     `(("ruby-guess-html-encoding" ,ruby-guess-html-encoding)
+       ("ruby-nokogiri" ,ruby-nokogiri)))
+    (native-inputs
+     `(
+       ("ruby-rspec" ,ruby-rspec)
+       ))
+    (synopsis
+      "Port of arc90's readability project to ruby")
+    (description
+      "Port of arc90's readability project to ruby")
+    (home-page "https://github.com/cantino/ruby-readability")
+    (license #f)))
+
+;; TODO: 0.3.3 never finishes the install phase
+(define-public ruby-cppjieba-rb
+  (package
+    (name "ruby-cppjieba-rb")
+    (version "0.3.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "cppjieba_rb" version))
+        (sha256
+         (base32
+          "1sslff7yy8jvp4rcn1b6jn9v0d3iibb68i79shgd94rs2yq8k117"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'pre-build
+           (lambda _
+             (invoke "rake" "compile"))))))
+    (native-inputs
+     `(
+       ("ruby-rake-compiler" ,ruby-rake-compiler)
+       ))
+    (synopsis "Cppjieba binding for Ruby")
+    (description
+      "cppjieba binding for ruby.  Mainly used by Discourse.")
+    (home-page "https://github.com/fantasticfears/cppjieba_rb")
+    (license license:expat)))
+
+(define-public ruby-request-store
+  (package
+    (name "ruby-request-store")
+    (version "1.5.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "request_store" version))
+        (sha256
+         (base32
+          "0cx74kispmnw3ljwb239j65a2j14n8jlsygy372hrsa8mxc71hxi"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     `(("ruby-rack" ,ruby-rack)))
+    (synopsis
+      "RequestStore gives you per-request global storage.")
+    (description
+      "RequestStore gives you per-request global storage.")
+    (home-page "https://github.com/steveklabnik/request_store")
+    (license license:expat)))
+
+(define-public ruby-lograge
+  (package
+    (name "ruby-lograge")
+    (version "0.11.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/roidrage/lograge")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1dlxzv0xjnjs95l4fzr1wcf2l7klnhji0fv51gl6wvkjpjdr9zcy"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f  ; cannot find logstash-event
+       #:test-target "spec" ; not default, rubocop compains about all the things
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'replace-git-ls-files
+           (lambda _
+             (substitute* "lograge.gemspec"
+               (("git ls-files lib LICENSE.txt")
+                "find lib LICENSE.txt -type f | sort"))
+             #t))
+         (add-before 'check 'pre-check
+           (lambda _
+             (setenv "HOME" (getcwd))
+             #t)))))
+    (propagated-inputs
+     `(("ruby-actionpack" ,ruby-actionpack)
+       ("ruby-activesupport" ,ruby-activesupport)
+       ("ruby-railties" ,ruby-railties)
+       ("ruby-request-store" ,ruby-request-store)))
+    (native-inputs
+     `(
+       ("ruby-activerecord" ,ruby-activerecord)
+       ("ruby-lines" ,ruby-lines)
+       ("ruby-logstash-event" ,ruby-logstash-event)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-rubocop" ,ruby-rubocop)
+       ))
+    (synopsis
+      "Tame Rails' multi-line logging into a single line per request")
+    (description
+      "Tame Rails' multi-line logging into a single line per request")
+    (home-page "https://github.com/roidrage/lograge")
+    (license license:expat)))
+
+(define-public ruby-logstash-event
+  (package
+    (name "ruby-logstash-event")
+    (version "1.2.02")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "logstash-event" version))
+        (sha256
+         (base32
+          "1bk7fhhryjxp1klr3hq6i6srrc21wl4p980bysjp0w66z9hdr9w9"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; no rakefile
+    (synopsis
+      "Library that contains the classes required to create LogStash events")
+    (description
+      "Library that contains the classes required to create LogStash events")
+    (home-page "https://github.com/logstash/logstash")
+    (license license:asl2.0)))
+
+(define-public ruby-lines
+  (package
+    (name "ruby-lines")
+    (version "0.9.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "lines" version))
+        (sha256
+         (base32
+          "17hrpvqvc2li4rjnk75xy5qvylk0vg0z8if7q1m00al79d0mpbma"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "default"))
+    (native-inputs
+     `(
+       ("ruby-rspec" ,ruby-rspec)
+       ))
+    (synopsis
+      "A log format that's readable by humans and easily parseable by computers.
+")
+    (description
+      "This package provides a log format that's readable by humans and easily parseable by computers.
+")
+    (home-page "https://github.com/zimbatm/lines-ruby")
+    (license license:expat)))
+
+(define-public ruby-logstash-logger
+  (package
+    (name "ruby-logstash-logger")
+    (version "0.26.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "logstash-logger" version))
+        (sha256
+         (base32
+          "1nh0jgz4rl46axqb9l0fa866kh34wb7yf11qc3j30xhprdqb8yjp"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f  ; incompatable dependencies on simplecov
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda _
+             (setenv "HOME" (getcwd))
+             #t)))))
+    (propagated-inputs
+     `(("ruby-logstash-event" ,ruby-logstash-event)))
+    (native-inputs
+     `(
+       ("ruby-appraisal" ,ruby-appraisal)
+       ("ruby-aws-sdk-firehose" ,ruby-aws-sdk-firehose)
+       ("ruby-aws-sdk-kinesis" ,ruby-aws-sdk-kinesis)
+       ("ruby-codeclimate-test-reporter" ,ruby-codeclimate-test-reporter)
+       ("ruby-codecov" ,ruby-codecov)
+       ("ruby-poseidon" ,ruby-poseidon)
+       ("ruby-pry" ,ruby-pry)
+       ("ruby-rails" ,ruby-rails)
+       ("ruby-redis" ,ruby-redis)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-rubocop" ,ruby-rubocop)
+       ("ruby-wwtd" ,ruby-wwtd)
+       ))
+    (synopsis
+      "Ruby logger that writes directly to LogStash")
+    (description
+      "Ruby logger that writes directly to LogStash")
+    (home-page "https://github.com/dwbutler/logstash-logger")
+    (license license:expat)))
+
+(define-public ruby-poseidon
+  (package
+    (name "ruby-poseidon")
+    (version "0.0.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "poseidon" version))
+        (sha256
+         (base32
+          "0lxavrybqwa3xmsajvxp0ngqmn4jxw9q93398yxzdrx83i8a7l8p"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "default"))
+    (native-inputs
+     `(
+       ("ruby-coveralls" ,ruby-coveralls)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-simplecov" ,ruby-simplecov)
+       ("ruby-snappy" ,ruby-snappy)
+       ))
+    (synopsis
+      "A Kafka (http://kafka.apache.org/) producer and consumer")
+    (description
+      "This package provides a Kafka (http://kafka.apache.org/) producer and consumer")
+    (home-page "https://github.com/bpot/poseidon")
+    (license license:expat)))
+
+(define-public ruby-snappy
+  (package
+    (name "ruby-snappy")
+    (version "0.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "snappy" version))
+        (sha256
+         (base32
+          "0xl54r1vvrhlkxf16mxqk4kz18j0igf1f7l66kqd9dbyv6x99zfg"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda _
+             ;; Test "VERSION" fails for unknown reasons
+             (delete-file "test/snappy_test.rb")
+             (with-output-to-file "test/snappy_test.rb"
+               (lambda _ ""))
+             #t)))))
+    (inputs
+     `(
+       ("snappy" ,snappy)
+       ))
+    (native-inputs
+     `(
+       ("ruby-rake" ,ruby-rake)
+       ("ruby-test-unit-rr" ,ruby-test-unit-rr)
+       ))
+    (synopsis "libsnappy binding for Ruby")
+    (description "libsnappy binding for Ruby")
+    (home-page "https://github.com/miyucy/snappy")
+    (license license:expat)))
+
+(define-public ruby-test-unit-rr
+  (package
+    (name "ruby-test-unit-rr")
+    (version "1.0.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "test-unit-rr" version))
+        (sha256
+         (base32
+          "0l42wxvqqd4g1968syy1wmr4j9z3cad8v5vv22lr7my4wjgz0sil"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     `(("ruby-rr" ,ruby-rr)
+       ("ruby-test-unit" ,ruby-test-unit)))
+    (native-inputs
+     `(
+       ("ruby-packnga" ,ruby-packnga)
+       ))
+    (synopsis
+      "You don't need RR setup codes with test-unit-rr. You just require
+\"test/unit/rr\".
+")
+    (description
+      "You don't need RR setup codes with test-unit-rr.  You just require
+\"test/unit/rr\".
+")
+    (home-page "https://github.com/test-unit/test-unit-rr")
+    (license #f)))
+
+(define-public ruby-aws-sdk-kinesis
+  (package
+    (name "ruby-aws-sdk-kinesis")
+    (version "1.31.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "aws-sdk-kinesis" version))
+        (sha256
+         (base32
+          "1wsnn4303q7501xp10gfr8s15cazm4a0xy8knz5b8pmaw93x0g4b"))))
+    (build-system ruby-build-system)
+    (arguments `(#:tests? #f))  ; no tests
+    (propagated-inputs
+     `(("ruby-aws-sdk-core" ,ruby-aws-sdk-core)
+       ("ruby-aws-sigv4" ,ruby-aws-sigv4)))
+    (synopsis
+      "Official AWS Ruby gem for Amazon Kinesis (Kinesis). This gem is part of the AWS SDK for Ruby.")
+    (description
+      "Official AWS Ruby gem for Amazon Kinesis (Kinesis).  This gem is part of the AWS SDK for Ruby.")
+    (home-page "https://github.com/aws/aws-sdk-ruby")
+    (license license:asl2.0)))
+
+(define-public ruby-aws-sdk-firehose
+  (package
+    (name "ruby-aws-sdk-firehose")
+    (version "1.36.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "aws-sdk-firehose" version))
+        (sha256
+         (base32
+          "0ji75vqfprnkjsy6gdk9qci6wd9kwm7h7lycpx7jsw0fbv6hjx0p"))))
+    (build-system ruby-build-system)
+    (arguments `(#:tests? #f))  ; no tests
+    (propagated-inputs
+     `(("ruby-aws-sdk-core" ,ruby-aws-sdk-core)
+      ("ruby-aws-sigv4" ,ruby-aws-sigv4)))
+    (synopsis
+      "Official AWS Ruby gem for Amazon Kinesis Firehose (Firehose). This gem is part of the AWS SDK for Ruby.")
+    (description
+      "Official AWS Ruby gem for Amazon Kinesis Firehose (Firehose).  This gem is part of the AWS SDK for Ruby.")
+    (home-page "https://github.com/aws/aws-sdk-ruby")
+    (license license:asl2.0)))
+
+(define-public ruby-codecov
+  (package
+    (name "ruby-codecov")
+    (version "0.4.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/codecov/codecov-ruby")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "01x1n0j2awnpbnhzhsc058ni8bh2zw3vasbz9gkivydgv2r8xkpd"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; can't install gem
+    (propagated-inputs
+     `(("ruby-simplecov" ,ruby-simplecov)))
+    (synopsis "Hosted code coverage Ruby reporter")
+    (description
+      "Hosted code coverage Ruby reporter.")
+    (home-page "https://github.com/codecov/codecov-ruby")
+    (license license:expat)))
+
+(define-public ruby-rotp
+  (package
+    (name "ruby-rotp")
+    (version "6.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "rotp" version))
+        (sha256
+         (base32
+          "11q7rkjx40yi6lpylgl2jkpy162mjw7mswrcgcax86vgpbpjx6i3"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "rspec"))
+             #t)))))
+    (native-inputs
+     `(
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-simplecov" ,ruby-simplecov)
+       ("ruby-timecop" ,ruby-timecop)
+       ))
+    (synopsis
+      "Works for both HOTP and TOTP, and includes QR Code provisioning")
+    (description
+      "Works for both HOTP and TOTP, and includes QR Code provisioning")
+    (home-page "https://github.com/mdp/rotp")
+    (license license:expat)))
+
+(define-public ruby-sshkey
+  (package
+    (name "ruby-sshkey")
+    (version "2.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "sshkey" version))
+        (sha256
+         (base32
+          "03bkn55qsng484iqwz2lmm6rkimj01vsvhwk661s3lnmpkl65lbp"))))
+    (build-system ruby-build-system)
+    (synopsis
+      "Generate private/public SSH keypairs using pure Ruby")
+    (description
+      "Generate private/public SSH keypairs using pure Ruby")
+    (home-page "https://github.com/bensie/sshkey")
+    (license license:expat)))
+
+(define-public ruby-rchardet
+  (package
+    (name "ruby-rchardet")
+    (version "1.8.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jmhodges/rchardet")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "12xcc4dq0k5gq5r142n7rr34lirfyzlkdh5by64cwz0bg5jfn8il"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'replace-git-ls-files)
+         (add-before 'build 'delete-gemfile-lock
+           (lambda _
+             (delete-file "Gemfile.lock")
+             #t))
+         )))
+    (native-inputs
+     `(
+       ("ruby-bump" ,ruby-bump)
+       ("ruby-minitest-rg" ,ruby-minitest-rg)
+       ("ruby-wwtd" ,ruby-wwtd)
+       ))
+    (synopsis
+      "Character encoding auto-detection in Ruby. As smart as your browser. Open source.")
+    (description
+      "Character encoding auto-detection in Ruby.  As smart as your browser.  Open source.")
+    (home-page "https://github.com/jmhodges/rchardet")
+    (license license:lgpl2.1+)))
+
+(define-public ruby-lz4-ruby
+  (package
+    (name "ruby-lz4-ruby")
+    (version "0.3.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "lz4-ruby" version))
+        (sha256
+         (base32
+          "12fymsvcb9kw6ycyfzc8b9svriq0afqf1qnl121xrz8c4gpfa6q1"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f  ; tests require ruby-jeweler
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'replace-git-ls-files)
+         (add-after 'unpack 'patch-source
+           (lambda _
+             (substitute* "Gemfile"
+               (("\\\", .*") "\"\n")
+               ;; NO JEWELER!
+               ((".*jeweler.*") "")
+               )
+             #t))
+         )))
+    (native-inputs
+     `(
+       ;("ruby-rdoc" ,ruby-rdoc)
+       ("ruby-rake-compiler" ,ruby-rake-compiler)
+       ("ruby-rspec" ,ruby-rspec)
+       ))
+    (synopsis
+      "Ruby bindings for LZ4. LZ4 is a very fast lossless compression algorithm.")
+    (description
+      "Ruby bindings for LZ4.  LZ4 is a very fast lossless compression algorithm.")
+    (home-page "https://github.com/komiya-atsushi/lz4-ruby")
+    (license license:expat)))
+
+(define-public ruby-hkdf
+  (package
+    (name "ruby-hkdf")
+    (version "0.3.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jtdowney/hkdf")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "171xqhifjf9pxy60kds7fc8zfli7msnm9q9ncqyswxfspjdhj647"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "default"))
+    (native-inputs
+     `(
+       ("ruby-rspec" ,ruby-rspec)
+       ))
+    (synopsis
+      "A ruby implementation of RFC5869: HMAC-based Extract-and-Expand Key Derivation Function (HKDF). The goal of HKDF is to take some source key material and generate suitable cryptographic keys from it.")
+    (description
+      "This package provides a ruby implementation of RFC5869: HMAC-based Extract-and-Expand Key Derivation Function (HKDF).  The goal of HKDF is to take some source key material and generate suitable cryptographic keys from it.")
+    (home-page "https://github.com/jtdowney/hkdf")
+    (license license:expat)))
+
+(define-public ruby-webpush
+  (package
+    (name "ruby-webpush")
+    (version "1.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "webpush" version))
+        (sha256
+         (base32
+          "1z9ma580q80czw46gi1bvsr2iwxr63aiyr7i9gilav6hbhg3sxv3"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "default"))
+    (propagated-inputs
+     `(("ruby-hkdf" ,ruby-hkdf)
+       ("ruby-jwt" ,ruby-jwt)))
+    (native-inputs
+     `(
+       ("ruby-rspec" ,ruby-rspec)
+       ))
+    (synopsis
+      "Encryption Utilities for Web Push payload.")
+    (description
+      "Encryption Utilities for Web Push payload.")
+    (home-page "https://github.com/zaru/webpush")
+    (license license:expat)))
+
+(define-public ruby-colored2
+  (package
+    (name "ruby-colored2")
+    (version "3.1.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "colored2" version))
+        (sha256
+         (base32
+          "0jlbqa9q4mvrm73aw9mxh23ygzbjiqwisl32d8szfb5fxvbjng5i"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "default"))
+    (synopsis
+      "This is a heavily modified fork of http://github.com/defunkt/colored gem, with many
+sensible pull requests combined. Since the authors of the original gem no longer support it,
+this might, perhaps, be considered a good alternative.
+
+Simple gem that adds various color methods to String class, and can be used as follows:
+
+  require 'colored2'
+
+  puts 'this is red'.red
+  puts 'this is red with a yellow background'.red.on.yellow
+  puts 'this is red with and italic'.red.italic
+  puts 'this is green bold'.green.bold << ' and regular'.green
+  puts 'this is really bold blue on white but reversed'.bold.blue.on.white.reversed
+  puts 'this is regular, but '.red! << 'this is red '.yellow! << ' and yellow.'.no_color!
+  puts ('this is regular, but '.red! do
+    'this is red '.yellow! do
+      ' and yellow.'.no_color!
+    end
+  end)
+
+")
+    (description
+      "This is a heavily modified fork of http://github.com/defunkt/colored gem, with many
+sensible pull requests combined.  Since the authors of the original gem no longer support it,
+this might, perhaps, be considered a good alternative.
+
+Simple gem that adds various color methods to String class, and can be used as follows:
+
+  require 'colored2'
+
+  puts 'this is red'.red
+  puts 'this is red with a yellow background'.red.on.yellow
+  puts 'this is red with and italic'.red.italic
+  puts 'this is green bold'.green.bold << ' and regular'.green
+  puts 'this is really bold blue on white but reversed'.bold.blue.on.white.reversed
+  puts 'this is regular, but '.red! << 'this is red '.yellow! << ' and yellow.'.no_color!
+  puts ('this is regular, but '.red! do
+    'this is red '.yellow! do
+      ' and yellow.'.no_color!
+    end
+  end)
+
+")
+    (home-page "https://github.com/kigster/colored2")
+    (license license:expat)))
+
+;; TODO: Depends on rails >= 6.0
+(define-public ruby-rails-failover
+  (package
+    (name "ruby-rails-failover")
+    (version "0.6.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "rails_failover" version))
+        (sha256
+         (base32
+          "1s8yfpam6qfs2bj596rfwhcgb4pjamg93ijqpa8c5d207sm45a07"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "default"
+       #:tests? #f      ; cannot load such file -- spec_helper
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           ;; Of course this is easier than upgrading rails to 6
+           (lambda _
+             (substitute* "rails_failover.gemspec"
+               (("gem_name, \\\".*") "gem_name\n")
+               )
+             (delete-file "Gemfile.lock")
+             (with-output-to-file "Gemfile.lock"
+               (lambda _ ""))
+             (substitute* "Gemfile"
+               (("activerecord.*") "activerecord'\n"))
+             #t)))))
+    (propagated-inputs
+     `(("ruby-activerecord" ,ruby-activerecord)
+       ("ruby-concurrent-ruby" ,ruby-concurrent-ruby)
+       ("ruby-railties" ,ruby-railties)))
+    (native-inputs
+     `(
+       ("ruby-rspec" ,ruby-rspec)
+       ))
+    (synopsis "Failover for ActiveRecord and Redis")
+    (description
+      "Failover for ActiveRecord and Redis")
+    (home-page "https://github.com/discourse/rails_failover")
+    (license license:expat)))
+