class Abtest::ManifestManager
Attributes
manifests[RW]
Public Class Methods
new()
click to toggle source
# File lib/abtest.rb, line 13 def initialize @manifests = {'default' => default_manifest } end
Public Instance Methods
create_manifest(name)
click to toggle source
# File lib/abtest.rb, line 63 def create_manifest name app = Rails.application experiment_path = File.join(app.root, 'abtest', 'experiments', name) application_css_path = File.join(experiment_path, app.config.assets.prefix, 'stylesheets') images_path = File.join(experiment_path, app.config.assets.prefix, 'images') javascript_path = File.join(experiment_path, app.config.assets.prefix, 'javascripts') # Create a custom sprockets environment experiment_environment = Sprockets::Environment.new(Rails.root.to_s) do |env| env.context_class.class_eval do include ::Sprockets::Rails::Helper end end # Monkey patch class in-place with sass_config accessor experiment_environment.context_class.extend(::Sass::Rails::Railtie::SassContext) # Always calculate digests and compile files app.config.assets.digest = true app.config.assets.compile = true experiment_environment.cache = :null_store # Disables the Asset cache experiment_environment.prepend_path("#{application_css_path}") experiment_environment.prepend_path("#{images_path}") experiment_environment.prepend_path("#{javascript_path}") # Copy config.assets.paths to Sprockets app.config.assets.paths.each do |path| experiment_environment.append_path path end experiment_environment.js_compressor = app.config.assets.js_compressor experiment_environment.css_compressor = app.config.assets.css_compressor if app.config.logger experiment_environment.logger = app.config.logger else experiment_environment.logger = Logger.new($stdout) experiment_environment.logger.level = Logger::INFO end output_file = File.join(app.root, 'public', app.config.assets.prefix, 'experiments', name) experiment_environment.context_class.assets_prefix = "#{app.config.assets.prefix}/experiments/#{name}" experiment_environment.context_class.digest_assets = app.config.assets.digest experiment_environment.context_class.config = app.config.action_controller experiment_environment.context_class.sass_config = app.config.sass manifests[name] = Sprockets::Manifest.new(experiment_environment, output_file) end
default_manifest()
click to toggle source
# File lib/abtest.rb, line 21 def default_manifest app = Rails.application # Create a custom sprockets environment default_environment = Sprockets::Environment.new(Rails.root.to_s) do |env| env.context_class.class_eval do include ::Sprockets::Rails::Helper end end # Monkey patch class in-place with sass_config accessor default_environment.context_class.extend(::Sass::Rails::Railtie::SassContext) # Always calculate digests and compile files app.config.assets.digest = true app.config.assets.compile = true default_environment.cache = :null_store # Disables the Asset cache # Copy config.assets.paths to Sprockets app.config.assets.paths.each do |path| default_environment.append_path path end default_environment.js_compressor = app.config.assets.js_compressor default_environment.css_compressor = app.config.assets.css_compressor if app.config.logger default_environment.logger = app.config.logger else default_environment.logger = Logger.new($stdout) default_environment.logger.level = Logger::INFO end output_file = File.join(app.root, 'public', app.config.assets.prefix) default_environment.context_class.assets_prefix = "#{app.config.assets.prefix}" default_environment.context_class.digest_assets = app.config.assets.digest default_environment.context_class.config = app.config.action_controller default_environment.context_class.sass_config = app.config.sass Sprockets::Manifest.new(default_environment, output_file) end
retrieve_manifest(name)
click to toggle source
# File lib/abtest.rb, line 17 def retrieve_manifest name manifests[name] ||= create_manifest(name) end