2

我正在将 Rails 2.3.11 应用程序升级到 3.0.10。当我尝试运行任何 rails 脚本(如)或运行我的单元测试时NameError,我的文件中出现了一个。development.rbrails console

我正在调用我在 中定义的类lib,但调用该类时似乎尚未加载该库development.rb

我正在做类似的事情:

config.cache_store = CustomMemcachedStore.new(Memcached.new(...))

我有一个lib/custom_memcached_store.rb声明类的文件

class CustomMemcachedStore < ActiveSupport::Cache::Store

我收到以下错误:

~/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:2503:in `const_missing': uninitialized constant CustomMemcachedStore (NameError)
    from ~/app_name/config/environments/development.rb:20:in `block in <top (required)>'

application.rb,我已经在使用

config.autoload_paths += Dir["#{Rails.root}/lib"]

感谢你给与我的帮助。

4

1 回答 1

1

您将需要require明确地文件,而不是依赖自动加载。

这是因为环境配置的加载发生在启动过程的早期,在设置自动加载路径之前。

在某些情况下,您可以使用初始化程序将配置代码插入到可以工作的地方,例如:

initializer "my_setup", :before => "some_other_setup" do |app|
  # ...
end

不幸的是,这不是其中一种情况,因为缓存是在此处设置的,而自动加载路径直到此处才设置,就在boostrap_hook.

于 2011-09-13T05:39:56.583 回答