-
-
Save scpike/680ceb29a9bdff4eafb123986782c5c1 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby | |
# Run like `ruby incompat_71.rb ~/path/to/Gemfile.lock` | |
# From the team at infield.ai | |
# | |
PACKAGES = [['activerecord-import', '1.5.0'], | |
['anycable-rails', '1.4.1'], | |
['blazer', '3.0.1'], | |
['bullet', '7.1.2'], | |
['data_migrate', '9.2.0'], | |
['database_cleaner-active_record', '2.1.0'], | |
['devise', '4.9.3'], | |
['formtastic', '5.0.0'], | |
['grape', '2.0.0'], | |
['has_scope', '0.8.2'], | |
['honeybadger', '5.1.0'], | |
['lockbox', '1.3.1'], | |
['paper_trail', '15.1.0'], | |
['public_activity', '3.0.0'], | |
['ransack', '4.1.0'], | |
['responders', '3.1.1'], | |
['rollbar', '3.4.1'], | |
['rspec-rails', '6.1.0'], | |
['rubocop-rails', '2.22.2'], | |
['shoulda-matchers', '6.0.0'], | |
['sidekiq', '7.1.5'], | |
['simple_form', '5.3.0'], | |
['slim', '5.2.0'], | |
['web-console', '4.2.1']].map { |(name, ver)| [name, Gem::Version.new(ver)] }.to_h | |
require 'bundler' | |
Bundler::LockfileParser.new(ARGF.read).specs.each do |spec| | |
name = spec.name | |
next unless required_version = PACKAGES[name] | |
if required_version > spec.version | |
puts "#{name}: Using #{spec.version}. Upgrade to #{required_version}" | |
end | |
end |
@djfpaagman thanks! We've actually made this into a real project at https://github.com/infieldai/gemcompat/blob/main/data/rails/7_1.yaml. I think in order to handle this case we'd need to be able to model the [action cable <-> redis] requirement. If I just add it to our DB for rails then there will be false positives for people not using action cable.
Yeah that's a bit of bummer with these run time dependencies.
I realized that the redis cache store also requires 4+:
https://github.com/rails/rails/blob/0d30e84878223df68efda3b0e1741611d9682a45/activesupport/lib/active_support/cache/redis_cache_store.rb#L4
So maybe it is safe to say if you use redis to have at least version 4? I don't think it's a breaking change from 3.x and has been released in 2017: https://redis.io/blog/redis-4-0-0-released/.
If you use Action Cable: make sure to also upgrade Redis to >= 4.
This is run time dependency, which got bumped here: rails/rails@7559957
I missed the exceptions in my logs, as pages will just load, and didn't notice the action cable connection was not working.