4

我第一次尝试安装 Rails 4.0。在带有 Ruby 2.0 x64 的 Windows 8 上。冉:

gem install rails --version 4.0.0.rc1 --no-ri --no-rdoc

然后我运行:

rails new test_app
cd test_app
rails s

但该网页localhost:3000报告以下错误:

为数据库适配器指定了“sqlite3”,但未加载 gem。添加gem 'sqlite3'到您的 Gemfile。

它在我的 Gemfile 中:

gem 'sqlite3'

我尝试运行bundle install了几次,它甚至没有将它列在所有其他宝石中。

更新:我尝试以两种不同的方式安装 sqlite3 gem,都使用从 DevKit 的 msys.bat 文件打开的终端。下面提到的@szines 的方式给了我以下错误:

$ gem install sqlite3 --platform=ruby -- --with-opt-dir=c:/sqlite-amalgamation-3071602
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--with-opt-dir=c:/sqlite-amalgamation-3071602'
This could take a while...
ERROR:  Error installing sqlite3:
        ERROR: Failed to build gem native extension.

    c:/Ruby200-x64/bin/ruby.exe extconf.rb --with-opt-dir=c:/sqlite-amalgamation-3071602
checking for sqlite3.h... yes
checking for sqlite3_libversion_number()... -lsqlite3
sqlite3 is missing. Install SQLite3 from http://www.sqlite.org/ first.
*** 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.

Provided configuration options:
        --with-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=c:/Ruby200-x64/bin/ruby
        --with-sqlite3-dir
        --without-sqlite3-dir
        --with-sqlite3-include
        --without-sqlite3-include=${sqlite3-dir}/include
        --with-sqlite3-lib
        --without-sqlite3-lib=${sqlite3-dir}/
        --enable-local
        --disable-local
        --with-sqlite3lib
        --without-sqlite3lib


Gem files will remain installed in c:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7 for inspection.
Results logged to c:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/ext/sqlite3/gem_make.out

另一种方式,我使用来自 sqlite.org 的 autoconf 包,我能够编译和安装 sqlite3 gem。但是,当我尝试打开 Rails 服务器时,出现以下错误:

C:\Users\me\RubymineProjects\my_project>rails s
C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)
        from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `rescue in <top (required)>'
        from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:2:in `<top (required)>'
        from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require'
        from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
        from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each'
        from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require'
        from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each'
        from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require'
        from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:132:in `require'
        from C:/Users/me/RubymineProjects/my_project/config/application.rb:7:in `<top (required)>'
        from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/railties-4.0.0.rc1/lib/rails/commands.rb:78:in `require'
        from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/railties-4.0.0.rc1/lib/rails/commands.rb:78:in `block in <top (required)>'
        from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/railties-4.0.0.rc1/lib/rails/commands.rb:75:in `tap'
        from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/railties-4.0.0.rc1/lib/rails/commands.rb:75:in `<top (required)>'
        from bin/rails:4:in `require'
        from bin/rails:4:in `<main>'
4

6 回答 6

7

很烦人,但我终于让它工作了。您基本上必须执行以下操作:

  1. 下载准备好由 Luis Lavena 编译的 sqlite 文件(这是 x64)
  2. 用 7-zip 解压到 `c:\sqlite3
  3. 从您将 DevKit 解压到的 DevKit 文件夹中运行 msys.bat
  4. gem install sqlite3 --platform=ruby -- --with-opt-dir=C:/sqlite3
于 2013-05-23T07:19:59.100 回答
3

我在运行带有 Ruby 2.0 的 Rails 版本 4.0.0 的 Mac OS X 上,问题是 sqlite3 没有更新到兼容版本(警告也懒得这么说)。

以下是我解决问题的方法:

$ gem install sqlite3 --platform=ruby

这让我知道 sqlite3 的最新版本是 1.3.7。然后我相应地更新了 gemfile 中的 sqlite3 gem。就这么简单。

于 2013-07-28T21:56:46.530 回答
0

下载 sqlite 源文件,并使用特殊参数构建 sqlite gem。

  • 下载 sqlite 源代码。
  • 在您的 PC 上创建一个 sqlite 文件夹。例如:c:/sqlite
  • 在此文件夹中创建三个子文件夹:c:/sqlite/include、c:/sqlite/lib、c:/sqlite/bin
  • 复制源文件:

c:/sqlite/bin => sqlite3.exe

c:/sqlite/include => sqlite3.h sqlite3ext.h

c:/sqlite/lib => libsqlite3.a sqlite3.la

  • 卸载你以前的 sqlite gem

gem uninstall sqlite3

  • 需要兼容的 DevKit,用于 64 位系统 x64 版本。
  • 使用以下命令安装兼容的 gem。(不要忘记第二个空的双破折号。)

gem install sqlite3 --platform=ruby -- --with-opt-dir=c:/sqlite

请注意,如果您稍后运行 bundle update 命令并且看到 bundler 安装了“官方”sqlite gem,则必须卸载“旧”版本。如果您有更多版本的 sqlite,无论如何您都会收到错误消息。

于 2013-05-14T09:53:55.967 回答
0

*此答案适用于 Ruby 2.0.0 x86,而不是 x64。

我想我有。圣杯。奶与蜜之地。疯狂的灯光从印第安纳琼斯的那个盒子里射出来。不会在阳光下融化的冰淇淋。

在这里尝试了几乎所有答案之后,最终为我做了什么(除非我产生幻觉)是https://stackoverflow.com/a/16524605/765352 (如何在 Windows 上安装 sqlite3 for Ruby中的最后一条评论? )。

我在 Windows 8 上使用 RailsInstaller 版本的 Ruby 运行 Ruby 2.0.0 x86。

只是通过提供链接来详细说明他的答案:

  1. 转到http://www.sqlite.org(特别是http://sqlite.org/download.html)并下载:

(我不知道是否需要最后两个。而且,我不会回到兔子洞去检查。)

  1. 将所有这些 ZIP 解压缩到您选择的目录中。我使用了“sqlite-amalgamation-301700”。(目录)。

  2. 进入你的红宝石外壳,然后输入

    gem install sqlite3 --platform=ruby --with-sqlite3-dir=c:/sqlite-amalgamation-3071602 --with-sqlite3-include=c:/sqlite-amalgamation-3071602

你应该看到

C:\xx\>gem install sqlite3 --platform=ruby -- --with-sqlite3-dir=c:/sqlite-amalgamation-3071602 --with-sqlite3-include=c:/sqlite-amalgamation-3071602
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--with-sqlite3-dir=c:/sqlite-amalgamation-3071602 --with-sqlite3-include=c:/sqlite-amalgamation-3071602'
This could take a while...
Successfully installed sqlite3-1.3.7
Parsing documentation for sqlite3-1.3.7
unable to convert "\x90" from ASCII-8BIT to UTF-8 for lib/sqlite3/sqlite3_native.so, skipp
ing
Installing ri documentation for sqlite3-1.3.7
Done installing documentation for sqlite3 (3 sec).
1 gem installed

嘘。拿那个,自动编译什么都没有。不用感谢 SQLITE,它被证明是重量级的。一如既往地感谢谷歌。

参考:

  • 这条线;

  • https://stackoverflow.com/a/16524605/765352的那个人;

  • 一堆讨论 sqlite.org 的线程;

  • StackExchange,因为没有放弃我;

  • 我,因为没有放弃 StackExchange;

  • 外面的所有信徒;

  • 我的制片人和经理,谁爱我(我爱你,Al)。

于 2013-05-22T03:42:39.027 回答
0

看看这个分辨率:

在这种情况下,最近的 Bundler 版本中存在一个错误。预发布的 Bundler 解决了这个问题。

于 2013-11-05T05:47:40.130 回答
0

谢谢大家,这对我安装 sqlite3 有用:

下载 sqlite-dll-win64-x64-3260000.zip 、 sqlite-tools-win32-x86-3260000.zip 和 sqlite-autoconf-3260000.tar.gz。

将 sqlite3.h 和 sqlite3ext.h 放在名为include的文件夹中

将 shell.c、sqlite3.c、sqlite3.def 和 sqlite3.dll 放在名为lib的文件夹中

gem install sqlite3 --platform=ruby -- --with-sqlite3-lib=c:/Devkit/sqlite3/lib --with-sqlite3-include=c:/Devkit/sqlite3/include
gem install data_mapper --platform=ruby -- --with-sqlite3-lib=c:/Devkit/sqlite3/lib --with-sqlite3-include=c:/Devkit/sqlite3/include
gem install dm-sqlite-adapter --platform=ruby -- --with-sqlite3-lib=c:/Devkit/sqlite3/lib --with-sqlite3-include=c:/Devkit/sqlite3/include
于 2019-01-02T17:08:08.137 回答