モデルやコントローラーボックスにうまく収まらないRailsコードがいくつかあります。したがって、この回答に従って、app/classes
ディレクトリを作成しました。Rails 3はこれをRailsの「ロードパス」に自動的に追加するようで、私のアプリケーションはrequire
ステートメントを使用せずにそこで定義したクラスを正しく見つけます。
ただし、のコードはapp/classes
開発モードでは再ロードされません。変更を加えた場合、その変更を確認するにはサーバーを再起動する必要があります。
Rails 3.2.xで特定のディレクトリを「リロード可能」にする適切な方法は何ですか?ここでのいくつかの回答は、次のことを推奨しています。
config.autoload_paths += %W(#{config.root}/app/classes)
app/classes
しかし、これは単にコードを見つけるためのディレクトリの初期セットに追加する効果があると私は信じています。リクエストごとにリロード可能にするようには見えません(さらに3.xではapp/*
自動的に追加されるようです)。
更新:
数字、私は質問を投稿してからわずか30秒後に解決策に出くわしました:
クラスをモジュールにラップしました。周囲の「MyModule」を削除すると、突然リロード可能になりました。Javaのバックグラウンドから来て、グローバル名前空間を汚染するRubyコードによって焼き付けられたので、私はすべてをモジュール内に置く習慣を身につけました。Railsの「アプリ」コードはモジュールの外に存在する必要があると思いますか?