Ruby on Rails Win7 x64?

时间:2009-12-27 14:51:11

标签: ruby-on-rails ruby rubygems ruby-on-rails-plugins windows-7-x64

我刚刚升级到Win7 x64 Professional并想重新开发我的Rails应用程序,但是我收到以下错误:

=> Booting Mongrel
=> Rails 2.3.5 application starting on http://127.0.0.1:3344
D:/nu codes/R/ruby-1.8.7-p174-i386-mswin32/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:271:in `require_frameworks': 193: %1 is not a valid Win32 application.   - D:/nu codes/R/ruby-1.8.7-p174-i386-mswin32/lib/ruby/1.8/i386-mswin32/openssl.so (RuntimeError)
from D:/nu codes/R/ruby-1.8.7-p174-i386-mswin32/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:134:in `process'
from D:/nu codes/R/ruby-1.8.7-p174-i386-mswin32/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113:in `send'
from D:/nu codes/R/ruby-1.8.7-p174-i386-mswin32/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113:in `run'
from D:/nu codes/R/Aptana/tempproj/config/environment.rb:9
from D:/nu codes/R/ruby-1.8.7-p174-i386-mswin32/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from D:/nu codes/R/ruby-1.8.7-p174-i386-mswin32/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from D:/nu codes/R/ruby-1.8.7-p174-i386-mswin32/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:156:in `require'
from D:/nu codes/R/ruby-1.8.7-p174-i386-mswin32/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:521:in `new_constants_in'
from D:/nu codes/R/ruby-1.8.7-p174-i386-mswin32/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:156:in `require'
from D:/nu codes/R/ruby-1.8.7-p174-i386-mswin32/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/commands/server.rb:84
from D:/nu codes/R/ruby-1.8.7-p174-i386-mswin32/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from D:/nu codes/R/ruby-1.8.7-p174-i386-mswin32/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from D:/nu codes/R/Aptana/tempproj/script/server:3
from -e:1:in `load'
from -e:1

Process finished with exit code 1
尝试运行服务器时

。通过将所需的.dll复制到我的ruby \ bin目录中,我减轻了有关OpenSSL和Iconv的所有错误。我对这个问题很难过,难道我现在正在运行x64吗?我不知道,至少其他堆栈跟踪命名为.dll导致它。

宝石列表:

*** LOCAL GEMS ***
actionmailer (2.3.5)
actionpack (2.3.5)
activerecord (2.3.5)
activeresource (2.3.5)
activesupport (2.3.5)
authlogic (2.1.3)
cgi_multipart_eof_fix (2.5.0)
gem_plugin (0.2.3)
mongrel (1.1.5)
mysql (2.8.1)
rack (1.0.1)
rails (2.3.5)
rake (0.8.7)

我也在运行MySQL v5.1.41-community。我将尝试安装MySQL 5.0。

  • 更新:我必须说我从未在项目中使用OpenSSL,所以我必须说我很困惑,首先需要它。试图看看它是否是一个Rails错误,我创建了一个虚拟应用程序(rails bla)和rails甚至不会创建默认骨架,因为一些随机错误(“引发NotImplementedError,”没有随机设备“)弹出” activesupport / lib / active_support / secure_random.rb“。我用Google搜索并将其替换为github中的另一个版本。这创建了骨架,但尝试运行服务器我得到了相同的错误,即使它是Rails默认的虚拟应用程序。我会再次尝试入侵该文件,再次不知道OpenSSL在这里做了什么,并且需要DLL。

不知所措,任何帮助都将不胜感激。 提前谢谢!

5 个答案:

答案 0 :(得分:5)

毕竟这是一个DLL问题,去了1.8.6,x32 MySQL和OpenSSL,解压每个提到的in this excellent blog post所有的dll并且它们再次顺利运行,天啊!是的,毕竟我已回答了我自己的问题:-)谢谢!

答案 1 :(得分:2)

这帮助了我https://github.com/oneclick/rubyinstaller/wiki/Troubleshooting#wiki-fraps_violation


经过调查,拥有改变加载DLL的工具(如FRAPS或Detours)会影响加载Ruby的扩展。

建议您禁用/卸载FRAPS。


为我修好了。

答案 2 :(得分:1)

对于Rails或DataMapper或与MySQL交谈的任何内容,您需要在Rails \ bin中使用32位驱动程序。该驱动程序称为libmysql.dll。即使您有64位服务器,也需要32位驱动程序。

64位驱动程序将失败将ruby / gems / 1.8 / gems / do_mysql-0.10.2-x86-mingw32 / lib / do_mysql / 1.8 / do_mysql.so:193:%1不是有效的Win32应用程序。< / p>

错误的32位版本会因内存分配错误或类似奇怪的内容而崩溃

答案 3 :(得分:1)

LoadError:193:%1不是有效的Win32应用程序。 当我尝试在irb中加载mysql ruby​​ gem时,我收到了这个消息。 问题:libmysql.dll必须是在history.txt中找到的相同版本的mysql              ruby mysql gem

修复:(1)转到mysql gem的readme.txt和history.txt并验证mysql              版。          (2)安装相应的mysql版本。          (3)将libmysql.dll文件从mysql bin目录复制到ruby bin目录。          (4)返回ruby irb并输入“require'rubygems'”然后“require'mysql'”          (5)当你看到“真实”时说“yeaaah”! 注意:您可能不需要安装所需的mysql版本以获得正确的版本       libmysql.dll文件。我刚刚发现安装它更容易。如果你像我一样,这个问题是如此令人烦恼,我想放弃编写程序。所以,我希望这个解决方案能够恢复你的信心。

答案 4 :(得分:0)

看看这是否有帮助:http://www.technipages.com/error-193-1-is-not-a-valid-win32-application.html

根据本文中提到的,您的D:/驱动器中是否有一个名为“nu”的文件夹?如果是,请尝试重命名并检查服务器是否正常运行。