【问题标题】:Ruby on Rails - Executing code on compileRuby on Rails - 在编译时执行代码
【发布时间】:2012-11-26 15:41:50
【问题描述】:

我想在编译时在 CSS 文件中使用 ruby​​ 代码并使其成为静态资产,然后可能会缩小它。我该怎么做?

【问题讨论】:

    标签: css ruby-on-rails-3 compiler-construction assets execute


    【解决方案1】:

    Rails 3.1+ 中的资产管道将根据文件名通过一系列预处理器发送您的资产。例如,如果您有stylesheet.css.scss,则文件通过 SASS 处理器发送以将其转换为 CSS。

    当您将扩展链接在一起以便通过多个处理器发送您的资产时,乐趣就开始了。在您的情况下,您可以将资产命名为 stylesheet.css.scss.erb 以先通过 ERB 发送,然后再通过 SASS 发送。下面是一个小例子:

    .some_class {
      background-image: url(<%= asset_path('image.png') %>);
      color: <%= some_ruby_code_to_generate_a_color %>;
    }
    

    因此,就像在常规 ERB 视图模板中一样,您可以简单地将 &lt;%= %&gt; 标记之间的 Ruby 代码放入您的资产中,该资产将在编译(或预编译)资产时运行。

    关于缩小,这是资产管道通过一些配置选项简单地处理的事情。查看Rails guide for the asset pipeline了解更多详情。

    【讨论】:

      最近更新 更多