smart_asset 0.3.2 → 0.3.4

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.md CHANGED
@@ -3,9 +3,132 @@ SmartAsset
3
3
 
4
4
  Smart asset packaging for Rails and Sinatra.
5
5
 
6
- Requirements
6
+ Features
7
+ --------
8
+
9
+ Similar to <code>AssetPackager</code>, but with the following changes:
10
+
11
+ * Git modified date/time for package version
12
+ * Google Closure Compiler for javascript compression
13
+ * Framework agnostic (adapters provided for Rails 2, Rails 3, and Sinatra)
14
+
15
+ <a name="installation"></a>
16
+
17
+ Installation
7
18
  ------------
8
19
 
20
+ ### Install Gem
21
+
9
22
  <pre>
10
23
  gem install smart_asset
24
+ </pre>
25
+
26
+ ### Rails 2
27
+
28
+ #### config/environment.rb
29
+
30
+ <pre>
31
+ config.gem 'smart_asset'
32
+ </pre>
33
+
34
+ ### Rails 3
35
+
36
+ #### Gemfile
37
+
38
+ <pre>
39
+ gem 'smart_asset'
40
+ </pre>
41
+
42
+ ### Sinatra
43
+
44
+ <pre>
45
+ require 'sinatra/base'
46
+ require 'smart_asset'
47
+
48
+ class Application &lt; Sinatra::Base
49
+ include SmartAsset::Adapters::Sinatra
50
+ end
51
+ </pre>
52
+
53
+ Create Configuration File
54
+ -------------------------
55
+
56
+ ### config/assets.yml
57
+
58
+ <pre>
59
+ javascripts:
60
+ package_1:
61
+ - jquery/jquery
62
+ - underscore
63
+ package_2:
64
+ - front_page
65
+ stylesheets:
66
+ package_1:
67
+ - blueprint/blueprint
68
+ - 960
69
+ package_2:
70
+ - front_page
71
+ </pre>
72
+
73
+ By default, SmartAsset will look for assets in <code>public/javascripts</code> and <code>public/stylesheets</code>.
74
+
75
+ Create Packaged Assets
76
+ ----------------------
77
+
78
+ <code>cd</code> to your project and run
79
+
80
+ <pre>
81
+ smart_asset
82
+ </pre>
83
+
84
+ If your project is Git version controlled, only the assets that have changed are repackaged.
85
+
86
+ Otherwise, all packages generate every time.
87
+
88
+ Include Packages in Your Template
89
+ ---------------------------------
90
+
91
+ <pre>
92
+ &lt;%= javascript_include_merged :package_1, :package_2 %&gt;
93
+ &lt;%= stylesheet_link_merged :package_1, :package_2 %&gt;
94
+ </pre>
95
+
96
+ Migrating from AssetPackager
97
+ ----------------------------
98
+
99
+ * <code>rm vendor/plugins/asset\_packager</code>
100
+ * <a href="#installation">Install SmartAsset</a>
101
+ * Move <code>config/asset\_packages.yml</code> to <code>config/assets.yml</code>
102
+ * Instead of running <code>rake asset:packager:build_all</code>, run <code>smart\_asset</code>
103
+
104
+ Other Options
105
+ -------------
106
+
107
+ You may add extra options to your <code>config/assets.yml</code> file.
108
+
109
+ All the values below are the default values, excluding <code>append\_random</code> and <code>asset\_host</code>:
110
+
111
+ <pre>
112
+ # Append random numbers to script paths (defaults to true in development mode)
113
+ append_random: false
114
+
115
+ # Asset host URL (defaults to ActionController::Base.asset_host or nil)
116
+ asset_host:
117
+ production: http://assets%d.mydomain.com
118
+
119
+ # How many asset hosts you have (if asset_host defined with %d)
120
+ asset_host_count: 4
121
+
122
+ # Public directory
123
+ public: public
124
+
125
+ # Package destination directory (within the public directory)
126
+ destination:
127
+ javascripts: javascripts/packaged
128
+ stylesheets: stylesheets/packaged
129
+
130
+ # Asset source directories (within the public directory)
131
+ sources:
132
+ javascripts: javascripts
133
+ stylesheets: stylesheets
11
134
  </pre>
@@ -1,5 +1,16 @@
1
- SmartAsset.env = Rails.env
2
- SmartAsset.load_config(Rails.root)
1
+ if Rails.root.nil?
2
+ class SmartAsset
3
+ class SmartAssetRailtie < Rails::Railtie
4
+ initializer "smart_asset_railtie.configure_rails_initialization" do
5
+ SmartAsset.env = Rails.env
6
+ SmartAsset.load_config(Rails.root)
7
+ end
8
+ end
9
+ end
10
+ else
11
+ SmartAsset.env = Rails.env
12
+ SmartAsset.load_config(Rails.root)
13
+ end
3
14
 
4
15
  ActionController::Base.send(:include, SmartAsset::Helper)
5
16
  ActionController::Base.helper(SmartAsset::Helper)
@@ -2,17 +2,19 @@ class SmartAsset
2
2
  module Helper
3
3
 
4
4
  def javascript_include_merged(*javascripts)
5
+ append = SmartAsset.append_random ? "?#{rand.to_s[2..-1]}" : ''
5
6
  output = javascript_paths(*javascripts).collect { |js|
6
- "<script src=\"#{SmartAsset.prepend_asset_host js}\" type=\"text/javascript\"></script>"
7
+ "<script src=\"#{SmartAsset.prepend_asset_host js}#{append}\"></script>"
7
8
  }.join("\n")
8
9
  defined?(Rails) && Rails.version[0..0] == '3' ? output.html_safe : output
9
10
  end
10
11
 
11
12
  def stylesheet_link_merged(*stylesheets)
13
+ append = SmartAsset.append_random ? "?#{rand.to_s[2..-1]}" : ''
12
14
  options = stylesheets.last.is_a?(::Hash) ? stylesheets.pop : {}
13
15
  options[:media] ||= 'screen'
14
16
  output = stylesheet_paths(*stylesheets).collect { |css|
15
- "<link href=\"#{SmartAsset.prepend_asset_host css}\" media=\"#{options[:media]}\" rel=\"Stylesheet\" type=\"text/css\" />"
17
+ "<link href=\"#{SmartAsset.prepend_asset_host css}#{append}\" media=\"#{options[:media]}\" rel=\"stylesheet\" />"
16
18
  }.join("\n")
17
19
  defined?(Rails) && Rails.version[0..0] == '3' ? output.html_safe : output
18
20
  end
@@ -1,3 +1,3 @@
1
1
  class SmartAsset
2
- VERSION = "0.3.2" unless defined?(::SmartAsset::VERSION)
2
+ VERSION = "0.3.4" unless defined?(::SmartAsset::VERSION)
3
3
  end
data/lib/smart_asset.rb CHANGED
@@ -14,7 +14,7 @@ require 'smart_asset/version'
14
14
  class SmartAsset
15
15
  class <<self
16
16
 
17
- attr_accessor :asset_host, :asset_counter, :cache, :config, :dest, :env, :envs, :pub, :root, :sources
17
+ attr_accessor :append_random, :asset_host, :asset_counter, :cache, :config, :dest, :env, :envs, :pub, :root, :sources
18
18
 
19
19
  BIN = File.expand_path(File.dirname(__FILE__) + '/../bin')
20
20
  CLOSURE_COMPILER = BIN + '/closure_compiler.jar'
@@ -39,7 +39,7 @@ class SmartAsset
39
39
  files.each do |file|
40
40
  if File.exists?("#{dir}/#{file}.#{ext}")
41
41
  mod = `cd #{@root} && git log --pretty=format:%cd -n 1 --date=iso #{@config['public']}/#{@sources[type]}/#{file}.#{ext}`
42
- if mod.strip.empty?
42
+ if mod.strip.empty? || mod.include?('command not found')
43
43
  modified << Time.now.utc.strftime("%Y%m%d%H%M%S")
44
44
  else
45
45
  modified << Time.parse(mod).utc.strftime("%Y%m%d%H%M%S")
@@ -90,6 +90,9 @@ class SmartAsset
90
90
  @root = File.expand_path(root)
91
91
  @config = YAML::load(File.read("#{@root}/#{relative_config}"))
92
92
 
93
+ if @config['append_random'].nil?
94
+ @config['append_random'] = @env == 'development'
95
+ end
93
96
  @config['asset_host_count'] ||= 4
94
97
  @config['asset_host'] ||= ActionController::Base.asset_host rescue nil
95
98
  @config['environments'] ||= %w(production)
@@ -110,6 +113,7 @@ class SmartAsset
110
113
  end
111
114
  end
112
115
 
116
+ @append_random = @config['append_random']
113
117
  @asset_host = @config['asset_host']
114
118
  @envs = @config['environments']
115
119
  @sources = @config['sources']
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
- - 2
9
- version: 0.3.2
8
+ - 4
9
+ version: 0.3.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - Winton Welsh
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-12-08 00:00:00 -08:00
17
+ date: 2010-12-09 00:00:00 -08:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency