2009-08-29 115 views
4

我剛升級到雪豹。之前,我對一切都運行良好,但現在當我從終端啓動服務器,我得到:Snow Leopard&Ruby on Rails - SQLite3問題

=> Booting WEBrick 
=> Rails 2.3.3 application starting on http://0.0.0.0:3000 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 
[2009-08-28 23:18:19] INFO WEBrick 1.3.1 
[2009-08-28 23:18:19] INFO ruby 1.8.7 (2008-08-11) [universal-darwin10.0] 
[2009-08-28 23:18:19] INFO WEBrick::HTTPServer#start: pid=845 port=3000 

然後當我到生成的頁面,好像它不與sqlite3的工作。我該如何解決?下面是當我去一個腳本視圖頁面是服務器的打印出:

/!\ FAILSAFE /!\ Fri Aug 28 23:18:34 -0400 2009 
    Status: 500 Internal Server Error 
    uninitialized constant SQLite3::Driver::Native::Driver::API 
    /Library/Ruby/Gems/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:105:in `const_missing' 
    /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.2.5/lib/sqlite3/driver/native/driver.rb:76:in `open' 
    /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.2.5/lib/sqlite3/database.rb:76:in `initialize' 
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/sqlite3_adapter.rb:13:in `new' 
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/sqlite3_adapter.rb:13:in `sqlite3_connection' 
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:223:in `send' 
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:223:in `new_connection' 
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:245:in `checkout_new_connection' 
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:188:in `checkout' 
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:184:in `loop' 
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:184:in `checkout' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize' 
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:183:in `checkout' 
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:98:in `connection' 
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:326:in `retrieve_connection' 
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:123:in `retrieve_connection' 
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:115:in `connection' 
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/query_cache.rb:9:in `cache' 
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/query_cache.rb:28:in `call' 
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call' 
    /Library/Ruby/Gems/1.8/gems/rack-1.0.0/lib/rack/head.rb:9:in `call' 
    /Library/Ruby/Gems/1.8/gems/rack-1.0.0/lib/rack/methodoverride.rb:24:in `call' 
    /Library/Ruby/Gems/1.8/gems/actionpack-2.3.3/lib/action_controller/params_parser.rb:15:in `call' 
    /Library/Ruby/Gems/1.8/gems/actionpack-2.3.3/lib/action_controller/session/cookie_store.rb:93:in `call' 
    /Library/Ruby/Gems/1.8/gems/actionpack-2.3.3/lib/action_controller/reloader.rb:29:in `call' 
    /Library/Ruby/Gems/1.8/gems/actionpack-2.3.3/lib/action_controller/failsafe.rb:26:in `call' 
    /Library/Ruby/Gems/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in `call' 
    /Library/Ruby/Gems/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in `synchronize' 
    /Library/Ruby/Gems/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in `call' 
    /Library/Ruby/Gems/1.8/gems/actionpack-2.3.3/lib/action_controller/dispatcher.rb:106:in `call' 
    /Library/Ruby/Gems/1.8/gems/rails-2.3.3/lib/rails/rack/static.rb:31:in `call' 
    /Library/Ruby/Gems/1.8/gems/rack-1.0.0/lib/rack/urlmap.rb:46:in `call' 
    /Library/Ruby/Gems/1.8/gems/rack-1.0.0/lib/rack/urlmap.rb:40:in `each' 
    /Library/Ruby/Gems/1.8/gems/rack-1.0.0/lib/rack/urlmap.rb:40:in `call' 
    /Library/Ruby/Gems/1.8/gems/rails-2.3.3/lib/rails/rack/log_tailer.rb:17:in `call' 
    /Library/Ruby/Gems/1.8/gems/rack-1.0.0/lib/rack/content_length.rb:13:in `call' 
    /Library/Ruby/Gems/1.8/gems/rack-1.0.0/lib/rack/handler/webrick.rb:46:in `service' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:162:in `start' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:95:in `start' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:92:in `each' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:92:in `start' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:23:in `start' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:82:in `start' 
    /Library/Ruby/Gems/1.8/gems/rack-1.0.0/lib/rack/handler/webrick.rb:13:in `run' 
    /Library/Ruby/Gems/1.8/gems/rails-2.3.3/lib/commands/server.rb:111 
    /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
    /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require' 
    script/server:3 
+0

我正在用rails 2.3.3和sqlite3運行Snow Leopard,沒有問題,所以我會在其他地方尋找這個問題。 – ennuikiller 2009-08-29 04:03:30

+0

你安裝了xcode 3.2嗎? – devinross 2009-08-29 04:14:19

+0

是的,安裝Xcode 3.2和iPhone SDK的3.0雪豹 – ennuikiller 2009-08-29 04:54:45

回答

10

如果從豹升級,那麼你就需要重新安裝sqlite3的,紅寶石的寶石。首先安裝XCode,然後運行:

sudo gem install sqlite3-ruby 
+0

我想我沒有必要這樣做,因爲我有紅寶石1.9.1作爲我的默認版本 – ennuikiller 2009-08-29 05:03:50

+0

SQLite寶石爲您所在的平臺編譯本地組件。雪豹是64位,與豹有很大不同。強制紅寶石重建本地組件應該解決問題(它對我來說)。 – askegg 2009-08-29 05:31:24

+0

你如何重建? – devinross 2009-08-29 05:51:58

0

您應該從Snow Leopard DVD重新安裝XCode。這應該解決聯動問題!

2

如果您從XCode安裝程序安裝了UNIX開發工具,則應包含必需的頭文件(ruby.h)。

0

我剛碰到這個問題。這是我落得這樣做:

RM -fr〜/ .gem
sudo的創業板安裝導軌
sudo的創業板安裝sqlite3的,紅寶石

現在我的導軌/ sqlite3的應用程序重新運行。

1

sudo的港口安裝sqlite3的 sudo的創業板安裝sqlite3的,紅寶石

0

另一個可能的原因這個問題是繼續使用在Leopard與RVM(http://rvm.beginrescueend.com/)安裝Ruby版本升級到雪豹後。用RVM安裝

Ruby版本是從源代碼構建,需要在Snow Leopard上重新安裝與sqlite3的,紅寶石的寶石工作。

0

我有類似的問題。如果你看一下堆棧跟蹤,你可以看到該文件引發錯誤是內部的sqlite-紅寶石本身:

def open(filename, utf16=false) 
    API.send(utf16 ? :sqlite3_open16 : :sqlite3_open, filename) 
end 

所以API類丟失。在該文件的頂部是下面的代碼,這表明該API類是從需要sqlite3_api文件:

begin 
    require 'sqlite3_api' 
rescue LoadError 
    if RUBY_PLATFORM =~ /mingw|mswin/ then 
    RUBY_VERSION =~ /(\d+.\d+)/ 
    require "#{$1}/sqlite3_api" 
    end 
end 

正如你看到的,這個代碼將忽略比的MinGW/mswin其他平臺LoadError。這很糟糕,而且我會考慮sqlite3-ruby gem中的一個錯誤。要弄清楚什麼是錯的,需要嘗試在sqlite3_api IRB:

$ irb 
irb(main):001:0> require 'sqlite3_api' 
LoadError: Unable to find library 'libsqlite3.so.8'. - /path/to/ruby/lib/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5/lib/sqlite3_api.sl 
     from (irb):1:in `require' 
     from (irb):1 
     from /path/to/ruby/bin/irb:12:in `<main>' 
irb(main):002:0> 

情況因人而異,但對我來說,我意識到,我是缺少我的共享庫路徑的東西。一旦我糾正這一切,一切都奏效。

0

出於某種原因,這並沒有爲我工作太清楚了。

我不得不基本從頭開始,按照以下說明: http://hivelogic.com/articles/ruby-rails-leopard從「設置」階段。

  • 安裝的XCode
  • 下載的Ruby 1.8.7
  • 重新編譯和安裝(我認爲這是神奇的一步我失蹤)
  • 下載RubyGems的1.3.5(1.3.6有一些東西過時我不想處理)
  • 重新編譯和安裝的RubyGems
  • 然後卸載的sqlite3:sudo的創業板卸載的sqlite3-ruby的
  • 重新安裝:sudo的寶石研究所所有sqlite3-ruby

要清楚,我嘗試了上述步驟。我嘗試安裝XCode。我嘗試重新編譯Rubygems ...只有當我重新編譯Ruby本身,然後Rubygems,然後卸載並重新安裝sqlite3-ruby做了清理。

我希望這會有所幫助。

0

我所做的這一切......只爲我工作的事情是

sudo env ARCHFLAGS="-arch x86_64" gem install sqlite3-ruby 

注:我也有從devloper.apple.com安裝的XCode,而不是CD。 XCode工具的CD安裝沒有爲我解決這個問題。

如果您沒有安裝任何XCode,則可能需要從http://developer.apple.com/xcode獲取XCode 3或4。您需要註冊一個帳戶。目前,您可以免費下載XCode 3,無需支付99美元的年費。