Remove Bullet from Gemfile
We've been ignoring what the Bullet gem reports for at least 6 years (maybe more), but we were still updating the gem and maintaining the code in `config/environments/` (which caused conflicts every time we run `rails app:update` to upgrade to a new Rails version). Maintaining it isn't a huge effort, but it's infinitely bigger than the benefits we get from it, which are zero. Adding `includes` everywhere we query for records would be a huge maintenance effort and would make the code less readable, so I don't think it's worth it. We might do it occasionally if we detect a performance bottleneck. We could also use a gem to automatically avoid the N+1 queries problem, like Goldiloader [1], ArLazyPreload [2] or JitPreload [3]. Benchmarks show that the performance improvements obtained by using these gems is about less than 10% (it depends a lot on the page being loaded, though), which IMHO doesn't justify adding yet another gem that patches ActiveRecord and that could be incompatible with other gems doing so. There are a couple of open pull requests (at the time of writing, they've been open for about two years) in the Rails repository [4][5] to automatically avoid N+1 queries as well. For now, we'll hope something similar is integrated in Rails itself in the future. [1] https://github.com/salsify/goldiloader [2] https://github.com/DmitryTsepelev/ar_lazy_preload [3] https://github.com/clio/jit_preloader/ [4] Pull request 45231 in https://github.com/rails/rails/ [5] Pull request 45413 in https://github.com/rails/rails/
This commit is contained in:
@@ -79,15 +79,6 @@ Rails.application.configure do
|
||||
logger.formatter = config.log_formatter
|
||||
config.logger = ActiveSupport::TaggedLogging.new(logger)
|
||||
|
||||
config.after_initialize do
|
||||
Bullet.enable = true
|
||||
Bullet.bullet_logger = true
|
||||
if ENV["BULLET"]
|
||||
Bullet.rails_logger = true
|
||||
Bullet.add_footer = true
|
||||
end
|
||||
end
|
||||
|
||||
# Uncomment if you wish to allow Action Cable access from any origin.
|
||||
# config.action_cable.disable_request_forgery_protection = true
|
||||
end
|
||||
|
||||
@@ -72,14 +72,6 @@ Rails.application.configure do
|
||||
logger.formatter = config.log_formatter
|
||||
config.logger = ActiveSupport::TaggedLogging.new(logger)
|
||||
|
||||
config.after_initialize do
|
||||
Bullet.enable = true
|
||||
Bullet.bullet_logger = true
|
||||
if ENV["BULLET"]
|
||||
Bullet.raise = true # raise an error if n+1 query occurs
|
||||
end
|
||||
end
|
||||
|
||||
# Allow managing different tenants using the same application
|
||||
config.multitenancy = true
|
||||
|
||||
|
||||
Reference in New Issue
Block a user