【问题标题】:How to ignore public/assets with Pow如何使用 Pow 忽略公共/资产
【发布时间】:2023-10-26 08:19:01
【问题描述】:

我正在使用我的开发环境测试一些东西,我在本地预编译资产,然后将其重新同步到生产服务器。

但是,当我使用 Pow 时,它会为 /public/assets/ 文件夹提供服务,其中包含缩小的 css 和 js 文件。

我想知道如何解决这个问题。

如何通过 Pow 配置忽略公共/资产?

非常感谢

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.2 asset-pipeline rack-pow


    【解决方案1】:

    这种过程(在本地预编译并将资产推送到服务器,独立于来自您的 VCS 的代码)很常见。我通过 Capistrano 使用此策略的自定义实现作为我部署的一部分。

    在资产同步后有一个单独的 rake 任务要运行。

    rake assets:clean
    

    这将在本地刷新来自 public/assets 的资产,允许您继续开发从 app/assets/lib/assets/vendor/assets/ 等中提取的资产...

    我很确定 Pow 本身无法满足您的要求。关于这个有一个有趣的Rails Issue,具体来说,this comment

    config/environments/development.rb

    config.serve_static_assets = false
    

    config/routes.rb (在最后)

    if Rails.env.development?
      app = ActionDispatch::Static.new(
        lambda{ |env| [404, { 'X-Cascade' => 'pass'}, []] },
        Rails.application.config.paths['public'].first,
        Rails.application.config.static_cache_control
      )
    
      mount app, :at => '/', :as => :public
    end
    

    我自己没有测试过。

    【讨论】:

    • 嗨,Deefour,感谢您抽出宝贵时间回复。我将执行 rake:assets clean 任务。做起来很简单。您在本地预编译时是否遇到会话问题?