rails c での missing keyword: :encoding (ArgumentError)
はじめに
Ruby on Rails チュートリアルを進めていたところ rails c
の実行で missing keyword: :encoding (ArgumentError)
が発生し、詰まってしまいました。
エラーを調べてみても情報がなく、解決に時間がかかってしまったため、記事を書きます。
発生したエラー
rails c
を実行したところ、以下のエラーが発生しました。
$ rails c
Loading development environment (Rails 7.0.4.3)
/Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/debug-1.7.1/lib/debug/console.rb:25:in `reset': missing keyword: :encoding (ArgumentError)
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/reline-0.5.11/lib/reline.rb:311:in `inner_readline'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/reline-0.5.11/lib/reline.rb:258:in `block (2 levels) in readmultiline'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/reline-0.5.11/lib/reline/io/ansi.rb:149:in `block in with_raw_input'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/reline-0.5.11/lib/reline/io/ansi.rb:149:in `raw'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/reline-0.5.11/lib/reline/io/ansi.rb:149:in `with_raw_input'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/reline-0.5.11/lib/reline.rb:257:in `block in readmultiline'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/reline-0.5.11/lib/reline.rb:252:in `synchronize'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/reline-0.5.11/lib/reline.rb:252:in `readmultiline'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/3.2.0/forwardable.rb:240:in `readmultiline'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/irb-1.10.0/lib/irb/input-method.rb:452:in `gets'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/irb-1.10.0/lib/irb.rb:540:in `block in read_input'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/irb-1.10.0/lib/irb.rb:828:in `signal_status'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/irb-1.10.0/lib/irb.rb:538:in `read_input'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/irb-1.10.0/lib/irb.rb:560:in `readmultiline'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/irb-1.10.0/lib/irb.rb:587:in `block in each_top_level_statement'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/irb-1.10.0/lib/irb.rb:586:in `loop'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/irb-1.10.0/lib/irb.rb:586:in `each_top_level_statement'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/irb-1.10.0/lib/irb.rb:508:in `eval_input'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/irb-1.10.0/lib/irb.rb:495:in `block in run'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/irb-1.10.0/lib/irb.rb:494:in `catch'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/irb-1.10.0/lib/irb.rb:494:in `run'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/irb-1.10.0/lib/irb.rb:396:in `start'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/commands/console/console_command.rb:70:in `start'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/commands/console/console_command.rb:19:in `start'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/commands/console/console_command.rb:102:in `perform'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/thor-1.3.2/lib/thor/command.rb:28:in `run'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/thor-1.3.2/lib/thor/invocation.rb:127:in `invoke_command'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/thor-1.3.2/lib/thor.rb:538:in `dispatch'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/command/base.rb:87:in `perform'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/command.rb:48:in `invoke'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/commands.rb:18:in `<main>'
from <internal:/Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:38:in `require'
from <internal:/Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:38:in `require'
from /Users/hoge/.asdf/installs/ruby/3.2.5/lib/ruby/gems/3.2.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
from bin/rails:4:in `<main>'
エラー解決方法
先に結論から言うと、debug パッケージのバージョンを上げたところ、エラーを解決することができました。
エラーは、debugパッケージのresetメソッドでencoding引数が渡されていないことが原因で発生していました。
パッケージ内のエラーが原因だったため、バージョンを上げてみたところ、エラーを解消することができました。
debugパッケージのバージョンを上げる
以下のコマンドを実行し、debug パッケージのバージョンを上げます。
gem list debug // debugのパッケージバージョンを確認
gem uninstall debug // debugをアンインストール
gem install debug // debugをインストール
Gemfile で debug パッケージのバージョンが指定されていたため、合わせて修正しました。
そして、bundle install
を実行したところ、無事に指定したバージョンで debug パッケージをインストールすることができ、rails c
が実行できるようになりました。
おわりに
今回、rails c
で発生したエラーについて書きました。
Ruby on Rails チュートリアルの手順通りに進めていたことと、パッケージ内のエラーということもあり、調べても解決法がヒットせずに時間がかかってしまいました。
また、rails での開発に慣れていないこともあり、debug パッケージ内のエラーということにすぐに気づくことができませんでした。
以降、同様のエラーが発生したときに、今回の経験を活かしていきたいと思います。
この記事が、同様のエラーが発生している方の参考になれば幸いです。
ここまで、ご覧いただきありがとうございました。