aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/ruby.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-09-13 21:28:01 +0200
committerLudovic Courtès <ludo@gnu.org>2015-09-13 21:28:01 +0200
commit75710da66710cef1d32053cd8f350d13057d02a7 (patch)
treeabef6a326c741b1eb18db866b2f2bacee3e5fc51 /gnu/packages/ruby.scm
parentab20c2cc33063ce783515d8ae7899ec7e2ca6f96 (diff)
parent610075f7c94c80b8321887b7ccf8bb1a7edd2b8e (diff)
downloadguix-75710da66710cef1d32053cd8f350d13057d02a7.tar
guix-75710da66710cef1d32053cd8f350d13057d02a7.tar.gz
Merge branch 'master' into core-updates
Diffstat (limited to 'gnu/packages/ruby.scm')
-rw-r--r--gnu/packages/ruby.scm516
1 files changed, 506 insertions, 10 deletions
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 9a702dd454..ee0acc8639 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -1,8 +1,9 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Pjotr Prins <pjotr.guix@thebird.nl>
+;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2014 David Thompson <davet@gnu.org>
+;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
+;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -23,8 +24,10 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages databases)
#:use-module (gnu packages readline)
#: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)
@@ -34,6 +37,7 @@
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
+ #:use-module (gnu packages xml)
#:use-module (guix build-system ruby))
(define-public ruby
@@ -192,16 +196,16 @@ packaging native C and Java extensions in Ruby.")
(define-public ruby-i18n
(package
(name "ruby-i18n")
- (version "0.6.11")
+ (version "0.7.0")
(source (origin
(method url-fetch)
(uri (rubygems-uri "i18n" version))
(sha256
(base32
- "0fwjlgmgry2blf8zlxn9c555cf4a16p287l599kz5104ncjxlzdk"))))
+ "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758"))))
(build-system ruby-build-system)
(arguments
- '(#:tests? #f)) ; requires bundler
+ '(#:tests? #f)) ; no tests
(synopsis "Internationalization library for Ruby")
(description "Ruby i18n is an internationalization and localization
solution for Ruby programs. It features translation and localization,
@@ -254,7 +258,7 @@ groups.")
(home-page "https://github.com/rspec/rspec-core")
(license license:expat)))
-(define ruby-diff-lcs-for-rspec
+(define-public ruby-diff-lcs
(package
(name "ruby-diff-lcs")
(version "1.2.5")
@@ -290,7 +294,7 @@ standard diff-like tool.")
'(#:tests? #f)) ; avoid dependency cycles
(propagated-inputs
`(("ruby-rspec-support" ,ruby-rspec-support)
- ("ruby-diff-lcs" ,ruby-diff-lcs-for-rspec)))
+ ("ruby-diff-lcs" ,ruby-diff-lcs)))
(synopsis "RSpec expectations library")
(description "Rspec-expectations provides a simple API to express expected
outcomes of a code example.")
@@ -312,7 +316,7 @@ outcomes of a code example.")
'(#:tests? #f)) ; avoid dependency cycles
(propagated-inputs
`(("ruby-rspec-support" ,ruby-rspec-support)
- ("ruby-diff-lcs" ,ruby-diff-lcs-for-rspec)))
+ ("ruby-diff-lcs" ,ruby-diff-lcs)))
(synopsis "RSpec stubbing and mocking library")
(description "Rspec-mocks provides RSpec's \"test double\" framework, with
support for stubbing and mocking.")
@@ -348,13 +352,13 @@ expectations and mocks frameworks.")
(define-public bundler
(package
(name "bundler")
- (version "1.9.9")
+ (version "1.10.6")
(source (origin
(method url-fetch)
(uri (rubygems-uri "bundler" version))
(sha256
(base32
- "12qk1569pswa9mmid6lsqy2napn9fmkbmv0k7xkl52nyfh8rsy4d"))))
+ "1vlzfq0bkkj4jyq6av0y55mh5nj5n0f3mfbmmifwgkh44g8k6agv"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; avoid dependency cycles
@@ -364,6 +368,143 @@ specified in a \"Gemfile\", as well as their dependencies.")
(home-page "http://bundler.io/")
(license license:expat)))
+(define-public ruby-builder
+ (package
+ (name "ruby-builder")
+ (version "3.2.2")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "builder" version))
+ (sha256
+ (base32
+ "14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'do-not-use-rvm
+ (lambda _
+ (substitute* "rakelib/tags.rake"
+ (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
+ #t)))))
+ (synopsis "Ruby library to create structured data")
+ (description "Builder provides a number of builder objects that make it
+easy to create structured data. Currently the following builder objects are
+supported: XML Markup and XML Events.")
+ (home-page "https://github.com/jimweirich/builder")
+ (license license:expat)))
+
+(define-public ruby-rjb
+ (package
+ (name "ruby-rjb")
+ (version "1.5.3")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rjb" version))
+ (sha256
+ (base32
+ "0gzs92dagk981s4vrymnqg0vll783b9k564j0cdgp167nc5a2zg4"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f ; no rakefile
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'set-java-home
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
+ #t)))))
+ (native-inputs
+ `(("jdk" ,icedtea7 "jdk")))
+ (synopsis "Ruby-to-Java bridge using the Java Native Interface")
+ (description "RJB is a bridge program that connects Ruby and Java via the
+Java Native Interface.")
+ (home-page "http://www.artonx.org/collabo/backyard/?RubyJavaBridge")
+ (license license:lgpl2.1+)))
+
+(define-public ruby-atoulme-antwrap
+ (package
+ (name "ruby-atoulme-antwrap")
+ (version "0.7.5")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "atoulme-Antwrap" version))
+ (sha256
+ (base32
+ "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
+ (build-system ruby-build-system)
+ ;; Test data required for most of the tests are not included.
+ (arguments `(#:tests? #f))
+ (native-inputs
+ `(("ruby-hoe" ,ruby-hoe)))
+ (inputs
+ `(("ruby-rjb" ,ruby-rjb)))
+ (synopsis "Ruby wrapper for the Ant build tool")
+ (description "Antwrap is a Ruby module that wraps the Apache Ant build
+tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
+script.")
+ (home-page "http://rubyforge.org/projects/antwrap/")
+ (license license:expat)))
+
+(define-public ruby-orderedhash
+ (package
+ (name "ruby-orderedhash")
+ (version "0.0.6")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "orderedhash" version))
+ (sha256
+ (base32
+ "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f)) ; no test suite
+ (synopsis "Ruby library providing an order-preserving hash")
+ (description "Orderedhash is a Ruby library providing a hash
+implementation that preserves the order of items and features some array-like
+extensions.")
+ (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
+ (license license:public-domain)))
+
+(define-public ruby-xml-simple
+ (package
+ (name "ruby-xml-simple")
+ (version "1.1.5")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "xml-simple" version))
+ (sha256
+ (base32
+ "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f)) ; no test suite
+ (synopsis "Simple Ruby library for XML processing")
+ (description "This library provides a simple API for XML processing in
+Ruby.")
+ (home-page "https://github.com/maik/xml-simple")
+ (license license:ruby)))
+
+(define-public ruby-thor
+ (package
+ (name "ruby-thor")
+ (version "0.19.1")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "thor" version))
+ (sha256
+ (base32
+ "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f)) ; no test suite
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (synopsis "Ruby toolkit for building command-line interfaces")
+ (description "Thor is a toolkit for building powerful command-line
+interfaces.")
+ (home-page "http://whatisthor.com/")
+ (license license:expat)))
+
(define-public ruby-useragent
(package
(name "ruby-useragent")
@@ -592,6 +733,16 @@ options and parsing command line flags.")
(home-page "https://github.com/leejarvis/slop")
(license license:expat)))
+(define-public ruby-slop-3
+ (package (inherit ruby-slop)
+ (version "3.6.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "slop" version))
+ (sha256
+ (base32
+ "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
+
(define-public ruby-multipart-post
(package
(name "ruby-multipart-post")
@@ -628,3 +779,348 @@ net/http library.")
(description "Arel is a SQL AST manager for Ruby. It simplifies the
generation of complex SQL queries and is compatible with various RDBMSes.")
(license license:expat)))
+
+(define-public ruby-minitar
+ (package
+ (name "ruby-minitar")
+ (version "0.5.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "minitar" version))
+ (sha256
+ (base32
+ "1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f)) ; missing a gemspec
+ (synopsis "Ruby library and utility for handling tar archives")
+ (description
+ "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
+that provides the ability to deal with POSIX tar archive files.")
+ (home-page "http://www.github.com/atoulme/minitar")
+ (license (list license:gpl2+ license:ruby))))
+
+(define-public ruby-mini-portile
+ (package
+ (name "ruby-mini-portile")
+ (version "0.6.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "mini_portile" version))
+ (sha256
+ (base32
+ "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f)) ; tests require network access
+ (synopsis "Ports system for Ruby developers")
+ (description "Mini-portile is a port/recipe system for Ruby developers.
+It provides a standard way to compile against specific versions of libraries
+to reproduce user environments.")
+ (home-page "http://github.com/flavorjones/mini_portile")
+ (license license:expat)))
+
+(define-public ruby-nokogiri
+ (package
+ (name "ruby-nokogiri")
+ (version "1.6.6.2")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "nokogiri" version))
+ (sha256
+ (base32
+ "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30"))))
+ (build-system ruby-build-system)
+ (arguments
+ ;; Tests fail because Nokogiri can only test with an installed extension,
+ ;; and also because many test framework dependencies are missing.
+ '(#:tests? #f
+ #:gem-flags (list "--" "--use-system-libraries"
+ (string-append "--with-xml2-include="
+ (assoc-ref %build-inputs "libxml2")
+ "/include/libxml2" ))))
+ (native-inputs
+ `(("ruby-hoe" ,ruby-hoe)
+ ("ruby-rake-compiler", ruby-rake-compiler)))
+ (inputs
+ `(("zlib" ,zlib)
+ ("libxml2" ,libxml2)
+ ("libxslt" ,libxslt)))
+ (propagated-inputs
+ `(("ruby-mini-portile" ,ruby-mini-portile)))
+ (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
+ (description "Nokogiri (鋸) parses and searches XML/HTML, and features
+both CSS3 selector and XPath 1.0 support.")
+ (home-page "http://www.nokogiri.org/")
+ (license license:expat)))
+
+(define-public ruby-method-source
+ (package
+ (name "ruby-method-source")
+ (version "0.8.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "method_source" version))
+ (sha256
+ (base32
+ "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("ruby-bacon" ,ruby-bacon)
+ ("git" ,git)))
+ (synopsis "Retrieve the source code for Ruby methods")
+ (description "Method_source retrieves the source code for Ruby methods.
+Additionally, it can extract source code from Proc and Lambda objects or just
+extract comments.")
+ (home-page "https://github.com/banister/method_source")
+ (license license:expat)))
+
+(define-public ruby-coderay
+ (package
+ (name "ruby-coderay")
+ (version "1.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "coderay" version))
+ (sha256
+ (base32
+ "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f)) ; missing test files
+ (synopsis "Ruby syntax highlighting library")
+ (description "Coderay is a Ruby library that provides syntax highlighting
+for select languages.")
+ (home-page "http://coderay.rubychan.de")
+ (license license:expat)))
+
+(define-public ruby-pry
+ (package
+ (name "ruby-pry")
+ (version "0.10.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "pry" version))
+ (sha256
+ (base32
+ "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f)) ; no tests
+ (propagated-inputs
+ `(("ruby-coderay" ,ruby-coderay)
+ ("ruby-method-source" ,ruby-method-source)
+ ("ruby-slop" ,ruby-slop-3)))
+ (synopsis "Ruby REPL")
+ (description "Pry is an IRB alternative and runtime developer console for
+Ruby. It features syntax highlighting, a plugin architecture, runtime
+invocation, and source and documentation browsing.")
+ (home-page "http://pryrepl.org")
+ (license license:expat)))
+
+(define-public ruby-thread-safe
+ (package
+ (name "ruby-thread-safe")
+ (version "0.3.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "thread_safe" version))
+ (sha256
+ (base32
+ "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f)) ; needs simplecov, among others
+ (synopsis "Thread-safe utilities for Ruby")
+ (description "The thread_safe library provides thread-safe collections and
+utilities for Ruby.")
+ (home-page "https://github.com/ruby-concurrency/thread_safe")
+ (license license:asl2.0)))
+
+(define-public ruby-tzinfo
+ (package
+ (name "ruby-tzinfo")
+ (version "1.2.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "tzinfo" version))
+ (sha256
+ (base32
+ "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-thread-safe" ,ruby-thread-safe)))
+ (synopsis "Time zone library for Ruby")
+ (description "TZInfo is a Ruby library that provides daylight savings
+aware transformations between times in different time zones.")
+ (home-page "http://tzinfo.github.io")
+ (license license:expat)))
+
+(define-public ruby-json
+ (package
+ (name "ruby-json")
+ (version "1.8.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "json" version))
+ (sha256
+ (base32
+ "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
+ (build-system ruby-build-system)
+ (arguments '(#:tests? #f)) ; dependency cycle with sdoc
+ (synopsis "JSON library for Ruby")
+ (description "This Ruby library provides a JSON implementation written as
+a native C extension.")
+ (home-page "http://json-jruby.rubyforge.org/")
+ (license (list license:ruby license:gpl2)))) ; GPL2 only
+
+(define-public ruby-activesupport
+ (package
+ (name "ruby-activesupport")
+ (version "4.2.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "activesupport" version))
+ (sha256
+ (base32
+ "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f)) ; no tests
+ (propagated-inputs
+ `(("ruby-i18n" ,ruby-i18n)
+ ("ruby-json" ,ruby-json)
+ ("ruby-minitest" ,ruby-minitest)
+ ("ruby-thread-safe" ,ruby-thread-safe)
+ ("ruby-tzinfo" ,ruby-tzinfo)))
+ (synopsis "Ruby on Rails utility library")
+ (description "ActiveSupport is a toolkit of support libraries and Ruby
+core extensions extracted from the Rails framework. It includes support for
+multibyte strings, internationalization, time zones, and testing.")
+ (home-page "http://www.rubyonrails.org")
+ (license license:expat)))
+
+(define-public ruby-ox
+ (package
+ (name "ruby-ox")
+ (version "2.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "ox" version))
+ (sha256
+ (base32
+ "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f)) ; no tests
+ (synopsis "Optimized XML library for Ruby")
+ (description
+ "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
+written as a native C extension. It was designed to be an alternative to
+Nokogiri and other Ruby XML parsers for generic XML parsing and as an
+alternative to Marshal for Object serialization. ")
+ (home-page "http://www.ohler.com/ox")
+ (license license:expat)))
+
+(define-public ruby-pg
+ (package
+ (name "ruby-pg")
+ (version "0.18.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "pg" version))
+ (sha256
+ (base32
+ "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:test-target "spec"))
+ (native-inputs
+ `(("ruby-rake-compiler" ,ruby-rake-compiler)
+ ("ruby-hoe" ,ruby-hoe)
+ ("ruby-rspec" ,ruby-rspec)))
+ (inputs
+ `(("postgresql" ,postgresql)))
+ (synopsis "Ruby interface to PostgreSQL")
+ (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
+with PostgreSQL 8.4 and later.")
+ (home-page "https://bitbucket.org/ged/ruby-pg")
+ (license license:ruby)))
+
+(define-public ruby-byebug
+ (package
+ (name "ruby-byebug")
+ (version "6.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "byebug" version))
+ (sha256
+ (base32
+ "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f)) ; no tests
+ (synopsis "Debugger for Ruby 2")
+ (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
+TracePoint C API for execution control and the Debug Inspector C API for call
+stack navigation. The core component provides support that front-ends can
+build on. It provides breakpoint handling and bindings for stack frames among
+other things and it comes with a command line interface.")
+ (home-page "http://github.com/deivid-rodriguez/byebug")
+ (license license:bsd-2)))
+
+(define-public ruby-rack
+ (package
+ (name "ruby-rack")
+ (version "1.6.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rack" version))
+ (sha256
+ (base32
+ "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'fix-tests
+ (lambda _
+ ;; A few of the tests use the length of a file on disk for
+ ;; Content-Length and Content-Range headers. However, this file
+ ;; has a shebang in it which an earlier phase patches, growing
+ ;; the file size from 193 to 239 bytes when the store prefix is
+ ;; "/gnu/store".
+ (let ((size-diff (- (string-length (which "ruby"))
+ (string-length "/usr/bin/env ruby"))))
+ (substitute* '("test/spec_file.rb")
+ (("193")
+ (number->string (+ 193 size-diff)))
+ (("bytes(.)22-33" all delimiter)
+ (string-append "bytes"
+ delimiter
+ (number->string (+ 22 size-diff))
+ "-"
+ (number->string (+ 33 size-diff))))))
+ #t)))))
+ (native-inputs
+ `(("ruby-bacon" ,ruby-bacon)))
+ (synopsis "Unified web application interface for Ruby")
+ (description "Rack provides a minimal, modular and adaptable interface for
+developing web applications in Ruby. By wrapping HTTP requests and responses,
+it unifies the API for web servers, web frameworks, and software in between
+into a single method call.")
+ (home-page "http://rack.github.io/")
+ (license license:expat)))