如何在Windows上安装Ruby的SQLite3扩展?

时间:2009-06-30 14:54:29

标签: ruby-on-rails ruby

这是我第一次运行Ruby on Rails。

运行“ blog ”应用程序时,我收到了消息 “我们很抱歉,但有些不对劲。 我们已经收到有关此问题的通知,我们将对此进行审核 不久“。

然后我检查了CODE \ blog \ log \ development.log并得到了这个:

/!\ FAILSAFE /!\  Tue Jun 30 15:22:55 +0100 2009
 Status: 500 Internal Server Error
 no such file to load -- sqlite3
   c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`gem_original_require'
   c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`require'
   c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/
active_support/dependencies.rb:156:in `require'
   c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/
active_support/dependencies.rb:521:in `new_constants_in'
   c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/
active_support/dependencies.rb:156:in `require'
   c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/
active_support/core_ext/kernel/requires.rb:7:in
`require_library_or_gem'
   c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/
active_support/core_ext/kernel/reporting.rb:11:in `silence_warnings'
   c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/
active_support/core_ext/kernel/requires.rb:5:in
`require_library_or_gem'
   c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/connection_adapters/sqlite3_adapter.rb:10:in
`sqlite3_connection'
   c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/connection_adapters/abstract/connection_pool.rb:223:in
`send'
   c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/connection_adapters/abstract/connection_pool.rb:223:in
`new_connection'
   c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/connection_adapters/abstract/connection_pool.rb:245:in
`checkout_new_connection'
   c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/connection_adapters/abstract/connection_pool.rb:188:in
`checkout'
   c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/connection_adapters/abstract/connection_pool.rb:184:in
`loop'
   c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/connection_adapters/abstract/connection_pool.rb:184:in
`checkout'
   c:/ruby/lib/ruby/1.8/monitor.rb:242:in `synchronize'
   c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/connection_adapters/abstract/connection_pool.rb:183:in
`checkout'
   c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/connection_adapters/abstract/connection_pool.rb:98:in
`connection'
   c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/connection_adapters/abstract/connection_pool.rb:326:in
`retrieve_connection'
   c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/connection_adapters/abstract/connection_specification.rb:
123:in `retrieve_connection'
   c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/connection_adapters/abstract/connection_specification.rb:
115:in `connection'
   c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/query_cache.rb:9:in `cache'
   c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/query_cache.rb:28:in `call'
   c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/connection_adapters/abstract/connection_pool.rb:361:in
`call'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/vendor/rack-1.0/rack/head.rb:9:in `call'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/vendor/rack-1.0/rack/methodoverride.rb:24:in `call'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/params_parser.rb:15:in `call'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/rewindable_input.rb:25:in `call'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/session/cookie_store.rb:93:in `call'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/reloader.rb:9:in `call'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/failsafe.rb:11:in `call'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/vendor/rack-1.0/rack/lock.rb:11:in `call'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/vendor/rack-1.0/rack/lock.rb:11:in `synchronize'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/vendor/rack-1.0/rack/lock.rb:11:in `call'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/dispatcher.rb:106:in `call'
   c:/ruby/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/rails/rack/
static.rb:31:in `call'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/vendor/rack-1.0/rack/urlmap.rb:46:in `call'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/vendor/rack-1.0/rack/urlmap.rb:40:in `each'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/vendor/rack-1.0/rack/urlmap.rb:40:in `call'
   c:/ruby/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/rails/rack/
log_tailer.rb:17:in `call'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/vendor/rack-1.0/rack/content_length.rb:13:in `call'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/vendor/rack-1.0/rack/handler/webrick.rb:46:in
`service'
   c:/ruby/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
   c:/ruby/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
   c:/ruby/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
   c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start'
   c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
   c:/ruby/lib/ruby/1.8/webrick/server.rb:95:in `start'
   c:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `each'
   c:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `start'
   c:/ruby/lib/ruby/1.8/webrick/server.rb:23:in `start'
   c:/ruby/lib/ruby/1.8/webrick/server.rb:82:in `start'
   c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/
action_controller/vendor/rack-1.0/rack/handler/webrick.rb:13:in `run'
   c:/ruby/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/commands/server.rb:
111
   c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`gem_original_require'
   c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`require'
   script/server:3

我已经尝试过了:

gem install sqlite3

得到了这个回应。

ERROR:  could not find gem sqlite3 locally or in a repository

我也尝试过:

gem install sqlite3-ruby

得到了这个回应。

Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3-ruby:
       ERROR: Failed to build gem native extension.

c:/ruby/bin/ruby.exe extconf.rb
checking for fdatasync() in rt.lib... no
checking for sqlite3.h... no

nmake
'nmake' is not recognized as an internal or external command,
operable program or batch file.

Gem files will remain installed in c:/ruby/lib/ruby/gems/1.8/gems/
sqlite3-ruby-1
.2.4 for inspection.
Results logged to c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/
ext/sqlite3_
api/gem_make.out

我使用XAMPP(Apache + MySQL + PHP)运行Windows XP。

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:3)

使用InstantRails

它可以正确设置Windows环境而不会有任何麻烦。

安装InstantRails后,可以通过在安装目录中找到.exe来启动GUI。然后点击“我”图标 - > Rails应用程序 - >打开Ruby控制台窗口以打开控制台。

运行“gem update --system”和“gem update rails”以获取最新的RoR,因为此时InstantRails还有几年的历史。

答案 1 :(得分:1)

对于需要编译扩展的Ruby附加组件,Windows可能很难正确配置,其中SQLite可能就像查找C头文件一样。

安装包含gcc和nmake的完整Cygwin环境可能有助于解决其中一些问题。

尽可能尝试查找所需插件的二进制版本以避免此类问题。

可能有用的参考资料:

http://domhackers.blogspot.com/2008/09/sqlite3-ruby-gem-on-windows.html

答案 2 :(得分:1)

目前,您遇到的问题已经解决。

我建议阅读this tutorial,它解释了使用较新的Ruby安装程序for Windows设置Ruby + SQLite3的所有步骤。

指令的唯一更新将是从RubyForge下载最新的RC1,如this news announcement

中所述

希望有所帮助。

答案 3 :(得分:0)

一旦你接受在Ruby世界中,Windows版本往往落后于* nix的版本,这很简单。

Rails Wiki上有说明(向下滚动到“Windows”部分)。他们建议将sqlite3.dll文件放在windows / system32中,我个人不愿意这样做。 PATH上的任何地方都可以:我把它放在ruby / bin中,我自己。

答案 4 :(得分:0)

根据Joe Schneider的建议尝试更新InstantRails时,您可能会收到一些HTTP 403或503错误(我几天前做过)。由于InstantRails很老,因此无法直接更新。查看这篇文章,您将在几分钟内启动并运行,我甚至不愿意在Windwos上安装ruby - InstantRails是要走的路......

http://www.expressionlab.com/2009/1/17/upgrading-instantrails-to-rails-2-2-on-windows