【问题标题】:Why I am getting Could not find multi_json-1.3.1 in any of the sources?为什么我在任何来源中都找不到 multi_json-1.3.1?
【发布时间】:2012-05-01 19:15:25
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 另外,不要忘记在捆绑安装后推送之前添加并提交对 Gemfile.lock 的更改。这似乎很明显,但我忘了这样做,当然,推送时错误是一样的;)
    • 对于任何规模的项目,您绝对应该这样做。删除 Gemfile.lock 相当于 bundle update - 即一次更新 Gemfile 中的每个 gem(没有固定版本)。有了足够大的 Gemfile,您一定会搞砸您的整个项目。而是运行 bundle update multi_json 以获取该 gem 的最新版本。
    • @jim 是的,我知道!您的解决方案也可以正常工作,并且更安全,感谢您的回复!
    • 或者更好的包更新 --source multi_json。它将更新 only multi_json.
    【解决方案2】:

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

    原来我的问题是我在离开功能分支之前有git stashed 以获取最新的开发并忘记在之后弹出存储,这是一个问题,因为我已经更改了我的.rvmrc 并且没有提交更改(使用比我们生产的新红宝石)。

    因为我的 .rvmrc 为该项目指定了一个 gemset,所以隐藏它意味着我突然捆绑了一个 gemset,该 gemset 在我的 Gemfile.lock 中丢失了一大堆宝石,出于我不明白的原因,Bundler 假设如果gem 位于 Gemfile.lock 中,它已经安装,它不会远程查找。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        就我而言,我缺乏

        source 'https://rubygems.org'
        

        Gemfile。我怀疑旧版本的 bundler 可以在不提及源的情况下运行,但新版本不能。

        【讨论】:

          【解决方案5】:

          对我来说,这是因为 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

          【讨论】:

            【解决方案6】:

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

            Removed Gemfile.lock
            bundle install
            

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

            现在有了 multi_json-1.3.2 版本

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-12-31
              • 1970-01-01
              • 2018-01-31
              • 2012-03-12
              • 2013-12-25
              相关资源
              最近更新 更多