2013-08-09 2 views
3

Я пытаюсь подтолкнуть мое приложение к Heroku, но я не могу пройти мимо этой ошибки:Не удается развернуть Rails приложение для Heroku, «Invalid RUBY_VERSION»

Delta compression using up to 2 threads. 
Compressing objects: 100% (1554/1554), done. 
Writing objects: 100% (1652/1652), 23.93 MiB | 369 KiB/s, done. 
Total 1652 (delta 859), reused 0 (delta 0) 

-----> Ruby/Rails app detected 
! 
!  Invalid RUBY_VERSION specified: There-was-an-error-in-your-Gemfile,-and-Bundler- cannot-continue. 
!  Valid versions: ruby-2.0.0, ruby-1.9.3, ruby-1.9.2, ruby-1.8.7, ruby-1.9.3-jruby- 1.7.0, ruby-1.8.7-jruby-1.7.0, ruby-1.9.3-jruby-1.7.1, ruby-1.8.7-jruby-1.7.1, ruby-1.9.3-rbx-2.0.0dev, ruby-1.8.7-rbx-2.0.0dev 
! 

!  Push rejected, failed to compile Ruby/Rails app 

To [email protected]:myapp.git 
! [remote rejected] master -> master (pre-receive hook declined) 
error: failed to push some refs to '[email protected]:myapp.git' 

Я бегу Ruby 1.9 .3p448. Я последовал шаги here, и в верхней части моей Gemfile включает в себя:

source 'http://rubygems.org' 
ruby '1.9.3' 

gem 'rails', '3.2.13' 

Когда я бегу «Heroku бег„рубин -v“» возвращает рубин 1.9.2p290. Что происходит?

Edit: Вот вся моя Gemfile:

source 'http://rubygems.org' 
ruby '1.9.3' 
gem 'rails', '3.2.13' 

gem 'pg' 

group :assets do 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 
    gem 'uglifier', '>= 1.0.3' 
end 

gem 'jquery-rails' 

gem 'devise' 
gem 'nokogiri' 
gem 'i18n' 
gem 'paperclip' 
gem 'kaminari' 
gem 'rest-client' 
require 'addressable/uri' 

group :development do 
    gem 'better_errors' 
end 
+0

Вам нужно разместить свой цельные 'Gemfile'. Heroku пытается определить версию Ruby, которую вы указали, вызывая 'bundle platform --ruby', но у вас есть ошибка где-то в ней, и Bundler возвращает« В вашем Gemfile произошла ошибка, и Bundler не может продолжить ».Heroku не обнаруживает это как ошибку и обрабатывает сообщение как версию Ruby, которая, очевидно, не существует, и поэтому приводит к ошибке, которую вы видите (это, возможно, ошибка в buildpack Heroku). Чтобы исправить это, вам нужно отследить ошибку в вашем «Gemfile». – matt

+0

Спасибо, я обновил сообщение всем моим Gemfile. – mrdziuban

ответ

4

У вас есть ошибка в вашем Gemfile, в строке require 'addressable/uri'. Вы не можете использовать require внутри Gemfile. Путь загрузки еще не настроен, поэтому вы получаете LoadError, который Bundler ловит и выдает сообщение об ошибке.

Heroku пытается использовать bundle platform --ruby, чтобы определить версию Ruby, которую вы хотите использовать, но неправильно обнаруживает состояние ошибки и обрабатывает сообщение об ошибке как версию. Это, очевидно, не действительная версия, и поэтому она вызывает ошибку, которую вы видите.

Я предполагаю, что вы используете require, потому что использовать адресуемый драгоценный камень вам нужно требовать либо addressable/uri или addressable/template (или оба), и вы не можете просто использовать require 'addressable'. В этом случае вы можете использовать :require вариант Bundler:

gem 'addressable', :require => 'addressable/uri' 

Если вам не нужно требовать больше чем одну вещь, вы можете использовать массив:

gem 'addressable', :require => ['addressable/uri', 'addressable/template'] 
0

Просто интересно, если это изменит ситуацию, так как ваш Gemfile выглядит почти как у меня, но для этих изменений.

1) Конечно, если вы находитесь в папке Roots Root, а ваш less Gemfile является фактическим выше. После изменений вы также сделали bundle.

2) изменение source 'https://rubygems.org'

3) опционально Heck, попробуйте переключить версию ruby '2.0.0' только, чтобы это прошло.

4) Я думаю, что это нужно тоже:

gem 'rails_12factor'

Все эти приемы должны заставить его работать, по крайней мере.

EDIT

Почему require 'addressable/uri' там? удалите это и добавьте вместо этого gem 'addressable'.

+0

Драгоценный камень 'rails_12factor' не является обязательным условием для загрузки в Heroku, только рекомендация. Даже для приложения Rails 4. –

+0

В любом случае, приложения heroku, которые я загружал, не слишком хорошо работали без него. Запишите или нет. – pjammer

Смежные вопросы