2013-02-21 61 views
1

config.assets.compile = true参数可启用所谓的“实时编译”。 我需要Rails在实时模式下为每个请求编译一个特定的资源(sample.css.scss.erb),但其余资源应该仍然是预编译的。 我该如何做到这一点?仅针对Rails中的一个文件编译实况资产

回答

1

选项1 - 把sample.css.scss.erbconfig.assets.manifest (default="public/assets")不同的路径,并与javascript_include_tag

选项2添加它 - 从config.assets.precompile删除它

config.assets.precompile -= %w(sample.css.scss.erb) 

确保清洁,然后以预编译测试它。

我没有测试任何选项,请让我们知道,如果有任何适合你的作品。

0

当通过.css.erb文件预处理css时,需要实时编译文件。 它意味着动态编译CSS。

例如:允许用户设置的颜色和希望有条件使用“活汇编”

在这种情况下,我会建议动态渲染,而不是活编译/users/:id/styles.css.erb 。

可能有数百万用户的原因,并且在使用Ec2实例的生产环境中会花费更多。这就是为什么我会建议以下解决方案:

首先定义在UsersController您的自定义操作:

# config/routes.rb 
match '/users/:id/styles' => 'users#styles', :as => :user_styles 

链接到你的布局“样式”:

# app/views/layouts/application.html.erb 
= stylesheet_link_tag 'application', user_styles_path(current_user, :format => 'css') 

中定义的动作你控制器。你可以做任何你想在这里检索用户的喜好:

# app/controllers/users_controller.rb 
class UsersController < ApplicationController 
    def styles 
    @colors = User.find(params[:id]).colors 
    end 
end 

这一行动将自动生成这样的观点:

# app/views/users/styles.css.scss.erb 
$background-color: <%= @colors[:background] %>; 

body { 
    background-color: $background-color; 
} 

更多的想法和suggetions者居多。