![](/img/trans.png)
[英]How to require a gem in .irbrc without needing to also add it to a Rails Gemfile?
[英]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.