2011-06-02 54 views
0

當我運行「軌道服務器」我得到以下錯誤:麻煩Rails服務器入門

Could not find gem 'sqlite3 (>= 0, runtime)' in any of the gem sources listed in your Gemfile. 

我的Gemfile看起來是這樣的:gem 'sqlite3'

而且當我運行的端口命令它說,這無法識別該命令:

Mohammad-Azams-MacBook-Pro:blog azamsharp$ port install sqlite3 +universal 
-bash: port: command not found 

有什麼建議嗎?

UPDATE 1:

我運行須藤寶石安裝sqlite3的,並得到下面的消息:

Mohammad-Azams-MacBook-Pro:blog azamsharp$ sudo gem install sqlite3 
Building native extensions. This could take a while... 
ERROR: Error installing sqlite3: 
    ERROR: Failed to build gem native extension. 

/usr/local/bin/ruby extconf.rb 
checking for sqlite3.h... yes 
checking for sqlite3_libversion_number() in -lsqlite3... no 
sqlite3 is missing. Try 'port install sqlite3 +universal' 
or 'yum install sqlite3-devel' and check your shared library search path (the 
location where your sqlite3 shared library is located). 
*** extconf.rb failed *** 
Could not create Makefile due to some reason, probably lack of 
necessary libraries and/or headers. Check the mkmf.log file for more 
details. You may need configuration options. 

UPDATE 2:(Gemfile中的內容)

source 'http://rubygems.org' 

gem 'rails', '3.0.7' 

# Bundle edge Rails instead: 
# gem 'rails', :git => 'git://github.com/rails/rails.git' 

gem 'sqlite3' 

# Use unicorn as the web server 
# gem 'unicorn' 

# Deploy with Capistrano 
# gem 'capistrano' 

# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+) 
# gem 'ruby-debug' 
# gem 'ruby-debug19', :require => 'ruby-debug' 

# Bundle the extra gems: 
# gem 'bj' 
# gem 'nokogiri' 
# gem 'sqlite3-ruby', :require => 'sqlite3' 
# gem 'aws-s3', :require => 'aws/s3' 

# Bundle gems for the local environment. Make sure to 
# put test-only gems in this group so their generators 
# and rake tasks are available in development mode: 
# group :development, :test do 
# gem 'webrat' 
# end 

UPDATE 3:

Mohammad-Azams-MacBook-Pro:blog azamsharp$ port search sqlite3 -bash: port: command not found

UPDATE 4:

下載安裝後MacPorts的我跑了包重新安裝,這裏是結果:

Installing sqlite3 (1.3.3) with native extensions /usr/local/lib/ruby/site_ruby/1.8/rubygems/installer.rb:483:in build_extensions':錯誤:未能建立寶石原生擴展。 (寶石::安裝:: ExtensionBuildError)

在/ usr/local/bin目錄/紅寶石extconf.rb 檢查sqlite3.h ...是 檢查在-lsqlite3 sqlite3_libversion_number()...沒有 sqlite3的是失蹤。嘗試'端口安裝sqlite3 +通用' 或'yum install sqlite3-devel'並檢查共享庫搜索路徑(您的sqlite3共享庫所在的位置爲 )。 * extconf.rb失敗* 由於某種原因無法創建Makefile,可能缺少必要的庫和/或頭文件 。檢查mkmf.log文件以獲取更多 的詳細信息。您可能需要配置選項。

`

更新5:

這sqlite3的給了我下面的:

Mohammad-Azams-MacBook-Pro:blog azamsharp$ which sqlite3 
/opt/local/bin/sqlite3 

更新5:

其中-a sqlite3的給了我以下內容:

Mohammad-Azams-MacBook-Pro:blog azamsharp$ which -a sqlite3 
/opt/local/bin/sqlite3 
/usr/local/bin/sqlite3 
/usr/bin/sqlite3 
+0

嘗試「捆綁安裝; bundle exec rails server「或者」gem install sqlite3「? – 2011-06-02 16:55:36

+0

這真的是整個Gemfile嗎?頂部不應該有'source'嗎? – 2011-06-02 16:56:27

+0

@Craig Stuntz我只顯示一個因爲它有很多代碼行你想讓我粘貼完整的GemFile嗎? – azamsharp 2011-06-02 16:58:12

回答

3

如果您在討論/usr/local/bin/ruby extconf.rb checking for sqlite3.h時遇到問題,那麼它可能與macports有關。

首先,確保您已安裝xcode。兼營:

gcc 

,你應該得到:

i686-apple-darwin10-gcc-4.2.1: no input files 

如果你這樣做,那麼讓我們install homebrew

然後,命令的列表,安裝自制軟件,更新RubyGems和升級軌

brew install sqlite 
gem update --system 
gem install bundler 
gem install rails -v=3.0.8 

然後,檢查,rails -v應輸出Rails 3.0.7

+1

wolgabott再次襲擊! – 2011-06-08 13:18:35

+0

@Ben你不能阻止機器人,你只能希望遏制他! – 2011-06-08 13:34:00

+0

如果您在xcode之前安裝了rvm,您可能需要重新安裝ruby(當然是通過rvm)並重新創建並重新安裝您使用的gemset。 – Artur79 2012-07-20 13:45:43

2

如果您運行的是10.4或更低版本,則缺省安裝sqlite 3(實際的數據庫引擎,而不是gem)。你有3個選項(假設你的操作系統升級到10.5或10。6是不是一種選擇):

  1. 編譯源(不是那麼糟糕,因爲它的聲音)http://www.sqlite.org/download.html
  2. 安裝MacPorts的(爲什麼沒有被發現的端口命令)http://www.macports.org/install.php
  3. 不要使用SQLite。而是使用mysql或您選擇的其他數據庫。

如果您打算使用sqlite以外的其他數據庫進行部署,那麼我推薦後者,並且用sqlite進行部署通常不是一個好主意。我喜歡保持我的開發和生產環境相當統一,以避免陷入困境等等。

我希望這會有所幫助。

+0

我正在運行Mac OSX 10.6.6,並且我在此mac上使用過sqlite3,但我想我更新了我的rails引擎,現在它可以似乎沒有工作。 – azamsharp 2011-06-02 17:34:57

+0

@azamsharp閱讀其他評論和答案,我不知道該說些什麼。我的10.6盒子工作得很好。這是一個長鏡頭,但嘗試更新到最新的開發人員工具。 「免費」版本仍然可用。這就是我所擁有的。如果一切都失敗了,那麼我會回推薦#3 ......除非你打算使用sqlite部署:-)希望SO中的其他人有更多有用的建議。 – brettish 2011-06-02 20:33:14

+0

我放棄了sqlite3,並嘗試MySQL和相同的問題。現在我正在研究MongoDb。 – azamsharp 2011-06-02 20:53:29

1

我在回覆中總結。所以:

1)安裝macports:http://www.macports.org/install.php - 它有一個dmg安裝程序,需要2分鐘。

2)安裝完成後,按照您的Gemfile中的說明安裝'bundle install'和sqlite3。

+0

我下載了MacPorts並安裝Macports。然後我運行命令'sudo port install sqlite3 + universal'。它與sqlite3一起安裝了一堆東西。但即使是現在,當我說'軌道服務器'它給了我同樣的錯誤'找不到寶石sqlite3' – azamsharp 2011-06-02 18:21:06

+0

你做捆綁安裝嗎? – Spyros 2011-06-02 18:34:27

+0

是的,我剛剛做到了!請參閱更新4。 – azamsharp 2011-06-02 18:45:14

0

當您使用端口尋找所謂的sqlite3-dev的或類似的東西包。 -dev部分是關鍵。我不使用MacPorts,但在我的Ubuntu安裝中,這是所需的軟件包。

當您想要安裝打算鏈接的軟件包時,請始終查找-dev版本。 -dev意味着它將頭文件安裝在針對該程序包進行開發所需的其他事項中。

最有可能你的寶石不能建立sqlite3原生擴展,因爲它正在尋找頭文件,如果這不能解決你的問題,請發佈日誌文件的寶石安裝。

+0

仔細查看上面的更新,似乎它能夠找到你的sqlite頭文件。如果你可以發佈mkmf.log的輸出,這將幫助我看到編譯的問題。 – 2011-06-06 21:45:59

0

在Rails目錄:

cd .. 
cd rails-root 
ruby -v 
gem list sqlite3 
bundle install 
gem list sqlite3 
bundle exec rails server 

什麼可能發生的是你捆綁在一個具有.rvmrc文件中的Rails應用程序。我已經看到了在Ruby版本下進行捆綁的情況,這些版本與.rvmrc文件或其他一些不匹配的內容不匹配,所以當您捆綁sqlite3時,它不會與Rails在運行應用程序時使用的Ruby版本相同。

更改目錄並返回到它,以及運行rails服務器與前綴的捆綁exec是我的兩個建議。