1

我刚刚升级到 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 甚至不会创建默认骨架,因为一些随机错误 ("raise NotImplementedError, "No random device") 在 " activesupport/lib/active_support/secure_random.rb" 。我已经用谷歌搜索并用来自github的另一个版本替换了它。这创建了骨架,但是尝试运行服务器我得到了同样的错误,即使它是 Rails 默认的虚拟应用程序. 我将再次尝试破解该文件,再次不知道 OpenSSL 首先在这里做什么并且需要 DLL。

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

4

5 回答 5

5

毕竟这是一个 DLL 问题,使用了 1.8.6、x32 MySQL 和 OpenSSL,解压了这篇优秀博文中提到的每个 dll ,一切都再次顺利运行,天哪!是的,毕竟我已经回答了我自己的问题 :-) 谢谢!

于 2009-12-28T09:48:41.107 回答
2

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


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

建议您禁用/卸载 FRAPS。


那为我修好了。

于 2013-11-09T02:24:34.540 回答
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 应用程序。

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

于 2011-01-05T06:46:46.927 回答
1

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

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

于 2011-01-11T20:10:23.230 回答
0

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

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

于 2009-12-27T16:28:17.247 回答