モデルやコントローラボックスにうまく収まらないRailsコードがあります。だからthis answerごとに、私はapp/classes
ディレクトリを作成しました。 Rails 3はこれをRailsの "load path"に自動的に追加するようですが、私のアプリケーションでは、require
ステートメントを使わなくてもそこで定義したクラスを正しく見つけることができます。Rails 3.2.x:開発中にapp/classesディレクトリをリロードする方法は?
ただし、app/classes
のコードは開発モードでリロードされません。私が変更を加えると、その変更を見るためにサーバーを再起動する必要があります。
Rails 3.2.xで特定のディレクトリを「再読み込み可能」にする適切な方法は何ですか?いくつかの答えはここにやってお勧めします:
config.autoload_paths += %W(#{config.root}/app/classes)
が、私は、これは単に内のコードを見つけるために、ディレクトリの初期セットにapp/classes
を追加する効果を持っていると信じています。リクエストごとにリロードすることはできないようです(さらに3.xではapp/*
が自動的に追加されるようです)。
更新:
私は私のクラスは、モジュール内にラップだった:
図、私は単なる30秒質問を投稿した後、ソリューションにつまずきました。周囲の「MyModule」を削除すると、突然再読み込みが可能になりました。 Javaの背景から来て、グローバルな名前空間を汚染するRubyコードが焼かれてしまったので、私はすべてをモジュールの中に入れるという習慣を開発しました。私は、Railsの "app"コードはどのモジュールの外にも存在しなければならないと思いますか?
あなたの名前を 'classes'の下にサブディレクトリを作成して、そこにモジュールのすべてのクラスを入れてみてください。私は 'bar.rb'という名前のファイルが変更されていると思われますが、' Bar'クラスが使われている場合にのみ読み込まれますが、フルネームが 'Foo :: Bar'の場合は読み込まれません。リロードする 'foo/bar.rb'。しかし、ちょうど推測です。 – Thilo