2012-07-30 2 views
4

제 질문은 간단합니다. gem bundler는 보석 파일을 기반으로 사용할 보석을 결정하기 전에 루비 환경 (예 : 1.8.7 | 1.9.2)을 고려합니까?Bundler Gem은 Ruby 환경을 고려합니까?

의 당신이 bundle install 현재 루비 환경하거나 최신 보석과 호환되는 보석의 버전을 것입니다 실행하면 사용자의 gemfile이

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

이 포함되어 있다고 가정 해 봅시다?

+1

이 (http://gembundler.com/rationale.html)을 바탕으로 위의 Gemfile이 최신 버전의 보석을 제공하는 것으로 보입니다.하지만이 (https://devcenter.heroku.com/articles/ ruby-versions)은 Gemfile에 Ruby 버전을 지정할 수 있음을 시사합니다. –

+0

Heroku 제안은 다른 상황에 있습니다. 그것은 Targe-Environment를 정의하고 1.9 또는 1.8의 응용 프로그램을 실행하도록 Heroku에 알리는 데 사용됩니다. 그래서 나는 그것이 여기에 적용되지 않는다고 생각합니다. – phoet

답변

2

다릅니다. Bundler는 각 Gemspec이 제공하는 구성에 의존합니다.

Gemspec은 런타임 환경에 따라 다른 또는 추가 종속성을 제공 할 가능성을 제공합니다. IE에서는 JRuby에 대한 종속성을 변경하거나 i386 아키텍처에 대해 다른 바이너리를 제공 할 수 있습니다.

필자가 아는 한 보석을 1.9 또는 1.8 호환으로 선언 할 수는 없습니다 (이는 나에게 의미가 있었을 것입니다). 1.9는 99 % 하향 호환되므로 부분적으로 생각합니다.

당신은 항상 보석 자체를보아야합니다. 이 때문에 사이트가 있습니다 http://isitruby19.com/

Bundler의 문제는 아니지만 RubyGems입니다.

+0

젬 파일 스펙은 루비의 버전을 지정할 수 있습니다. 자세한 정보는 http://stackoverflow.com/questions/5004492/how-do-you-specify-a-minimum-ruby-version-in-a-gemspec을 참조하십시오. –

+0

정확합니다. 이것의 문제는 선택적 구성이며 4 개의 보석 중 1 개의 보석 만 사용한다는 것입니다. 대부분의 경우'''> = 1.8.x''를 정의하면 귀하의 경우에는 쓸모가 없습니다. – phoet

+0

나는 두 가지 다른 Ruby 환경 1.8.7과 1.9.3에서 테스트했으며, 버전을 지정하지 않으면 내가 볼 수있는 것부터 테스트했다. 아마 내가 사용했던 모든 보석은 1.8.x와 1.9.x와 호환 될 수 있지만, 더 좋은 대답이 없다면 bundler를 고수하지 말고 ruby ​​env 버전을 살펴보아야합니다. –

관련 문제