为什么不打包器安装JSONgem?

试图运行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.0rvm use 2.1.0然后更改我的.ruby-version文件以反映这个Ruby升级。

bundle install命令在本地工作,但是当我到达目标服务器并运行这个命令时产生相同的上述错误。

如果我运行gem list我可以看到这个gem列表中。

 ... jquery-rails (3.0.4) json (1.8.1) less (2.3.2) ... 

如果我尝试推荐的解决schemegem 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 

所以看来gem已经安装了,对吗? 为什么发生这种情况? 我该如何解决这个问题? 任何帮助将不胜感激。

所以在这半天后,几乎立即发布我的问题后,我find了答案。 Bundler 1.5.0有一个错误,它不能识别这里引用的默认gem

解决方法是使用gem install bundler -v '= 1.5.1'更新到bundler gem install bundler -v '= 1.5.1'

运行这个命令,然后一切都会好的

 sudo apt-get install libgmp-dev 

如果你在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 

我在这里find了解决scheme。 json版本1.8.1和ruby 2.2.3有问题,所以安装json 1.8.3版本。

 gem install json -v1.8.3 

你应该试试

 $ sudo gem install json -v '1.8.2' 

在我的情况下(Ubuntu 14.04),不直接工作,我不得不这样做:

 $ sudo apt-get install ruby-dev 

然后我可以安装gem,继续。 还有一个问题是通过以下方式解决的:

 $ sudo apt-get install libsqlite3-dev 

希望有所帮助。

要解决这个问题,只需运行:

bundle update

它会更新您的捆绑软件的版本。 然后运行:

bundle install

你的问题将得到解决。 这里解释得很好。

我试图让一个项目运行在我的本地开发框(OSX 10.6),使用Sinatra和Postgresql(通过主动logging),在rvm'druby2.1上运行,我遇到了这个错误。 我在这里find了我的答案: https : //github.com/wayneeseguin/rvm/issues/2511

我确切的问题 (在第一块日志条目之后):

尝试构buildgem的本机扩展时也会出现错误

答案是 :

rvm重装2.1.0 –disable-binary

解释 :

OSX没有包pipe理器,因此所有库都必须由用户手动安装,这使得dynamic链接二进制文件几乎是不可能的,正如您所看到的,(伪)静态链接二进制文件存在问题。

为了完整起见,我首先忘记了更新rvm( rvm get head ),后者又产生了一些其他的错误,但是一旦我这样做,仍然需要--disable-binary标志。

如果推荐的答案没有帮助,因为您已经在使用更新版本的捆绑软件。 尝试为我工作的解决scheme。

删除供应商文件夹内的所有内容 添加一行到你的gemfile

 gem 'json', '1.8.0' 

然后运行 ​​- bundle update json

1.8.1似乎是一个问题,所以回到1.8.0对我来说是个诀窍。

bundle update json 。 帮助通过。

对于OS X确保你有coreutils

 $ brew install coreutils $ bundle 

这似乎是Bundler中的一个错误,不能识别与ruby 2.x一起安装的默认gem。 即使使用最新版本的捆绑器(1.5.3),我仍然遇到了这个问题。

一个解决scheme是简单地从默认的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 

这样做后,捆绑器应该没有问题的gem定位。 请注意,我正在使用chruby。 如果你使用其他的Ruby经理,你必须相应地更新你的path。

我错过了C头文件解决scheme是为Xcode下载它,这是最好的方法。

 xcode-select --install 

希望能帮助到你。

我安装了最新版本的json:

 gem install json 

然后从Gemfile.lock中删除行json(1.8.1)并做了一个

 bundle install 

然后Gemfile.lock文件使用json(1.8.3),没有erros

Bundle未能安装json -v'1.8.1',并删除我的Gemfile.lock并再次运行包解决了这个问题。

切换ruby版本从1.9到2.2与rvm做了我的工作

对我而言,前面提到的一些答案从理解的angular度来看是有帮助的,但是那些解决了我的问题。

所以这就是我所做的解决问题。

  • 修改gemfile.lock来更新json(2.0.2)( 早些时候是1.8.3
  • 检查已安装的Bundler版本( Bundler -v命令)。 我安装了版本1.12.5
  • 安装捆绑软件版本1.11.2(使用gem install bundler -v '1.11.2'
  • 然后运行软件包安装

对于macOS Sierra:

我碰到这个错误当我在Rails( v4.2 )项目中使用bundler( v1.15.3 )。 对我来说,解决scheme是gem uninstall bundler -v '1.15.3'gem install bundler -v '1.14.6'