Rails 5.2.0 is out with bootsnap

Hey, Rails 5.2 was released yesterday and it includes Bootsnap which aims to speed up Rails boot up to 50% on larger projects. That’s exciting, but I tried to use Bootsnap with Foreman and it does not work. I was unable to figure it out:

There were some recent changes few days ago (1.3.0.beta2) and devs referenced my issue with possibility fixing it, I will retest later this week:


1 Like

I played with it a bit today and it looks like I was able to track it down to:

After some more debugging I found that it’s actually the way we load routes - we have routes split across several files and we configure load path:

Dir["#{Rails.root}/config/routes/**/*.rb"].each do |route_file|
  config.paths['config/routes.rb'] << route_file

The code is here:

No clue why this is a problem with Bootsnap enabled tho. Anyone?

You can find a first try here. There are still problems with sqlite3 but on mysql and postrges only one issue remains.

I’d appreciate if anybody could have a look into the changes I made and comment in that PR if anything of that could/should go into develop. The CR keypair issue also would need to get solved. It would be nice if the new deprecations related to “Dangerous query method” could also get fixed soon.

Other than that, develop should first get updated to 5.1.6 so the DB adapters can get updated after that.

Plugin authors could/should use that PR to check the test runs of plugins right now, almost all changes needed are compatible with Rails 5.1 (expect AR migrator related chages).

When all remaining problems got fixed, we’d need to decide if we want to have a phase of parallel support for Rails 5.1 and 5.2, or rather switching to 5.2 at once will be done. According to that I’d modify the AR migrator change.

One problem I’m seeing currently is that foreman_docker feels almost abandoned as e.g. a PR helping with Rails 5.2 is not getting any attention, but Katello still has a hard dependency onto foreman_docker, blocking test runs with Rails 5.2 on the CI currently.

1 Like