我的应用程序在生产中非常完美 - 至少是网站的一部分。当我通过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做一些小事,这很烦人。我想解决这个问题。所以,非常感谢帮助。
答案 0 :(得分:50)
使用控制台时,将环境指定为第一个参数,而不是环境变量。所以:
ruby script/console production
将加载生产环境。
您的错误消息是因为它正在寻找环境RAILS_ENV=production
,而不仅仅是production
。
答案 1 :(得分:42)
最新的Rails 3方法很简单:
bundle exec rails console -e production
答案 2 :(得分:17)
@Shadwell是正确的,但如果您使用的是一致的语法,则可以在开头设置RAILS_ENV
,如下所示:
RAILS_ENV=production rails console
答案 3 :(得分:-1)