在http://github.com/collectiveidea/delayed_job
上它说:
要安装为gem,请将以下内容添加到config / environment.rb:
config.gem 'delayed_job'
运行rake gems:install
与
安装为插件:
script/plugin install git://github.com/collectiveidea/delayed_job.git
将它安装为gem还是作为插件有什么区别?
另外,第一种方法只是安装gem 2.0.3,这可能是tobi的版本? (rake gems:install
按[{1}}安装版本)是http://github.com/tobi/delayed_job吗?
“插件”方法明确表示它是集体版本?你安装哪一个不重要吗?
答案 0 :(得分:4)
Gem和vendored插件都引用了collectiveidea的分叉。实际上,collectiveidea是RubyGems上delayed_job
Gem的当前维护者。
也就是说,一般来说,将插件安装为Gem有很多优点。
那么,为什么你可以安装插件“作为插件”? 有许多不同的答案。
最初,Rails插件就像简单的库一样。时间过去了,开发人员开始注意到将插件打包为Gem的优势。
此外,在Rails 3之前,一些插件功能仅保留给插件而不保留给Gems。例如,在Rails 3之前,插件可以捆绑rake任务,而没有办法将新的rake任务或新路由注入主应用程序。
在过去两年中,Rails插件的大部分内容都可以作为插件或Gem安装。随着Rails 3和Bundler的到来,我确信插件将被弃用以支持Gems。
答案 1 :(得分:2)
这是两个不同的存储库, 也许你应该尝试
config.gem 'delayed_job', :source => http://github.com/collectiveidea/delayed_job.git
请注意:http://ryandaigle.com/articles/2008/4/1/what-s-new-in-edge-rails-gem-dependencies
顺便说一下。也许你想看一个更好的解决方案:resque - 请参阅http://ruby-toolbox.com/categories/queueing.html以获得使用过的排队宝石的比较
答案 2 :(得分:1)
安装gem时,如果您使用插件,它将适用于所有应用程序 - 仅适用于已安装的应用程序。
答案 3 :(得分:0)
基本的区别是gem是安装在运行Rails应用程序的系统上的东西,而插件是与您的应用程序一起安装的,插件不会安装在系统级别上。
假设你正在使用rvm,让我们举个例子。
我们有两个应用 app1 和 app2
两者都在名为 gemset1
的常见rvm gemset上运行当您在 app1 的gem文件中添加gem并运行bundle install然后在同一个rvm gemset gemset1 时,如果您运行第二个应用< strong> app2 gem也可以在第二个应用程序中使用
虽然插件不是这样,因为插件安装在应用程序级而不是系统级