了解“require”和类命名约定之间的rails关系

时间:2013-06-20 04:30:21

标签: ruby-on-rails ruby model-view-controller scope

据我了解,在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或类似的东西。

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

2 个答案:

答案 0 :(得分:2)

检查方法autoload,其计划弃用率has been halted for now以及const_missing仅列举两个。另一种可用的机制是例如。拯救未初始化常量的NameError例外......

答案 1 :(得分:2)

答案很大程度上取决于环境。在生产中,所有内容都在引导时加载,并且所有类都被缓存。在开发过程中,类会在const_missing找到,并在更改时重新加载。请看Rails initialization process