乘客忽略RAILS_ENV

背景

我有一个包含各种变量的env文件,该变量取决于我的Rails应用程序,包括RAILS_ENV,该文件已初始化为在此文件中进行开发。我还database.yml为我的环境定义了数据库连接的文件(如下)。当我运行rails控制台时,一切看起来都应该正确。检查Rails.configuration.database_configuration[Rails.env]返回以下内容:

{"adapter"=>"postgresql",
"encoding"=>"utf8",
"database"=>"dev",
"username"=>"rails",
"password"=>"***",
"host"=>"localhost",
"pool"=>5,
"timeout"=>5000}

但是,当我尝试访问该应用程序时,出现502并记录了以下错误:

机架应用程序对象中出现ActiveRecord :: NoDatabaseError异常(FATAL:数据库“ prod”不存在。

显然,错误消息是准确的,但不代表我期望的。

我假设这是旅客/阿帕奇问题,因为运行rails console一切都很好。

注意:我已经在其他帖子中看到了这一点,所以没有-没有DATABASE_URL环境变量浮在上覆盖来自的内容database.yml

我尝试过的

  1. .bashrc乘客应该为用户apache的运行源bashrc的运行方式,而后者又被设置为获取相关的env文件。
  2. /etc/sysconfig/httpd:我尝试过直接从Apache配置手动获取文件,并在脚本运行时通过将env转储到文件中进行验证,以确保将正确的值写入到env中,但是这也不会更改损坏的行为。

数据库

development:
  adapter: postgresql
  encoding: utf8
  database: dev
  username: rails
  password: <%= ENV['RAILS_DB_PWD'] %>
  host: <%= ENV['RAILS_DB_HOST'] %>
  pool: 5
  timeout: 5000

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: postgresql
  encoding: utf8
  database: test
  username: rails
  password: <%= ENV['RAILS_DB_PWD'] %>
  host: <%= ENV['RAILS_DB_HOST'] %>
  pool: 5
  timeout: 5000

production:
  adapter: postgresql
  encoding: utf8
  database: prod
  username: rails
  password: <%= ENV['RAILS_DB_PWD'] %>
  host: <%= ENV['RAILS_DB_HOST'] %>
  port: 5432
  pool: 5
  timeout: 5000
最大限度

更好的方法是只使用DATABASE_URLenv var。

如果您同时拥有config / database.yml和ENV['DATABASE_URL']set,那么Rails会将配置合并在一起。
Rails指南:配置数据库

common: &common
  adapter: postgresql
  encoding: utf8
  template: template0 # Required for UTF8 encoding
  pool: 5
  timeout: 5000

development:
  <<: *common
  database: dev

test:
  <<: *common
  database: test

production:
  <<: *common
  database: prod

我通常建议您避免在中指定数据库用户名和密码database.yml使用ENV vars Luke!当您处于中间状态时,最好采用约定而不是配置方法,而不要引入单独的var。

测试应用程序是否正确配置所有配置的一个试金石是,是否可以在不损害任何凭证的情况下,随时将代码库设为开源。https://12factor.net/config

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

乘客以RAILS_ENV = production独立开始

来自分类Dev

如何永久设置RAILS_ENV

来自分类Dev

Nginx + Phusion乘客+ Rails =暂不设置ENV

来自分类Dev

在rails_env = test时Rspec无法正常工作

来自分类Dev

NGINX中的rails_env设置不影响旅客

来自分类Dev

将Rails_Env设置为生产的预编译资产

来自分类Dev

如何基于服务器自动设置RAILS_ENV

来自分类Dev

RAILS_ENV 在命令行中无法正常工作

来自分类Dev

RACK_ENV和RAILS_ENV有什么区别?

来自分类Dev

如何将RSPEC配置为从不在RAILS_ENV生产中运行

来自分类Dev

为什么我得到“未定义的局部变量或方法'rails_env'”?

来自分类Dev

错误迁移正在等待;运行“ rake db:migrate RAILS_ENV = development”来解决此问题

来自分类Dev

没有RAILS_ENV = production,rake asset:precompile有什么作用?

来自分类Dev

前耙资产:precompile和RAILS_ENV =生产前资产:precompile有什么区别?

来自分类Dev

gitlab耙资产:预编译RAILS_ENV =生产失败,出现权限错误

来自分类Dev

bash命令中的自动完成环境变量(例如RAILS_ENV = test bundle ...)

来自分类Dev

如何将RSPEC配置为从不在RAILS_ENV生产中运行

来自分类Dev

Capistrano 3 在部署时不设置 rails_env 和 stage

来自分类Dev

乘客与 Rails Action 电缆

来自分类Dev

Capistrano:被杀死的RAILS_ENV =生产RAILS_GROUPS =资产捆绑执行佣金资产:预编译

来自分类Dev

迁移正在进行中;运行“ rake db:migrate RAILS_ENV = development”来解决此问题。

来自分类Dev

迁移正在进行中。要解决此问题,请运行:bin / rake db:migrate RAILS_ENV = development

来自分类Dev

在不使用RAILS_ENV的情况下为Ruby应用程序指定环境的标准方法是什么?

来自分类Dev

“禁止访问”-乘客,Nginx,Rails

来自分类Dev

为什么Rails要求我一次又一次运行rake db:migrate RAILS_ENV = test?

来自分类Dev

正在获取:“迁移正在等待;运行'bin / rake db:migrate RAILS_ENV = development'解决此问题。” 克隆并迁移项目后

来自分类Dev

正在获取:“迁移正在等待;运行'bin / rake db:migrate RAILS_ENV = development'解决此问题。” 克隆并迁移项目后

来自分类Dev

rake db:test:clone RAILS_ENV =“ test”失败,出现奇数错误:数据库配置未指定适配器

来自分类Dev

Rails应用仅显示乘客的公共目录

Related 相关文章

  1. 1

    乘客以RAILS_ENV = production独立开始

  2. 2

    如何永久设置RAILS_ENV

  3. 3

    Nginx + Phusion乘客+ Rails =暂不设置ENV

  4. 4

    在rails_env = test时Rspec无法正常工作

  5. 5

    NGINX中的rails_env设置不影响旅客

  6. 6

    将Rails_Env设置为生产的预编译资产

  7. 7

    如何基于服务器自动设置RAILS_ENV

  8. 8

    RAILS_ENV 在命令行中无法正常工作

  9. 9

    RACK_ENV和RAILS_ENV有什么区别?

  10. 10

    如何将RSPEC配置为从不在RAILS_ENV生产中运行

  11. 11

    为什么我得到“未定义的局部变量或方法'rails_env'”?

  12. 12

    错误迁移正在等待;运行“ rake db:migrate RAILS_ENV = development”来解决此问题

  13. 13

    没有RAILS_ENV = production,rake asset:precompile有什么作用?

  14. 14

    前耙资产:precompile和RAILS_ENV =生产前资产:precompile有什么区别?

  15. 15

    gitlab耙资产:预编译RAILS_ENV =生产失败,出现权限错误

  16. 16

    bash命令中的自动完成环境变量(例如RAILS_ENV = test bundle ...)

  17. 17

    如何将RSPEC配置为从不在RAILS_ENV生产中运行

  18. 18

    Capistrano 3 在部署时不设置 rails_env 和 stage

  19. 19

    乘客与 Rails Action 电缆

  20. 20

    Capistrano:被杀死的RAILS_ENV =生产RAILS_GROUPS =资产捆绑执行佣金资产:预编译

  21. 21

    迁移正在进行中;运行“ rake db:migrate RAILS_ENV = development”来解决此问题。

  22. 22

    迁移正在进行中。要解决此问题,请运行:bin / rake db:migrate RAILS_ENV = development

  23. 23

    在不使用RAILS_ENV的情况下为Ruby应用程序指定环境的标准方法是什么?

  24. 24

    “禁止访问”-乘客,Nginx,Rails

  25. 25

    为什么Rails要求我一次又一次运行rake db:migrate RAILS_ENV = test?

  26. 26

    正在获取:“迁移正在等待;运行'bin / rake db:migrate RAILS_ENV = development'解决此问题。” 克隆并迁移项目后

  27. 27

    正在获取:“迁移正在等待;运行'bin / rake db:migrate RAILS_ENV = development'解决此问题。” 克隆并迁移项目后

  28. 28

    rake db:test:clone RAILS_ENV =“ test”失败,出现奇数错误:数据库配置未指定适配器

  29. 29

    Rails应用仅显示乘客的公共目录

热门标签

归档