32

rails server我正在关注 Rails 教程,但是当它说要输入博客目录时我被卡住了。它指出

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

我退出服务器,安装 sqlite3,恢复服务器,只是再次收到此消息。当我这样做时 sqlite3 没有出现gem list,但我确实在我的 Root Ruby 目录中看到了该文件夹。

我该如何解决这个错误?

我正在使用 Ruby 2.0、Rails 4.0、sqlite3 1.3.7。

4

11 回答 11

28

就我而言,当我在生成新的 Rails 应用程序后立即运行时,出现了此错误"Specified 'sqlite3' for database adapter, but the gem is not loaded. Add gem 'sqlite3' to your Gemfile."消息。rails server它与 Rails 4.1.16 版(Ruby 2.3.1 版)一起使用

gem 'sqlite3', '~> 1.3.0'

Gemfile 中的这一行删除了错误消息。我认为新的 sqlite gem(1.4 版)与旧的 rails(4.1 版)有冲突,但我在他们的 Github 存储库上没有看到任何相关问题。我在此处添加此答案是因为它可能会帮助遇到与我相同情况的任何人。

于 2019-02-10T00:16:07.913 回答
25

即使在确认我的 gemfile 具有gem 'sqlite3'. 我不知道你有什么操作系统(这就是你可能被否决的原因),但我使用的是 Windows 7 x64。

为了让 gem 安装在我的 Rails 应用程序中,我需要编辑Gemfile.lock文件以替换sqlite3 (1.3.7-x86-mingw32)sqlite3 (1.3.7)

然后,在运行 bundle install 之后,我终于在输出中看到了

Using sqlite3 (1.3.7)

在运行 rails server 后,我(终于)看到了“Welcome aboard”页面。

于 2013-06-29T19:34:48.917 回答
17

我会在 x64 win 7 上遇到同样的问题。

解决方案(对我来说):

1)安装sqlite3

宝石安装 sqlite3

2)检查安装的版本

宝石列表 sqlite3

它给了我: sqlite3 (1.3.8 x64-mingw32)

3) 修改 Gemfile.lock

我将“sqlite3 (1.3.8-x86-mingw32)”更改为“sqlite3 (1.3.8-x64-mingw32)”

它有效:) 请注意,您需要在 Gemfile.lock 中的版本号和 x64 之间添加一个“-”

圣诞节

于 2013-10-11T13:58:45.863 回答
12

在这篇文章中找到了另一个潜在的解决方案

我已经安装了 sqlite,但显然自 2019 年 2 月 4 日以来,sqlite3 v1.4.0 gem 出现了问题。

同时,您可以通过将该版本添加到 Gemfile 中的“sqlite3”行来回退到 v1.3.6,如下所示:

gem 'sqlite3', '~> 1.3.6'

希望这可以节省某人的时间!

于 2019-05-13T17:34:25.087 回答
6

问题解决了!

事实证明,这是几个不同的问题:

  1. 我之前忽略了需要安装 sqlite3 才能运行,如 ruby​​onrails.org 的入门指南中所述。该指南给了我一个到 sqlite.com 的链接,我需要从中下载命令 shell 和 dll,两者都在“Windows 的预编译二进制文件”下。更多关于这下面。

  2. gem install 给了我一个错误,指出它无法从 ruby​​gems.org 下载任何东西。原来,有一个我不知道的新版本的 ruby​​gems。通过 gem update --system 修复。

  3. 我试过 gem install sqlite3 --platform=ruby,但无济于事。它无法构建原生扩展,也找不到 sqlite3.h。

  4. 我也在 ruby​​-forums 上问过我的问题。 http://www.ruby-forum.com/topic/4415126 在这里,Joel Pearson(virtuoso) 通过附件提供了我需要的缺失文件,因为 sqlite.com 中没有提供这些文件。我按照他的指示进行操作,包括将 shell 和 dll 文件放入我的 Ruby 根目录的 bin 目录中……它成功了!

所以基本上,我能够在不修改任何 Gemfile 或 Gemfile.lock 的情况下安装 sqlite3。我的 gem 列表显示 sqlite3 (1.3.7) 并且 Rails 的欢迎屏幕现在显示为入门指南所示!我使用 Windows 7-64 位、Ruby 2.0、Rails 4.0,现在我得到了 sqlite3 1.3.7。

非常感谢大家提供这个 n00b 的建议和指导。我发现在探索了 Gemfiles 以及我的 Ruby 根目录之后,我了解了 Ruby 和 Rails 如何更好地适应我的计算机。

作为初学者,我建议能够在 ruby​​onrails.org 的入门指南和 sqlite.com 上下载在 Windows 上安装它所需的 sqlite3 文件和文件夹。

再次感谢!谁来

于 2013-07-01T17:03:01.233 回答
5
  1. 不要使另一个数据库全局化,然后使 sqlite3 特定于您的 gem 文件上的环境。
  2. 使用以前的宝石。
  3. 确保您运行bundle install,然后bundle update,最后bundle install

Gemfile可能包括这样的条目:

group :development, :production do
  gem 'pg', '0.15.1'
end

group :test do
  gem 'sqlite3', '1.3.6'
end
于 2013-11-06T06:16:12.533 回答
4

按以下顺序运行命令

sudo apt-get install libsqlite3-dev

sudo gem install sqlite3-ruby

gem list

执行此命令后,您将看到以下版本的 sqlite

sqlite3 (1.3.12)

sqlite3-ruby (1.3.3)

于 2019-01-02T07:16:49.653 回答
3

对我来说,将版本gem 'sqlite3'放在 gemfile 之后很有帮助,所以它变成了gem 'sqlite3', '1.3.7'. 以前我尝试编译 sqlite3,更新 gem 等...... Rails 仍然无法“接受”它,所以最终定义版本有所帮助。

于 2013-07-17T20:36:17.870 回答
2

为我工作 sudo apt-get install libsqlite3-dev

于 2018-02-16T14:54:12.317 回答
1

One small, but important side note for anyone running into this error. Prior to version 1.4, Bundler could not understand 64 bit gems on Windows (https://github.com/bundler/bundler/issues/2658) which explains why the 32bit versions were showing up in Gemfile.lock.

Manually changing:

"sqlite3 (1.3.8-x86-mingw32" to "sqlite3 (1.3.8-x64-mingw32)"

works if you're using an older version of bundler. Bundler should be able to automatically figure things out now if you upgrade (1.5.2 currently works for me).

于 2014-01-29T06:47:00.827 回答
0

只需将此行添加到您的 Gemfile,它位于应用程序的根文件夹中

  gem 'sqlite3'
于 2013-06-27T18:59:28.683 回答