> rvm list
rvm rubies
=* ruby-1.9.2-p290 [ i686 ]
ruby-1.9.3-p194 [ i686 ]
> rails -v
Rails 3.1.1
関連するが答えなかった: Is there a Rails Console command (Rails 3+) to reload changed code?
Rails コンソールを使用して、モデル内のメソッドが呼び出されない理由を突き止めようとしています。モデルは ./app/models/product.rb にあります。self.trim_history
メソッドを asと呼ばれるものから に変更していtrim_history
ます。self.do_stuff
メソッドを asまたは justとして呼び出すタイミングについては、まだ頭を悩ませていdo_stuff
ます。
これを理解する過程で、私は問題に遭遇しましたreload!
。私の理解では、reload!
すべてのモデルとコントローラーが再度読み込まれますが、機能していないようです。コードをデバッグすると、変更した行がデバッガーにdo_stuff
表示されたままになります。self.do_stuff
これを解決しようとしましたがreload!
、修正はありません。リロード後にデータベースからオブジェクトをリロードしましたが、修正されません。でモデルを直接load './app/models/product.rb'
ロードしてから、データベースからオブジェクトをロードしましたが、修正はありません。オブジェクトが で変更されていることを確認しましたtail
。
Railsコンソールでモデルをリロードする最良の方法は何ですか? モデル コードが変更されるたびに、コンソールを再起動する必要がありますか? コンソールをリロードせずに既存のモデルとそのコードをすべてダンプする方法はありますか?
編集:これは見知らぬ人になりました。コードがリロードされていると思われますが、デバッガーは新しいコードを反映していません。コードをステップ実行すると、古いコードはそこにありますが、新しいコードが実行されています。raise
--を追加してこれをテストしましraise
たが、デバッガーには表示されませんが、発生します。ワット?
リロードされたコードを表示するためにデバッガーで行う必要があることはありますか? これはバグのように見えます...