我一直在阅读Rails教程https://www.railstutorial.org/book/static_pages,前两章很顺利。我在我的笔记本电脑上安装了Rails,制作了一个hello world app和一个带脚手架发生器的玩具。有些事情我必须采取不同的做法,因为我在本地而不是在云环境中做所有事情,因为我使用的是Windows 7,但我已经完成了所有工作。
当我尝试运行本地服务器并转到我的http://localhost:3000/static_pages/home页面时,我收到了标题中的错误。以下是完整的错误消息:
无法加载' active_record / connection_adapters / sqlite3_adapter'。确保config / database.yml中的适配器有效。如果您使用的不是' mysql',' mysql2',' postgresql'或者' sqlite3'将必要的适配器gem添加到Gemfile。
我认为它必须与Gemfile有关,因为这是我和其他应用程序之间的唯一区别,我不知道该改变什么。我包含了Gemfile和database.yml。提前谢谢。
#Gemfile - sample_app
source 'https://rubygems.org'
gem 'rails', '4.2.2'
gem 'bcrypt-ruby', :require => 'bcrypt'
gem 'faker', '1.4.2'
gem 'carrierwave', '0.10.0'
gem 'mini_magick', '3.8.0'
gem 'fog', '1.23.0'
gem 'will_paginate', '3.0.7'
gem 'bootstrap-will_paginate', '0.0.10'
gem 'bootstrap-sass', '3.2.0.0'
gem 'sass-rails', '5.0.2'
gem 'uglifier', '2.5.3'
gem 'coffee-rails', '4.1.0'
gem 'jquery-rails', '4.0.3'
gem 'turbolinks', '2.3.0'
gem 'jbuilder', '2.2.3'
gem 'sdoc', '0.4.0', group: :doc
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug'
gem 'sqlite3'
# Access an IRB console on exception pages or by using <%= console %> in views
gem 'web-console', '~> 2.0'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
group :test do
gem 'minitest-reporters', '1.0.5'
gem 'mini_backtrace', '0.1.3'
gem 'guard-minitest', '2.3.1'
end
group :production do
gem 'pg', '0.17.1'
gem 'rails_12factor', '0.0.2'
gem 'puma', '2.11.1'
end
的database.yml
# SQLite version 3.x
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
#
default: &default
adapter: sqlite3
pool: 5
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: db/test.sqlite3
production:
<<: *default
database: db/production.sqlite3
答案 0 :(得分:0)
在Gemfile中,您可以为开发和测试指定sqlite3(&#39; sqlite3&#39; gem),并为生产指定postgres(&#39; pg&#39; gem)。
但是在您的database.yml中,您已将生产数据库指定为sqlite3:
<database.yml>
...
production:
<<: *default
database: db/production.sqlite3
它将尝试使用默认适配器(sqlite3
),并将查找以.sqlite3
作为文件扩展名的数据库文件。
您需要更改database.yml
,以便它使用 postgres 数据库:
production:
adapter: postgresql
encoding: unicode
pool: 5
database: db/production
(确保您在计算机上运行postgres作为应用程序或服务。)
或者您可以更改Gemfile,以便您也可以使用SQLite3进行制作。
如果您尝试在Windows计算机上运行生产版本,但可能在OSX计算机上运行开发或测试版本,则可能是问题所在。