繁体   English   中英

如何在Rails gemfile中要求特定的gem版本?

[英]How to require a specific gem version in rails gemfile?

通过在rails 4中bundle install来安装gem时,出现以下错误:

Bundler could not find compatible versions for gem "tzinfo":

  In Gemfile:
    rails (= 4.2.0) ruby depends on
      actionmailer (= 4.2.0) ruby depends on
        actionpack (= 4.2.0) ruby depends on
          activesupport (= 4.2.0) ruby depends on
            tzinfo (~> 1.1) ruby

    eventbrite-client (>= 0) ruby depends on
      tzinfo (~> 0.3.22) ruby

我试图通过bundle update解决此问题,但是可以解决同一问题。

现在的问题是,如何使gem eventbrite eventbrite-client依赖于tzinfo 0.3.22版本。 我尝试时无法弄清楚语法:

gem 'eventbrite-client', :require => 'tzinfo','0.3.22'

这有可能吗?

如果您想使Event-brite客户端以某种方式工作,则可以在eventbrite gemspec文件中简单修改tzinfo依赖项的版本。

首先克隆以下存储库

git clone git@github.com:ryanjarvinen/eventbrite-client.rb.git

然后将eventbrite-client.gemspec文件的内容替换为以下内容。

Gem::Specification.new do |s|
  s.name = %q{eventbrite-client}
  s.version = "0.1.3"

  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
  s.authors = ["Ryan Jarvinen"]
  s.date = %q{2011-08-28}
  s.description = %q{A tiny EventBrite API client. (http://developer.eventbrite.com)}
  s.email = %q{ryan.jarvinen@gmail.com}
  s.extra_rdoc_files = [
    "LICENSE",
    "README.md"
  ]
  s.files = [
    ".document",
    "LICENSE",
    "README.md",
    "Rakefile",
    "VERSION",
    "eventbrite-client.gemspec",
    "lib/eventbrite-client.rb",
  ]
  s.homepage = %q{http://github.com/ryanjarvinen/eventbrite-client.rb}
  s.require_paths = ["lib"]
  s.rubygems_version = %q{1.6.2}
  s.summary = %q{A tiny EventBrite API client}

  if s.respond_to? :specification_version then
    s.specification_version = 3

    if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
      s.add_development_dependency(%q<rspec>, ["~> 1.3.0"])
      s.add_runtime_dependency(%q<httparty>, ["~> 0.8.0"])
      s.add_runtime_dependency(%q<tzinfo>, ["~> 1.1"])
    else
      s.add_dependency(%q<rspec>, ["~> 1.3.0"])
      s.add_dependency(%q<httparty>, ["~> 0.8.0"])
      s.add_dependency(%q<tzinfo>, ["~> 1.1"])
    end
  else
    s.add_dependency(%q<rspec>, ["~> 1.3.0"])
    s.add_dependency(%q<httparty>, ["~> 0.8.0"])
    s.add_dependency(%q<tzinfo>, ["~> 1.1"])
  end
end

然后,您可以使用

gem build eventbrite-client.gemspec

使用安装

gem install ./name_of_the_gem.gem

我认为您的想法是不可能的(如果您想同时拥有一个工作的rails 4.2 )。 正如捆绑程序所说,rails 4.2需要tzinfo v1.1因此它的旧版本将不被rails接受。 不允许在一个正常运行的应用程序中使用2个不同版本的同一gem,因为这些代码将使使用哪个代码有所不同?

关于在一个应用程序中同时拥有两个不同版本的gem,可能是一个有用的答案: Gemfile中可以有多个版本的gem吗?

关于2个具有冲突依赖关系的gems以及解决问题的可能性的另一个答案: 如何覆盖gem依赖关系? 但我想这不可能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM