首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将本地gem的依赖项添加到rails插件/引擎,在.gemspec文件中

如何将本地gem的依赖项添加到rails插件/引擎,在.gemspec文件中
EN

Stack Overflow用户
提问于 2012-12-03 15:31:31
回答 3查看 24.5K关注 0票数 34

我试过这样做:

代码语言:javascript
代码运行次数:0
运行
复制
 s.add_dependency 'gem', :path => '../gem'

例如在gemfile,中添加gem,但它不起作用,并将导致以下错误:

代码语言:javascript
代码运行次数:0
运行
复制
/Users/chenqh/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/requirement.rb:81:in `parse': Illformed requirement 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-03 20:52:16

添加本地依赖项可能是不可能的,因为其他用户将无法访问gem,因为它是本地依赖项,因此在发布后没有任何用处。相反,在您自己的插件的gemspec中添加远程依赖项。

步骤-

1)在vendor/plugins/my_plugin/中打开自己插件的gemspec文件,在关键字end前添加:

代码语言:javascript
代码运行次数:0
运行
复制
s.add_dependency('will_paginate', '~> 3.0.pre2')

(在本例中,我使用了my_plugin的will_paginate required dependency )

2)现在进入你的rails应用程序,编辑Gemfile,添加:

代码语言:javascript
代码运行次数:0
运行
复制
gem 'my_plugin', path: 'vendor/plugins/my_plugin'

3)现在在rails应用根目录中执行以下操作:

代码语言:javascript
代码运行次数:0
运行
复制
bundle install

并且安装了my_plugin (本例中为will_paginate)的依赖项。

票数 23
EN

Stack Overflow用户

发布于 2013-10-14 23:17:23

在开发gem1和gem2这两个gem时,要求gem1在本地依赖于gem2是非常方便的。

你不能在你的gemspec中这样做,但是你可以在你的gem的Gemfile中这样做!

代码语言:javascript
代码运行次数:0
运行
复制
# Gemfile
source "https://rubygems.org"

gem 'gem2', :path => '../gem2'

# Specify your gem's dependencies in gem1.gemspec
gemspec

然后在你的gemspec中,需要你的gem,就像你通常在gem已经发布的时候一样:

代码语言:javascript
代码运行次数:0
运行
复制
# gem1.gemspec
spec.add_runtime_dependency "gem2"

只需确保您不会意外地推动Gemfile更改!

票数 49
EN

Stack Overflow用户

发布于 2016-11-17 04:13:36

有时候你想把一个gem嵌入到另一个gem中,不管为什么。您可以从一个gempec引用另一个gempec,以完全封装本地gem。

代码语言:javascript
代码运行次数:0
运行
复制
require "rubygems"

embedded_gemspec = Gem::Specification::load("path/to/internal.gemspec")

Gem::Specification.new do |spec|
  spec.name          = "gem_that_contains_another_gem"
  # spec.whatever,   = whole bunch of other info

  #                     our files               + other gem's files
  spec.files         = ['file1.rb', 'file2.rb'] + embedded_gemspec.files

  # our dependencies
  spec.add_dependency 'nokogiri'
  # other gem's dependencies
  embedded_gemspec.runtime_dependencies.each { |d| spec.add_dependency d }

end

编辑:这似乎只在本地工作。如果你试图安装这个embedded_gemspec,比如说从git库中安装,它将不知道从哪里获得embedded_gemspec (即使gemspec的依赖关系很好)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13678957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档