40

作为 Ruby/Rails 的新手,在本周末尝试自己解决问题后,我正在尝试在这里寻求建议。

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

至今:

  • Ruby 已安装,v2.0.0p0 (2013-02-24) [x64-ming32]
  • Rails 已安装,v.3.2.12
  • 我已经安装并注册了 Ruby 开发工具包。
  • 我已将 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...”

  • ">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

4

9 回答 9

79

即使问题已得到解答,我仍想发布我的研究以帮助他人。我在网上找到了很多信息,但是作为一个 Ruby 新手,我很难跟上所有这些。基本答案来自以下帖子https://github.com/luislavena/sqlite3-ruby/issues/82,其中包含“paulwis”关于如何为 ruby​​ 2.0.0-p0 正确安装 sqlite3 的说明以及对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 源的路径(例如:如果您是 MSYS/MINGW32 的新手,则路径“c:\dev\sqlite3”的路径为“cd /c/dev/sqlite3”)
  5. 运行“./configure”
  6. 运行“制作”
  7. 运行“制作安装”
  8. 再次获取 sqlite3 gem,这次指定平台和新编译的二进制文件的路径:

    gem install sqlite3 --platform=ruby -- --with-sqlite3-include=[path\to\sqlite3.h] --with-sqlite3-lib=[path\to\sqlite3.o]
    

    例如:

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

    (来自步骤 4 中给出的路径)

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

希望这可以帮助某人。

于 2013-04-15T19:14:35.740 回答
11

我能够使用以下命令在 win XP32 上安装带有 ruby​​2.0.0 的 sqlite3:

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

文件夹C:/distr/sqlite包含以下文件

  • 外壳程序
  • sqlite3.c
  • sqlite3.h
  • sqlite3ext.h
  • sqlite3.def
  • sqlite3.dll

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

小心

您仍然需要将副本sqlite3.dllsqlite3.def某处放入 PATH。恕我直言,最好将 sqlite3 二进制文件保存在 ruby​​ 的 bin 文件夹中。

于 2013-05-13T14:31:20.283 回答
11

这是一个旧线程,但仍然相关。

对我们来说,它就像编辑Gemfile和添加一个特定版本的 sqlite 一样简单。

gem 'sqlite3', '~> 1.3.13'
于 2019-05-10T17:05:12.957 回答
2
#!/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
于 2013-08-09T00:25:09.533 回答
1

对于 Windows,请访问C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3.rb

并确保

require "sqlite3"而不是原生的

于 2018-07-06T11:37:23.610 回答
1

从这里获取胖二进制文件

https://ci.appveyor.com/project/MSP-Greg/sqlite3-ruby/build/3/job/hhk6ie8gdo545svr/artifacts

gem install c:\path\to\downloaded_gem.gem
于 2018-07-10T07:53:25.570 回答
0

为了后代,我想我会从评论中给出答案。问题似乎是我抓住了一个新版本的 Ruby/Rails(用于 Windows),它“还”与 SQLite3 不兼容。

我降级到 1.9.x 并且能够运行。

于 2013-03-21T17:54:23.620 回答
0

在 Windows 机器上设置 Ruby on Rails 的最简单方法是使用 RailsInstaller,它会自动为您安装和配置 sqlite3。一步。

http://railsinstaller.org/en

于 2017-05-01T18:17:09.590 回答
0

您应该遵循以下程序:

  1. gem install bundler (添加宝石文件_)
  2. gem 'sqlite3', ' < 1.4'(添加宝石文件_)

然后运行:

install bundler
于 2019-12-18T18:45:11.343 回答