class DynamicStylesheet

Public Class Methods

new(options) click to toggle source
# File lib/generators/templates/dynamic_stylesheet.rb, line 2
def initialize(options)
  @options = options
end

Public Instance Methods

compile() click to toggle source
# File lib/generators/templates/dynamic_stylesheet.rb, line 38
def compile
  precompile
  unless Rails.application.config.assets.compile
    env = Rails.application.assets.is_a?(Sprockets::Index) ? Rails.application.assets.instance_variable_get('@environment') : Rails.application.assets

    Sprockets::StaticCompiler.new(
      env,
      File.join(Rails.public_path, Rails.application.config.assets.prefix),
      [self.stylesheet_file],
      digest:   true,
      manifest: false
    ).compile

    Rails.application.config.assets.digests[self.stylesheet_file] = env[self.stylesheet_file].digest_path
  end

  Dir[self.scss_file_path.sub(/\d+.css.scss$/, '*')].each do |file|
    File.delete file unless file == self.scss_file_path.to_s
  end
end
compiled?() click to toggle source
# File lib/generators/templates/dynamic_stylesheet.rb, line 26
def compiled?
  if Rails.application.config.assets.compile
    File.exists?(self.scss_file_path) && !File.zero?(self.scss_file_path)
  else
    Rails.application.config.assets.digests[self.stylesheet_file].present?
  end
end
erb_file_path() click to toggle source
# File lib/generators/templates/dynamic_stylesheet.rb, line 18
def erb_file_path
  Rails.root.join('app', 'assets', 'stylesheets', 'sass', erb_filename)
end
erb_filename() click to toggle source
# File lib/generators/templates/dynamic_stylesheet.rb, line 14
def erb_filename
  'dyn_stylesheet.scss.erb'
end
precompile() click to toggle source
# File lib/generators/templates/dynamic_stylesheet.rb, line 34
def precompile
  File.open(scss_file_path, 'w') { |f| f.write render_scss }
end
render_scss() click to toggle source
# File lib/generators/templates/dynamic_stylesheet.rb, line 22
def render_scss
  ERB.new(File.read(erb_file_path)).result(binding)
end
scss_file_path() click to toggle source
# File lib/generators/templates/dynamic_stylesheet.rb, line 10
def scss_file_path
  Rails.root.join('app', 'assets', 'stylesheets', "#{self.stylesheet_file}.scss")
end
stylesheet_file() click to toggle source
# File lib/generators/templates/dynamic_stylesheet.rb, line 6
def stylesheet_file
  "#{Rails.env}_dyn_stylesheet.css"
end