首先,我是Rails的新手。我正在创建一个博客应用程序,当尝试在生产中运行它时,两种方式:
rails s -e production
和
RAILS_ENV=production
我得到同样的错误:
=>启动WEBrick => Rails 3.2.8应用程序从生产开始 http://0.0.0.0:3000
=>用-d调用分离
=> Ctrl-C关闭服务器
退出
/home/loku/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-> resolve_hash_connection':数据库配置未指定适配器(ActiveRecord :: AdapterNotSpecified)
...
我的设置:
ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux]
Rails 3.2.8
database.yml中:
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: blogg_development
pool: 5
timeout: 5000
username: root
password: ***
host: localhost
production:
adapter: mysql2
encoding: utf8
reconnect: false
database: blogg_production
pool: 5
timeout: 5000
username: root
password: ***
host: localhost
的Gemfile:
source 'https://rubygems.org'
ruby '1.9.3'
gem 'rails', '3.2.8'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'mysql2'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
gem 'haml-rails'
gem 'less-rails'
gem 'twitter-bootstrap-rails', :git => 'git://github.com/seyhunak/twitter-bootstrap- rails.git'
#gem 'actionpack', '~> 3.1.0'
end
gem 'jquery-rails'
gem 'haml'
gem 'devise'
gem 'cancan'
group :test, :development do
gem 'guard-livereload'
gem 'rb-fsevent'
gem 'pry'
gem 'pry-rails'
end
group :linux do
gem 'libnotify'
end
group :darwin do
gem 'rb-fsevent', require: false
gem 'growl'
end
答案 0 :(得分:4)
这些是需要考虑的事项
捆绑exec rails s -e production(确保使用bundle exec)
如果这不起作用,我会查看config / environments / production.rb并确保没有任何罕见的内容。
答案 1 :(得分:2)
根据来源,您所获得的错误只有2种可能的解释。 AdapterNotSpecified - 在连接上未指定适配器(或配置文件config/database.yml
时错过适配器字段)时引发。
您是否复制并粘贴了database.yml文件?如果是这样,您可能想要将其擦除并从头开始再次键入它们。确保缩进一致。有时复制和粘贴时,您还会复制一些隐藏的字符,这些字符会被评估并导致代码出现问题。
希望有所帮助。
答案 2 :(得分:1)
请加倍确定Rumen Milushev的建议:YAML对缩进非常敏感。
尝试完全删除production:
部分,将development:
重命名为production:
,然后重试。
如果可行,请使用yamllint.com
等工具验证您的database.yml答案 3 :(得分:1)
您需要指定数据库套接字。它并不总是在/tmp/mysql.sock中有时它在/ var ...它取决于你安装的mysql2
socket:/tmp/mysql.sock 需要是您的database.yml生产部分中的一行
e.g。
production:
adapter: mysql2
encoding: utf8
reconnect: false
database: blogg_production
pool: 5
timeout: 5000
username: root
password: ***
socket: /tmp/mysql.sock
host: localhost
答案 4 :(得分:1)
您可能需要在gemfile中添加production
组...如下所示:
group :production do
gem 'mysql2'
end
从终端运行bundle install
并尝试重新开始。
答案 5 :(得分:-2)
您需要指定您忘记测试的所有环境,这可能是错误发生的原因