> 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
からtrim_history
に変更しています。私はまだself.do_stuff
またはちょうどdo_stuff
というメソッドを呼び出すときに私の頭を包んでいる。
私はreload!
で問題に遭遇しました。私の理解では、reload!
はすべてのモデルとコントローラーを再びロードしますが、それは機能していないようです。コードをデバッグすると、do_stuff
に変更された行は、デバッガにまだself.do_stuff
と表示されています。
私はこれを解決するために、reload!
で解決しようとしました。再ロード後にデータベースからオブジェクトを再ロードしました。修正はありません。私はload './app/models/product.rb'
でモデルを直接ロードしてから、dbからオブジェクトをロードしました。オブジェクトがtail
で変更されていることを確認しました。
レールコンソールでモデルをリロードするにはどうすればよいですか?モデルコードが変更されるたびにコンソールを再起動する必要がありますか?コンソールをリロードせずに既存のモデルとそのコードをすべてダンプする方法はありますか?
:これは見知らぬ人です。私は今、私のコードがリロードされていると思われるが、デバッガは新しいコードを反映していない。コードをステップ実行すると、古いコードがそこにありますが、新しいコードが実行されています。私はraise
を追加することでこれをテストしました。raise
はデバッガに表示されませんが、それは発生します。ワット?
再ロードされたコードを表示するためにデバッガと何か関連がありますか?これはバグのようです...
クラス自体またはクラスのインスタンスでメソッドを呼び出そうとしていますか? –
@ChrisSchmitzクラスのインスタンス。私はそれを理解するまで、自己を使ってコードをつぶすことについて読んでいます。 – jcollum
Rubyにはいくつかの異なるデバッガがありますが、どちらを使用しているのかを指定すると便利です。 –