我正在审查我继承的rails应用程序的代码,我不是rails方面的专家。在应用程序的the文件中,有:gem 'tire'。很好,但我希望在模型或控制器中使用require 'tire‘,以便能够使用gem提供的库。根据一个特定gem的文档,它说它需要作为一个混合体包含在一个模型类中。
include Tire::Model::Search
include Tire::Model::Callbacks或者,文档提到对模型类使用require 'tire',您计划在其中使用轮胎gem。但在项目中,我没有看到任何这些要求/包括在模型中。这些模型只是使用api,而不需要/包括这样的内容:
ret = Tire.index "icrd" do
import [icrdObj]
refresh
end这是怎么回事?我应该在哪里查看rails项目,以了解为什么不需要require或include?有什么自作自受吗?
发布于 2015-07-04 15:44:59
邦德勒有很多不错的方法。Bundler.setup确保您可以轻松地在您的应用程序中要求宝石。
例如,Bundler.require(:default, :production) (它接受组名)要求通过为您执行require 'tire'、require 'rails'等操作,自动执行gems文件中的所有gems。
您可以跳过对某些宝石的自动要求,方法是在宝石行附近添加require: false,如
gem 'rails', require: false
检查Bundler.require文档(放在groups下面)
发布于 2015-07-04 15:38:07
在Gemfile中包含gem时,将自动调用关联的require ..语句。
有关rails如何处理gems的说明,请参见http://www.justinweiss.com/blog/2014/10/13/how-does-rails-handle-gems/。
从那篇博客上说:
因此,邦德勒将在您的Gemfile中查找属于这些组的宝石,并对它找到的每个宝石调用require。如果你有一个宝石诺科吉里,它会叫要求“诺科吉里”为你。这就是为什么您的宝石通常只在Rails中工作,而不需要任何额外的代码。
https://stackoverflow.com/questions/31222324
复制相似问题