我是Rails的完整n00b,只有Ruby的初学者知识。在我真正学习Rails之前,我计划更多地研究Ruby,但是我对自己的好处太过好奇。
无论如何,我正在按照教程进行操作,但是当它在博客目录中输入“rails server”时我就卡住了。它声明,“为数据库适配器指定'sqlite3',但未加载gem。将gem 'sqlite3'
添加到您的Gemfile中。”所以我退出服务器,安装了sqlite3,恢复了服务器......只是为了再次收到此消息。当我执行“gem list”时sqlite3没有显示,但我确实在我的Root Ruby目录中看到了该文件夹。
如果有帮助,我得到了Ruby 2.0,Rails 4.0,sqlite3 1.3.7
我很抱歉,如果已经在其他地方回答了这个问题,但我在庞大的数据库堆栈流中找不到任何东西。如果您愿意提供任何耐心,我将不胜感激。
非常感谢! hewhocomes
答案 0 :(得分:20)
即使在确认我的gemfile有gem 'sqlite3'
之后,我在您的问题中指定的相同版本的Ruby / Rails / SQLite也出现此错误。我不知道你有什么操作系统(这可能是你被投票的原因)但我使用的是Windows 7 x64。
为了在我的Rails应用程序中安装gem,我需要编辑 Gemfile.lock 文件,将sqlite3 (1.3.7-x86-mingw32)
替换为sqlite3 (1.3.7)
然后,在运行bundle install之后我终于在输出中看到了
Using sqlite3 (1.3.7)
运行rails服务器后,我(最后)看到“欢迎登陆”页面。
答案 1 :(得分:12)
我在x64 win 7上遇到了同样的问题。
解决方案(对我来说):
1)安装sqlite3
gem install sqlite3
2)检查已安装的版本
gem list 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
答案 2 :(得分:9)
就我而言,当我生成新的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宝石(1.4版)与旧的Rails(4.1版)存在冲突,但我在其Github存储库中未发现任何相关问题。我在此处添加此答案,因为它可能会帮助遇到我所遇到的相同情况的任何人。
答案 3 :(得分:5)
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
答案 4 :(得分:3)
问题解决了!
事实证明,这是几个不同的问题:
我之前忽略了需要安装sqlite3才能运行,如rubyonrails.org的入门指南中所述。该指南给了我一个sqlite.com的链接,我需要从中下载命令shell和dll,两者都在“Windows的预编译二进制文件”下。更多内容如下。
gem install给了我一个错误,声明无法从rubygems.org下载任何东西。事实证明,我不知道有一个新版本的rubygems。修复了gem update --system。
我尝试过gem install sqlite3 --platform = ruby,但无济于事。它无法构建原生扩展,也无法找到sqlite3.h。
我也在ruby-forums上问了我的问题。 http://www.ruby-forum.com/topic/4415126 在这里,Joel Pearson(virtuoso)通过附件提供了我需要的丢失文件,因为sqlite.com中没有提供这些文件。我按照他的指示,包括将shell和dll文件放在我的根目录Ruby的bin目录中......它工作正常!
基本上,我能够在不修改任何Gemfile或Gemfile.lock的情况下安装sqlite3。我的宝石列表显示sqlite3(1.3.7),Rails的欢迎屏幕现在显示为入门指南显示! 我使用Windows 7-64位,Ruby 2.0,Rails 4.0,现在我得到了sqlite3 1.3.7。
非常感谢大家提供这个n00b建议和方向。我发现已经探索过Gemfiles以及我的root Ruby目录,我理解Ruby和Rails如何更好地适应我的计算机。
作为初学者,我建议能够在rubyonrails.org的入门指南和sqlite.com上下载在Windows上安装它所需的sqlite3文件和文件夹。
再次感谢! hewhocomes
答案 5 :(得分:3)
对我而言,它有助于将gem 'sqlite3'
之后的版本放入gemfile中,因此它变为gem 'sqlite3', '1.3.7'
。
以前我试过编译sqlite3,更新gem等... Rails无法“接受”它,所以最终定义版本有帮助。
答案 6 :(得分:2)
为我工作sudo apt-get install libsqlite3-dev
答案 7 :(得分:1)
按以下顺序运行命令
sudo apt-get install libsqlite3-dev
sudo gem install sqlite3-ruby
gem list
此命令后,您将看到以下版本的sqlite
sqlite3(1.3.12)
sqlite3-ruby(1.3.3)
答案 8 :(得分:0)
只需将此行添加到您的Gemfile中,该文件位于应用程序的根文件夹中
gem 'sqlite3'
答案 9 :(得分:0)
对于遇到此错误的任何人来说,这是一个小而重要的旁注。在1.4版之前,Bundler无法理解Windows上的64位宝石(https://github.com/bundler/bundler/issues/2658),这解释了为什么32位版本出现在Gemfile.lock中。
手动更改:
"sqlite3 (1.3.8-x86-mingw32" to "sqlite3 (1.3.8-x64-mingw32)"
有效。如果升级,Bundler应该能够自动解决问题(1.5.2目前适用于我)。
答案 10 :(得分:0)
我已经安装了sqlite,但显然自2019年2月4日以来,sqlite3 v1.4.0 gem出现了问题。
同时,您可以通过将该版本添加到Gemfile中的“ sqlite3”行来回退至v1.3.6,如下所示:
gem "sqlite3", "~> 1.3.6”
希望这可以节省时间!