尝试运行cap production deploy
时出现以下错误。
DEBUG [dc362284] Bundler::GemNotFound: Could not find json-1.8.1.gem for installation
DEBUG [dc362284] An error occurred while installing json (1.8.1), and Bundler cannot continue.
DEBUG [dc362284] Make sure that `gem install json -v '1.8.1'` succeeds before bundling.
可能需要注意的是,此部署正在运行,而不是我升级到Ruby 2.1.0以删除编码错误。我本地升级,工作正常。我运行rvm install 2.1.0
和rvm use 2.1.0
然后更改了我的.ruby-version
文件以反映此Ruby升级。
bundle install
命令在本地工作,但当我ssh到目标服务器并运行此命令时,会产生相同的上述错误。
如果我运行gem list
,我可以在宝石列表中看到这一点。
...
jquery-rails (3.0.4)
json (1.8.1)
less (2.3.2)
...
如果我在本地尝试推荐的解决方案gem install json -v '1.8.1'
并在目标服务器上获得以下输出:
Building native extensions. This could take a while...
Successfully installed json-1.8.1
Parsing documentation for json-1.8.1
Done installing documentation for json after 0 seconds
1 gem installed
所以宝石出现了,对吗?为什么会这样?我怎么解决这个问题?任何帮助将不胜感激。
答案 0 :(得分:67)
$ bundle update json
$ bundle install
答案 1 :(得分:67)
所以经过半天的讨论,几乎在发布问题后我立即找到了答案。 Bundler 1.5.0有一个错误,它无法将默认宝石识别为referenced here
解决方案是使用gem install bundler -v '= 1.5.1'
答案 2 :(得分:48)
运行此命令,然后一切正常
sudo apt-get install libgmp-dev
答案 3 :(得分:40)
如果你在MacOS Sierra中,你的ruby版本是2.4.0。ruby版本与json 1.8.3不兼容。
您可以尝试在Gemfile中添加此行:
gem 'json', github: 'flori/json', branch: 'v1.8'
这对我有用!
答案 4 :(得分:25)
答案 5 :(得分:20)
我找到了解决方案here。 json版本1.8.1和ruby 2.2.3存在问题,因此请安装json 1.8.3版本。
gem install json -v1.8.3
答案 6 :(得分:12)
你应该试试
$ sudo gem install json -v '1.8.2'
在我的情况下(Ubuntu 14.04)没有直接工作,我不得不这样做:
$ sudo apt-get install ruby-dev
然后我可以安装gem并继续。还有一个问题由以下原因解决:
$ sudo apt-get install libsqlite3-dev
希望有所帮助。
答案 7 :(得分:7)
我试图让一个项目在我的本地开发盒(OSX 10.6)上运行时遇到了这个错误,使用了Sinatra和Postgresql(通过activerecord),在rvm' d ruby 2.1上运行。我在这里找到了答案:https://github.com/wayneeseguin/rvm/issues/2511
我的exact problem(在第一个日志条目块之后):
我在尝试为gems构建原生扩展时也遇到错误
rvm重新安装2.1.0 --disable-binary
OSX没有包管理器,所以所有库都必须由用户手动安装,这使得几乎不可能动态链接二进制文件,正如您所看到的那样,(伪)静态链接二进制文件存在问题。 / p>
为了完整起见,我首先忘记更新rvm(rvm get head
),这会产生一些其他错误,但在我这样做之后仍然需要--disable-binary
标志。
答案 8 :(得分:7)
如果建议的答案没有帮助,因为您已经在使用较新版本的bundler。尝试适合我的解决方案。
删除供应商文件夹中的所有内容。 在gemfile中添加一行
gem 'json', '1.8.0'
然后运行 - bundle update json
。
这似乎是1.8.1的一个问题,所以回到1.8.0对我来说是个窍门。
答案 9 :(得分:5)
bundle update json
。帮助通过。
答案 10 :(得分:3)
对于OS X,请确保您拥有 coreutils
$ brew install coreutils
$ bundle
答案 11 :(得分:3)
当我尝试使用gem install json
使用bundle install
安装json gem而不仅仅使用ERROR: Failed to build gem native extension.
时,我得到 apt-get install ruby-dev
,看起来我发现使用
{{1}}
做了这个伎俩
答案 12 :(得分:2)
Bundle无法安装json -v'1.8.1'并删除我的Gemfile.lock并再次运行bundle解决了这个问题。
答案 13 :(得分:2)
我缺少C头解决方案是为Xcode下载它,这是最好的方法。
xcode-select --install
希望它有所帮助。
答案 14 :(得分:2)
这似乎是Bundler中的一个错误,无法识别与ruby 2.x一起安装的默认gem。即使使用最新版本的bundler(1.5.3),我仍然遇到了问题。
一种解决方案是从默认的gemspec目录中删除json-1.8.1.gemspec。
rm ~/.rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/specifications/default/json-1.8.1.gemspec
执行此操作后,bundler应该没有问题找到gem。请注意,我正在使用chruby。如果您正在使用其他一些ruby管理器,则必须相应地更新路径。
答案 15 :(得分:1)
我安装了最新版本的json:
bundle install
然后从Gemfile.lock中删除了行json(1.8.1)并执行了
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head> </head>
<body>
<xsl:apply-templates select="//CP[@Checked = 'Y']/@Txt"/>
</body>
</html>
</xsl:template>
<xsl:template match="@Txt">
<xsl:value-of select="."/>
<br/>
</xsl:template>
</xsl:stylesheet>
然后Gemfile.lock文件使用没有错误的json(1.8.3)
答案 16 :(得分:0)
Switch ruby version from 1.9 to 2.2 with rvm did the job for me
答案 17 :(得分:0)
对我来说,前面提到的一些答案从理解的角度来看是有帮助的,但那些并没有解决我的问题。
所以这就是我解决问题的方法。
Bundler -v
命令)。我安装了1.12.5版本gem install bundler -v '1.11.2'
)答案 18 :(得分:0)
对于macOS Sierra:
当我在Rails(v1.15.3
)项目中使用bundler(v4.2
)时遇到了这个错误。
我的解决方案是gem uninstall bundler -v '1.15.3'
和gem install bundler -v '1.14.6'
。