Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我应该把自己的东西放在哪里;模块";在rails应用程序中?_Ruby On Rails - Fatal编程技术网

Ruby on rails 我应该把自己的东西放在哪里;模块";在rails应用程序中?

Ruby on rails 我应该把自己的东西放在哪里;模块";在rails应用程序中?,ruby-on-rails,Ruby On Rails,我的rails应用程序中的一些功能看起来更像是一个单独的“模块”,应该通过require访问。例如,假设它是一个计算斐波那契数的函数 该功能独立于rails应用程序,可以在其他项目中重用,因此我认为它不应该存储在应用程序控制器和模型附近。但由于我不打算将其分离到单独的项目中,因此将其放置到供应商文件夹似乎不是正确的事情 那么我应该把它放在哪里呢?我经常把东西放在lib中,结果是lib下的任何东西都在加载路径中,根本不需要required 编辑:在史蒂夫的评论之后,删除了关于需要文件的部分。另外,

我的rails应用程序中的一些功能看起来更像是一个单独的“模块”,应该通过
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
中要求文件,因为它位于加载路径中