Rails エラー:(Object doesn’t support #inspect)

プログラミング

独習Rails」の7.3タイプオブジェクト学習中に発生したエラー。
コンソール上での (Object doesn’t support #inspect) というメッセージが表示されました。

エラー発生状況、エラー原因、対策を備忘録としてまとめます。

エラー発生状況

#コンソール入力
irb(main):001:0> Weather.new(today_temp: '100F')

#エラーメッセージ
(Object doesn't support #inspect)

原因

ザ・誤字

class TemperatureType < ActiveRecord::Type::Integer

  def cast(temperature)
    temp = temperature.split('F')
    if !/\D/.match?(temp[0]) && temp.length < 2
      degee = temp[0].to_f
      super(degree = (degree - 32) / 1.8)
    else
      super
    end
  end
end
もふぃ
もふぃ

6行目。

degreeがdegeeになっとるやないかい!!

しかし、誤字修正後も…

誤字を修正して、いざエラー解決と思いきや…

(Object doesn't support #inspect)

はてさて、同じエラーがでるぞい…

原因その2

#コンソール起動
$ rails c

#脱コンソール
irb(main):001:0> exit

$

この一連の流れですが、脱コンソールしたときに、Springが停止していると思っていました。

しかし、実際には停止しておらず、裏で起動しっぱなしです。

そのため、最新のオブジェクトが更新されなかったというワケです。

[参考資料]Springについての参考資料はこちら

Rails/Spring サポート — RubyMine
Springは、アプリケーションをバックグラウンドで実行し続けることで開発をスピードアップする Rails アプリケーションプリローダーです。これは、変更を加えるときにサーバーを再起動する必要がないことを意味します。RubyMine では、Spring を使用してRails ジェネレーター、テスト、およびRakeタスク...
現場で使えるか見極めたいRails 4.1の新機能8選
エンタープライズ領域での採用も増えてきたRuby on Railsを使ってWebアプリケーションを作るための入門連載。今回は、息抜きとして4.1の新機能を紹介。モデルで列挙型を簡単に扱えるEnumや新プリローダーSpringなど便利機能に加え、秘密鍵、署名付きトークン、CSRFプロテクションなどセキュリティ対策機能も紹...

対策 Spring再起動

そのため、Springを再起動したら、エラー表示がなくなりました。

Spring再起動の方法はこちら

$ spring status
Spring is running:

$ spring stop
Spring stopped.

$ rails c
もう一回コンソールで再起動だぜ〜〜〜

まとめ

以上、独習Railsで引っかかったエラーでした。

よくよく最後の章まで読んだら、注意事項として書いてありました(笑)

何日も悩んでたのに!!

コメント