2017-08-13 13:14:22 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2016-08-06 17:23:19 +00:00
|
|
|
source "https://rubygems.org"
|
2010-12-18 18:42:03 +00:00
|
|
|
gemspec
|
|
|
|
|
Pin minitest version to 5.21
Managed to reproduce CI failure at https://buildkite.com/rails/rails-nightly/builds/133#018d7bb8-8a32-4978-8e36-d7cb9b067813/1196-1204 . It would also reproduce against the released versions of Ruby because this is triggered by minitest v5.22.0 change. https://github.com/minitest/minitest/commit/ebb468c81c0eea069234127bd6a101c84e955872
To avoid all of railties CI failures, pin minitest version to 5.21 tentatively.
* Steps to reproduce
```ruby
git clone https://github.com/rails/rails
cd rails
rm Gemfile.lock
bundle install
cd railties
bin/test test/application/test_runner_test.rb -n test_system_tests_are_not_run_with_the_default_test_command
```
* Expected behavior
It should pass.
* Actual behavior
```ruby
$ bin/test test/application/test_runner_test.rb -n test_system_tests_are_not_run_with_the_default_test_command
Run options: -n test_system_tests_are_not_run_with_the_default_test_command --seed 14574
F
Failure:
ApplicationTests::TestRunnerTest#test_system_tests_are_not_run_with_the_default_test_command [test/application/test_runner_test.rb:1191]:
Expected /0\ runs,\ 0\ assertions,\ 0\ failures,\ 0\ errors,\ 0\ skips/ to match "Nothing ran for filter: \nRunning 0 tests in a single process (parallelization threshold is 50)\nRun options: --seed 45713\n\n# Running:\n\n".
bin/test test/application/test_runner_test.rb:1179
Finished in 9.982314s, 0.1002 runs/s, 0.2004 assertions/s.
1 runs, 2 assertions, 1 failures, 0 errors, 0 skips
$
```
2024-02-06 00:59:36 +00:00
|
|
|
gem "minitest", ">= 5.15.0", "< 5.22.0"
|
2021-12-15 21:20:38 +00:00
|
|
|
|
2014-09-14 08:21:55 +00:00
|
|
|
# We need a newish Rake since Active Job sets its test tasks' descriptions.
|
2022-12-15 07:14:22 +00:00
|
|
|
gem "rake", ">= 13"
|
2014-09-14 08:21:55 +00:00
|
|
|
|
2021-10-09 15:03:05 +00:00
|
|
|
gem "sprockets-rails", ">= 2.0.0"
|
|
|
|
gem "propshaft", ">= 0.1.7"
|
2023-07-29 10:35:47 +00:00
|
|
|
gem "capybara", ">= 3.39"
|
2024-01-02 15:48:44 +00:00
|
|
|
gem "selenium-webdriver", ">= 4.11.0"
|
2017-02-19 16:50:42 +00:00
|
|
|
|
2016-08-06 17:23:19 +00:00
|
|
|
gem "rack-cache", "~> 1.2"
|
2021-08-26 08:39:36 +00:00
|
|
|
gem "stimulus-rails"
|
|
|
|
gem "turbo-rails"
|
2021-09-06 14:44:44 +00:00
|
|
|
gem "jsbundling-rails"
|
2021-09-07 15:48:13 +00:00
|
|
|
gem "cssbundling-rails"
|
2023-10-27 14:46:16 +00:00
|
|
|
gem "importmap-rails", ">= 1.2.3"
|
2021-09-07 15:48:13 +00:00
|
|
|
gem "tailwindcss-rails"
|
2023-03-01 05:51:29 +00:00
|
|
|
gem "dartsass-rails"
|
2014-02-21 20:58:09 +00:00
|
|
|
# require: false so bcrypt is loaded only when has_secure_password is used.
|
2015-10-12 11:48:04 +00:00
|
|
|
# This is to avoid Active Model (and by extension the entire framework)
|
2014-02-21 20:58:09 +00:00
|
|
|
# being dependent on a binary library.
|
2016-08-06 17:23:19 +00:00
|
|
|
gem "bcrypt", "~> 3.1.11", require: false
|
2014-02-21 20:58:09 +00:00
|
|
|
|
2015-10-12 11:48:04 +00:00
|
|
|
# This needs to be with require false to avoid it being automatically loaded by
|
|
|
|
# sprockets.
|
2021-06-28 04:48:56 +00:00
|
|
|
gem "terser", ">= 1.1.4", require: false
|
2015-09-30 14:42:31 +00:00
|
|
|
|
2016-11-15 00:26:03 +00:00
|
|
|
# Explicitly avoid 1.x that doesn't support Ruby 2.4+
|
2023-12-01 17:57:08 +00:00
|
|
|
gem "json", ">= 2.0.0", "!=2.7.0"
|
2016-11-15 00:26:03 +00:00
|
|
|
|
2022-11-28 04:53:28 +00:00
|
|
|
# Workaround until Ruby ships with cgi version 0.3.6 or higher.
|
|
|
|
gem "cgi", ">= 0.3.6", require: false
|
|
|
|
|
2024-01-24 23:39:59 +00:00
|
|
|
gem "prism"
|
|
|
|
|
2023-05-13 06:48:04 +00:00
|
|
|
group :lint do
|
|
|
|
gem "syntax_tree", "6.1.1", require: false
|
|
|
|
end
|
|
|
|
|
2020-03-27 23:55:26 +00:00
|
|
|
group :rubocop do
|
2022-02-23 15:48:33 +00:00
|
|
|
gem "rubocop", ">= 1.25.1", require: false
|
2021-06-24 10:46:21 +00:00
|
|
|
gem "rubocop-minitest", require: false
|
2020-09-06 01:07:04 +00:00
|
|
|
gem "rubocop-packaging", require: false
|
2020-03-27 23:55:26 +00:00
|
|
|
gem "rubocop-performance", require: false
|
|
|
|
gem "rubocop-rails", require: false
|
2023-03-15 01:37:11 +00:00
|
|
|
gem "rubocop-md", require: false
|
2023-12-31 17:18:17 +00:00
|
|
|
|
|
|
|
# This gem is used in Railties tests so it must be a development dependency.
|
|
|
|
gem "rubocop-rails-omakase", require: false
|
2020-03-27 23:55:26 +00:00
|
|
|
end
|
2016-11-28 03:12:33 +00:00
|
|
|
|
2023-03-27 03:14:18 +00:00
|
|
|
group :mdl do
|
2024-01-02 15:48:44 +00:00
|
|
|
gem "mdl", "!= 0.13.0", require: false
|
2023-03-27 03:14:18 +00:00
|
|
|
end
|
|
|
|
|
2011-01-12 20:15:57 +00:00
|
|
|
group :doc do
|
2023-08-28 15:29:58 +00:00
|
|
|
gem "sdoc", git: "https://github.com/rails/sdoc.git", branch: "main"
|
2023-02-06 07:28:56 +00:00
|
|
|
gem "rdoc", "~> 6.5"
|
2016-08-06 17:23:19 +00:00
|
|
|
gem "redcarpet", "~> 3.2.3", platforms: :ruby
|
2020-09-21 05:19:59 +00:00
|
|
|
gem "w3c_validators", "~> 1.3.6"
|
2020-07-04 08:59:08 +00:00
|
|
|
gem "rouge"
|
2022-07-06 06:59:06 +00:00
|
|
|
gem "rubyzip", "~> 2.0"
|
2011-01-12 20:15:57 +00:00
|
|
|
end
|
2009-11-10 22:59:22 +00:00
|
|
|
|
2018-12-24 20:16:22 +00:00
|
|
|
# Active Support
|
2021-10-14 17:48:04 +00:00
|
|
|
gem "dalli", ">= 3.0.1"
|
2020-11-10 15:52:20 +00:00
|
|
|
gem "listen", "~> 3.3", require: false
|
2016-11-19 15:46:28 +00:00
|
|
|
gem "libxml-ruby", platforms: :ruby
|
2017-12-14 15:05:13 +00:00
|
|
|
gem "connection_pool", require: false
|
2020-09-24 22:41:04 +00:00
|
|
|
gem "rexml", require: false
|
Add ActiveSupport::MessagePack
`ActiveSupport::MessagePack` is a serializer that integrates with the
`msgpack` gem to serialize a variety of Ruby objects. `AS::MessagePack`
supports several types beyond the base types that `msgpack` supports,
including `Time` and `Range`, as well as Active Support types such as
`AS::TimeWithZone` and `AS::HashWithIndifferentAccess`.
Compared to `JSON` and `Marshal`, `AS::MessagePack` can provide a
performance improvement and message size reduction. For example, when
used with `MessageVerifier`:
```ruby
# frozen_string_literal: true
require "benchmark/ips"
require "active_support/all"
require "active_support/message_pack"
marshal_verifier = ActiveSupport::MessageVerifier.new("secret", serializer: Marshal)
json_verifier = ActiveSupport::MessageVerifier.new("secret", serializer: JSON)
asjson_verifier = ActiveSupport::MessageVerifier.new("secret", serializer: ActiveSupport::JSON)
msgpack_verifier = ActiveSupport::MessageVerifier.new("secret", serializer: ActiveSupport::MessagePack)
ActiveSupport::Messages::Metadata.use_message_serializer_for_metadata = true
expiry = 1.year.from_now
data = { bool: true, num: 123456789, string: "x" * 50 }
Benchmark.ips do |x|
x.report("Marshal") do
marshal_verifier.verify(marshal_verifier.generate(data, expires_at: expiry))
end
x.report("JSON") do
json_verifier.verify(json_verifier.generate(data, expires_at: expiry))
end
x.report("AS::JSON") do
asjson_verifier.verify(asjson_verifier.generate(data, expires_at: expiry))
end
x.report("MessagePack") do
msgpack_verifier.verify(msgpack_verifier.generate(data, expires_at: expiry))
end
x.compare!
end
puts "Marshal size: #{marshal_verifier.generate(data, expires_at: expiry).bytesize}"
puts "JSON size: #{json_verifier.generate(data, expires_at: expiry).bytesize}"
puts "MessagePack size: #{msgpack_verifier.generate(data, expires_at: expiry).bytesize}"
```
```
Warming up --------------------------------------
Marshal 1.206k i/100ms
JSON 1.165k i/100ms
AS::JSON 790.000 i/100ms
MessagePack 1.798k i/100ms
Calculating -------------------------------------
Marshal 11.748k (± 1.3%) i/s - 59.094k in 5.031071s
JSON 11.498k (± 1.4%) i/s - 58.250k in 5.066957s
AS::JSON 7.867k (± 2.4%) i/s - 39.500k in 5.024055s
MessagePack 17.865k (± 0.8%) i/s - 89.900k in 5.032592s
Comparison:
MessagePack: 17864.9 i/s
Marshal: 11747.8 i/s - 1.52x (± 0.00) slower
JSON: 11498.4 i/s - 1.55x (± 0.00) slower
AS::JSON: 7866.9 i/s - 2.27x (± 0.00) slower
Marshal size: 254
JSON size: 234
MessagePack size: 194
```
Additionally, `ActiveSupport::MessagePack::CacheSerializer` is a
serializer that is suitable for use as an `ActiveSupport::Cache` coder.
`AS::MessagePack::CacheSerializer` can serialize `ActiveRecord::Base`
instances, including loaded associations. Like `AS::MessagePack`, it
provides a performance improvement and payload size reduction:
```ruby
# frozen_string_literal: true
require "benchmark/ips"
require "active_support/message_pack"
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
ActiveRecord::Schema.define do
create_table :posts, force: true do |t|
t.string :body
t.timestamps
end
create_table :comments, force: true do |t|
t.integer :post_id
t.string :body
t.timestamps
end
end
class Post < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :post
end
post = Post.create!(body: "x" * 100)
2.times { post.comments.create!(body: "x" * 100) }
post.comments.load
cache_entry = ActiveSupport::Cache::Entry.new(post)
Rails70Coder = ActiveSupport::Cache::Coders::Rails70Coder
CacheSerializer = ActiveSupport::MessagePack::CacheSerializer
Benchmark.ips do |x|
x.report("Rails70Coder") do
Rails70Coder.load(Rails70Coder.dump(cache_entry))
end
x.report("CacheSerializer") do
CacheSerializer.load(CacheSerializer.dump(cache_entry))
end
x.compare!
end
puts "Rails70Coder size: #{Rails70Coder.dump(cache_entry).bytesize}"
puts "CacheSerializer size: #{CacheSerializer.dump(cache_entry).bytesize}"
```
```
Warming up --------------------------------------
Rails70Coder 329.000 i/100ms
CacheSerializer 492.000 i/100ms
Calculating -------------------------------------
Rails70Coder 3.285k (± 1.7%) i/s - 16.450k in 5.008447s
CacheSerializer 4.895k (± 2.4%) i/s - 24.600k in 5.028803s
Comparison:
CacheSerializer: 4894.7 i/s
Rails70Coder: 3285.4 i/s - 1.49x slower
Rails70Coder size: 808
CacheSerializer size: 593
```
Co-authored-by: Jean Boussier <jean.boussier@gmail.com>
2023-03-22 21:37:46 +00:00
|
|
|
gem "msgpack", ">= 1.7.0", require: false
|
2010-07-25 22:31:45 +00:00
|
|
|
|
2020-12-13 07:34:39 +00:00
|
|
|
# for railties
|
2019-04-26 07:25:28 +00:00
|
|
|
gem "bootsnap", ">= 1.4.4", require: false
|
2020-12-13 07:34:39 +00:00
|
|
|
gem "webrick", require: false
|
Always run `rails app:update` in app update tests
Prior to this commit, several tests in `AppGeneratorTest` were testing
app update behavior without actually running `rails app:update`. This
meant the logic in `Rails::AppUpdater#generator_options` that detects
which frameworks and components are installed was not being tested.
Additionally, because `ENV["BUNDLE_GEMFILE"]` is set when tests are run
(by `require "bundler/setup"` in `tools/test.rb`), any tests which did
run `rails app:update` used the Rails repo Gemfile, instead of the
generated app Gemfile. The difference becomes obvious when running
`rails app:update` after generating an app without Sprockets (as in
`test_app_update_does_not_generate_manifest_config_when_propshaft_is_used`),
because `rails app:update` will load the Sprockets railtie (due to
`Bundler.require` using the Rails repo Gemfile), and then exit with a
`Sprockets::Railtie::ManifestNeededError`. However, if
`rails app:update` is run within a `quietly` block, such an error will
be swallowed.
This commit changes all such tests to run `rails app:update` via a
`run_app_update` helper that: (1) overrides the `BUNDLE_GEMFILE`
environment variable to point to the generated app Gemfile, (2) points
the `rails` gem in the generated app Gemfile to the Rails repo
(otherwise the `rails` gem version cannot be resolved), and (3) sets
`exception: true` so that the `system` call will raise an error if
`rails app:update` exits with an error code.
This commit also adds `jbuilder` and `web-console` to the Rails repo
Gemfile to ensure they are already installed when evaluating the
generated app Gemfile.
These changes do add a couple dozen seconds to the test suite run time,
but the thorough test coverage seems worth it.
2022-10-03 22:26:04 +00:00
|
|
|
gem "jbuilder", require: false
|
|
|
|
gem "web-console", require: false
|
2019-02-11 20:44:25 +00:00
|
|
|
|
2023-01-25 02:26:34 +00:00
|
|
|
# Action Pack and railties
|
2023-06-13 04:44:08 +00:00
|
|
|
rack_version = ENV.fetch("RACK", "~> 3.0")
|
2023-07-17 23:15:20 +00:00
|
|
|
if rack_version != "head"
|
|
|
|
gem "rack", rack_version
|
|
|
|
else
|
|
|
|
gem "rack", git: "https://github.com/rack/rack.git", branch: "main"
|
|
|
|
end
|
2023-01-25 02:26:34 +00:00
|
|
|
|
2023-12-31 18:19:16 +00:00
|
|
|
gem "useragent", require: false
|
2023-12-31 12:26:01 +00:00
|
|
|
|
2018-12-24 20:16:22 +00:00
|
|
|
# Active Job
|
2014-08-20 02:21:39 +00:00
|
|
|
group :job do
|
2017-02-10 06:31:41 +00:00
|
|
|
gem "resque", require: false
|
2017-12-13 22:49:08 +00:00
|
|
|
gem "resque-scheduler", require: false
|
2017-10-09 11:49:55 +00:00
|
|
|
gem "sidekiq", require: false
|
2016-08-06 17:23:19 +00:00
|
|
|
gem "sucker_punch", require: false
|
2017-12-29 21:57:28 +00:00
|
|
|
gem "delayed_job", require: false
|
2022-05-18 05:04:19 +00:00
|
|
|
gem "queue_classic", ">= 4.0.0", require: false, platforms: :ruby
|
2016-08-06 17:23:19 +00:00
|
|
|
gem "sneakers", require: false
|
|
|
|
gem "backburner", require: false
|
2017-01-29 00:05:06 +00:00
|
|
|
gem "delayed_job_active_record", require: false
|
2014-08-20 02:21:39 +00:00
|
|
|
end
|
2014-08-12 09:29:21 +00:00
|
|
|
|
2015-12-14 15:38:37 +00:00
|
|
|
# Action Cable
|
|
|
|
group :cable do
|
2022-09-21 19:46:43 +00:00
|
|
|
gem "puma", ">= 5.0.3", require: false
|
2016-01-24 10:43:40 +00:00
|
|
|
|
2022-09-06 20:23:50 +00:00
|
|
|
gem "redis", ">= 4.0.1", require: false
|
2017-09-29 04:54:00 +00:00
|
|
|
|
2021-02-22 09:48:02 +00:00
|
|
|
gem "redis-namespace"
|
2016-01-24 17:25:53 +00:00
|
|
|
|
2016-10-06 01:11:18 +00:00
|
|
|
gem "websocket-client-simple", github: "matthewd/websocket-client-simple", branch: "close-race", require: false
|
2015-12-14 15:38:37 +00:00
|
|
|
end
|
|
|
|
|
2017-10-11 19:31:54 +00:00
|
|
|
# Active Storage
|
2017-07-31 20:53:09 +00:00
|
|
|
group :storage do
|
2017-09-10 03:22:10 +00:00
|
|
|
gem "aws-sdk-s3", require: false
|
2018-05-02 03:20:56 +00:00
|
|
|
gem "google-cloud-storage", "~> 1.11", require: false
|
2021-08-23 19:17:59 +00:00
|
|
|
gem "azure-storage-blob", "~> 2.0", require: false
|
2017-07-31 20:53:09 +00:00
|
|
|
|
2018-04-05 23:48:29 +00:00
|
|
|
gem "image_processing", "~> 1.2"
|
2017-07-31 20:53:09 +00:00
|
|
|
end
|
|
|
|
|
2018-12-24 20:16:22 +00:00
|
|
|
# Action Mailbox
|
|
|
|
gem "aws-sdk-sns", require: false
|
|
|
|
gem "webmock"
|
2024-01-29 12:28:28 +00:00
|
|
|
gem "httpclient", github: "nahi/httpclient", branch: "master", require: false
|
2018-12-24 20:16:22 +00:00
|
|
|
|
2015-10-12 11:48:04 +00:00
|
|
|
# Add your own local bundler stuff.
|
2017-05-15 14:17:28 +00:00
|
|
|
local_gemfile = File.expand_path(".Gemfile", __dir__)
|
2023-01-21 01:30:47 +00:00
|
|
|
instance_eval File.read local_gemfile if File.exist? local_gemfile
|
2010-11-05 21:11:58 +00:00
|
|
|
|
2013-03-11 18:48:30 +00:00
|
|
|
group :test do
|
2024-01-08 18:42:06 +00:00
|
|
|
gem "minitest-bisect", require: false
|
2021-08-26 08:39:36 +00:00
|
|
|
gem "minitest-ci", require: false
|
2018-10-10 22:33:09 +00:00
|
|
|
gem "minitest-retry"
|
2014-05-16 16:18:21 +00:00
|
|
|
|
2015-04-01 20:09:58 +00:00
|
|
|
platforms :mri do
|
2016-08-06 17:23:19 +00:00
|
|
|
gem "stackprof"
|
2021-09-20 13:18:30 +00:00
|
|
|
gem "debug", ">= 1.1.0", require: false
|
2014-11-17 14:39:32 +00:00
|
|
|
end
|
|
|
|
|
2024-01-01 18:00:10 +00:00
|
|
|
# Needed for Railties tests because it is included in generated apps.
|
|
|
|
gem "brakeman"
|
2011-07-22 12:55:48 +00:00
|
|
|
end
|
|
|
|
|
2022-09-12 17:44:47 +00:00
|
|
|
platforms :ruby, :windows do
|
2021-01-05 12:52:07 +00:00
|
|
|
gem "nokogiri", ">= 1.8.1", "!= 1.11.0"
|
2011-05-05 17:47:07 +00:00
|
|
|
|
2015-10-12 11:48:04 +00:00
|
|
|
# Needed for compiling the ActionDispatch::Journey parser.
|
2016-08-06 17:23:19 +00:00
|
|
|
gem "racc", ">=1.4.6", require: false
|
2013-02-26 05:10:03 +00:00
|
|
|
|
2015-10-12 11:48:04 +00:00
|
|
|
# Active Record.
|
2023-09-12 18:13:21 +00:00
|
|
|
gem "sqlite3", "~> 1.6", ">= 1.6.6"
|
2010-05-19 20:38:27 +00:00
|
|
|
|
|
|
|
group :db do
|
2022-01-25 11:31:36 +00:00
|
|
|
gem "pg", "~> 1.3"
|
2022-05-04 11:00:35 +00:00
|
|
|
gem "mysql2", "~> 0.5"
|
2023-11-28 17:15:33 +00:00
|
|
|
gem "trilogy", ">= 2.7.0"
|
2010-05-19 20:38:27 +00:00
|
|
|
end
|
2010-07-25 22:31:45 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
platforms :jruby do
|
2016-08-06 17:23:19 +00:00
|
|
|
if ENV["AR_JDBC"]
|
2016-09-14 00:19:09 +00:00
|
|
|
gem "activerecord-jdbcsqlite3-adapter", github: "jruby/activerecord-jdbc-adapter", branch: "master"
|
2013-09-03 06:33:00 +00:00
|
|
|
group :db do
|
2016-09-14 00:19:09 +00:00
|
|
|
gem "activerecord-jdbcmysql-adapter", github: "jruby/activerecord-jdbc-adapter", branch: "master"
|
|
|
|
gem "activerecord-jdbcpostgresql-adapter", github: "jruby/activerecord-jdbc-adapter", branch: "master"
|
2013-09-03 06:33:00 +00:00
|
|
|
end
|
|
|
|
else
|
2016-08-06 17:23:19 +00:00
|
|
|
gem "activerecord-jdbcsqlite3-adapter", ">= 1.3.0"
|
2013-09-03 06:33:00 +00:00
|
|
|
group :db do
|
2016-08-06 17:23:19 +00:00
|
|
|
gem "activerecord-jdbcmysql-adapter", ">= 1.3.0"
|
|
|
|
gem "activerecord-jdbcpostgresql-adapter", ">= 1.3.0"
|
2013-09-03 06:33:00 +00:00
|
|
|
end
|
2013-08-20 18:31:43 +00:00
|
|
|
end
|
2010-01-01 02:49:27 +00:00
|
|
|
end
|
2010-08-16 20:58:17 +00:00
|
|
|
|
2015-10-12 11:48:04 +00:00
|
|
|
# Gems that are necessary for Active Record tests with Oracle.
|
2016-08-06 17:23:19 +00:00
|
|
|
if ENV["ORACLE_ENHANCED"]
|
2010-08-16 20:58:17 +00:00
|
|
|
platforms :ruby do
|
2016-08-06 17:23:19 +00:00
|
|
|
gem "ruby-oci8", "~> 2.2"
|
2010-08-16 20:58:17 +00:00
|
|
|
end
|
2016-09-14 00:19:09 +00:00
|
|
|
gem "activerecord-oracle_enhanced-adapter", github: "rsim/oracle-enhanced", branch: "master"
|
2010-08-16 20:58:17 +00:00
|
|
|
end
|
2011-10-03 02:51:01 +00:00
|
|
|
|
2022-09-12 17:44:47 +00:00
|
|
|
gem "tzinfo-data", platforms: [:windows, :jruby]
|
|
|
|
gem "wdm", ">= 0.1.0", platforms: [:windows]
|
2022-08-10 09:16:25 +00:00
|
|
|
|
|
|
|
# The error_highlight gem only works on CRuby 3.1 or later.
|
|
|
|
# Also, Rails depends on a new API available since error_highlight 0.4.0.
|
|
|
|
# (Note that Ruby 3.1 bundles error_highlight 0.3.0.)
|
2024-01-03 17:43:25 +00:00
|
|
|
if RUBY_VERSION < "3.2"
|
2022-11-14 06:56:34 +00:00
|
|
|
gem "error_highlight", ">= 0.4.0", platforms: [:ruby]
|
2022-08-10 09:16:25 +00:00
|
|
|
end
|