为什么我得到无法找到任何来源的multi_json-1.3.1?

时间:2012-04-20 07:45:41

标签: ruby-on-rails ruby-on-rails-3 deployment heroku bundler

我有一个简单的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'

6 个答案:

答案 0 :(得分:25)

删除Gemfile.lock文件,然后运行bundle install。 这对我有用!

答案 1 :(得分:1)

我看到了不同宝石的一系列错误,尽管我知道这些宝石可用(例如gem list -r <gem>显示它们,包括版本;浏览rubygems.org显示我需要的版本就在那里并且没有& #39;被猛拉等)我有一个源集(我甚至设置了6个不同的来源以确定)。

事实证明我的问题是我在离开功能分支之前已经git stashed拉出最新的开发并忘记随后弹出存储,这是一个问题,因为我已经更改了我的.rvmrc和没有做出改变(使用比我们的生产更新的红宝石)。

因为我的.rvmrc为项目指定了一个宝石集,所以存储它意味着我突然捆绑了一个宝石集,在我的Gemfile.lock中遗漏了一大堆宝石,原因是我没有&#39;了解Bundler假设gem已经安装在Gemfile.lock中,并且它没有远程查找。

所以,如果其他人面对这个令人难以置信的令人沮丧的角落案件,我想我会在这里写下来。

答案 2 :(得分:1)

如果您使用Capistrano进行部署并且神秘地获得“无法在任何来源中找到multi_json-1.7.2”,请确保require "bundler/capistrano"位于config/deploy.rb的顶部

答案 3 :(得分:0)

就我而言,我缺乏

source 'https://rubygems.org'
Gemfile中的

。我怀疑捆绑器的旧版本可以在没有提到源的情况下运行,但是新版本不能。

答案 4 :(得分:0)

对我来说,这是因为Pow(本地机架服务器)没有使用正确的RVM ruby​​版本/ gemset。

通过添加以下.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

答案 5 :(得分:-1)

我已通过以下步骤解决了这个问题。

Removed Gemfile.lock
bundle install

问题的原因最初是我的Gemfile.lock有multi_json-1.3.1

现在它的版本为multi_json-1.3.2