Uncategorized

configure ruby on rails on render

变量 Key填写值为什么配置
RAILS_ENVproduction开启 Rails 生产模式,关闭调试页面,安全策略生效。
RAILS_MASTER_KEYcat config/master.key输出完整字符串解密config/credentials.yml.enc加密凭证;缺失直接启动崩溃。master.key 严禁提交 git
RAILS_SERVE_STATIC_FILEStrueRender 没有独立静态 CDN;开启后提供预编译 css/js 图片,否则静态资源 404。

需要配置环境变量: AI说:

要在 Render 服务器上运行你的 Ruby on Rails 项目,你需要配置一系列环境变量,并根据项目目前的架构做一些生产环境的优化建议。

  1. 必须配置的环境变量
    根据你的项目文件(特别是 config/environments/production.rb、config/database.yml 和 config/storage.yml),你需要在 Render 的后台面板中设置以下环境变量:
    基础配置

    RAILS_MASTER_KEY: 最重要。用于解密 config/credentials.yml.enc。你可以在本地项目的 config/master.key 文件中找到它的值。

    DATABASE_URL: 生产环境数据库连接字符串。在 Render 上创建 PostgreSQL 数据库后,它会自动提供这个变量。

    RAILS_ENV: 设置为 production。

    NODE_ENV: 设置为 production。

    SECRET_KEY_BASE: 虽然 Rails 可能会从 credentials 中读取,但在 Render 上显式设置一个随机生成的长字符串可以增加安全性(可以通过 bin/rails secret 生成)。
    业务功能相关

    APP_HOST: 你的线上域名(例如 www.sinowerkitchen.com),用于生成邮件链接和 Active Storage 的 URL。

    RESEND_API_KEY: 用于邮件发送(Resend 服务)。

    RAILS_LOG_LEVEL: 建议设置为 info 或 warn(代码中默认 warn),以减少日志量。
    文件存储 (Cloudflare R2)
    你的项目配置了使用 Cloudflare R2 作为生产环境存储,需要提供以下变量:

    CLOUDFLARE_R2_ACCESS_KEY_ID

    CLOUDFLARE_R2_SECRET_ACCESS_KEY

    CLOUDFLARE_R2_BUCKET

    CLOUDFLARE_R2_ENDPOINT
  2. 部署建议与注意事项
    数据库迁移

    你的 Procfile 已经包含 bin/rails db:prepare。这很好,它会在每次部署时自动运行迁移文件。
    静态资源预编译

    Render 默认的 Ruby 构建命令通常会自动运行 bundle exec rails assets:precompile。由于你使用了 Tailwind CSS 和 Importmap,请确保构建命令包含了这一步。
    数据库选择

    虽然你在开发环境使用 SQLite,但生产环境配置(database.yml)指定了 postgresql。在 Render 上,请务必创建一个 PostgreSQL 数据库实例。
    安全性 (Rack::Attack)

    你项目中配置了 rack-attack 来防止暴力破解和恶意扫描。

    注意:Render 的负载均衡器会通过 X-Forwarded-For 传递客户端 IP。如果 rack-attack 拦截到了错误的 IP(比如 Render 内部 IP),你可能需要在 config/application.rb 中配置 config.middleware.use Rack::Attack 并在 production.rb 中正确配置受信任的代理。
    性能建议

    Solid Cache: 你的项目使用了 solid_cache。在生产环境中,这会把缓存存入数据库。对于小规模流量这没问题,但如果访问量增大,建议在 Render 上增加一个 Redis 实例,并将 cache_store 改为 :redis_cache_store 以减轻数据库压力。

    Active Job: 目前你的 queue_adapter 是 :inline,这意味着后台任务会同步执行,可能会阻塞 Web 请求。如果将来有耗时的任务(如发送大量邮件),建议改用 solid_queue 或 sidekiq。
    健康检查

    你代码中配置了 /up 路径作为健康检查。在 Render 的服务设置里,可以将 Health Check Path 设置为 /up,这样 Render 只有在应用完全启动后才会切换流量。
    总结 Checklist:

[ ] 复制 config/master.key 的内容到 Render 的 RAILS_MASTER_KEY。
2.
[ ] 在 Render 创建 PostgreSQL 数据库。
3.
[ ] 填入 Cloudflare R2 和 Resend 的 API Key。
4.
[ ] 确保 APP_HOST 设置为你的最终域名。

Leave a message

Share a thought, question, or useful experience.