Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby gem Nokogiri 1.9.1在具有不同LibXML版本的Mac上失败_Ruby_Nokogiri_Libxml2_Macos High Sierra - Fatal编程技术网

Ruby gem Nokogiri 1.9.1在具有不同LibXML版本的Mac上失败

Ruby gem Nokogiri 1.9.1在具有不同LibXML版本的Mac上失败,ruby,nokogiri,libxml2,macos-high-sierra,Ruby,Nokogiri,Libxml2,Macos High Sierra,我真的很讨厌Ruby/Rails中的这些更新 我有一台Mac High Sierra OSX 10.13。我上次使用Ruby/Rails大约是一年前,所以我当然需要更新东西。我已经在更新转盘上转了一圈又一圈,但我坚持的是: Nokogiri was built against LibXML version 2.9.4, but has dynamically loaded 2.7.8 我在旧版本的Nokogiri和LibXML中发现了很多问题,但在这些新版本中却没有。我也试过了所有的答案 我想

我真的很讨厌Ruby/Rails中的这些更新

我有一台Mac High Sierra OSX 10.13。我上次使用Ruby/Rails大约是一年前,所以我当然需要更新东西。我已经在更新转盘上转了一圈又一圈,但我坚持的是:

Nokogiri was built against LibXML version 2.9.4, but has dynamically loaded 2.7.8
我在旧版本的Nokogiri和LibXML中发现了很多问题,但在这些新版本中却没有。我也试过了所有的答案

我想问题可能是我在旅行前更新了xcode(尽管我从来没有使用过它,我更喜欢sublime),现在我已经安装了OSX 10.14的xcode

有没有什么方法可以让Nokogiri根据2.7.8构建?我只想向一个班级演示RubyonRails有多酷(现在我一点也不觉得它酷)。我试过了

但它仍然是基于libxml2.9.4构建的

很想在2018年解决这个问题:)

根据它的:

brew安装libxml2

如果直接安装 gem安装nokogiri--use系统库--with-xml2-include=$(brew--前缀libxml2)/include/libxml2

如果使用Bundle bundle config build.nokogiri--使用系统库--with-xml2-include=$(brew--前缀libxml2)/include/libxml2

捆绑安装

根据其:

brew安装libxml2

如果直接安装 gem安装nokogiri--use系统库--with-xml2-include=$(brew--前缀libxml2)/include/libxml2

如果使用Bundle bundle config build.nokogiri--使用系统库--with-xml2-include=$(brew--前缀libxml2)/include/libxml2


捆绑安装

。。。它在我的机器上工作…;-)

尽管Nokogiri教程建议以复杂的方式手工制作本地环境-请参阅 -如果我坚持这些建议中的任何一个,我都会提前退出并尝试更新系统库的方向,而不是试图让Nokogiri在旧的基础上构建,如果你使用bundler安装gem,你无论如何都不会想手工安装gem。(除了故障排除,反复尝试这个gem,直到它工作,然后确保bundler也可以这样做-但是安装Nokogiri不是这里的问题)

。。。因为:虽然最终您可能不想在web服务器上安装,但遵循中所述的声明和隔离应用程序依赖项的原则仍然是一个好主意

bundler和rvm(或rbenv)是ruby/rails世界中实现这一点的工具(或者,就这点而言,bundler和docker,在那种情况下我不推荐)

如果它仍然不能与rvm一起工作,我将执行以下操作:

  • 将rvm与宝石一起使用
  • 确保当前shell使用您想要的确切gemset和ruby版本。总是

    rvm使用2.5。1@my-gemset--create--ruby版本

(使用适当的ruby版本)创建ruby版本+gemset组合,并在目录中创建.ruby-*文件,确保在该目录中cd时使用此gemset。我所有的rails应用程序都有这个。 上面的路径显示rvm在一个目录中抛出一个ruby版本的所有gem)

  • 删除gemset中的所有gems:
    $rvm gemset empty
  • 并重新安装:
  • 运行:
    $gem安装捆绑程序
  • 然后:
    $bundle安装
(让rvm确保你的应用程序/rails/bundler不会在你的系统范围内或rvm ruby版本范围内的gem文件夹中找到任何其他版本的gem,这是一种粗鲁但有效的方法-你的日志中没有显示Nokogiri的实际运行版本)

您可以使用'ls$(rvm gemset dir)/gems检查gems集中的宝石


注意:本主题的堆栈溢出答案之一建议将
gemrails
放在Gemfile的顶部:

事实上,启动rails时,文件顺序非常重要:


所以这可能也是个好主意

。。。它在我的机器上工作…;-)

尽管Nokogiri教程建议以复杂的方式手工制作本地环境-请参阅 -如果我坚持这些建议中的任何一个,我都会提前退出并尝试更新系统库的方向,而不是试图让Nokogiri在旧的基础上构建,如果你使用bundler安装gem,你无论如何都不会想手工安装gem。(除了故障排除,反复尝试这个gem,直到它工作,然后确保bundler也可以这样做-但是安装Nokogiri不是这里的问题)

。。。因为:虽然最终您可能不想在web服务器上安装,但遵循中所述的声明和隔离应用程序依赖项的原则仍然是一个好主意

bundler和rvm(或rbenv)是ruby/rails世界中实现这一点的工具(或者,就这点而言,bundler和docker,在那种情况下我不推荐)

如果它仍然不能与rvm一起工作,我将执行以下操作:

  • 将rvm与宝石一起使用
  • 确保当前shell使用您想要的确切gemset和ruby版本。总是

    rvm使用2.5。1@my-gemset--create--ruby版本

(使用适当的ruby版本)创建ruby版本+gemset组合,并在目录中创建.ruby-*文件,确保在该目录中cd时使用此gemset。我所有的rails应用程序都有这个。 上面的路径显示rvm在一个目录中抛出一个ruby版本的所有gem)

  • 删除gemset中的所有gems:
    $rvm gemset empty
  • 并重新安装:
  • 运行:
    $gem安装捆绑程序
  • 然后:
    $bundle安装
(这是让rvm确保您的应用程序/rails/bun
gem install nokogiri -- --use-system-libraries --with-libxml-prefix=/usr/local/Cellar/libxml2/2.7.8