Heroku,捆绑程序因缺少依赖项而失败

Heroku, bundler fails on missing dependencies

我最近在尝试在 Heroku 上部署我的 rails 应用程序时遇到了问题。过去,我在 Heroku 上部署应用程序没有问题,但 Heroku 不再支持 ruby 2.0.0。他们建议将 ruby "2.2.4" 添加到 Gemfile,我就是这样做的。我的Gemfile开头是这样的:

source 'https://rubygems.org'
ruby "2.2.4"

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.0'
# Use pg as the database for Active Record
gem 'pg'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
...

所以,我的电脑上有 运行 bundle install 版本 1.7.8 没问题。我什至可以 运行 我的应用程序处于生产模式。但是,当我尝试在 Heroku 上部署该应用程序时,我得到以下信息:

-----> Ruby app detected
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-2.2.4
-----> Installing dependencies using bundler 1.11.2
       Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
       Fetching gem metadata from https://rubygems.org/...........
       Fetching version metadata from https://rubygems.org/...
       Fetching dependency metadata from https://rubygems.org/..
       Using rake 10.4.2
       Installing i18n 0.7.0
       Installing minitest 5.4.3
       Installing json 1.8.3 with native extensions
       Installing thread_safe 0.3.4
       Installing builder 3.2.2
       Installing erubis 2.7.0
       Your Gemfile.lock is corrupt. The following gem is missing from the DEPENDENCIES
       section: 'mini_portile2'
       Bundler Output: Fetching gem metadata from https://rubygems.org/...........
       Fetching version metadata from https://rubygems.org/...
       Fetching dependency metadata from https://rubygems.org/..
       Using rake 10.4.2
       Installing i18n 0.7.0
       Installing minitest 5.4.3
       Installing json 1.8.3 with native extensions
       Installing thread_safe 0.3.4
       Installing builder 3.2.2
       Installing erubis 2.7.0
       Your Gemfile.lock is corrupt. The following gem is missing from the DEPENDENCIES
       section: 'mini_portile2'
 !
 !     Failed to install gems via Bundler.
 !
 !     Push rejected, failed to compile Ruby app

非常感谢任何帮助。

我建议在本地再次删除您的 Gemfile.lock、运行 bundle install,将新的 Gemfile.lock 提交到您的 git 存储库,然后尝试您的再次git push heroku master

我遇到了同样的问题,我所做的是在我的系统中更新 Ruby 2.2.4 并重新启动终端,然后按照以下步骤操作:

bundle install
bundle update 
git push heroku

(最好使用 bundle update 更新 gem 以确保版本匹配)

问题是您只更改了 Gemfile 中的 Ruby 版本号,但没有重新创建有效的 Gemfile.lock。这导致 Gemfile.lock 包含与 Ruby 2.2.4.

不兼容的版本的 Gem

如果您更改 Gemfile 中的某些内容,则必须在推送到 Heroku 之前使用相同的 Ruby 版本更新或重新创建 Gemfile.lock

我建议使用 Ruby 版本管理器(如 rbenv or RVM)以便能够在您的开发机器上 运行 多个版本的 Ruby。然后通过更改 Gemfile(对于 Heroku)和 .ruby-version(对于您的本地环境)中的 Ruby 版本来更新应用程序中的 Ruby 版本。两个版本必须匹配。

完成后,运行 bundle install 更新 Gemfile.lock 或(当有重大更新或您只想确保使用最新版本时)运行 bundle update 重新创建 Gemfile.lock