Начиная с 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 обеспечит подготовку среды.
Теперь, когда все это на месте, Heroku должен создатьbinstubs (через Bundler) в APP_ROOT/bin
, что вы можете сделать, например, так:
web: bin/trinidad -p $PORT -e $RACK_ENV --threaded
Просто не используйте bundle exec
, так как JRuby плохо с этим справляется.Всегда используйте binstubs, предоставленные Bundler, которые всегда находятся в APP_ROOT/bin
на Heroku.