summaryrefslogtreecommitdiff
path: root/gnu/packages/ruby.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/ruby.scm')
-rw-r--r--gnu/packages/ruby.scm3322
1 files changed, 3242 insertions, 80 deletions
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 2fde016851..6db0edaac1 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -30,12 +30,18 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages base)
+ #:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages databases)
+ #:use-module (gnu packages rails)
#:use-module (gnu packages readline)
#:use-module (gnu packages autotools)
#:use-module (gnu packages java)
+ #:use-module (gnu packages javascript)
#:use-module (gnu packages libffi)
+ #:use-module (gnu packages libidn)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages lsof)
#:use-module (gnu packages maths)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages networking)
@@ -340,6 +346,42 @@ notebook).")
(home-page "https://github.com/SciRuby/iruby")
(license license:expat)))
+(define-public ruby-rspec-spies
+ (package
+ (name "ruby-rspec-spies")
+ (version "2.1.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rspec-spies" version))
+ (sha256
+ (base32
+ "0pyjy35k59gsiv7l8585yx4gkg2vhycjycz9jlmgkx8s62dxnjgv"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; Tests fail, is this completely deprecated?
+ ;; phases
+ ;; (modify-phases %standard-phases
+ ;; (replace 'check
+ ;; (lambda _
+ ;; (zero? (system* "rspec"))))
+ ;; (add-before 'check 'fix-dependencies
+ ;; (lambda _
+ ;; (delete-file "Gemfile.lock")
+ ;; (substitute* "Gemfile"
+ ;; ((".*jeweler.*") "\n"))
+ ;; #t)))))
+ ;; (native-inputs
+ ;; `(("bundler" ,bundler)
+ ;; ("ruby-appraisal" ,ruby-appraisal)))
+ (propagated-inputs
+ `(("ruby-rspec" ,ruby-rspec-2)))
+ (synopsis "test spies, for rspec")
+ (description "test spies, for rspec")
+ (home-page
+ "http://github.com/technicalpickles/rspec-spies")
+ (license #f)))
+
;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
;; dependencies use RSpec for their test suites! To avoid these circular
;; dependencies, we disable tests for all of the RSpec-related packages.
@@ -455,19 +497,51 @@ outcomes of a code example.")
(source
(origin
(method url-fetch)
- (uri (rubygems-uri "rspec-its" version))
+ ;; Use GitHub as a source because otherwise we cannot patch directly
+ (uri (string-append "https://github.com/rspec/rspec-its/archive/v"
+ version ".tar.gz"))
(sha256
(base32
- "1pwphny5jawcm1hda3vs9pjv1cybaxy17dc1s75qd7drrvx697p3"))))
+ "088f3y7vd3c8g2gpi0z76qabaabfg0fb70ly3d0xqzbani0lrf09"))
+ (patches
+ (list
+ (origin (method url-fetch)
+ (uri (string-append
+ "https://github.com/rspec/rspec-its/commit/"
+ "bfaab439c7c879f5ef25552f41827891f6308373.patch"))
+ (file-name "ruby-rspec-its-fix-specs-for-ruby-2.4.patch")
+ (sha256
+ (base32
+ "0lnik0kvrpgkakvdb2fmzg22pdlraf6kiidr9sv6rnfyviiqwxgh")))))))
(build-system ruby-build-system)
(arguments
- `(#:tests? #f)) ; needs cucumber.
+ `(#:test-target "spec"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'dont-install-gems-from-gemfile
+ (lambda _
+ (substitute* "Gemfile"
+ (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
+ ""))
+ #t))
+ (add-before 'check 'remove-unnecessary-dependency-versions-from-gemfile
+ (lambda _
+ (substitute* "rspec-its.gemspec"
+ (("rake.*") "rake'\n")
+ (("cucumber.*") "cucumber'\n"))
+ #t)))))
(propagated-inputs
`(("ruby-rspec-core" ,ruby-rspec-core)
("ruby-rspec-expectations" ,ruby-rspec-expectations)))
- (synopsis "RSpec extension gem for attribute matching")
- (description "@code{rspec-its} is an RSpec extension gem for attribute
-matching.")
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-cucumber" ,ruby-cucumber)
+ ("ruby-aruba" ,ruby-aruba)))
+ (synopsis "RSpec extension that provides the @code{its} method")
+ (description
+ "RSpec::Its provides the its method as a short-hand to specify the expected
+value of an attribute. For example, one can use @code{its(:size)\\{should
+eq(1)\\}}.")
(home-page "https://github.com/rspec/rspec-its")
(license license:expat)))
@@ -505,6 +579,56 @@ support for stubbing and mocking.")
(propagated-inputs
`(("ruby-diff-lcs" ,ruby-diff-lcs)))))
+(define-public ruby-rspec-pending-for
+ (package
+ (name "ruby-rspec-pending-for")
+ (version "0.1.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rspec-pending_for" version))
+ (sha256
+ (base32
+ "0f9sj7v3j14fvd631smxr04l53pk8dqwn9ybqkjdqmzvcv73b5n6"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:test-target "spec"))
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (propagated-inputs
+ `(("ruby-rspec-core" ,ruby-rspec-core)
+ ("ruby-ruby-engine" ,ruby-ruby-engine)
+ ("ruby_version" ,ruby_version)))
+ (synopsis
+ "Mark specs pending or skipped for specific Ruby engine (e.g. MRI or JRuby) / version combinations")
+ (description
+ "Mark specs pending or skipped for specific Ruby engine (e.g. MRI or JRuby) / version combinations")
+ (home-page
+ "https://github.com/pboling/rspec-pending_for")
+ (license #f)))
+
+(define-public ruby-rspec-rerun
+ (package
+ (name "ruby-rspec-rerun")
+ (version "1.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rspec-rerun" version))
+ (sha256
+ (base32
+ "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(;; No included tests
+ #:tests? #f))
+ (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
+ (synopsis "Re-run failed RSpec tests.")
+ (description "Re-run failed RSpec tests.")
+ (home-page
+ "https://github.com/dblock/rspec-rerun")
+ (license license:expat)))
+
(define-public ruby-rspec
(package
(name "ruby-rspec")
@@ -590,6 +714,26 @@ supported: XML Markup and XML Events.")
(home-page "https://github.com/jimweirich/builder")
(license license:expat)))
+(define-public ruby-bump
+ (package
+ (name "ruby-bump")
+ (version "0.6.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "bump" version))
+ (sha256
+ (base32
+ "1c7ychr61n5xy5np3vj8h4d4jmcn3cwicssvq56mfvg8hph7x2cw"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(;; No included tests
+ #:tests? #f))
+ (synopsis "Bump your gem version file")
+ (description "Bump your gem version file")
+ (home-page "https://github.com/gregorym/bump")
+ (license license:expat)))
+
(define-public ruby-rjb
(package
(name "ruby-rjb")
@@ -641,6 +785,45 @@ configuration, and more.")
(home-page "http://log4r.rubyforge.org/")
(license license:bsd-3)))
+(define-public ruby-appraisal
+ (package
+ (name "ruby-appraisal")
+ (version "2.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "appraisal" version))
+ (sha256
+ (base32
+ "10ng010lhswdykjhwic7bgv28qpjj42qwxvprpj1f4cavdimh4vp"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f ; tests require network access
+ #:test-target "spec"
+ #:phases
+ (modify-phases %standard-phases
+ ;; remove bundler from Rakefile to avoid dependency issues
+ (add-before 'check 'remove-dependency-checking
+ (lambda _
+; (substitute* "Rakefile"
+ ; (("^require 'bundler.*") ""))
+ (substitute* "Gemfile"
+ (("thor.*") "thor'\n"))
+ #t)))))
+ (propagated-inputs
+ `(("bundler" ,bundler)
+ ("ruby-thor" ,ruby-thor)))
+ (native-inputs
+ `(("ruby-activesupport" ,ruby-activesupport)
+ ("ruby-rspec" ,ruby-rspec)))
+ (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)))
+
(define-public ruby-atoulme-antwrap
(package
(name "ruby-atoulme-antwrap")
@@ -726,6 +909,31 @@ AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other formats.")
(home-page "https://asciidoctor.org")
(license license:expat)))
+(define-public ruby-ast
+ (package
+ (name "ruby-ast")
+ (version "2.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "ast" version))
+ (sha256
+ (base32
+ "0pp82blr5fakdk27d1d21xq9zchzb6vmyb1zcsl520s3ygvprn8m"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; TODO: run tests
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-bacon" ,ruby-bacon)
+ ("ruby-racc" ,ruby-racc)))
+ (synopsis
+ "A library for working with Abstract Syntax Trees.")
+ (description
+ "This package provides a library for working with Abstract Syntax Trees.")
+ (home-page "https://whitequark.github.io/ast/")
+ (license license:expat)))
+
(define-public ruby-sporkmonger-rack-mount
;; Testing the addressable gem requires a newer commit than that released, so
;; use an up to date version.
@@ -784,6 +992,150 @@ format.")
(home-page "https://github.com/nicksieger/ci_reporter")
(license license:expat)))
+(define-public ruby-coffee-script-source
+ (package
+ (name "ruby-coffee-script-source")
+ (version "1.10.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "coffee-script-source" version))
+ (sha256
+ (base32
+ "1k4fg39rrkl3bpgchfj94fbl9s4ysaz16w8dkqncf2vyf79l3qz0"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; no tests
+ (synopsis "Source code for the ruby-coffee-script gem.")
+ (description
+ "This gem contains the JavaScript source code used for converting between
+CoffeeScript to JavaScript. It is updated each time a new version of
+CoffeeScript is released.")
+ ;; homepage listed on rubygems does not exist, so use the rubygems URL instead
+ (home-page
+ "https://rubygems.org/gems/coffee-script-source")
+ (license license:expat)))
+
+;; Seems to work except for 2 rspec errors already fixed upstream
+;; https://github.com/egonSchiele/contracts.ruby/commit/c1f22bfc6b28125b55d42a33ca3e05f15e82d6f2.diff
+;; might need to add that as a patch when adding to guix
+(define-public ruby-contracts
+ (package
+ (name "ruby-contracts")
+ (version "0.12.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "contracts" version))
+ (sha256
+ (base32
+ "0xszv56p58q7da8agc4dsnw8x46gnh6ahbag5gdmvbxjgml03mdl"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f ; enable these when adding TO GUIX!!!!
+ #:test-target "spec"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-rakefile
+ (lambda _
+ (substitute* "Rakefile"
+ ((".*rubocop.*") "")
+ ((".*RuboCop.*") ""))
+ #t)))))
+ (native-inputs
+ `(("ruby-rspec" ,ruby-rspec)))
+ (synopsis
+ "This library provides contracts for Ruby. Contracts let you clearly express how your code behaves, and free you from writing tons of boilerplate, defensive code.")
+ (description
+ "This library provides contracts for Ruby. Contracts let you clearly express how your code behaves, and free you from writing tons of boilerplate, defensive code.")
+ (home-page
+ "http://github.com/egonSchiele/contracts.ruby")
+ (license #f)))
+
+(define-public ruby-coveralls
+ (package
+ (name "ruby-coveralls")
+ (version "0.8.22")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "coveralls" version))
+ (sha256
+ (base32
+ "022kc16np6w4mv17hq3m9hhw9l8hjl78ld3fzqqx6337vwvwvwcg"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f
+ #:test-target "spec"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'extract-gemspec 'update-dependency
+ (lambda _
+ ;; Relax dependency to avoid conflicting versions in nio4r
+ ;; for instance.
+ (substitute* "coveralls-ruby.gemspec"
+ (("<simplecov.*") "<simplecov>)\n")
+ (("<tins.*") "<tins>)\n"))
+
+ #t))
+ (add-before 'check 'fix-dependencies
+ (lambda _
+ (substitute* "spec/spec_helper.rb"
+ ((".*pry.*") "\n"))
+ #t)))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-truthy" ,ruby-truthy)
+ ("ruby-webmock" ,ruby-webmock)
+ ("ruby-vcr" ,ruby-vcr)
+ ("git" ,git))) ; git is required for testing
+ (propagated-inputs
+ `(("ruby-json" ,ruby-json)
+ ("ruby-rest-client" ,ruby-rest-client)
+ ("ruby-simplecov" ,ruby-simplecov)
+ ("ruby-term-ansicolor" ,ruby-term-ansicolor)
+ ("ruby-thor" ,ruby-thor)
+ ("ruby-simplecov" ,ruby-simplecov)
+ ("ruby-tins" ,ruby-tins)))
+ (synopsis
+ "A Ruby implementation of the Coveralls API.")
+ (description
+ "A Ruby implementation of the Coveralls API.")
+ (home-page "https://coveralls.io")
+ (license license:expat)))
+
+(define-public ruby-crack
+ (package
+ (name "ruby-crack")
+ (version "0.4.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "crack" version))
+ (sha256
+ (base32
+ "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (zero? (length
+ (filter (lambda (file)
+ (display file)(display "\n")
+ (not (zero? (system* "ruby" file))))
+ (find-files "spec" ".*rb$")))))))))
+ (propagated-inputs
+ `(("ruby-safe-yaml" ,ruby-safe-yaml)))
+ (synopsis
+ "Really simple JSON and XML parsing, ripped from Merb and Rails.")
+ (description
+ "Really simple JSON and XML parsing, ripped from Merb and Rails.")
+ (home-page "http://github.com/jnunemaker/crack")
+ (license license:expat)))
+
(define-public ruby-czmq-ffi-gen
(package
(name "ruby-czmq-ffi-gen")
@@ -862,6 +1214,28 @@ support for security mechanisms.")
(home-page "https://github.com/paddor/cztop")
(license license:isc)))
+(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)
+ (propagated-inputs
+ `(("ruby-thread-safe" ,ruby-thread-safe)))
+ (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-saikuro-treemap
(package
(name "ruby-saikuro-treemap")
@@ -940,6 +1314,59 @@ support.")
(home-page "http://www.kuwata-lab.com/erubis/")
(license license:expat)))
+(define-public ruby-execjs
+ (package
+ (name "ruby-execjs")
+ (version "2.7.0")
+ (source
+ (origin
+ (method url-fetch)
+ ;; fetch from github as the gem does not contain testing code
+ (uri (string-append "https://github.com/rails/execjs/archive/v"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0h1bi96gks205pz2mn2zwldz8h0ajwggyi85bwfbksmrsn2lwick"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; tests require ruby-therubyracer and thus v8.
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (synopsis
+ "ExecJS lets you run JavaScript code from Ruby.")
+ (description
+ "ExecJS lets you run JavaScript code from Ruby.")
+ (home-page "https://github.com/rails/execjs")
+ (license license:expat)))
+
+(define-public ruby-event-bus
+ (package
+ (name "ruby-event-bus")
+ (version "0.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "event-bus" version))
+ (sha256
+ (base32
+ "0bqcznr15q1346avpddnyd9144hqdww86yfpb4jayaj6lm0fqwyq"))))
+ (build-system ruby-build-system)
+ (arguments
+ ;; disable testing to break the cycle with aruba. Instead simply test that
+ ;; the library can be require'd.
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (zero? (system* "ruby" "-Ilib" "-r" "event/bus")))))))
+ (synopsis
+ "This gem notifies subscribers about event")
+ (description
+ "This gem notifies subscribers about event")
+ (home-page
+ "https://github.com/cucumber/event-bus")
+ (license license:expat)))
+
(define-public ruby-orderedhash
(package
(name "ruby-orderedhash")
@@ -1007,6 +1434,63 @@ Ruby.")
(home-page "https://github.com/maik/xml-simple")
(license license:ruby)))
+(define-public ruby-therubyracer
+ (package
+ (name "ruby-therubyracer")
+ (version "0.12.2")
+ (source
+ (origin
+ (method url-fetch)
+ ;; Build from GitHub source so that patches can be applied.
+ (uri (string-append "https://github.com/cowboyd/therubyracer/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0vyiacgg0hngl3gxh7n5lvskac5ms2rcbjrixj4mc8c2adhmqj1a"))
+ (patches (search-patches "ruby-therubyracer-fix-gemspec.patch"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:test-target "spec"
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'extract-gemspec)
+ (add-before 'build 'fix-gemfile
+ (lambda _
+ (substitute* "Gemfile"
+ (("redjs.*") "redjs'\n")
+ ((".*gem-compiler.*") "\n"))
+ #t))
+ (add-before 'install 'prepare-libv8
+ ;; Since therubyracer requires 'libv8' when compiling native
+ ;; extensions during installation, it must be installed into the same
+ ;; gem directory. We make 'libv8' a native input and copy the entire
+ ;; libv8 gem directory into the the current output and install
+ ;; therubyracer into that.
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (copy-recursively
+ (assoc-ref inputs "ruby-libv8")
+ (assoc-ref outputs "out"))
+ #t))
+ (add-before 'check 'compile
+ (lambda _
+ (zero? (system* "rake" "compile")))))))
+ (propagated-inputs
+ `(("ruby-ref" ,ruby-ref)))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-redjs" ,ruby-redjs)
+ ("ruby-rspec" ,ruby-rspec-2)
+ ("ruby-rake-compiler" ,ruby-rake-compiler)
+ ("ruby-libv8" ,ruby-libv8)))
+ (synopsis
+ "Call JavaScript code and manipulate JavaScript objects from Ruby. Call Ruby code and manipulate Ruby objects from JavaScript.")
+ (description
+ "Call JavaScript code and manipulate JavaScript objects from Ruby. Call Ruby code and manipulate Ruby objects from JavaScript.")
+ (home-page
+ "http://github.com/cowboyd/therubyracer")
+ (license license:expat)))
+
(define-public ruby-thor
(package
(name "ruby-thor")
@@ -1176,6 +1660,98 @@ standard output stream.")
(home-page "https://github.com/geemus/formatador")
(license license:expat)))
+(define-public ruby-fuubar
+ (package
+ (name "ruby-fuubar")
+ (version "2.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ ;; The gem does not include files required for testing.
+ (uri (string-append "https://github.com/thekompanee/fuubar/archive/releases/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1363fy7x12srr51cy5x1xkf9z7jlzzlwpsifwgx6bivnp6lar3ny"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f ; some tests fail when running (zero? (system* "rspec"
+ ; "-Ilib" "spec")) inside the container, but seem to work outside.
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'delete-certificate
+ (lambda _
+ ;; Remove 's.cert_chain' as we do not build with a private key
+ (substitute* "fuubar.gemspec"
+ ((".*cert_chain.*") "")
+ ((".*signing_key.*") ""))
+ #t)))))
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (propagated-inputs
+ `(("ruby-rspec" ,ruby-rspec)
+ ("ruby-ruby-progressbar" ,ruby-ruby-progressbar)))
+ (synopsis
+ "the instafailing RSpec progress bar formatter")
+ (description
+ "the instafailing RSpec progress bar formatter")
+ (home-page
+ "https://github.com/thekompanee/fuubar")
+ (license license:expat)))
+
+(define-public ruby-hashdiff
+ (package
+ (name "ruby-hashdiff")
+ (version "0.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "hashdiff" version))
+ (sha256
+ (base32
+ "1r06gar8zp4hyzyc0ky7n6mybjj542lrfda5y78fm5hyhiplv104"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f
+ #:test-target "spec"))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rspec" ,ruby-rspec-2)))
+ (synopsis
+ " HashDiff is a diff lib to compute the smallest difference between two hashes. ")
+ (description
+ " HashDiff is a diff lib to compute the smallest difference between two hashes. ")
+ (home-page
+ "https://github.com/liufengyun/hashdiff")
+ (license license:expat)))
+
+(define-public ruby-httparty
+ (package
+ (name "ruby-httparty")
+ (version "0.16.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "httparty" version))
+ (sha256
+ (base32
+ "1zsc40nrg5fbaabbjcklnrgwgg6qdqycvg5sq8iahp1v8jxfarzw"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:test-target "spec"))
+ (propagated-inputs
+ `(("ruby-multi-xml" ,ruby-multi-xml)))
+ (native-inputs
+ `(("ruby-cucumber" ,ruby-cucumber)))
+ (synopsis
+ "Makes http fun! Also, makes consuming restful web services dead easy.")
+ (description
+ "Makes http fun! Also, makes consuming restful web services dead easy.")
+ (home-page
+ "http://jnunemaker.github.com/httparty")
+ (license license:expat)))
+
(define-public ruby-shindo
(package
(name "ruby-shindo")
@@ -1430,6 +2006,33 @@ assertion messages for tests.")
(home-page "https://github.com/k-tsj/power_assert")
(license (list license:bsd-2 license:ruby))))
+(define-public ruby-powerpack
+ (package
+ (name "ruby-powerpack")
+ (version "0.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "powerpack" version))
+ (sha256
+ (base32
+ "1fnn3fli5wkzyjl4ryh0k90316shqjfnhydmc7f8lqpi0q21va43"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f
+ #:test-target "spec"))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-yard" ,ruby-yard)))
+ (synopsis
+ "A few useful extensions to core Ruby classes.")
+ (description
+ "This package provides a few useful extensions to core Ruby classes.")
+ (home-page
+ "https://github.com/bbatsov/powerpack")
+ (license license:expat)))
+
(define-public ruby-locale
(package
(name "ruby-locale")
@@ -1502,6 +2105,33 @@ use GNU gettext tools for maintenance.")
(home-page "https://ruby-gettext.github.com/")
(license (list license:lgpl3+ license:ruby))))
+(define-public ruby-github-api
+ (package
+ (name "ruby-github-api")
+ (version "0.18.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "github_api" version))
+ (sha256
+ (base32
+ "04x8mlvinl17wfw6r71c9jbh7g78ziiwvsqv20ylyjzybr7x0w6s"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-addressable" ,ruby-addressable)
+ ("ruby-descendants-tracker"
+ ,ruby-descendants-tracker)
+ ("ruby-faraday" ,ruby-faraday)
+ ("ruby-hashie" ,ruby-hashie)
+ ("ruby-oauth2" ,ruby-oauth2)))
+ (synopsis
+ " Ruby client that supports all of the GitHub API methods. It's build in a modular way, that is, you can either instantiate the whole api wrapper Github.new or use parts of it e.i. Github::Client::Repos.new if working solely with repositories is your main concern. Intuitive query methods allow you easily call API endpoints. ")
+ (description
+ " Ruby client that supports all of the GitHub API methods. It's build in a modular way, that is, you can either instantiate the whole api wrapper Github.new or use parts of it e.i. Github::Client::Repos.new if working solely with repositories is your main concern. Intuitive query methods allow you easily call API endpoints. ")
+ (home-page
+ "http://piotrmurach.github.io/github/")
+ (license license:expat)))
+
(define-public ruby-packnga
(package
(name "ruby-packnga")
@@ -1552,6 +2182,43 @@ It allows writing tests, checking results and automated testing in Ruby.")
(home-page "https://test-unit.github.io/")
(license (list license:psfl license:ruby))))
+(define-public ruby-maruku
+ (package
+ (name "ruby-maruku")
+ (version "0.7.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "maruku" version))
+ (sha256
+ (base32
+ "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(;; TODO: 3 tests seem to fail due to HTML encoding issues
+ #:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "rspec")
+ #t))))))
+ (native-inputs
+ `(("ruby-rspec" ,ruby-rspec)
+ ("ruby-simplecov" ,ruby-simplecov)
+ ("ruby-nokogiri-diff" ,ruby-nokogiri-diff)))
+ (synopsis
+ "Maruku is a Markdown interpreter in Ruby.
+ It features native export to HTML and PDF (via Latex). The
+ output is really beautiful!")
+ (description
+ "Maruku is a Markdown interpreter in Ruby.
+ It features native export to HTML and PDF (via Latex). The
+ output is really beautiful!")
+ (home-page "http://github.com/bhollis/maruku")
+ (license license:expat)))
+
(define-public ruby-metaclass
(package
(name "ruby-metaclass")
@@ -1587,6 +2254,49 @@ objects.")
(home-page "https://github.com/floehopper/metaclass")
(license license:expat)))
+(define-public ruby-mysql2
+ (package
+ (name "ruby-mysql2")
+ (version "0.5.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/brianmario/mysql2/archive/"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "063qm7m43fjnwizbg2avv2byvkpwsxcnhjyvci1q2s1zcmys211s"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(;; TODO: Tests require a running MySQL/MariaDB service
+ #:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'replace-git-ls-files
+ (lambda _
+ (substitute* "mysql2.gemspec"
+ (("git ls-files") "echo"))))
+ (add-before 'build 'compile
+ (lambda _
+ (invoke "rake" "compile")))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "rspec" "-Ilib" "-Iext")
+ #t))))))
+ (inputs
+ `(("mariadb" ,mariadb)))
+ (native-inputs
+ `(("ruby-rspec" ,ruby-rspec)
+ ("ruby-rake-compiler" ,ruby-rake-compiler)))
+ (synopsis
+ "A simple, fast Mysql library for Ruby, binding to libmysql")
+ (description
+ "This package provides a simple, fast Mysql library for Ruby, binding to libmysql")
+ (home-page
+ "https://github.com/brianmario/mysql2")
+ (license license:expat)))
+
(define-public ruby-blankslate
(package
(name "ruby-blankslate")
@@ -1643,6 +2353,66 @@ irb's last-word approach.")
(home-page "http://tagaholic.me/bond/")
(license license:expat)))
+(define-public ruby-idn-ruby
+ (package
+ (name "ruby-idn-ruby")
+ (version "0.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "idn-ruby" version))
+ (sha256
+ (base32
+ "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-Rakefile
+ (lambda _
+ (substitute* "Rakefile"
+ (("rake/rdoctask")
+ "rdoc/task"))
+ #t))
+ (add-before 'build 'run-extconf.rb
+ (lambda _
+ (with-directory-excursion "ext"
+ (invoke "ruby" "extconf.rb")
+ (invoke "make"))))
+ (replace 'check
+ (lambda _
+ (unless (zero?
+ (system "ruby --verbose -Iext test/*.rb"))
+ (error "test failure"))
+ #t)))))
+ (inputs
+ `(("libidn" ,libidn)))
+ (synopsis
+ "
+ Ruby Bindings for the GNU LibIDN library, an implementation of the
+ Stringprep, Punycode and IDNA specifications defined by the IETF
+ Internationalized Domain Names (IDN) working group.
+
+ Included are the most important parts of the Stringprep, Punycode
+ and IDNA APIs like performing Stringprep processings, encoding to
+ and decoding from Punycode strings and converting entire domain names
+ to and from the ACE encoded form.
+ ")
+ (description
+ "
+ Ruby Bindings for the GNU LibIDN library, an implementation of the
+ Stringprep, Punycode and IDNA specifications defined by the IETF
+ Internationalized Domain Names (IDN) working group.
+
+ Included are the most important parts of the Stringprep, Punycode
+ and IDNA APIs like performing Stringprep processings, encoding to
+ and decoding from Punycode strings and converting entire domain names
+ to and from the ACE encoded form.
+ ")
+ (home-page
+ "http://github.com/deepfryed/idn-ruby")
+ (license #f)))
+
(define-public ruby-instantiator
(package
(name "ruby-instantiator")
@@ -2095,6 +2865,34 @@ instance, it provides @code{assert_true}, @code{assert_false} and
(home-page "https://github.com/halostatue/minitest-bonus-assertions")
(license license:expat)))
+(define-public ruby-minitest-reporters
+ (package
+ (name "ruby-minitest-reporters")
+ (version "1.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "minitest-reporters" version))
+ (sha256
+ (base32
+ "0xc7cs65yjslz9zg8mm0y29wpf7s1h5yzixgyjs5gvlr8c81carn"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-ansi" ,ruby-ansi)
+ ("ruby-builder" ,ruby-builder)
+ ("ruby-minitest" ,ruby-minitest)
+ ("ruby-ruby-progressbar" ,ruby-ruby-progressbar)))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-maruku" ,ruby-maruku)))
+ (synopsis
+ "Death to haphazard monkey-patching! Extend Minitest through simple hooks.")
+ (description
+ "Death to haphazard monkey-patching! Extend Minitest through simple hooks.")
+ (home-page
+ "https://github.com/CapnKernul/minitest-reporters")
+ (license license:expat)))
+
(define-public ruby-minitest-rg
(package
(name "ruby-minitest-rg")
@@ -2186,6 +2984,53 @@ URIs using the normal URI.parse method.")
(home-page "https://github.com/dball/data_uri")
(license license:expat)))
+(define-public ruby-duktape
+ (package
+ (name "ruby-duktape")
+ (version "1.3.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ ;; fetch from github as the gem does not contain testing code
+ (uri (string-append "https://github.com/judofyr/duktape.rb/archive/v"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1xgs7ll9xwm5p451mh70cm5646wijc2jdvjdb81a17wwvccf7djw"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ ;; Duktape comes with the duktape .c and .h files. Replace these with
+ ;; those from the duktape Guix package.
+ (add-after 'unpack 'replace-bundled-duktape
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (for-each (lambda (file)
+ (delete-file (string-append "ext/duktape/" file))
+ (copy-file
+ (string-append
+ (assoc-ref inputs "duktape") "/src/" file)
+ (string-append "ext/duktape/" file)))
+ (list "duktape.c" "duktape.h"))))
+ (add-before 'check 'remove-dependency
+ (lambda _
+ ;; Gem is not needed for testing.
+ (substitute* "Gemfile"
+ (("^ gem 'aws-sdk', '~> 2.2.0'") ""))
+ #t)))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rake-compiler" ,ruby-rake-compiler)
+ ("ruby-sdoc" ,ruby-sdoc)
+ ("duktape" ,duktape)))
+ (synopsis "Bindings to the Duktape JavaScript interpreter")
+ (description
+ "Bindings to the Duktape JavaScript interpreter")
+ (home-page
+ "https://github.com/judofyr/duktape.rb")
+ (license license:expat)))
+
(define-public ruby-git
(package
(name "ruby-git")
@@ -2338,13 +3183,13 @@ rogue test/unit/autorun requires.")
(define-public ruby-arel
(package
(name "ruby-arel")
- (version "8.0.0")
+ (version "9.0.0")
(source (origin
(method url-fetch)
(uri (rubygems-uri "arel" version))
(sha256
(base32
- "0nw0qbc6ph625p6n3maqq9f527vz3nbl0hk72fbyka8jzsmplxzl"))))
+ "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
(build-system ruby-build-system)
(arguments '(#:tests? #f)) ; no tests
(home-page "https://github.com/rails/arel")
@@ -2354,6 +3199,29 @@ Ruby. It simplifies the generation of complex SQL queries and adapts to
various relational database implementations.")
(license license:expat)))
+(define-public ruby-marcel
+ (package
+ (name "ruby-marcel")
+ (version "0.3.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "marcel" version))
+ (sha256
+ (base32
+ "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-mimemagic" ,ruby-mimemagic)))
+ (synopsis
+ "Simple mime type detection using magic numbers, filenames, and extensions")
+ (description
+ "Simple mime type detection using magic numbers, filenames, and extensions")
+ (home-page "https://github.com/basecamp/marcel")
+ (license license:expat)))
+
(define-public ruby-minitar
;; We package from the GitHub source to fix the security issue reported at
;; https://github.com/halostatue/minitar/issues/16.
@@ -2505,6 +3373,62 @@ for select languages.")
(home-page "http://coderay.rubychan.de")
(license license:expat)))
+(define-public ruby-parser
+ (package
+ (name "ruby-parser")
+ (version "2.3.1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "parser" version))
+ (sha256
+ (base32
+ "0fxcs83z28wxn6bphbq5q40c1y5ab8zl8ww17jwkbi032wf6iik6"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; need more
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-racc" ,ruby-racc)))
+ (propagated-inputs `(("ruby-ast" ,ruby-ast)))
+ (synopsis "A Ruby parser written in pure Ruby.")
+ (description
+ "This package provides a Ruby parser written in pure Ruby.")
+ (home-page
+ "https://github.com/whitequark/parser")
+ (license license:expat)))
+
+(define-public ruby-prawn-manual-builder
+ (package
+ (name "ruby-prawn-manual-builder")
+ (version "0.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "prawn-manual_builder" version))
+ (sha256
+ (base32
+ "0wbjnkqp55p5wmz85ldypcray223glckd209hmdxhnzk8s5pb3za"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(;; No included tests
+ #:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'extract-gemspec 'patch-gemspec
+ (lambda _
+ (substitute* ".gemspec"
+ ;; Loosen the requirement for pdf-inspector
+ (("~> 1\\.0\\.7") ">= 0")))))))
+ (propagated-inputs
+ `(("ruby-coderay" ,ruby-coderay)))
+ (synopsis
+ "A tool for writing manuals for Prawn and Prawn accessories")
+ (description
+ "This package provides a tool for writing manuals for Prawn and Prawn accessories")
+ (home-page "")
+ (license (list #f #f #f))))
+
(define-public ruby-progress_bar
(package
(name "ruby-progress_bar")
@@ -2536,6 +3460,34 @@ rate.")
(home-page "https://github.com/paul/progress_bar")
(license license:wtfpl2)))
+(define-public ruby-ruby-progressbar
+ (package
+ (name "ruby-ruby-progressbar")
+ (version "1.9.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "ruby-progressbar" version))
+ (sha256
+ (base32
+ "1igh1xivf5h5g3y5m9b4i4j2mhz2r43kngh4ww3q1r80ch21nbfk"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; Tests require further dependencies such as 'rspectacular'.
+ (synopsis
+ "Ruby/ProgressBar is an extremely flexible text progress bar library for Ruby.
+The output can be customized with a flexible formatting system including:
+percentage, bars of various formats, elapsed time and estimated time remaining.
+")
+ (description
+ "Ruby/ProgressBar is an extremely flexible text progress bar library for Ruby.
+The output can be customized with a flexible formatting system including:
+percentage, bars of various formats, elapsed time and estimated time remaining.
+")
+ (home-page
+ "https://github.com/jfelchner/ruby-progressbar")
+ (license license:expat)))
+
(define-public ruby-pry
(package
(name "ruby-pry")
@@ -2560,6 +3512,34 @@ invocation, and source and documentation browsing.")
(home-page "https://pryrepl.org")
(license license:expat)))
+(define-public ruby-psych
+ (package
+ (name "ruby-psych")
+ (version "3.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "psych" version))
+ (sha256
+ (base32
+ "0g9yrzzfza5yjfnn4pkykr71fhpayahvimvyyv8xi3i34a03v9xg"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rake-compiler" ,ruby-rake-compiler)))
+ (synopsis
+ "Psych is a YAML parser and emitter. Psych leverages libyaml[http://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[http://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-guard
(package
(name "ruby-guard")
@@ -2608,6 +3588,72 @@ file or directories are modified.")
(home-page "http://guardgem.org/")
(license license:expat)))
+(define-public ruby-tilt
+ (package
+ (name "ruby-tilt")
+ (version "2.0.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "tilt" version))
+ (sha256
+ (base32
+ "0lgk8bfx24959yq1cn55php3321wddw947mgj07bxfnwyipy9hqf"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; There are a number of unpackaged dependencies e.g. kramdown.
+ ;; (native-inputs
+ ;; `(("bundler" ,bundler)
+ ;; ("ruby-yard" ,ruby-yard)
+ ;; ("ruby-asciidoctor" ,ruby-asciidoctor)
+ ;; ("ruby-builder" ,ruby-builder)
+ ;; ("ruby-coffee-script" ,ruby-coffee-script)
+ ;; ("ruby-contest" ,ruby-contest)
+ ;; ("ruby-creole" ,ruby-creole)
+ ;; ("ruby-erubis" ,ruby-erubis)
+ ;; ("ruby-haml" ,ruby-haml); do we really need haml <4 ?
+ ;; ("ruby-kramdown" ,ruby-kramdown)))
+ (synopsis
+ "Generic interface to multiple Ruby template engines")
+ (description
+ "Generic interface to multiple Ruby template engines")
+ (home-page "http://github.com/rtomayko/tilt/")
+ (license license:expat)))
+
+(define-public ruby-thread-order
+ (package
+ (name "ruby-thread-order")
+ (version "1.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "thread_order" version))
+ (sha256
+ (base32
+ "1n8zs3m7na5jmpf0pw0z79vg0x0lfzajpynp28zb43l89l00qcfi"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("ruby-rspec" ,ruby-rspec)))
+ (arguments
+ '(;; TODO: 1 test fails
+ ;; 1) ThreadOrder is implemented without depending on the stdlib
+ ;; Failure/Error: expect(loaded_filenames).to_not include 'monitor.rb'
+ #:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "rspec")
+ #t))))))
+ (synopsis
+ "Test helper for ordering threaded code (does not depend on gems or stdlib, tested on 1.8.7 - 2.2, rbx, jruby).")
+ (description
+ "Test helper for ordering threaded code (does not depend on gems or stdlib, tested on 1.8.7 - 2.2, rbx, jruby).")
+ (home-page
+ "https://github.com/JoshCheek/thread_order")
+ (license license:expat)))
+
(define-public ruby-thread-safe
(package
(name "ruby-thread-safe")
@@ -2628,6 +3674,29 @@ utilities for Ruby.")
(home-page "https://github.com/ruby-concurrency/thread_safe")
(license license:asl2.0)))
+(define-public ruby-truthy
+ (package
+ (name "ruby-truthy")
+ (version "1.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "truthy" version))
+ (sha256
+ (base32
+ "19silgd65j3qwfk5w891p9wcmzdmi9ddm2kg5zbvvqn2h9lkfzmd"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; Files required for testing are not in gem, and homepage
+ ; has disappeared.
+ (propagated-inputs `(("ruby-hoe" ,ruby-hoe)))
+ (synopsis
+ "Easily get truthiness values of Ruby objects")
+ (description
+ "Easily get truthiness values of Ruby objects")
+ (home-page "https://rubygems.org/gems/truthy")
+ (license #f)))
+
(define-public ruby-tzinfo
(package
(name "ruby-tzinfo")
@@ -2965,6 +4034,47 @@ when working with Ruby code.")
;; There is no mention of the "or later" clause.
(license license:gpl2)))
+(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)))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'delete-Gemfile.lock
+ (lambda _
+ ;; Bundler isn't being used for fetching dependendencies, so
+ ;; delete the Gemfile.lock
+ (delete-file "Gemfile.lock")
+ #t
+ )))))
+ (synopsis
+ "Simple and opinionated helper for creating Rubygem projects on GitHub")
+ (description
+ "Simple and opinionated helper for creating Rubygem projects on GitHub")
+ (home-page
+ "http://github.com/technicalpickles/jeweler")
+ (license license:expat)))
+
(define-public ruby-json
(package
(name "ruby-json")
@@ -3010,7 +4120,15 @@ a native C extension.")
(lambda _
;; Regenerate gemspec so loosened dependency constraints are
;; propagated.
- (invoke "rake" "gemspec"))))))
+ (invoke "rake" "gemspec")))
+ (add-after 'regenerate-gemspec 'fix-json-java.gemspec
+ (lambda _
+ ;; This gemspec doesn't look to be generated by the above
+ ;; command, so patch it separately.
+ (substitute* "json-java.gemspec"
+ (("%q<test-unit>\\.freeze, \\[\"~> 2\\.0\"\\]")
+ "%q<test-unit>.freeze, [\">= 2.0\"]"))
+ #t)))))
(native-inputs
`(("bundler" ,bundler)
("ragel" ,ragel)
@@ -3044,6 +4162,71 @@ a native C extension.")
(home-page "https://rubygems.org/gems/rb-fsevent")
(license license:expat)))
+(define-public ruby-libv8
+ (package
+ (name "ruby-libv8")
+ (version "6.7.288.46.0") ; Package an even-numbered release so only source
+ ; code it included and not binaries.
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "libv8" version))
+ (sha256
+ (base32
+ "1f1gd8n8yrnd2d2bmlbcm1qgfpw050087y8gq4z72cj8mal60k3f"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:test-target "spec"
+ ;#:gem-flags (list "--" "--with-system-v8")
+ #:phases
+ (modify-phases %standard-phases
+ ;; Non-printing characters trip up this build phase and it isn't used
+ ;; anyway.
+ ;(delete 'extract-gemspec)
+ ;; (replace 'replace-git-ls-files
+ ;; (lambda _
+ ;; (substitute* "libv8.gemspec"
+ ;; (("git ls-files") "find . -type f |sort"))
+ ;; #t))
+ (add-after 'extract-gemspec 'fix-dependencies
+ (lambda _
+ ;; Remove non-printing character that trips up substitute*
+ (system* "sed" "s/ stub.*//" "-i" "libv8.gemspec")
+ ;;(delete-file-recursively "vendor")
+ (substitute* "libv8.gemspec"
+ ;; (("<rake>.*") "<rake>)\n")
+ (("<rake-compiler>.*") "<rake-compiler>)\n")
+ ((", \\\"vendor.*") "]\n")
+ ) ; Do not distribute
+ ; depot_tools as this includes pre-built
+ ; binaries.
+
+ #t))
+ )))
+ ;; (Add-after 'install 'remove-extraneous-files
+ ;; (lambda* (#:key outputs #:allow-other-keys)
+ ;; (delete-file-recursively
+ ;; (string-append
+ ;; (assoc-ref outputs "out")
+ ;; ;; TODO: Generalise this path.
+ ;; "/lib/ruby/gems/2.3.0/gems/libv8-5.2.361.43.1/vendor")))))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rake" ,ruby-rake)
+ ("ruby-rake-compiler" ,ruby-rake-compiler)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-rspec-spies" ,ruby-rspec-spies)
+ ("which" ,which)
+ ("python" ,python-2)))
+ (synopsis
+ "Distributes the V8 JavaScript engine in binary and source forms in order
+to support fast builds of The Ruby Racer")
+ (description
+ "Distributes the V8 JavaScript engine in binary and source forms in order
+to support fast builds of The Ruby Racer")
+ (home-page "http://github.com/cowboyd/libv8")
+ (license license:expat)))
+
(define-public ruby-listen
(package
(name "ruby-listen")
@@ -3051,31 +4234,106 @@ a native C extension.")
(source
(origin
(method url-fetch)
- (uri (rubygems-uri "listen" version))
+ ;; The gem does not include a Rakefile, so we fetch the tarball from
+ ;; Github.
+ (uri (string-append "https://github.com/guard/listen/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx"))))
+ "0f0mx4nzpd17svvmkcb2q66w3gdvs1zkrpc0p3wq1s2va5b5cnss"))
+ (patches (search-patches "ruby-listen-patch-gemspec.patch"))))
(build-system ruby-build-system)
- (arguments '(#:tests? #f)) ; no tests
+ (arguments
+ `(#:test-target "spec"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'fix-dependencies'
+ (lambda _
+ (substitute* "Rakefile"
+ ((".*rubocop.*") ""))
+ #t)))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-coveralls" ,ruby-coveralls)))
(propagated-inputs
- `(("ruby-rb-inotify" ,ruby-rb-inotify)
- ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
- (synopsis "Listen to file modifications")
- (description "The Listen gem listens to file modifications and notifies
-you about the changes.")
+ `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
+ ("ruby-rb-inotify" ,ruby-rb-inotify)
+ ("ruby-ruby-dep" ,ruby-ruby-dep)))
+ (synopsis
+ "The Listen gem listens to file modifications and notifies you about the changes. Works everywhere!")
+ (description
+ "The Listen gem listens to file modifications and notifies you about the changes. Works everywhere!")
(home-page "https://github.com/guard/listen")
(license license:expat)))
(define-public ruby-listen-3.0
(package
(inherit ruby-listen)
+ (name "ruby-listen")
(version "3.0.8")
- (source (origin
- (method url-fetch)
- (uri (rubygems-uri "listen" version))
- (sha256
- (base32
- "1l0y7hbyfiwpvk172r28hsdqsifq1ls39hsfmzi1vy4ll0smd14i"))))))
+ (source
+ (origin
+ (method url-fetch)
+ ;; The gem does not include a Rakefile, so we fetch the tarball from
+ ;; Github.
+ (uri (string-append "https://github.com/guard/listen/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "06cy038xlbi8hcr9nv0c9wvafi7s3d05sdc7ydkv8qndi9bs68l3"))
+ (patches (search-patches "ruby-listen-3.0.8-patch-gemspec.patch"))))))
+
+(define-public ruby-loofah
+ (package
+ (name "ruby-loofah")
+ (version "2.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "loofah" version))
+ (sha256
+ (base32
+ "109ps521p0sr3kgc460d58b4pr1z4mqggan2jbsf0aajy9s6xis8"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; 1 test fails
+ (native-inputs
+ `(("ruby-hoe" ,ruby-hoe)
+ ("ruby-rr" ,ruby-rr)))
+ (propagated-inputs
+ `(("ruby-nokogiri" ,ruby-nokogiri)))
+ (synopsis
+ "Loofah is a general library for manipulating and transforming HTML/XML
+documents and fragments. It's built on top of Nokogiri and libxml2, so
+it's fast and has a nice API.
+
+Loofah excels at HTML sanitization (XSS prevention). It includes some
+nice HTML sanitizers, which are based on HTML5lib's whitelist, so it
+most likely won't make your codes less secure. (These statements have
+not been evaluated by Netexperts.)
+
+ActiveRecord extensions for sanitization are available in the
+`loofah-activerecord` gem (see
+https://github.com/flavorjones/loofah-activerecord).")
+ (description
+ "Loofah is a general library for manipulating and transforming HTML/XML
+documents and fragments. It's built on top of Nokogiri and libxml2, so
+it's fast and has a nice API.
+
+Loofah excels at HTML sanitization (XSS prevention). It includes some
+nice HTML sanitizers, which are based on HTML5lib's whitelist, so it
+most likely won't make your codes less secure. (These statements have
+not been evaluated by Netexperts.)
+
+ActiveRecord extensions for sanitization are available in the
+`loofah-activerecord` gem (see
+https://github.com/flavorjones/loofah-activerecord).")
+ (home-page
+ "https://github.com/flavorjones/loofah")
+ (license license:expat)))
(define-public ruby-activesupport
(package
@@ -3099,7 +4357,7 @@ you about the changes.")
(propagated-inputs
`(("ruby-concurrent" ,ruby-concurrent)
("ruby-i18n" ,ruby-i18n)
- ("ruby-minitest" ,ruby-minitest)
+ ;("ruby-minitest" ,ruby-minitest)
("ruby-tzinfo" ,ruby-tzinfo)
("ruby-tzinfo-data" ,ruby-tzinfo-data)))
(synopsis "Ruby on Rails utility library")
@@ -3478,6 +4736,41 @@ differences (added or removed nodes) between two XML/HTML documents.")
(home-page "https://github.com/postmodern/nokogiri-diff")
(license license:expat))))
+(define-public ruby-racc
+ (package
+ (name "ruby-racc")
+ (version "1.4.14")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "racc" version))
+ (sha256
+ (base32
+ "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; tests fail to compile
+ (native-inputs
+ `(("ruby-hoe" ,ruby-hoe)
+ ("ruby-rake-compiler" ,ruby-rake-compiler)))
+ (synopsis
+ "Racc is a LALR(1) parser generator.
+ It is written in Ruby itself, and generates Ruby program.
+
+ NOTE: Ruby 1.8.x comes with Racc runtime module. You
+ can run your parsers generated by racc 1.4.x out of the
+ box.")
+ (description
+ "Racc is a LALR(1) parser generator.
+ It is written in Ruby itself, and generates Ruby program.
+
+ NOTE: Ruby 1.8.x comes with Racc runtime module. You
+ can run your parsers generated by racc 1.4.x out of the
+ box.")
+ (home-page
+ "http://i.loveruby.net/en/projects/racc/")
+ (license license:expat)))
+
(define-public ruby-rack
(package
(name "ruby-rack")
@@ -3594,6 +4887,200 @@ clickjacking, directory traversal, session hijacking and IP spoofing.")
(home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
(license license:expat)))
+(define-public ruby-radius
+ (package
+ (name "ruby-radius")
+ (version "0.7.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "radius" version))
+ (sha256
+ (base32
+ "0n0clzgvxpjm2gjlpz98x6gkw5hb84bmd435a1yaqs3m0k896v5s"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ ;; TODO: There are two .gem files in the source, and the build system
+ ;; seems to get confused, and attempts to remove the wrong one (I
+ ;; think)...
+ ;;
+ ;; For now, workaround the issue, by creating the file the install
+ ;; phase in the build system tries to remove.
+ (add-before 'install 'workaround-gem-removal
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((directory (string-append
+ (assoc-ref outputs "out")
+ "/lib/ruby/vendor_ruby/cache/pkg")))
+ (mkdir-p directory)
+ (with-output-to-file
+ (string-append directory "/radius-0.7.0.prerelease.gem")
+ (lambda _ (display "")))))))))
+ (native-inputs
+ `(("ruby-simplecov" ,ruby-simplecov)
+ ("ruby-kramdown" ,ruby-kramdown)
+ ("ruby-coveralls" ,ruby-coveralls)))
+ (synopsis
+ "Radius is a powerful tag-based template language for Ruby inspired by the template languages used in MovableType and TextPattern. It uses tags similar to XML, but can be used to generate any form of plain text (HTML, e-mail, etc...).")
+ (description
+ "Radius is a powerful tag-based template language for Ruby inspired by the template languages used in MovableType and TextPattern. It uses tags similar to XML, but can be used to generate any form of plain text (HTML, e-mail, etc...).")
+ (home-page "http://github.com/jlong/radius")
+ (license #f)))
+
+(define-public ruby-rainbow
+ (package
+ (name "ruby-rainbow")
+ (version "2.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rainbow" version))
+ (sha256
+ (base32
+ "11licivacvfqbjx2rwppi8z89qff2cgs67d4wyx42pc5fg7g9f00"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:test-target "spec"))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rspec" ,ruby-rspec)))
+ (synopsis
+ "Colorize printed text on ANSI terminals")
+ (description
+ "Colorize printed text on ANSI terminals")
+ (home-page "https://github.com/sickill/rainbow")
+ (license license:expat)))
+
+(define-public ruby-redjs
+ ;; There are no releases on rubygems and the last git commit was in 2012, so
+ ;; we package that.
+ (let ((commit "0d844f066666f967a78b20beb164c52d9ac3f5ca"))
+ (package
+ (name "ruby-redjs")
+ (version (string-append "0.4.6-1." (string-take commit 8)))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/cowboyd/redjs.git")
+ (commit commit)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "0cl3543xnzfn5qvlwjl2g1gg0jm6mfa75ag9qh89pfay7b0mxz7i"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f ; There are no tests.
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'replace-git-ls-files
+ (lambda _
+ (substitute* "redjs.gemspec"
+ (("git ls-files") "find . -type f |sort"))
+ #t)))))
+ (synopsis "")
+ (description
+ "")
+ (home-page "")
+ (license license:expat)))) ;?
+
+(define-public ruby-rr
+ (package
+ (name "ruby-rr")
+ (version "1.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rr" version))
+ (sha256
+ (base32
+ "0b05ycaw17wbxzycv1wvzklpqjnmi0dqy01igcl5jfmy1ydky66r"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; test files not included
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rspec" ,ruby-rspec)))
+ (synopsis
+ "RR is a test double framework that features a rich selection of double techniques and a terse syntax.")
+ (description
+ "RR is a test double framework that features a rich selection of double techniques and a terse syntax.")
+ (home-page "https://rr.github.io/rr")
+ (license license:expat)))
+
+(define-public ruby-rubocop
+ (package
+ (name "ruby-rubocop")
+ (version "0.41.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rubocop" version))
+ (sha256
+ (base32
+ "02adr908a9l8nhdfjz137i20w1dv8mbfiamy0m9z9q0fvslfdxly"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; test files not included
+ (propagated-inputs
+ `(("ruby-parser" ,ruby-parser)
+ ("ruby-powerpack" ,ruby-powerpack)
+ ("ruby-rainbow" ,ruby-rainbow)
+ ("ruby-ruby-progressbar" ,ruby-ruby-progressbar)
+ ("ruby-unicode-display-width"
+ ,ruby-unicode-display-width)))
+ (synopsis
+ " Automatic Ruby code style checking tool.
+ Aims to enforce the community-driven Ruby Style Guide.
+")
+ (description
+ " Automatic Ruby code style checking tool.
+ Aims to enforce the community-driven Ruby Style Guide.
+")
+ (home-page "http://github.com/bbatsov/rubocop")
+ (license license:expat)))
+
+(define-public ruby-rest-client
+ (package
+ (name "ruby-rest-client")
+ (version "1.8.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rest-client" version))
+ (sha256
+ (base32
+ "1m8z0c4yf6w47iqz6j2p7x1ip4qnnzvhdph9d5fgx081cvjly3p7"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'fix-dependencies
+ (lambda _
+ (substitute* "rest-client.gemspec"
+ ((".*pry.*") "\n"))
+ #t))
+ (add-before 'check 'delete-network-tests
+ (lambda _
+ (delete-file "spec/integration/request_spec.rb")
+ #t)))))
+ (propagated-inputs
+ `(("ruby-http-cookie" ,ruby-http-cookie)
+ ("ruby-mime-types" ,ruby-mime-types)
+ ("ruby-netrc" ,ruby-netrc)))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-webmock", ruby-webmock)
+ ("ruby-rspec", ruby-rspec-2)))
+ (synopsis
+ "A simple HTTP and REST client for Ruby, inspired by the Sinatra microframework style of specifying actions: get, put, post, delete.")
+ (description
+ "A simple HTTP and REST client for Ruby, inspired by the Sinatra microframework style of specifying actions: get, put, post, delete.")
+ (home-page
+ "https://github.com/rest-client/rest-client")
+ (license license:expat)))
+
(define-public ruby-contest
(package
(name "ruby-contest")
@@ -3705,6 +5192,43 @@ and trust on your team.")
(home-page "https://cucumber.io/")
(license license:expat)))
+(define-public ruby-cucumber-core-1
+ (package
+ (inherit ruby-cucumber-core)
+ (version "1.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "cucumber-core" version))
+ (sha256
+ (base32
+ "0qj2fsqvp94nggnikbnrfvnmzr1pl6ifmdsxj69kdw1kkab30jjr"))))))
+
+(define-public ruby-cucumber-wire
+ (package
+ (name "ruby-cucumber-wire")
+ (version "0.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "cucumber-wire" version))
+ (sha256
+ (base32
+ "09ymvqb0sbw2if1nxg8rcj33sf0va88ancq5nmp8g01dfwzwma2f"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(;; This is a small dependency of ruby-cucumber, and requires cucumber
+ ;; in general (e.g. the require 'cucumber/step_argument' in
+ ;; lib/cucumber/wire/protocol/requets.rb), including for the tests.
+ #:tests? #t
+ #:test-target "spec"))
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (synopsis "Wire protocol for Cucumber")
+ (description "Dependency of ruby-cucumber")
+ (home-page "https://github.com/cucumber/cucumber-ruby-wire")
+ (license license:expat)))
+
(define-public ruby-bio-logger
(package
(name "ruby-bio-logger")
@@ -4089,6 +5613,28 @@ neither too verbose nor too minimal.")
(home-page "https://github.com/tpope/fivemat")
(license license:expat)))
+(define-public ruby-semver2
+ (package
+ (name "ruby-semver2")
+ (version "3.4.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "semver2" version))
+ (sha256
+ (base32
+ "1g7w95kckdz00pi3yrvl6ymbnl5dvxcmfb4kkkp888jcq4fawdvg"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(;; No included tests
+ #:tests? #f))
+ (synopsis
+ "maintain versions as per http://semver.org")
+ (description
+ "maintain versions as per http://semver.org")
+ (home-page "https://github.com/haf/semver")
+ (license #f)))
+
(define-public ruby-sqlite3
(package
(name "ruby-sqlite3")
@@ -4264,6 +5810,165 @@ support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
(home-page "https://github.com/knu/ruby-unf")
(license license:bsd-2)))
+(define-public ruby-unicode-display-width
+ (package
+ (name "ruby-unicode-display-width")
+ (version "1.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "unicode-display_width" version))
+ (sha256
+ (base32
+ "194d70pfxq4d7rrk0vsk1dvj46ns2f350308khi7q5cvnmg3h1xs"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; test data not included in gem.
+ (synopsis
+ "[Unicode 1.1.0] Determines the monospace display width of a string using EastAsianWidth.txt, Unicode general category, and other data.")
+ (description
+ "[Unicode 1.1.0] Determines the monospace display width of a string using EastAsianWidth.txt, Unicode general category, and other data.")
+ (home-page
+ "http://github.com/janlelis/unicode-display_width")
+ (license license:expat)))
+
+(define-public ruby-vcr
+ (package
+ (name "ruby-vcr")
+ (version "3.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "vcr" version))
+ (sha256
+ (base32
+ "1y19gb8vz1rbhx1qhim6kpp0fzksqhd7grb50hmrbjx5h4hc3y0y"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; No Rakefile in gem, and there's likely unpackaged
+ ; dependencies anyway.
+ (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 "http://vcr.github.io/vcr")
+ (license license:expat)))
+
+(define-public ruby_version ; There is another gem called 'ruby-version' so we
+ ; use an underscore in this name
+ (package
+ (name "ruby_version")
+ (version "1.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "ruby_version" version))
+ (sha256
+ (base32
+ "0854i1bjy56176anr05l5m0vc81nl53c7fyfg7sljj62m1d64dgj"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'fix-dependencies
+ (lambda _
+ (delete-file "Gemfile.lock")
+ (delete-file "pkg/ruby_version-1.0.0.gem")
+ (substitute* "ruby_version.gemspec"
+ ((".*rdoc.*") "\n")
+ (("rake.*") "rake>)\n")
+ ((".*rubygems-tasks.*") "\n"))
+ (substitute* "Rakefile"
+ (("^require 'rubygems/tasks'") "")
+ (("Gem::Tasks.new") ""))
+ #t)))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rspec" ,ruby-rspec-2)
+ ("ruby-rake" ,ruby-rake)))
+ (synopsis
+ "Provides a RubyVersion class to simplify checking for the right Ruby version in your programs.")
+ (description
+ "Provides a RubyVersion class to simplify checking for the right Ruby version in your programs.")
+ (home-page
+ "https://github.com/janlelis/ruby_version")
+ (license license:expat)))
+
+(define-public ruby-webmock
+ (package
+ (name "ruby-webmock")
+ (version "1.22.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "webmock" version))
+ (sha256
+ (base32
+ "0la47vzbikhvnx8qcj8jli87agzzffwh11ggm7rpq43iz2rwp0sl"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("bundler" ,bundler)
+ ("ruby-addressable" ,ruby-addressable)
+ ("ruby-crack" ,ruby-crack)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-hashdiff" ,ruby-hashdiff)))
+ (synopsis
+ "WebMock allows stubbing HTTP requests and setting expectations on HTTP requests.")
+ (description
+ "WebMock allows stubbing HTTP requests and setting expectations on HTTP requests.")
+ (home-page "http://github.com/bblimke/webmock")
+ (license license:expat)))
+
+(define-public ruby-websocket-driver
+ (package
+ (name "ruby-websocket-driver")
+ (version "0.6.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "websocket-driver" version))
+ (sha256
+ (base32
+ "1m37q24mxykvixcj8sv0jz7y2a88spysxg5rp4zf4p1q7mbblshy"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; tests not included
+ (propagated-inputs
+ `(("ruby-websocket-extensions"
+ ,ruby-websocket-extensions)))
+ (synopsis
+ "WebSocket protocol handler with pluggable I/O")
+ (description
+ "WebSocket protocol handler with pluggable I/O")
+ (home-page
+ "http://github.com/faye/websocket-driver-ruby")
+ (license license:expat)))
+
+(define-public ruby-websocket-extensions
+ (package
+ (name "ruby-websocket-extensions")
+ (version "0.1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "websocket-extensions" version))
+ (sha256
+ (base32
+ "07qnsafl6203a2zclxl20hy4jq11c471cgvd0bj5r9fx1qqw06br"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; tests not included
+ (synopsis
+ "Generic extension manager for WebSocket connections")
+ (description
+ "Generic extension manager for WebSocket connections")
+ (home-page
+ "http://github.com/faye/websocket-extensions-ruby")
+ (license license:expat)))
+
(define-public ruby-domain-name
(package
(name "ruby-domain-name")
@@ -4434,6 +6139,23 @@ device.")
(home-page "https://rubyworks.github.io/ansi")
(license license:bsd-2)))
+(define-public ruby-ansi-to-html
+ (package
+ (name "ruby-ansi-to-html")
+ (version "0.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "ansi-to-html" version))
+ (sha256
+ (base32
+ "0gfvxhdd87kn1ppl8idi7663zqqkwldbbmdhmcimcx7w6hq4nj65"))))
+ (build-system ruby-build-system)
+ (synopsis "ANSI color sequence to HTML")
+ (description "ANSI color sequence to HTML")
+ (home-page "")
+ (license license:expat)))
+
(define-public ruby-systemu
(package
(name "ruby-systemu")
@@ -4842,7 +6564,7 @@ part of the Prawn PDF generator.")
(define-public ruby-puma
(package
(name "ruby-puma")
- (version "3.9.1")
+ (version "3.11.4")
(source
(origin
(method url-fetch)
@@ -4852,7 +6574,7 @@ part of the Prawn PDF generator.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "03pifga841h17brh4vgia8i2ybh3cmsyg0dbybzdf6dq51wzcxdx"))))
+ "1kv2xsv74v7bf8qwsgz439xp7qcx26ms565h1g6x7fm8xbaxl5dj"))))
(build-system ruby-build-system)
(arguments
`(#:tests? #f ; Tests require an out-dated version of minitest.
@@ -5212,7 +6934,40 @@ in standard Ruby syntax.")
"1p3f43scdzx9zxmy2kw5zsc3az6v46nq4brwcxmnscjy4w4racbv"))))
(build-system ruby-build-system)
(arguments
- `(#:tests? #f))
+ `(#:tests? #f
+ #:test-target "spec"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'remove-dependency-and-patch-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "spec/spec_helper.rb"
+ ;; cannot require coveralls otherwise there is a dependency cycle
+ ;; childprocess, coveralls, rest-client, webmock, addressable,
+ ;; rspec-its, aruba, childprocess.
+ ((".*coveralls.*") "")
+ ((".*Coveralls.*") "")
+ ;; patch path to /bin/sh
+ (("/bin/sh") (which "sh"))
+ ;; testing
+ (("; sleep") "; puts \"before_sleep\"; sleep; puts \"after_sleep\"")
+ )
+ (substitute* "lib/childprocess/unix/process.rb"
+ (("send_signal 'TERM'") "puts 'terming'; send_signal 'TERM'")
+ (("send_signal 'KILL'") "puts 'killing'; send_signal 'KILL'")
+ (("return true if @exit_code")
+ "puts \"exit_code: #{@exit_code}\"; p self; return true if @exit_code"))
+ ;; sleep POLL_INTERVAL
+ (substitute* "lib/childprocess/abstract_process.rb"
+ (("sleep POLL_INTERVAL")
+ "puts 'sleeping'; sleep POLL_INTERVAL; puts 'awake'")
+ (("unless ok") "puts \"ok was #{ok} and exited? was #{exited?}\"; unless ok"))
+ #t))
+ ;(replace 'check
+ ; ;; for testing for ben only
+ ; (lambda _
+ ; (zero? (system* "rspec" "spec/childprocess_spec.rb" "-e" "kills
+ ; the full process tree"))))
+ )))
(native-inputs
`(("bundler" ,bundler)
("ruby-rspec" ,ruby-rspec)))
@@ -5248,9 +7003,12 @@ programs running in the background, in Ruby.")
(base32
"08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l"))))
(build-system ruby-build-system)
- (arguments
- ;; Tests require network
- `(#:tests? #f))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-yard" ,ruby-yard)
+ ("ruby-rubocop" ,ruby-rubocop)
+ ("ruby-mocha" ,ruby-mocha)
+ ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
(home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
(synopsis "Domain name parser")
(description "The gem @code{public_suffix} is a domain name parser,
@@ -5265,23 +7023,46 @@ all known public suffixes.")
(package
(name "ruby-addressable")
(version "2.5.2")
- (source (origin
- (method url-fetch)
- (uri (rubygems-uri "addressable" version))
- (sha256
- (base32
- "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk"))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "addressable" version))
+ (sha256
+ (base32
+ "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk"))))
(build-system ruby-build-system)
- (propagated-inputs
- `(("ruby-public-suffix" ,ruby-public-suffix)))
(arguments
- ;; No test target
- `(#:tests? #f))
- (home-page "https://github.com/sporkmonger/addressable")
- (synopsis "Alternative URI implementation")
- (description "Addressable is a replacement for the URI implementation that
-is part of Ruby's standard library. It more closely conforms to RFC 3986,
-RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
+ '(#:test-target "spec"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-rakefile
+ (lambda _
+ (substitute* "Gemfile"
+ (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
+ ((".*launchy.*") "")
+ ((".*rake.*") "gem 'rake'\n")
+ ((".*redcarpet.*") ""))
+ #t))
+ (add-before 'check 'delete-network-test
+ (lambda _
+ (delete-file "spec/addressable/net_http_compat_spec.rb")
+ #t)))))
+ (native-inputs
+ `(("ruby-rspec" ,ruby-rspec)
+ ("bundler" ,bundler)
+ ("ruby-idn-ruby" ,ruby-idn-ruby)
+ ("ruby-public-suffix" ,ruby-public-suffix)
+ ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
+ ("ruby-rspec-its", ruby-rspec-its)
+ ("ruby-yard" ,ruby-yard)
+ ("ruby-simplecov" ,ruby-simplecov)))
+ (synopsis "Uniform resource identifier (URI) reimplementation")
+ (description
+ "Addressable is a replacement for the URI implementation that is part of
+Ruby's standard library. It more closely conforms to the relevant RFCs and
+adds support for IRIs and URI templates.")
+ (home-page
+ "https://github.com/sporkmonger/addressable")
(license license:asl2.0)))
(define-public ruby-colorator
@@ -5546,19 +7327,58 @@ interface. It allows Jekyll to rebuild your site when a file changes.")
(package
(name "ruby-parallel")
(version "1.12.1")
- (source (origin
- (method url-fetch)
- (uri (rubygems-uri "parallel" version))
- (sha256
- (base32
- "01hj8v1qnyl5ndrs33g8ld8ibk0rbcqdpkpznr04gkbxd11pqn67"))))
+ (source
+ (origin
+ (method url-fetch)
+ ;; fetch from github as rubygem does not contain tests
+ (uri (string-append "https://github.com/grosser/parallel/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0jpibyj9xzihllq02vg48gc7w3xklp5srx52ddcfg165mkx6xpwp"))))
(build-system ruby-build-system)
- (arguments `(#:tests? #f)); No rakefile
+ (arguments
+ `(;; TODO 3 test failures
+ ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not open unnecessary pipes
+ ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with SQLite in processes
+ ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with SQLite in threads
+ #:tests? #f
+ #:test-target "rspec-rerun:spec"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-Gemfile
+ (lambda _
+ (substitute* "Gemfile"
+ (("gem 'rspec-legacy_formatters'") "")
+ (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
+ (add-before 'check 'delete-Gemfile.lock
+ (lambda _
+ ;; Bundler isn't being used for fetching dependendencies, so
+ ;; delete the Gemfile.lock
+ (delete-file "Gemfile.lock")
+ #t))
+ (add-before 'build 'patch-gemspec
+ (lambda _
+ (substitute* "parallel.gemspec"
+ (("git ls-files") "find"))
+ #t)))))
+ (native-inputs
+ `(("ruby-rspec" ,ruby-rspec)
+ ("ruby-rspec-rerun" ,ruby-rspec-rerun)
+ ("bundler" ,bundler)
+ ("ruby-activerecord" ,ruby-activerecord)
+ ("ruby-ruby-progressbar" ,ruby-ruby-progressbar)
+ ("ruby-bump" ,ruby-bump)
+ ("procps" ,procps)
+ ("lsof" ,lsof)
+ ("ruby-mysql2" ,ruby-mysql2)
+ ("ruby-sqlite3" ,ruby-sqlite3)
+ ("ruby-i18n" ,ruby-i18n)))
+ (synopsis "Run Ruby code in parallel processes")
+ (description
+ "Run any kind of code in parallel processes")
(home-page "https://github.com/grosser/parallel")
- (synopsis "Parallel processing in Ruby")
- (description "Parallel allows you to run any code in parallel Processes
-(to use all CPUs) or Threads(to speedup blocking operations). It is best
-suited for map-reduce or e.g. parallel downloads/uploads.")
(license license:expat)))
(define-public ruby-cane
@@ -5712,20 +7532,57 @@ functionality from Prawn.")
(package
(name "ruby-prawn-table")
(version "0.2.2")
- (source (origin
- (method url-fetch)
- (uri (rubygems-uri "prawn-table" version))
- (sha256
- (base32
- "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "prawn-table" version))
+ (sha256
+ (base32
+ "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
(build-system ruby-build-system)
- (arguments `(#:tests? #f)); No rakefile
(propagated-inputs
- `(("ruby-prawn" ,ruby-prawn)))
- (home-page "https://github.com/prawnpdf/prawn-table")
- (synopsis "Tables support for Prawn")
- (description "This gem provides tables support for Prawn.")
- (license license:gpl3+)))
+ `(("ruby-prawn" ,ruby-prawn)
+ ("ruby-pdf-inspector" ,ruby-pdf-inspector)))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-yard" ,ruby-yard)
+ ("ruby-mocha" ,ruby-mocha)
+ ("ruby-coderay" ,ruby-coderay)
+ ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
+ ("ruby-simplecov" ,ruby-simplecov)
+ ("ruby-rspec-2" ,ruby-rspec-2)))
+ (arguments
+ '(;; TODO: 1 test fails
+ ;; Failure/Error: pdf.page_count.should == 1
+ ;; expected: 1
+ ;; got: 2 (using ==)
+ ;; # ./spec/table_spec.rb:1308
+ ;;
+ ;; 225 examples, 1 failure
+ #:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'patch-gemspec
+ (lambda _
+ (substitute* "prawn-table.gemspec"
+ ;; Loosen the requirement for pdf-inspector
+ (("~> 1\\.1\\.0") ">= 0")
+ ;; Loosen the requirement for pdf-reader
+ (("~> 1\\.2") ">= 0"))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "rspec")
+ #t))))))
+ (synopsis
+ " Prawn::Table provides tables for the Prawn PDF toolkit
+")
+ (description
+ " Prawn::Table provides tables for the Prawn PDF toolkit
+")
+ (home-page
+ "https://github.com/prawnpdf/prawn-table")
+ (license (list #f #f #f))))
(define-public ruby-kramdown
(package
@@ -5838,21 +7695,47 @@ is compatible with stylesheets designed for pygments.")
(define-public ruby-hashie
(package
(name "ruby-hashie")
- (version "3.6.0")
- (source (origin
- (method url-fetch)
- (uri (rubygems-uri "hashie" version))
- (sha256
- (base32
- "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
+ (version "3.5.7")
+ (source
+ (origin
+ (method url-fetch)
+ ;; The gem does not include Gemfile.
+ (uri (string-append "https://github.com/intridea/hashie/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "00afsf591jj1q7j44fswwwrki01qgxa6wnqi6a6sq3bfjm1jlxy6"))))
(build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f
+ #:test-target "spec"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'fix-dependencies
+ (lambda _
+ (substitute* "Gemfile"
+ ((".*pry.*") "")
+ ((".*guard.*") "")
+ ((".*codeclimate.*") "")
+ (("rubocop.*") "rubocop'\n")
+ (("rspec-core.*") "rspec-core'\n"))
+ (substitute* "spec/spec_helper.rb"
+ ((".*pry.*") ""))
+ #t)))))
(native-inputs
- `(("bundler" ,bundler)))
- (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
+ `(("bundler" ,bundler)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-rspec-pending-for" ,ruby-rspec-pending-for)
+ ;("ruby-guard" ,ruby-guard)
+ ;("ruby-guard-rspec" ,ruby-guard-rspec)
+ ("ruby-activesupport" ,ruby-activesupport)
+ ("ruby-rubocop" ,ruby-rubocop)))
+ (synopsis
+ "Hashie is a collection of classes and mixins that make hashes more powerful.")
+ (description
+ "Hashie is a collection of classes and mixins that make hashes more powerful.")
(home-page "https://github.com/intridea/hashie")
- (synopsis "Extensions to Ruby Hashes")
- (description "Hashie is a collection of classes and mixins that make Ruby
-hashes more powerful.")
(license license:expat)))
(define-public ruby-heredoc-unindent
@@ -6042,3 +7925,1282 @@ Pathname.")
(description "The Pagination Generator forms the core of the pagination
logic in Jekyll. It calculates and generates the pagination pages.")
(license license:expat)))
+
+(define-public ruby-aruba
+ (package
+ (name "ruby-aruba")
+ (version "0.14.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "aruba" version))
+ (sha256
+ (base32
+ "11v7d4d3q1as3w5md22q3vilnmqw1icp7sg955ylfzmxjc07pdby"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f ; There are 3 test failures to do with running commands, not
+ ; sure what the issue is.
+ #:test-target "spec"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'fix-gemfile
+ (lambda _
+ (substitute* "Gemfile"
+ ((".*byebug.*") "\n")
+ ((".*pry.*") "\n")
+ ((".*yaml.*") "\n")
+ ((".*bcat.*") "\n")
+ ((".*kramdown.*") "\n")
+ ((".*fuubar.*") "\n")
+ ((".*rubocop.*") "\n")
+ ((".*cucumber-pro.*") "\n")
+ ((".*license_finder.*") "\n")
+ ((".*relish.*") "\n")
+ )
+ (substitute* "spec/spec_helper.rb"
+ ((".*simplecov.*") "")
+ (("^SimpleCov.*") ""))
+ #t))
+ (add-before 'check 'set-home
+ (lambda _ (setenv "HOME" "/tmp") #t)))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-simplecov" ,ruby-simplecov)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-fuubar" ,ruby-fuubar)))
+ (propagated-inputs
+ `(("ruby-childprocess" ,ruby-childprocess)
+ ("ruby-contracts" ,ruby-contracts)
+ ("ruby-cucumber" ,ruby-cucumber)
+ ("ruby-ffi" ,ruby-ffi)
+ ("ruby-rspec-expectations" ,ruby-rspec-expectations)
+ ("ruby-thor" ,ruby-thor)))
+ (synopsis
+ "Extension for popular TDD and BDD frameworks like \"Cucumber\", \"RSpec\" and \"Minitest\" to make testing commandline applications meaningful, easy and fun.")
+ (description
+ "Extension for popular TDD and BDD frameworks like \"Cucumber\", \"RSpec\" and \"Minitest\" to make testing commandline applications meaningful, easy and fun.")
+ (home-page "http://github.com/cucumber/aruba")
+ (license license:expat)))
+
+;; A version of ruby-aruba without tests run so that circular dependencies can
+;; be avoided.
+(define ruby-aruba-without-tests
+ (package (inherit ruby-aruba)
+ (arguments
+ `(#:tests? #f))
+ (propagated-inputs
+ (map (lambda (input)
+ (if (string=? (car input)
+ "ruby-cucumber")
+ `("ruby-cucumber" ,ruby-cucumber-without-tests)
+ input))
+ (package-propagated-inputs ruby-aruba)))
+ (native-inputs
+ `())))
+
+(define-public ruby-cucumber
+ (package
+ (name "ruby-cucumber")
+ (version "2.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "cucumber" version))
+ (sha256
+ (base32
+ "1k4j31a93r0zhvyq2mm2k8irppbvkzbsg44r3mf023959v18fzih"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:test-target "spec"
+ ;; TODO: Test failure as documented at
+ ;; https://github.com/cucumber/cucumber/issues/58
+ ;;
+ ;; Cucumber::Formatter::Html when writing the report to a file with a
+ ;; step that embeds a snapshot converts the snapshot path to a relative
+ ;; path
+ ;;
+ ;; Failure/Error: expect(@out).to
+ ;; receive(:respond_to?).with(:path).and_return(true)
+ ;;
+ ;; (#<StringIO:0x00005555570887a0>).respond_to?(:path)
+ ;; expected: 1 time with arguments: (:path)
+ ;; received: 3 times with arguments: (:path)
+ ;; # ./spec/cucumber/formatter/html_spec.rb:35
+ #:tests? #f))
+ (propagated-inputs
+ `(("ruby-builder" ,ruby-builder)
+ ("ruby-cucumber-core" ,ruby-cucumber-core-1)
+ ("ruby-cucumber-wire" ,ruby-cucumber-wire)
+ ("ruby-diff-lcs" ,ruby-diff-lcs)
+ ("ruby-gherkin" ,ruby-gherkin)
+ ("ruby-multi-json" ,ruby-multi-json)
+ ("ruby-multi-test" ,ruby-multi-test)))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ;; Use a untested version of aruba, to avoid a circular dependency, as
+ ;; ruby-aruba depends on ruby-cucumber.
+ ("ruby-aruba", ruby-aruba-without-tests)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-pry" ,ruby-pry)
+ ("ruby-nokogiri" ,ruby-nokogiri)))
+ (synopsis
+ "Behaviour Driven Development with elegance and joy")
+ (description
+ "Behaviour Driven Development with elegance and joy")
+ (home-page "http://cukes.info")
+ (license license:asl2.0)))
+
+(define ruby-cucumber-without-tests
+ (package (inherit ruby-cucumber)
+ (arguments
+ `(#:tests? #f))
+ (native-inputs
+ `())))
+
+(define-public ruby-coffee-script
+ (package
+ (name "ruby-coffee-script")
+ (version "2.4.1")
+ (source
+ (origin
+ (method url-fetch)
+ ;; fetch from github as the gem does not contain testing code
+ (uri (string-append
+ "https://github.com/rails/ruby-coffee-script/archive/v"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0gbcg40ks4ifm332ljmgq2l44ssld0z6xhjzk48v6mpaxyz8mc92"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'fix-test
+ (lambda _
+ ;; patch submitted upstream at
+ ;; https://github.com/rails/ruby-coffee-script/pull/6
+ (substitute* "test/test_coffee_script.rb"
+ ((" unexpected unless\\\"")
+ " unexpected unless\", '[stdin]:3:11: unexpected unless'"))
+ #t)))))
+ (propagated-inputs
+ `(("ruby-coffee-script-source" ,ruby-coffee-script-source)
+ ("ruby-execjs" ,ruby-execjs)
+ ("ruby-duktape", ruby-duktape))) ; use as the JS interpreter
+ (synopsis "bridge to the javascript CoffeeScript compiler.")
+ (description
+ "Ruby CoffeeScript is a bridge to the javascript CoffeeScript compiler.
+CoffeeScript is an attempt to expose the good parts of JavaScript in a simple
+way.")
+ (home-page
+ "http://github.com/rails/ruby-coffee-script")
+ (license license:expat)))
+
+(define-public ruby-ref
+ (package
+ (name "ruby-ref")
+ (version "2.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ ;; Tests are not distributed at rubygems.org so download from GitHub
+ ;; instead.
+ (uri (string-append "https://github.com/ruby-concurrency/ref/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1090z8vzf8bf7gx3akvrn4alcklyanbg6hipjmzlzkx0lr1l5zj4"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:test-target "spec"))
+ (synopsis
+ "Library that implements weak, soft, and strong references in Ruby that work
+across multiple runtimes (MRI, Jruby and Rubinius). Also includes implementation
+of maps/hashes that use references and a reference queue.")
+ (description
+ "Library that implements weak, soft, and strong references in Ruby that work
+across multiple runtimes (MRI, Jruby and Rubinius). Also includes
+implementation of maps/hashes that use references and a reference queue.")
+ (home-page
+ "http://github.com/ruby-concurrency/ref")
+ (license license:expat)))
+
+;; haml 4 cannot currently be packaged because tilt is not yet packaged.
+(define-public ruby-haml
+ (package
+ (name "ruby-haml")
+ (version "4.0.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "haml" version))
+ (sha256
+ (base32
+ "0mrzjgkygvfii66bbylj2j93na8i89998yi01fin3whwqbvx0m1p"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; circular dependency with tilt
+; (propagated-inputs `(("ruby-tilt" ,ruby-tilt)))
+ (synopsis "Haml (HTML Abstraction Markup Language) library.")
+ (description
+ "Haml (HTML Abstraction Markup Language) is a layer on top of HTML or XML
+that is designed to express the structure of documents using indentation rather
+than closing tags. It was originally envisioned as a plugin for Ruby on Rails,
+but it can function as a stand-alone templating engine.")
+ (home-page "http://haml.info/")
+ (license license:expat)))
+
+(define-public ruby-faraday
+ (package
+ (name "ruby-faraday")
+ (version "0.9.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "faraday" version))
+ (sha256
+ (base32
+ "1kplqkpn2s2yl3lxdf6h7sfldqvkbkpxwwxhyk7mdhjplb5faqh6"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-multipart-post" ,ruby-multipart-post)))
+ (synopsis "HTTP/REST API client library.")
+ (description "HTTP/REST API client library.")
+ (home-page
+ "https://github.com/lostisland/faraday")
+ (license license:expat)))
+
+(define-public ruby-nio4r
+ (package
+ (name "ruby-nio4r")
+ (version "2.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "nio4r" version))
+ (sha256
+ (base32
+ "0jjrj7vs29w6dfgsxq08226jfbi2j0x62lf4p9zmvyp19dj4z00a"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f
+ #:test-target "spec"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'fix-dependencies
+ (lambda _
+ (substitute* "Gemfile"
+ (("rubocop.*") "rubocop\"\n"))
+ #t))
+ (add-before 'check 'compile
+ (lambda _
+ (zero? (system* "rake" "compile")))))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rake-compiler" ,ruby-rake-compiler)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-rubocop" ,ruby-rubocop)
+ ("ruby-coveralls" ,ruby-coveralls)))
+ (synopsis "New IO for Ruby")
+ (description "New IO for Ruby")
+ (home-page "https://github.com/celluloid/nio4r")
+ (license license:expat)))
+
+(define-public ruby-globalid
+ (package
+ (name "ruby-globalid")
+ (version "0.3.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "globalid" version))
+ (sha256
+ (base32
+ "145xrpsfx1qqjy33r6qa588wb16dvdhxzj2aysh755vhg6hgm291"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-activesupport" ,ruby-activesupport)))
+ (synopsis
+ "URIs for your models makes it easy to pass references around.")
+ (description
+ "URIs for your models makes it easy to pass references around.")
+ (home-page "http://www.rubyonrails.org")
+ (license license:expat)))
+
+(define-public ruby-sprockets
+ (package
+ (name "ruby-sprockets")
+ (version "3.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "sprockets" version))
+ (sha256
+ (base32
+ "0sv3zk5hwxyjvg7iy9sggjc7k3mfxxif7w8p260rharfyib939ar"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; tests not included
+ (propagated-inputs
+ `(("ruby-concurrent" ,ruby-concurrent)
+ ("ruby-rack" ,ruby-rack)))
+ (synopsis
+ "Sprockets is a Rack-based asset packaging system that concatenates and serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
+ (description
+ "Sprockets is a Rack-based asset packaging system that concatenates and serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
+ (home-page "https://github.com/rails/sprockets")
+ (license license:expat)))
+
+(define-public ruby-uglifier
+(package
+ (name "ruby-uglifier")
+ (version "3.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "uglifier" version))
+ (sha256
+ (base32
+ "05a7xqzzlliqbd32jfkmis08pb0cljns7jx14ybkqb9zbg7ph35h"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; Tests fail, perhaps they require npm? test-target "spec"
+ ;; #:phases
+ ;; (modify-phases %standard-phases
+ ;; (add-before 'check 'list
+ ;; (lambda _
+ ;; (system* "rake" "js")
+ ;; (system* "gem" "list"))))))
+ (propagated-inputs
+ `(("ruby-execjs" ,ruby-execjs)))
+ ;; (native-inputs
+ ;; `(("bundler" ,bundler)
+ ;; ("ruby-rubocop" ,ruby-rubocop)
+ ;; ("ruby-rspec" ,ruby-rspec)
+ ;; ("ruby-sourcemap" ,ruby-sourcemap)
+ ;; ("ruby-duktape" ,ruby-duktape))) ; Use as the JS interpreter
+ (synopsis
+ "Uglifier minifies JavaScript files by wrapping UglifyJS to be accessible in Ruby")
+ (description
+ "Uglifier minifies JavaScript files by wrapping UglifyJS to be accessible in Ruby")
+ (home-page "http://github.com/lautis/uglifier")
+ (license license:expat)))
+
+(define-public ruby-sourcemap
+(package
+ (name "ruby-sourcemap")
+ (version "0.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "sourcemap" version))
+ (sha256
+ (base32
+ "0l111zg9qh2g15rpmi2d006m3h27hl462d7zmc4js67ppmkcd7w8"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-minitest" ,ruby-minitest)))
+ (synopsis "Ruby source maps")
+ (description "Ruby source maps")
+ (home-page "http://github.com/maccman/sourcemap")
+ (license license:expat)))
+
+(define-public ruby-turbolinks-source
+ (package
+ (name "ruby-turbolinks-source")
+ (version "5.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "turbolinks-source" version))
+ (sha256
+ (base32
+ "1s197pamkac9kkhslj41gxxihx6jp3dh4g394k9zmbxwkfrf36zb"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; There are no tests.
+ (synopsis "Turbolinks JavaScript assets")
+ (description "Turbolinks JavaScript assets")
+ (home-page
+ "https://github.com/turbolinks/turbolinks-source-gem")
+ (license license:expat)))
+
+(define-public ruby-turbolinks
+ (package
+ (name "ruby-turbolinks")
+ (version "5.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "turbolinks" version))
+ (sha256
+ (base32
+ "1dpsl17mygsd3hjcb2zq05n9zygbi0qc5130h276lw6py8g7nppc"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; There are no tests.
+ (propagated-inputs
+ `(("ruby-turbolinks-source" ,ruby-turbolinks-source)))
+ (synopsis
+ "Rails engine for Turbolinks 5 support")
+ (description
+ "Rails engine for Turbolinks 5 support")
+ (home-page
+ "https://github.com/turbolinks/turbolinks-rails")
+ (license license:expat)))
+
+(define-public ruby-jbuilder
+ (package
+ (name "ruby-jbuilder")
+ (version "2.7.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "jbuilder" version))
+ (sha256
+ (base32
+ "1n3myqk2hdnidzzbgcdz2r1y4cr5vpz5nkfzs0lz4y9gkjbjyh2j"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'fix-dependencies'
+ (lambda _
+ (substitute* "Gemfile"
+ ((".*pry.*") ""))
+ #t)))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-mocha" ,ruby-mocha)
+ ("ruby-appraisal" ,ruby-appraisal)))
+ (propagated-inputs
+ `(("ruby-activesupport" ,ruby-activesupport)
+ ("ruby-multi-json" ,ruby-multi-json)))
+ (synopsis
+ "Create JSON structures via a Builder-style DSL")
+ (description
+ "Create JSON structures via a Builder-style DSL")
+ (home-page "https://github.com/rails/jbuilder")
+ (license license:expat)))
+
+(define-public ruby-erubi
+ (package
+ (name "ruby-erubi")
+ (version "1.7.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "erubi" version))
+ (sha256
+ (base32
+ "1zkaqb8zv14azb2fa8w79d3mssdx86k9kg2m1bgc2k428y2zf8g9"))))
+ (build-system ruby-build-system)
+ (synopsis
+ "Erubi is a ERB template engine for ruby. It is a simplified fork of Erubis")
+ (description
+ "Erubi is a ERB template engine for ruby. It is a simplified fork of Erubis")
+ (home-page
+ "https://github.com/jeremyevans/erubi")
+ (license license:expat)))
+
+(define-public ruby-rubygems
+ (package
+ (name "ruby-rubygems")
+ (version (string-append "2.6.6"))
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://rubygems.org/rubygems/rubygems-"
+ version ".tgz"))
+ (sha256
+ (base32
+ "0x0ldlwr627d0brw96jdbscib6d2nk19izvnh8lzsasszi1k5rkq"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'build
+ (lambda* (#:key outputs #:allow-other-keys)
+ (zero? (system*
+ "ruby" "setup.rb"
+ (string-append
+ "--prefix=" (assoc-ref outputs "out"))))))
+ (delete 'check) ; fix
+ (delete 'install) ; done in build
+ )))
+ (synopsis "")
+ (description
+ "")
+ (home-page "")
+ (license license:expat))) ;?
+
+(define-public ruby-ruby-dep
+ (package
+ (name "ruby-ruby-dep")
+ (version "1.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "ruby_dep" version))
+ (sha256
+ (base32
+ "12i57gpy0gmkwnd7l6xdjpfw9bygxmgwx4hjwgg4mca2jr7d3g47"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; Do not test to avoid circular dependency with gem_isolator.
+ (synopsis
+ "Creates a version constraint of supported Rubies,suitable for a gemspec file")
+ (description
+ "Creates a version constraint of supported Rubies,suitable for a gemspec file")
+ (home-page "https://github.com/e2/ruby_dep")
+ (license license:expat)))
+
+(define-public ruby-guard-compat
+ (package
+ (name "ruby-guard-compat")
+ (version "1.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "guard-compat" version))
+ (sha256
+ (base32
+ "1zj6sr1k8w59mmi27rsii0v8xyy2rnsi09nqvwpgj1q10yq1mlis"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:test-target "spec"))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-rubocop" ,ruby-rubocop)))
+ (synopsis
+ "Helps creating valid Guard plugins and testing them")
+ (description
+ "Helps creating valid Guard plugins and testing them")
+ (home-page "")
+ (license license:expat)))
+
+(define-public ruby-guard-rspec
+ (package
+ (name "ruby-guard-rspec")
+ (version "4.7.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "guard-rspec" version))
+ (sha256
+ (base32
+ "1jkm5xp90gm4c5s51pmf92i9hc10gslwwic6mvk72g0yplya0yx4"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; Tests require further dependencies e.g. gem_isolator.
+ (propagated-inputs
+ `(("ruby-guard" ,ruby-guard)
+ ("ruby-guard-compat" ,ruby-guard-compat)
+ ("ruby-rspec" ,ruby-rspec)))
+ (synopsis
+ "Guard::RSpec automatically run your specs (much like autotest).")
+ (description
+ "Guard::RSpec automatically run your specs (much like autotest).")
+ (home-page
+ "https://github.com/guard/guard-rspec")
+ (license license:expat)))
+
+(define-public ruby-backports
+ (package
+ (name "ruby-backports")
+ (version "3.6.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "backports" version))
+ (sha256
+ (base32
+ "0m8jkjh4kymgfipd6yb0zcxlas4x5r60k2c94zkklb1ryma33grc"))))
+ (build-system ruby-build-system)
+ (synopsis
+ "Essential backports that enable many of the nice features of Ruby 1.8.7 up to 2.1.0 for earlier versions.")
+ (description
+ "Essential backports that enable many of the nice features of Ruby 1.8.7 up to 2.1.0 for earlier versions.")
+ (home-page
+ "http://github.com/marcandre/backports")
+ (license license:expat)))
+
+(define-public ruby-gh
+ (package
+ (name "ruby-gh")
+ (version "0.14.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "gh" version))
+ (sha256
+ (base32
+ "0j7m6jmxzkxvnqgnhmci33a89qpaxxcrm55kk5vz4bcpply04hx2"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-addressable" ,ruby-addressable)
+ ("ruby-backports" ,ruby-backports)
+ ("ruby-faraday" ,ruby-faraday)
+ ("ruby-multi-json" ,ruby-multi-json)
+ ("ruby-net-http-persistent"
+ ,ruby-net-http-persistent)
+ ;("ruby-net-http-pipeline"
+ ; ,ruby-net-http-pipeline)
+ ))
+ (synopsis
+ "multi-layer client for the github api v3")
+ (description
+ "multi-layer client for the github api v3")
+ (home-page "http://gh.rkh.im/")
+ (license license:expat)))
+
+(define-public ruby-faraday-middleware
+ (package
+ (name "ruby-faraday-middleware")
+ (version "0.10.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "faraday_middleware" version))
+ (sha256
+ (base32
+ "0nxia26xzy8i56qfyz1bg8dg9yb26swpgci8n5jry8mh4bnx5r5h"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-faraday" ,ruby-faraday)))
+ (synopsis "Various middleware for Faraday")
+ (description "Various middleware for Faraday")
+ (home-page
+ "https://github.com/lostisland/faraday_middleware")
+ (license license:expat)))
+
+(define-public ruby-launchy
+ (package
+ (name "ruby-launchy")
+ (version "2.4.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "launchy" version))
+ (sha256
+ (base32
+ "190lfbiy1vwxhbgn4nl4dcbzxvm049jwc158r2x7kq3g5khjrxa2"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-addressable" ,ruby-addressable)))
+ (synopsis
+ "Launchy is helper class for launching cross-platform applications in a fire and forget manner. There are application concepts (browser, email client, etc) that are common across all platforms, and they may be launched differently on each platform. Launchy is here to make a common approach to launching external application from within ruby programs.")
+ (description
+ "Launchy is helper class for launching cross-platform applications in a fire and forget manner. There are application concepts (browser, email client, etc) that are common across all platforms, and they may be launched differently on each platform. Launchy is here to make a common approach to launching external application from within ruby programs.")
+ (home-page
+ "http://github.com/copiousfreetime/launchy")
+ (license #f)))
+
+(define-public ruby-travis
+ (package
+ (name "ruby-travis")
+ (version "1.8.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "travis" version))
+ (sha256
+ (base32
+ "0s88790wlhlsaxs9561w3h6vhj00sc36bw6k7rajj6vi0416s73z"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-addressable" ,ruby-addressable)
+ ("ruby-backports" ,ruby-backports)
+ ("ruby-faraday" ,ruby-faraday)
+ ("ruby-faraday-middleware"
+ ,ruby-faraday-middleware)
+ ("ruby-gh" ,ruby-gh)
+ ("ruby-highline" ,ruby-highline)
+ ("ruby-launchy" ,ruby-launchy)
+ ("ruby-pry" ,ruby-pry)
+ ;("ruby-pusher-client" ,ruby-pusher-client)
+ ;("ruby-typhoeus" ,ruby-typhoeus)
+ ))
+ (synopsis
+ "CLI and Ruby client library for Travis CI")
+ (description
+ "CLI and Ruby client library for Travis CI")
+ (home-page
+ "https://github.com/travis-ci/travis.rb")
+ (license license:expat)))
+
+(define-public ruby-sinatra
+ (package
+ (name "ruby-sinatra")
+ (version "2.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "sinatra" version))
+ (sha256
+ (base32
+ "0dbpy8cm06psnk4q1d8map4z81xvlghyi91075xsm56ka2d6kpsi"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-rack" ,ruby-rack)
+ ("ruby-rack-protection" ,ruby-rack-protection)
+ ("ruby-tilt" ,ruby-tilt)))
+ (native-inputs
+ `(("ruby-rack-test" ,ruby-rack-test)))
+ (synopsis
+ "Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort.")
+ (description
+ "Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort.")
+ (home-page "http://www.sinatrarb.com/")
+ (license license:expat)))
+
+(define-public ruby-bzip2-ruby
+ ;; Use git reference because gem is out of date.
+ (let ((revision "1")
+ (commit "e58f154624ff2d770e92a70e0d8fb1a9e6564720"))
+ (package
+ (name "ruby-bzip2-ruby")
+ (version (string-append "0.2.7." revision "." commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/brianmario/bzip2-ruby.git")
+ (commit commit)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "072jzd1fm6z0fnc166q7n4h8h4vrb9jhpcl7swh7d0qm4fx4cxvz"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:test-target "spec"
+ ; #:gem-flags
+ ; (list "--"
+ ; (string-append "--with-bz2-dir="
+ ; (assoc-ref %build-inputs "bzip2")
+ ; "/include/" ))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-gemspec-and-source
+ (lambda _
+ (substitute* "bzip2-ruby.gemspec"
+ (("s.files = `git ls-files`") "s.files = `find *`")
+ (("s.test_files = `git ls-files spec`")
+ "s.files = `find spec`"))
+ ;; Use part of the patch proposed at
+ ;; https://github.com/brianmario/bzip2-ruby/pull/26
+ (substitute* "ext/bzip2/writer.c"
+ (("RBASIC\\(res\\)->klass = rb_cString;")
+ "RBASIC_SET_CLASS(res, rb_cString);"))
+ #t)))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rspec" ,ruby-rspec-2)
+ ("ruby-rake-compiler" ,ruby-rake-compiler)))
+ (synopsis "Ruby C bindings to libbzip2.")
+ (description "Ruby C bindings to libbzip2.")
+ (home-page
+ "http://github.com/brianmario/bzip2-ruby")
+ (license #f))))
+
+(define-public ruby-open4
+ (package
+ (name "ruby-open4")
+ (version "1.3.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "open4" version))
+ (sha256
+ (base32
+ "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (synopsis
+ "open child process with handles on pid, stdin, stdout, and stderr: manage child processes and their io handles easily.")
+ (description
+ "open child process with handles on pid, stdin, stdout, and stderr: manage child processes and their io handles easily.")
+ (home-page "https://github.com/ahoward/open4")
+ (license #f)))
+
+(define-public ruby-hamster
+ (package
+ (name "ruby-hamster")
+ (version "3.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "hamster" version))
+ (sha256
+ (base32
+ "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-concurrent" ,ruby-concurrent)))
+ (synopsis
+ "Efficient, immutable, thread-safe collection classes for Ruby")
+ (description
+ "Efficient, immutable, thread-safe collection classes for Ruby")
+ (home-page
+ "https://github.com/hamstergem/hamster")
+ (license license:expat)))
+
+(define-public ruby-lino
+ (package
+ (name "ruby-lino")
+ (version "1.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "lino" version))
+ (sha256
+ (base32
+ "11d29g0fk372b9fcpyr0k6hxm2b4j4igpysmi542hgbbgqgp9cd3"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-hamster" ,ruby-hamster)
+ ("ruby-open4" ,ruby-open4)))
+ (synopsis "Command line builders and executors.")
+ (description
+ "Command line builders and executors.")
+ (home-page "https://github.com/tobyclemson/lino")
+ (license license:expat)))
+
+(define-public ruby-terraform
+ (package
+ (name "ruby-terraform")
+ (version "0.12.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "ruby-terraform" version))
+ (sha256
+ (base32
+ "198q2nmfbyn0x7vs81x4gmxymz0z5k7y7x9v48vi8szqlhm9fp7r"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (propagated-inputs `(("ruby-lino" ,ruby-lino)))
+ (synopsis
+ "Wraps the Terraform CLI so that Terraform can be invoked from a Ruby script or Rakefile.")
+ (description
+ "Wraps the Terraform CLI so that Terraform can be invoked from a Ruby script or Rakefile.")
+ (home-page
+ "https://github.com/tobyclemson/ruby_terraform")
+ (license license:expat)))
+
+(define-public ruby-sucker-punch
+ (package
+ (name "ruby-sucker-punch")
+ (version "2.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "sucker_punch" version))
+ (sha256
+ (base32
+ "064dgfg3jwna2x1iyhbz3pvh3iryxs4vls77jmmad571hjz0l01p"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-concurrent" ,ruby-concurrent)))
+ (synopsis
+ "Asynchronous processing library for Ruby")
+ (description
+ "Asynchronous processing library for Ruby")
+ (home-page
+ "https://github.com/brandonhilkert/sucker_punch")
+ (license license:expat)))
+
+(define-public ruby-que
+(package
+ (name "ruby-que")
+ (version "1.0.0.beta3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "que" version))
+ (sha256
+ (base32
+ "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (synopsis
+ "A job queue that uses PostgreSQL's advisory locks for speed and reliability.")
+ (description
+ "This package provides a job queue that uses PostgreSQL's advisory locks for speed and reliability.")
+ (home-page "https://github.com/chanks/que")
+ (license license:expat)))
+
+(define-public ruby-autoprefixer-rails
+ (package
+ (name "ruby-autoprefixer-rails")
+ (version "7.2.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "autoprefixer-rails" version))
+ (sha256
+ (base32
+ "12jiv0nigfcnzn03w8avv6ivr9hwx4hqd28758yvsrfdzq31i05a"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (propagated-inputs
+ `(("ruby-execjs" ,ruby-execjs)))
+ (synopsis
+ "Parse CSS and add vendor prefixes to CSS rules using values from the Can I Use website.")
+ (description
+ "Parse CSS and add vendor prefixes to CSS rules using values from the Can I Use website.")
+ (home-page
+ "https://github.com/ai/autoprefixer-rails")
+ (license license:expat)))
+
+(define-public ruby-bootstrap-sass
+ (package
+ (name "ruby-bootstrap-sass")
+ (version "3.3.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "bootstrap-sass" version))
+ (sha256
+ (base32
+ "1bc9bf6caddqn1rv15b5x56yczmbjzaxzl9lk5zbwrg1bfph4bx9"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-autoprefixer-rails"
+ ,ruby-autoprefixer-rails)
+ ("ruby-sass" ,ruby-sass)))
+ (synopsis
+ "bootstrap-sass is a Sass-powered version of Bootstrap 3, ready to drop right into your Sass powered applications.")
+ (description
+ "bootstrap-sass is a Sass-powered version of Bootstrap 3, ready to drop right into your Sass powered applications.")
+ (home-page
+ "https://github.com/twbs/bootstrap-sass")
+ (license license:expat)))
+
+(define-public ruby-multi-xml
+ (package
+ (name "ruby-multi-xml")
+ (version "0.6.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "multi_xml" version))
+ (sha256
+ (base32
+ "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(;; No included tests
+ #:tests? #f))
+ (synopsis
+ "Provides swappable XML backends utilizing LibXML, Nokogiri, Ox, or REXML.")
+ (description
+ "Provides swappable XML backends utilizing LibXML, Nokogiri, Ox, or REXML.")
+ (home-page "https://github.com/sferik/multi_xml")
+ (license license:expat)))
+
+(define-public ruby-omniauth-oauth2
+ (package
+ (name "ruby-omniauth-oauth2")
+ (version "1.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "omniauth-oauth2" version))
+ (sha256
+ (base32
+ "0mskwlw5ibx9mz7ywqji6mm56ikf7mglbnfc02qhg6ry527jsxdm"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-oauth2" ,ruby-oauth2)
+ ("ruby-omniauth" ,ruby-omniauth)))
+ (synopsis
+ "An abstract OAuth2 strategy for OmniAuth.")
+ (description
+ "An abstract OAuth2 strategy for OmniAuth.")
+ (home-page
+ "https://github.com/omniauth/omniauth-oauth2")
+ (license license:expat)))
+
+(define-public ruby-jwt
+ (package
+ (name "ruby-jwt")
+ (version "1.5.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "jwt" version))
+ (sha256
+ (base32
+ "124zz1142bi2if7hl5pcrcamwchv4icyr5kaal9m2q6wqbdl6aw4"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (synopsis
+ "A pure ruby implementation of the RFC 7519 OAuth JSON Web Token (JWT) standard.")
+ (description
+ "This package provides a pure ruby implementation of the RFC 7519 OAuth JSON Web Token (JWT) standard.")
+ (home-page "http://github.com/jwt/ruby-jwt")
+ (license license:expat)))
+
+(define-public ruby-oauth2
+ (package
+ (name "ruby-oauth2")
+ (version "1.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "oauth2" version))
+ (sha256
+ (base32
+ "094hmmfms8vpm6nwglpl7jmlv85nlfzl0kik4fizgx1rg70a6mr5"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-faraday" ,ruby-faraday)
+ ("ruby-jwt" ,ruby-jwt)
+ ("ruby-multi-json" ,ruby-multi-json)
+ ("ruby-multi-xml" ,ruby-multi-xml)
+ ("ruby-rack" ,ruby-rack)))
+ (synopsis
+ "A Ruby wrapper for the OAuth 2.0 protocol built with a similar style to the original OAuth spec.")
+ (description
+ "This package provides a Ruby wrapper for the OAuth 2.0 protocol built with a similar style to the original OAuth spec.")
+ (home-page "http://github.com/intridea/oauth2")
+ (license license:expat)))
+
+(define-public ruby-omniauth
+ (package
+ (name "ruby-omniauth")
+ (version "1.8.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "omniauth" version))
+ (sha256
+ (base32
+ "1msqr4qq7mfdvl3rg89529isrv595hvjpj2gi0say4b8nwqfggmg"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-hashie" ,ruby-hashie)
+ ("ruby-rack" ,ruby-rack)))
+ (synopsis
+ "A generalized Rack framework for multiple-provider authentication.")
+ (description
+ "This package provides a generalized Rack framework for multiple-provider authentication.")
+ (home-page
+ "https://github.com/omniauth/omniauth")
+ (license license:expat)))
+
+(define-public ruby-warden
+ (package
+ (name "ruby-warden")
+ (version "1.2.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "warden" version))
+ (sha256
+ (base32
+ "0va966lhpylcwbqb9n151kkihx30agh0a57mwjwdxyanll4s1q12"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (propagated-inputs `(("ruby-rack" ,ruby-rack)))
+ (synopsis
+ "Rack middleware that provides authentication for rack applications")
+ (description
+ "Rack middleware that provides authentication for rack applications")
+ (home-page "http://github.com/hassox/warden")
+ (license license:expat)))
+
+(define-public ruby-warden-oauth2
+ (package
+ (name "ruby-warden-oauth2")
+ (version "0.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "warden-oauth2" version))
+ (sha256
+ (base32
+ "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-warden" ,ruby-warden)))
+ (synopsis "OAuth 2.0 strategies for Warden")
+ (description "OAuth 2.0 strategies for Warden")
+ (home-page
+ "https://github.com/opperator/warden-oauth2")
+ (license #f)))
+
+(define-public ruby-rerun
+ (package
+ (name "ruby-rerun")
+ (version "0.13.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rerun" version))
+ (sha256
+ (base32
+ "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-listen" ,ruby-listen)))
+ (synopsis
+ "Restarts your app when a file changes. A no-frills, command-line alternative to Guard, Shotgun, Autotest, etc.")
+ (description
+ "Restarts your app when a file changes. A no-frills, command-line alternative to Guard, Shotgun, Autotest, etc.")
+ (home-page "http://github.com/alexch/rerun/")
+ (license license:expat)))
+
+(define-public ruby-kgio
+ (package
+ (name "ruby-kgio")
+ (version "2.11.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "kgio" version))
+ (sha256
+ (base32
+ "1528pyj1szzzp3pgj05fzjd36qjrxm9yj2x5radc9p1z7vl67y50"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (synopsis
+ "This is a legacy project, do not use it for new projects. Ruby
+2.3 and later should make this obsolete. kgio provides
+non-blocking I/O methods for Ruby without raising exceptions on
+EAGAIN and EINPROGRESS.")
+ (description
+ "This is a legacy project, do not use it for new projects. Ruby
+2.3 and later should make this obsolete. kgio provides
+non-blocking I/O methods for Ruby without raising exceptions on
+EAGAIN and EINPROGRESS.")
+ (home-page "https://bogomips.org/kgio/")
+ (license #f)))
+
+(define-public ruby-raindrops
+ (package
+ (name "ruby-raindrops")
+ (version "0.19.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "raindrops" version))
+ (sha256
+ (base32
+ "1qpbd9jif40c53fz2r0l8khfl016y8s8bkx37ibcaafclbl3xygp"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f))
+ (synopsis
+ "raindrops is a real-time stats toolkit to show statistics for Rack HTTP
+servers. It is designed for preforking servers such as unicorn, but
+should support any Rack HTTP server on platforms supporting POSIX shared
+memory. It may also be used as a generic scoreboard for sharing atomic
+counters across multiple processes.")
+ (description
+ "raindrops is a real-time stats toolkit to show statistics for Rack HTTP
+servers. It is designed for preforking servers such as unicorn, but
+should support any Rack HTTP server on platforms supporting POSIX shared
+memory. It may also be used as a generic scoreboard for sharing atomic
+counters across multiple processes.")
+ (home-page "https://bogomips.org/raindrops/")
+ (license #f)))
+
+(define-public ruby-quantile
+ (package
+ (name "ruby-quantile")
+ (version "0.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "quantile" version))
+ (sha256
+ (base32
+ "1jlddrmmvx9qkh29a1narz81fi41qdrbiif9fd8bl6pxxa9awbi3"))))
+ (build-system ruby-build-system)
+ (synopsis
+ "Graham Cormode and S. Muthukrishnan's Effective Computation of Biased Quantiles over Data Streams in ICDEĆ¢\x80\x9905")
+ (description
+ "Graham Cormode and S. Muthukrishnan's Effective Computation of Biased Quantiles over Data Streams in ICDEĆ¢\x80\x9905")
+ (home-page
+ "http://github.com/matttproud/ruby_quantile_estimation")
+ (license license:asl2.0)))
+
+(define-public ruby-prometheus-client
+ (package
+ (name "ruby-prometheus-client")
+ (version "0.8.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "prometheus-client" version))
+ (sha256
+ (base32
+ "0ihbmnll7qkkhy5isd7vl3wrznyxm1havhzxhl8729im5qi6si51"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-quantile" ,ruby-quantile)))
+ (synopsis
+ "A suite of instrumentation metric primitivesthat can be exposed through a web services interface.")
+ (description
+ "This package provides a suite of instrumentation metric primitivesthat can be exposed through a web services interface.")
+ (home-page
+ "https://github.com/prometheus/client_ruby")
+ (license license:asl2.0)))
+
+(define-public ruby-prometheus-exporter
+ (package
+ (name "ruby-prometheus-exporter")
+ (version "0.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "prometheus_exporter" version))
+ (sha256
+ (base32
+ "0v8d7km30y0rqspzkmiqajglqyp2hcd3arg94pf7lay382l695s0"))))
+ (build-system ruby-build-system)
+ (synopsis
+ "Prometheus metric collector and exporter for Ruby")
+ (description
+ "Prometheus metric collector and exporter for Ruby")
+ (home-page
+ "https://github.com/discourse/prometheus_exporter")
+ (license license:expat)))