merb-plugins-app-config 0.4 → 0.5

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.
data/README CHANGED
@@ -36,20 +36,29 @@ You can also define your javascripts and stylesheets using AppConfig
36
36
  Merb.root/config/javascripts.yml
37
37
  Merb.root/config/stylesheets.yml
38
38
 
39
- prototype:
39
+ - prototype-bundle:
40
40
  - prototype
41
41
  - scriptaculous
42
42
 
43
- jquery:
43
+ - jquery-bundle:
44
44
  - jquery
45
45
  - jquery.ui/tabs
46
46
 
47
- components:
47
+ - components-bundle:
48
48
  - components/blah
49
49
  - components/blah2
50
50
 
51
51
  This will include all the javasciprt files listed when running the helper "javascripts", and on prod, it will bundle them up by key (prototype-bundle.js, jquery-bundle.js, components-bundle.js)
52
52
 
53
+ If you want to see something really awesome, try this:
54
+ - jquery-bundle:
55
+ - jquery
56
+ - jquery.ui/*
57
+ - jquery.plugins/*
58
+
59
+ On the first request this will grab *ALL* the files from these folders (using Dir[path]),
60
+ and bundle them on. On subsequent requests, it will use the bundle directly
61
+
53
62
  In your application layout, just include the calls to
54
63
  <%= stylesheets %>
55
64
  <%= javascripts %>
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ require 'merb-core'
5
5
  require 'merb-core/tasks/merb'
6
6
 
7
7
  GEM_NAME = "merb-plugins-app-config"
8
- GEM_VERSION = "0.4"
8
+ GEM_VERSION = "0.5"
9
9
  AUTHOR = "Jacques Crocker"
10
10
  EMAIL = "merbjedi@gmail.com"
11
11
  HOMEPAGE = "http://www.merbjedi.com/"
@@ -1,27 +1,87 @@
1
1
  module ApplicationConfig
2
2
  module ViewHelpers
3
+
4
+ # Collects all javascripts found in the app_configs and outputs them as script tags
3
5
  def javascripts
4
- js_hash = AppConfigJavascripts.marshal_dump
6
+ asset_list = []
5
7
  if AppConfig.javascripts
6
- js_hash.merge!(AppConfig.javascripts.marshal_dump)
8
+ asset_list << AppConfig.javascripts.to_a
7
9
  end
8
- js_hash.reject{|key, val| key.to_s == "load_paths"}.each do |key, val|
9
- require_js val, :bundle => key.to_sym
10
+ asset_list << AppConfigJavascripts.javascripts.to_a
11
+
12
+ html = []
13
+ asset_list.flatten.compact.each do |bundle_list|
14
+ if bundle_list.is_a? String
15
+ html << js_include_tag(bundle_list)
16
+ else
17
+ bundle_list = bundle_list.marshal_dump if bundle_list.is_a? OpenStruct
18
+ bundle_list.each do |key, path_list|
19
+ path_list = [path_list].flatten
20
+
21
+ scripts = []
22
+ path_list.each do |path|
23
+ if path.to_s.include?("*")
24
+ if Merb::Assets::JavascriptAssetBundler.cached_bundle?(key.to_sym)
25
+ scripts << key.to_s
26
+ else
27
+ Dir["#{Merb.root}/public/javascripts/#{path}"].each do |item|
28
+ scripts << item.gsub("#{Merb.root}/public/javascripts/", "")
29
+ end
30
+ end
31
+ else
32
+ scripts << path
33
+ end
34
+ end
35
+ scripts << {:bundle => key.to_sym}
36
+ html << js_include_tag(*scripts)
37
+ end
38
+ end
10
39
  end
11
- include_required_js
40
+
41
+ html << include_required_js
42
+ html.join("\n")
12
43
  end
13
-
44
+
45
+ # Collects all stylesheets found in the app_configs and outputs them as link tags
14
46
  def stylesheets
15
- css_hash = AppConfigStylesheets.marshal_dump
47
+ asset_list = []
16
48
  if AppConfig.stylesheets
17
- css_hash.merge!(AppConfig.stylesheets.marshal_dump)
49
+ asset_list << AppConfig.stylesheets.to_a
18
50
  end
19
-
20
- css_hash.reject{|key, val| key.to_s == "load_paths"}.each do |key, val|
21
- require_css val, :bundle => key.to_sym
51
+ asset_list << AppConfigStylesheets.stylesheets.to_a
52
+
53
+ html = []
54
+ asset_list.flatten.compact.each do |bundle_list|
55
+ if bundle_list.is_a? String
56
+ html << css_include_tag(bundle_list)
57
+ else
58
+ bundle_list = bundle_list.marshal_dump if bundle_list.is_a? OpenStruct
59
+ bundle_list.each do |key, path_list|
60
+ path_list = [path_list].flatten
61
+
62
+ scripts = []
63
+ path_list.each do |path|
64
+ if path.to_s.include?("*")
65
+ if Merb::Assets::StylesheetAssetBundler.cached_bundle?(key.to_sym)
66
+ scripts << key.to_s
67
+ else
68
+ Dir["#{Merb.root}/public/stylesheets/#{path}"].each do |item|
69
+ scripts << item.gsub("#{Merb.root}/public/stylesheets/", "")
70
+ end
71
+ end
72
+ else
73
+ scripts << path
74
+ end
75
+ end
76
+ scripts << {:bundle => key.to_sym}
77
+ html << css_include_tag(*scripts)
78
+ end
79
+ end
22
80
  end
23
81
 
24
- include_required_css
82
+ html << include_required_css
83
+ html.join("\n")
25
84
  end
85
+
26
86
  end
27
87
  end
@@ -22,14 +22,18 @@ if defined?(Merb::Plugins)
22
22
  AppConfigStylesheets.reload!
23
23
  else
24
24
  ::AppConfigStylesheets = ApplicationConfig::ConfigBuilder.load_files("#{Merb.root}/config/stylesheets.yml",
25
- "#{Merb.root}/config/app_config/stylesheets.yml")
25
+ "#{Merb.root}/config/app_config/stylesheets.yml",
26
+ "#{Merb.root}/config/assets.yml",
27
+ "#{Merb.root}/config/app_config/assets.yml")
26
28
  end
27
29
 
28
30
  if defined?(::AppConfigJavascripts)
29
31
  AppConfigJavascripts.reload!
30
32
  else
31
33
  ::AppConfigJavascripts = ApplicationConfig::ConfigBuilder.load_files("#{Merb.root}/config/javascripts.yml",
32
- "#{Merb.root}/config/app_config/javascripts.yml")
34
+ "#{Merb.root}/config/app_config/javascripts.yml",
35
+ "#{Merb.root}/config/assets.yml",
36
+ "#{Merb.root}/config/app_config/assets.yml")
33
37
  end
34
38
 
35
39
  Merb::Controller.send(:include, ApplicationConfig::ViewHelpers)
@@ -38,7 +42,8 @@ if defined?(Merb::Plugins)
38
42
 
39
43
  Merb::BootLoader.after_app_loads do
40
44
  if Merb::Plugins.config[:app_config][:auto_reload]
41
- Merb.logger.info "Auto reloading AppConfig on *every request*. Set via Merb::Plugins.config[:app_config][:auto_reload]"
45
+ Merb.logger.info "[AppConfig] Auto reloading AppConfig on *every request*."
46
+ Merb.logger.info "[AppConfig] Set via Merb::Plugins.config[:app_config][:auto_reload]"
42
47
  Merb::Controller.before do
43
48
  AppConfig.reload!
44
49
  if Merb::Plugins.config[:app_config][:include_viewhelpers]
@@ -0,0 +1,18 @@
1
+ javascripts:
2
+ - prototype:
3
+ - prototype
4
+ - scriptaculous/scriptaculous
5
+
6
+ - jquery:
7
+ - jquery
8
+ - jquery.ext/*
9
+
10
+ - libraries:
11
+ - libraries/*
12
+
13
+ - components:
14
+ - components/*
15
+
16
+ - application:
17
+ - application
18
+ - behaviors
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: merb-plugins-app-config
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.4"
4
+ version: "0.5"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jacques Crocker
@@ -57,6 +57,7 @@ files:
57
57
  - spec/test_configs/development.yml
58
58
  - spec/test_configs/empty1.yml
59
59
  - spec/test_configs/empty2.yml
60
+ - spec/test_configs/ordered_hash_array.yml
60
61
  has_rdoc: true
61
62
  homepage: http://www.merbjedi.com/
62
63
  post_install_message: