尝试运行时出现以下错误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
文件,以反映该红宝石升级.
该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
所以它似乎安装了宝石,对吗?为什么会这样?我怎么解决这个问题?任何帮助将不胜感激.
如果你在MacOS Sierra,你的ruby版本是2.4.0.ruby版本与json 1.8.3不兼容.
您可以尝试在Gemfile中添加以下行:
gem 'json', github: 'flori/json', branch: 'v1.8'
这适合我!
$ bundle update json $ bundle install
你应该试试
$ sudo gem install json -v '1.8.2'
在我的情况下(Ubuntu 14.04)没有直接工作,我必须这样做:
$ sudo apt-get install ruby-dev
然后我可以安装宝石并继续.还有一个问题是:
$ sudo apt-get install libsqlite3-dev
希望有所帮助.
bundle update json
.帮助通过.
运行此命令然后一切都会好的
sudo apt-get install libgmp-dev
如果推荐的答案没有用,因为您已经在使用更新版本的bundler.尝试适合我的解决方案.
删除供应商文件夹中的所有内容 在gemfile中添加一行
gem 'json', '1.8.0'
然后跑 - bundle update json
.
这似乎是1.8.1的一个问题,所以回到1.8.0对我来说是个窍门.
我试图让一个项目在我的本地开发盒(OSX 10.6)上运行时遇到了这个错误,使用了Sinatra和Postgresql(通过activerecord),在rvm'd ruby 2.1上运行.我在这里找到了答案:https://github.com/wayneeseguin/rvm/issues/2511
我的确切问题(在第一个日志条目块之后):
尝试为宝石构建原生扩展时,我也遇到错误
的回答:
rvm重新安装2.1.0 --disable-binary
的解释:
OSX没有包管理器,所以所有库都必须由用户手动安装,这使得几乎不可能动态链接二进制文件,正如您所看到的那样,(伪)静态链接二进制文件存在问题.
为了完整起见,我首先忘记更新rvm(rvm get head
),这会产生一些其他错误,但是--disable-binary
一旦我这样做了仍然需要标志.
所以经过半天的这一天,几乎在发布我的问题之后,我找到了答案.Bundler 1.5.0有一个错误,它无法识别此处引用的默认gem
解决方案是使用更新到bundler 1.5.1 gem install bundler -v '= 1.5.1'
我在这里找到了解决方案.json版本1.8.1和ruby 2.2.3存在问题,因此请安装json 1.8.3版本.
gem install json -v1.8.3
要解决此问题,只需运行:
bundle update
它将更新您的捆绑包的版本.然后运行:
bundle install
你的问题会得到解决.这里解释得很清楚.