Railsコンソールの使用に関して、モデルに変更を加える場合、その変更を反映させるために毎回Railsコンソールをリロードする必要がありますか?
たとえば、元のコードは次のとおりです。
class Article < ActiveRecord::Base
validates :title, :presence => true
validates :body, :presence => true
end
後で、以下のようにいくつかの属性を追加したいと思います。
class Article < ActiveRecord::Base
validates :title, :presence => true
validates :body, :presence => true
def long_title
"#{title} - #{published_at}"
end
end
コマンド「reload!」を実行する必要がありますか? 「long_title」メソッド呼び出しを実行できるようにするたびに?そうしないと、属性が定義されていないため、エラーが発生します。なぜそれを手動で実行する必要があるのですか?
はい、reload!
を呼び出す必要があります。これにより、ロードされたロード済み定数がクリアされ、コンソールで参照されているとおりにロードされます。
reload!
より前の古いオブジェクトがある場合は、これらの個々のオブジェクトでreload
を呼び出すか、新しいオブジェクトを見つけて、新しいメソッドを試してみる必要があります。
別の方法として、繰り返し可能なテストとアプリケーションのセーフティネットを提供するRSpecなどのテストフレームワークを調べることを強くお勧めします。
アプリケーションの新機能のテストツールとしてコンソールを使用しようとしているようです。これは、RSpecの方が適しています。コンソールは実験に非常に適しています。
Rails console
はnotクラスが参照になった後にクラスをリロードします。
その場合、コマンドごとにどのファイルが変更されたかを把握するために、ファイルシステムを呼び出す必要があります。
一方、Rails server
は、開発モードのリクエストの間に変更されたクラスをリロードします。
Rails console
の起動時間のため、コンソールを開いたままにしていると思います。アプリケーションが何であるかがわかりません。また、開発中にコンソールが開いている理由もわかりません。ただし、変更を確認しようとしている場合は、単体テストまたはrspec
でテストすることをお勧めします。その時点で、sporkを使用して起動時間を短縮できます。