You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生产环境下Rails环境变量配置问题咨询

解决Rails生产环境下Figaro配置database.yml的问题

嗨,我明白你在生产环境配置Figaro时的困惑了——别慌,咱们一步步来搞定,其实和开发环境的逻辑是通的,只是部署到VPS时需要注意几个关键点,确保环境变量能正确加载到Rails应用里。

1. 先确保Figaro在生产服务器上能正常加载配置

Figaro的核心是帮你把config/application.yml里的配置注入到环境变量中,所以首先要让生产服务器上的Rails应用能访问到这个文件:

  • 上传application.yml到生产服务器:
    因为这个文件没进Git仓库,你需要手动把它传到VPS的Rails应用目录下。比如用scp命令:

    scp config/application.yml your-ssh-user@your-vps-ip:/path/to/your/rails-app/config/
    

    如果用Capistrano部署的话更省心,在deploy.rb里添加一行,让Capistrano把这个文件设为共享文件:

    append :linked_files, "config/application.yml"
    

    然后在服务器的shared/config目录下放一份application.yml,以后每次部署都会自动软链接到这个文件,不用重复上传。

  • 确保Gemfile包含Figaro:
    确认你的Gemfile里Figaro不是只在开发环境,最好放在全局(或者至少包含生产环境):

    gem 'figaro'
    

    部署时运行bundle install --without development test(根据你的环境调整),确保生产环境安装了Figaro。

2. 配置生产环境的database.yml

这一步和开发环境几乎一样,直接用ENV['变量名']来引用Figaro加载的环境变量就行。比如你的database.yml生产段可以这么写:

production:
  adapter: postgresql # 换成你实际用的数据库,比如mysql2
  database: your_production_database_name
  username: <%= ENV['DATABASE_USERNAME'] %>
  password: <%= ENV['DATABASE_PASSWORD'] %>
  host: <%= ENV['DATABASE_HOST'] %> # 如果数据库不在本地服务器就填实际地址,本地的话写localhost
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  encoding: unicode

对应的application.yml里要包含生产环境的这些配置(可以分环境写,也可以全局写,分环境的优先级更高):

production:
  DATABASE_USERNAME: your_prod_db_username
  DATABASE_PASSWORD: your_secure_production_db_password
  DATABASE_HOST: localhost

3. 验证配置是否生效

登录到你的VPS,进入Rails应用根目录,启动生产环境的控制台:

rails c production

然后输入ENV['DATABASE_PASSWORD'],如果能输出你在application.yml里设置的密码,说明Figaro已经成功把配置注入到环境变量里了,database.yml也能正确读取到。

4. 额外的安全小提示

  • 给生产服务器上的application.yml设置严格的权限,避免其他用户读取:
    chmod 600 config/application.yml
    
  • 如果你用systemd或者其他进程管理器(比如Puma、Unicorn)启动Rails服务器,不需要额外配置环境变量——Figaro会在Rails启动时自动加载application.yml的内容,直接就能用。

内容的提问来源于stack exchange,提问作者catmal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:33:20