假设我的 Rails 应用程序的 lib 目录中有以下文件:
#lib/proxy.rb
module SomeService
class ServiceProxy
def do_something
end
end
end
如果我想在模型中使用 ServiceProxy,我可以这样使用它:
#app/models/product.rb
require 'proxy'
class Product < ActiveRecord::Base
def do_something
proxy = SomeService::ServiceProxy.new
proxy.do_something
end
end
这行得通,但我注意到如果我想在另一个模型中使用 ServiceProxy,我不需要在第二个模型文件中“需要‘代理’”。似乎在任何模型中“需要'代理'”一次都会将其添加到查找路径中。
谁能解释这种行为以及 Rails 应用中围绕它的最佳实践?
谢谢!
更新: 根据下面弗洛伊德的回答,如果我的 ServiceProxy 文件是这样保存的,
#lib/some_service/service_proxy.rb
那么我就不必明确要求该文件了。
最佳答案
This是关于此问题的有用帖子。
简而言之,只有遵循正确的命名约定,Rails 才会自动加载 lib 目录中的类。
关于ruby-on-rails - 我何时何地需要 Rails 应用程序中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2120824/