+
+(define-public ruby-puma
+ (package
+ (name "ruby-puma")
+ (version "3.6.0")
+ (source
+ (origin
+ (method url-fetch)
+ ;; Fetch from GitHub because distributed gem does not contain tests.
+ (uri (string-append "https://github.com/puma/puma/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "08aws79n9slcr50d9lwm011cp1pxvr1409c2jmyjxywvrc0a30v1"))
+ ;; Ignore broken tests reported upstream.
+ ;; https://github.com/puma/puma/issues/995
+ ;; https://github.com/puma/puma/issues/1044
+ (patches (search-patches "ruby-puma-ignore-broken-test.patch"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'delete-integration-tests
+ (lambda _
+ ;; One broken test in this file cannot be easily removed in
+ ;; isolation, it probably causes race conditions. So we delete
+ ;; the entire file.
+ (delete-file "test/test_integration.rb")
+ #t))
+ (add-before 'build 'fix-gemspec
+ (lambda _
+ (substitute* "puma.gemspec"
+ (("git ls-files") "find * |sort"))
+ #t)))))
+ (native-inputs
+ `(("ruby-hoe" ,ruby-hoe)
+ ("ruby-rake-compiler" ,ruby-rake-compiler)
+ ("ruby-hoe-git" ,ruby-hoe-git)
+ ("ruby-rack" ,ruby-rack)))
+ (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
+ (description
+ "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
+for Ruby/Rack applications. Puma is intended for use in both development and
+production environments. In order to get the best throughput, it is highly
+recommended that you use a Ruby implementation with real threads like Rubinius
+or JRuby.")
+ (home-page "http://puma.io")
+ (license license:expat)))
+
+(define-public ruby-hoe-git
+ (package
+ (name "ruby-hoe-git")
+ (version "1.6.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "hoe-git" version))
+ (sha256
+ (base32
+ "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-hoe" ,ruby-hoe)
+ ("git" ,git)))
+ (synopsis "Hoe plugins for tighter Git integration")
+ (description
+ "This package provides a set of Hoe plugins for tighter Git integration.
+It provides tasks to automate release tagging and pushing and changelog
+generation.")
+ (home-page "http://github.com/jbarnette/hoe-git")
+ (license license:expat)))
+
+(define-public ruby-sequel
+ (package
+ (name "ruby-sequel")
+ (version "4.40.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "sequel" version))
+ (sha256
+ (base32
+ "0r39dv3yprai0cy7hslfxswjr4fg783xwxskmbih8ry24f18lbk0"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
+ (synopsis "Database toolkit for Ruby")
+ (description "Sequel provides thread safety, connection pooling and a
+concise DSL for constructing SQL queries and table schemas. It includes a
+comprehensive ORM layer for mapping records to Ruby objects and handling
+associated records.")
+ (home-page "http://sequel.jeremyevans.net")
+ (license license:expat)))
+
+(define-public ruby-timecop
+ (package
+ (name "ruby-timecop")
+ (version "0.8.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "timecop" version))
+ (sha256
+ (base32
+ "0vwbkwqyxhavzvr1820hqwz43ylnfcf6w4x6sag0nghi44sr9kmx"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'set-check-rubylib
+ (lambda _
+ ;; Set RUBYLIB so timecop tests finds its own lib.
+ (setenv "RUBYLIB" "lib")
+ #t)))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-minitest-rg" ,ruby-minitest-rg)
+ ("ruby-mocha" ,ruby-mocha)
+ ("ruby-activesupport" ,ruby-activesupport)))
+ (synopsis "Test mocks for time-dependent functions")
+ (description
+ "Timecop provides \"time travel\" and \"time freezing\" capabilities,
+making it easier to test time-dependent code. It provides a unified method to
+mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
+call.")
+ (home-page "https://github.com/travisjeffery/timecop")
+ (license license:expat)))
+
+(define-public ruby-concurrent
+ (package
+ (name "ruby-concurrent")
+ (version "1.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ ;; Download from GitHub because the rubygems version does not contain
+ ;; Rakefile.
+ (uri (string-append
+ "https://github.com/ruby-concurrency/concurrent-ruby/archive/v"
+ version
+ ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1x3g2admp14ykwfxidsicqbhlfsnxh9wyc806np4i15hws4if1d8"))
+ ;; Exclude failing test reported at
+ ;; https://github.com/ruby-concurrency/concurrent-ruby/issues/534
+ (patches (search-patches "ruby-concurrent-ignore-broken-test.patch"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:test-target "spec"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'replace-git-ls-files 'remove-extra-gemspecs
+ (lambda _
+ ;; Delete extra gemspec files so 'first-gemspec' chooses the
+ ;; correct one.
+ (delete-file "concurrent-ruby-edge.gemspec")
+ (delete-file "concurrent-ruby-ext.gemspec")
+ #t))
+ (add-before 'build 'replace-git-ls-files2
+ (lambda _
+ (substitute* "support/file_map.rb"
+ (("git ls-files") "find * |sort"))
+ #t))
+ (add-before 'check 'rake-compile
+ ;; Fix the test error described at
+ ;; https://github.com/ruby-concurrency/concurrent-ruby/pull/408
+ (lambda _ (zero? (system* "rake" "compile"))))
+ (add-before 'check 'remove-timecop-dependency
+ ;; Remove timecop-dependent tests as having timecop as a depedency
+ ;; causes circular depedencies.
+ (lambda _
+ (delete-file "spec/concurrent/executor/timer_set_spec.rb")
+ (delete-file "spec/concurrent/scheduled_task_spec.rb")
+ #t)))))
+ (native-inputs
+ `(("ruby-rake-compiler" ,ruby-rake-compiler)
+ ("ruby-rspec" ,ruby-rspec)))
+ (synopsis "Concurrency tools for Ruby")
+ (description
+ "This library provides modern concurrency tools including agents,
+futures, promises, thread pools, actors, supervisors, and more. It is
+inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
+patterns.")
+ (home-page "http://www.concurrent-ruby.com")
+ (license license:expat)))
+
+(define-public ruby-pkg-config
+ (package
+ (name "ruby-pkg-config")
+ (version "1.1.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "pkg-config" version))
+ (sha256
+ (base32
+ "0lljiqnm0b4z6iy87lzapwrdfa6ps63x2z5zbs038iig8dqx2g0z"))))
+ (build-system ruby-build-system)
+ (arguments
+ ;; Tests require extra files not included in the gem.
+ `(#:tests? #f))
+ (synopsis "Detect libraries for compiling Ruby native extensions")
+ (description
+ "@code{pkg-config} can be used in your extconf.rb to properly detect need
+libraries for compiling Ruby native extensions.")
+ (home-page "https://github.com/ruby-gnome2/pkg-config")
+ (license license:lgpl2.0+)))