【问题标题】:In Rails, I thought once the "Foo.all" is executed, then "models/foo.rb" is loaded?在 Rails 中,我想一旦“Foo.all”被执行,那么“models/foo.rb”就会被加载?
【发布时间】:2010-10-20 11:46:00
【问题描述】:

在 Rails 中,如果我创建一个脚手架 foo,然后执行 rake db:migrate,那么现在

app/models/foo.rb

已创建。所以如果我去

script/console   (or rails console for Rails 3)

然后输入

$".grep /foo/i

它是空的。 $" 是加载的文件。所以 foo.rb 还没有加载。

现在我做了一个Foo.all,现在应该加载 foo.rb。

但是当我重复grep 时,它仍然显示空数组——这是为什么呢?

(另一方面,我可以用 grep 搜索 pp,它什么也没有显示,但在我 require 'pp' 之后,然后 grep 显示它)

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 include-path load-path


    【解决方案1】:

    这取决于您使用的环境。

    在开发时,它只在您需要时才需要和加载,并且每次都重新加载。 在生产模式下,它只需要一次并加载一次。它在您的应用程序启动时加载。应用/模型上的所有模型都已加载。

    配置如下:config.cache_classes = true

    【讨论】:

    • 哇,凌晨 4 点 50 分 4 分钟内给出准确准确的答案……哦,你在法国……你用 Rails 很久了才知道这些细节?
    • 我使用 Rails 已经 3 年了。您可以查看我的 github 帐户:github.com/shingara 以了解有关我的代码的更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 2016-04-06
    • 2020-05-26
    • 1970-01-01
    相关资源
    最近更新 更多