无法加载' active_record / connection_adapters / sqlite3_adapter'。 Windows 7本地服务器

时间:2015-07-06 20:42:50

标签: ruby-on-rails ruby windows

我一直在阅读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

1 个答案:

答案 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计算机上运行开发或测试版本,则可能是问题所在。