👌
[Rails]モデル作成時のエラー[Rails::Application is abstract,~中略~ (RuntimeError)]
今回発生したエラー
モデル作成時に下記エラーが発生しました。
$ rails generate model Event title:string start:datetime end:datetime
/home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-6.1.7.10/lib/rails/railtie.rb:229:in `initialize': Rails::Application is abstract, you cannot instantiate it directly. (RuntimeError)
from /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-6.1.7.10/lib/rails/engine.rb:441:in `initialize'
from /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-6.1.7.10/lib/rails/application.rb:129:in `initialize'
from /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-6.1.7.10/lib/rails/railtie.rb:184:in `new'
from /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-6.1.7.10/lib/rails/railtie.rb:184:in `instance'
from /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-6.1.7.10/lib/rails/application.rb:100:in `instance'
from /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-6.1.7.10/lib/rails/railtie.rb:206:in `method_missing'
from /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/spring-4.3.0/lib/spring/application.rb:128:in `block in preload'
from /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/spring-4.3.0/lib/spring/application.rb:127:in `each'
from /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/spring-4.3.0/lib/spring/application.rb:127:in `preload'
from /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/spring-4.3.0/lib/spring/application.rb:176:in `serve'
from /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/spring-4.3.0/lib/spring/application.rb:158:in `block in run'
from /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/spring-4.3.0/lib/spring/application.rb:152:in `loop'
from /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/spring-4.3.0/lib/spring/application.rb:152:in `run'
from /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/spring-4.3.0/lib/spring/application/boot.rb:25:in `<top (required)>'
from <internal:/home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
from <internal:/home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
from -e:1:in `<main>'
バージョンは下記の通り。
$ rails -v
Rails 6.1.7.10
$ ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
ここ数日、同様のエラー発生しているようです。
解決策
Gemfileに下記を追加し、springのバージョンを最新から4.2.1に変更しました。
gem 'spring', '4.2.1' #バージョンを追加
bundle install
をします。下記の通り、4.3.0から4.2.1に変更されました。
$ bundle install
Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies...
Using spring 4.2.1 (was 4.3.0)
Bundle complete! 17 Gemfile dependencies, 83 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
これで再度モデルを作成すると問題なく作成できました。
Springとは
上記より引用。
SpringはRailsアプリケーション用のプリローダーです。アプリケーションをバックグラウンドで常駐させることで開発速度を向上させ、テストやrakeタスク、マイグレーションを実行するたびにRailsを起動しないで済むようにします。
参考文献
Discussion