我正在创建一个Rails插件(是的,我需要一个插件,而不是一个宝石)。
这个插件有几个gem依赖项。我的第一个想法是在插件目录的根目录下列出Gemfile中的依赖项。
从install.rb,我做了以下事情:
`bundle install`
然后从init.rb开始,我做了以下事情:
require 'rubygems'
require 'bundler/setup'
Bundler.require
但是Bundler并不一定是这些依赖项。
我不想要在根Gemfile中列出gem依赖项。
有没有办法在插件中包含这些宝石,只是让它工作而最终用户不必更改自己的Gemfile?如果有一些其他的机制来拉入Rails插件的gem依赖项,我不反对放弃Bundler一起吗?
答案 0 :(得分:1)
它不需要你的宝石,因为应用程序已经设置了宝石环境(宝石套装,无论如何)。
由于插件在应用程序内部运行的简单原因,无法将插件的gem env与应用程序的gem env隔离开来。
因此,该插件在应用程序的gem env。
中运行如果应用程序的gem env由Bundler管理,那么您的依赖项必须在应用程序的Gemfile中定义。否则,无论您在插件内部需要什么,它们都不会在Bundler隔离的gem env中可用。
这就是将插件作为宝石发布更为实用的原因之一。