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

标签 ruby-on-rails ruby sqlite rubygems

我是 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).

我查看了许多以前的问题,但似乎没有一个能解决它。这是我的 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 as gem 'sqlite3', '~> 1.3.13'它会起作用的。将其保留在group :production, :test下当您将代码推送到 heroku 时会很好。

关于ruby-on-rails - 为数据库适配器指定了 sqlite3 但未加载 gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36634524/

相关文章:

ruby-on-rails - Heroku Rails CORS 问题

jquery - Facebook 社交按钮在 jquery/rails 中不起作用

ruby-on-rails - 无法打开库 'libcurl' : libcurl: cannot open shared object file: No such file or directory

ruby - 如何通过动态接收类名实例化类

python - 正则表达式查找两个字符串的最长公共(public)前缀

ruby-on-rails - 在 Ruby on Rails 应用程序中随处调用方法

ruby-on-rails - 在 Rails 中执行类似操作的正确方法

ios - 从 Sqlite 迁移到 CoreData

ios - 在 SQLite ios 中出现错误?

java - 返回已完成和待处理任务的计数