生产环境错误

时间:2012-12-05 15:21:47

标签: ruby-on-rails

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

6 个答案:

答案 0 :(得分:4)

这些是需要考虑的事项

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

  7. 如果这不起作用,我会查看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)

  1. 您的Gemfile需要指定mysql gem。 - 别介意我现在看到它。
  2. 您需要指定数据库套接字。它并不总是在/tmp/mysql.sock中有时它在/ var ...它取决于你安装的mysql2

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

  3. 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
    
    1. yml很有趣。仔细检查它是否正确。

答案 4 :(得分:1)

您可能需要在gemfile中添加production组...如下所示:

group :production do
    gem 'mysql2'
end

从终端运行bundle install并尝试重新开始。

答案 5 :(得分:-2)

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