【问题标题】:middleman - asset path for CDN at build time中间人 - 构建时 CDN 的资产路径
【发布时间】:2013-06-30 07:41:18
【问题描述】:

我想做以下事情

if build?
    assetPath = "//cdn.domain.com/assets"
else
    assetPath = "assets"
end

尝试所有组合并到处阅读,但此刻只是难住了

ruby 和中间人 - 仍在学习。

【问题讨论】:

    标签: ruby sprockets middleman


    【解决方案1】:

    您是否在config.rb 中尝试此操作?如果没有,你应该这样做。

    已经有一个您可能想要使用的设置...

    set :css_dir, 'assets'
    

    ...并在构建时更改:

    configure :build do
      set :css_dir, '//cdn.domain.com/assets'
    end
    

    你知道Asset helpers吗?你可以使用...

    <%= stylesheet_link_tag 'foo.css' %>
    

    ...在您的 (ERB) 模板中。

    在开发时应该给你...

    <link href="/assets/foo.css" media="screen" rel="stylesheet" type="text/css" />
    

    ...在您的构建中:

    <link href="//cdn.domain.com/assets/foo.css" media="screen" rel="stylesheet" type="text/css" />
    

    【讨论】:

    • 您好,我确定我已经尝试了所有这些 - 可能与设置发生冲突的其他一些问题 - 我会再试一次,谢谢
    • 我一直在寻找一个涉及 http_prefix 用于 CDN 使用的解决方案,除了很多挫折之外什么也没找到!这个解决方案对我很有用,谢谢。
    • 与asset_hash 选项结合使用时,此解决方案不起作用。您必须使用asset_host 选项来设置cdn url,正如其他答案所建议的那样。
    【解决方案2】:

    我实际上对早期答案有疑问。要实际更改资产路径以使用 CloudFront 等 CDN,我必须执行以下操作:

    # Fingerprint assets
    activate :asset_hash
    
    # Enable Asset Hosts
    activate :asset_host
    
    set :asset_host do |asset|
      '//d23xxk856.cloudfront.net'.to_s
    end
    

    【讨论】:

    猜你喜欢
    • 2016-01-23
    • 2022-06-25
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多