Skip to content

Ensure the initializer is called before the application's initializers#176

Merged
k0kubun merged 2 commits into
k0kubun:masterfrom
sunny:patch-1
Jan 24, 2021
Merged

Ensure the initializer is called before the application's initializers#176
k0kubun merged 2 commits into
k0kubun:masterfrom
sunny:patch-1

Conversation

@sunny

@sunny sunny commented Jan 22, 2021

Copy link
Copy Markdown
Contributor

In order not to have to require 'hamlit/rails_template', make sure it is called beforehand.

Minor documentation fix that I needed to use RailsTemplate in an initializer. (hamlit 2.14.2, hamlit-rails 0.2.3, rails 6.0, Ruby 2.5.7.)

@k0kubun

k0kubun commented Jan 22, 2021

Copy link
Copy Markdown
Owner

Oh, interesting. Do you think Rails initializers registered by gems like

require 'hamlit/rails_template'
are executed after application-provided initializers? (I'm just not sure)

@sunny

sunny commented Jan 22, 2021

Copy link
Copy Markdown
Contributor Author

I’m not sure how the order is determined, but in my case adding puts __FILE__ inside initializer :hamlit do |app| (in Hamlit's railtie) as well as inside my initializer, I get the following:

$ bin/rails runner 'puts "Done"'
/Users/sunny/code/cults/config/initializers/hamlit.rb
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/hamlit-2.14.2/lib/hamlit/railtie.rb
Running via Spring preloader in process 77342
Done

@k0kubun

k0kubun commented Jan 23, 2021

Copy link
Copy Markdown
Owner

Hmm, I've just rails new-ed and got a different result

$ bin/rails -v
Rails 6.0.3.4

$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]

$ bin/rails runner 'puts "Done"'
/home/k0kubun/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/hamlit-2.14.2/lib/hamlit/railtie.rb
/home/k0kubun/tmp/railsapp/config/initializers/hamlit.rb
Done

@k0kubun

k0kubun commented Jan 23, 2021

Copy link
Copy Markdown
Owner

Could you put this code in each your file file?

puts "[#{__FILE__}]"
puts caller
puts

Also I'd like to check if you have Bundler.require(*Rails.groups) in config/application.rb, require_relative 'application' in config/environment.rb, and Rails.application.initialize! next to it in config/environment.rb.

Please confirm whether Hamlit::Railtie is defined in your config/initializers/hamlit.rb or not too.

@sunny

sunny commented Jan 23, 2021

Copy link
Copy Markdown
Contributor Author

Could you put this code in each your file file?

I've added it twice to hamlit's `railtie.rb` (railtie root and railtie initializer)
# frozen_string_literal: true
require 'rails'

puts "(railtie root)"
puts "[#{__FILE__}]"
puts caller
puts

module Hamlit
  class Railtie < ::Rails::Railtie
    initializer :hamlit do |app|
      puts "(railtie initializer)"
      puts "[#{__FILE__}]"
      puts caller
      puts

      require 'hamlit/rails_template'
    end
  end
end
and to my app's initializer
# frozen_string_literal: true

puts "(app initializer)"
puts "[#{__FILE__}]"
puts caller
puts
p Hamlit::Railtie
puts

require "hamlit/rails_template"

Hamlit::RailsTemplate.set_options attr_quote: '"'
and it calls in order : 1. railtie root, 2. app initializer, 3. railtie initializer
$ spring stop
Spring stopped.
$ bin/rails runner 'puts "Done"'
(railtie root)
[/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/hamlit-2.14.2/lib/hamlit/railtie.rb]
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:324:in `block in require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:291:in `load_dependency'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:324:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/hamlit-2.14.2/lib/hamlit.rb:10:in `<top (required)>'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:324:in `block in require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:291:in `load_dependency'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:324:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/hamlit-rails-0.2.3/lib/hamlit-rails.rb:3:in `<top (required)>'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/site_ruby/2.5.0/bundler/runtime.rb:66:in `block (2 levels) in require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/site_ruby/2.5.0/bundler/runtime.rb:61:in `each'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/site_ruby/2.5.0/bundler/runtime.rb:61:in `block in require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/site_ruby/2.5.0/bundler/runtime.rb:50:in `each'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/site_ruby/2.5.0/bundler/runtime.rb:50:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/site_ruby/2.5.0/bundler.rb:173:in `require'
/Users/sunny/code/cults/config/application.rb:11:in `<top (required)>'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application.rb:92:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application.rb:92:in `preload'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application.rb:157:in `serve'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application.rb:145:in `block in run'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application.rb:139:in `loop'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application.rb:139:in `run'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application/boot.rb:19:in `<top (required)>'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:85:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:85:in `require'
-e:1:in `<main>'

(app initializer)
[/Users/sunny/code/cults/config/initializers/hamlit.rb]
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:55:in `load'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:55:in `load'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:318:in `block in load'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:291:in `load_dependency'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:318:in `load'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/engine.rb:666:in `block in load_config_initializer'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activesupport-6.0.3.4/lib/active_support/notifications.rb:182:in `instrument'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/engine.rb:665:in `load_config_initializer'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/engine.rb:625:in `block (2 levels) in <class:Engine>'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/engine.rb:624:in `each'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/engine.rb:624:in `block in <class:Engine>'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/initializable.rb:32:in `instance_exec'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/initializable.rb:32:in `run'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/initializable.rb:61:in `block in run_initializers'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:228:in `block in tsort_each'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:431:in `each_strongly_connected_component_from'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/initializable.rb:50:in `each'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/initializable.rb:50:in `tsort_each_child'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:415:in `call'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:415:in `each_strongly_connected_component_from'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:349:in `block in each_strongly_connected_component'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:347:in `each'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:347:in `call'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:347:in `each_strongly_connected_component'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:226:in `tsort_each'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:205:in `tsort_each'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/initializable.rb:60:in `run_initializers'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/application.rb:363:in `initialize!'
/Users/sunny/code/cults/config/environment.rb:7:in `<top (required)>'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/zeitwerk-2.4.2/lib/zeitwerk/kernel.rb:34:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:324:in `block in require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:291:in `load_dependency'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:324:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application.rb:106:in `preload'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application.rb:157:in `serve'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application.rb:145:in `block in run'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application.rb:139:in `loop'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application.rb:139:in `run'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application/boot.rb:19:in `<top (required)>'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:85:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:85:in `require'
-e:1:in `<main>'

Hamlit::Railtie

(railtie initializer)
[/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/hamlit-2.14.2/lib/hamlit/railtie.rb]
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/initializable.rb:32:in `instance_exec'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/initializable.rb:32:in `run'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/initializable.rb:61:in `block in run_initializers'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:228:in `block in tsort_each'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:431:in `each_strongly_connected_component_from'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:349:in `block in each_strongly_connected_component'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:347:in `each'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:347:in `call'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:347:in `each_strongly_connected_component'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:226:in `tsort_each'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/2.5.0/tsort.rb:205:in `tsort_each'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/initializable.rb:60:in `run_initializers'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/railties-6.0.3.4/lib/rails/application.rb:363:in `initialize!'
/Users/sunny/code/cults/config/environment.rb:7:in `<top (required)>'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/zeitwerk-2.4.2/lib/zeitwerk/kernel.rb:34:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:324:in `block in require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:291:in `load_dependency'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:324:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application.rb:106:in `preload'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application.rb:157:in `serve'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application.rb:145:in `block in run'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application.rb:139:in `loop'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application.rb:139:in `run'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/spring-2.1.1/lib/spring/application/boot.rb:19:in `<top (required)>'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:85:in `require'
/Users/sunny/.rbenv/versions/2.5.7/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:85:in `require'
-e:1:in `<main>'

Running via Spring preloader in process 80525
Done

Also I'd like to check if you have Bundler.require(*Rails.groups) in config/application.rb

✅ It's there.
# frozen_string_literal: true

require_relative "boot"

require "rails/all"

ActiveSupport::Deprecation.debug = ENV["DEBUG"] == "true"

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

# …

require_relative 'application' in config/environment.rb and Rails.application.initialize! next to it in config/environment.rb.

✅ Both there
# frozen_string_literal: true

# Load the Rails application.
require_relative "application"

# Initialize the Rails application.
Rails.application.initialize!

Please confirm whether Hamlit::Railtie is defined in your config/initializers/hamlit.rb or not too.

✅ Yep, it is defined there.

@sunny

sunny commented Jan 23, 2021

Copy link
Copy Markdown
Contributor Author

Oh, I think this brings us to a lead. The previous gem in my Gemfile is reform-rails and its railtie is defined as being after: :load_config_initializers. Perhaps therefore that is why hamlit is moved to after the config initializers as well, since it simply follows having no before or after.

@sunny sunny changed the title Add require in RailsTemplate example Ensure the initializer is called before the application's initializers Jan 23, 2021
@sunny

sunny commented Jan 23, 2021

Copy link
Copy Markdown
Contributor Author

Instead of a documentation change this is now a better fix and I learned a thing or two about initializers in Rails 🎉

@k0kubun

k0kubun commented Jan 24, 2021

Copy link
Copy Markdown
Owner

Oh, I think this brings us to a lead. The previous gem in my Gemfile is reform-rails and its railtie is defined as being after: :load_config_initializers. Perhaps therefore that is why hamlit is moved to after the config initializers as well, since it simply follows having no before or after.

Interesting! https://github.com/rails/rails/blob/v6.0.0/railties/lib/rails/initializable.rb#L90

Your patch makes sense. Thank you!

@k0kubun k0kubun merged commit 65f524b into k0kubun:master Jan 24, 2021
@sunny sunny deleted the patch-1 branch January 25, 2021 00:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants