Начиная с Bundler 1.2, теперь вы можете указать реализацию Ruby и версию в вашем Gemfile
.Приятно то, что Heroku поймет эти настройки и подготовит ваше приложение Heroku для вашей среды.
Возьмите Gemfile
, например:
source "https://rubygems.org"
ruby "1.9.3"
gem "rails"
gem "puma"
Что здорово в этомчто по умолчанию Celadon Cedar использует Ruby 1.9.2.Однако, когда вы укажете ruby "1.9.3"
в Gemfile
, он фактически скомпилирует Ruby 1.9.3 для вашей среды Heroku.
Теперь, если вы хотите добавить другую реализацию Ruby в свою среду Heroku, выможно сделать так:
source "https://rubygems.org"
ruby "1.9.3", :engine => "jruby", :engine_version => "1.7.0.preview1"
gem "rails"
gem "puma"
Теперь он будет устанавливать и использовать JRuby 1.7.0.preview1 в режиме Ruby 1.9 для приложения Heroku после развертывания.Он также даже определит правильные параметры JVM в переменных среды Heroku.
Лучше всего то, что это идет с официальным Heroku buildpack , поэтому нет необходимости переключаться наСборка стороннего производителя для запуска JRuby / JVM на Heroku.Хотя я еще не заставил его работать, этот должен также работать с Рубиниусом , но я считаю, что он в настоящее время прослушивается.Либо так, либо я делаю это неправильно.
Это, на мой взгляд, потрясающая и масштабируемая функция.Просто определите реализацию / версию / режим Ruby, которую вы используете в своем Gemfile, вместе с другими вашими зависимостями, и Heroku обеспечит подготовку среды.
Больше нет необходимости использовать обходной путь или использоватьСборки сторонних производителей с использованием этого метода.Также больше нет необходимости создавать хаки Jemfile
.Вместо этого просто делайте все так, как вы обычно делаете с MRI, сохраняйте Gemfile, не используйте сторонние сборки, просто определяйте реализацию / время выполнения Ruby в Gemfile с помощью метода ruby
, и Heroku должен позаботиться обо всем.