如何在Windows上为Ruby安装sqlite3?

chr*_*isp 35 ruby windows sqlite ruby-on-rails

对于Ruby/Rails来说真的很陌生,在本周末我试图自己解决这个问题之后,我试图在这里寻求建议.

我在FreeBSD上完成了一个完整的Ruby/Apache/Passenger设置,我正在尝试完成使用Windows作为Ruby开发环境的任务.

至今:

  • 安装Ruby,v2.0.0p0(2013-02-24)[x64-ming32]
  • 安装了Rails,v.3.2.12
  • 我安装并注册了Ruby dev kit.
  • 我将sqlite3 dll/exe复制到Ruby"bin"文件夹(使用"使用Ruby启动命令提示符"控制台也在我的路径中.)
  • 我可以成功启动rails服务器,并继续使用http://guides.rubyonrails.org/getting_started.html教程3.3.
  • "> rake db:create"告诉我:

    请安装sqlite3适配器:( gem install activerecord-sqlite3-adaptersqlite3不是捆绑包的一部分.将其添加到Gemfile.)

我没有"理解".试图安装activerecord-sqlite3-adapter给我一个"找不到有效的宝石......"

  • "> gem install 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 on Windows安装的状态的位置.我正在尝试遵循主要的Rails教程并且它没有指定任何这些问题(可能是因为Ruby在Windows上似乎是很多人的自然痛苦.)

我错过了什么?!?我只是想在Windows上为Ruby安装sqlite3,看起来很简单吧?

如果我这样做">rais db"了SQLite shell:

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

类似问题的步骤无法解决我的问题: 在Windows 7上安装SQLite 3.6

小智 75

即使这个问题已得到解答,我也想发表我的研究报告以帮助其他人.我在网上发现了很多信息,但作为一个Ruby新手,我很难跟进.基本答案来自以下帖子https://github.com/luislavena/sqlite3-ruby/issues/82,其中包含"paulwis"关于如何正确安装sqlite3 for ruby​​ 2.0.0-p0的说明以及对https的一些评论: //github.com/rails/rails/issues/10150.所以这里是:

  1. 安装Ruby Devkit用于您的设置(DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe,因为我使用的是x64机器)
  2. 从Sqlite.org下载并解压缩autoconf包
  3. 运行msys.bat(它位于ruby devkit根文件夹中)
  4. cd进入你下载sqlite源代码的路径(例如:"cd/c/dev/sqlite3"代表路径"c:\ dev\sqlite3",如果你是MSYS/MINGW32的新手)
  5. 运行"./configure"
  6. 运行"make"
  7. 运行"make install"
  8. 再次获取sqlite3 gem,这次指定平台和新编译的二进制文件的路径:

    gem install sqlite3 --platform=ruby -- --with-sqlite3-include=[path\to\sqlite3.h] --with-sqlite3-lib=[path\to\sqlite3.o]
    
    Run Code Online (Sandbox Code Playgroud)

    例如:

    gem install sqlite3 --platform=ruby -- --with-sqlite3-include=/c:/dev/sqlite3/ --with-sqlite3-lib=/c:/dev/sqlite3/.libs/
    
    Run Code Online (Sandbox Code Playgroud)

    (从步骤4中给出的路径)

  9. 检查rails应用程序的Gemfile.lock并确保它指向正确的sqlite3版本.我的是"sqlite3(1.3.7-x86-mingw32)"并手动将其改为"sqlite3(1.3.7-x64-mingw32)".删除平台也有效:"sqlite3(1.3.7)".

希望这有助于某人.

  • 对于第8步,我从MINGW32窗口运行命令并将命令更改为:`gem install sqlite3 - --with-sqlite3-include =/c/sqlite-autoconf-3071700/--with-sqlite3-lib =/c/sqlite-autoconf-3071700 /`(我在我的机器上将源代码解压缩到C:\ sqlite-autoconf-3071700) (6认同)
  • 最后让它安装,问题是我必须在MINGW32终端内运行`gem install`命令.现在我在启动Rails服务器时遇到这个错误:c:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:在`require':不能加载这样的文件--sqlite3/sqlite3_native(LoadError) (2认同)

den*_*-bu 11

我可以使用以下命令在win XP32上使用ruby2.0.0安装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.zip,并sqlite-dll-win32-x86-3071602.zipC:/distr/sqlite.

当心

你仍然需要将PAT的副本sqlite3.dllsqlite3.def某些地方放在一起.恕我直言,最好将sqlite3二进制文件保存在ruby的bin文件夹中.


cma*_*tas 7

这是一个旧线程,但仍然有用。

对我们而言,这就像编辑Gemfilesqlite并为sqlite添加特定版本一样简单:

gem 'sqlite3', '~> 1.3.13
Run Code Online (Sandbox Code Playgroud)

  • 从所有冗长的解决方案中。这是一个为我工作的。谢谢! (2认同)