使Rails资产行为依赖于环境

时间:2012-03-23 00:00:54

标签: ruby-on-rails ruby ruby-on-rails-3.1 asset-pipeline

我想知道Rails资产是否有任何根据环境而变化的方式。

类似的东西:

function log(m) {
  <% if Rails.env=='development' %>
    console.log(m)
  <% end %>
}

同样,您可以通过在样式表中创建特定于环境的功能来显示特殊消息或颜色方案。

(我意识到资产是在生产中编译的,这就是为什么我不希望在服务器运行时使用任何任意Ruby代码执行此操作。但我想知道是否有办法至少对环境这样做。)

1 个答案:

答案 0 :(得分:3)

请参阅Asset Pipeline, Preprocessing

动态Javascript

在您的javascript清单文件 app / assets / javascripts / application.js

//...
//= dynamic_js
//...

app / assets / javascripts / dynamic_js.js.erb

function log(m) {
  <% if Rails.env=='development' %>
    console.log(m)
  <% end %>
}

动态CSS

样式表清单中的

app / assets / stylesheets / application.css

/*...
*= dynamic_css
*/
app / assets / stylesheets / dynamic_css.css.erb

.environment-color {
  <% if Rails.env == 'development' %>
    color: <%= 'red' %>
  <% else %>
    color: <%= 'white' %>
  <% end %>
}