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.scm634
1 files changed, 507 insertions, 127 deletions
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index ede5516088..ea17c91457 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -7,7 +7,7 @@
;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2017 Nikita <nikita@n0.is>
;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2017, 2018, 2019 Christopher Baines <mail@cbaines.net>
@@ -21,11 +21,12 @@
;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de>
;;; Copyright © 2019 Brett Gilio <brettg@posteo.de>
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020 Holgr Peters <holger.peters@posteo.de>
;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2021 EuAndreh <eu@euandre.org>
+;;; Copyright © 2020 Tomás Ortín Fernández <tomasortin@mailbox.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -45,7 +46,6 @@
(define-module (gnu packages ruby)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
- #:use-module (gnu packages base)
#:use-module (gnu packages bison)
#:use-module (gnu packages c)
#:use-module (gnu packages check)
@@ -78,6 +78,7 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
+ #:use-module (guix gexp)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (gnu packages xml)
@@ -959,13 +960,13 @@ specified in a \"Gemfile\", as well as their dependencies.")
(define-public ruby-builder
(package
(name "ruby-builder")
- (version "3.2.3")
+ (version "3.2.4")
(source (origin
(method url-fetch)
(uri (rubygems-uri "builder" version))
(sha256
(base32
- "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
+ "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr"))))
(build-system ruby-build-system)
(arguments
`(#:phases
@@ -1530,28 +1531,105 @@ logic.")
(home-page "https://github.com/typhoeus/typhoeus")
(license license:expat)))
+(define-public ruby-rubocop-rspec
+ (package
+ (name "ruby-rubocop-rspec")
+ (version "2.2.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/rubocop-hq/rubocop-rspec")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0gdpjpympb6qc77bang759z7z6lckf14ghkx8v6614agxg8l3g5y"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:test-target "internal_investigation"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'set-HOME
+ (lambda _
+ (setenv "HOME" "/tmp")
+ #t)))))
+ (propagated-inputs
+ `(("ruby-rubocop" ,ruby-rubocop)
+ ("ruby-rubocop-ast" ,ruby-rubocop-ast)))
+ (native-inputs
+ `(("ruby-rack" ,ruby-rack)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-rubocop-performance" ,ruby-rubocop-performance)
+ ("ruby-simplecov" ,ruby-simplecov)
+ ("ruby-yard" ,ruby-yard)))
+ (synopsis "Code style checking for RSpec files")
+ (description "This package provides a plugin for the RuboCop code style
+enforcing & linting tool.")
+ (home-page "https://github.com/rubocop-hq/rubocop-rspec")
+ (license license:expat)))
+
+(define-public ruby-rubocop-rspec-minimal
+ (hidden-package
+ (package
+ (inherit ruby-rubocop-rspec)
+ (arguments
+ (substitute-keyword-arguments (package-arguments ruby-rubocop-rspec)
+ ((#:tests? _ #f) #f)))
+ (propagated-inputs '())
+ (native-inputs '()))))
+
(define-public ruby-rubocop-performance
(package
(name "ruby-rubocop-performance")
- (version "1.7.1")
+ (version "1.9.2")
(source
(origin
- (method url-fetch)
- (uri (rubygems-uri "rubocop-performance" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/rubocop-hq/rubocop-performance")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "04r8d4x62ygv17spvz9yyfxbmbf8qxwhijs0xycfvzr0q4pyg9sw"))))
+ "04lmkmz6c0ccs5miikrww7lakp7y6xz00g7b47ay7rn7sx5j6qyf"))))
(build-system ruby-build-system)
(arguments
- `(#:tests? #f)) ;no test suite in the distributed gem
+ `(#:tests? #f ; tests require a git checkout of rubocop's source code.
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'replace-git-ls-files
+ (lambda _
+ (substitute* "rubocop-performance.gemspec"
+ (("`git ls-files -z config lib LICENSE.txt README.md`")
+ "`find config lib LICENSE.txt README.md -type f -print0 |sort -z`"))
+ #t))
+ (add-before 'check 'set-HOME
+ (lambda _
+ (setenv "HOME" "/tmp")
+ #t)))))
(propagated-inputs
- `(("ruby-rubocop" ,ruby-rubocop)))
+ `(("ruby-rubocop" ,ruby-rubocop)
+ ("ruby-rubocop-ast" ,ruby-rubocop-ast)))
+ (native-inputs
+ `(("ruby-bump" ,ruby-bump)
+ ("ruby-yard" ,ruby-yard)))
(synopsis "Performance optimizations checkers for Ruby code")
(description "This package provides a collection of RuboCop cops to check
for performance optimizations in Ruby code.")
(home-page "https://docs.rubocop.org/rubocop-performance/")
(license license:expat)))
+(define-public ruby-rubocop-performance-minimal
+ (hidden-package
+ (package
+ (inherit ruby-rubocop-performance)
+ (arguments
+ (substitute-keyword-arguments (package-arguments ruby-rubocop-performance)
+ ((#:tests? _ #f) #f)))
+ (propagated-inputs '())
+ (native-inputs '()))))
+
(define-public ruby-gimme
(let ((revision "1")
(commit "4e71f0236f1271871916dd403261d26533db34c0"))
@@ -2005,14 +2083,14 @@ value is found.")
(define-public ruby-crack
(package
(name "ruby-crack")
- (version "0.4.3")
+ (version "0.4.5")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "crack" version))
(sha256
(base32
- "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k"))))
+ "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r"))))
(build-system ruby-build-system)
(arguments
`(#:phases
@@ -2026,7 +2104,7 @@ value is found.")
(find-files "test" ".*rb$")))
#t)))))
(propagated-inputs
- `(("ruby-safe-yaml" ,ruby-safe-yaml)))
+ `(("ruby-rexml" ,ruby-rexml)))
(synopsis "Simple JSON and XML parsing for Ruby")
(description
"@code{crack} provides really simple JSON and XML parsing, extracted from
@@ -2201,19 +2279,20 @@ with a similar style to the original OAuth spec.")
(define-public ruby-omniauth
(package
(name "ruby-omniauth")
- (version "1.9.1")
+ (version "2.0.3")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "omniauth" version))
(sha256
- (base32 "002vi9gwamkmhf0dsj2im1d47xw2n1jfhnzl18shxf3ampkqfmyz"))))
+ (base32 "105mzgvmn2kjaacxw01h4wqv33r7hfn5z8fxlkk3jcjar14j71bh"))))
(build-system ruby-build-system)
- (arguments
- '(#:tests? #f)) ; No included tests
(propagated-inputs
`(("ruby-hashie" ,ruby-hashie)
- ("ruby-rack" ,ruby-rack)))
+ ("ruby-rack" ,ruby-rack)
+ ("ruby-rack-protection" ,ruby-rack-protection)))
+ (native-inputs
+ `(("ruby-rspec" ,ruby-rspec)))
(synopsis "Generalized Rack framework for multiple-provider authentication")
(description
"This package provides a generalized Rack framework for multiple-provider
@@ -2224,14 +2303,14 @@ authentication.")
(define-public ruby-omniauth-oauth2
(package
(name "ruby-omniauth-oauth2")
- (version "1.6.0")
+ (version "1.7.1")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "omniauth-oauth2" version))
(sha256
(base32
- "11mi36l9d97r77q99jnafdc1yaa0a9wahhpp7dj7ank8q52g7g79"))))
+ "10fr2b58sp7l6nfdvxpbi67374hkrvsf507cvda89jjs0jacy319"))))
(build-system ruby-build-system)
(arguments
'(#:phases
@@ -2254,7 +2333,7 @@ authentication.")
("ruby-rspec" ,ruby-rspec)
("ruby-simplecov" ,ruby-simplecov)
("ruby-rack-test" ,ruby-rack-test)
- ("ruby-webmock" ,ruby-webmock-2)))
+ ("ruby-webmock" ,ruby-webmock)))
(synopsis "Abstract OAuth2 strategy for OmniAuth")
(description
"This library provides a generic OAuth2 strategy for OmniAuth. It
@@ -2998,7 +3077,7 @@ 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/")
+ (home-page "https://haml.info/")
(license license:expat)))
(define-public ruby-hamster
@@ -3050,20 +3129,19 @@ immutable queue or stack).")
(define-public ruby-hashdiff
(package
(name "ruby-hashdiff")
- (version "0.3.8")
+ (version "1.0.1")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "hashdiff" version))
(sha256
(base32
- "19ykg5pax8798nh1yv71adkx0zzs7gn2rxjj86v7nsw0jba5lask"))))
+ "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c"))))
(build-system ruby-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
- ;; Run tests directly via rspec to avoid Rake issue:
- ;; NoMethodError: undefined method `last_comment'
+ ;; Run tests directly via rspec to avoid depending on rubocop.
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
@@ -4298,13 +4376,13 @@ client protocol.")
(define-public ruby-minitest
(package
(name "ruby-minitest")
- (version "5.11.3")
+ (version "5.12.2")
(source (origin
(method url-fetch)
(uri (rubygems-uri "minitest" version))
(sha256
(base32
- "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"))))
+ "0zjm24aiz42i9n37mcw8lydd7n0y7wfk27by06jx77ypcld3qvkw"))))
(build-system ruby-build-system)
(native-inputs
`(("ruby-hoe" ,ruby-hoe)))
@@ -5222,14 +5300,14 @@ across multiple CPU cores.")
(define-public ruby-parser
(package
(name "ruby-parser")
- (version "2.7.2.0")
+ (version "3.0.0.0")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "parser" version))
(sha256
(base32
- "1f7gmm60yla325wlnd3qkxs59qm2y0aan8ljpg6k18rwzrrfil6z"))))
+ "1jixakyzmy0j5c1rb0fjrrdhgnyryvrr6vgcybs14jfw09akv5ml"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; tests not included in gem
@@ -5477,6 +5555,29 @@ projects. It has very little overhead and can be easily integrated with
development tools to catch coverage problems early.")
(license license:expat)))
+(define-public ruby-oedipus-lex
+ (package
+ (name "ruby-oedipus-lex")
+ (version "2.5.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "oedipus_lex" version))
+ (sha256
+ (base32
+ "1v1rk78khwq87ar300lwll570zxpkq9rjnpgc9mgsyd6mm9qjz4w"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("ruby-hoe" ,ruby-hoe)))
+ (synopsis "Ruby lexer")
+ (description
+ "Oedipus Lex is a lexer generator in the same family as Rexical and Rex.
+It is based primarily on generating code much like you would a hand-written
+lexer. It uses StrScanner within a multi-level case statement. As such,
+Oedipus matches on the first match, not the longest.")
+ (home-page "https://github.com/seattlerb/oedipus_lex")
+ (license license:expat)))
+
(define-public ruby-guard
(package
(name "ruby-guard")
@@ -5628,14 +5729,18 @@ utilities for Ruby.")
(define-public ruby-tzinfo
(package
(name "ruby-tzinfo")
- (version "1.2.4")
+ (version "2.0.4")
(source
(origin
- (method url-fetch)
- (uri (rubygems-uri "tzinfo" version))
+ (method git-fetch)
+ (uri (git-reference
+ ;; Pull from git because the gem has no tests.
+ (url "https://github.com/tzinfo/tzinfo")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp"))))
+ "0jaq1givdaz5jxz47xngyj3j315n872rk97mnpm5njwm48wy45yh"))))
(build-system ruby-build-system)
(arguments
'(#:phases
@@ -5646,9 +5751,22 @@ utilities for Ruby.")
(("def safe_test\\(options = \\{\\}\\)")
"def safe_test(options = {})
skip('The Guix build environment has an unsafe load path')"))
+ #t))
+ (add-before 'check 'pre-check
+ (lambda _
+ (setenv "HOME" (getcwd))
+ (substitute* "Gemfile"
+ (("simplecov.*") "simplecov'\n"))
+ #t))
+ (replace 'check
+ (lambda* (#:key tests? test-target #:allow-other-keys)
+ (when tests?
+ (invoke "bundler" "exec" "rake" test-target))
#t)))))
(propagated-inputs
- `(("ruby-thread-safe" ,ruby-thread-safe)))
+ `(("ruby-concurrent-ruby" ,ruby-concurrent)))
+ (native-inputs
+ `(("ruby-simplecov" ,ruby-simplecov)))
(synopsis "Time zone library for Ruby")
(description "TZInfo is a Ruby library that provides daylight savings
aware transformations between times in different time zones.")
@@ -5658,7 +5776,7 @@ aware transformations between times in different time zones.")
(define-public ruby-tzinfo-data
(package
(name "ruby-tzinfo-data")
- (version "1.2017.3")
+ (version "1.2021.1")
(source
(origin
(method git-fetch)
@@ -5670,15 +5788,61 @@ aware transformations between times in different time zones.")
(file-name (git-file-name name version))
(sha256
(base32
- "0v3phl5l3jrm6waxcszqmj2dkjhqawxfsxb6mss7vkp1hlckqcdp"))
- ;; Remove the known test failure.
- ;; https://github.com/tzinfo/tzinfo-data/issues/10
- ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
- (patches (search-patches
- "ruby-tzinfo-data-ignore-broken-test.patch"))))
+ "0yzyr3rf8qaw6kxfc0gwpxsb7gl3rhfpx9g1c2z15vapyminhi60"))))
(build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-source
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "Rakefile"
+ (("https://data.iana.org/time-zones/releases")
+ (assoc-ref inputs "tzdata")))
+ #t))
+ (add-before 'check 'pre-check
+ (lambda _
+ (setenv "HOME" (getcwd))
+ (substitute* "Rakefile"
+ ;; Don't need gpg, and it may break after a time.
+ (("gpg ") "echo ")
+ ((" sh\\(\\\"make -C" text)
+ (string-append " sh(\"sed -i 's@/bin/sh@sh@' #{tzdb_combined_path}/Makefile \")\n"
+ " sh(\"sed -i 's@cc=@cc?=@' #{tzdb_combined_path}/Makefile \")\n" text)))
+ (setenv "cc" ,(cc-for-target))
+ #t)))))
(propagated-inputs
`(("ruby-tzinfo" ,ruby-tzinfo)))
+ (native-inputs
+ `(("tzdata"
+ ,(file-union "tzdata-for-ruby-tzdata-info"
+ `(("tzdata2021a.tar.gz"
+ ,(origin
+ (method url-fetch)
+ (uri "https://data.iana.org/time-zones/releases/tzdata2021a.tar.gz")
+ (sha256
+ (base32
+ "022fn6gkmp7pamlgab04x0dm5hnyn2m2fcnyr3pvm36612xd5rrr"))))
+ ("tzdata2021a.tar.gz.asc"
+ ,(origin
+ (method url-fetch)
+ (uri "https://data.iana.org/time-zones/releases/tzdata2021a.tar.gz.asc")
+ (sha256
+ (base32
+ "0n7h2w8ji1lrxpk0d44wyfshlhr7c9jmwj6lqbxlyvqnfi3gbicx"))))
+ ("tzcode2021a.tar.gz"
+ ,(origin
+ (method url-fetch)
+ (uri "https://data.iana.org/time-zones/releases/tzcode2021a.tar.gz")
+ (sha256
+ (base32
+ "1l02b0jiwp3fl0xd6227i69d26rmx3yrnq0ssq9vvdmm4jhvyipb"))))
+ ("tzcode2021a.tar.gz.asc"
+ ,(origin
+ (method url-fetch)
+ (uri "https://data.iana.org/time-zones/releases/tzcode2021a.tar.gz.asc")
+ (sha256
+ (base32
+ "1qhlj4lr810s47s1lwcvv1sgvg2sflf98w4sbg1lc8wzv5qxxv7g")))))))))
(synopsis "Data from the IANA Time Zone database")
(description
"This library provides @code{TZInfo::Data}, which contains data from the
@@ -5810,13 +5974,13 @@ documentation for Ruby code.")
(define-public ruby-gem-hadar
(package
(name "ruby-gem-hadar")
- (version "1.9.1")
+ (version "1.11.0")
(source (origin
(method url-fetch)
(uri (rubygems-uri "gem_hadar" version))
(sha256
(base32
- "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
+ "160abb3l4n3gkhd86f22n981bhqxkbf5ym6fhsk796pix6696pd5"))))
(build-system ruby-build-system)
;; This gem needs itself at development time. We disable rebuilding of the
;; gemspec to avoid this loop.
@@ -6193,14 +6357,14 @@ you about the changes.")
(define-public ruby-loofah
(package
(name "ruby-loofah")
- (version "2.2.3")
+ (version "2.3.1")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "loofah" version))
(sha256
(base32
- "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg"))))
+ "0npqav026zd7r4qdidq9x5nxcp2dzg71bnp421xxx7sngbxf2xbd"))))
(build-system ruby-build-system)
(arguments
'(#:phases
@@ -6209,11 +6373,9 @@ you about the changes.")
(lambda _
;; concourse is a development tool which is unused, so remove it
;; so it's not required.
- (substitute* "Gemfile"
- ((".*\"concourse\".*") "\n"))
(substitute* "Rakefile"
- (("require 'concourse'") "")
- (("Concourse\\.new.*") "\n"))
+ (("require \"concourse\"") "")
+ (("Concourse\\.new.*") "task :concourse do\n"))
#t)))))
(native-inputs
`(("ruby-hoe" ,ruby-hoe)
@@ -6231,14 +6393,14 @@ documents and fragments. It's built on top of Nokogiri and libxml2.")
(define-public ruby-activesupport
(package
(name "ruby-activesupport")
- (version "5.2.2.1")
+ (version "6.1.3")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "activesupport" version))
(sha256
(base32
- "161bp4p01v1a1lvszrhd1a02zf9x1p1l1yhw79a3rix1kvzkkdqb"))))
+ "00a4db64g8w5yyk6hzak2nqrmdfvyh5zc9cvnm9gglwbi87ss28h"))))
(build-system ruby-build-system)
(arguments
`(#:phases
@@ -6252,12 +6414,13 @@ documents and fragments. It's built on top of Nokogiri and libxml2.")
("ruby-i18n" ,ruby-i18n)
("ruby-minitest" ,ruby-minitest)
("ruby-tzinfo" ,ruby-tzinfo)
- ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
+ ("ruby-tzinfo-data" ,ruby-tzinfo-data)
+ ("ruby-zeitwerk" ,ruby-zeitwerk)))
(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")
+ (home-page "https://www.rubyonrails.org")
(license license:expat)))
(define-public ruby-crass
@@ -6676,7 +6839,7 @@ differences (added or removed nodes) between two XML/HTML documents.")
(description
"Racc is a LALR(1) parser generator. It is written in Ruby itself, and
generates Ruby program.")
- (home-page "http://i.loveruby.net/en/projects/racc/")
+ (home-page "https://i.loveruby.net/en/projects/racc/")
(license (list
;; Generally licensed under the LGPL2.1, and some files also
;; available under the same license as Ruby.
@@ -6686,21 +6849,25 @@ generates Ruby program.")
(define-public ruby-rack
(package
(name "ruby-rack")
- (version "2.0.6")
+ (version "2.2.3")
(source
(origin
(method git-fetch)
- ;; Download from GitHub so that the patch can be applied.
+ ;; Download from GitHub so that the snippet can be applied and tests run.
(uri (git-reference
(url "https://github.com/rack/rack")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
- "1n7z4g1x6yxip096cdc04wq7yk7ywpinq28g2xjb46r4nlv5h0j6"))
+ "1qrm5z5v586738bnkr9188dvz0s25nryw6sgvx18jjlkizayw1g4"))
;; Ignore test which fails inside the build environment but works
;; outside.
- (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin (substitute* "test/spec_files.rb"
+ (("res.body.must_equal expected_body") ""))
+ #t))))
(build-system ruby-build-system)
(arguments
'(#:phases
@@ -6714,30 +6881,19 @@ generates Ruby program.")
;; "/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)))
+ (substitute* '("test/spec_files.rb")
+ (("208" bytes)
+ (number->string (+ (string->number bytes) size-diff)))
(("bytes(.)22-33" all delimiter)
(string-append "bytes"
delimiter
(number->string (+ 22 size-diff))
"-"
(number->string (+ 33 size-diff))))))
- #t))
- (add-before 'reset-gzip-timestamps 'make-files-writable
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Make sure .gz files are writable so that the
- ;; 'reset-gzip-timestamps' phase can do its work.
- (let ((out (assoc-ref outputs "out")))
- (for-each make-file-writable
- (find-files out "\\.gz$"))
- #t))))))
+ #t)))))
(native-inputs
`(("ruby-minitest" ,ruby-minitest)
- ("ruby-minitest-sprint" ,ruby-minitest-sprint)
- ("which" ,which)))
- (propagated-inputs
- `(("ruby-concurrent" ,ruby-concurrent)))
+ ("ruby-minitest-global-expectations" ,ruby-minitest-global-expectations)))
(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,
@@ -6780,14 +6936,14 @@ testing libraries to build on.")
(define-public ruby-rack-protection
(package
(name "ruby-rack-protection")
- (version "2.0.5")
+ (version "2.0.8.1")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "rack-protection" version))
(sha256
(base32
- "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk"))))
+ "1zyj97bfr1shfgwk4ddmdbw0mdkm4qdyh9s1hl0k7accf3kxx1yi"))))
(build-system ruby-build-system)
(arguments
'(;; Tests missing from the gem.
@@ -6913,7 +7069,7 @@ inspired by the Sinatra microframework style of specifying actions:
(define-public ruby-rubocop-ast
(package
(name "ruby-rubocop-ast")
- (version "0.3.0")
+ (version "1.4.1")
(source
(origin
(method git-fetch) ;no test suite in distributed gem
@@ -6923,16 +7079,15 @@ inspired by the Sinatra microframework style of specifying actions:
(file-name (git-file-name name version))
(sha256
(base32
- "1ycf6qcj8nbzk2js72priim4642lkn56w5kbny1nlryjkckxgm04"))))
+ "1x2m7k4bn4zvvwmj7imzmv0dav6xnrbcvssad1m5lkprx7h5lzkq"))))
(build-system ruby-build-system)
(arguments
`(#:test-target "spec"
#:phases (modify-phases %standard-phases
- (add-after 'unpack 'disable-bundler
+ (add-before 'build 'generate-lexer
(lambda _
- (substitute* "Rakefile"
- (("Bundler\\.setup.*") "nil\n"))
- #t))
+ (setenv "RUBOCOP_VERSION" "none")
+ (invoke "rake" "generate")))
(replace 'replace-git-ls-files
(lambda _
(substitute* "rubocop-ast.gemspec"
@@ -6941,7 +7096,12 @@ inspired by the Sinatra microframework style of specifying actions:
#t)))))
(native-inputs
`(("ruby-bump" ,ruby-bump)
- ("ruby-rspec" ,ruby-rspec)))
+ ("ruby-oedipus-lex" ,ruby-oedipus-lex)
+ ("ruby-pry" ,ruby-pry)
+ ("ruby-racc" ,ruby-racc)
+ ("ruby-rake" ,ruby-rake)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-simplecov" ,ruby-simplecov)))
(propagated-inputs
`(("ruby-parser" ,ruby-parser)))
(synopsis "RuboCop's AST extensions and NodePattern functionality")
@@ -7145,7 +7305,7 @@ run.")
(define-public ruby-rubocop
(package
(name "ruby-rubocop")
- (version "0.88.0")
+ (version "1.10.0")
(source
(origin
(method git-fetch) ;no tests in distributed gem
@@ -7155,42 +7315,25 @@ run.")
(file-name (git-file-name name version))
(sha256
(base32
- "1d06893jp8pd85fvgp5d16vqcf31bafi430v4f4y746ihyvhzz5r"))
- (patches (search-patches "ruby-rubocop-break-dependency-cycle.patch"))))
+ "0wjw9vpzr4f3nf1zf010bag71w4hdi0haybdn7r5rlmw45pmim29"))))
(build-system ruby-build-system)
(arguments
'(#:test-target "default"
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'remove-problematic-tests
- ;; These tests depend on Rubocop extensions, which cannot be
- ;; included as they cause a dependency cycle with Rubocop itself.
- (lambda _
- (delete-file "spec/rubocop/config_loader_spec.rb")
- (substitute* "Gemfile"
- ((".*'rubocop-performance'.*") "")
- ((".*'rubocop-rspec'.*") ""))
- ;; Prevent "Unnecessary disabling of RSpec/* (unknown cop)"
- ;; errors.
- (substitute* (find-files "spec/rubocop/cop/" "_spec\\.rb$")
- (("# (rubocop:(enable|disable) RSpec.*)" _ what)
- (string-append "# Disabled: " what)))
- #t))
- (add-after 'unpack 'disable-bundler
- (lambda _
- (substitute* "Rakefile"
- (("Bundler\\.setup.*") "nil\n"))
- #t))
- (replace 'replace-git-ls-files
- (lambda _
- (substitute* "rubocop.gemspec"
- (("`git ls-files(.*)`" _ files)
- (format #f "`find ~a -type f| sort`" files)))
- #t))
(add-before 'check 'set-home
(lambda _
(setenv "HOME" (getcwd))
#t))
+ ;; Rubocop depends on itself for tests, directly and indirectly. By
+ ;; regenerating the TODO list we test rubocop against itself and
+ ;; forgo adjusting the test suite to our environment each release.
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (make-file-writable ".rubocop_todo.yml")
+ (invoke "./exe/rubocop" "--auto-gen-config"))
+ #t))
(add-before 'check 'make-adoc-files-writable
(lambda _
(let ((adoc-files (find-files "docs/modules/ROOT/pages"
@@ -7199,10 +7342,17 @@ run.")
#t)))))
(native-inputs
`(("ruby-bump" ,ruby-bump)
+ ("ruby-memory-profiler" ,ruby-memory-profiler)
("ruby-pry" ,ruby-pry)
+ ("ruby-rake" ,ruby-rake)
("ruby-rspec" ,ruby-rspec)
+ ("ruby-rubocop-minimal" ,ruby-rubocop-minimal)
+ ("ruby-rubocop-performance-minimal" ,ruby-rubocop-performance-minimal)
+ ("ruby-rubocop-rspec-minimal" ,ruby-rubocop-rspec-minimal)
+ ("ruby-simplecov" ,ruby-simplecov)
+ ("ruby-stackprof" ,ruby-stackprof)
("ruby-test-queue" ,ruby-test-queue)
- ("ruby-webmock" ,ruby-webmock-2)
+ ("ruby-webmock" ,ruby-webmock)
("ruby-yard" ,ruby-yard)))
(propagated-inputs
`(("ruby-parallel" ,ruby-parallel)
@@ -7220,6 +7370,16 @@ the community-driven Ruby Style Guide.")
(home-page "https://github.com/rubocop-hq/rubocop")
(license license:expat)))
+(define-public ruby-rubocop-minimal
+ (hidden-package
+ (package
+ (inherit ruby-rubocop)
+ (arguments
+ (substitute-keyword-arguments (package-arguments ruby-rubocop)
+ ((#:tests? _ #f) #f)))
+ (propagated-inputs '())
+ (native-inputs '()))))
+
(define-public ruby-contest
(package
(name "ruby-contest")
@@ -7488,6 +7648,28 @@ navigation capabilities to @code{pry}, using @code{byebug}.")
(home-page "https://github.com/deivid-rodriguez/pry-byebug")
(license license:expat)))
+(define-public ruby-stackprof
+ (package
+ (name "ruby-stackprof")
+ (version "0.2.16")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "stackprof" version))
+ (sha256
+ (base32
+ "147rb66p3n062vc433afqhkd99iazvkrqnghxgh871r62yhha93f"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("ruby-mocha" ,ruby-mocha)
+ ("ruby-rake-compiler" ,ruby-rake-compiler)))
+ (synopsis "Sampling profiler for Ruby code")
+ (description
+ "@code{stackprof} is a fast sampling profiler for Ruby code, with cpu,
+wallclock and object allocation samplers.")
+ (home-page "https://github.com/tmm1/stackprof")
+ (license license:expat)))
+
(define-public ruby-binding-of-caller
(package
(name "ruby-binding-of-caller")
@@ -7610,6 +7792,29 @@ Profiling multiple threads simultaneously is supported.
(home-page "https://github.com/ruby-prof/ruby-prof")
(license license:bsd-2)))
+(define-public ruby-memory-profiler
+ (package
+ (name "ruby-memory-profiler")
+ (version "1.0.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/SamSaffron/memory_profiler")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "07yqv11q68xg2fqkrhs6ysngryk8b9zq6qzh24rgx9xqv6qfnj0w"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("ruby-rake" ,ruby-rake)))
+ (synopsis "Memory profiling routines for Ruby")
+ (description
+ "This package provides memory profiling routines for Ruby.")
+ (home-page "https://github.com/SamSaffron/memory_profiler")
+ (license license:expat)))
+
(define-public ruby-cucumber-messages
(package
(name "ruby-cucumber-messages")
@@ -8632,6 +8837,23 @@ definitions.")
(home-page "https://github.com/mime-types/ruby-mime-types")
(license license:expat)))
+(define-public ruby-mini-mime
+ (package
+ (name "ruby-mini-mime")
+ (version "1.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "mini_mime" version))
+ (sha256
+ (base32
+ "1axm0rxyx3ss93wbmfkm78a6x03l8y4qy60rhkkiq0aza0vwq3ha"))))
+ (build-system ruby-build-system)
+ (synopsis "Lightweight mime type lookup toy")
+ (description "This package provides a lightweight mime type lookup toy.")
+ (home-page "https://github.com/discourse/mini_mime")
+ (license license:expat)))
+
(define-public ruby-fivemat
(package
(name "ruby-fivemat")
@@ -8893,17 +9115,17 @@ requests.")
(home-page "https://github.com/opperator/warden-oauth2")
(license license:expat)))
-(define-public ruby-webmock-2
+(define-public ruby-webmock
(package
(name "ruby-webmock")
- (version "2.3.2")
+ (version "3.11.2")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "webmock" version))
(sha256
(base32
- "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))
+ "1hdlbvfw316lkz251qnfk79drmaay7l51kidvicz41nhvw12xz8v"))))
(build-system ruby-build-system)
(native-inputs
`(("bundler" ,bundler)
@@ -8919,6 +9141,19 @@ requests. This is useful when testing software.")
(home-page "https://github.com/bblimke/webmock")
(license license:expat)))
+(define-public ruby-webmock-2
+ (package
+ (inherit ruby-webmock)
+ (name "ruby-webmock")
+ (version "2.3.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "webmock" version))
+ (sha256
+ (base32
+ "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))))
+
(define-public ruby-unicode-display-width
(package
(name "ruby-unicode-display-width")
@@ -9856,21 +10091,19 @@ of the more insecure basic authentication scheme.")
(define-public ruby-mail
(package
(name "ruby-mail")
- (version "2.6.6")
+ (version "2.7.1")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "mail" version))
(sha256
(base32
- "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
+ "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc"))))
(build-system ruby-build-system)
(propagated-inputs
- `(("ruby-mime-types" ,ruby-mime-types)))
+ `(("ruby-mini-mime" ,ruby-mini-mime)))
(arguments
- ;; Tests require extra gems not included in the Gemfile.
- ;; XXX: Try enabling this for the next version with mini_mime.
- `(#:tests? #f))
+ '(#:tests? #f)) ; no rakefile
(synopsis "Mail library for Ruby")
(description
"Mail is an internet library for Ruby that is designed to handle email
@@ -11754,20 +11987,23 @@ application.")
(define-public ruby-solargraph
(package
(name "ruby-solargraph")
- (version "0.36.0")
+ (version "0.40.3")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "solargraph" version))
(sha256
(base32
- "0b93xzkgd1h06da9gdnwivj1mzbil8lc072y2838dy6i7bxgpy9i"))))
+ "1gf049rm0yvw4r8r5yyi890idbfg8qh0dikqx5prvkh11srl73bz"))))
(build-system ruby-build-system)
(propagated-inputs
`(("ruby-backport" ,ruby-backport)
("bundler" ,bundler)
- ("ruby-htmlentities" ,ruby-htmlentities)
+ ("ruby-benchmark" ,ruby-benchmark)
+ ("ruby-e2mmap" ,ruby-e2mmap)
("ruby-jaro-winkler" ,ruby-jaro-winkler)
+ ("ruby-kramdown" ,ruby-kramdown)
+ ("ruby-kramdown-parser-gfm" ,ruby-kramdown-parser-gfm)
("ruby-maruku" ,ruby-maruku)
("ruby-nokogiri" ,ruby-nokogiri)
("ruby-parser" ,ruby-parser)
@@ -11780,7 +12016,7 @@ application.")
`(("ruby-rspec" ,ruby-rspec)
("ruby-pry" ,ruby-pry)
("ruby-simplecov" ,ruby-simplecov)
- ("ruby-webmock" ,ruby-webmock-2)))
+ ("ruby-webmock" ,ruby-webmock)))
;; FIXME: can't figure out how to run the tests properly:
;; An error occurred while loading spec_helper.
@@ -11831,6 +12067,35 @@ which snapshots to consider and what files to include.")
"https://github.com/hartator/wayback-machine-downloader")
(license license:expat)))
+(define-public ruby-zeitwerk
+ (package
+ (name "ruby-zeitwerk")
+ (version "2.4.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ ;; No tests in the released gem.
+ (url "https://github.com/fxn/zeitwerk")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "119fgdyb57gmss2yvfwfr47wcy8nny38sai72446krpihyavpizw"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("ruby-minitest" ,ruby-minitest)
+ ("ruby-minitest-focus" ,ruby-minitest-focus)
+ ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
+ (synopsis "Efficient and thread-safe code loader for Ruby")
+ (description
+ "Zeitwerk implements constant autoloading with Ruby semantics. Each gem
+and application may have their own independent autoloader, with its own
+configuration, inflector, and logger. Supports autoloading, reloading, and
+eager loading.")
+ (home-page "https://github.com/fxn/zeitwerk")
+ (license license:expat)))
+
(define-public ruby-wwtd
(package
(name "ruby-wwtd")
@@ -11936,3 +12201,118 @@ multiple adapters, various log level combinations and message formatting
options.")
(home-page "https://github.com/rudionrails/yell")
(license license:expat)))
+
+(define-public ruby-e2mmap
+ (package
+ (name "ruby-e2mmap")
+ (version "0.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "e2mmap" version))
+ (sha256
+ (base32
+ "0n8gxjb63dck3vrmsdcqqll7xs7f3wk78mw8w0gdk9wp5nx6pvj5"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ;; There is a rakefile but no tests
+ (synopsis
+ "Module for defining custom exceptions with specific messages")
+ (description
+ "Exception2MessageMapper (e2mmap) is a helper module for easily defining
+exceptions with predefined messages.")
+ (home-page "https://github.com/ruby/e2mmap")
+ (license license:bsd-2)))
+
+(define-public ruby-benchmark
+ (package
+ (name "ruby-benchmark")
+ (version "0.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "benchmark" version))
+ (sha256
+ (base32
+ "1jvrl7400fv7v2jjri1r7ilj3sri36hzipwwgpn5psib4c9c59c6"))))
+ (build-system ruby-build-system)
+ (synopsis "Performance benchmarking library")
+ (description "This package provides methods for benchmarking Ruby code,
+giving detailed reports on the time taken for each task.")
+ (home-page "https://github.com/ruby/benchmark")
+ (license license:bsd-2)))
+
+(define-public ruby-jekyll-feed
+ (package
+ (name "ruby-jekyll-feed")
+ (version "0.15.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "jekyll-feed" version))
+ (sha256
+ (base32
+ "1zxqkrnix0xiw98531h5ga6h69jhzlx2jh9qhvcl67p8nq3sgza9"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #false)) ;there are none
+ (propagated-inputs
+ `(("jekyll" ,jekyll)))
+ (synopsis
+ "Jekyll plugin to generate an Atom feed of your Jekyll posts")
+ (description
+ "This package provides a Jekyll plugin to generate an Atom feed
+of your Jekyll posts.")
+ (home-page
+ "https://github.com/jekyll/jekyll-feed")
+ (license license:expat)))
+
+(define-public ruby-jekyll-sitemap
+ (package
+ (name "ruby-jekyll-sitemap")
+ (version "1.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "jekyll-sitemap" version))
+ (sha256
+ (base32
+ "0622rwsn5i0m5xcyzdn86l68wgydqwji03lqixdfm1f1xdfqrq0d"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #false)) ;there are none
+ (propagated-inputs
+ `(("jekyll" ,jekyll)))
+ (synopsis
+ "Automatically generate a sitemap.xml for your Jekyll site")
+ (description
+ "This package provides a Jekyll plugin to silently generate
+a sitemaps.org compliant sitemap for your Jekyll site.")
+ (home-page
+ "https://github.com/jekyll/jekyll-sitemap")
+ (license license:expat)))
+
+(define-public ruby-jekyll-seo-tag
+ (package
+ (name "ruby-jekyll-seo-tag")
+ (version "2.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "jekyll-seo-tag" version))
+ (sha256
+ (base32
+ "0fsi75hymk2wswy216fs224p5ycrzjw1kshw1bsl5czhv42wr2w3"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #false))
+ (propagated-inputs
+ `(("jekyll" ,jekyll)))
+ (synopsis
+ "Jekyll plugin to add metadata tags for search engines and social networks")
+ (description
+ "This package provides a Jekyll plugin to add metadata tags for search engines
+and social networks to better index and display your site's content.")
+ (home-page
+ "https://github.com/jekyll/jekyll-seo-tag")
+ (license license:expat)))