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.scm732
1 files changed, 730 insertions, 2 deletions
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 701b7ee6ef..c51a5f08e2 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
-;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
@@ -30,7 +30,6 @@
#:use-module (gnu packages autotools)
#:use-module (gnu packages java)
#:use-module (gnu packages libffi)
- #:use-module (gnu packages gdbm)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
#:use-module (guix packages)
@@ -519,6 +518,59 @@ script.")
(home-page "http://rubyforge.org/projects/antwrap/")
(license license:expat)))
+(define-public ruby-atoulme-saikuro
+ (package
+ (name "ruby-atoulme-saikuro")
+ (version "1.2.1")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "atoulme-Saikuro" version))
+ (sha256
+ (base32
+ "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
+ (build-system ruby-build-system)
+ ;; FIXME: There are no unit tests. The tests are demonstrations of the
+ ;; "saikuro" tool.
+ (arguments `(#:tests? #f))
+ (synopsis "Cyclomatic complexity analyzer")
+ (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
+given Ruby source code Saikuro will generate a report listing the cyclomatic
+complexity of each method found. In addition, Saikuro counts the number of
+lines per method and can generate a listing of the number of tokens on each
+line of code.")
+ (home-page "http://www.github.com/atoulme/Saikuro")
+ ;; File headers contain the BSD-3 license and the README.rdoc says that
+ ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
+ ;; of the Expat license.
+ (license license:bsd-3)))
+
+(define-public ruby-ci-reporter
+ (package
+ (name "ruby-ci-reporter")
+ (version "2.0.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "ci_reporter" version))
+ (sha256
+ (base32
+ "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:test-target "rspec"))
+ (propagated-inputs
+ `(("ruby-builder" ,ruby-builder)))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rspec" ,ruby-rspec)))
+ (synopsis "Generate XML reports of runs test")
+ (description
+ "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
+you to generate XML reports of your test runs. The resulting files can be
+read by a continuous integration system that understands Ant's JUnit report
+format.")
+ (home-page "https://github.com/nicksieger/ci_reporter")
+ (license license:expat)))
+
(define-public ruby-orderedhash
(package
(name "ruby-orderedhash")
@@ -650,6 +702,36 @@ and inspect the environment.")
(home-page "https://github.com/e2/nenv")
(license license:expat)))
+(define-public ruby-permutation
+ (package
+ (name "ruby-permutation")
+ (version "0.1.8")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "permutation" version))
+ (sha256
+ (base32
+ "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-rakefile
+ (lambda _
+ (substitute* "Rakefile"
+ (("require 'rake/gempackagetask'")
+ "require 'rubygems/package_task'")
+ (("include Config") ""))
+ #t))
+ (replace 'check
+ (lambda _
+ (zero? (system* "ruby" "-Ilib" "test/test.rb")))))))
+ (synopsis "Library to perform operations with sequence permutations")
+ (description "This package provides a Ruby library to perform different
+operations with permutations of sequences, such as strings and arrays.")
+ (home-page "http://flori.github.io/permutation")
+ (license license:gpl2))) ; GPL 2 only
+
(define-public ruby-shellany
(package
(name "ruby-shellany")
@@ -753,6 +835,103 @@ standard output stream.")
(home-page "https://github.com/geemus/shindo")
(license license:expat)))
+(define-public ruby-rubygems-tasks
+ (package
+ (name "ruby-rubygems-tasks")
+ (version "0.2.4")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rubygems-tasks" version))
+ (sha256
+ (base32
+ "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
+ (build-system ruby-build-system)
+ ;; Tests need Internet access.
+ (arguments `(#:tests? #f))
+ (native-inputs
+ `(("ruby-rspec" ,ruby-rspec)
+ ("ruby-yard" ,ruby-yard)))
+ (synopsis "Rake tasks for managing and releasing Ruby Gems")
+ (description "Rubygems-task provides Rake tasks for managing and releasing
+Ruby Gems.")
+ (home-page "https://github.com/postmodern/rubygems-tasks")
+ (license license:expat)))
+
+(define-public ruby-ffi
+ (package
+ (name "ruby-ffi")
+ (version "1.9.10")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "ffi" version))
+ (sha256
+ (base32
+ "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj"))))
+ (build-system ruby-build-system)
+ ;; FIXME: Before running tests the build system attempts to build libffi
+ ;; from sources.
+ (arguments `(#:tests? #f))
+ (native-inputs
+ `(("ruby-rake-compiler" ,ruby-rake-compiler)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
+ (inputs
+ `(("libffi" ,libffi)))
+ (synopsis "Ruby foreign function interface library")
+ (description "Ruby-FFI is a Ruby extension for programmatically loading
+dynamic libraries, binding functions within them, and calling those functions
+from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby
+and JRuby.")
+ (home-page "http://wiki.github.com/ffi/ffi")
+ (license license:bsd-3)))
+
+(define-public ruby-simplecov-html
+ (package
+ (name "ruby-simplecov-html")
+ (version "0.10.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "simplecov-html" version))
+ (sha256
+ (base32
+ "1qni8g0xxglkx25w54qcfbi4wjkpvmb28cb7rj5zk3iqynjcdrqf"))))
+ (build-system ruby-build-system)
+ (arguments `(#:tests? #f)) ; there are no tests
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (synopsis "Default HTML formatter for SimpleCov code coverage tool")
+ (description "This package provides the default HTML formatter for
+the SimpleCov code coverage tool for Ruby version 1.9 and above.")
+ (home-page "https://github.com/colszowka/simplecov-html")
+ (license license:expat)))
+
+(define-public ruby-simplecov
+ (package
+ (name "ruby-simplecov")
+ (version "0.10.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "simplecov" version))
+ (sha256
+ (base32
+ "1q2iq2vgrdvvla5y907gkmqx6ry2qvnvc7a90hlcbwgp1w0sv6z4"))))
+ (build-system ruby-build-system)
+ ;; Simplecov depends on rubocop for code style checking at build time.
+ ;; Rubocop needs simplecov at build time.
+ (arguments `(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-json" ,ruby-json)
+ ("ruby-docile" ,ruby-docile)
+ ("ruby-simplecov-html" ,ruby-simplecov-html)))
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (synopsis "Code coverage framework for Ruby")
+ (description "SimpleCov is a code coverage framework for Ruby with a
+powerful configuration library and automatic merging of coverage across test
+suites.")
+ (home-page "http://github.com/colszowka/simplecov")
+ (license license:expat)))
+
(define-public ruby-useragent
(package
(name "ruby-useragent")
@@ -848,6 +1027,392 @@ using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
(home-page "https://github.com/drbrain/net-http-persistent")
(license license:expat)))
+(define-public ruby-power-assert
+ (package
+ (name "ruby-power-assert")
+ (version "0.2.6")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "power_assert" version))
+ (sha256
+ (base32
+ "0gbj379jhnff8rbb6m3kzdm282szjz1a021xzxa38d1bnswj2jx3"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (synopsis "Assert library with descriptive assertion messages")
+ (description "Power-assert is an assertion library providing descriptive
+assertion messages for tests.")
+ (home-page "https://github.com/k-tsj/power_assert")
+ (license (list license:bsd-2 license:ruby))))
+
+(define-public ruby-locale
+ (package
+ (name "ruby-locale")
+ (version "2.1.2")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "locale" version))
+ (sha256
+ (base32
+ "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
+ (build-system ruby-build-system)
+ ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
+ ;; which needs ruby-gettext, which needs ruby-locale. To break the
+ ;; dependency cycle we disable tests.
+ (arguments `(#:tests? #f))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-yard" ,ruby-yard)))
+ (synopsis "Ruby library providing basic localization APIs")
+ (description
+ "Ruby-Locale is the pure ruby library which provides basic APIs for
+localization.")
+ (home-page "https://github.com/ruby-gettext/locale")
+ (license (list license:lgpl3+ license:ruby))))
+
+(define-public ruby-text
+ (package
+ (name "ruby-text")
+ (version "1.3.1")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "text" version))
+ (sha256
+ (base32
+ "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
+ (build-system ruby-build-system)
+ (synopsis "Collection of text algorithms for Ruby")
+ (description
+ "This package provides a collection of text algorithms: Levenshtein,
+Soundex, Metaphone, Double Metaphone, Porter Stemming.")
+ (home-page "http://github.com/threedaymonk/text")
+ (license license:expat)))
+
+(define-public ruby-gettext
+ (package
+ (name "ruby-gettext")
+ (version "3.1.7")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "gettext" version))
+ (sha256
+ (base32
+ "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
+ (build-system ruby-build-system)
+ ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
+ ;; which needs ruby-gettext. To break the dependency cycle we disable
+ ;; tests.
+ (arguments `(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-locale" ,ruby-locale)
+ ("ruby-text" ,ruby-text)))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-yard" ,ruby-yard)))
+ (synopsis "GNU gettext-like program for Ruby")
+ (description
+ "Gettext is a GNU gettext-like program for Ruby. The catalog
+file (po-file) used is the same as that used by GNU gettext, allowing you to
+use GNU gettext tools for maintenance.")
+ (home-page "http://ruby-gettext.github.com/")
+ (license (list license:lgpl3+ license:ruby))))
+
+(define-public ruby-packnga
+ (package
+ (name "ruby-packnga")
+ (version "1.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "packnga" version))
+ (sha256
+ (base32
+ "1i71yhvlkvi5fp3m8jl9317cnddkbnrcy0syrmiw4y1lrq0cbncj"))))
+ (build-system ruby-build-system)
+ ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
+ ;; To break the dependency cycle we disable tests.
+ (arguments `(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-gettext" ,ruby-gettext)
+ ("ruby-yard" ,ruby-yard)))
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (synopsis "Utility library to package internationalized libraries")
+ (description
+ "Packnga is a library to translate to many languages using YARD.")
+ (home-page "http://ranguba.org/packnga/")
+ (license license:lgpl2.0+)))
+
+(define-public ruby-test-unit
+ (package
+ (name "ruby-test-unit")
+ (version "3.1.5")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "test-unit" version))
+ (sha256
+ (base32
+ "0jxznjzwmrlp8wqjxsd06qbiddffn68pdhz6nrqpjbiln1z3af4w"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-power-assert" ,ruby-power-assert)))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-packnga" ,ruby-packnga)
+ ("ruby-yard" ,ruby-yard)))
+ (synopsis "Unit testing framework for Ruby")
+ (description "@code{Test::Unit} is unit testing framework for Ruby, based
+on xUnit principles. These were originally designed by Kent Beck, creator of
+extreme programming software development methodology, for Smalltalk's SUnit.
+It allows writing tests, checking results and automated testing in Ruby.")
+ (home-page "http://test-unit.github.io/")
+ (license (list license:psfl license:ruby))))
+
+(define-public ruby-metaclass
+ (package
+ (name "ruby-metaclass")
+ (version "0.0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "metaclass" version))
+ (sha256
+ (base32
+ "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'add-test-unit-to-search-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "Rakefile"
+ (("t\\.libs << \"test\"" line)
+ (string-append line "; t.libs << \""
+ (assoc-ref inputs "ruby-test-unit")
+ "/lib/ruby/gems/2.2.0/gems/test-unit-"
+ ,(package-version ruby-test-unit)
+ "/lib\"")))
+ #t)))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-test-unit" ,ruby-test-unit)))
+ (synopsis "Ruby library adding metaclass method to all objects")
+ (description
+ "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
+objects.")
+ (home-page "http://github.com/floehopper/metaclass")
+ (license license:expat)))
+
+(define-public ruby-blankslate
+ (package
+ (name "ruby-blankslate")
+ (version "3.1.3")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "blankslate" version))
+ (sha256
+ (base32
+ "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (zero? (system* "rspec" "spec/")))))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rspec" ,ruby-rspec)))
+ (synopsis "Abstract base class with no predefined methods")
+ (description
+ "BlankSlate provides an abstract base class with no predefined
+methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
+as a base class when writing classes that depend upon
+@code{method_missing} (e.g. dynamic proxies).")
+ (home-page "http://github.com/masover/blankslate")
+ (license license:expat)))
+
+(define-public ruby-instantiator
+ (package
+ (name "ruby-instantiator")
+ (version "0.0.6")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "instantiator" version))
+ (sha256
+ (base32
+ "0mfmqhg9xrv9i8i1kmphf15ywddhivyh2z3ccl0xjw8qy54zr21i"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'add-test-unit-to-search-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "Rakefile"
+ (("t\\.libs << \"test\"" line)
+ (string-append line "; t.libs << \""
+ (assoc-ref inputs "ruby-test-unit")
+ "/lib/ruby/gems/2.2.0/gems/test-unit-"
+ ,(package-version ruby-test-unit)
+ "/lib\"")))
+ #t)))))
+ (propagated-inputs
+ `(("ruby-blankslate" ,ruby-blankslate)))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-test-unit" ,ruby-test-unit)))
+ (synopsis "Instantiate an arbitrary Ruby class")
+ (description
+ "Instantiator lets you instantiate an arbitrary Ruby class without
+knowing anything about the constructor.")
+ (home-page "https://github.com/floehopper/instantiator")
+ (license license:expat)))
+
+(define-public ruby-introspection
+ (package
+ (name "ruby-introspection")
+ (version "0.0.3")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "introspection" version))
+ (sha256
+ (base32
+ "0g1j71sqfxbqk32wj7d0bkd3dlayfqzprfq3dbr0rq107xbxjcrr"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'add-test-unit-to-search-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "Rakefile"
+ (("t\\.libs << \"test\"" line)
+ (string-append line "; t.libs << \""
+ (assoc-ref inputs "ruby-test-unit")
+ "/lib/ruby/gems/2.2.0/gems/test-unit-"
+ ,(package-version ruby-test-unit)
+ "/lib\"")))
+ #t)))))
+ (propagated-inputs
+ `(("ruby-instantiator" ,ruby-instantiator)
+ ("ruby-metaclass" ,ruby-metaclass)))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-blankslate" ,ruby-blankslate)
+ ("ruby-test-unit" ,ruby-test-unit)))
+ (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
+ (description
+ "Introspection provides tools to inspect the hierarchy of method
+definitions on a Ruby object.")
+ (home-page "https://github.com/floehopper/introspection")
+ (license license:expat)))
+
+(define-public ruby-redcarpet
+ (package
+ (name "ruby-redcarpet")
+ (version "3.3.3")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "redcarpet" version))
+ (sha256
+ (base32
+ "14i3wypp97bpk20679d1csy88q4hsgfqbnqw6mryl77m2g0d09pk"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; The gem archive does not include the conformance tests.
+ (add-after 'unpack 'disable-conformance-tests
+ (lambda _
+ (substitute* "Rakefile"
+ (("task :test => %w\\[test:unit test:conformance\\]")
+ "task :test => %w[test:unit]"))
+ #t)))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-test-unit" ,ruby-test-unit)
+ ("ruby-rake-compiler" ,ruby-rake-compiler)))
+ (synopsis "Extensible Markdown to (X)HTML converter")
+ (description
+ "Redcarpet is an extensible Ruby library for Markdown processing and
+conversion to (X)HTML.")
+ (home-page "http://github.com/vmg/redcarpet")
+ (license license:expat)))
+
+(define-public ruby-mocha
+ (package
+ (name "ruby-mocha")
+ (version "1.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "mocha" version))
+ (sha256
+ (base32
+ "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'add-test-unit-to-search-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "Rakefile"
+ (("t\\.libs << 'test'" line)
+ (string-append line "; t.libs << \""
+ (assoc-ref inputs "ruby-test-unit")
+ "/lib/ruby/gems/2.2.0/gems/test-unit-"
+ ,(package-version ruby-test-unit)
+ "/lib\"")))
+ #t))
+ (add-before 'check 'use-latest-redcarpet
+ (lambda _
+ (substitute* "mocha.gemspec"
+ (("<redcarpet>, \\[\"~> 1\"\\]")
+ "<redcarpet>, [\">= 3\"]"))
+ #t))
+ (add-before 'check 'hardcode-version
+ (lambda _
+ ;; Mocha is undefined at build time
+ (substitute* "Rakefile"
+ (("#\\{Mocha::VERSION\\}") ,version))
+ #t))
+ (add-before 'check 'remove-failing-test
+ ;; FIXME: This test fails for reasons unrelated to Guix packaging.
+ (lambda _
+ (delete-file "test/acceptance/stubbing_nil_test.rb")
+ #t)))))
+ (propagated-inputs
+ `(("ruby-metaclass" ,ruby-metaclass)))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-yard" ,ruby-yard)
+ ("ruby-introspection" ,ruby-introspection)
+ ("ruby-test-unit" ,ruby-test-unit)
+ ("ruby-redcarpet" ,ruby-redcarpet)))
+ (synopsis "Mocking and stubbing library for Ruby")
+ (description
+ "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
+allows mocking and stubbing of methods on real (non-mock) classes.")
+ (home-page "http://gofreerange.com/mocha/docs")
+ (license license:expat)))
+
+(define-public ruby-net-ssh
+ (package
+ (name "ruby-net-ssh")
+ (version "3.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "net-ssh" version))
+ (sha256
+ (base32
+ "1dzqkgwi9xm6mbfk1rkk17rzmz8m5xakqi21w1b97ybng6kkw0hf"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("ruby-mocha" ,ruby-mocha)
+ ("ruby-test-unit" ,ruby-test-unit)))
+ (synopsis "Ruby implementation of the SSH2 client protocol")
+ (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
+client protocol. It allows you to write programs that invoke and interact
+with processes on remote servers, via SSH2.")
+ (home-page "https://github.com/net-ssh/net-ssh")
+ (license license:expat)))
+
(define-public ruby-minitest
(package
(name "ruby-minitest")
@@ -1211,6 +1776,122 @@ aware transformations between times in different time zones.")
(home-page "http://tzinfo.github.io")
(license license:expat)))
+(define-public ruby-rb-inotify
+ (package
+ (name "ruby-rb-inotify")
+ (version "0.9.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rb-inotify" version))
+ (sha256
+ (base32
+ "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f ; there are no tests
+ #:phases
+ (modify-phases %standard-phases
+ ;; Building the gemspec with rake is not working here since it is
+ ;; generated with Jeweler. It is also unnecessary because the
+ ;; existing gemspec does not use any development tools to generate a
+ ;; list of files.
+ (replace 'build
+ (lambda _
+ (zero? (system* "gem" "build" "rb-inotify.gemspec")))))))
+ (propagated-inputs
+ `(("ruby-ffi" ,ruby-ffi)))
+ (native-inputs
+ `(("ruby-yard" ,ruby-yard)))
+ (synopsis "Ruby wrapper for Linux's inotify")
+ (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
+kernel subsystem for monitoring changes to files and directories.")
+ (home-page "https://github.com/nex3/rb-inotify")
+ (license license:expat)))
+
+(define-public ruby-pry-editline
+ (package
+ (name "ruby-pry-editline")
+ (version "1.1.2")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "pry-editline" version))
+ (sha256
+ (base32
+ "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
+ (build-system ruby-build-system)
+ (arguments `(#:tests? #f)) ; no tests included
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (synopsis "Open the current REPL line in an editor")
+ (description
+ "This gem provides a plugin for the Ruby REPL to enable opening the
+current line in an external editor.")
+ (home-page "https://github.com/tpope/pry-editline")
+ (license license:expat)))
+
+(define-public ruby-sdoc
+ (package
+ (name "ruby-sdoc")
+ (version "0.4.1")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "sdoc" version))
+ (sha256
+ (base32
+ "16xyfair1j4irfkd6sxvmdcak957z71lwkvhglrznfpkalfnqyqp"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'build 'relax-minitest-requirement
+ (lambda _
+ (substitute* "sdoc.gemspec"
+ (("<minitest>, \\[\"~> 4\\.0\"\\]")
+ "<minitest>, [\">= 4.0\"]"))
+ #t)))))
+ (propagated-inputs
+ `(("ruby-json" ,ruby-json)))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-minitest" ,ruby-minitest)))
+ (synopsis "Generate searchable RDoc documentation")
+ (description
+ "SDoc is an RDoc documentation generator to build searchable HTML
+documentation for Ruby code.")
+ (home-page "http://github.com/voloko/sdoc")
+ (license license:expat)))
+
+(define-public ruby-tins
+ (package
+ (name "ruby-tins")
+ (version "1.7.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "tins" version))
+ (sha256
+ (base32
+ "1060h8dgnjl9az0sv1b74yrni8d4mh3x858wq6yfbfdf5dxrfl0a"))))
+ (build-system ruby-build-system)
+ ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
+ ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
+ ;; the gemspec.
+ (arguments
+ `(#:tests? #f ; there are no tests
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'build
+ (lambda _
+ ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
+ ;; causes an error.
+ (substitute* "tins.gemspec"
+ (("\"lib/spruz\", ") ""))
+ (zero? (system* "gem" "build" "tins.gemspec")))))))
+ (synopsis "Assorted tools for Ruby")
+ (description "Tins is a Ruby library providing assorted tools.")
+ (home-page "https://github.com/flori/tins")
+ (license license:expat)))
+
(define-public ruby-json
(package
(name "ruby-json")
@@ -1230,6 +1911,28 @@ a native C extension.")
(home-page "http://json-jruby.rubyforge.org/")
(license (list license:ruby license:gpl2)))) ; GPL2 only
+(define-public ruby-listen
+ (package
+ (name "ruby-listen")
+ (version "3.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "listen" version))
+ (sha256
+ (base32
+ "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b"))))
+ (build-system ruby-build-system)
+ (arguments '(#:tests? #f)) ; no tests
+ (propagated-inputs
+ ;; FIXME: omitting "ruby-rb-fsevent" which is only for MacOS.
+ `(("ruby-rb-inotify" ,ruby-rb-inotify)))
+ (synopsis "Listen to file modifications")
+ (description "The Listen gem listens to file modifications and notifies
+you about the changes.")
+ (home-page "https://github.com/guard/listen")
+ (license license:expat)))
+
(define-public ruby-activesupport
(package
(name "ruby-activesupport")
@@ -1496,3 +2199,28 @@ that can be exported to a number of formats very easily, and also supports
extending for custom Ruby constructs such as custom class level definitions.")
(home-page "http://yardoc.org")
(license license:expat)))
+
+(define-public ruby-eventmachine
+ (package
+ (name "ruby-eventmachine")
+ (version "1.0.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "eventmachine" version))
+ (sha256
+ (base32
+ "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f)) ; test suite tries to connect to google.com
+ (native-inputs
+ `(("ruby-rake-compiler" ,ruby-rake-compiler)))
+ (synopsis "Single-threaded network event framework for Ruby")
+ (description
+ "EventMachine implements a single-threaded engine for arbitrary network
+communications. EventMachine wraps all interactions with sockets, allowing
+programs to concentrate on the implementation of network protocols. It can be
+used to create both network servers and clients.")
+ (home-page "http://rubyeventmachine.com")
+ (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT