Rails tutorial で発生したエラーについて
—version
Ruby => 2.7.1
Rails => 5.2.4.3
・発生タイミング
→ rails console内でuser1 = User.find_by(id: 2)の様にして指定したデータを取得しようとした時
・発生したエラーメッセージ
→ 1、rb_check_safe_obj will be removed in Ruby 3.0
(「rb_check_safe_obj」というものがRuby 3.0では削除されてしまう)
2、Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
(キーワード変数を引数に使う時に「**」を付け加えて表記しなければならない)
3、The called method `initialize' is defined here (initializeというメソッドはここで定義されている)
・ググった結果
2、はキーワード引数にハッシュを使う際にハッシュオブジェクトの頭に「**」をつけることで解決する
user = User.find_by( **{id: 3} )を試してみた結果
↓
Running via Spring preloader in process 12726
Loading development environment (Rails 5.2.4.3)
/home/ec2-user/.rvm/gems/ruby-2.7.1/gems/activerecord-5.2.4.3/lib/active_record/connection_adapters/sqlite3_adapter.rb:32: warning: rb_check_safe_obj will be removed in Ruby 3.0
/home/ec2-user/.rvm/gems/ruby-2.7.1/gems/activemodel-5.2.4.3/lib/active_model/type/integer.rb:13: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
/home/ec2-user/.rvm/gems/ruby-2.7.1/gems/activemodel-5.2.4.3/lib/active_model/type/value.rb:8: warning: The called method `initialize' is defined here
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 3], ["LIMIT", 1]]
1、はググった結果英語ベースのリソースを見つけ、「export RUBYOPT='-W:no-deprecated -W:no-experimental’」の実行と「echo $RUBYOPT」の実行が必要とあったの試したが結果は変わりませんでした。
echo $RUBYOPTの結果は「-W:no-deprecated -W:no-experimental」という文字列でした。
3、のエラーメッセージに関するソースは見つけられませんでした。
・自分なりに考えたこと
→ Rubyのバージョンを落とす?
解決のためにどういったことをやればいいいのか全くわからないという状態に陥ってしまいました。
どなたかお力を貸していただけると幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/24 03:49