about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEfraim Flashner2021-02-19 11:57:01 +0200
committerEfraim Flashner2021-02-19 11:57:01 +0200
commitb10e40be019fbcad4919dbef5267220b4bc4dcee (patch)
treed878259999687d6bd1120ccb8b9844f10ae77a23
parentaff7b7ebbe5a8258125a1165f07d14098b6907f2 (diff)
downloadguix-bioinformatics-b10e40be019fbcad4919dbef5267220b4bc4dcee.tar.gz
gn: More discourse packaging
-rw-r--r--gn/packages/ruby.scm1096
1 files changed, 952 insertions, 144 deletions
diff --git a/gn/packages/ruby.scm b/gn/packages/ruby.scm
index 0be4157..6d758f6 100644
--- a/gn/packages/ruby.scm
+++ b/gn/packages/ruby.scm
@@ -126,40 +126,6 @@ output")
     "http://github.com/pjotrp/bioruby-table")
    (license expat)))
 
-(define-public ruby-net-http-digest-auth
-  (package
-    (name "ruby-net-http-digest-auth")
-    (version "1.4")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "net-http-digest_auth" version))
-       (sha256
-        (base32
-         "14801gr34g0rmqz9pv4rkfa3crfdbyfk6r48vpg5a5407v0sixqi"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))
-    (synopsis
-     "An implementation of RFC 2617 - Digest Access Authentication.  At this time
-the gem does not drop in to Net::HTTP and can be used for with other HTTP
-clients.
-
-In order to use net-http-digest_auth you'll need to perform some request
-wrangling on your own.  See the class documentation at Net::HTTP::DigestAuth
-for an example.")
-    (description
-     "An implementation of RFC 2617 - Digest Access Authentication.  At this time
-the gem does not drop in to Net::HTTP and can be used for with other HTTP
-clients.
-
-In order to use net-http-digest_auth you'll need to perform some request
-wrangling on your own.  See the class documentation at Net::HTTP::DigestAuth
-for an example.")
-    (home-page
-     "http://github.com/drbrain/net-http-digest_auth")
-    (license #f)))
-
 (define-public ruby-ntlm-http
   (package
     (name "ruby-ntlm-http")
@@ -246,28 +212,6 @@ a history.")
    "http://docs.seattlerb.org/mechanize/")
   (license expat)))
 
-
-(define-public ruby-bio-logger ; guix maybe ready
-(package
-  (name "ruby-bio-logger")
-  (version "1.0.1")
-  (source
-    (origin
-      (method url-fetch)
-      (uri (rubygems-uri "bio-logger" version))
-      (sha256
-        (base32
-          "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
-  (build-system ruby-build-system)
-  (propagated-inputs `(("ruby-log4r" ,ruby-log4r)))
-  (arguments
-   `(#:tests? #f)) ;; no bundler
-  (synopsis "Log4r wrapper for BioRuby")
-  (description "Log4r wrapper for BioRuby")
-  (home-page
-    "https://github.com/pjotrp/bioruby-logger-plugin")
-  (license #f)))
-
 (define-public ruby-faraday
 (package
   (name "ruby-faraday")
@@ -375,32 +319,94 @@ a history.")
 
 (define-public ruby-redis
   (package
-   (name "ruby-redis")
-   (version "4.2.5")
-   (source
-    (origin
-     (method url-fetch)
-     (uri (rubygems-uri "redis" version))
-     (sha256
-      (base32
-       "15x2sr6h094rjbvg8pkq6m3lcd5abpyx93aifvfdz3wv6x55xa48"))))
-   (build-system ruby-build-system)
-   (arguments
-    `(#:tests? #f)) ;; no bundler/cucumber
-   (synopsis
-    "    A Ruby client that tries to match Redis' API one-to-one, while still
-    providing an idiomatic interface.
-")
-   (description
-    "    A Ruby client that tries to match Redis' API one-to-one, while still
-    providing an idiomatic interface.
-")
-   (home-page "https://github.com/redis/redis-rb")
-   (license license:expat)))
+    (name "ruby-redis")
+    (version "4.2.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "redis" version))
+        (sha256
+         (base32
+          "15x2sr6h094rjbvg8pkq6m3lcd5abpyx93aifvfdz3wv6x55xa48"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; Tests require a running redis server.
+    (synopsis "Ruby client for Redis' API")
+    (description
+     "This package provides a Ruby client that tries to match Redis' API
+one-to-one, while still providing an idiomatic interface.")
+    (home-page "https://github.com/redis/redis-rb")
+    (license license:expat)))
 
 
 
+;;;
 
+(define-public discourse
+  (package
+    (name "discourse")
+    (version "2.6.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/discourse/discourse")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1j1sinbxrdvidvn52z0qg668p7zd2ir5qdm43n4zdncmps6s4bnd"))))
+    (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))
+         (add-after 'unpack 'adjust-version-dependencies
+           ;; This may not work, but it's worth a shot for now
+           (lambda _
+             (substitute* "Gemfile"
+               (("6.0.3.3") "5.2.2.1")  ; different rails version
+               (("active_model_serializers.*") "active_model_serializers'\n")
+               )
+             #t))
+         (replace 'build
+           (lambda _
+             (setenv "HOME" (getcwd))
+             (invoke "bundle" "exec" "rake" "autospec")))
+         )
+       ))
+    ;;TODO: What should be moved to native-inputs?
+    (inputs
+     `(
+       ("ruby-actionmailer" ,ruby-actionmailer)
+       ("ruby-actionview-precompiler" ,ruby-actionview-precompiler)
+       ("ruby-active-model-serializers" ,ruby-active-model-serializers)
+       ("ruby-activemodel" ,ruby-activemodel)
+       ("ruby-activerecord" ,ruby-activerecord)
+       ("ruby-bootsnap" ,ruby-bootsnap)
+       ("ruby-mini-mime" ,ruby-mini-mime)
+       ("ruby-mini-suffix" ,ruby-mini-suffix)
+       ("ruby-onebox" ,ruby-onebox)
+       ("ruby-railties" ,ruby-railties)
+       ("ruby-rake" ,ruby-rake)
+       ("ruby-redis" ,ruby-redis)
+       ("ruby-redis-namespace" ,ruby-redis-namespace)
+       ("ruby-seed-fu" ,ruby-seed-fu)
+       ("ruby-sprockets-rails" ,ruby-sprockets-rails)
+       ))
+    (native-inputs
+     `(
+       ))
+    (synopsis "Platform for community discussion")
+    (description "Discourse is the 100% open source discussion platform built
+for the next decade of the Internet.  Use it as a mailing list, discussion
+forum, long-form chat room, and more!")
+    (home-page "https://www.discourse.org/")
+    (license license:gpl2)))
 
 (define-public ruby-seed-fu
   (package
@@ -445,6 +451,7 @@ hopefully the most robust seed data system around.")
     (home-page "https://github.com/discourse/mini_mime")
     (license license:expat)))
 
+;; TODO: deal with bundled libraries
 (define-public ruby-mini-suffix
   (package
     (name "ruby-mini-suffix")
@@ -494,11 +501,6 @@ hopefully the most robust seed data system around.")
     (version "1.8.1")
     (source
       (origin
-        ;(method url-fetch)
-        ;(uri (rubygems-uri "redis-namespace" version))
-        ;(sha256
-        ; (base32
-        ;  "0k65fr7f8ciq7d9nwc5ziw1d32zsxilgmqdlj3359rz5jgb0f5y8"))))
         (method git-fetch)
         (uri (git-reference
                (url "https://github.com/resque/redis-namespace")
@@ -606,7 +608,8 @@ of @code{ActiveModelSerializers}.")
           "1d2lywfzj4h117b67cwl76a6zl7q1vmgajzn51w5ifvdpc5rssli"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
+     `(#:tests? #f  ; TODO: enable
+       #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'adjust-dependency-version-contstriants
            (lambda _
@@ -618,6 +621,9 @@ of @code{ActiveModelSerializers}.")
                (("minitest.*") "minitest'\n")
                ((".*json_schema.*") "") ; can't seem to find it during the 'check phase
                )
+             (substitute* "Gemfile"
+               (("rubocop.*") "rubocop'\n")
+               )
              #t)))))
     (propagated-inputs
      `(("ruby-actionpack" ,ruby-actionpack)
@@ -630,16 +636,17 @@ of @code{ActiveModelSerializers}.")
        ("ruby-codeclimate-test-reporter" ,ruby-codeclimate-test-reporter)
        ("ruby-grape" ,ruby-grape)
        ("ruby-json-schema" ,ruby-json-schema)
-       ;("ruby-kaminari" ,ruby-kaminari-0.16)
        ("ruby-kaminari" ,ruby-kaminari)
        ("ruby-m" ,ruby-m)
-       ;("ruby-minitest" ,ruby-minitest-5.10)
        ("ruby-minitest" ,ruby-minitest)
+       ("ruby-pry" ,ruby-pry)
        ("ruby-rails" ,ruby-rails)
+       ("ruby-rubocop" ,ruby-rubocop)
        ("ruby-simplecov" ,ruby-simplecov)
        ("ruby-sqlite3" ,ruby-sqlite3-1.3)
        ("ruby-timecop" ,ruby-timecop)
        ("ruby-will-paginate" ,ruby-will-paginate)
+       ("ruby-yard" ,ruby-yard)
        ))
     (synopsis "Generate JSON in an object-oriented manner")
     (description
@@ -661,7 +668,14 @@ object-oriented and convention-driven manner.")
           "1lj5x8jrs9whgynfksvlnlds4crdi6dm9bb3vh654s8vpqxbjcbn"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:tests? #f))    ; TODO
+     `(#:tests? #f  ; Tests require ancient version of ruby-twitter.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'adjust-version-requirements
+           (lambda _
+             (substitute* "onebox.gemspec"
+               (("twitter.*") "twitter'\n"))
+             #t)))))
     (propagated-inputs
      `(("ruby-addressable" ,ruby-addressable)
        ("ruby-htmlentities" ,ruby-htmlentities)
@@ -670,11 +684,13 @@ object-oriented and convention-driven manner.")
        ("ruby-nokogiri" ,ruby-nokogiri)
        ("ruby-sanitize" ,ruby-sanitize)))
     (native-inputs
-     `(
+     `(("ruby-fakeweb" ,ruby-fakeweb)
+       ("ruby-mocha" ,ruby-mocha)
+       ("ruby-pry" ,ruby-pry)
        ("ruby-rake" ,ruby-rake)
        ("ruby-rspec" ,ruby-rspec)
-       ;("ruby-fakeweb" ,ruby-fakeweb)
-       ))
+       ("ruby-rubocop-discourse" ,ruby-rubocop-discourse)
+       ("ruby-twitter" ,ruby-twitter)))
     (synopsis "Generate embeddable HTML previews from URLs")
     (description "This package provides a gem for generating embeddable HTML
 previews from URLs.")
@@ -1061,7 +1077,7 @@ latest ember versions.")
           "0hckijk9aa628nx66vr7axfsk7zfdkskaxj1mdzikk019q3h54fr"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:tests? #f  ; TODO: Upgrade ruby-rubocop >= 1.1.0
+     `(#:tests? #f  ; Don't know how to build task 'test'
        #:phases
        (modify-phases %standard-phases
          (add-before 'check 'pre-check
@@ -1158,34 +1174,6 @@ latest ember versions.")
     (home-page "http://jasmine.github.io/")
     (license license:expat)))
 
-(define-public ruby-rubocop-rspec
-  (package
-    (name "ruby-rubocop-rspec")
-    (version "2.2.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rubocop-rspec" version))
-        (sha256
-         (base32
-          "0jj6h9ynmacvi2v62dc50qxwrrlvm1hmiblpxc0w2kypik1255ds"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-rubocop" ,ruby-rubocop)
-       ("ruby-rubocop-ast" ,ruby-rubocop-ast)))
-    (synopsis
-      "    Code style checking for RSpec files.
-    A plugin for the RuboCop code style enforcing & linting tool.
-")
-    (description
-      "    Code style checking for RSpec files.
-    A plugin for the RuboCop code style enforcing & linting tool.
-")
-    (home-page "https://github.com/rubocop-hq/rubocop-rspec")
-    (license license:expat)))
-
 (define-public ruby-rubocop-discourse
   (package
     (name "ruby-rubocop-discourse")
@@ -2536,27 +2524,26 @@ Inspired by Erlang, Clojure, Go, JavaScript, actors, and classic concurrency pat
           "15jnbpl7b08im4g42ambc850w01lmc49k1z4438ipj83xsj5x32w"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
+     `(#:tests? #f  ; needs pygments
+       #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
            (lambda _
-             ;(delete-file "Gemfile.lock")
              (substitute* "Gemfile.lock"
                (("\\(.*\\)") ""))
              #t)))))
     (propagated-inputs
-     `(
-       ;("ruby-method-source" ,ruby-method-source)
-       ;("ruby-rake" ,ruby-rake)
-       ))
+     `(("ruby-method-source" ,ruby-method-source)
+       ("ruby-rake" ,ruby-rake)))
     (native-inputs
-     `(
-       ("ruby-activesupport" ,ruby-activesupport)
+     `(("ruby-activesupport" ,ruby-activesupport)
        ("ruby-allocation-stats" ,ruby-allocation-stats)
+       ("ruby-appraisal" ,ruby-appraisal)
        ("ruby-benchmark-ips" ,ruby-benchmark-ips)
        ("ruby-coveralls" ,ruby-coveralls)
        ("ruby-rdiscount" ,ruby-rdiscount)
-       ))
+       ("ruby-rocco" ,ruby-rocco)
+       ("ruby-simplecov" ,ruby-simplecov)))
     (synopsis
       "Run test/unit tests by line number. Metal!")
     (description
@@ -2607,26 +2594,847 @@ Inspired by Erlang, Clojure, Go, JavaScript, actors, and classic concurrency pat
           "16srf8cr8ynlafyh6ls654b9a3bqgai8n3y86zzv9mcpvlk6k27g"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         ;(add-after 'unpack 'use-system-discount
-         ;  (lambda _
-         ;    (substitute* "Rakefile"
-         ;      (("FileList\\['ext.*")
-         ;       "FileList['ext/*.rb', 'ext/rdiscount.c', \"ext/ruby-#{RUBYDIGEST}\"] do\n"))
-         ;    (substitute* "ext/extconf.rb"
-         ;      (("(dir_config\\('rdiscount'\\))" dirconfig)
-         ;       (string-append dirconfig "\n\nhave_library('markdown')\n")))
-         ;    #t))
-         )))
-    (inputs
-     `(
-       ("markdown" ,(@ (gnu packages markup) markdown))
-       ))
+     `(#:tests? #f))    ; TODO: figure this out later
     (synopsis
       "Fast Implementation of Gruber's Markdown in C")
     (description
       "Fast Implementation of Gruber's Markdown in C")
     (home-page "http://dafoster.net/projects/rdiscount/")
+    (license license:bsd-3)))
+
+(define-public ruby-fakeweb
+  (package
+    (name "ruby-fakeweb")
+    (version "1.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "fakeweb" version))
+        (sha256
+         (base32
+          "1a09z9nb369bvwpghncgd5y4f95lh28w0q258srh02h22fz9dj8y"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; File does not exist: samuel/net_http
+    (native-inputs
+     `(
+       ;("ruby-jeweler" ,ruby-jeweler)
+       ("ruby-mocha" ,ruby-mocha)
+       ;("ruby-rcov" ,ruby-rcov)
+       ("ruby-sdoc" ,ruby-sdoc)
+       ))
+    (synopsis
+      "FakeWeb is a helper for faking web requests in Ruby. It works at a global level, without modifying code or writing extensive stubs.")
+    (description
+      "FakeWeb is a helper for faking web requests in Ruby.  It works at a global level, without modifying code or writing extensive stubs.")
+    (home-page "http://github.com/chrisk/fakeweb")
     (license #f)))
 
+(define-public ruby-simple-oauth
+  (package
+    (name "ruby-simple-oauth")
+    (version "0.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "simple_oauth" version))
+        (sha256
+         (base32
+          "0dw9ii6m7wckml100xhjc6vxpjcry174lbi9jz5v7ibjr3i94y8l"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     `(
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-yardstick" ,ruby-yardstick)
+       ))
+    (synopsis "Build and verify OAuth headers")
+    (description
+      "Simply builds and verifies OAuth headers")
+    (home-page "https://github.com/laserlemon/simple_oauth")
+    (license license:expat)))
+
+(define-public ruby-naught
+  (package
+    (name "ruby-naught")
+    (version "1.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "naught" version))
+        (sha256
+         (base32
+          "1wwjx35zgbc0nplp8a866iafk4zsrbhwwz4pav5gydr2wm26nksg"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "default"))
+    (native-inputs
+     `(("ruby-coveralls" ,ruby-coveralls)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-simplecov" ,ruby-simplecov)))
+    (synopsis "Toolkit for building Null Objects")
+    (description "Naught is a toolkit for building Null Objects.")
+    (home-page "https://github.com/avdi/naught")
+    (license license:expat)))
+
+(define-public ruby-memoizable
+  (package
+    (name "ruby-memoizable")
+    (version "0.4.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "memoizable" version))
+        (sha256
+         (base32
+          "0v42bvghsvfpzybfazl14qhkrjvx0xlmxz0wwqc960ga1wld5x5c"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     `(("ruby-thread-safe" ,ruby-thread-safe)))
+    (native-inputs
+     `(("ruby-coveralls" ,ruby-coveralls)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-simplecov" ,ruby-simplecov)))
+    (synopsis "Memoize method return values")
+    (description "Memoize method return values")
+    (home-page "https://github.com/dkubb/memoizable")
+    (license license:expat)))
+
+(define-public ruby-ffi-compiler
+  (package
+    (name "ruby-ffi-compiler")
+    (version "1.0.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "ffi-compiler" version))
+        (sha256
+         (base32
+          "0c2caqm9wqnbidcb8dj4wd3s902z15qmgxplwyfyqbwa0ydki7q1"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; LoadError: cannot load such file -- rubygems/tasks
+    (propagated-inputs
+     `(("ruby-ffi" ,ruby-ffi)
+       ("ruby-rake" ,ruby-rake)))
+    (synopsis "Ruby FFI library")
+    (description "Ruby FFI library")
+    (home-page "http://wiki.github.com/ffi/ffi")
+    (license license:asl2.0)))
+
+(define-public ruby-http-parser
+  (package
+    (name "ruby-http-parser")
+    (version "1.2.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "http-parser" version))
+        (sha256
+         (base32
+          "18qqvckvqjffh88hfib6c8pl9qwk9gp89w89hl3f2s1x8hgyqka1"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'pre-build
+           (lambda _
+             (invoke "rake" "compile"))))))
+    (propagated-inputs
+     `(("ruby-ffi-compiler" ,ruby-ffi-compiler)))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)))
+    (synopsis "Http parser for Ruby")
+    (description
+      "    A super fast http parser for ruby.
+    Cross platform and multiple ruby implementation support thanks to ffi.
+")
+    (home-page "https://github.com/cotag/http-parser")
+    (license license:expat)))
+
+(define-public ruby-http-form-data
+  (package
+    (name "ruby-http-form-data")
+    (version "2.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "http-form_data" version))
+        (sha256
+         (base32
+          "1wx591jdhy84901pklh1n9sgh74gnvq1qyqxwchni1yrc49ynknc"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "default"))
+    (native-inputs
+     `(("ruby-coveralls" ,ruby-coveralls)
+       ("ruby-guard" ,ruby-guard)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-simplecov" ,ruby-simplecov)))
+    (synopsis
+      "Utility-belt to build form data request bodies. Provides support for `application/x-www-form-urlencoded` and `multipart/form-data` types.")
+    (description
+      "Utility-belt to build form data request bodies.  Provides support for `application/x-www-form-urlencoded` and `multipart/form-data` types.")
+    (home-page "https://github.com/httprb/form_data.rb")
+    (license license:expat)))
+
+(define-public ruby-http
+  (package
+    (name "ruby-http")
+    (version "4.4.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "http" version))
+        (sha256
+         (base32
+          "0z8vmvnkrllkpzsxi94284di9r63g9v561a16an35izwak8g245y"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "default"
+       ;; A bunch of tests require network access. Should we borrow Debain's patches?
+       #:tests? #f))
+    (propagated-inputs
+     `(("ruby-addressable" ,ruby-addressable)
+       ("ruby-http-cookie" ,ruby-http-cookie)
+       ("ruby-http-form-data" ,ruby-http-form-data)
+       ("ruby-http-parser" ,ruby-http-parser)))
+    (native-inputs
+     `(("ruby-certificate-authority" ,ruby-certificate-authority)
+       ("ruby-coveralls" ,ruby-coveralls)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-rspec-its" ,ruby-rspec-its)
+       ("ruby-rubocop" ,ruby-rubocop)
+       ("ruby-simplecov" ,ruby-simplecov)
+       ("ruby-yardstick" ,ruby-yardstick)))
+    (synopsis "Client library for making requests from Ruby")
+    (description "This package provides a client library for making requests
+from Ruby.  It uses a simple method chaining system for building requests,
+similar to Python's Requests.")
+    (home-page "https://github.com/httprb/http")
+    (license license:expat)))
+
+(define-public ruby-equalizer
+  (package
+    (name "ruby-equalizer")
+    (version "0.0.11")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "equalizer" version))
+        (sha256
+         (base32
+          "1kjmx3fygx8njxfrwcmn7clfhjhb6bvv3scy2lyyi0wqyi3brra4"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; Prevent cycle with ruby-devtools.
+    (synopsis
+      "Module to define equality, equivalence and inspection methods")
+    (description
+      "Module to define equality, equivalence and inspection methods")
+    (home-page "https://github.com/dkubb/equalizer")
+    (license license:expat)))
+
+(define-public ruby-buftok
+  (package
+    (name "ruby-buftok")
+    (version "0.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "buftok" version))
+        (sha256
+         (base32
+          "1rzsy1vy50v55x9z0nivf23y0r9jkmq6i130xa75pq9i8qrn1mxs"))))
+    (build-system ruby-build-system)
+    (synopsis
+      "BufferedTokenizer extracts token delimited entities from a sequence of arbitrary inputs")
+    (description
+      "BufferedTokenizer extracts token delimited entities from a sequence of arbitrary inputs")
+    (home-page "https://github.com/sferik/buftok")
+    (license license:expat)))
+
+(define-public ruby-twitter
+  (package
+    (name "ruby-twitter")
+    (version "7.0.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/sferik/twitter")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "057d3wg3850r7xyhb5xv8xgxv7qra31ic0m317mwi2n5w1p4n480"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     `(("ruby-addressable" ,ruby-addressable)
+       ("ruby-buftok" ,ruby-buftok)
+       ("ruby-equalizer" ,ruby-equalizer)
+       ("ruby-http" ,ruby-http)
+       ("ruby-http-form-data" ,ruby-http-form-data)
+       ("ruby-http-parser.rb" ,ruby-http-parser.rb)
+       ("ruby-memoizable" ,ruby-memoizable)
+       ("ruby-multipart-post" ,ruby-multipart-post)
+       ("ruby-naught" ,ruby-naught)
+       ("ruby-simple-oauth" ,ruby-simple-oauth)))
+    (native-inputs
+     `(("ruby-coveralls" ,ruby-coveralls)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-rubocop" ,ruby-rubocop)
+       ("ruby-simplecov" ,ruby-simplecov)
+       ("ruby-timecop" ,ruby-timecop)
+       ("ruby-webmock" ,ruby-webmock)
+       ("ruby-yard" ,ruby-yard)
+       ("ruby-yardstick" ,ruby-yardstick)))
+    (synopsis "Ruby interface to the Twitter API")
+    (description "This package provides a Ruby interface to the Twitter API.")
+    (home-page "https://sferik.github.io/twitter/")
+    (license license:expat)))
+
+(define-public ruby-yardstick
+  (package
+    (name "ruby-yardstick")
+    (version "0.9.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "yardstick" version))
+        (sha256
+         (base32
+          "0vn0br8x0n7b9i2raz79g480cn711zichs8rvijb3h1pk9m1d6n3"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; Prevent cycle with ruby-devtools.
+    (propagated-inputs
+     `(("ruby-yard" ,ruby-yard)))
+    (synopsis "Measure YARD documentation coverage")
+    (description
+      "Measure YARD documentation coverage")
+    (home-page "https://github.com/dkubb/yardstick")
+    (license license:expat)))
+
+(define-public ruby-psych
+  (package
+    (name "ruby-psych")
+    (version "3.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "psych" version))
+        (sha256
+         (base32
+          "0r8rd9q4g6wda6k2bvsgpwnn9wbaqglb843bm4f1q6xfjkhs5h0l"))))
+    (build-system ruby-build-system)
+    (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,
+Psych also knows how to serialize and de-serialize most Ruby objects to and from the YAML format.
+")
+    (description
+      "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,
+Psych also knows how to serialize and de-serialize most Ruby objects to and from the YAML format.
+")
+    (home-page "https://github.com/ruby/psych")
+    (license license:expat)))
+
+(define-public ruby-kwalify
+  (package
+    (name "ruby-kwalify")
+    (version "0.7.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "kwalify" version))
+        (sha256
+         (base32
+          "1ngxg3ysq5vip9dn3d32ajc7ly61kdin86hfycm1hkrcvkkn1vjf"))))
+    (build-system ruby-build-system)
+    (synopsis
+      "   Kwalify is a parser, schema validator, and data binding tool for YAML and JSON.
+")
+    (description
+      "   Kwalify is a parser, schema validator, and data binding tool for YAML and JSON.
+")
+    (home-page "http://www.kuwata-lab.com/kwalify/")
+    (license #f)))
+
+(define-public ruby-reek
+  (package
+    (name "ruby-reek")
+    (version "6.0.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "reek" version))
+        (sha256
+         (base32
+          "1zlfvj1dh064y119sfz9w3rkj3d9qkwm1k6dkcjymr6cwj6cqqp2"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     `(("ruby-kwalify" ,ruby-kwalify)
+       ("ruby-parser" ,ruby-parser)
+       ("ruby-psych" ,ruby-psych)
+       ("ruby-rainbow" ,ruby-rainbow)))
+    (synopsis
+      "Reek is a tool that examines Ruby classes, modules and methods and reports any code smells it finds.")
+    (description
+      "Reek is a tool that examines Ruby classes, modules and methods and reports any code smells it finds.")
+    (home-page "https://github.com/troessner/reek")
+    (license license:expat)))
+
+(define-public ruby-procto
+  (package
+    (name "ruby-procto")
+    (version "0.0.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "procto" version))
+        (sha256
+         (base32
+          "13imvg1x50rz3r0yyfbhxwv72lbf7q28qx9l9nfbb91h2n9ch58c"))))
+    (build-system ruby-build-system)
+    (synopsis
+      "Turns your object into a method object")
+    (description
+      "Turns your object into a method object")
+    (home-page "https://github.com/snusnu/procto")
+    (license license:expat)))
+
+(define-public ruby-flog
+  (package
+    (name "ruby-flog")
+    (version "4.6.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "flog" version))
+        (sha256
+         (base32
+          "0qy7s5q450wbc78av8h0w8inrdz46vp4rqnm5ikpsnh7dilh7amm"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     `(("ruby-path-expander" ,ruby-path-expander)
+       ("ruby-ruby-parser" ,ruby-ruby-parser)
+       ("ruby-sexp-processor" ,ruby-sexp-processor)))
+    (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.")
+    (description
+      "Flog reports the most tortured code in an easy to read pain
+report.  The higher the score, the more pain the code is in.")
+    (home-page "http://ruby.sadi.st/")
+    (license license:expat)))
+
+(define-public ruby-path-expander
+  (package
+    (name "ruby-path-expander")
+    (version "1.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "path_expander" version))
+        (sha256
+         (base32
+          "1l40n8i959c8bk5m9cfs4m75h2cq01wjwhahnkw7jxgicpva30gv"))))
+    (build-system ruby-build-system)
+    (synopsis
+      "PathExpander helps pre-process command-line arguments expanding
+directories into their constituent files. It further helps by
+providing additional mechanisms to make specifying subsets easier
+with path subtraction and allowing for command-line arguments to be
+saved in a file.
+
+NOTE: this is NOT an options processor. It is a path processor
+(basically everything else besides options). It does provide a
+mechanism for pre-filtering cmdline options, but not with the intent
+of actually processing them in PathExpander. Use OptionParser to
+deal with options either before or after passing ARGV through
+PathExpander.")
+    (description
+      "PathExpander helps pre-process command-line arguments expanding
+directories into their constituent files.  It further helps by
+providing additional mechanisms to make specifying subsets easier
+with path subtraction and allowing for command-line arguments to be
+saved in a file.
+
+NOTE: this is NOT an options processor.  It is a path processor
+(basically everything else besides options).  It does provide a
+mechanism for pre-filtering cmdline options, but not with the intent
+of actually processing them in PathExpander.  Use OptionParser to
+deal with options either before or after passing ARGV through
+PathExpander.")
+    (home-page "https://github.com/seattlerb/path_expander")
+    (license license:expat)))
+
+(define-public ruby-flay
+  (package
+    (name "ruby-flay")
+    (version "2.12.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "flay" version))
+        (sha256
+         (base32
+          "1my4ga8a8wsqb4nqbf31gvml64ngr66r0zim4mx2kvi76zygczv7"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     `(("ruby-erubis" ,ruby-erubis)
+       ("ruby-path-expander" ,ruby-path-expander)
+       ("ruby-ruby-parser" ,ruby-ruby-parser)
+       ("ruby-sexp-processor" ,ruby-sexp-processor)))
+    (synopsis
+      "Flay analyzes code for structural similarities. Differences in literal
+values, variable, class, method names, whitespace, programming style,
+braces vs do/end, etc are all ignored. Making this totally rad.")
+    (description
+      "Flay analyzes code for structural similarities.  Differences in literal
+values, variable, class, method names, whitespace, programming style,
+braces vs do/end, etc are all ignored.  Making this totally rad.")
+    (home-page "http://ruby.sadi.st/")
+    (license license:expat)))
+
+(define-public ruby-concord
+  (package
+    (name "ruby-concord")
+    (version "0.1.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "concord" version))
+        (sha256
+         (base32
+          "1vznyzcd3z7wiwjfgr941nq405kd7zm5vjb3sv2mzbbrcla9qkhq"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     `(("ruby-adamantium" ,ruby-adamantium)
+       ("ruby-equalizer" ,ruby-equalizer)))
+    (synopsis "Helper for object composition")
+    (description "Helper for object composition")
+    (home-page "https://github.com/mbj/concord")
+    (license license:expat)))
+
+(define-public ruby-anima
+  (package
+    (name "ruby-anima")
+    (version "0.3.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "anima" version))
+        (sha256
+         (base32
+          "007wrc8px9ql4nqp34w0ffb9nj2nrbrcxvy036ng28bpbig7fzs6"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     `(("ruby-abstract-type" ,ruby-abstract-type)
+       ("ruby-adamantium" ,ruby-adamantium)
+       ("ruby-equalizer" ,ruby-equalizer)))
+    (synopsis
+      "Initialize object attributes via attributes hash")
+    (description
+      "Initialize object attributes via attributes hash")
+    (home-page "http://github.com/mbj/anima")
+    (license license:expat)))
+
+(define-public ruby-ice-nine
+  (package
+    (name "ruby-ice-nine")
+    (version "0.11.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "ice_nine" version))
+        (sha256
+         (base32
+          "1nv35qg1rps9fsis28hz2cq2fx1i96795f91q4nmkm934xynll2x"))))
+    (build-system ruby-build-system)
+    (synopsis "Deep Freeze Ruby Objects")
+    (description "Deep Freeze Ruby Objects")
+    (home-page "https://github.com/dkubb/ice_nine")
+    (license license:expat)))
+
+(define-public ruby-adamantium
+  (package
+    (name "ruby-adamantium")
+    (version "0.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "adamantium" version))
+        (sha256
+         (base32
+          "0165r2ikgfwv2rm8dzyijkp74fvg0ni72hpdx8ay2v7cj08dqyak"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     `(("ruby-ice-nine" ,ruby-ice-nine)
+       ("ruby-memoizable" ,ruby-memoizable)))
+    (synopsis "Immutable extensions to objects")
+    (description "Immutable extensions to objects")
+    (home-page "https://github.com/dkubb/adamantium")
+    (license license:expat)))
+
+(define-public ruby-abstract-type
+  (package
+    (name "ruby-abstract-type")
+    (version "0.0.7")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "abstract_type" version))
+        (sha256
+         (base32
+          "09330cmhrc2wmfhdj9zzg82sv6cdhm3qgdkva5ni5xfjril2pf14"))))
+    (build-system ruby-build-system)
+    (synopsis
+      "Module to declare abstract classes and methods")
+    (description
+      "Module to declare abstract classes and methods")
+    (home-page "https://github.com/dkubb/abstract_type")
+    (license license:expat)))
+
+(define-public ruby-devtools
+  (package
+    (name "ruby-devtools")
+    (version "0.1.26")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "devtools" version))
+        (sha256
+         (base32
+          "08c8j2zcq9hhxpz9wsyy9v8mfs4d4smyagi0qr398w1qryb6w4m0"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     `(("ruby-abstract-type" ,ruby-abstract-type)
+       ("ruby-adamantium" ,ruby-adamantium)
+       ("ruby-anima" ,ruby-anima)
+       ("ruby-concord" ,ruby-concord)
+       ("ruby-flay" ,ruby-flay)
+       ("ruby-flog" ,ruby-flog)
+       ("ruby-procto" ,ruby-procto)
+       ("ruby-rake" ,ruby-rake)
+       ("ruby-reek" ,ruby-reek)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-rspec-core" ,ruby-rspec-core)
+       ("ruby-rspec-its" ,ruby-rspec-its)
+       ("ruby-rubocop" ,ruby-rubocop)
+       ("ruby-simplecov" ,ruby-simplecov)
+       ("ruby-yard" ,ruby-yard)
+       ("ruby-yardstick" ,ruby-yardstick)))
+    (synopsis "A metagem wrapping development tools")
+    (description
+      "This package provides a metagem wrapping development tools")
+    (home-page "https://github.com/rom-rb/devtools")
+    (license license:expat)))
+
+(define-public ruby-certificate-authority
+  (package
+    (name "ruby-certificate-authority")
+    (version "1.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "certificate_authority" version))
+        (sha256
+         (base32
+          "1d4j37i40l76pdkxx9964f58d83fjv82x3c0sykrpiixcmjcax44"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "spec"
+       ;; An error occurred while loading spec_helper.
+       ;; Failure/Error: return gem_original_require(path)
+       #:tests? #f))
+    (native-inputs
+     `(
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-rubocop" ,ruby-rubocop)
+       ))
+    (synopsis
+      "Ruby gem for managing the core functions outlined in RFC-3280 for PKI")
+    (description
+      "Ruby gem for managing the core functions outlined in RFC-3280 for PKI")
+    (home-page "https://github.com/cchandler/certificate_authority")
+    (license license:expat)))
+
+(define-public ruby-msgpack
+  (package
+    (name "ruby-msgpack")
+    (version "1.4.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "msgpack" version))
+        (sha256
+         (base32
+          "06iajjyhx0rvpn4yr3h1hc4w4w3k59bdmfhxnjzzh76wsrdxxrc6"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "default"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'install-fake-gem
+           (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))))
+       ))
+    (native-inputs
+     `(
+       ("ruby-rake-compiler" ,ruby-rake-compiler)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-yard" ,ruby-yard)
+       ))
+    (synopsis
+      "MessagePack is a binary-based efficient object serialization library. It enables to exchange structured objects between many languages like JSON. But unlike JSON, it is very fast and small.")
+    (description
+      "MessagePack is a binary-based efficient object serialization library.  It enables to exchange structured objects between many languages like JSON.  But unlike JSON, it is very fast and small.")
+    (home-page "http://msgpack.org/")
+    (license license:asl2.0)))
+
+(define-public ruby-bootsnap
+  (package
+    (name "ruby-bootsnap")
+    (version "1.7.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/Shopify/bootsnap")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "14l0r074kpy9pwzs6zbgq3zpx32mpk4905k23v0znqgkmrb6s5bm"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f  ; can't find rake-compiler
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'replace-git-ls-files
+           (lambda _
+             (substitute* "bootsnap.gemspec"
+               (("git ls-files -z ext lib")
+                "find ext lib -type f -print0 | sort -z"))
+             #t)))))
+    (propagated-inputs
+     `(("ruby-msgpack" ,ruby-msgpack)))
+    (native-inputs
+     `(("ruby-minitest" ,ruby-minitest)
+       ("ruby-mocha" ,ruby-mocha)
+       ("ruby-rake" ,ruby-rake)
+       ("ruby-rake-compiler" ,ruby-rake-compiler)))
+    (synopsis "Boot large ruby/rails apps faster")
+    (description "Boot large ruby/rails apps faster")
+    (home-page "https://github.com/Shopify/bootsnap")
+    (license license:expat)))
+
+(define-public ruby-actionview-precompiler
+  (package
+    (name "ruby-actionview-precompiler")
+    (version "0.2.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jhawthorn/actionview_precompiler")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0hyvzhyx3bmvnmmj247vyfznps835d0zmi3xb6y6s4v570d8mrf0"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f  ; tests expect ruby-actionview >=6.0.a
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'delete-gemfile-lock
+           (lambda _
+             (delete-file "Gemfile.lock")
+             #t)))))
+    (propagated-inputs
+     `(("ruby-actionview" ,ruby-actionview)))
+    (native-inputs
+     `(("ruby-minitest" ,ruby-minitest)
+       ("ruby-pry" ,ruby-pry)))
+    (synopsis
+      "Parses templates for render calls and uses them to precompile")
+    (description
+      "Parses templates for render calls and uses them to precompile")
+    (home-page "https://github.com/jhawthorn/actionview_precompiler")
+    (license license:expat)))
+
+(define-public ruby-rocco
+  (package
+    (name "ruby-rocco")
+    (version "0.8.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "rocco" version))
+        (sha256
+         (base32
+          "0z3wnk8848wphrzyb61adl1jbfjlsqnzkayp2m0qmisg566352l1"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; needs pygments
+    (propagated-inputs
+     `(("ruby-mustache" ,ruby-mustache)
+       ;; pygments
+       ("ruby-redcarpet" ,ruby-redcarpet)))
+    (synopsis "Docco in Ruby")
+    (description "Docco in Ruby")
+    (home-page "https://rtomayko.github.com/rocco/")
+    (license license:expat)))
+
+(define-public ruby-bundler
+  (package
+    (name "ruby-bundler")
+    (version "2.2.11")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "bundler" version))
+        (sha256
+         (base32
+          "1izx6wsjdm6mnbxazgz1z5qbhwrrisbq0np2nmx4ij6lrqjy18jf"))))
+    (build-system ruby-build-system)
+    (synopsis
+      "Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably")
+    (description
+      "Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably")
+    (home-page "https://bundler.io/")
+    (license license:expat)))
+
+(define-public ruby-appraisal
+  (package
+    (name "ruby-appraisal")
+    (version "2.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "appraisal" version))
+        (sha256
+         (base32
+          "0j092f2zfgb6afimidgspzqg4iw6n4mrs2zp8hhs2m2giav4mkrn"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))    ; Tests require activesupport, cycle with ruby-m
+    (propagated-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rake" ,ruby-rake)
+       ("ruby-thor" ,ruby-thor)))
+    (synopsis
+      "Appraisal integrates with bundler and rake to test your library against different versions of dependencies in repeatable scenarios called \"appraisals.\"")
+    (description
+      "Appraisal integrates with bundler and rake to test your library against different versions of dependencies in repeatable scenarios called \"appraisals.\"")
+    (home-page
+      "http://github.com/thoughtbot/appraisal")
+    (license license:expat)))
+