2013-03-18 116 views
29

對於Ruby/Rails來說真的很陌生,在本週末嘗試自己解決這個問題後,我正在嘗試在這裏尋求建議。如何在Windows上安裝sqlite3 for Ruby?

我在FreeBSD上完成了一個完整的Ruby/Apache/Passenger設置,我試圖完成使用Windows作爲Ruby開發環境的任務。

到目前爲止:安裝

  • 紅寶石,v2.0.0p0(2013年2月24日)[x64的ming32]
  • 滑軌被安裝,v.3.2.12
  • 我有Ruby開發工具包已安裝並註冊。
  • 我有sqlite3 dll/exe複製到Ruby「bin」文件夾(這也是我的路徑使用「啓動命令提示符與Ruby」控制檯。)
  • 我可以成功啓動一個rails服務器,並繼續與http://guides.rubyonrails.org/getting_started.html教程3.3。
  • 「>耙分貝:創建」 告訴我:

    請安裝sqlite3的適配器:(。 sqlite3的是不是包的一部分將它添加到Gemfile中)gem install activerecord-sqlite3-adapter

我沒有「理解」。試圖安裝了activerecord-sqlite3的適配器給了我一個 「無法找到有效的寶石......」

  • 「>創業板安裝sqlite3的」 返回:

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

    D:/Development/Ruby200-x64/bin/ruby.exe extconf.rb checking for sqlite3.h... *** extconf.rb failed ***

現在我被困在了一點,我甚至不知道我的Ruby安裝在Windows上的狀態是什麼。我試圖遵循主要的Rails教程,並沒有指定任何這些問題(可能是因爲在Windows上Ruby似乎是一個很多人的痛苦。)

我錯過了什麼?!?我只是想在Windows上安裝Ruby的sqlite3,看起來很簡單吧?

如果我做">rais db" SQLite的外殼,提出:

SQLite version 3.7.15.2 2013-01-09 11:53:05

與不解決我的問題的步驟類似的問題: Installing SQLite 3.6 On Windows 7

+0

'未回答的問題'實際上有一個可接受的答案。你有沒有嘗試把sqlite.dll放到你的ruby/bin目錄中? – PinnyM

+0

我不知道如何引用我原來的問題,但這裏是子彈「我有sqlite3 dll/exe複製到Ruby」bin「文件夾(這也是我的路徑中使用」啓動命令提示符與Ruby「控制檯。)「 – chrisp

+2

您正在使用x64紅寶石,.dll可能是32位,無法使用。您可以嘗試提到的.dll的x64版本[這裏](http://stackoverflow.com/questions/4315606/precompiled-sqlite-binaries-for-windows-x64)。 – PinnyM

回答

69

即使問題已被回答,我想發佈我的研究以幫助他人。我在網上發現了很多信息,但作爲一名Ruby新手,我經歷了一段艱難的時光。基本的答案來自以下帖子https://github.com/luislavena/sqlite3-ruby/issues/82,並附有「paulwis」關於如何爲ruby 2.0.0-p0正確安裝sqlite3以及在https://github.com/rails/rails/issues/10150上的一些註釋的說明。所以在這裏,它是:

  1. 安裝紅寶石的devkit您的設置(的devkit-mingw64-64-4.7.2-20130224-1432-sfx.exe對我來說,因爲我使用的是64位機)
  2. 下載和從Sqlite.org提取autoconf軟件包
  3. 運行msys.bat(它位於ruby devkit根文件夾內)
  4. cd進入您下載sqlite源碼的路徑(例如:「cd/c/dev/sqlite3 「for path」c:\ dev \ sqlite3「如果您是MSYS/MINGW32的新手)
  5. 運行」./configure「
  6. 運行 「make」
  7. 運行 「make install的」
  8. 再次獲取sqlite3的寶石,這次指定的平臺和路徑,以新編譯的二進制代碼:

    ​​3210

    例如:

    gem install sqlite3 --platform=ruby -- --with-sqlite3-include=/c:/dev/sqlite3/ --with-sqlite3-lib=/c:/dev/sqlite3/.libs/ 
    

    (從步驟4中給出的路徑)

  9. 檢查Gemfile.lock的你的Rails應用程序,並確保它指向正確的sqlite3版本。我的是「sqlite3(1.3.7-x86-mingw32)」,並手動將其更改爲「sqlite3(1.3.7-x64-mingw32)」。刪除平臺也適用:「sqlite3(1.3.7)」。

希望這可以幫助別人。

+1

非常感謝!不幸的是,#8對我來說失敗了:C:/Ruby200-x64/bin/ruby.exe extconf.rb --with-sqlite3-include = c:\ sqlite-auto conf-3071602 \ sqlite3.h --with-sqlite3 -lib = c:\ sqlite-autoconf-3071602 \ .libs \ sqlit e3.o 檢查sqlite3.h ... *** extconf.rb失敗*** 由於某種原因無法創建Makefile,可能缺少必要的 庫和/或標題。檢查mkmf.log文件以獲取更多詳細信息。您可能需要配置選項 。 –

+2

終於安裝了,問題是我不得不在MINGW32終端中運行'gem install'命令。現在我在啓動Rails服務器時出現這個錯誤:c:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in'require':can not加載這樣的文件 - sqlite3/sqlite3_native(LoadError) –

+0

一切正常,直到第8步。標題找不到。我只是決定使用virtualbox(大學項目)。 –

0

我想我會放在一個答案 - - 來自評論,爲了後代的緣故。這個問題似乎是我抓住了一個與SQLite3「不兼容」的新版Ruby/Rails(用於Windows)。

我降級到1.9.x,並能夠運行。

+0

使用Ruby 2.0.0,它與sqlite3兼容 – jonathanrz

+0

@jonathanrz謝謝,我很努力得到2.0.0來編譯sqilte3,很高興聽到你的工作。您是否會考慮您遵循哪條指令進行編譯? –

+1

@TylerGannon我遵循威廉姆斯答案的路徑,但在第8步,我使用了denis-bu回答,並將libs目錄與sqlite3目錄中的.libs目錄相加。 – jonathanrz

8

我能夠與ruby2.0.0在Win XP32使用以下命令安裝的sqlite3:

c:\>gem install sqlite3 --platform=ruby -- --with-sqlite3-dir=C:/distr/sqlite --with-sqlite3-include=C:/distr/sqlite

文件夾C:/distr/sqlite包含下列文件

  • shell.c
  • sqlite3.c
  • sqlite3.h
  • sqlite3ext.h
  • sqlite3.def
  • sqlite3.dll

所以,基本上我已經提取sqlite-amalgamation-3071602.zipsqlite-dll-win32-x86-3071602.zipC:/distr/sqlite

擡頭

你仍然需要投入的sqlite3.dllsqlite3.def副本某處路徑。恕我直言,最好將sqlite3二進制文件保存在ruby的bin文件夾中。

+0

這會導致下面的錯誤:http:// pastebin.com/UMUnsd6z –

+0

@ denis-bu即時獲取以下錯誤..http://pastebin.com/bunfLeWG – Lucky

+0

@Lucky,你有從這裏安裝的DevKit http://rubyinstaller.org/downloads/? –

1
#!/usr/bin/env sh 

mkdir c:/sqlite3x86 
wget -P c:/sqlite3x86 http://packages.openknapsack.org/sqlite/sqlite-3.7.15.2-x86-windows.tar.lzma 
cd c:/sqlite3x86 
bsdtar --lzma -xf c:/sqlite3x86/sqlite-3.7.15.2-x86-windows.tar.lzma 
gem install sqlite3 --platform=ruby -- --with-opt-dir=c:/sqlite3x86 
cd c:/ 
rm -rf c:/sqlite3x86