2

私が理解している限りでは、Rails では使用するほとんどのファイルを要求する必要はなく、適切なクラスを参照すると、これらのファイルのほとんどが自動的に要求されるか、コードに含まれます。

私が理解している場合、任意のファイルで、またはスクリプトを実行して次のことを行う場合rails runner myscript.rb

myscript.rb

User.delete_all
#set up a default user
User.create(name: "default", password: "default")

このファイルは、認識しないクラスを自動的に認識し、Userその命名規則を介してクラスを /app/models/user.rb で定義する必要があることを認識し、このコードは何らかの形で require などを介して利用できるようにします。

私の質問は次のとおりです。レールはこの機能をどのように実装していますか? これは私が非常に理解したいことです。

4

2 に答える 2

2

autoload計画された廃止予定が現在中止されているメソッドを確認してください。またconst_missing、2 つだけ挙げてください。別の利用可能なメカニズムは、例えばです。NameError初期化されていない定数の例外を救済するには...

于 2013-06-20T04:46:30.427 に答える
2

答えは環境に大きく依存します。本番環境では、起動時にすべてがロードされ、すべてのクラスがキャッシュされます。開発中、クラスは で検出されconst_missing、変更時に再ロードされます。こちらのRails の初期化プロセスをご覧ください。

于 2013-06-20T04:47:24.363 に答える