【问题标题】:Can't open rails console: production database not configured, establish_connection raises ActiveRecord::AdapterNotSpecified无法打开 Rails 控制台:生产数据库未配置,建立连接引发 ActiveRecord::AdapterNotSpecified
【发布时间】:2010-09-06 20:44:07
【问题描述】:

我的应用程序在生产环境中运行得非常完美——至少是其中的网站部分。只有当我通过 SSH 连接到我的 VPS 并执行“rails c RAILS_ENV=production”时,才会出现问题。控制台在开发模式下工作正常。

我以前遇到过这个问题(或者至少是一个看起来像的问题)并通过在 database.yml 中添加“reconnect: true”来修复它——但这次它没有解决它。这是错误输出的开始:

/home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:62:in `establish_connection': RAILS_ENV=production database is not configured (ActiveRecord::AdapterNotSpecified)
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:55:in `establish_connection'
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.0/lib/active_record/railtie.rb:59:in `block (2 levels) in <class:Railtie>'
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.0/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.0/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.0/lib/active_support/lazy_load_hooks.rb:26:in `on_load'
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.0/lib/active_record/railtie.rb:57:in `block in <class:Railtie>'
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.0/lib/rails/initializable.rb:25:in `instance_exec'
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.0/lib/rails/initializable.rb:25:in `run'
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.0/lib/rails/initializable.rb:50:in `block in run_initializers'

对于我的生产数据库设置:

production:
  adapter: mysql
  encoding: utf8
  database: tour_production
  pool: 5
  username: [user]
  password: [password]
  socket: /var/run/mysqld/mysqld.sock
  reconnect: true

我不明白为什么它可以通过乘客工作,但控制台却没有运气。无论如何,我正在使用 Rails 3、Ruby 1.9.2、Passenger 和 Nginx。

我一直在通过 Runner 做一些小事情,这很烦人。我想解决这个问题。非常感谢您的帮助。

【问题讨论】:

    标签: mysql ruby-on-rails activerecord console


    【解决方案1】:

    当您使用控制台时,您将环境指定为第一个参数,而不是环境变量。所以:

    ruby script/console production
    

    将加载生产环境。

    您的错误消息是因为它正在寻找环境RAILS_ENV=production 而不仅仅是production

    【讨论】:

    • 啊,这样就行了。似乎每个命令都有不同的方式来声明 rails 环境。非常感谢您的快速回答。
    【解决方案2】:

    最新的 Rails 3 方法很简单:

    bundle exec rails console -e production
    

    【讨论】:

    • 其实更像是:bundle exec rails console production
    • 你的方法更好。更新了我的答案。
    【解决方案3】:

    @Shadwell 是正确的,但是如果您使用一致的语法,您可以在开头设置 RAILS_ENV,如下所示:

    RAILS_ENV=production rails console
    

    【讨论】:

      【解决方案4】:

      我用运行解决了:

      RAILS_ENV=production bundle exec rails c
      

      更多详情link 或者 stackoverflow

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-13
        • 2022-08-19
        • 1970-01-01
        • 1970-01-01
        • 2018-12-03
        • 2020-11-25
        • 1970-01-01
        相关资源
        最近更新 更多