2013-03-18 231 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