14

首先,我是 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

数据库.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

宝石文件:

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
4

6 回答 6

4

这些是要考虑的事情

  1. Gemfile中的mysql2(它是)
  2. config/database.yml 中定义的生产环境(它是) 2.2 从您的 database.yml 中删除任何其他环境并离开生产:仅
  3. 确保它正确缩进(我认为是)
  4. 捆绑安装(以确保您已安装宝石)
  5. bundle show mysql2 查看版本并确保已安装
  6. bundle exec rails s -e production(确保使用 bundle exec)

  7. 如果这不起作用,我会查看 config/environments/production.rb 并确保那里没有任何罕见的东西。

于 2013-12-14T20:07:33.767 回答
2

根据来源,您遇到的错误只有两种可能的解释。AdapterNotSpecified - 当连接上未指定适配器(或配置文件config/database.yml缺少适配器字段)时引发。

您是否复制并粘贴了 database.yml 文件?如果是这样,您可能需要删除它并从头开始重新键入它们。确保缩进一致。有时在复制和粘贴时,您还会复制一些隐藏字符,这些字符会被评估并导致代码出现问题。

希望有帮助。

于 2013-12-15T16:20:48.407 回答
1

您可能需要production在 gemfile 中添加一个组...类似于以下内容:

group :production do
    gem 'mysql2'
end

从终端运行bundle install并尝试再次启动它。

于 2013-12-19T00:25:43.443 回答
1

Please make doubly certain what Rumen Milushev suggested: YAML is very sensitive to indentation.

Try removing the production: part completely, rename development: to production: and try again.

If that works, validate your database.yml against a tool such as yamllint.com

于 2013-12-15T16:31:00.280 回答
1
  1. 您的 Gemfile 需要指定 mysql gem。——没关系,我现在看到了。
  2. 您需要指定数据库套接字。它并不总是在 /tmp/mysql.sock 中,有时它在 /var... 这取决于您安装的 mysql2

    socket: /tmp/mysql.sock需要是你的 database.yml 生产部分中的一行

例如

production:    
  adapter: mysql2       
  encoding: utf8    
  reconnect: false    
  database: blogg_production    
  pool: 5    
  timeout: 5000    
  username: root    
  password: ***
  socket: /tmp/mysql.sock    
  host: localhost
  1. yml 对缩进很有趣。仔细检查它是否正确。
于 2013-12-18T04:21:45.953 回答
-2

您需要指定所有忘记测试的环境,这可能是错误发生的原因

于 2012-12-06T13:06:39.943 回答