【问题标题】:Rails 使用数据库中的数据重新编译资产
【发布时间】:2022-01-22 12:11:06
【问题描述】:

我想用数据库中的数据重新编译资产。我的应用只有不到 10 个用户,我想在部署时在 public/assets 文件夹中编译样式表。

在数据库中,我有一个存储用户颜色偏好的表。

      user_id | primary_bkg | secondary_bkg
        1234      red            blue
        1235     yellow         blue

config/environments/development.rb

config.assets.compile = true

用户颜色偏好表中的变量将覆盖 application.css 中的变量

我在哪里可以触发重新编译资产并从数据库中提取数据?

【问题讨论】:

    标签: ruby-on-rails asset-pipeline


    【解决方案1】:

    静态资产不是动态创建的。它们只是普通的 CSS 或普通的 JS。

    如果我理解得很好,您需要与用户一样多的 CSS 文件。它将创建比需要更多的静态资产。看起来效率不高。

    为什么不尝试以正常方式编译资源,让这些静态资源对每个用户都通用,并从 html 动态设置背景颜色:

    <div style="background-color: <%= @user.primary_bkg %>;">
    </div>
    

    【讨论】:

      【解决方案2】:

      如果您想在部署时进行预编译,如何实现取决于您选择的部署框架。通常,配置您的部署框架以使其运行(假设它是 Rails 5+)

      RAILS_ENV=production rails assets:precompile
      

      在部署时(或在每次部署时手动运行)。

      或者,你可以写

      config.assets.compile = true
      

      在您的 config/environments/production.rb不是 development.rb)中,尽管这意味着每次访问都会提示重新编译资产,因此会占用大量资源。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-27
        • 2011-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多