2012-07-30 65 views
4

我的問題很簡單,那麼在決定根據gem文件選擇哪個寶石之前,gem bundler會考慮你的ruby環境(例如1.8.7 | 1.9.2)?Bundler Gem是否考慮到您的Ruby環境?

比方說,你的Gemfile包含

gem 'thor' 
gem 'json' 
gem 'grit' 

當你運行bundle install將採取與您當前的紅寶石環境或只是最新的寶石兼容寶石的版本?

+1

基於此(http://gembundler.com/rationale.html)似乎上述Gemfile會給你最新版本的寶石,但這(https://devcenter.heroku.com/articles/ ruby-versions)建議你可以在你的Gemfile中指定你的Ruby版本。 – 2012-07-30 08:50:47

+0

Heroku建議在不同的上下文中。它定義了Targe-Environment並用於告訴Heroku運行1.9或1.8的應用程序。所以我認爲這不適用於此。 – phoet 2012-07-30 09:24:04

回答

2

這取決於! Bundler依賴於每個Gem提供的Gemspecs的配置。

Gemspecs提供基於運行時環境提供不同或附加依賴關係的可能性。 IE可以更改JRuby的依賴關係或爲i386體系結構提供不同的二進制文件。

據我所知,無法聲明1.9或1.8兼容的寶石(這對我來說是有意義的)。我認爲這部分是如此,因爲1.9向下兼容99%。

你總是被迫看看寶石本身。正因如此,有像這樣的網站http://isitruby19.com/

正如你可能看到的,這不是Bundler的問題,而是RubyGems。

+0

Gemfiles規範允許指定版本的紅寶石,更多信息在這裏http://stackoverflow.com/questions/5004492/how-do-you-specify-a-minimum-ruby-version-in-a-gemspec。 – 2012-07-30 08:52:56

+0

你是對的。問題在於,它是一個可選配置,只有四分之一的寶石使用它,其中大多數只是定義一個'''> = 1.8.x''',這在你的情況下是無用的。 – phoet 2012-07-30 09:28:54

+0

我已經在兩個不同的Ruby環境1.8.7和1.9.3中進行了測試,並且從我所能看到的情況來看,除非您指定了最新的版本。也許我使用的所有寶石都兼容1.8.x和1.9.x,但除非有更好的答案,否則我們堅持捆綁器不會查看ruby env版本。 – 2012-07-30 11:29:20