Rails加载路径问题

Hel*_*pMe 3 ruby-on-rails

假设我有一些不属于模型,控制器等的自定义类,我应该把它放在/ lib中吗?

在rails <3中,我将此目录添加到我的加载路径和rails 3+中,我将其添加到我的autoload_path.它是否正确?

现在说我有一些扩展已经定义的类的类.我应该把它放在哪里,以便它在启动时运行.例如,我想在String上添加方法'foo'.

class String
  def foo
    'foo;
  end
end

我应该把这个类放在哪里,以便它在启动时定义?

我遇到的另一个奇怪的错误是当我尝试在lib中命名空间时.

module MyProject
 class Foo
 end
end

现在在控制台中:

ruby-1.9.2-p136 :004 > MyProject::Foo
LoadError: Expected /Users/me/workspace/my_project/lib/foo.rb to define Foo
 from /Users/rob/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:492:in `load_missing_constant'
 from /Users/rob/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:183:in `block in const_missing'

我一直收到这个错误.我该如何加载这个文件?

luc*_*tte 8

在rails 3中,config/application.rb中禁用了自动加载路径

#config.autoload_paths += %W(#{config.root}/extras)
Run Code Online (Sandbox Code Playgroud)

如果要从lib目录加载代码,则必须取消注释此行.