Ruby on rails 在rails中使用Compass是否可以为开发和生产设置不同的SASS输出样式?

Ruby on rails 在rails中使用Compass是否可以为开发和生产设置不同的SASS输出样式?,ruby-on-rails,sass,compass-sass,Ruby On Rails,Sass,Compass Sass,假设我想为开发设置嵌套样式,为生产设置压缩样式。Compass配置文件中只有一个选项: output_style = :compact # or :nested, :expanded, :compressed 看起来很简单: output_style = RAILS_ENV == "production" ? :compressed : :nested 为了检查它,我已经在不同的环境中运行了这个rake任务(在运行这个任务之前,我必须更改sass源代码): 您可以将此任务放置在lib/tas

假设我想为开发设置嵌套样式,为生产设置压缩样式。Compass配置文件中只有一个选项:

output_style = :compact # or :nested, :expanded, :compressed

看起来很简单:

output_style = RAILS_ENV == "production" ? :compressed : :nested
为了检查它,我已经在不同的环境中运行了这个rake任务(在运行这个任务之前,我必须更改sass源代码):

您可以将此任务放置在lib/tasks/sass.rake中

否则,我会在Capistrano deploy.rb中运行此任务,以便在部署过程中自动更新生产上的样式表:

after 'deploy:restart', 'sass:update'

namespace :sass do
  desc 'Updates the stylesheets generated by Sass'
  task :update, :roles => :app do
    invoke_command "cd #{current_release}; rake sass:update RAILS_ENV=production"
  end
end

除了Voldy的答案之外,我还通过创建一个名为sass_config的初始值设定项并将其放入其中解决了这个问题:

Sass::Plugin.options[:style] = case RAILS_ENV
  when 'production' then :compressed
  when 'staging' then :compact
  when 'development' then :expanded
  else
    :nested
end
Sass::Plugin.options[:style] = case RAILS_ENV
  when 'production' then :compressed
  when 'staging' then :compact
  when 'development' then :expanded
  else
    :nested
end