rails gしたら`method_missing': undefined method `load_defaults' ってエラー出た
Gemfile
source 'https://rubygems.org' gem 'rails', '5.0.3' gem 'puma', '3.9.1' gem 'bootstrap-sass', '3.3.6' gem 'sass-rails', '5.0.6' gem 'uglifier', '3.2.0' gem 'coffee-rails', '4.2.2' gem 'jquery-rails', '4.3.1' gem 'turbolinks', '5.0.1' gem 'jbuilder', '2.6.1' gem 'therubyracer' group :development, :test do gem 'sqlite3', '1.3.13' gem 'byebug', '9.0.6', platform: :mri end group :development do gem 'web-console', '3.5.1' gem 'listen', '3.0.8' end group :test do gem 'rails-controller-testing', '1.0.2' gem 'minitest-reporters', '1.1.14' end group :production do gem 'pg', '0.18.4' end
CentOS環境にはRails 5.1〜, GemfileにはRails 5.0〜を指定してbundle update, bundle installした。
その結果rails gした際に以下のエラー発生。
# webyaji=筆者の開発アプリ [vagrant@localhost webyaji]$ rails g model test /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.3/lib/rails/railtie/configuration.rb:95:in `method_missing': undefined method `load_defaults' for #<Rails::Application::Configuration:0x007fa562795108> (NoMethodError) from /home/vagrant/app/webyaji/config/application.rb:12:in `<class:Application>' from /home/vagrant/app/webyaji/config/application.rb:10:in `<module:Webyaji>' from /home/vagrant/app/webyaji/config/application.rb:9:in `<top (required)>' from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.3/lib/rails/commands/commands_tasks.rb:156:in `require' from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.3/lib/rails/commands/commands_tasks.rb:156:in `require_application_and_environment!' from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.3/lib/rails/commands/commands_tasks.rb:143:in `generate_or_destroy' from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.3/lib/rails/commands/commands_tasks.rb:60:in `generate' from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.3/lib/rails/commands/commands_tasks.rb:49:in `run_command!' from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.3/lib/rails/commands.rb:18:in `<top (required)>' from bin/rails:9:in `require' from bin/rails:9:in `<main>'
たぶんload_defaultsとかいうメソッドしらねーよって怒られてる。
一時間ほどハマったが調べていくとload_defaultsがRails5.1系から使えるようになったメソッドと判明。
# config/application.rb require_relative 'boot' require 'rails/all' # Require the gems listed in Gemfile, including any gems # you've limited to :test, :development, or :production. Bundler.require(*Rails.groups) module Webyaji class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. - config.load_defaults 5.1 + # config.load_defaults 5.1 # Settings in config/environments/* take precedence over those specified here. # Application configuration should go into files in config/initializers # -- all .rb files in that directory are automatically loaded. end end
コメントアウト後、再度rails gして大丈夫になったことを確認。
[vagrant@localhost webyaji]$ rails g model test Expected string default value for '--jbuilder'; got true (boolean) invoke active_record create db/migrate/20170725131230_create_tests.rb create app/models/test.rb invoke test_unit create test/models/test_test.rb create test/fixtures/tests.yml