为什么我得到无法在任何来源中找到multi_json-1.3.1?
我有一个简单的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文件,然后运行bundle install。 这适合我!
我看到了不同gem的一系列错误,尽管事实上我知道这些gem是可用的(例如gem list -r
显示它们,包括版本;浏览rubygems.org显示我需要的版本就在那里并且没有’被猛拉等)我有一个源集(我甚至设置了6个不同的来源以确定)。
事实certificate我的问题是我在离开function分支之前把git stashed
拉开最新的开发并忘记随后弹出存储,这是一个问题,因为我已经更改了我的.rvmrc
而没有提交更改(使用更新版本)ruby比我们的生产做的)。
因为我的.rvmrc
为项目指定了一个gemset, .rvmrc
它意味着我突然捆绑了一个gemset,它在我的Gemfile.lock
遗漏了一大堆gem,并且由于我不明白的原因,Bundler假设gem是在Gemfile.lock
它已经安装好了,它不能远程查找。
所以,如果其他人面对这个令人难以置信的令人沮丧的角落案件,我想我会在这里写下来。
如果您使用Capistrano进行部署,并且神秘地得到“无法在任何源中找到multi_json-1.7.2”,请确保在config/deploy.rb
的顶部require "bundler/capistrano"
。
就我而言,我缺乏
source 'https://rubygems.org'
在Gemfile
。 我怀疑旧版本的Bundler可以在没有提到源的情况下运行,但是新版本不能。
对我来说这是因为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
我通过以下步骤解决了这个问题。
Removed Gemfile.lock bundle install
问题的原因最初是我的Gemfile.lock有multi_json-1.3.1
现在它的版本为multi_json-1.3.2