[英]How to add dependency of a local gem to a rails plugin/engine, in .gemspec file
[英]Rails 3: define plugin gem dependency
我寫了一個插件,需要寶石作為依賴。
我在哪里定義這種依賴?
我試圖在vendor / plugins / my_plugin /中創建一個Gemfile,但是bundle install
找不到這個文件。
好。 我已經解決了。
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文件,並在關鍵字end之前添加:
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中:
bundle install
並且安裝了my_plugin(在這種情況下為will_paginate)的依賴性 。
感謝Sinetris的初始輸入。
在vendor / plugins / my_plugin /中創建一個Gemfile:
# Gemfile
source "http://rubygems.org"
gemspec
gem "your-dependency-gem-name"
請注意gemspec指令。
有關更多信息,請查看使用Bundle和Rubygem gemspecs 。
Sebtm自己的答案相當不錯,但它仍然沒有像Tiago和orangechicken描述的那樣起作用。 我不得不補充一下
require 'your-dependency-gem-name'
在加載my_plugin
的引擎之前,在lib/my_plugin.rb
my_plugin
。
請參閱http://guides.rubyonrails.org/engines.html#other-gem-dependencies
自己參考。 如果您正在制作一個可以作為RailTie使用rails plugin my_plugin
,請使用rails plugin my_plugin
來創建gem而不是bundle gem my_plugin
。 它為你(我)節省了很多麻煩。
編輯:你什么時候需要寶石作為RailTie工作? 每當您想要添加rails生成器 , rake任務或將代碼添加到Rails應用程序(Called Rails Engine )時。 /編輯
$ 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應用程序中,請使用path:
如@Sebtm所述
或者將它釋放到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'
應用程序文件夾中的Gemfile。
# Bundle the extra gems:
# gem 'bj'
# gem 'nokogiri'
# gem 'sqlite3-ruby', :require => 'sqlite3'
# gem 'aws-s3', :require => 'aws/s3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.