Ruby on rails ';要求';:无法加载这样的文件--';nokogiri\nokogiri';(LoadError)在运行“rails服务器”时`
我正在使用DevKit在Windows8.1上运行Ruby 2.2.1的干净安装。安装后,我运行: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) 它每次都会发生,我环顾四周,尝试了我发现的一切来修复它,但
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构建支持主题的讨论,您可能想参加或观看:
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回答:
gem卸载nokogiri
gem“nokogiri”,“>=1.6.7.rc”
添加到gem文件中捆绑安装
捆绑包更新nokogiri
ruby\u dir\lib\ruby\gems\2.2.0\gems\nokogiri-1.6.6.2\ext\nokogiri
extconf.rb
#376
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