为数据库适配器指定了 sqlite3 但未加载 gem

Specified sqlite3 for database adapter but gem is not loaded

我是 Rails 的新手,正在尝试启动我的服务器。 运行 命令 rails server 产生错误

Specified 'sqlite3' for database adapter, but the gem is not loaded. Add gem 'sqlite3' to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).

我看了很多以前的问题,none 似乎解决了它。这是我的 Gemfile 代码

if RUBY_VERSION =~ /1.9/
   Encoding.default_external = Encoding::UTF_8
   Encoding.default_internal = Encoding::UTF_8
end

source 'https://rubygems.org'

gem 'rails', '~> 4.2.0'

gem 'ey_config'
gem 'rails_autolink'
gem 'simple_form'

# Assets
gem 'jquery-rails'
gem 'sass-rails'
gem 'coffee-rails'
gem 'uglifier'

platform :ruby do
   gem 'mysql2'
   gem 'pg'
   gem 'activerecord-postgis-adapter', '3.0.0.beta2'
   gem 'sqlite3'

   gem 'newrelic_rpm'
   gem 'unicorn'
   gem 'puma'
   gem 'json'
   gem 'minitest'
   gem 'psych'
   gem 'racc'
end

platforms :jruby do
   ar_jdbc_version = '~> 1.3'
   gem 'activerecord-jdbc-adapter', ar_jdbc_version
   gem 'activerecord-jdbcmysql-adapter', ar_jdbc_version
   gem 'activerecord-jdbcpostgresql-adapter', ar_jdbc_version
   gem 'activerecord-jdbcsqlite3-adapter', ar_jdbc_version
   gem 'jdbc-mysql', :require => false
   gem 'jdbc-sqlite3', :require => false
   gem 'jdbc-postgres', :require => false

   gem 'jruby-openssl'
   gem 'trinidad'
end

platform :rbx do
   gem 'rubysl'
   gem 'rubysl-test-unit', :require => false
end

# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
group :development, :test do
   gem 'tzinfo-data'
end

这是我的 database.yml 文件

# SQLite version 3.x
#   gem install sqlite3
development:
   adapter: sqlite3
   database: db/development.sqlite3
   pool: 5
   timeout: 5000

# 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:
   adapter: sqlite3
   database: db/test.sqlite3
   pool: 5
   timeout: 5000

production:
   adapter: sqlite3
   database: db/production.sqlite3
   pool: 5
   timeout: 5000`

这是我的 rakefile 中的代码:

# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

require File.expand_path('../config/application', __FILE__)
require 'rake'

Listr::Application.load_tasks

task :travis => ['db:create:all', 'db:migrate', :default]

如果您能在回答的同时提供任何解释,我们将不胜感激。谢谢。

您的 sqlite3 gem 没有被加载,因为您在 Gemfile 中找到了它。把它从platform :ruby do里拿出来放在那块外面,可能就在gem 'rails', '~> 4.2.0'

下面

由于版本不匹配,您的 sqlite3 gem 未在生产环境中加载。所以,告诉你 gemfile as gem 'sqlite3', '~> 1.3.13' 它会起作用的。保持在 group :production, :test 下,当你将代码推送到 heroku 时会很好。