active_assets 0.2.8 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. data/Rakefile +0 -2
  2. data/active_assets.gemspec +5 -2
  3. data/lib/active_assets.rb +11 -3
  4. data/lib/active_assets/active_expansions.rb +17 -10
  5. data/lib/active_assets/active_expansions/expansion.rb +0 -1
  6. data/lib/active_assets/active_expansions/expansions.rb +13 -5
  7. data/lib/active_assets/active_expansions/railtie.rb +1 -1
  8. data/lib/active_assets/active_sprites.rb +14 -31
  9. data/lib/active_assets/active_sprites/railtie.rb +1 -1
  10. data/lib/active_assets/active_sprites/runners/abstract_runner.rb +23 -11
  11. data/lib/active_assets/active_sprites/sprite_piece.rb +0 -2
  12. data/lib/active_assets/active_sprites/sprites.rb +20 -14
  13. data/lib/active_assets/rails2_support.rb +32 -0
  14. data/rails_generators/active_assets/USAGE +0 -0
  15. data/rails_generators/active_assets/active_assets_generator.rb +8 -0
  16. data/rails_generators/active_assets/templates/active_assets.rake +4 -0
  17. data/rails_generators/active_assets/templates/active_assets.rb +57 -0
  18. data/test/active_assets/active_expansions/expansions_test.rb +8 -7
  19. data/test/fixtures/rails_root_23/Rakefile +10 -0
  20. data/test/fixtures/rails_root_23/config/assets/assets.rb +71 -0
  21. data/test/fixtures/rails_root_23/config/boot.rb +113 -0
  22. data/test/fixtures/rails_root_23/config/environment.rb +41 -0
  23. data/test/fixtures/rails_root_23/config/environments/development.rb +17 -0
  24. data/test/fixtures/rails_root_23/config/environments/production.rb +28 -0
  25. data/test/fixtures/rails_root_23/config/environments/test.rb +28 -0
  26. data/test/fixtures/rails_root_23/config/initializers/active_assets.rb +53 -0
  27. data/test/fixtures/rails_root_23/config/initializers/backtrace_silencers.rb +7 -0
  28. data/test/fixtures/rails_root_23/config/initializers/cookie_verification_secret.rb +7 -0
  29. data/test/fixtures/rails_root_23/config/initializers/inflections.rb +10 -0
  30. data/test/fixtures/rails_root_23/config/initializers/mime_types.rb +5 -0
  31. data/test/fixtures/rails_root_23/config/initializers/new_rails_defaults.rb +21 -0
  32. data/test/fixtures/rails_root_23/config/initializers/session_store.rb +15 -0
  33. data/test/fixtures/rails_root_23/config/locales/en.yml +5 -0
  34. data/test/fixtures/rails_root_23/config/routes.rb +43 -0
  35. data/test/fixtures/rails_root_23/config/sprites.rb +14 -0
  36. data/test/fixtures/rails_root_23/log/test.log +1 -0
  37. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite3/1.png +0 -0
  38. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite3/2.png +0 -0
  39. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Argentina.png +0 -0
  40. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Australia.png +0 -0
  41. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Austria.png +0 -0
  42. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Belgium.png +0 -0
  43. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Brazil.png +0 -0
  44. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Cameroon.png +0 -0
  45. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Canada.png +0 -0
  46. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Chile.png +0 -0
  47. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/China.png +0 -0
  48. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Denmark.png +0 -0
  49. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Finland.png +0 -0
  50. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/France.png +0 -0
  51. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Germany.png +0 -0
  52. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Greece.png +0 -0
  53. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Hong Kong.png +0 -0
  54. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Hungary.png +0 -0
  55. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Iceland.png +0 -0
  56. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/India.png +0 -0
  57. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Indonesia.png +0 -0
  58. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Ireland.png +0 -0
  59. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Israel.png +0 -0
  60. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Italy.png +0 -0
  61. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Japan.png +0 -0
  62. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Malaysia.png +0 -0
  63. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Mexico.png +0 -0
  64. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/New Zealand.png +0 -0
  65. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Norway.png +0 -0
  66. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Pakistan.png +0 -0
  67. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Palestine.png +0 -0
  68. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Peru.png +0 -0
  69. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Poland.png +0 -0
  70. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Portugal.png +0 -0
  71. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Puerto Rico.png +0 -0
  72. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Romania.png +0 -0
  73. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Russia.png +0 -0
  74. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Saudi Arabia.png +0 -0
  75. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Singapore.png +0 -0
  76. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/South Africa.png +0 -0
  77. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/South Korea.png +0 -0
  78. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Spain.png +0 -0
  79. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Sweden.png +0 -0
  80. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Switzerland.png +0 -0
  81. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Thailand.png +0 -0
  82. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/The Netherlands.png +0 -0
  83. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Turkey.png +0 -0
  84. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/UK.png +0 -0
  85. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/USA.png +0 -0
  86. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Ukraine.png +0 -0
  87. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Uruguay.png +0 -0
  88. data/test/fixtures/rails_root_23/public/images/sprite_images/sprite4/Venezuela.png +0 -0
  89. data/test/fixtures/rails_root_23/public/javascripts/bar/bas.js +1 -0
  90. data/test/fixtures/rails_root_23/public/javascripts/bas/bar.js +1 -0
  91. data/test/fixtures/rails_root_23/public/stylesheets/bar/bas.css +1 -0
  92. data/test/fixtures/rails_root_23/public/stylesheets/bas/bar.css +1 -0
  93. data/test/helper.rb +2 -5
  94. data/test/support/rails_helper.rb +17 -5
  95. metadata +217 -38
  96. data/lib/active_assets/active_expansions/configurable.rb +0 -14
  97. data/lib/active_assets/active_sprites/configurable.rb +0 -13
  98. data/lib/tasks/active_expansions/cache.rake +0 -6
  99. data/lib/tasks/active_sprites/sprites.rake +0 -5
data/Rakefile CHANGED
@@ -13,6 +13,4 @@ task :environment do
13
13
  load 'test/fixtures/rails_root/config/environment.rb'
14
14
  end
15
15
 
16
- Dir['lib/tasks/**/*.rake'].each {|f| load f}
17
-
18
16
  task :default => :test
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |s|
3
3
  s.name = "active_assets"
4
- s.version = '0.2.8'
4
+ s.version = '0.3.0'
5
5
  s.platform = Gem::Platform::RUBY
6
6
  s.authors = ["Sam Woodard"]
7
7
  s.email = ["sam@wildfireapp.com"]
@@ -16,12 +16,15 @@ Gem::Specification.new do |s|
16
16
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
17
  s.require_paths = ["lib"]
18
18
 
19
+ s.add_runtime_dependency "activesupport", "~>2.3.5"
20
+
21
+ s.add_development_dependency 'rails', "~>2.3.5"
22
+ s.add_development_dependency 'rake'
19
23
  s.add_development_dependency 'oily_png'
20
24
  s.add_development_dependency 'chunky_png'
21
25
  s.add_development_dependency 'rmagick'
22
26
  s.add_development_dependency 'mini_magick'
23
27
  s.add_development_dependency 'css_parser', '~>1.1.5'
24
- s.add_development_dependency "rails", "~>3.0.3"
25
28
  s.add_development_dependency "test-unit", "> 2.0"
26
29
  s.add_development_dependency "ZenTest", "~>4.4.2"
27
30
  end
@@ -1,8 +1,16 @@
1
1
  require 'active_support'
2
2
 
3
3
  module ActiveAssets
4
- extend ActiveSupport::Autoload
4
+ autoload :ActiveExpansions, 'active_assets/active_expansions'
5
+ autoload :ActiveSprites, 'active_assets/active_sprites'
5
6
 
6
- autoload :ActiveExpansions
7
- autoload :ActiveSprites
7
+ def self.rails2?
8
+ rv = Rails.version rescue nil
9
+ rv ||= RAILS_GEM_VERSION rescue nil
10
+ rv ||= Gem.loaded_specs.find { |n,spec| n == 'rails' }[1].version.to_s
11
+
12
+ Gem::Version.new(rv) < Gem::Version.new('3.0.0.beta')
13
+ end
8
14
  end
15
+
16
+ require 'active_assets/rails2_support' if ActiveAssets.rails2?
@@ -2,16 +2,23 @@ require 'active_support'
2
2
 
3
3
  module ActiveAssets
4
4
  module ActiveExpansions
5
- extend ActiveSupport::Autoload
5
+ autoload :Asset, 'active_assets/active_expansions/asset'
6
+ autoload :AssetScope, 'active_assets/active_expansions/asset_scope'
7
+ autoload :TypeInferrable, 'active_assets/active_expansions/type_inferrable'
8
+ autoload :Configurable, 'active_assets/active_expansions/configurable'
9
+ autoload :Expansion, 'active_assets/active_expansions/expansion'
10
+ autoload :Assets, 'active_assets/active_expansions/assets'
11
+ autoload :Javascripts, 'active_assets/active_expansions/javascripts'
12
+ autoload :Stylesheets, 'active_assets/active_expansions/stylesheets'
13
+ autoload :Expansions, 'active_assets/active_expansions/expansions'
6
14
 
7
- autoload :Asset
8
- autoload :AssetScope
9
- autoload :TypeInferrable
10
- autoload :Configurable
11
- autoload :Expansion
12
- autoload :Assets
13
- autoload :Javascripts
14
- autoload :Stylesheets
15
- autoload :Expansions
15
+ def self.define_tasks
16
+ namespace :activeexpansions do
17
+ desc "Cache the active expansions to the {stylesheets,javascripts} cache directory"
18
+ task :cache => :environment do
19
+ Rails.application.expansions.javascripts.cache! and Rails.application.expansions.stylesheets.cache!
20
+ end
21
+ end
22
+ end
16
23
  end
17
24
  end
@@ -1,5 +1,4 @@
1
1
  require 'active_support'
2
- require 'active_support/hash_with_indifferent_access'
3
2
 
4
3
  module ActiveAssets
5
4
  module ActiveExpansions
@@ -1,13 +1,13 @@
1
- require 'active_support/configurable'
2
-
3
1
  module ActiveAssets
4
2
  module ActiveExpansions
5
3
  class Expansions
6
4
  include AssetScope
7
5
  include TypeInferrable
8
- include ActiveSupport::Configurable
9
- include Configurable
10
- ActiveSupport.run_load_hooks(:active_expansions, self)
6
+
7
+ @@precache_assets = false
8
+ cattr_accessor :precache_assets
9
+
10
+ ActiveSupport.run_load_hooks(:active_expansions, self) if ActiveSupport.respond_to?(:run_load_hooks)
11
11
 
12
12
  def initialize
13
13
  @expansions = Hash.new(&method(:build_expansions_hash_with_defaults))
@@ -71,6 +71,14 @@ module ActiveAssets
71
71
  @expansions.clear
72
72
  end
73
73
 
74
+ def precache_assets
75
+ @@precache_assets
76
+ end
77
+
78
+ def precache_assets=(val)
79
+ @@precache_assets = val
80
+ end
81
+
74
82
  private
75
83
  def defer_expansion(name, options, &blk)
76
84
  @deferred_expansion_config = [name, options]
@@ -6,7 +6,7 @@ module ActiveAssets
6
6
  module ActiveExpansions
7
7
  class Railtie < Rails::Railtie
8
8
  rake_tasks do
9
- Dir[File.expand_path("../../../tasks/active_expansions/*.rake", __FILE__)].each {|f| load f}
9
+ ActiveAssets::ActiveExpansions.define_tasks
10
10
  end
11
11
 
12
12
  config.active_expansions = ActiveSupport::OrderedOptions.new
@@ -2,38 +2,21 @@ require 'active_support'
2
2
 
3
3
  module ActiveAssets
4
4
  module ActiveSprites
5
- extend ActiveSupport::Autoload
6
-
7
- autoload :SpritePiece
8
- autoload :Sprite
9
- autoload :Sprites
10
- autoload :Configurable
11
- autoload :SpriteStylesheet
12
- autoload_under "runners" do
13
- autoload :AbstractRunner
14
- autoload :RmagickRunner
15
- autoload :MiniMagickRunner
16
- autoload :ChunkyPngRunner
17
- end
18
-
19
- def self.load_engine_tasks(engine_class)
20
- desc "Generate sprites"
21
- task :sprites do
22
- require 'rails'
23
- require 'rails/active_sprites'
24
-
5
+ autoload :SpritePiece, 'active_assets/active_sprites/sprite_piece'
6
+ autoload :Sprite, 'active_assets/active_sprites/sprite'
7
+ autoload :Sprites, 'active_assets/active_sprites/sprites'
8
+ autoload :Configurable, 'active_assets/active_sprites/configurable'
9
+ autoload :SpriteStylesheet, 'active_assets/active_sprites/sprite_stylesheet'
10
+ autoload :AbstractRunner, 'active_assets/active_sprites/runners/abstract_runner'
11
+ autoload :RmagickRunner, 'active_assets/active_sprites/runners/rmagick_runner'
12
+ autoload :MiniMagickRunner, 'active_assets/active_sprites/runners/mini_magick_runner'
13
+ autoload :ChunkyPngRunner, 'active_assets/active_sprites/runners/chunky_png_runner'
14
+
15
+ def self.define_tasks
16
+ desc "Generate sprites."
17
+ task :sprites => :environment do
25
18
  ENV['VERBOSE'] ||= 'true'
26
-
27
- Rails.application ||= Class.new(Rails::Application)
28
- Rails.application.extend Rails::ActiveSprites
29
-
30
- engine = engine_class.new
31
- sprite_path = File.join(engine.config.paths.config.paths.first, 'sprites.rb')
32
-
33
- if File.exists?(sprite_path)
34
- load sprite_path
35
- Rails.application.sprites.generate!(engine)
36
- end
19
+ Rails.application.sprites.generate!
37
20
  end
38
21
  end
39
22
 
@@ -9,7 +9,7 @@ module ActiveAssets
9
9
  config.active_sprites = ActiveSupport::OrderedOptions.new
10
10
 
11
11
  rake_tasks do
12
- Dir[File.expand_path("../../../tasks/active_sprites/*.rake", __FILE__)].each {|f| load f}
12
+ ActiveAssets::ActiveSprites.define_tasks
13
13
  end
14
14
 
15
15
  initializer 'active_sprites-extend-application' do
@@ -1,6 +1,5 @@
1
1
  require 'action_controller'
2
2
  require 'action_view'
3
- require 'rack/mount'
4
3
  require 'action_view'
5
4
  require 'fileutils'
6
5
 
@@ -10,15 +9,14 @@ module ActiveAssets
10
9
  class AssetContext < ActionView::Base
11
10
  end
12
11
 
13
- def initialize(railtie, sprites)
14
- @railtie = railtie
12
+ def initialize(sprites)
15
13
  @sprites = if ENV['SPRITE']
16
14
  sprites.select do |name, sprite|
17
15
  ENV['SPRITE'].split(',').map(&:strip).any? do |sp|
18
16
  # were going to be very forgiving
19
17
  name == sp ||
20
18
  name == sp.to_sym ||
21
- name == ::Rack::Mount::Utils.normalize_path(sp)
19
+ name == self.normalize_path(sp)
22
20
  end
23
21
  end.map(&:last)
24
22
  else
@@ -61,7 +59,7 @@ module ActiveAssets
61
59
  end
62
60
 
63
61
  stylesheet = SpriteStylesheet.new(sprite_pieces)
64
- stylesheet_file_path = File.join(@railtie.config.paths.public.to_a.first, sprite_stylesheet_path)
62
+ stylesheet_file_path = File.join(Rails.public_path, sprite_stylesheet_path)
65
63
  $stdout << "Writing stylesheet to #{stylesheet_file_path} ... " if verbose
66
64
  stylesheet.write stylesheet_file_path
67
65
  $stdout << "done.\n" if verbose
@@ -70,7 +68,7 @@ module ActiveAssets
70
68
  create_sprite(sprite, sprite_path, sprite_pieces, image_list, width, height, orientation, verbose)
71
69
  $stdout << "Success!\n" if verbose
72
70
 
73
- sprite_file_path = File.join(@railtie.config.paths.public.to_a.first, sprite_path)
71
+ sprite_file_path = File.join(Rails.public_path, sprite_path)
74
72
  $stdout << "Writing sprite to #{sprite_file_path} ... " if verbose
75
73
  write sprite_file_path, sprite.quality
76
74
  $stdout << "done.\n" if verbose
@@ -91,13 +89,11 @@ module ActiveAssets
91
89
  end
92
90
 
93
91
  def image_computed_full_path(path)
94
- File.join(@railtie.config.paths.public.to_a.first, image_computed_path(path))
92
+ File.join(Rails.public_path, image_computed_path(path))
95
93
  end
96
94
 
97
95
  def stylesheet_computed_path(path)
98
- stylesheet_full_path = @railtie.config.respond_to?(:action_controller) && @railtie.config.paths.public.stylesheets.to_a.first
99
- stylesheet_path = stylesheet_full_path ? stylesheet_full_path[%r{public/(.*)}, 1] : 'stylesheets'
100
- File.join(stylesheet_path, path)
96
+ File.join('stylesheets', path)
101
97
  end
102
98
 
103
99
  def sanitize_asset_path(path)
@@ -105,9 +101,25 @@ module ActiveAssets
105
101
  end
106
102
 
107
103
  def sprite_url(sprite, sprite_path)
108
- sprite.url.present? ? sprite.url : ::Rack::Mount::Utils.normalize_path(sprite_path)
104
+ sprite.url.present? ? sprite.url : normalize_path(sprite_path)
109
105
  end
110
106
 
107
+ # Rack::Mount::Utils#normalize_path from rack-mount 0.6.13
108
+ # Normalizes URI path.
109
+ #
110
+ # Strips off trailing slash and ensures there is a leading slash.
111
+ #
112
+ # normalize_path("/foo") # => "/foo"
113
+ # normalize_path("/foo/") # => "/foo"
114
+ # normalize_path("foo") # => "/foo"
115
+ # normalize_path("") # => "/"
116
+ def normalize_path(path)
117
+ path = "/#{path}"
118
+ path.squeeze!('/')
119
+ path.sub!(%r{/+\Z}, '')
120
+ path = '/' if path == ''
121
+ path
122
+ end
111
123
  end
112
124
  end
113
125
  end
@@ -1,5 +1,3 @@
1
- require 'rack/mount'
2
-
3
1
  module ActiveAssets
4
2
  module ActiveSprites
5
3
  class SpritePiece
@@ -1,11 +1,7 @@
1
- require 'active_support/configurable'
2
-
3
1
  module ActiveAssets
4
2
  module ActiveSprites
5
3
  class Sprites
6
- include ActiveSupport::Configurable
7
- include Configurable
8
- ActiveSupport.run_load_hooks(:active_sprites, self)
4
+ cattr_accessor :sprite_backend
9
5
 
10
6
  def initialize
11
7
  @sprites = Hash.new do |sprites, name|
@@ -49,39 +45,39 @@ module ActiveAssets
49
45
  @sprites.clear
50
46
  end
51
47
 
52
- def generate!(railtie = Rails.application)
48
+ def generate!
53
49
  begin
54
50
  case sprite_backend
55
51
  when :rmagick
56
52
  require 'rmagick'
57
- RmagickRunner.new(railtie, @sprites).generate!
53
+ RmagickRunner.new(@sprites).generate!
58
54
  when :mini_magick
59
55
  require 'mini_magick'
60
- MiniMagickRunner.new(railtie, @sprites).generate!
56
+ MiniMagickRunner.new(@sprites).generate!
61
57
  when :chunky_png, :oily_png
62
58
  begin
63
59
  require 'oily_png'
64
- ChunkyPngRunner.new(railtie, @sprites).generate!
60
+ ChunkyPngRunner.new(@sprites).generate!
65
61
  rescue LoadError
66
62
  require 'chunky_png'
67
- ChunkyPngRunner.new(railtie @sprites).generate!
63
+ ChunkyPngRunner.new(@sprites).generate!
68
64
  end
69
65
  else
70
66
  begin
71
67
  require 'rmagick'
72
- RmagickRunner.new(railtie, @sprites).generate!
68
+ RmagickRunner.new(@sprites).generate!
73
69
  rescue LoadError
74
70
  begin
75
71
  begin
76
72
  require 'oily_png'
77
- ChunkyPngRunner.new(railtie, @sprites).generate!
73
+ ChunkyPngRunner.new(@sprites).generate!
78
74
  rescue LoadError
79
75
  require 'chunky_png'
80
- ChunkyPngRunner.new(railtie, @sprites).generate!
76
+ ChunkyPngRunner.new(@sprites).generate!
81
77
  end
82
78
  rescue LoadError
83
79
  require 'mini_magick'
84
- MiniMagickRunner.new(railtie, @sprites).generate!
80
+ MiniMagickRunner.new(@sprites).generate!
85
81
  end
86
82
  end
87
83
  end
@@ -93,6 +89,16 @@ module ActiveAssets
93
89
  $stdout << msg
94
90
  end
95
91
  end
92
+
93
+ def sprite_backend
94
+ @@sprite_backend
95
+ end
96
+
97
+ def sprite_backend=(val)
98
+ @@sprite_backend = val
99
+ end
100
+
101
+ ActiveSupport.run_load_hooks(:active_sprites, self) if ActiveSupport.respond_to?(:run_load_hooks)
96
102
  end
97
103
  end
98
104
  end
@@ -0,0 +1,32 @@
1
+ gem 'rails', '< 3.0.0.beta' # Prevent mistakes loading this against rails 3
2
+
3
+ require 'initializer'
4
+ require 'active_support/ordered_hash'
5
+ require 'active_support/ordered_options'
6
+
7
+ module Rails
8
+
9
+ class Application
10
+ def config
11
+ Rails.configuration
12
+ end unless methods.grep(/^config$/).any? # Use grep + regexp for 1.8 + 1.9
13
+ end
14
+
15
+ class << self
16
+ alias config configuration unless respond_to?(:config)
17
+ end
18
+
19
+ def self.application
20
+ @application ||= Application.new
21
+ end
22
+
23
+ class Configuration
24
+ def active_expansions
25
+ @active_expansions ||= ActiveSupport::OrderedOptions.new
26
+ end
27
+
28
+ def active_sprites
29
+ @active_sprites ||= ActiveSupport::OrderedOptions.new
30
+ end
31
+ end
32
+ end
File without changes
@@ -0,0 +1,8 @@
1
+ class ActiveAssetsGenerator < Rails::Generator::Base
2
+ def manifest
3
+ record do |m|
4
+ m.file 'active_assets.rb', 'config/initializers/active_assets.rb'
5
+ m.file 'active_assets.rake', 'lib/tasks/active_assets.rake'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,4 @@
1
+ require 'active_assets'
2
+
3
+ ActiveAssets::ActiveExpansions.define_tasks
4
+ ActiveAssets::ActiveSprites.define_tasks
@@ -0,0 +1,57 @@
1
+ require 'active_assets'
2
+ require 'rails/active_assets'
3
+
4
+ Rails.application.extend Rails::ActiveAssets
5
+
6
+ module ActiveAssets
7
+ module ActiveExpansions
8
+ def self.boot!
9
+ if Rails.application.config.active_expansions.respond_to?(:precache_assets)
10
+ Expansions.precache_assets = Rails.application.config.active_expansions.precache_assets
11
+ end
12
+
13
+ options = Rails.application.config.active_expansions
14
+ options.each { |k,v| send("#{k}=", v) }
15
+
16
+ load_active_expansions(Rails.root)
17
+
18
+ Rails.application.expansions.javascripts.register!
19
+ Rails.application.expansions.stylesheets.register!
20
+
21
+ if Expansions.precache_assets
22
+ Rails.application.expansions.javascripts.cache!
23
+ Rails.application.expansions.stylesheets.cache!
24
+ end
25
+ end
26
+
27
+ private
28
+ def self.load_active_expansions(root)
29
+ if File.exists?(File.join(root, 'config/assets.rb'))
30
+ load File.join(root, 'config/assets.rb')
31
+ elsif File.directory?(File.join(root, 'config/assets'))
32
+ Dir[File.join(root, 'config/assets/*.rb')].each do |f|
33
+ load f
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ module ActiveSprites
40
+ def self.boot!
41
+ if Rails.application.config.active_sprites.respond_to?(:sprite_backend)
42
+ Sprites.sprite_backend = Rails.application.config.active_sprites.sprite_backend
43
+ end
44
+
45
+ load_sprite_definition
46
+ end
47
+
48
+ private
49
+ def self.load_sprite_definition
50
+ config_path = File.join(Rails.root, 'config')
51
+ load File.join(config_path, 'sprites.rb') if File.exists?(File.join(config_path, 'sprites.rb'))
52
+ end
53
+ end
54
+ end
55
+
56
+ ActiveAssets::ActiveExpansions.boot!
57
+ ActiveAssets::ActiveSprites.boot!