syncassets_r2 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,4 +1,4 @@
1
- This rake task will update (delete and copy) all the files under /public on s3, be patient
1
+ This rake task will update (delete and copy) all the files under a directory to S3, by default is the public directory but you can pass as argument the path to the folder.
2
2
 
3
3
  The rake task will verify if the local file exist on s3 and
4
4
  if the local file have been modified since the upload to s3.
data/Rakefile CHANGED
@@ -15,8 +15,8 @@ Jeweler::Tasks.new do |gem|
15
15
  gem.name = "syncassets_r2"
16
16
  gem.homepage = "http://github.com/uokesita/syncassets_r2"
17
17
  gem.license = "MIT"
18
- gem.summary = %Q{This rake task will update (delete and copy) all the files under /public on s3, be patient}
19
- gem.description = %Q{This rake task will update (delete and copy) all the files under /public on s3, be patient}
18
+ gem.summary = %q{This rake task will update (delete and copy) all the files under a directory to S3, by default is the public directory but you can pass as argument the path to the folder.}
19
+ gem.description = %q{This rake task will update (delete and copy) all the files under a directory to S3, by default is the public directory but you can pass as argument the path to the folder.}
20
20
  gem.email = "osledybazo@gmail.com"
21
21
  gem.authors = ["Osledy Bazo"]
22
22
  # Include your dependencies below. Runtime dependencies are required when using your gem,
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.1
1
+ 0.4.0
data/lib/syncassets_r2.rb CHANGED
@@ -27,6 +27,12 @@ class Credentials
27
27
  def self.bucket
28
28
  Auth.root[Auth.env]['bucket']
29
29
  end
30
+ def self.distribution_ids
31
+ unless Auth.root[Auth.env]['distribution_ids'].nil?
32
+ return Auth.root[Auth.env]['distribution_ids'].gsub(' ','').split(',')
33
+ end
34
+ []
35
+ end
30
36
  rescue
31
37
  puts"syncassets_r3 : AWS Access Key Id needs a subscription for the service."
32
38
  end
@@ -1,12 +1,12 @@
1
1
  require 'fog'
2
2
  require 'syncassets_r2'
3
+
3
4
  namespace :syncassets do
4
5
 
5
6
  desc "Synchronize public folder with s3"
6
- task :sync_s3_public_assets do
7
+ task :sync_s3_public_assets, :directory do |t, args|
7
8
  puts "#########################################################"
8
- puts "## This rake task will update (delete and copy) "
9
- puts "## all the files under /public on s3, be patient "
9
+ puts "## Syncing folders and files with S3 ##"
10
10
  puts "#########################################################"
11
11
 
12
12
  @fog = Fog::Storage.new( :provider => 'AWS',
@@ -18,6 +18,7 @@ namespace :syncassets do
18
18
 
19
19
  @files_for_invalidation = []
20
20
  @distribution_ids = []
21
+ @root_directory = "#{args[:directory]}"
21
22
 
22
23
  get_distribution_ids
23
24
  upload_directory
@@ -32,14 +33,19 @@ namespace :syncassets do
32
33
 
33
34
  def get_distribution_ids
34
35
  get_cdn_connection
35
-
36
- distributions = @cdn.get_distribution_list()
37
- distributions.body["DistributionSummary"].each do |distribution|
38
- @distribution_ids << distribution["Id"]
36
+
37
+ if Credentials.distribution_ids.empty?
38
+ distributions = @cdn.get_distribution_list()
39
+ distributions.body["DistributionSummary"].each do |distribution|
40
+ @distribution_ids << distribution["Id"]
41
+ end
42
+ else
43
+ @distribution_ids = Credentials.distribution_ids
39
44
  end
40
45
  end
41
46
 
42
- def upload_directory(asset='/')
47
+ def upload_directory(asset = @root_directory || '/')
48
+
43
49
  Dir.entries(File.join(Rails.root, 'public', asset)).each do |file|
44
50
  next if file =~ /\A\./
45
51
 
@@ -52,7 +58,13 @@ namespace :syncassets do
52
58
  end
53
59
 
54
60
  def upload_file asset, file
55
- file_name = asset == "/" ? file : "#{asset}/#{file}".sub('/','')
61
+
62
+ if @root_directory.blank?
63
+ file_name = asset == "/" ? file : "#{asset}/#{file}".sub('/','')
64
+ else
65
+ file_name = asset == "/" ? file : "#{asset}/#{file}"
66
+ end
67
+
56
68
  remote_file = get_remote_file(file_name)
57
69
 
58
70
  if check_timestamps(file_name, remote_file)
@@ -84,18 +96,27 @@ namespace :syncassets do
84
96
  end
85
97
 
86
98
  def queue_file_for_invalidation asset, file
87
- path_to_file = asset == "/" ? "#{asset}#{file}" : "#{asset}/#{file}"
99
+ if @root_directory.blank?
100
+ path_to_file = asset == "/" ? "#{asset}#{file}" : "#{asset}/#{file}"
101
+ else
102
+ path_to_file = asset == "/" ? "/#{asset}#{file}" : "/#{asset}/#{file}"
103
+ end
88
104
  @files_for_invalidation << path_to_file
89
105
  puts "Queued for invalidation: #{path_to_file}"
106
+ if @files_for_invalidation.size == 200
107
+ invalidate_files
108
+ end
90
109
  end
91
110
 
92
111
  def invalidate_files
93
- get_cdn_connection
94
-
95
- @distribution_ids.each do |id|
96
- puts "Invalidating files of distribution #{id}"
97
- @cdn.post_invalidation(id, @files_for_invalidation, caller_reference = Time.now.to_i.to_s)
98
- puts "Invalidation list queued"
112
+ unless @files_for_invalidation.size < 1
113
+ get_cdn_connection
114
+ @distribution_ids.each do |id|
115
+ puts "Invalidating files of distribution #{id}"
116
+ @cdn.post_invalidation(id, @files_for_invalidation, caller_reference = Time.now.to_i.to_s)
117
+ puts "Invalidation list queued"
118
+ end
119
+ @files_for_invalidation.clear
99
120
  end
100
121
  end
101
122
 
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{syncassets_r2}
8
- s.version = "0.3.1"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Osledy Bazo"]
12
- s.date = %q{2011-05-11}
13
- s.description = %q{This rake task will update (delete and copy) all the files under /public on s3, be patient}
12
+ s.date = %q{2011-09-15}
13
+ s.description = %q{This rake task will update (delete and copy) all the files under a directory to S3, by default is the public directory but you can pass as argument the path to the folder.}
14
14
  s.email = %q{osledybazo@gmail.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
@@ -34,15 +34,14 @@ Gem::Specification.new do |s|
34
34
  s.homepage = %q{http://github.com/uokesita/syncassets_r2}
35
35
  s.licenses = ["MIT"]
36
36
  s.require_paths = ["lib"]
37
- s.rubygems_version = %q{1.3.7}
38
- s.summary = %q{This rake task will update (delete and copy) all the files under /public on s3, be patient}
37
+ s.rubygems_version = %q{1.4.2}
38
+ s.summary = %q{This rake task will update (delete and copy) all the files under a directory to S3, by default is the public directory but you can pass as argument the path to the folder.}
39
39
  s.test_files = [
40
40
  "test/helper.rb",
41
41
  "test/test_syncassets_r2.rb"
42
42
  ]
43
43
 
44
44
  if s.respond_to? :specification_version then
45
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
46
45
  s.specification_version = 3
47
46
 
48
47
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: syncassets_r2
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
5
- prerelease: false
4
+ hash: 15
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
- - 3
9
- - 1
10
- version: 0.3.1
8
+ - 4
9
+ - 0
10
+ version: 0.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Osledy Bazo
@@ -15,13 +15,11 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-11 00:00:00 -04:30
18
+ date: 2011-09-15 00:00:00 -04:30
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- prerelease: false
23
22
  type: :runtime
24
- name: fog
25
23
  version_requirements: &id001 !ruby/object:Gem::Requirement
26
24
  none: false
27
25
  requirements:
@@ -34,10 +32,10 @@ dependencies:
34
32
  - 2
35
33
  version: 0.7.2
36
34
  requirement: *id001
37
- - !ruby/object:Gem::Dependency
38
35
  prerelease: false
36
+ name: fog
37
+ - !ruby/object:Gem::Dependency
39
38
  type: :development
40
- name: shoulda
41
39
  version_requirements: &id002 !ruby/object:Gem::Requirement
42
40
  none: false
43
41
  requirements:
@@ -48,10 +46,10 @@ dependencies:
48
46
  - 0
49
47
  version: "0"
50
48
  requirement: *id002
51
- - !ruby/object:Gem::Dependency
52
49
  prerelease: false
50
+ name: shoulda
51
+ - !ruby/object:Gem::Dependency
53
52
  type: :development
54
- name: bundler
55
53
  version_requirements: &id003 !ruby/object:Gem::Requirement
56
54
  none: false
57
55
  requirements:
@@ -64,10 +62,10 @@ dependencies:
64
62
  - 0
65
63
  version: 1.0.0
66
64
  requirement: *id003
67
- - !ruby/object:Gem::Dependency
68
65
  prerelease: false
66
+ name: bundler
67
+ - !ruby/object:Gem::Dependency
69
68
  type: :development
70
- name: jeweler
71
69
  version_requirements: &id004 !ruby/object:Gem::Requirement
72
70
  none: false
73
71
  requirements:
@@ -80,10 +78,10 @@ dependencies:
80
78
  - 2
81
79
  version: 1.5.2
82
80
  requirement: *id004
83
- - !ruby/object:Gem::Dependency
84
81
  prerelease: false
82
+ name: jeweler
83
+ - !ruby/object:Gem::Dependency
85
84
  type: :development
86
- name: rcov
87
85
  version_requirements: &id005 !ruby/object:Gem::Requirement
88
86
  none: false
89
87
  requirements:
@@ -94,7 +92,9 @@ dependencies:
94
92
  - 0
95
93
  version: "0"
96
94
  requirement: *id005
97
- description: This rake task will update (delete and copy) all the files under /public on s3, be patient
95
+ prerelease: false
96
+ name: rcov
97
+ description: This rake task will update (delete and copy) all the files under a directory to S3, by default is the public directory but you can pass as argument the path to the folder.
98
98
  email: osledybazo@gmail.com
99
99
  executables: []
100
100
 
@@ -147,10 +147,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
147
  requirements: []
148
148
 
149
149
  rubyforge_project:
150
- rubygems_version: 1.3.7
150
+ rubygems_version: 1.4.2
151
151
  signing_key:
152
152
  specification_version: 3
153
- summary: This rake task will update (delete and copy) all the files under /public on s3, be patient
153
+ summary: This rake task will update (delete and copy) all the files under a directory to S3, by default is the public directory but you can pass as argument the path to the folder.
154
154
  test_files:
155
155
  - test/helper.rb
156
156
  - test/test_syncassets_r2.rb