Ruby on rails 我应该把自己的东西放在哪里;模块";在rails应用程序中?
我的rails应用程序中的一些功能看起来更像是一个单独的“模块”,应该通过Ruby on rails 我应该把自己的东西放在哪里;模块";在rails应用程序中?,ruby-on-rails,Ruby On Rails,我的rails应用程序中的一些功能看起来更像是一个单独的“模块”,应该通过require访问。例如,假设它是一个计算斐波那契数的函数 该功能独立于rails应用程序,可以在其他项目中重用,因此我认为它不应该存储在应用程序控制器和模型附近。但由于我不打算将其分离到单独的项目中,因此将其放置到供应商文件夹似乎不是正确的事情 那么我应该把它放在哪里呢?我经常把东西放在lib中,结果是lib下的任何东西都在加载路径中,根本不需要required 编辑:在史蒂夫的评论之后,删除了关于需要文件的部分。另外,
require
访问。例如,假设它是一个计算斐波那契数的函数
该功能独立于rails应用程序,可以在其他项目中重用,因此我认为它不应该存储在应用程序控制器和模型附近。但由于我不打算将其分离到单独的项目中,因此将其放置到供应商
文件夹似乎不是正确的事情
那么我应该把它放在哪里呢?我经常把东西放在
lib
中,结果是lib下的任何东西都在加载路径中,根本不需要require
d
编辑:在史蒂夫的评论之后,删除了关于需要文件的部分。另外,从我的一些代码中删除了一些要求:P
在RoR项目中有一个lib目录,非常适合这个目的-我将常见的代码位以“库”的形式放在那里。从扩展ActiveRecord类到可重用实用程序方法的任何内容。
放置此类可重用代码的位置在lib
目录中。但是,您不需要要求
任何内容,因为lib
已经在加载路径中,并且它的内容将在初始化期间加载
如果需要扩展现有类,则首先定义模块,然后将其作为消息发送给要扩展的类,将其包括在内,例如
module MyExtensions
def self.included base
base.instance_eval do
def my_new_method
…
end
end
end
end
ActiveRecord::Base.send :include, MyExtensions
您不需要在
lib
中要求文件,因为它位于加载路径中