簡體   English   中英

Rails 3:定義插件gem依賴

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM