Mys*_*ler 12 ruby ruby-on-rails
最近我在Windows上安装了Ruby 2.2.1和新的RubyInstaller.为了检查一切是否正常工作,我进入了一个rails应用程序并且运行bundle install正常.但是,当我运行测试时bunle exec rake test,我收到以下错误:
rake aborted!
LoadError: cannot load such file -- nokogiri/nokogiri
D:/Dev/Grummle/config/application.rb:7:in `<top (required)>'
D:/Dev/Grummle/Rakefile:4:in `<top (required)>'
LoadError: cannot load such file -- nokogiri/2.2/nokogiri
D:/Dev/Grummle/config/application.rb:7:in `<top (required)>'
D:/Dev/Grummle/Rakefile:4:in `<top (required)>'
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)
Bundler说是的Using nokogiri 1.6.5.此外,rake任务在Ruby 2.1.5中运行良好.我很欣赏有关如何解决问题的想法.谢谢!:)
Ric*_*eck 11
我想我在我的系统上工作了:

我不知道为了让这项工作做了什么,但我将分享我的所作所为:
带有Ruby 2.2+&的Windows问题Nokogiri是gem无法编译.Nokogiri要求libXML,libxslt并 libiconv为了它的工作.这些名义上是在编译gem install,但无论出于何种原因,这不会发生在Ruby 2.2+.
因此,为了安装gem(这与mysql2and的情况完全相同rmagick),您需要系统依赖(如上所述).
从Ruby 2.2+,似乎宝石将"安装"即使他们没有依赖于系统(而不是通过不在以前的版本中构建本机扩展来拒绝安装).出现的新运行时错误包括cannot load such file -- mysql2/2.2/mysql2 (LoadError)和nokogiri(cannot load such file -- nokogiri/nokogiri)的相应一个.
考虑到这一点,您必须了解宝石的安装和工作方式.一个很好的例子是mysql2gem - 要安装它,你需要下载MYSQL C-Connector插件,然后使用以下代码链接到依赖项:gem install mysql2 --platform=ruby?--?'--with-mysql-dir="C:\mysql-connector-path"'
有了Nokogiri,您需要拥有libxml,libiconv并且libxslt在您的系统上.我从这篇文章中了解到:

问题出现在这里.我不是百分百肯定我在这里做了什么让这个工作(甚至暂时).我知道我安装了Nokogiri宝石,然后开始使用编译宝石ruby extconf.rb(无论如何宝石都会这样做).考虑到这一点我认为有用,我将解释这是如何执行的.
gem通常会通过安装下载库.它将这些保存在ext/tmp/ports文件夹中.对于我的系统,下载libiconv是阻止安装完成的(错误CPPFLAGS).考虑到这一点,我认为如果安装了gem,并且如果它正在尝试构建,那么安装依赖项是明智的.
因此,我ruby ext/extconf.rb使用--use-system-libraries交换机处理过程:
"...\nokogiri>ruby extconf.rb --platform=ruby -N --use-system-libraries --w
ith-xml2-dir=C:\Users\Richard\Downloads\Ruby\libxml2-2.7.8.win32 --with-xml2-include=C:\Users
\Richard\Downloads\Ruby\libxml2-2.7.8.win32\include --with-xml2-lib=C:\Users\Ric
hard\Downloads\Ruby\libxml2-2.7.8.win32\lib --with-iconv-dir=C:\Users\Richard\Do
wnloads\Ruby\iconv-1.9.2.win32 --with-iconv-include=C:\Users\Richard\Downloads\R
uby\iconv-1.9.2.win32\include --with-iconv-lib=C:\Users\Richard\Downloads\Ruby\i
conv-1.9.2.win32\lib --with-zlib-dir=C:\Users\Richard\Downloads\Ruby\zlib-1.2.5"
我将此与下载上述库(以及一些无效的库)相结合:

我没有上述命令输出的记录,但我很确定它根据需要构建了扩展,最后是说编译了"Makefile".当a Makefile可用时,您应该能够使用nmake(Windows 7.1 SDK)或make(MingW)来运行它.我这样做了,似乎有效.
我今天尝试加载服务器,它似乎工作.
这是我现在最好的.
我可以根据需要回答评论等.
在他们为Ruby 2.2发布适当的nokogiri版本之前,我想与大家分享一些让它运行的步骤.
Paul Grant和Daniel Rikowski的积分帮助!
首先,我必须说我在Windows 8.1(64位)上运行Ruby 2.2.2p95(32位)并安装了Rails 4.2.3(以及Cygwin shell)
1)卸载nokogiri宝石(你需要确认,因为许多宝石依赖它)
2)下载由Paul Grant编写的nokogiri gem (对他来说是荣誉):https: //github.com/paulgrant999/ruby-2.2.2-nokogiri-1.6.6.2-x86-x64-mingw32.gem
3)安装本地gem(gem install --local path/to/gem)32位版本(在我的情况下)
如果您尝试在此处加载rails,则bcrypt将失败,因此,正如Daniel Rikowski 发布的那样,您可以构建您的bcrypt_ext.so文件.
4)确保你的路径上有DevKit(/devkit/bin和/devkit/mingw/bin)
5)转到bcrypt ext/mrigem子文件夹:(我正在使用Cygwin)
cd /cygdrive/c/Ruby22/lib/ruby/gems/2.2.0/gems/bcrypt-3.1.10-x86-mingw32/ext/mri
Run Code Online (Sandbox Code Playgroud)
6)调用ruby extconf.rb(生成Makefile)
7)打电话 make
(它将输出许多文件,包括bcrypt_ext.so文件)
8)复制bcrypt_ext.so到/cygdrive/c/Ruby22/lib/ruby/gems/2.2.0/gems/bcrypt-3.1.10-x86-mingw32/lib/2.2 文件夹.您必须创建此子文件夹.
而已!现在就开始使用rails服务器.像魅力一样工作!
Nokogiri在Windows 2.2上还没有Ruby 2.2.
https://github.com/sparklemotion/nokogiri/issues/1256
从本质上讲,nokogiri是针对特定的ruby版本进行预编译的,2.2还不是那些版本之一.为windows编译nokogiri过于复杂.
| 归档时间: |
|
| 查看次数: |
10845 次 |
| 最近记录: |