2009-06-30 85 views
0

這是我第一次運行Ruby on Rails。如何在Windows上安裝Ruby的SQLite3擴展?

當運行「博客」應用程序,我得到的消息 「很抱歉,但出事了。 我們已經被告知這個問題,我們來看看它 不久。 「

然後我檢查代碼\博客\日誌\ 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。

我該如何解決這個問題?

回答

1

對於需要編譯擴展的Ruby附加組件,Windows可能非常難以正確配置,其中SQLite可能是其查找C頭文件的方式之一。

安裝完整的Cygwin環境,包括gcc和nmake,可能有助於解決其中一些問題。

只要有可能,嘗試找到所需插件的二進制版本以避免這樣的問題。

可能的參考,這可能有助於:

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

3

使用InstantRails

它正確設置Windows環境沒有任何麻煩。

安裝InstantRails後,您可以通過查找安裝目錄中的.exe來啓動GUI。然後點擊「I」圖標 - > Rails應用程序 - >打開Ruby控制檯窗口打開一個控制檯。

從InstantRails到現在已經有幾年了,運行「gem update --system」和「gem update rails」以獲得最新的RoR。

+1

http://www.expressionlab.com/2009/1/17/upgrading-instantrails-to-rails-2-2-on-windows 如果您在升級時遇到任何問題,這將有所幫助。 – 2009-06-30 16:46:32

0

這很簡單,一旦你接受在Ruby世界中,Windows版本往往落後於* nix之後。

Rails Wiki上有說明(向下滾動到「Windows」部分)。他們建議將sqlite3.dll文件放在windows/system32中,我個人不願意這樣做。 PATH上的任何地方都可以這樣做:我自己把它放在紅寶石/垃圾桶裏。

1

在這個時候,你有問題已經修復。

我會推薦閱讀this tutorial,它解釋了使用較新的Ruby Installers for Windows安裝Ruby + SQLite3的所有步驟。

這些指令的唯一的更新將在this news announcement

希望幫助描述從RubyForge下載的最新RC1。