Ruby on Rails – “向你的Gemfile添加’gem sqlite3””

我是Rails的完整n00b,只有Ruby的初学者知识。 在我真正学习Rails之前,我计划更多地研究Ruby,但我对自己的好处太过好奇。

无论如何,我正在按照教程,但当它说在博客目录中键入“rails server”时我卡住了。 它声明,“为数据库适配器指定了’sqlite3’,但没有加载gem 'sqlite3' 。将gem’sqlite3 gem 'sqlite3'添加到你的Gemfile中。” 所以我退出了服务器,安装了sqlite3,恢复了服务器…只是为了再次收到此消息。 当我执行“gem list”时sqlite3没有显示,但我确实在我的Root Ruby目录中看到了该文件夹。

如果它有帮助,我得到Ruby 2.0,Rails 4.0,sqlite3 1.3.7

我很抱歉,如果已经在其他地方回答了这个问题,但是我无法在庞大的数据库中找到任何有关stackoverflow的内容。 如果您愿意提供任何耐心,我将不胜感激。

非常感谢你! hewhocomes

我在你的问题中指定的相同版本的Ruby / Rails / SQLite中出现此错误,即使在确认我的gemfile有gem’sqlite3 gem 'sqlite3' 。 我不知道你有什么操作系统(这可能是你被投票的原因)但我使用的是Windows 7 x64。

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

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

 Using sqlite3 (1.3.7) 

运行rails服务器后,我(最后)看到“欢迎登陆”页面。

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

解决方案(对我来说):

1)安装sqlite3

gem install sqlite3

2)检查已安装的版本

gem列表sqlite3

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

3)修改Gemfile.lock

我用’sqlite3(1.3.8-x64-mingw32)更改“sqlite3(1.3.8-x86-mingw32)”

它工作正常:)请注意,您需要在Gemfile.lock中的版本号和x64之间添加“ – ”

XMASS

  1. 不要创建另一个全局数据库,然后使特定于gem文件环境的sqlite3。
  2. 使用以前的gem。
  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 

问题解决了!

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

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

  2. gem install给了我一个错误,声明它无法从rubygems.org下载任何东西。 事实certificate,我不知道有一个新版本的rubygems。 修复了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如何更好地适应我的计算机。

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

再次感谢! hewhocomes

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

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

  gem 'sqlite3' 

对于遇到此错误的任何人来说,这是一个小而重要的旁注。 在1.4版之前,Bundler无法理解Windows上的64位gem( https://github.com/bundler/bundler/issues/2658 ),这解释了为什么32位版本出现在Gemfile.lock中。

手动更改:

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

如果您使用旧版本的bundler,则可以正常工作。 如果升级,Bundler应该能够自动解决问题(1.5.2目前适用于我)。

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