asset_sync 0.4.1 → 0.4.2

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
@@ -191,6 +191,8 @@ defaults: &defaults
191
191
  # eg: Static files in public often reference non-fingerprinted application.css
192
192
  # note: You will still need to expire them from the CDN's edge cache locations
193
193
  # always_upload: ['application.js', 'application.css']
194
+ # Ignored files. Useful if there are some files that are created dynamically on the server and you don't want to upload on deploy.
195
+ # ignored_files: ['ignore_me.js', %r(ignore_some/\d{32}\.css)]
194
196
 
195
197
  development:
196
198
  <<: *defaults
data/asset_sync.gemspec CHANGED
@@ -6,7 +6,7 @@ require "asset_sync/version"
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "asset_sync"
8
8
  s.version = AssetSync::VERSION
9
- s.date = "2012-05-04"
9
+ s.date = "2012-06-02"
10
10
  s.platform = Gem::Platform::RUBY
11
11
  s.authors = ["Simon Hamilton", "David Rice", "Phil McClure"]
12
12
  s.email = ["shamilton@rumblelabs.com", "me@davidjrice.co.uk", "pmcclure@rumblelabs.com"]
@@ -32,17 +32,21 @@ module AssetSync
32
32
  end
33
33
 
34
34
  def warn(msg)
35
- STDERR.puts msg
35
+ stderr.puts msg
36
36
  end
37
37
 
38
38
  def log(msg)
39
- STDOUT.puts msg if ENV["RAILS_GROUPS"] == "assets"
39
+ stdout.puts msg if ENV["RAILS_GROUPS"] == "assets"
40
40
  end
41
41
 
42
42
  def enabled?
43
43
  config.enabled?
44
44
  end
45
45
 
46
+ # easier to stub
47
+ def stderr ; STDERR ; end
48
+ def stdout ; STDOUT ; end
49
+
46
50
  end
47
51
 
48
52
  end
@@ -10,6 +10,7 @@ module AssetSync
10
10
  attr_accessor :manifest
11
11
  attr_accessor :fail_silently
12
12
  attr_accessor :always_upload
13
+ attr_accessor :ignored_files
13
14
  attr_accessor :enabled
14
15
 
15
16
  # FOG configuration
@@ -45,6 +46,7 @@ module AssetSync
45
46
  self.manifest = false
46
47
  self.fail_silently = false
47
48
  self.always_upload = []
49
+ self.ignored_files = []
48
50
  self.enabled = true
49
51
  load_yml! if yml_exists?
50
52
  end
@@ -117,6 +119,7 @@ module AssetSync
117
119
  self.manifest = yml["manifest"] if yml.has_key?("manifest")
118
120
  self.fail_silently = yml["fail_silently"] if yml.has_key?("fail_silently")
119
121
  self.always_upload = yml["always_upload"] if yml.has_key?("always_upload")
122
+ self.ignored_files = yml["ignored_files"] if yml.has_key?("ignored_files")
120
123
 
121
124
  # TODO deprecate the other old style config settings. FML.
122
125
  self.aws_access_key_id = yml["aws_access_key"] if yml.has_key?("aws_access_key")
@@ -30,6 +30,25 @@ module AssetSync
30
30
  Rails.public_path
31
31
  end
32
32
 
33
+ def ignored_files
34
+ files = []
35
+ Array(self.config.ignored_files).each do |ignore|
36
+ case ignore
37
+ when Regexp
38
+ files += self.local_files.select do |file|
39
+ file =~ ignore
40
+ end
41
+ when String
42
+ files += self.local_files.select do |file|
43
+ file.split('/').last == ignore
44
+ end
45
+ else
46
+ log "Error: please define ignored_files as string or regular expression. #{ignore} (#{ignore.class}) ignored."
47
+ end
48
+ end
49
+ files.uniq
50
+ end
51
+
33
52
  def local_files
34
53
  @local_files ||= get_local_files
35
54
  end
@@ -74,7 +93,7 @@ module AssetSync
74
93
  log "Fetching files to flag for delete"
75
94
  remote_files = get_remote_files
76
95
  # fixes: https://github.com/rumblelabs/asset_sync/issues/19
77
- from_remote_files_to_delete = remote_files - local_files
96
+ from_remote_files_to_delete = remote_files - local_files - ignored_files
78
97
 
79
98
  log "Flagging #{from_remote_files_to_delete.size} file(s) for deletion"
80
99
  # Delete unneeded remote files
@@ -138,7 +157,7 @@ module AssetSync
138
157
  # get a fresh list of remote files
139
158
  remote_files = ignore_existing_remote_files? ? [] : get_remote_files
140
159
  # fixes: https://github.com/rumblelabs/asset_sync/issues/19
141
- local_files_to_upload = local_files - remote_files + always_upload_files
160
+ local_files_to_upload = local_files - ignored_files - remote_files + always_upload_files
142
161
 
143
162
  # Upload new files
144
163
  local_files_to_upload.each do |f|
@@ -1,3 +1,3 @@
1
1
  module AssetSync
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
@@ -140,6 +140,7 @@ describe AssetSync do
140
140
 
141
141
  describe 'with fail_silent configuration' do
142
142
  before(:each) do
143
+ AssetSync.stub(:stderr).and_return(@stderr = StringIO.new)
143
144
  AssetSync.config = AssetSync::Config.new
144
145
  AssetSync.configure do |config|
145
146
  config.fail_silently = true
@@ -149,6 +150,11 @@ describe AssetSync do
149
150
  it "should not raise an invalid exception" do
150
151
  lambda{ AssetSync.sync }.should_not raise_error(AssetSync::Config::Invalid)
151
152
  end
153
+
154
+ it "should output a warning to stderr" do
155
+ AssetSync.sync
156
+ @stderr.string.should =~ /can't be blank/
157
+ end
152
158
  end
153
159
 
154
160
  describe 'with gzip_compression enabled' do
data/spec/google_spec.rb CHANGED
@@ -92,6 +92,7 @@ describe AssetSync do
92
92
 
93
93
  describe 'with fail_silent configuration' do
94
94
  before(:each) do
95
+ AssetSync.stub(:stderr).and_return(StringIO.new)
95
96
  AssetSync.config = AssetSync::Config.new
96
97
  AssetSync.configure do |config|
97
98
  config.fail_silently = true
data/spec/storage_spec.rb CHANGED
@@ -36,5 +36,19 @@ describe AssetSync::Storage do
36
36
  end
37
37
  storage.upload_files
38
38
  end
39
+
40
+ it 'should allow to ignore files' do
41
+ @config.ignored_files = ['local_image1.jpg', /local_stylesheet\d\.css/]
42
+
43
+ storage = AssetSync::Storage.new(@config)
44
+ storage.stub(:local_files).and_return(@local_files)
45
+ storage.stub(:get_remote_files).and_return(@remote_files)
46
+ File.stub(:file?).and_return(true) # Pretend they all exist
47
+
48
+ (@local_files - @remote_files - storage.ignored_files + storage.always_upload_files).each do |file|
49
+ storage.should_receive(:upload_file).with(file)
50
+ end
51
+ storage.upload_files
52
+ end
39
53
  end
40
54
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asset_sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-05-04 00:00:00.000000000 Z
14
+ date: 2012-06-02 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: fog
18
- requirement: &70254273780720 !ruby/object:Gem::Requirement
18
+ requirement: &70223412035340 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: '0'
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *70254273780720
26
+ version_requirements: *70223412035340
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activemodel
29
- requirement: &70254273780280 !ruby/object:Gem::Requirement
29
+ requirement: &70223412034660 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: '0'
35
35
  type: :runtime
36
36
  prerelease: false
37
- version_requirements: *70254273780280
37
+ version_requirements: *70223412034660
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: rspec
40
- requirement: &70254273779760 !ruby/object:Gem::Requirement
40
+ requirement: &70223412033020 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: '0'
46
46
  type: :development
47
47
  prerelease: false
48
- version_requirements: *70254273779760
48
+ version_requirements: *70223412033020
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: bundler
51
- requirement: &70254273779320 !ruby/object:Gem::Requirement
51
+ requirement: &70223412032060 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ! '>='
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: '0'
57
57
  type: :development
58
58
  prerelease: false
59
- version_requirements: *70254273779320
59
+ version_requirements: *70223412032060
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: jeweler
62
- requirement: &70254273778800 !ruby/object:Gem::Requirement
62
+ requirement: &70223412031120 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ! '>='
@@ -67,7 +67,7 @@ dependencies:
67
67
  version: '0'
68
68
  type: :development
69
69
  prerelease: false
70
- version_requirements: *70254273778800
70
+ version_requirements: *70223412031120
71
71
  description: After you run assets:precompile your compiled assets will be synchronised
72
72
  with your S3 bucket.
73
73
  email: