asset_sync 1.0.0 → 1.1.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 629deff4029487b164c47ee0a479cf5111461a15
4
+ data.tar.gz: 06e62f086d0a574def1741993066f42cf11b96da
5
+ SHA512:
6
+ metadata.gz: d37ddb643b78c91cdb24f1c8cf0fe3fb25162ace2c934eb6488ef8baf9eba8d080d892cdf85846eb0892677d58b2aea7b7a7baf3b35717de2082710d06ee8f75
7
+ data.tar.gz: fcb7bfb3c0a9b67fb341fb4eb8c4ca18e16e106e8eea852c150186685f59d75e97765246c90c2779feb4b4a1ebd707df9edc457a0db3fcf973e9994d0efce2e5
@@ -3,7 +3,7 @@ rvm:
3
3
  - 1.9.2
4
4
  - 1.9.3
5
5
  - jruby-19mode
6
- - rbx-19mode
6
+ - rbx-2
7
7
  - ruby-head
8
8
  - jruby-head
9
9
  gemfile:
@@ -23,12 +23,19 @@ matrix:
23
23
  gemfile: gemfiles/rails_4.0.gemfile
24
24
  - rvm: jruby-19mode
25
25
  gemfile: gemfiles/rails_4.0.gemfile
26
- - rvm: rbx-19mode
26
+ - rvm: rbx-2
27
27
  gemfile: gemfiles/rails_4.0.gemfile
28
28
  - rvm: 2.0.0
29
29
  gemfile: gemfiles/rails_3.2.gemfile
30
30
  - rvm: 2.0.0
31
31
  gemfile: gemfiles/rails_4.0.gemfile
32
+ - rvm: 2.1.2
33
+ gemfile: gemfiles/rails_4.1.gemfile
34
+ - rvm: 2.0.0
35
+ gemfile: gemfiles/rails_4.1.gemfile
36
+ - rvm: 2.1.2
37
+ gemfile: gemfiles/rails_4.1.gemfile
32
38
  allow_failures:
39
+ - rvm: rbx-2
33
40
  - rvm: ruby-head
34
41
  - rvm: jruby-head
data/Appraisals CHANGED
@@ -9,3 +9,7 @@ end
9
9
  appraise "rails-4.0" do
10
10
  gem "rails", "~> 4.0.0"
11
11
  end
12
+
13
+ appraise "rails-4.1" do
14
+ gem "rails", "~> 4.1.0"
15
+ end
@@ -1,5 +1,36 @@
1
1
  # RELEASE HISTORY
2
2
 
3
+ ## v1.1.0 / 2014-08-13
4
+
5
+ Version 1.1.0 (Toby Osbourn <tosbourn@rumblelabs.com>)
6
+
7
+ Changes:
8
+
9
+ * 1 Change
10
+
11
+ * Bumping master to 1.1.0 - preparing to update RubyGems
12
+
13
+ ## v0.5.6 / 2014-08-12
14
+
15
+ Version 0.5.6 (Toby Osbourn <tosbourn@rumblelabs.com>)
16
+
17
+ Changes:
18
+
19
+ * 1 Change
20
+
21
+ * Merged in support for optimized fog loading
22
+
23
+ ## v0.5.5 / 2014-08-12
24
+
25
+ Version 0.5.5 (Toby Osbourn <tosbourn@rumblelabs.com>)
26
+
27
+ Changes:
28
+
29
+ * 2 Nominal Changes
30
+
31
+ * Merged some spec changes to get Travis to pass the build correctly
32
+ * Support using AWS IAM Roles
33
+
3
34
  ## v0.5.1 / 2012-10-22
4
35
 
5
36
  Version 0.5.1 (David Rice <me@davidjrice.co.uk>)
data/README.md CHANGED
@@ -50,6 +50,19 @@ if defined?(AssetSync)
50
50
  ...
51
51
  end
52
52
  ```
53
+
54
+ ### Optimized Fog loading
55
+
56
+ Since AssetSync doesn't know which parts of Fog you intend to use, it will just load the entire library.
57
+ If you prefer to load fewer classes into your application, which will reduce load time and memory use,
58
+ you need to load those parts of Fog yourself *before* loading AssetSync:
59
+
60
+ In your Gemfile:
61
+ ```ruby
62
+ gem "fog", "~>1.20", require "fog/aws/storage"
63
+ gem "asset_sync"
64
+ ```
65
+
53
66
  ### Extended Installation (Faster sync with turbosprockets)
54
67
 
55
68
  It's possible to improve **asset:precompile** time if you are using Rails 3.2.x
@@ -95,7 +108,7 @@ Or
95
108
  ``` ruby
96
109
  config.action_controller.asset_host = "//storage.googleapis.com/#{ENV['FOG_DIRECTORY']}"
97
110
  ```
98
- On **non default S3 bucket region**: If your bucket is set to a region that is not the default US Standard (us-east-1) you must use the first style of url ``//#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com`` or amazon will return a 301 permanently moved when assets are requested. Note the caveat above about bucket names and periods.
111
+ On **non default S3 bucket region**: If your bucket is set to a region that is not the default US Standard (us-east-1) you must use the first style of url ``//#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com`` or amazon will return a 301 permanently moved when assets are requested. Note the caveat above about bucket names and periods.
99
112
 
100
113
  If you wish to have your assets sync to a sub-folder of your bucket instead of into the root add the following to your ``production.rb`` file
101
114
 
@@ -8,8 +8,8 @@ Gem::Specification.new do |s|
8
8
  s.version = AssetSync::VERSION
9
9
  s.date = "2013-08-26"
10
10
  s.platform = Gem::Platform::RUBY
11
- s.authors = ["Simon Hamilton", "David Rice", "Phil McClure"]
12
- s.email = ["shamilton@rumblelabs.com", "me@davidjrice.co.uk", "pmcclure@rumblelabs.com"]
11
+ s.authors = ["Simon Hamilton", "David Rice", "Phil McClure", "Toby Osbourn"]
12
+ s.email = ["shamilton@rumblelabs.com", "me@davidjrice.co.uk", "pmcclure@rumblelabs.com", "tosbourn@rumblelabs.com"]
13
13
  s.homepage = "https://github.com/rumblelabs/asset_sync"
14
14
  s.summary = %q{Synchronises Assets in a Rails 3 application and Amazon S3/Cloudfront and Rackspace Cloudfiles}
15
15
  s.description = %q{After you run assets:precompile your compiled assets will be synchronised with your S3 bucket.}
@@ -17,6 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.rubyforge_project = "asset_sync"
18
18
 
19
19
  s.add_dependency('fog', ">= 1.8.0")
20
+ s.add_dependency('unf')
20
21
  s.add_dependency('activemodel')
21
22
 
22
23
  s.add_development_dependency "rspec"
@@ -24,7 +25,6 @@ Gem::Specification.new do |s|
24
25
  s.add_development_dependency "jeweler"
25
26
 
26
27
  s.add_development_dependency "uglifier"
27
- s.add_development_dependency "asset_sync"
28
28
  s.add_development_dependency "appraisal"
29
29
 
30
30
  s.files = `git ls-files`.split("\n")
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rcov", :platforms => :mri_18, :group => [:development, :test]
6
+ gem "simplecov", :platforms => [:jruby, :mri_19, :ruby_19, :mri_20, :rbx], :group => [:development, :test], :require => false
7
+ gem "jruby-openssl", :platform => :jruby
8
+ gem "rails", "~> 4.1.0"
9
+
10
+ gemspec :path => "../"
@@ -1,4 +1,4 @@
1
- require 'fog'
1
+ require 'fog' unless defined?(::Fog)
2
2
  require 'active_model'
3
3
  require 'erb'
4
4
  require "asset_sync/asset_sync"
@@ -26,7 +26,7 @@ module AssetSync
26
26
  attr_accessor :fog_region # e.g. 'eu-west-1'
27
27
 
28
28
  # Amazon AWS
29
- attr_accessor :aws_access_key_id, :aws_secret_access_key, :aws_reduced_redundancy
29
+ attr_accessor :aws_access_key_id, :aws_secret_access_key, :aws_reduced_redundancy, :aws_iam_roles
30
30
 
31
31
  # Rackspace
32
32
  attr_accessor :rackspace_username, :rackspace_api_key, :rackspace_auth_url
@@ -39,8 +39,8 @@ module AssetSync
39
39
  validates :fog_provider, :presence => true
40
40
  validates :fog_directory, :presence => true
41
41
 
42
- validates :aws_access_key_id, :presence => true, :if => :aws?
43
- validates :aws_secret_access_key, :presence => true, :if => :aws?
42
+ validates :aws_access_key_id, :presence => true, :if => proc {aws? && !aws_iam?}
43
+ validates :aws_secret_access_key, :presence => true, :if => proc {aws? && !aws_iam?}
44
44
  validates :rackspace_username, :presence => true, :if => :rackspace?
45
45
  validates :rackspace_api_key, :presence => true, :if => :rackspace?
46
46
  validates :google_storage_secret_access_key, :presence => true, :if => :google?
@@ -85,6 +85,10 @@ module AssetSync
85
85
  aws_reduced_redundancy == true
86
86
  end
87
87
 
88
+ def aws_iam?
89
+ aws_iam_roles == true
90
+ end
91
+
88
92
  def fail_silently?
89
93
  fail_silently || !enabled?
90
94
  end
@@ -138,6 +142,7 @@ module AssetSync
138
142
  self.aws_access_key_id = yml["aws_access_key_id"]
139
143
  self.aws_secret_access_key = yml["aws_secret_access_key"]
140
144
  self.aws_reduced_redundancy = yml["aws_reduced_redundancy"]
145
+ self.aws_iam_roles = yml["aws_iam_roles"]
141
146
  self.rackspace_username = yml["rackspace_username"]
142
147
  self.rackspace_auth_url = yml["rackspace_auth_url"] if yml.has_key?("rackspace_auth_url")
143
148
  self.rackspace_api_key = yml["rackspace_api_key"]
@@ -173,10 +178,16 @@ module AssetSync
173
178
  def fog_options
174
179
  options = { :provider => fog_provider }
175
180
  if aws?
176
- options.merge!({
177
- :aws_access_key_id => aws_access_key_id,
178
- :aws_secret_access_key => aws_secret_access_key
179
- })
181
+ if aws_iam?
182
+ options.merge!({
183
+ :use_iam_profile => true
184
+ })
185
+ else
186
+ options.merge!({
187
+ :aws_access_key_id => aws_access_key_id,
188
+ :aws_secret_access_key => aws_secret_access_key
189
+ })
190
+ end
180
191
  elsif rackspace?
181
192
  options.merge!({
182
193
  :rackspace_username => rackspace_username,
@@ -1,3 +1,5 @@
1
+ require 'mime/types'
2
+
1
3
  module AssetSync
2
4
  class MultiMime
3
5
 
@@ -9,10 +11,10 @@ module AssetSync
9
11
  ext_with_dot = ".#{ext}"
10
12
  Rack::Mime.mime_type(ext_with_dot)
11
13
  else
12
- MIME::Types.type_for(ext).first
14
+ ::MIME::Types.type_for(ext).first
13
15
  end
14
16
 
15
17
  end
16
18
 
17
19
  end
18
- end
20
+ end
@@ -1,3 +1,3 @@
1
1
  module AssetSync
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -43,7 +43,6 @@ describe "AssetSync" do
43
43
 
44
44
  it "sync" do
45
45
  execute "rake ASSET_SYNC_PREFIX=#{@prefix} assets:precompile"
46
- # bucket(@prefix).files.size.should == 5
47
46
 
48
47
  files = bucket(@prefix).files
49
48
 
@@ -51,16 +50,16 @@ describe "AssetSync" do
51
50
  app_js_gz_path = files.select{ |f| f.key =~ app_js_gz_regex }.first
52
51
 
53
52
  app_js = files.get( app_js_path.key )
54
- app_js.content_type.should == "text/javascript"
53
+ expect(app_js.content_type).to eq("text/javascript")
55
54
 
56
55
  app_js_gz = files.get( app_js_gz_path.key )
57
- app_js_gz.content_type.should == "text/javascript"
58
- app_js_gz.content_encoding.should == "gzip"
56
+ expect(app_js_gz.content_type).to eq("text/javascript")
57
+ expect(app_js_gz.content_encoding).to eq("gzip")
59
58
  end
60
59
 
61
60
  it "sync with enabled=false" do
62
61
  execute "rake ASSET_SYNC_PREFIX=#{@prefix} ASSET_SYNC_ENABLED=false assets:precompile"
63
- bucket(@prefix).files.size.should == 0
62
+ expect(bucket(@prefix).files.size).to eq(0)
64
63
  end
65
64
 
66
65
  it "sync with gzip_compression=true" do
@@ -69,7 +68,7 @@ describe "AssetSync" do
69
68
 
70
69
  app_js_path = files.select{ |f| f.key =~ app_js_regex }.first
71
70
  app_js = files.get( app_js_path.key )
72
- app_js.content_type.should == "text/javascript"
71
+ expect(app_js.content_type).to eq("text/javascript")
73
72
  end
74
73
 
75
74
  end
@@ -32,22 +32,21 @@ shared_context "mock without Rails" do
32
32
  if defined? Rails
33
33
  Object.send(:remove_const, :Rails)
34
34
  end
35
- AssetSync.stub(:log)
35
+ allow(AssetSync).to receive(:log)
36
36
  end
37
37
  end
38
38
 
39
39
 
40
40
  shared_context "mock Rails" do
41
41
  before(:each) do
42
- unless defined? Rails
43
- Rails = double 'Rails'
44
- end
45
- Rails.stub(:env).and_return('test')
46
- Rails.stub :application => double('application')
47
- Rails.application.stub :config => double('config')
48
- Rails.application.config.stub :assets => ActiveSupport::OrderedOptions.new
42
+ Object.send(:remove_const, :Rails) if defined? Rails
43
+ Rails = double 'Rails'
44
+ allow(Rails).to receive(:env).and_return('test')
45
+ allow(Rails).to receive_messages :application => double('application')
46
+ allow(Rails.application).to receive_messages :config => double('config')
47
+ allow(Rails.application.config).to receive_messages :assets => ActiveSupport::OrderedOptions.new
49
48
  Rails.application.config.assets.prefix = '/assets'
50
- AssetSync.stub(:log)
49
+ allow(AssetSync).to receive(:log)
51
50
  end
52
51
  end
53
52
 
@@ -56,10 +55,10 @@ shared_context "mock Rails without_yml" do
56
55
 
57
56
  before(:each) do
58
57
  set_rails_root('without_yml')
59
- Rails.stub(:public_path).and_return(Rails.root.join('public').to_s)
58
+ allow(Rails).to receive(:public_path).and_return(Rails.root.join('public').to_s)
60
59
  end
61
60
  end
62
61
 
63
62
  def set_rails_root(path)
64
- Rails.stub(:root).and_return(Pathname.new(File.join(File.dirname(__FILE__), 'fixtures', path)))
63
+ allow(Rails).to receive(:root).and_return(Pathname.new(File.join(File.dirname(__FILE__), 'fixtures', path)))
65
64
  end
@@ -17,61 +17,61 @@ describe AssetSync do
17
17
  end
18
18
 
19
19
  it "should default to running on precompile" do
20
- AssetSync.config.run_on_precompile.should be_true
20
+ expect(AssetSync.config.run_on_precompile).to be_truthy
21
21
  end
22
22
 
23
23
  it "should default AssetSync to enabled" do
24
- AssetSync.config.enabled?.should be_true
25
- AssetSync.enabled?.should be_true
24
+ expect(AssetSync.config.enabled?).to be_truthy
25
+ expect(AssetSync.enabled?).to be_truthy
26
26
  end
27
27
 
28
28
  it "should configure provider as AWS" do
29
- AssetSync.config.fog_provider.should == 'AWS'
30
- AssetSync.config.should be_aws
29
+ expect(AssetSync.config.fog_provider).to eq('AWS')
30
+ expect(AssetSync.config).to be_aws
31
31
  end
32
32
 
33
33
  it "should should keep existing remote files" do
34
- AssetSync.config.existing_remote_files?.should == true
34
+ expect(AssetSync.config.existing_remote_files?).to eq(true)
35
35
  end
36
36
 
37
37
  it "should configure aws_access_key" do
38
- AssetSync.config.aws_access_key_id.should == "aaaa"
38
+ expect(AssetSync.config.aws_access_key_id).to eq("aaaa")
39
39
  end
40
40
 
41
41
  it "should configure aws_secret_access_key" do
42
- AssetSync.config.aws_secret_access_key.should == "bbbb"
42
+ expect(AssetSync.config.aws_secret_access_key).to eq("bbbb")
43
43
  end
44
44
 
45
45
  it "should configure aws_access_key" do
46
- AssetSync.config.fog_directory.should == "mybucket"
46
+ expect(AssetSync.config.fog_directory).to eq("mybucket")
47
47
  end
48
48
 
49
49
  it "should configure fog_region" do
50
- AssetSync.config.fog_region.should == "eu-west-1"
50
+ expect(AssetSync.config.fog_region).to eq("eu-west-1")
51
51
  end
52
52
 
53
53
  it "should configure existing_remote_files" do
54
- AssetSync.config.existing_remote_files.should == "keep"
54
+ expect(AssetSync.config.existing_remote_files).to eq("keep")
55
55
  end
56
56
 
57
57
  it "should default gzip_compression to false" do
58
- AssetSync.config.gzip_compression.should be_false
58
+ expect(AssetSync.config.gzip_compression).to be_falsey
59
59
  end
60
60
 
61
61
  it "should default manifest to false" do
62
- AssetSync.config.manifest.should be_false
62
+ expect(AssetSync.config.manifest).to be_falsey
63
63
  end
64
64
 
65
65
  it "should default log_silently to true" do
66
- AssetSync.config.log_silently.should be_true
66
+ expect(AssetSync.config.log_silently).to be_truthy
67
67
  end
68
68
 
69
69
  it "should default cdn_distribution_id to nil" do
70
- AssetSync.config.cdn_distribution_id.should be_nil
70
+ expect(AssetSync.config.cdn_distribution_id).to be_nil
71
71
  end
72
72
 
73
73
  it "should default invalidate to empty array" do
74
- AssetSync.config.invalidate.should == []
74
+ expect(AssetSync.config.invalidate).to eq([])
75
75
  end
76
76
  end
77
77
 
@@ -82,40 +82,40 @@ describe AssetSync do
82
82
  end
83
83
 
84
84
  it "should default AssetSync to enabled" do
85
- AssetSync.config.enabled?.should be_true
86
- AssetSync.enabled?.should be_true
85
+ expect(AssetSync.config.enabled?).to be_truthy
86
+ expect(AssetSync.enabled?).to be_truthy
87
87
  end
88
88
 
89
89
  it "should configure run_on_precompile" do
90
- AssetSync.config.run_on_precompile.should be_false
90
+ expect(AssetSync.config.run_on_precompile).to be_falsey
91
91
  end
92
92
 
93
93
  it "should configure aws_access_key_id" do
94
- AssetSync.config.aws_access_key_id.should == "xxxx"
94
+ expect(AssetSync.config.aws_access_key_id).to eq("xxxx")
95
95
  end
96
96
 
97
97
  it "should configure aws_secret_access_key" do
98
- AssetSync.config.aws_secret_access_key.should == "zzzz"
98
+ expect(AssetSync.config.aws_secret_access_key).to eq("zzzz")
99
99
  end
100
100
 
101
101
  it "should configure fog_directory" do
102
- AssetSync.config.fog_directory.should == "rails_app_test"
102
+ expect(AssetSync.config.fog_directory).to eq("rails_app_test")
103
103
  end
104
104
 
105
105
  it "should configure fog_region" do
106
- AssetSync.config.fog_region.should == "eu-west-1"
106
+ expect(AssetSync.config.fog_region).to eq("eu-west-1")
107
107
  end
108
108
 
109
109
  it "should configure existing_remote_files" do
110
- AssetSync.config.existing_remote_files.should == "keep"
110
+ expect(AssetSync.config.existing_remote_files).to eq("keep")
111
111
  end
112
112
 
113
113
  it "should default gzip_compression to false" do
114
- AssetSync.config.gzip_compression.should be_false
114
+ expect(AssetSync.config.gzip_compression).to be_falsey
115
115
  end
116
116
 
117
117
  it "should default manifest to false" do
118
- AssetSync.config.manifest.should be_false
118
+ expect(AssetSync.config.manifest).to be_falsey
119
119
  end
120
120
  end
121
121
 
@@ -160,7 +160,7 @@ describe AssetSync do
160
160
 
161
161
  describe 'with fail_silent configuration' do
162
162
  before(:each) do
163
- AssetSync.stub(:stderr).and_return(@stderr = StringIO.new)
163
+ allow(AssetSync).to receive(:stderr).and_return(@stderr = StringIO.new)
164
164
  AssetSync.config = AssetSync::Config.new
165
165
  AssetSync.configure do |config|
166
166
  config.fail_silently = true
@@ -173,13 +173,13 @@ describe AssetSync do
173
173
 
174
174
  it "should output a warning to stderr" do
175
175
  AssetSync.sync
176
- @stderr.string.should =~ /can't be blank/
176
+ expect(@stderr.string).to match(/can't be blank/)
177
177
  end
178
178
  end
179
179
 
180
180
  describe 'with disabled config' do
181
181
  before(:each) do
182
- AssetSync.stub(:stderr).and_return(@stderr = StringIO.new)
182
+ allow(AssetSync).to receive(:stderr).and_return(@stderr = StringIO.new)
183
183
  AssetSync.config = AssetSync::Config.new
184
184
  AssetSync.configure do |config|
185
185
  config.enabled = false
@@ -187,7 +187,7 @@ describe AssetSync do
187
187
  end
188
188
 
189
189
  it "should not raise an invalid exception" do
190
- lambda{ AssetSync.sync }.should_not raise_error()
190
+ expect{ AssetSync.sync }.not_to raise_error()
191
191
  end
192
192
  end
193
193
 
@@ -198,7 +198,7 @@ describe AssetSync do
198
198
  end
199
199
 
200
200
  it "config.gzip? should be true" do
201
- AssetSync.config.gzip?.should be_true
201
+ expect(AssetSync.config.gzip?).to be_truthy
202
202
  end
203
203
  end
204
204
 
@@ -209,21 +209,21 @@ describe AssetSync do
209
209
  end
210
210
 
211
211
  it "config.manifest should be true" do
212
- AssetSync.config.manifest.should be_true
212
+ expect(AssetSync.config.manifest).to be_truthy
213
213
  end
214
214
 
215
215
  it "config.manifest_path should default to public/assets.." do
216
- AssetSync.config.manifest_path.should =~ /public\/assets\/manifest.yml/
216
+ expect(AssetSync.config.manifest_path).to match(/public\/assets\/manifest.yml/)
217
217
  end
218
218
 
219
219
  it "config.manifest_path should default to public/assets.." do
220
220
  Rails.application.config.assets.manifest = "/var/assets"
221
- AssetSync.config.manifest_path.should == "/var/assets/manifest.yml"
221
+ expect(AssetSync.config.manifest_path).to eq("/var/assets/manifest.yml")
222
222
  end
223
223
 
224
224
  it "config.manifest_path should default to public/custom_assets.." do
225
225
  Rails.application.config.assets.prefix = 'custom_assets'
226
- AssetSync.config.manifest_path.should =~ /public\/custom_assets\/manifest.yml/
226
+ expect(AssetSync.config.manifest_path).to match(/public\/custom_assets\/manifest.yml/)
227
227
  end
228
228
  end
229
229
 
@@ -235,14 +235,11 @@ describe AssetSync do
235
235
  end
236
236
 
237
237
  it "config should be invalid" do
238
- AssetSync.config.valid?.should be_false
238
+ expect(AssetSync.config.valid?).to be_falsey
239
239
  end
240
240
 
241
241
  it "should raise a config invalid error" do
242
242
  expect{ AssetSync.sync }.to raise_error()
243
243
  end
244
-
245
-
246
244
  end
247
-
248
245
  end