summary refs log tree commit diff
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.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)))