2

据我了解,在 Rails 中,您不必要求您使用的大多数文件,并且当您引用适当的类时,这些文件中的大多数都是自动神奇地要求或包含在您的代码中。

如果我理解如果我在某个任意文件中执行以下操作,或者通过运行脚本rails runner myscript.rb

我的脚本.rb

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

该文件会自动看到它无法识别的类User,并通过其命名约定理解该类必须在 /app/models/user.rb 中定义,然后此代码可以通过 require 或类似的东西以某种方式提供。

我的问题是:rails 是如何实现这个功能的?这是我非常想了解的。

4

2 回答 2

2

Check 方法autoload,其计划的弃用现在已经停止,而且const_missing,仅举两个例子。另一种可用的机制是例如。挽救NameError未初始化常量的异常...

于 2013-06-20T04:46:30.427 回答
2

答案很大程度上取决于环境。在生产中,所有内容都在启动时加载,所有类都被缓存。在开发中,当类const_missing发生变化时,它们会被找到并重新加载。看看这里的Rails 初始化过程

于 2013-06-20T04:47:24.363 回答