自包含Rails插件与gem依赖?

时间:2011-07-19 09:18:06

标签: ruby-on-rails plugins bundler

我正在创建一个Rails插件(是的,我需要一个插件,而不是一个宝石)。

这个插件有几个gem依赖项。我的第一个想法是在插件目录的根目录下列出Gemfile中的依赖项。

从install.rb,我做了以下事情:

`bundle install`

然后从init.rb开始,我做了以下事情:

require 'rubygems'
require 'bundler/setup'
Bundler.require

但是Bundler并不一定是这些依赖项。

想要在根Gemfile中列出gem依赖项。

有没有办法在插件中包含这些宝石,只是让它工作而最终用户不必更改自己的Gemfile?如果有一些其他的机制来拉入Rails插件的gem依赖项,我不反对放弃Bundler一起吗?

1 个答案:

答案 0 :(得分:1)

它不需要你的宝石,因为应用程序已经设置了宝石环境(宝石套装,无论如何)。

由于插件在应用程序内部运行的简单原因,无法将插件的gem env与应用程序的gem env隔离开来。

因此,该插件在应用程序的gem env。

中运行

如果应用程序的gem env由Bundler管理,那么您的依赖项必须在应用程序的Gemfile中定义。否则,无论您在插件内部需要什么,它们都不会在Bundler隔离的gem env中可用。

这就是将插件作为宝石发布更为实用的原因之一。