Class: Abtest::ManifestManager
- Inherits:
-
Object
- Object
- Abtest::ManifestManager
- Includes:
- Singleton
- Defined in:
- lib/abtest.rb
Instance Attribute Summary collapse
-
#manifests ⇒ Object
Returns the value of attribute manifests.
Instance Method Summary collapse
- #create_manifest(name) ⇒ Object
- #default_manifest ⇒ Object
-
#initialize ⇒ ManifestManager
constructor
A new instance of ManifestManager.
- #retrieve_manifest(name) ⇒ Object
Constructor Details
#initialize ⇒ ManifestManager
Returns a new instance of ManifestManager.
13 14 15 |
# File 'lib/abtest.rb', line 13 def initialize @manifests = {'default' => default_manifest } end |
Instance Attribute Details
#manifests ⇒ Object
Returns the value of attribute manifests.
11 12 13 |
# File 'lib/abtest.rb', line 11 def manifests @manifests end |
Instance Method Details
#create_manifest(name) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# 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 ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# 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) ⇒ Object
17 18 19 |
# File 'lib/abtest.rb', line 17 def retrieve_manifest name manifests[name] ||= create_manifest(name) end |