1

私はレールを学んでいて、どこにも答えが見つからないようなちょっとした癖に出くわしました。

Railsを学習しているので、ローカルホストの実行中にコードを少し調整し(rails s)、ブラウザーを更新して、変更が正確かどうかを確認します。これは、ビュー、css、html、ルーティングなどの変更に対して機能します。

しかし、今、私が書いた別のrubyクラスを呼び出しているコントローラーファイルに変更を加えています。rubyクラスに変更を加えても、すぐには表示されません。これを知る方法は、Rubyクラスのさまざまなprintf関数を使用して現在の状態を表示し、サーバーを追加して再実行すると、サーバーをシャットダウンして再起動しない限り表示されないということです。

何かご意見は?これは既知の問題ですか?

4

1 に答える 1

2

カスタム ファイルを含むフォルダーを自動ロードする必要があります。

# in config/application.rb:

# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/extras)

そこに自動ロードしたいフォルダを書きます。

警告: 命名は非常に重要です: そこにあるファイルは、それらが定義するクラス/モジュール (モデル、コントローラーなど) として命名する必要があります:

  • foo.rb は Foo コスタントを定義する必要があります
  • foo/bar.rb は Foo:Bar costant を定義する必要があります

また、この命名規則を持たないファイルを自動ロードすることはできません。その理由はオートロードの動作に関連しています: コード内で定数 fe を呼び出しFoo、定数が欠落している場合、Rails はオートロード パスにこの命名規則に従うファイルがあるかどうかを確認しようとし、存在する場合はそれをロードします。 .

于 2012-06-15T15:34:04.647 に答える