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

Rails 5生产环境secrets.yml中Recaptcha密钥识别错误求助

解决生产环境Recaptcha无法读取secrets.yml密钥的问题

碰到过好几个同行遇到这个生产环境Recaptcha密钥读不到的问题,结合Rails部署的常见坑,给你几个针对性的解决方案,应该能帮你搞定:

1. 先确认secrets.yml的生产环境配置格式是否正确

YAML对缩进和格式要求特别严,首先检查你的config/secrets.yml里生产环境的密钥结构必须是这样:

production:
  recaptcha_site_key: '你的生产环境Site Key'
  recaptcha_secret_key: '你的生产环境Secret Key'

注意:

  • 用空格缩进(别用制表符),层级要对齐
  • 密钥必须和Google Recaptcha控制台生成的生产环境专用密钥完全一致,别不小心把开发环境的密钥放进去了

2. 检查Capistrano部署时secrets.yml是否被正确同步

大部分人都会把secrets.yml加入.gitignore(这是正确的安全做法),但Capistrano默认不会上传git忽略的文件。你需要:

  1. 手动把生产环境的secrets.yml传到服务器的shared/config目录下
  2. 在config/deploy.rb里添加软链接配置:
append :linked_files, "config/secrets.yml"

这样每次部署时,Capistrano会自动把shared目录下的secrets.yml软链接到当前部署版本的config目录,确保生产环境能读取到正确的配置文件。

3. 别在secrets.yml里用export(除非你改用环境变量配置)

你之前尝试的export是shell环境变量的写法,但secrets.yml是YAML文件,这种写法完全无效。如果想改用更安全的环境变量方式配置(生产环境推荐),可以这么做:

  • 在服务器层面设置环境变量:比如在/etc/profile或者Nginx的server配置块里添加:
env RECAPTCHA_SITE_KEY=你的生产Site Key;
env RECAPTCHA_SECRET_KEY=你的生产Secret Key;

添加后记得重启Nginx生效。

  • 然后在secrets.yml里引用环境变量:
production:
  recaptcha_site_key: <%= ENV['RECAPTCHA_SITE_KEY'] %>
  recaptcha_secret_key: <%= ENV['RECAPTCHA_SECRET_KEY'] %>

4. 验证生产环境配置是否真的加载成功

登录到服务器,进入当前部署的应用目录,运行以下命令检查Recaptcha配置:

RAILS_ENV=production rails c
> Rails.application.secrets.recaptcha_site_key

如果返回nil或者错误的密钥,说明配置没加载对,回到前面的步骤排查;如果返回正确密钥,那要检查Recaptcha的初始化文件(比如config/initializers/recaptcha.rb)是否正确引用了配置:

Recaptcha.configure do |config|
  config.site_key  = Rails.application.secrets.recaptcha_site_key
  config.secret_key = Rails.application.secrets.recaptcha_secret_key
end

确保这里的键名和你secrets.yml里的完全一致。

5. 检查应用服务器的环境变量传递

如果用Passenger或Puma作为应用服务器,要确保它们能读取到服务器的环境变量:

  • 若是Passenger,在Nginx配置里添加:
passenger_env_var RECAPTCHA_SITE_KEY 你的生产Site Key;
passenger_env_var RECAPTCHA_SECRET_KEY 你的生产Secret Key;
  • 若是Puma,推荐在服务器层面配置环境变量,不要直接写在config/puma.rb里(避免密钥泄露),如果一定要写,就加:
ENV['RECAPTCHA_SITE_KEY'] = '你的生产Site Key'
ENV['RECAPTCHA_SECRET_KEY'] = '你的生产Secret Key'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:10:45