Ruby on rails ';要求';:无法加载这样的文件--';nokogiri\nokogiri';(LoadError)在运行“rails服务器”时`

Ruby on rails ';要求';:无法加载这样的文件--';nokogiri\nokogiri';(LoadError)在运行“rails服务器”时`,ruby-on-rails,ruby,nokogiri,Ruby On Rails,Ruby,Nokogiri,我正在使用DevKit在Windows8.1上运行Ruby 2.2.1的干净安装。安装后,我运行: gem install rails rails new testapp cd testapp rails server 其他一切都默认 当我没有运行服务器,而是收到错误消息时,进程在最后一行失败 in 'require': cannot load such file -- 'nokogiri\nokogiri' (LoadError) 它每次都会发生,我环顾四周,尝试了我发现的一切来修复它,但

我正在使用DevKit在Windows8.1上运行Ruby 2.2.1的干净安装。安装后,我运行:

gem install rails
rails new testapp
cd testapp
rails server
其他一切都默认

当我没有运行服务器,而是收到错误消息时,进程在最后一行失败

in 'require': cannot load such file -- 'nokogiri\nokogiri' (LoadError)
它每次都会发生,我环顾四周,尝试了我发现的一切来修复它,但到目前为止没有任何效果


这里的问题是什么?如何让一个简单的测试Rails应用程序工作?

Nokogiri还不支持Windows上的Ruby 2.2。下一版本将发布。看

Nokogiri不支持Windows上的本机版本(例如使用devkit)。相反,它提供了包含预构建DLL的gems

这里有一个关于devkit构建支持主题的讨论,您可能想参加或观看:

  • 首先,卸载您当前使用的Nokogiri版本:

    gem uninstall nokogiri
    
  • 下载或

  • 使用以下命令在本地安装此版本:

    gem install --local C:\Users\$user$\Downloads\nokogiri-1.6.6.2-x64-mingw32.gem
    
    或者,如果您运行的是32位Ruby:

    gem install --local C:\Users\$user$\Downloads\nokogiri-1.6.6.2-x86-mingw32.gem
    
    路径可能会有所不同,具体取决于您将文件下载到的位置


  • 尝试使用ruby bin\rails服务器重新启动服务器,它应该可以工作。

    我让Nokogiri在Windows 10上使用ruby 2.2运行,并混合了Mike Dalessios和Julios回答:

  • 在中查找Nokogiri的最新版本
  • 运行
    gem卸载nokogiri
  • gem“nokogiri”,“>=1.6.7.rc”
    添加到gem文件中
  • 运行
    捆绑安装
  • 如果捆绑包已将nokogiri锁定在某个版本,请运行
    捆绑包更新nokogiri
  • 修理
  • 捆绑安装(获取Nokogiri文件)
  • 浏览至
    ruby\u dir\lib\ruby\gems\2.2.0\gems\nokogiri-1.6.6.2\ext\nokogiri
  • 打开
    extconf.rb
  • 添加目录配置('iconv')。有吗?或pkg#u config('libiconv')至
    #376
  • 将它们添加到Windows中的
    PATH
    (删除
    Devkit
    PATH refs-它不起作用)
  • (或)
  • 运行
    rubyextconf.rb--platform=ruby--n--使用系统库
    引用下载的库
  • 运行
    make
  • 运行
    makeinstall

  • 台阶 捆绑安装

    第一步是打包

    这将把
    nokogiri
    gem放在您的机器上,而不运行预打包的编译器(它在Windows中通常不工作)

    这将显示已安装的Nokogiri:

    浏览

    浏览到
    nokogiri
    文件夹,找到
    ext/nokogiri/extconf.rb

    打开
    extconf.rb

    。。。并添加
    dir\u config('iconv')。有吗?或pkg#u config('libiconv')
    #376

    标准Nokogiri安装“依赖”于
    libxml2
    包含的
    iconv
    -我们需要明确定义它,否则
    iconv.h丢失将发生错误

    添加工具链

    不要为此使用
    devkit
    ——它不起作用

    您需要
    MinGW

    我已压缩了确切的
    MinGW64
    MSYS64
    文件夹(键:
    !FJtcq25l-qmsnlctxllmhc1igqorvap8xv8gwxsubda
    ):

    添加到路径

    这样就可以访问
    gcc
    make
    (两者都是必需的):

    从路径中删除
    devkit
    ref,并添加以下内容:

    • MINGW64_路径/垃圾箱
    • MSYS64_路径/bin
    下载Libs

    我已将LIB添加到Mega:

    您将在此处解压缩它们:

    所有的lib都来自于

    运行
    extconf.rb

    在系统上安装lib后,可以运行
    ruby extconf.rb
    来配置构建:

    32位

    ruby extconf.rb--platform=ruby-N--use系统库--with-xml2-dir=C:/Dev/Dependencies/ruby/lib/nokogiri/32bit/libxml2-2.9.2-win32-x86--with-xml2-include=C:/Dev/Dependencies/ruby/lib/nokogiri/32bit/iconv-1.14-win32-x86--使用xslt dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/libxslt-1.1.28-win32-x86

    64位

    #64
    ruby extconf.rb--platform=ruby-N--use system libraries--with-xml2-dir=C:/Dev/Dependencies/ruby/lib/nokogiri/64bit/libxml2-2.9.2-win32-x86_64--with-xml2-include=C:/Dev/Dependencies/ruby/lib/nokogiri/64bit/libxml2-2.9.2-win32-x86_64----使用xslt dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/64位/libxslt-1.1.28-win32-x86_64

    make

    这可能会产生错误/警告,只要它显示“
    Error 1(ignored)
    ”,就可以了

    然后,使用
    进行安装

    然后浏览到您的Rails安装并运行
    Rails s


    解释 要给出上下文:

    Windows上的Ruby 2.2+没有编译Nokogiri需要的扩展

    gem的扩展是它使用的额外依赖项(库)

    它们是在安装gem时生成的:


    由于缺少扩展,Nokogiri无法运行

    扩展存在于gem()的
    ext
    文件夹中:

    Mysql2
    RMagick
    PGSQL
    Nokogiri
    等都使用扩展/库

    这就是为什么在Windows上安装gem时必须使用自定义开关(
    --with opt dir
    )。这为Ruby/the shell/(
    cmd
    )提供了所需的
    l