我有一个简单的Rails应用程序我要部署到Heroku的。 当我运行下面的命令
git push heroku master
被显示在下面的错误消息。
Could not find multi_json-1.3.1 in any of the sources
!
! Failed to install gems via Bundler.
!
! Heroku push rejected, failed to compile Ruby/rails app
这里是我的Gemfile
gem 'rails', '3.2.3'
gem 'pg'
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'therubyracer', :platform => :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
删除Gemfile.lock的文件,并运行安装包。 这对我的作品!
我看到了一系列错误,这些不同的宝石,尽管事实上我知道这些宝石都可用(例如gem list -r <gem>
向他们展示,包括版本;浏览rubygems.org表现出我所需要的版本,在那里,hadn”吨被猛拉等)和我有一个源集合(I甚至设置6个不同来源的,以确保)。
原来,我的问题是我所git stashed
留下一个特性分支拉动发展的最新之前和被遗忘的事后弹出藏匿,这是一个问题,因为我改变了我的.rvmrc
并没有作出改变(使用新的红宝石比我们的生产所做的那样)。
因为我.rvmrc
指定的宝石的项目,积攒这意味着我突然捆绑针对失踪了一大堆我的宝石的宝石Gemfile.lock
和的原因,我不明白捆扎机假设,如果创业板在Gemfile.lock
它已经安装,并没有进行远程查找。
所以,万一其他人面临我想我应该把它写在这里这非常令人沮丧的角落的情况。
如果您正在使用Capistrano的做你的部署,你神不知鬼不觉得到“无法找到任何的来源multi_json-1.7.2”,确保你有require "bundler/capistrano"
在你的顶级config/deploy.rb
。
就我而言,我是缺乏
source 'https://rubygems.org'
在Gemfile
。 我怀疑是捆绑的旧版本可以在不被提及源工作,但新的版本不能。
对我来说,这是因为战俘(本地机架服务器)没有使用正确的RVM红宝石版/宝石造成的。
通过添加以下固定.powrc
:
# based on https://coderwall.com/p/pkj39a
if [ -f "$rvm_path/scripts/rvm" ] && [ -f ".ruby-version" ] && [ -f ".ruby-gemset" ]; then
source "$rvm_path/scripts/rvm"
rvm use `cat .ruby-version`@`cat .ruby-gemset`
fi
来源: https://coderwall.com/p/pkj39a
我已经通过以下步骤来解决它。
Removed Gemfile.lock
bundle install
这个问题的原因是最初我Gemfile.lock的已multi_json-1.3.1
现在它已从版本multi_json-1.3.2