web_resource_bundler 0.0.20 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. data/VERSION +1 -1
  2. data/lib/web_resource_bundler/content_management/block_data.rb +18 -21
  3. data/lib/web_resource_bundler/content_management/block_parser.rb +58 -52
  4. data/lib/web_resource_bundler/content_management/css_url_rewriter.rb +3 -3
  5. data/lib/web_resource_bundler/content_management/resource_file.rb +38 -25
  6. data/lib/web_resource_bundler/exceptions.rb +1 -3
  7. data/lib/web_resource_bundler/file_manager.rb +14 -3
  8. data/lib/web_resource_bundler/filters/bundle_filter/resource_packager.rb +45 -27
  9. data/lib/web_resource_bundler/filters/bundle_filter.rb +27 -22
  10. data/lib/web_resource_bundler/filters/cdn_filter.rb +27 -23
  11. data/lib/web_resource_bundler/filters/image_encode_filter/css_generator.rb +53 -40
  12. data/lib/web_resource_bundler/filters/image_encode_filter/image_data.rb +22 -17
  13. data/lib/web_resource_bundler/filters/image_encode_filter.rb +49 -23
  14. data/lib/web_resource_bundler/filters.rb +6 -1
  15. data/lib/web_resource_bundler/rails_app_helpers.rb +56 -40
  16. data/lib/web_resource_bundler/settings.rb +99 -0
  17. data/lib/web_resource_bundler/web_resource_bundler_init.rb +1 -1
  18. data/lib/web_resource_bundler.rb +100 -125
  19. data/spec/sample_block_helper.rb +3 -3
  20. data/spec/web_resource_bundler/content_management/block_data_spec.rb +56 -11
  21. data/spec/web_resource_bundler/content_management/block_parser_spec.rb +24 -10
  22. data/spec/web_resource_bundler/content_management/resource_file_spec.rb +7 -15
  23. data/spec/web_resource_bundler/file_manager_spec.rb +12 -4
  24. data/spec/web_resource_bundler/filters/bundle_filter/filter_spec.rb +5 -5
  25. data/spec/web_resource_bundler/filters/bundle_filter/resource_packager_spec.rb +15 -2
  26. data/spec/web_resource_bundler/filters/cdn_filter_spec.rb +15 -7
  27. data/spec/web_resource_bundler/filters/image_encode_filter/css_generator_spec.rb +44 -4
  28. data/spec/web_resource_bundler/filters/image_encode_filter/filter_spec.rb +20 -15
  29. data/spec/web_resource_bundler/settings_spec.rb +77 -0
  30. data/spec/web_resource_bundler/web_resource_bundler_spec.rb +19 -26
  31. data/web_resource_bundler.gemspec +4 -4
  32. metadata +5 -5
  33. data/lib/web_resource_bundler/settings_manager.rb +0 -91
  34. data/spec/web_resource_bundler/settings_manager_spec.rb +0 -88
@@ -7,7 +7,7 @@ describe WebResourceBundler::Filters::CdnFilter do
7
7
  @cdn_settings[:https_hosts] = ['http://froogle.com']
8
8
  @settings[:cdn_filter][:http_hosts] = @cdn_settings[:http_hosts]
9
9
  @settings[:cdn_filter][:https_hosts] = @cdn_settings[:https_hosts]
10
- @file_manager = FileManager.new(@settings[:resource_dir], @settings[:cache_dir])
10
+ @file_manager = FileManager.new(@settings)
11
11
  @filter = Filters::CdnFilter::Filter.new(@cdn_settings, @file_manager)
12
12
  end
13
13
 
@@ -15,21 +15,29 @@ describe WebResourceBundler::Filters::CdnFilter do
15
15
  it "returns host for image using its hash" do
16
16
  @cdn_settings[:http_hosts] << 'http://froogle.com'
17
17
  url = '/images/1.gif'
18
- @filter.host_for_image(url).should == @cdn_settings[:http_hosts][url.hash % @cdn_settings[:http_hosts].size]
18
+ @filter.send(:host_for_image, url).should == @cdn_settings[:http_hosts][url.hash % @cdn_settings[:http_hosts].size]
19
19
  end
20
20
 
21
21
  it "returns https host if request was https" do
22
22
  @cdn_settings[:protocol] = 'https'
23
23
  @filter = Filters::CdnFilter::Filter.new(@cdn_settings, @file_manager)
24
24
  url = '/images/1.gif'
25
- @filter.host_for_image(url).should == @cdn_settings[:https_hosts][url.hash % @cdn_settings[:https_hosts].size]
25
+ @filter.send(:host_for_image, url).should == @cdn_settings[:https_hosts][url.hash % @cdn_settings[:https_hosts].size]
26
+ end
27
+ end
28
+
29
+ describe "#url_css_tag" do
30
+ it "should return css url tag with absolute url" do
31
+ host = 'http://google.com'
32
+ url = '/styles/1.css'
33
+ @filter.send(:url_css_tag, host, url).should == "url('" + host + url + "')"
26
34
  end
27
35
  end
28
36
 
29
37
  describe "#new_filename" do
30
38
  it "adds cdn_ prefix to original file name" do
31
39
  path = 'styles/1.css'
32
- @filter.new_filepath(path).should == 'cache/cdn_1.css'
40
+ @filter.send(:new_filepath, path).should == 'cache/cdn_1.css'
33
41
  end
34
42
  end
35
43
 
@@ -40,14 +48,14 @@ describe WebResourceBundler::Filters::CdnFilter do
40
48
 
41
49
  it "adds hosts to image urls" do
42
50
  content = "background: url('../images/1.png');"
43
- @filter.rewrite_content_urls!(@file_path, content)
51
+ @filter.send(:rewrite_content_urls!, @file_path, content)
44
52
  content.should == "background: url('http://boogle.com/styles/images/1.png');"
45
53
  end
46
54
 
47
55
  it "doesn't add hosts for images encoded in base64" do
48
56
  content = "background:url('data:image/png;base64,iVBORw0KGg); *background:url(mhtml:http://domain.com/cache/base64_ie_style_9648c01be7e50284958eb07877c70e03.en.css!rails5804) no-repeat 0 100%;"
49
57
  clon = content.dup
50
- @filter.rewrite_content_urls!(@file_path, content.dup)
58
+ @filter.send(:rewrite_content_urls!, @file_path, content.dup)
51
59
  content.should == clon
52
60
  end
53
61
 
@@ -57,7 +65,7 @@ describe WebResourceBundler::Filters::CdnFilter do
57
65
  content = "background: url('../images/1.png');background-image: url('../images/1.png');"
58
66
  host = @cdn_settings[:http_hosts]['/styles/images/1.png'.hash % @cdn_settings[:http_hosts].size]
59
67
  url = "#{host}/styles/images/1.png"
60
- @filter.rewrite_content_urls!(@file_path, content)
68
+ @filter.send(:rewrite_content_urls!, @file_path, content)
61
69
  content.should == "background: url('#{url}');background-image: url('#{url}');"
62
70
  end
63
71
  end
@@ -3,7 +3,7 @@ module WebResourceBundler::Filters::ImageEncodeFilter
3
3
  describe CssGenerator do
4
4
  before(:each) do
5
5
  @settings = base64_settings
6
- @generator = CssGenerator.new(@settings, FileManager.new(@settings[:resource_dir], @settings[:cache_dir]))
6
+ @generator = CssGenerator.new(@settings, FileManager.new(@settings))
7
7
  end
8
8
 
9
9
  describe "#pattern" do
@@ -24,12 +24,43 @@ module WebResourceBundler::Filters::ImageEncodeFilter
24
24
  end
25
25
  end
26
26
  end
27
+
28
+ describe "#set_settings" do
29
+ it "should set new settings" do
30
+ sets = {:key => 'value'}
31
+ @generator.set_settings(sets)
32
+ @generator.instance_variable_get("@settings").should == sets
33
+ end
34
+ end
35
+
36
+ describe "#image_size_limit" do
37
+ it "should return 32kb @settings[:max_image_size] is not setted" do
38
+ settings = base64_settings
39
+ settings[:max_image_size] = nil
40
+ @generator.set_settings(settings)
41
+ @generator.send(:image_size_limit).should == CssGenerator::MAX_IMAGE_SIZE
42
+ end
43
+
44
+ it "should return settings[:max_image_size] if it's less then 32 kb" do
45
+ settings = base64_settings
46
+ settings[:max_image_size] = 10
47
+ @generator.set_settings(settings)
48
+ @generator.send(:image_size_limit).should == 10
49
+ end
50
+
51
+ it "should return 32kb if settings[:max_image_size] bigger than 32" do
52
+ settings = base64_settings
53
+ settings[:max_image_size] = 100
54
+ @generator.set_settings(settings)
55
+ @generator.send(:image_size_limit).should == CssGenerator::MAX_IMAGE_SIZE
56
+ end
57
+ end
27
58
 
28
59
  describe "#encode_images_basic" do
29
60
 
30
61
  before(:each) do
31
62
  @content = "background-image: url('images/ligo.jpg'); background: url('images/logo.jpg');"
32
- @images = @generator.encode_images_basic!(@content) do |image_data, tag|
63
+ @images = @generator.send(:encode_images_basic!, @content) do |image_data, tag|
33
64
  tag + image_data.extension
34
65
  end
35
66
  end
@@ -88,15 +119,24 @@ module WebResourceBundler::Filters::ImageEncodeFilter
88
119
  it "changes urls to mhtml link" do
89
120
  @generator.encode_images_for_ie!(@content, 'cache/1.mhtml')
90
121
  @content.include?("mhtml:#{@settings[:protocol]}://#{@settings[:domain]}/cache/1.mhtml!").should be_true
91
- @content.include?("*background: #eeeeee url(mhtml:").should be_true
122
+ @content.include?("background: #eeeeee url(mhtml:").should be_true
92
123
  @content.include?("repeat-x 0 100%").should be_true
93
124
  end
94
125
  end
95
126
  end
96
127
 
128
+ describe "#construct_mhtml_content" do
129
+ it "returns mhtml block for ie" do
130
+ images = [ImageData.new('images/logo.jpg', @settings[:resource_dir])]
131
+ result = @generator.construct_mhtml_content(images)
132
+ result.include?(CssGenerator::MHTML_CONTENT_TYPE).should be_true
133
+ result.include?(CssGenerator::SEPARATOR).should be_true
134
+ end
135
+ end
136
+
97
137
  describe "#construct_mhtml_link" do
98
138
  it "should create link without public folder" do
99
- @generator.construct_mhtml_link("temp.css").should == "http://#{@settings[:domain]}/temp.css"
139
+ @generator.send(:construct_mhtml_link, "temp.css").should == "http://#{@settings[:domain]}/temp.css"
100
140
  end
101
141
  end
102
142
  end
@@ -2,42 +2,47 @@ require File.expand_path(File.join(File.dirname(__FILE__), "../../../spec_helper
2
2
  describe WebResourceBundler::Filters::ImageEncodeFilter::Filter do
3
3
 
4
4
  before(:each) do
5
- @settings = settings
5
+ @settings = settings
6
6
  @base64_settings = base64_settings
7
- @file_prefix = Filters::ImageEncodeFilter::Filter::FILE_PREFIX
8
- @ie_file_prefix = Filters::ImageEncodeFilter::Filter::IE_FILE_PREFIX
9
- @file_manager = FileManager.new(@settings[:resource_dir], @settings[:cache_dir])
10
- @filter = Filters::ImageEncodeFilter::Filter.new(@base64_settings, @file_manager)
7
+ @file_prefix = Filters::ImageEncodeFilter::Filter::FILE_PREFIX
8
+ @ie_file_prefix = Filters::ImageEncodeFilter::Filter::IE_FILE_PREFIX
9
+ @mhtml_prefix = Filters::ImageEncodeFilter::Filter::MHTML_FILE_PREFIX
10
+ @file_manager = FileManager.new(@settings)
11
+ @filter = Filters::ImageEncodeFilter::Filter.new(@base64_settings, @file_manager)
11
12
  end
12
13
 
13
14
  describe "#encoded_filepath" do
14
15
  it "should return new filename for css for all browsers except IE" do
15
16
  filename = "mycss.css"
16
- @filter.encoded_filepath(filename).should == File.join(@settings[:cache_dir], @file_prefix + filename)
17
+ @filter.send(:css_filepath, filename).should == File.join(@settings[:cache_dir], @file_prefix + filename)
17
18
  end
18
19
  end
19
20
 
20
- describe "#new_filepath_for_ie" do
21
+ describe "#mhtml_css_filepath" do
21
22
  it "should return new filename for css for IE" do
22
23
  filename = "2.css"
23
- @filter.encoded_filepath_for_ie(filename).should == File.join(@settings[:cache_dir], @ie_file_prefix + filename)
24
+ @filter.send(:mhtml_css_filepath, filename).should == File.join(@settings[:cache_dir], @ie_file_prefix + filename)
24
25
  end
25
26
  end
26
27
 
27
28
  describe "#mhtml_filepath" do
28
- it "returns mhtml file path" do
29
- @filter.mhtml_filepath('styles/1.css').should == 'cache/mhtml_1.mhtml'
29
+ it "should return new filename for mhtml file for IE" do
30
+ filename = "2.css"
31
+ @filter.send(:mhtml_filepath, filename).should == File.join(@settings[:cache_dir], @mhtml_prefix + '2.mhtml')
30
32
  end
31
33
  end
32
34
 
35
+
33
36
  describe "#apply" do
34
37
  context "block was bundled" do
38
+
35
39
  before(:each) do
36
40
  @bundler_filter = Filters::BundleFilter::Filter.new(@base64_settings, @file_manager)
37
- end
41
+ end
42
+
38
43
  it "encodes images in css and change filename" do
39
44
  block_data = @sample_block_helper.sample_block_data
40
- bundle_filepath = @bundler_filter.bundle_filepath(WebResourceBundler::ResourceFileType::CSS, block_data.styles)
45
+ bundle_filepath = @bundler_filter.send(:bundle_filepath, WebResourceBundler::ResourceFileType::CSS, block_data.styles)
41
46
  @bundler_filter.apply!(block_data)
42
47
  @filter.apply!(block_data)
43
48
  generated_files = block_data.files.map {|f| f.path}
@@ -47,15 +52,15 @@ describe WebResourceBundler::Filters::ImageEncodeFilter::Filter do
47
52
 
48
53
  it "changes type of styles files to CSS only" do
49
54
  block_data = @sample_block_helper.sample_block_data
50
- resource_file = WebResourceBundler::ResourceFile.new_style_file(styles.first)
55
+ resource_file = WebResourceBundler::ResourceFile.new_css_file(styles.first)
51
56
  block_data.files = [resource_file]
52
57
  block_data.child_blocks = []
53
58
  @bundler_filter.apply!(block_data)
54
59
  @filter.apply!(block_data)
55
60
  block_data.files.size.should == 3
56
- %w{CSS IE_CSS MHTML}.each do |type_name|
61
+ %w{BASE64_CSS MHTML_CSS MHTML}.each do |type_name|
57
62
  type = eval("WebResourceBundler::ResourceFileType::" + type_name)
58
- block_data.files.select {|f| f.types == [type]}.size.should == 1
63
+ block_data.files.select {|f| f.type == type}.size.should == 1
59
64
  end
60
65
  end
61
66
  end
@@ -0,0 +1,77 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "../spec_helper"))
2
+ describe WebResourceBundler::Settings do
3
+
4
+ before(:each) do
5
+ @s = settings
6
+ Settings.set(@s)
7
+ end
8
+
9
+ describe "#defaults" do
10
+ it "returns default required settings for bundler" do
11
+ root = '/root'
12
+ settings = Settings.send(:defaults, root)
13
+ settings[:resource_dir].should == File.join(root, Settings::DEFAULT_RESOURCE_DIR)
14
+ settings[:log_path].should == File.join(root, Settings::DEFAULT_LOG_PATH)
15
+ settings[:cache_dir].should == Settings::DEFAULT_CACHE_DIR
16
+ settings[:bundle_filter][:use].should == true
17
+ settings[:cdn_filter][:use].should == false
18
+ settings[:base64_filter][:use].should == true
19
+ end
20
+ end
21
+
22
+ describe "#commons" do
23
+ it "returns settings common to all filters" do
24
+ settings = Settings.send(:commons, @s)
25
+ settings.keys.size.should == 2
26
+ settings[:resource_dir].should == @s[:resource_dir]
27
+ settings[:cache_dir].should == @s[:cache_dir]
28
+ end
29
+ end
30
+
31
+ describe "#read_from_file" do
32
+ it "loads settings from yaml file" do
33
+ rails_root = root_dir
34
+ content = File.read(File.join(root_dir, 'config/web_resource_bundler.yml'))
35
+ rails_env = 'development'
36
+ original = YAML::load(content)[rails_env]
37
+ settings = Settings.send(:read_from_file, rails_root, rails_env)
38
+ original.each_key do |key|
39
+ settings[key].should == original[key]
40
+ end
41
+ settings[:resource_dir].should == File.join(root_dir, Settings::DEFAULT_RESOURCE_DIR)
42
+ end
43
+ it "returns empty hash if file isn't exist" do
44
+ Settings.send(:read_from_file, '', '').should == {}
45
+ end
46
+ end
47
+
48
+ describe "#correct?" do
49
+ it "should return true if all required keys present" do
50
+ Settings.correct?.should be_true
51
+ end
52
+ it "returns false if one of the keys isn't present" do
53
+ Settings.settings.delete(:resource_dir)
54
+ Settings.correct?.should be_false
55
+ end
56
+ end
57
+
58
+ describe "filter_settings" do
59
+ it "returns filter settings merged with common settings" do
60
+ cdn_sets = Settings.filter_settings(:cdn_filter)
61
+ cdn_sets[:resource_dir].should == Settings.settings[:resource_dir]
62
+ cdn_sets[:cache_dir].should == Settings.settings[:cache_dir]
63
+ cdn_sets[:max_image_size].should be_nil
64
+ end
65
+ end
66
+
67
+ describe "#set_request_specific_data!" do
68
+ it "sets domain and protocol for settings" do
69
+ s = {}
70
+ Settings.set_request_specific_data!(s, 'google.com', 'http')
71
+ s[:domain].should == 'google.com'
72
+ s[:protocol].should == 'http'
73
+ end
74
+ end
75
+
76
+ end
77
+
@@ -4,14 +4,12 @@ module WebResourceBundler
4
4
 
5
5
  before(:each) do
6
6
  @s = settings
7
- @bundler = WebResourceBundler::Bundler.instance
7
+ @bundler = WebResourceBundler::Bundler
8
8
  end
9
9
 
10
10
  describe "#initialize" do
11
11
  it "sets instance state correctly" do
12
12
  @bundler.logger.should == nil
13
- @bundler.settings.should == nil
14
- @bundler.settings_correct.should == false
15
13
  end
16
14
  end
17
15
 
@@ -20,25 +18,17 @@ module WebResourceBundler
20
18
  @bundler.setup(root_dir, 'development')
21
19
  end
22
20
 
23
- #describe "#set_settings" do
24
- # it "changes settings for all filters" do
25
- # settings = @bundler.settings.dup
26
- # settings[:base64_filter][:use] = false
27
- # @bundler.set_settings(settings)
28
- # end
29
- #end
30
-
31
21
  describe "#filters_array" do
32
22
  it "returns array of filters that has :use => true in settings" do
33
23
  @bundler.set_settings(@s)
34
- filters = @bundler.send("filters_array")
24
+ filters = @bundler.send("filters_array", @bundler.filters)
35
25
  filters.size.should == 3
36
26
  @bundler.filters.size.should == 3
37
27
  i = 2
38
28
  %w{cdn_filter bundle_filter base64_filter}.each do |s|
39
29
  @s[s.to_sym][:use] = false
40
30
  @bundler.set_settings(@s)
41
- filters = @bundler.send("filters_array")
31
+ filters = @bundler.send("filters_array", @bundler.filters)
42
32
  filters.size.should == i
43
33
  @bundler.filters.size.should == 3
44
34
  i -= 1
@@ -48,20 +38,23 @@ module WebResourceBundler
48
38
 
49
39
  describe "#set_filters" do
50
40
  before(:each) do
51
- @file_manager = FileManager.new(@s[:resource_dir], @s[:cache_dir])
41
+ @file_manager = FileManager.new(@s)
52
42
  @bundler.instance_eval "@filters={}"
53
43
  end
54
44
  it "inits filters if no filters were initialized before" do
55
45
  @bundler.filters.should == {}
56
- @bundler.send("set_filters", @s, @file_manager)
46
+ @bundler.send("set_filters", @bundler.filters, @bundler.instance_variable_get("@file_manager"))
57
47
  @bundler.filters.size.should == 3
58
48
  end
59
49
  it "sets filters settings if filters already inited" do
60
- @bundler.send("set_filters", @s, @file_manager)
50
+ @bundler.send("set_filters", @bundler.filters, @bundler.instance_variable_get("@file_manager"))
61
51
  @bundler.filters[:base64_filter].settings[:max_image_size].should == @s[:base64_filter][:max_image_size]
62
- @s[:base64_filter][:max_image_size] = 90
63
- @bundler.send("set_filters", @s, @file_manager)
64
- @bundler.filters[:base64_filter].settings[:max_image_size].should == 90
52
+ Settings.set({:base64_filter => {
53
+ :use => true,
54
+ :max_image_size => 18
55
+ }})
56
+ @bundler.send("set_filters", @bundler.filters, @bundler.instance_variable_get("@file_manager"))
57
+ @bundler.filters[:base64_filter].settings[:max_image_size].should == 18
65
58
  end
66
59
  end
67
60
 
@@ -69,15 +62,15 @@ module WebResourceBundler
69
62
  describe "#create_logger" do
70
63
 
71
64
  it "creates log directory if it's unexistent" do
72
- log_dir_path = File.dirname(@bundler.settings[:log_path])
65
+ log_dir_path = File.dirname(Settings.settings[:log_path])
73
66
  FileUtils.rm_rf(log_dir_path)
74
- @bundler.send("create_logger", @bundler.settings[:log_path])
67
+ @bundler.send("create_logger", Settings.settings[:log_path])
75
68
  File.exist?(log_dir_path).should be_true
76
69
  FileUtils.rm_rf(log_dir_path)
77
70
  end
78
71
 
79
72
  it "sets log_path in settings if it isn't specified" do
80
- path = @bundler.settings[:log_path]
73
+ path = Settings.settings[:log_path]
81
74
  @bundler.send("create_logger", path)
82
75
  File.exist?(path).should be_true
83
76
  File.delete(path)
@@ -104,10 +97,10 @@ module WebResourceBundler
104
97
  @bundler.set_settings(settings)
105
98
  clean_cache_dir
106
99
  block_text = @sample_block_helper.sample_block
107
- block_data = BlockParser.new.parse(block_text.dup)
108
- @bundler.send("bundle_upto_date?", block_data).should == false
100
+ block_data = BlockParser.parse(block_text.dup)
101
+ @bundler.send("bundle_upto_date?", block_data, @bundler.filters).should == false
109
102
  @bundler.process(block_text, 'localhost:3000', 'http')
110
- @bundler.send("bundle_upto_date?", block_data).should == true
103
+ @bundler.send("bundle_upto_date?", block_data, @bundler.filters).should == true
111
104
  end
112
105
  end
113
106
 
@@ -117,7 +110,7 @@ module WebResourceBundler
117
110
  @bundler.set_settings(settings)
118
111
  block_data = @sample_block_helper.sample_block_data
119
112
  @bundler.send("read_resources!", block_data)
120
- all_files = block_data.styles + block_data.scripts + block_data.child_blocks[0].styles + block_data.child_blocks[0].scripts
113
+ all_files = block_data.all_files
121
114
  all_files.each do |file|
122
115
  CssUrlRewriter::rewrite_content_urls!(file.path, File.read(File.join(@s[:resource_dir], file.path))).should == file.content
123
116
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{web_resource_bundler}
8
- s.version = "0.0.20"
8
+ s.version = "0.0.21"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["gregolsen"]
@@ -34,7 +34,7 @@ Gem::Specification.new do |s|
34
34
  "lib/web_resource_bundler/filters/image_encode_filter/css_generator.rb",
35
35
  "lib/web_resource_bundler/filters/image_encode_filter/image_data.rb",
36
36
  "lib/web_resource_bundler/rails_app_helpers.rb",
37
- "lib/web_resource_bundler/settings_manager.rb",
37
+ "lib/web_resource_bundler/settings.rb",
38
38
  "lib/web_resource_bundler/web_resource_bundler_init.rb",
39
39
  "spec/sample_block_helper.rb",
40
40
  "spec/spec_helper.rb",
@@ -64,7 +64,7 @@ Gem::Specification.new do |s|
64
64
  "spec/web_resource_bundler/filters/image_encode_filter/css_generator_spec.rb",
65
65
  "spec/web_resource_bundler/filters/image_encode_filter/filter_spec.rb",
66
66
  "spec/web_resource_bundler/filters/image_encode_filter/image_data_spec.rb",
67
- "spec/web_resource_bundler/settings_manager_spec.rb",
67
+ "spec/web_resource_bundler/settings_spec.rb",
68
68
  "spec/web_resource_bundler/web_resource_bundler_spec.rb",
69
69
  "web_resource_bundler.gemspec"
70
70
  ]
@@ -86,7 +86,7 @@ Gem::Specification.new do |s|
86
86
  "spec/web_resource_bundler/filters/image_encode_filter/css_generator_spec.rb",
87
87
  "spec/web_resource_bundler/filters/image_encode_filter/filter_spec.rb",
88
88
  "spec/web_resource_bundler/filters/image_encode_filter/image_data_spec.rb",
89
- "spec/web_resource_bundler/settings_manager_spec.rb",
89
+ "spec/web_resource_bundler/settings_spec.rb",
90
90
  "spec/web_resource_bundler/web_resource_bundler_spec.rb"
91
91
  ]
92
92
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 20
9
- version: 0.0.20
8
+ - 21
9
+ version: 0.0.21
10
10
  platform: ruby
11
11
  authors:
12
12
  - gregolsen
@@ -62,7 +62,7 @@ files:
62
62
  - lib/web_resource_bundler/filters/image_encode_filter/css_generator.rb
63
63
  - lib/web_resource_bundler/filters/image_encode_filter/image_data.rb
64
64
  - lib/web_resource_bundler/rails_app_helpers.rb
65
- - lib/web_resource_bundler/settings_manager.rb
65
+ - lib/web_resource_bundler/settings.rb
66
66
  - lib/web_resource_bundler/web_resource_bundler_init.rb
67
67
  - spec/sample_block_helper.rb
68
68
  - spec/spec_helper.rb
@@ -92,7 +92,7 @@ files:
92
92
  - spec/web_resource_bundler/filters/image_encode_filter/css_generator_spec.rb
93
93
  - spec/web_resource_bundler/filters/image_encode_filter/filter_spec.rb
94
94
  - spec/web_resource_bundler/filters/image_encode_filter/image_data_spec.rb
95
- - spec/web_resource_bundler/settings_manager_spec.rb
95
+ - spec/web_resource_bundler/settings_spec.rb
96
96
  - spec/web_resource_bundler/web_resource_bundler_spec.rb
97
97
  - web_resource_bundler.gemspec
98
98
  has_rdoc: true
@@ -141,5 +141,5 @@ test_files:
141
141
  - spec/web_resource_bundler/filters/image_encode_filter/css_generator_spec.rb
142
142
  - spec/web_resource_bundler/filters/image_encode_filter/filter_spec.rb
143
143
  - spec/web_resource_bundler/filters/image_encode_filter/image_data_spec.rb
144
- - spec/web_resource_bundler/settings_manager_spec.rb
144
+ - spec/web_resource_bundler/settings_spec.rb
145
145
  - spec/web_resource_bundler/web_resource_bundler_spec.rb
@@ -1,91 +0,0 @@
1
- require 'yaml'
2
- class WebResourceBundler::SettingsManager
3
-
4
- DEFAULT_LOG_PATH = 'log/web_resource_bundler.log'
5
- DEFAULT_RESOURCE_DIR = 'public'
6
- DEFAULT_SETTINGS_PATH = 'config/web_resource_bundler.yml'
7
- DEFAULT_CACHE_DIR = 'cache'
8
-
9
- class << self
10
-
11
- #creates settings from config file or from defaults
12
- #if config file doesn't exists
13
- def create_settings(rails_root, rails_env)
14
- settings = {}
15
- if File.exist?(rails_root)
16
- #reading settings from file in config dir
17
- settings = settings_from_file(rails_root, rails_env)
18
- #building required defaults
19
- defaults = create_default_settings(rails_root)
20
- #merging required with read from file settings
21
- #if there's no file settings will contain just required defaults
22
- settings = defaults.merge(settings)
23
- end
24
- settings
25
- end
26
-
27
- #creates defaults settings
28
- def create_default_settings(rails_root)
29
- settings = {}
30
- settings[:resource_dir] = File.join(rails_root, DEFAULT_RESOURCE_DIR)
31
- settings[:log_path] = File.join(rails_root, DEFAULT_LOG_PATH)
32
- settings[:cache_dir] = DEFAULT_CACHE_DIR
33
- settings[:bundle_filter] = {
34
- :use => true
35
- }
36
- settings[:cdn_filter] = {
37
- :use => false
38
- }
39
- settings[:base64_filter] = {
40
- :use => true,
41
- :max_image_size => 20
42
- }
43
- settings
44
- end
45
-
46
- #settings common for all filters
47
- def common_settings(settings)
48
- {
49
- :resource_dir => settings[:resource_dir],
50
- :cache_dir => settings[:cache_dir],
51
- }
52
- end
53
-
54
- #load settings from yaml file depending on environment
55
- def settings_from_file(rails_root, rails_env)
56
- settings = {}
57
- settings_file_path = File.join(rails_root, DEFAULT_SETTINGS_PATH)
58
- if File.exist?(settings_file_path)
59
- settings_file = File.open(settings_file_path)
60
- all_settings = YAML::load(settings_file)
61
- if all_settings[rails_env]
62
- settings = all_settings[rails_env]
63
- settings[:resource_dir] = File.join(rails_root, DEFAULT_RESOURCE_DIR)
64
- end
65
- end
66
- settings
67
- end
68
-
69
- #ensures that settings has obligatory keys present
70
- def settings_correct?(settings)
71
- %w{resource_dir log_path cache_dir}.each do |key|
72
- return false unless settings.has_key?(key.to_sym)
73
- end
74
- return true
75
- end
76
-
77
- #dynamically created methods for each filter have its own settings method
78
- %w{base64_filter cdn_filter bundle_filter}.each do |filter_name|
79
- define_method "#{filter_name}_settings" do |settings|
80
- self.common_settings(settings).merge(settings[filter_name.to_sym])
81
- end
82
- end
83
-
84
- #setting request specific settings like domain and protocol
85
- def set_request_specific_settings!(settings, domain, protocol)
86
- settings[:domain] = domain
87
- settings[:protocol] = protocol
88
- settings
89
- end
90
- end
91
- end
@@ -1,88 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), "../spec_helper"))
2
- describe WebResourceBundler::SettingsManager do
3
-
4
- before(:each) do
5
- @s = settings
6
- end
7
-
8
- describe "#create_default_settings" do
9
- it "returns default required settings for bundler" do
10
- root = '/root'
11
- settings = SettingsManager.create_default_settings(root)
12
- settings[:resource_dir].should == File.join(root, SettingsManager::DEFAULT_RESOURCE_DIR)
13
- settings[:log_path].should == File.join(root, SettingsManager::DEFAULT_LOG_PATH)
14
- settings[:cache_dir].should == SettingsManager::DEFAULT_CACHE_DIR
15
- settings[:bundle_filter][:use].should == true
16
- settings[:cdn_filter][:use].should == false
17
- settings[:base64_filter][:use].should == true
18
- end
19
- end
20
-
21
- describe "#common_settings" do
22
- it "returns settings common to all filters" do
23
- settings = SettingsManager.common_settings(@s)
24
- settings.keys.size.should == 2
25
- settings[:resource_dir].should == @s[:resource_dir]
26
- settings[:cache_dir].should == @s[:cache_dir]
27
- end
28
- end
29
-
30
- describe "#settings_from_file" do
31
- it "loads settings from yaml file" do
32
- rails_root = root_dir
33
- content = File.read(File.join(root_dir, 'config/web_resource_bundler.yml'))
34
- rails_env = 'development'
35
- original = YAML::load(content)[rails_env]
36
- settings = SettingsManager.settings_from_file(rails_root, rails_env)
37
- original.each_key do |key|
38
- settings[key].should == original[key]
39
- end
40
- settings[:resource_dir].should == File.join(root_dir, SettingsManager::DEFAULT_RESOURCE_DIR)
41
- end
42
- it "returns empty hash if file isn't exist" do
43
- SettingsManager.settings_from_file('', '').should == {}
44
- end
45
- end
46
-
47
- describe "#settings_correct?" do
48
- it "should return true if all required keys present" do
49
- SettingsManager.settings_correct?(@s).should be_true
50
- end
51
- it "returns false if one of the keys isn't present" do
52
- @s.delete(:resource_dir)
53
- SettingsManager.settings_correct?(@s).should be_false
54
- end
55
- end
56
-
57
- context "dynamically created filter settings methods" do
58
- it "properly creates methods for each filter settings" do
59
- %w{cdn_filter_settings base64_filter_settings bundle_filter_settings}.each do |method|
60
- if RUBY_VERSION > '1.9.0'
61
- key = method.to_sym
62
- else
63
- key = method
64
- end
65
- SettingsManager.public_methods.include?(key).should be_true
66
- end
67
- end
68
- describe "#cdn_filter_settings" do
69
- it "returns cdn settings merged with commons" do
70
- cdn = SettingsManager.cdn_filter_settings(@s)
71
- cdn[:resource_dir].should == @s[:resource_dir]
72
- cdn[:cache_dir].should == @s[:cache_dir]
73
- cdn[:use].should == @s[:cdn_filter][:use]
74
- end
75
- end
76
- end
77
-
78
- describe "#set_request_specific_settings!" do
79
- it "sets domain and protocol for settings" do
80
- s = {}
81
- SettingsManager.set_request_specific_settings!(s, 'google.com', 'http')
82
- s[:domain].should == 'google.com'
83
- s[:protocol].should == 'http'
84
- end
85
- end
86
-
87
- end
88
-