【发布时间】:2015-09-23 00:14:08
【问题描述】:
我尝试使用 git push heroku master -f 命令将我的 Rails 应用程序推送到 Heroku,我得到了这个:
Total 0 (delta 0), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Ruby app detected
remote: -----> Compiling Ruby/Rails
remote: -----> Using Ruby version: ruby-2.0.0
remote: -----> Installing dependencies using 1.9.7
remote: Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
remote: You are trying to install in deployment mode after changing
remote: your Gemfile. Run `bundle install` elsewhere and add the
remote: updated Gemfile.lock to version control.
remote: You have added to the Gemfile:
remote: * rails (= 4.2.0)
remote: * sass-rails (= 5.0.2)
remote: * uglifier (= 2.5.3)
remote: * coffee-rails (= 4.1.0)
remote: * jquery-rails (= 4.0.3)
remote: * turbolinks (= 2.3.0)
remote: * jbuilder (= 2.2.3)
remote: * sdoc (= 0.4.0)
remote: * sqlite3 (= 1.3.9)
remote: * byebug (= 3.4.0)
remote: * web-console (= 2.0.0.beta3)
remote: * spring (= 1.1.3)
remote: * pg (= 0.17.1)
remote: * rails_12factor (= 0.0.2)
remote: You have deleted from the Gemfile:
remote: * byebug
remote: * coffee-rails (~> 4.1.0)
remote: * jbuilder (~> 2.0)
remote: * jquery-rails
remote: * rails (= 4.2.1)
remote: * sass-rails (~> 5.0)
remote: * sdoc (~> 0.4.0)
remote: * spring
remote: * sqlite3
remote: * turbolinks
remote: * uglifier (>= 1.3.0)
remote: * web-console (~> 2.0)
remote: Bundler Output: You are trying to install in deployment mode after changing
remote: your Gemfile. Run `bundle install` elsewhere and add the
remote: updated Gemfile.lock to version control.
remote:
remote: You have added to the Gemfile:
remote: * rails (= 4.2.0)
remote: * sass-rails (= 5.0.2)
remote: * uglifier (= 2.5.3)
remote: * coffee-rails (= 4.1.0)
remote: * jquery-rails (= 4.0.3)
remote: * turbolinks (= 2.3.0)
remote: * jbuilder (= 2.2.3)
remote: * sdoc (= 0.4.0)
remote: * sqlite3 (= 1.3.9)
remote: * byebug (= 3.4.0)
remote: * web-console (= 2.0.0.beta3)
remote: * spring (= 1.1.3)
remote: * pg (= 0.17.1)
remote: * rails_12factor (= 0.0.2)
remote:
remote: You have deleted from the Gemfile:
remote: * byebug
remote: * coffee-rails (~> 4.1.0)
remote: * jbuilder (~> 2.0)
remote: * jquery-rails
remote: * rails (= 4.2.1)
remote: * sass-rails (~> 5.0)
remote: * sdoc (~> 0.4.0)
remote: * spring
remote: * sqlite3
remote: * turbolinks
remote: * uglifier (>= 1.3.0)
remote: * web-console (~> 2.0)
remote: !
remote: ! Failed to install gems via Bundler.
remote: !
remote:
remote: ! Push rejected, failed to compile Ruby app
remote:
remote: Verifying deploy....
remote:
remote: ! Push rejected to theorderapp.
remote:
To https://git.heroku.com/theorderapp.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/theorderapp.git'
我再次尝试bundle update 和bundle install 并运行git push heroku master -f,但它仍然无法正常工作。
我也尝试删除我的 Gemfile.lock 文件,再次运行 bundle update 和 bundle install,git add 和 git commit 并运行 git push heroku master -f,但它也不适合我。
顺便说一句,这是我的 Gemfile:
source 'https://rubygems.org'
gem 'rails', '4.2.0'
gem 'bootstrap-sass', '3.2.0.0'
gem 'sass-rails', '5.0.2'
gem 'uglifier', '2.5.3'
gem 'coffee-rails', '4.1.0'
gem 'jquery-rails', '4.0.3'
gem 'turbolinks', '2.3.0'
gem 'jbuilder', '2.2.3'
gem 'sdoc', '0.4.0', group: :doc
gem 'font-awesome-sass'
group :development, :test do
gem 'sqlite3', '1.3.9'
gem 'byebug', '3.4.0'
gem 'web-console', '2.0.0.beta3'
gem 'spring', '1.1.3'
end
group :production do
gem 'pg', '0.17.1'
gem 'rails_12factor', '0.0.2'
end
这是我的 .gitignore 文件:
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
#
# If you find yourself ignoring temporary files generated by your text editor
# or operating system, you probably want to add a global ignore instead:
# git config --global core.excludesfile '~/.gitignore_global'
# Ignore bundler config.
/.bundle
# Ignore the default SQLite database.
/db/*.sqlite3
/db/*.sqlite3-journal
# Ignore all logfiles and tempfiles.
/log/*
!/log/.keep
/tmp
【问题讨论】:
-
你的 .gitignore 里有什么?它抱怨 Gemfile.lock 在 repo 中没有更新。
-
@Gene 我刚刚添加了我的 .gitignore 文件。
-
您是否提交了您的
Gemfile和Gemfile.lock修改? -
啊!可能是您没有在 gemfile 中指定 ruby 版本。我认为 Heroku 需要这个。所以它使用 ruby 2.0 作为 heroku 默认值,然后尝试为 1.9.7 加载 gems 作为 bundler 默认值。如果这是正确的,在 gemfile 中指定 ruby 版本号将解决问题。见devcenter.heroku.com/articles/ruby-versions
标签: ruby-on-rails ruby ruby-on-rails-4 heroku gemfile