我的rails应用程序中的一些功能看起来更好,好像它是一个单独的“模块”,应该通过require
来访问它。例如,假设它是计算斐波那契数的函数。我应该在轨道应用程序中放置自己的“模块”?
该功能独立于Rails应用程序,可以在其他项目中重用,因此不应将其存储在应用程序控制器和模型附近,我想。但由于我不打算将它分解为单独的项目,因此将其放置到vendor
文件夹似乎不是正确的事情。
我应该把它放在哪里呢?
我的rails应用程序中的一些功能看起来更好,好像它是一个单独的“模块”,应该通过require
来访问它。例如,假设它是计算斐波那契数的函数。我应该在轨道应用程序中放置自己的“模块”?
该功能独立于Rails应用程序,可以在其他项目中重用,因此不应将其存储在应用程序控制器和模型附近,我想。但由于我不打算将它分解为单独的项目,因此将其放置到vendor
文件夹似乎不是正确的事情。
我应该把它放在哪里呢?
放置可重复使用的代码的位置在lib
目录中。但是您不需要require
任何东西,因为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
,事实证明lib下的任何东西都在加载路径中,根本不需要是require
d。
编辑:史蒂夫的评论后,删除了关于必须要求文件的位。此外,除去一对夫妇从我的一些代码,需要:P
有一个LIB目录回报率的项目,其非常适合用于此目的 - 我把代码共用位在“库”的存在形式。将ActiveRecord类扩展为可重用的实用方法的任何内容。
您不需要在'lib'中的文件,因为它在加载路径 –
那我不知道。谢谢。 – rfunduk