9

我有一个要部署到 Heroku 的简单 Rails 应用程序。当我运行以下命令时

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'
4

6 回答 6

25

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

于 2012-04-20T08:43:26.087 回答
1

尽管我知道这些 gem 可用,但我看到了针对不同 gem 的一系列错误(例如gem list -r <gem>,显示了它们,包括版本;浏览 ruby​​gems.org 显示我需要的版本在那里并且没有被拉走等),我有一个源集(我什至设置了 6 个不同的源)。

原来我的问题是我git stashed在离开一个特性分支之前有一个最新的开发和忘记弹出存储,这是一个问题,因为我已经更改了我的.rvmrc并且没有提交更改(使用比我们的生产更新的 ruby做过)。

因为我.rvmrc为该项目指定了一个 gemset,所以隐藏它意味着我突然捆绑了一个 gemset,该 gemset 中缺少一大堆 gem,Gemfile.lock出于我不明白的原因,Bundler 假设 gem 是否Gemfile.lock已经安装并且它没有不要远程查找。

所以以防万一其他人面临这个令人难以置信的令人沮丧的角落案例,我想我会把它写在这里。

于 2013-03-21T23:22:29.373 回答
1

如果您使用 Capistrano 进行部署并且您神秘地收到“在任何源中都找不到 multi_json-1.7.2”,请确保您require "bundler/capistrano"config/deploy.rb.

于 2013-03-25T02:34:38.327 回答
0

就我而言,我缺乏

source 'https://rubygems.org'

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

于 2013-01-15T01:48:59.407 回答
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

于 2013-08-12T03:20:11.580 回答
-1

我已经通过以下步骤解决了它。

Removed Gemfile.lock
bundle install

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

现在它的版本为 multi_json-1.3.2

于 2012-04-20T08:44:18.700 回答