我写了一个插件,需要宝石作为依赖。
我在哪里定义这种依赖?
我尝试在vendor / plugins / my_plugin /中创建Gemfile,但bundle install
找不到此文件。
答案 0 :(得分:16)
确定。我已经解决了。
1)在vendor / plugins / my_plugin中创建 Gemfile ,如:
# Gemfile
source "http://rubygems.org"
gemspec
2)创建 gemspec 文件。在 vendor / plugins 文件夹中运行以下命令:
bundle gem my_plugin
(注意此命令要求您覆盖一些文件。在回答之前检查文件:Y)
3)在vendor / plugins / my_plugin /中打开 gemspec 文件,并在关键字结束前添加:
s.add_dependency('will_paginate', '~> 3.0.pre2')
(在这个例子中我使用了will_paginate my_plugin需要的依赖性)
4)现在进入您的rails应用并编辑 Gemfile ,添加:
gem 'my_plugin', :path=>'vendor/plugins/my_plugin'
指定的路径假设您的插件已经在rails应用程序的vendor / plugins文件夹中。 当然,在部署rails app时,您不再需要指定:path 参数。
5)现在在rails app root do:
bundle install
安装了my_plugin的依赖(在这种情况下为will_paginate)。
感谢Sinetris的初步投入。
答案 1 :(得分:2)
在vendor / plugins / my_plugin / like中创建一个Gemfile:
# Gemfile
source "http://rubygems.org"
gemspec
gem "your-dependency-gem-name"
请注意gemspec指令。
答案 2 :(得分:1)
Sebtm自己的答案非常好,但它仍然没有像Tiago和orangechicken描述的那样起作用。我不得不添加
require 'your-dependency-gem-name'
在加载lib/my_plugin.rb
引擎之前,在my_plugin
之上。
请参阅http://guides.rubyonrails.org/engines.html#other-gem-dependencies
答案 3 :(得分:0)
应用程序文件夹中的Gemfile。
# Bundle the extra gems:
# gem 'bj'
# gem 'nokogiri'
# gem 'sqlite3-ruby', :require => 'sqlite3'
# gem 'aws-s3', :require => 'aws/s3
答案 4 :(得分:0)
参考我自己。如果您正在制作一个可以作为RailTie使用Rails的插件,请使用rails plugin my_plugin
创建gem而不是bundle gem my_plugin
。它为你(我)节省了很多麻烦。
编辑:你什么时候需要宝石作为RailTie工作?每当您想添加 rails生成器, rake任务或将您的代码添加到Rails应用程序(称为 Rails引擎)时。 /编辑
$ rails plugin new my_plugin
然后添加依赖项
Gem::Specification.new do |s|
#...
s.add_dependency "rails"
s.add_runtime_dependency "heroku"
s.add_development_dependency "sqlite3"
end
要将其包含在您的rails应用中,请按@Sebtm
所述使用path:
或将其发布到rubygems。
$ gem build my_plugin.gemspec
$ gem push my_plugin-0.7.0.gem #replace version number
#in Gemfile, as always
gem 'my_plugin'
或在github上标记它。 (使用他们的发布UI)并使用
依赖它 gem 'my_plugin', github: 'accountname/my_plugin', tag: 'v0.7.0'