部署时如何告诉 Rails 使用生产数据库(而不是开发数据库)?

Posted

技术标签:

【中文标题】部署时如何告诉 Rails 使用生产数据库(而不是开发数据库)?【英文标题】:How to tell Rails to work with the production database (rather than development one) when deploying? 【发布时间】:2011-03-25 06:13:21 【问题描述】:

我正在尝试将我的 Rails 3 应用程序上传到真实的生产环境。 (该应用程序在我的本地机器上运行良好)。

当我运行 rails c 时出现以下错误:

/home/misha_moroshko/.gems/gems/activerecord-3.0.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:62:in `establish_connection': development database is not configured (ActiveRecord::AdapterNotSpecified)
        from /home/misha_moroshko/.gems/gems/activerecord-3.0.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:55:in `establish_connection'
        from /home/misha_moroshko/.gems/gems/activerecord-3.0.1/lib/active_record/railtie.rb:59
        from /home/misha_moroshko/.gems/gems/activesupport-3.0.1/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'

我应该如何告诉 Rails 它应该与生产数据库而不是开发数据库一起使用?

【问题讨论】:

【参考方案1】:

先设置RAILS_ENV环境变量,或者传递给rails c命令:

RAILS_ENV=production rails c

rails c production

【讨论】:

【参考方案2】:

你的 database.yml 中有什么?它应该有一个生产设置,你需要告诉 Rails 你想在生产中运行它:

rails c production

【讨论】:

【参考方案3】:

这在很大程度上取决于您要部署到的“环境”。对于 Apache 和Passenger,可以设置:

# conf/passenger.conf
RailsEnv production
RackEnv production

【讨论】:

以上是关于部署时如何告诉 Rails 使用生产数据库(而不是开发数据库)?的主要内容,如果未能解决你的问题,请参考以下文章

如何编写使用生产环境而不是开发环境的 ruby​​ 脚本?

在弹性 beantalk 上部署 rails 应用程序时出错(生产模式)

部署到 Heroku 时如何在我的生产环境中拥有一个 mysql 数据库

如何在开发模式而不是生产模式下部署 create-react-app 网站

如何解决错误“‘生产’环境缺少‘secret_key_base’”(Rails 4.1)

javascript_include_tag Rails 4 在生产中生成“/javascripts/”而不是“/assets”