asset_sync 0.1.10 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -7,6 +7,10 @@ bucket, optionally deleting unused files and only uploading the files it needs t
7
7
 
8
8
  This was initially built and is intended to work on [Heroku](http://heroku.com)
9
9
 
10
+ ## Upgrading?
11
+
12
+ If you are upgrading from a version of asset_sync **< 0.2.0** (i.e. 0.1.x). All of the references to config variables have changed to reference those used in **Fog**. Ensure to backup your `asset\_sync.rb` or `asset\_sync.yml` files and re-run the generator. You may also then need to update your ENV configuration variables (or you can change the ones that are referenced).
13
+
10
14
  ## KNOWN ISSUES (IMPORTANT)
11
15
 
12
16
  We are currently trying to talk with Heroku to iron these out.
@@ -26,7 +30,7 @@ This means the *RAILS_ENV* you have set via *heroku:config* is not used.
26
30
 
27
31
  AssetSync.configure do |config|
28
32
  ...
29
- config.aws_bucket = 'app-assets'
33
+ config.fog_directory = 'app-assets'
30
34
  config.existing_remote_files = "keep"
31
35
  end
32
36
 
@@ -37,9 +41,9 @@ Currently when heroku runs `rake assets:precompile` during deployment. It does n
37
41
  **Workaround:** you could just hardcode your AWS credentials in the initializer or yml
38
42
 
39
43
  AssetSync.configure do |config|
40
- config.aws_access_key = 'xxx'
41
- config.aws_access_secret = 'xxx'
42
- config.aws_bucket = 'mybucket'
44
+ config.aws_access_key_id_id = 'xxx'
45
+ config.aws_secret_access_key = 'xxx'
46
+ config.fog_directory = 'mybucket'
43
47
  end
44
48
 
45
49
  ## Installation
@@ -50,7 +54,7 @@ Add the gem to your Gemfile
50
54
 
51
55
  > The following steps are now optional as of version **0.1.7** there is a built-in initializer [lib/engine.rb](https://github.com/rumblelabs/asset_sync/blob/master/lib/asset_sync/engine.rb)
52
56
 
53
- Generate the rake task and config files
57
+ Generate the rake task and config file
54
58
 
55
59
  rails g asset_sync:install
56
60
 
@@ -58,6 +62,11 @@ If you would like to use a YAML file for configuration instead of the default (R
58
62
 
59
63
  rails g asset_sync:install --use-yml
60
64
 
65
+ The default *provider* is `AWS` but you can pick which one you need.
66
+
67
+ rails g asset_sync:install --provider=Rackspace
68
+ rails g asset_sync:install --provider=AWS
69
+
61
70
  ## Configuration
62
71
 
63
72
  Configure __config/environments/production.rb__ to use Amazon
@@ -65,7 +74,7 @@ S3 as the asset host and ensure precompiling is enabled.
65
74
 
66
75
  # config/environments/production.rb
67
76
  config.action_controller.asset_host = Proc.new do |source, request|
68
- request.ssl? ? "https://#{ENV['AWS_BUCKET']}.s3.amazonaws.com" : "http://#{ENV['AWS_BUCKET']}.s3.amazonaws.com"
77
+ request.ssl? ? "https://#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com" : "http://#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com"
69
78
  end
70
79
 
71
80
  We support two methods of configuration.
@@ -84,15 +93,22 @@ The recommend way to configure **asset_sync** is by using environment variables
84
93
  The generator will create a Rails initializer at `config/initializers/asset_sync.rb`.
85
94
 
86
95
  AssetSync.configure do |config|
87
- config.aws_access_key = ENV['AWS_ACCESS_KEY']
88
- config.aws_access_secret = ENV['AWS_ACCESS_SECRET']
89
- config.aws_bucket = ENV['AWS_BUCKET']
90
- config.existing_remote_files = "keep"
96
+ config.fog_provider = 'AWS'
97
+ config.fog_directory = ENV['FOG_DIRECTORY']
98
+ config.aws_access_key_id = ENV['AWS_ACCESS_KEY_ID']
99
+ config.aws_secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
100
+
101
+ # Don't delete files from the store
102
+ # config.existing_remote_files = "keep"
103
+ #
91
104
  # Increase upload performance by configuring your region
92
- # config.aws_region = "eu-west-1"
105
+ # config.fog_region = 'eu-west-1'
106
+ #
93
107
  # Automatically replace files with their equivalent gzip compressed version
94
108
  # config.gzip_compression = true
95
- # Use the Rails generated 'manifest.yml' file to produce the list of files to upload instead of searching the assets directory.
109
+ #
110
+ # Use the Rails generated 'manifest.yml' file to produce the list of files to
111
+ # upload instead of searching the assets directory.
96
112
  # config.manifest = true
97
113
  end
98
114
 
@@ -102,62 +118,85 @@ The generator will create a Rails initializer at `config/initializers/asset_sync
102
118
  If you used the `--use-yml` flag, the generator will create a YAML file at `config/asset_sync.yml`.
103
119
 
104
120
  defaults: &defaults
105
- aws_access_key: "<%= ENV['AWS_ACCESS_KEY'] %>"
106
- aws_access_secret: "<%= ENV['AWS_ACCESS_SECRET'] %>"
107
- # You may need to specify what region your S3 bucket is in
108
- # aws_region: "eu-west-1"
109
- existing_remote_files: keep
121
+ fog_provider: "AWS"
122
+ fog_directory: "rails-app-assets"
123
+ aws_access_key_id: "<%= ENV['AWS_ACCESS_KEY_ID'] %>"
124
+ aws_secret_access_key: "<%= ENV['AWS_SECRET_ACCESS_KEY'] %>"
125
+ # You may need to specify what region your storage bucket is in
126
+ # fog_region: "eu-west-1"
127
+ existing_remote_files: keep # Existing pre-compiled assets on S3 will be kept
128
+ # To delete existing remote files.
129
+ # existing_remote_files: delete
110
130
  # Automatically replace files with their equivalent gzip compressed version
111
- # gzip_compression = true
112
-
131
+ # gzip_compression: true
113
132
 
114
133
  development:
115
134
  <<: *defaults
116
- aws_bucket: "rails-app-development"
117
- existing_remote_files: keep # Existing pre-compiled assets on S3 will be kept
118
135
 
119
136
  test:
120
137
  <<: *defaults
121
- aws_bucket: "rails-app-test"
122
-
123
- staging:
124
- <<: *defaults
125
- aws_bucket: "rails-app-staging"
126
138
 
127
139
  production:
128
140
  <<: *defaults
129
- aws_bucket: "rails-app-production"
130
- # Existing pre-compiled assets on S3 will be deleted
131
- # existing_remote_files: delete
132
141
 
133
142
  ### Environment Variables
134
143
 
135
144
  Add your Amazon S3 configuration details to **heroku**
136
145
 
137
- heroku config:add AWS_ACCESS_KEY=xxxx
138
- heroku config:add AWS_ACCESS_SECRET=xxxx
139
- heroku config:add AWS_BUCKET=xxxx
146
+ heroku config:add AWS_ACCESS_KEY_ID=xxxx
147
+ heroku config:add AWS_SECRET_ACCESS_KEY=xxxx
148
+ heroku config:add FOG_DIRECTORY=xxxx
140
149
 
141
150
  Or add to a traditional unix system
142
151
 
143
- export AWS_ACCESS_KEY=xxxx
144
- export AWS_ACCESS_SECRET=xxxx
145
- export AWS_BUCKET=xxxx
152
+ export AWS_ACCESS_KEY_ID=xxxx
153
+ export AWS_SECRET_ACCESS_KEY=xxxx
154
+ export FOG_DIRECTORY=xxxx
146
155
 
147
156
  ### Available Configuration Options
148
157
 
149
- * **aws\_access\_key**: your Amazon S3 access key
150
- * **aws\_access\_secret**: your Amazon S3 access secret
151
- * **aws\_region**: the region your S3 bucket is in e.g. *eu-west-1*
152
- * **existing\_remote\_files**: what to do with previously precompiled files, options are **keep** or **delete**
158
+ #### AssetSync
159
+
160
+ * **existing_remote_files**: what to do with previously precompiled files, options are **keep** or **delete**
153
161
  * **gzip\_compression**: when enabled, will automatically replace files that have a gzip compressed equivalent with the compressed version.
154
162
  * **manifest**: when enabled, will use the `manifest.yml` generated by Rails to get the list of local files to upload. **experimental**
155
163
 
156
- ## Automatic gzip compression
164
+ #### Required (Fog)
165
+ * **fog\_provider**: your storage provider *AWS* (S3) or *Rackspace* (Cloud Files)
166
+ * **fog\_directory**: your bucket name
157
167
 
158
- With the `gzip_compression` option enabled, when uploading your assets. If a file has a gzip compressed equivalent we will replace that asset with the compressed version and sets the correct headers for S3 to serve it. For example, if you have a file **master.css** and it was compressed to **master.css.gz** we will upload the **.gz** file to S3 in place of the uncompressed file.
168
+ #### Optional
159
169
 
160
- If the compressed file is actually larger than the uncompressed file we will ignore this rule and upload the standard uncompressed version.
170
+ * **fog\_region**: the region your storage bucket is in e.g. *eu-west-1*
171
+
172
+ #### AWS
173
+
174
+ * **aws\_access\_key\_id**: your Amazon S3 access key
175
+ * **aws\_secret\_access\_key**: your Amazon S3 access secret
176
+
177
+ #### Rackspace
178
+
179
+ * **rackspace\_username**: your Rackspace username
180
+ * **rackspace\_api\_key**: your Rackspace API Key.
181
+
182
+
183
+ #### Required (Fog)
184
+ * **fog\_provider**: your storage provider *AWS* (S3) or *Rackspace* (Cloud Files)
185
+ * **fog\_directory**: your bucket name
186
+
187
+ #### Optional
188
+
189
+ * **fog\_region**: the region your storage bucket is in e.g. *eu-west-1*
190
+
191
+ #### AWS
192
+
193
+ * **aws\_access\_key\_id**: your Amazon S3 access key
194
+ * **aws\_secret\_access\_key**: your Amazon S3 access secret
195
+
196
+ #### Rackspace
197
+
198
+ * **rackspace\_username**: your Rackspace username
199
+ * **rackspace\_api\_key**: your Rackspace API Key.
161
200
 
162
201
 
163
202
  ## Amazon S3 Multiple Region Support
@@ -172,9 +211,16 @@ Or via the initializer
172
211
 
173
212
  AssetSync.configure do |config|
174
213
  # ...
175
- config.aws_region = 'eu-west-1'
214
+ config.fog_region = 'eu-west-1'
176
215
  end
177
216
 
217
+ ## Automatic gzip compression
218
+
219
+ With the `gzip_compression` option enabled, when uploading your assets. If a file has a gzip compressed equivalent we will replace that asset with the compressed version and sets the correct headers for S3 to serve it. For example, if you have a file **master.css** and it was compressed to **master.css.gz** we will upload the **.gz** file to S3 in place of the uncompressed file.
220
+
221
+ If the compressed file is actually larger than the uncompressed file we will ignore this rule and upload the standard uncompressed version.
222
+
223
+
178
224
  ## Rake Task
179
225
 
180
226
  A rake task is included in asset\_sync to enhance the rails precompile task by automatically running after it:
@@ -6,13 +6,13 @@ 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 = "2011-11-05"
9
+ s.date = "2011-11-15"
10
10
  s.platform = Gem::Platform::RUBY
11
11
  s.authors = ["Simon Hamilton", "David Rice"]
12
12
  s.email = ["shamilton@rumblelabs.com", "me@davidjrice.co.uk"]
13
13
  s.homepage = "https://github.com/rumblelabs/asset_sync"
14
- s.summary = %q{Synchronises Assets in a Rails 3 application and S3/Cloudfront}
15
- s.description = %q{After you run assets:precompile your assets will be synchronised with your S3 bucket, deleting unused files and only uploading the files it needs to.}
14
+ s.summary = %q{Synchronises Assets in a Rails 3 application and Amazon S3/Cloudfront and Rackspace Cloudfiles}
15
+ s.description = %q{After you run assets:precompile your compiled assets will be synchronised with your S3 bucket.}
16
16
 
17
17
  s.rubyforge_project = "asset_sync"
18
18
 
@@ -4,22 +4,34 @@ module AssetSync
4
4
 
5
5
  class Invalid < StandardError; end
6
6
 
7
- attr_accessor :provider
8
- attr_accessor :aws_access_key, :aws_access_secret
9
- attr_accessor :aws_bucket
10
- attr_accessor :aws_region
11
- attr_accessor :existing_remote_files
7
+ # AssetSync
8
+ attr_accessor :existing_remote_files # What to do with your existing remote files? (keep or delete)
12
9
  attr_accessor :gzip_compression
13
10
  attr_accessor :manifest
14
11
 
15
- validates :aws_access_key, :presence => true
16
- validates :aws_access_secret, :presence => true
17
- validates :aws_bucket, :presence => true
18
- validates :existing_remote_files, :inclusion => {:in => %w(keep delete)}
12
+ # FOG configuration
13
+ attr_accessor :fog_provider # Currently Supported ['AWS', 'Rackspace']
14
+ attr_accessor :fog_directory # e.g. 'the-bucket-name'
15
+ attr_accessor :fog_region # e.g. 'eu-west-1'
16
+
17
+ # Amazon AWS
18
+ attr_accessor :aws_access_key_id, :aws_secret_access_key
19
+
20
+ # Rackspace
21
+ attr_accessor :rackspace_username, :rackspace_api_key
22
+
23
+ validates :existing_remote_files, :inclusion => { :in => %w(keep delete) }
24
+
25
+ validates :fog_provider, :presence => true
26
+ validates :fog_directory, :presence => true
27
+
28
+ validates :aws_access_key_id, :presence => true, :if => :aws?
29
+ validates :aws_secret_access_key, :presence => true, :if => :aws?
30
+ validates :rackspace_username, :presence => true, :if => :rackspace?
31
+ validates :rackspace_api_key, :presence => true, :if => :rackspace?
19
32
 
20
33
  def initialize
21
- self.provider = 'AWS'
22
- self.aws_region = nil
34
+ self.fog_region = nil
23
35
  self.existing_remote_files = 'keep'
24
36
  self.gzip_compression = false
25
37
  self.manifest = false
@@ -39,6 +51,13 @@ module AssetSync
39
51
  (self.existing_remote_files == "keep")
40
52
  end
41
53
 
54
+ def aws?
55
+ fog_provider == 'AWS'
56
+ end
57
+
58
+ def rackspace?
59
+ fog_provider == 'Rackspace'
60
+ end
42
61
 
43
62
  def yml_exists?
44
63
  File.exists?(self.yml_path)
@@ -53,28 +72,48 @@ module AssetSync
53
72
  end
54
73
 
55
74
  def load_yml!
56
- self.aws_access_key = yml["aws_access_key"] if yml.has_key?("aws_access_key")
57
- self.aws_access_secret = yml["aws_access_secret"] if yml.has_key?("aws_access_secret")
58
- self.aws_bucket = yml["aws_bucket"] if yml.has_key?("aws_bucket")
59
- self.aws_region = yml["aws_region"] if yml.has_key?("aws_region")
75
+ self.fog_provider = yml["fog_provider"]
76
+ self.fog_directory = yml["fog_directory"]
77
+ self.fog_region = yml["fog_region"]
78
+ self.aws_access_key_id = yml["aws_access_key_id"]
79
+ self.aws_secret_access_key = yml["aws_secret_access_key"]
80
+ self.rackspace_username = yml["rackspace_username"]
81
+ self.rackspace_api_key = yml["rackspace_api_key"]
60
82
  self.existing_remote_files = yml["existing_remote_files"] if yml.has_key?("existing_remote_files")
61
83
  self.gzip_compression = yml["gzip_compression"] if yml.has_key?("gzip_compression")
62
84
  self.manifest = yml["manifest"] if yml.has_key?("manifest")
63
85
 
86
+ # TODO deprecate the other old style config settings. FML.
87
+ self.aws_access_key_id = yml["aws_access_key"] if yml.has_key?("aws_access_key")
88
+ self.aws_secret_access_key = yml["aws_access_secret"] if yml.has_key?("aws_access_secret")
89
+ self.fog_directory = yml["aws_bucket"] if yml.has_key?("aws_bucket")
90
+ self.fog_region = yml["aws_region"] if yml.has_key?("aws_region")
91
+
64
92
  # TODO deprecate old style config settings
65
- self.aws_access_key = yml["access_key_id"] if yml.has_key?("access_key_id")
66
- self.aws_access_secret = yml["secret_access_key"] if yml.has_key?("secret_access_key")
67
- self.aws_bucket = yml["bucket"] if yml.has_key?("bucket")
68
- self.aws_region = yml["region"] if yml.has_key?("region")
93
+ self.aws_access_key_id = yml["access_key_id"] if yml.has_key?("access_key_id")
94
+ self.aws_secret_access_key = yml["secret_access_key"] if yml.has_key?("secret_access_key")
95
+ self.fog_directory = yml["bucket"] if yml.has_key?("bucket")
96
+ self.fog_region = yml["region"] if yml.has_key?("region")
69
97
  end
70
98
 
99
+
71
100
  def fog_options
72
- options = {
73
- :provider => provider,
74
- :aws_access_key_id => aws_access_key,
75
- :aws_secret_access_key => aws_access_secret
76
- }
77
- options.merge!({:region => aws_region}) if aws_region
101
+ options = { :provider => fog_provider }
102
+ if aws?
103
+ options.merge!({
104
+ :aws_access_key_id => aws_access_key_id,
105
+ :aws_secret_access_key => aws_secret_access_key
106
+ })
107
+ elsif rackspace?
108
+ options.merge!({
109
+ :rackspace_username => rackspace_username,
110
+ :rackspace_api_key => rackspace_api_key
111
+ })
112
+ else
113
+ raise ArgumentError, "AssetSync Unknown provider: #{fog_provider} only AWS and Rackspace are supported currently."
114
+ end
115
+
116
+ options.merge!({:region => fog_region}) if fog_region
78
117
  return options
79
118
  end
80
119
 
@@ -12,9 +12,15 @@ class Engine < Rails::Engine
12
12
  else
13
13
  # STDERR.puts "AssetSync: using default configuration from built-in initializer"
14
14
  AssetSync.configure do |config|
15
- config.aws_access_key = ENV['AWS_ACCESS_KEY']
16
- config.aws_access_secret = ENV['AWS_ACCESS_SECRET']
17
- config.aws_bucket = ENV['AWS_BUCKET']
15
+ config.fog_provider = ENV['FOG_PROVIDER']
16
+ config.fog_directory = ENV['FOG_DIRECTORY']
17
+ config.fog_directory = ENV['FOG_REGION']
18
+
19
+ config.aws_access_key_id = ENV['AWS_ACCESS_KEY_ID']
20
+ config.aws_secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
21
+
22
+ config.rackspace_username = ENV['RACKSPACE_USERNAME']
23
+ config.rackspace_api_key = ENV['RACKSPACE_API_KEY']
18
24
  config.existing_remote_files = "keep"
19
25
  end
20
26
  end
@@ -15,7 +15,7 @@ module AssetSync
15
15
 
16
16
  def bucket
17
17
  # fixes: https://github.com/rumblelabs/asset_sync/issues/18
18
- @bucket ||= connection.directories.get(self.config.aws_bucket, :prefix => 'assets')
18
+ @bucket ||= connection.directories.get(self.config.fog_directory, :prefix => 'assets')
19
19
  end
20
20
 
21
21
  def keep_existing_remote_files?
@@ -45,7 +45,7 @@ module AssetSync
45
45
  end
46
46
 
47
47
  def get_remote_files
48
- raise BucketNotFound.new("AWS Bucket: #{self.config.aws_bucket} not found.") unless bucket
48
+ raise BucketNotFound.new("#{self.config.fog_provider} Bucket: #{self.config.fog_directory} not found.") unless bucket
49
49
  # fixes: https://github.com/rumblelabs/asset_sync/issues/16
50
50
  # (work-around for https://github.com/fog/fog/issues/596)
51
51
  files = []
@@ -1,3 +1,3 @@
1
1
  module AssetSync
2
- VERSION = "0.1.10"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -4,18 +4,35 @@ module AssetSync
4
4
  desc "Install a config/asset_sync.yml and the asset:precompile rake task enhancer"
5
5
 
6
6
  # Commandline options can be defined here using Thor-like options:
7
- class_option :use_yml, :type => :boolean, :default => false, :desc => "Use YML file instead of Rails Initializer"
7
+ class_option :use_yml, :type => :boolean, :default => false, :desc => "Use YML file instead of Rails Initializer"
8
+ class_option :provider, :type => :string, :default => "AWS", :desc => "Generate with support for 'AWS' or 'Rackspace'"
8
9
 
9
10
  def self.source_root
10
11
  @source_root ||= File.join(File.dirname(__FILE__), 'templates')
11
12
  end
12
13
 
13
- def aws_access_key
14
- "<%= ENV['AWS_ACCESS_KEY'] %>"
14
+ def aws?
15
+ options[:provider] == 'AWS'
15
16
  end
16
17
 
17
- def aws_access_secret
18
- "<%= ENV['AWS_ACCESS_SECRET'] %>"
18
+ def rackspace?
19
+ options[:provider] == 'Rackspace'
20
+ end
21
+
22
+ def aws_access_key_id
23
+ "<%= ENV['AWS_ACCESS_KEY_ID'] %>"
24
+ end
25
+
26
+ def aws_secret_access_key
27
+ "<%= ENV['AWS_SECRET_ACCESS_KEY'] %>"
28
+ end
29
+
30
+ def rackspace_username
31
+ "<%= ENV['RACKSPACE_USERNAME'] %>"
32
+ end
33
+
34
+ def rackspace_api_key
35
+ "<%= ENV['RACKSPACE_API_KEY'] %>"
19
36
  end
20
37
 
21
38
  def app_name
@@ -34,8 +51,5 @@ module AssetSync
34
51
  end
35
52
  end
36
53
 
37
- # def generate_rake_task
38
- # template "asset_sync.rake", "lib/tasks/asset_sync.rake"
39
- # end
40
54
  end
41
55
  end
@@ -1,12 +1,25 @@
1
1
  AssetSync.configure do |config|
2
- config.aws_access_key = ENV['AWS_ACCESS_KEY']
3
- config.aws_access_secret = ENV['AWS_ACCESS_SECRET']
4
- config.aws_bucket = ENV['AWS_BUCKET']
5
- config.existing_remote_files = "keep"
2
+ <%- if aws? -%>
3
+ config.fog_provider = 'AWS'
4
+ config.aws_access_key_id = ENV['AWS_ACCESS_KEY_ID']
5
+ config.aws_secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
6
+ <%- elsif rackspace? -%>
7
+ config.fog_provider = 'Rackspace'
8
+ config.rackspace_username = ENV['RACKSPACE_USERNAME']
9
+ config.rackspace_api_key = ENV['RACKSPACE_API_KEY']
10
+ <%- end -%>
11
+ config.fog_directory = ENV['FOG_DIRECTORY']
12
+
6
13
  # Increase upload performance by configuring your region
7
- # config.aws_region = "eu-west-1"
14
+ # config.fog_region = 'eu-west-1'
15
+ #
16
+ # Don't delete files from the store
17
+ # config.existing_remote_files = "keep"
18
+ #
8
19
  # Automatically replace files with their equivalent gzip compressed version
9
20
  # config.gzip_compression = true
10
- # Use the Rails generated 'manifest.yml' file to produce the list of files to upload instead of searching the assets directory.
21
+ #
22
+ # Use the Rails generated 'manifest.yml' file to produce the list of files to
23
+ # upload instead of searching the assets directory.
11
24
  # config.manifest = true
12
25
  end
@@ -1,30 +1,30 @@
1
1
  defaults: &defaults
2
- aws_access_key: "<%= aws_access_key %>"
3
- aws_access_secret: "<%= aws_access_secret %>"
4
- # You may need to specify what region your S3 bucket is in
5
- # aws_region: "eu-west-1"
2
+ <%- if aws? -%>
3
+ fog_provider: 'AWS'
4
+ aws_access_key_id: "<%= aws_access_key_id %>"
5
+ aws_secret_access_key: "<%= aws_secret_access_key %>"
6
+ <%- elsif rackspace? -%>
7
+ fog_provider: 'Rackspace'
8
+ rackspace_username: "<%= rackspace_username %>"
9
+ rackspace_api_key: "<%= rackspace_api_key %>"
10
+ <%- end -%>
11
+ fog_directory: "<%= app_name %>-assets"
12
+ # You may need to specify what region your storage bucket is in
13
+ # fog_region: "eu-west-1"
6
14
  existing_remote_files: keep
15
+ # To delete existing remote files.
16
+ # existing_remote_files: delete
7
17
  # Automatically replace files with their equivalent gzip compressed version
8
18
  # gzip_compression = true
9
19
 
10
-
11
20
  development:
12
21
  <<: *defaults
13
- aws_bucket: "<%= app_name %>_development"
14
- # Existing pre-compiled assets on S3 will be kept
15
- # existing_remote_files: keep
16
22
 
17
23
  test:
18
24
  <<: *defaults
19
- aws_bucket: "<%= app_name %>_test"
20
25
 
21
26
  staging:
22
27
  <<: *defaults
23
- aws_bucket: "<%= app_name %>_test"
24
28
 
25
29
  production:
26
30
  <<: *defaults
27
- aws_bucket: "<%= app_name %>_production"
28
- # Existing pre-compiled assets on S3 will be deleted
29
- # existing_remote_files: delete
30
-
@@ -7,32 +7,38 @@ describe AssetSync, 'with initializer' do
7
7
  Rails.root = 'without_yml'
8
8
  AssetSync.config = AssetSync::Config.new
9
9
  AssetSync.configure do |config|
10
- config.aws_access_key = 'aaaa'
11
- config.aws_access_secret = 'bbbb'
12
- config.aws_bucket = 'mybucket'
13
- config.aws_region = 'eu-west-1'
10
+ config.fog_provider = 'AWS'
11
+ config.aws_access_key_id = 'aaaa'
12
+ config.aws_secret_access_key = 'bbbb'
13
+ config.fog_directory = 'mybucket'
14
+ config.fog_region = 'eu-west-1'
14
15
  config.existing_remote_files = "keep"
15
16
  end
16
17
  end
17
18
 
19
+ it "should configure provider as AWS" do
20
+ AssetSync.config.fog_provider.should == 'AWS'
21
+ AssetSync.config.should be_aws
22
+ end
23
+
18
24
  it "should should keep existing remote files" do
19
25
  AssetSync.config.existing_remote_files?.should == true
20
26
  end
21
27
 
22
28
  it "should configure aws_access_key" do
23
- AssetSync.config.aws_access_key.should == "aaaa"
29
+ AssetSync.config.aws_access_key_id.should == "aaaa"
24
30
  end
25
31
 
26
32
  it "should configure aws_access_key" do
27
- AssetSync.config.aws_access_secret.should == "bbbb"
33
+ AssetSync.config.aws_secret_access_key.should == "bbbb"
28
34
  end
29
35
 
30
36
  it "should configure aws_access_key" do
31
- AssetSync.config.aws_bucket.should == "mybucket"
37
+ AssetSync.config.fog_directory.should == "mybucket"
32
38
  end
33
39
 
34
40
  it "should configure aws_access_key" do
35
- AssetSync.config.aws_region.should == "eu-west-1"
41
+ AssetSync.config.fog_region.should == "eu-west-1"
36
42
  end
37
43
 
38
44
  it "should configure aws_access_key" do
@@ -53,24 +59,24 @@ end
53
59
  describe AssetSync, 'from yml' do
54
60
 
55
61
  before(:all) do
56
- Rails.root = 'with_yml'
62
+ Rails.root = 'aws_with_yml'
57
63
  AssetSync.config = AssetSync::Config.new
58
64
  end
59
65
 
60
- it "should configure aws_access_key" do
61
- AssetSync.config.aws_access_key.should == "xxxx"
66
+ it "should configure aws_access_key_id" do
67
+ AssetSync.config.aws_access_key_id.should == "xxxx"
62
68
  end
63
69
 
64
- it "should configure aws_access_key" do
65
- AssetSync.config.aws_access_secret.should == "zzzz"
70
+ it "should configure aws_secret_access_key" do
71
+ AssetSync.config.aws_secret_access_key.should == "zzzz"
66
72
  end
67
73
 
68
74
  it "should configure aws_access_key" do
69
- AssetSync.config.aws_bucket.should == "rails_app_test"
75
+ AssetSync.config.fog_directory.should == "rails_app_test"
70
76
  end
71
77
 
72
78
  it "should configure aws_access_key" do
73
- AssetSync.config.aws_region.should == "eu-west-1"
79
+ AssetSync.config.fog_region.should == "eu-west-1"
74
80
  end
75
81
 
76
82
  it "should configure aws_access_key" do
@@ -1,20 +1,20 @@
1
1
  defaults: &defaults
2
- access_key_id: "xxxx"
3
- secret_access_key: "zzzz"
2
+ fog_provider: "AWS"
3
+ aws_access_key_id: "xxxx"
4
+ aws_secret_access_key: "zzzz"
4
5
  region: "eu-west-1"
5
6
 
6
7
  development:
7
8
  <<: *defaults
8
- bucket: "rails_app_development"
9
+ fog_directory: "rails_app_development"
9
10
  existing_remote_files: keep
10
11
 
11
12
  test:
12
13
  <<: *defaults
13
- bucket: "rails_app_test"
14
+ fog_directory: "rails_app_test"
14
15
  existing_remote_files: keep
15
16
 
16
17
  production:
17
18
  <<: *defaults
18
- bucket: "rails_app_production"
19
+ fog_directory: "rails_app_production"
19
20
  existing_remote_files: delete
20
-
@@ -0,0 +1,83 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+
4
+ describe AssetSync, 'using Rackspace with initializer' do
5
+
6
+ before(:all) do
7
+ Rails.root = 'without_yml'
8
+ AssetSync.config = AssetSync::Config.new
9
+ AssetSync.configure do |config|
10
+ config.fog_provider = 'Rackspace'
11
+ config.fog_directory = 'mybucket'
12
+ config.fog_region = 'dunno'
13
+ config.rackspace_username = 'aaaa'
14
+ config.rackspace_api_key = 'bbbb'
15
+ config.existing_remote_files = 'keep'
16
+ end
17
+ end
18
+
19
+ it "should configure provider as AWS" do
20
+ AssetSync.config.fog_provider.should == 'Rackspace'
21
+ AssetSync.config.should be_rackspace
22
+ end
23
+
24
+ it "should keep existing remote files" do
25
+ AssetSync.config.existing_remote_files?.should == true
26
+ end
27
+
28
+ it "should configure rackspace_username" do
29
+ AssetSync.config.rackspace_username.should == "aaaa"
30
+ end
31
+
32
+ it "should configure rackspace_api_key" do
33
+ AssetSync.config.rackspace_api_key.should == "bbbb"
34
+ end
35
+
36
+ it "should configure fog_directory" do
37
+ AssetSync.config.fog_directory.should == "mybucket"
38
+ end
39
+
40
+ it "should configure fog_region" do
41
+ AssetSync.config.fog_region.should == "dunno"
42
+ end
43
+
44
+ it "should configure existing_remote_files" do
45
+ AssetSync.config.existing_remote_files.should == "keep"
46
+ end
47
+
48
+ end
49
+
50
+
51
+ describe AssetSync, 'using Rackspace from yml' do
52
+
53
+ before(:all) do
54
+ Rails.root = 'rackspace_with_yml'
55
+ AssetSync.config = AssetSync::Config.new
56
+ end
57
+
58
+ it "should keep existing remote files" do
59
+ AssetSync.config.existing_remote_files?.should == true
60
+ end
61
+
62
+ it "should configure rackspace_username" do
63
+ AssetSync.config.rackspace_username.should == "xxxx"
64
+ end
65
+
66
+ it "should configure rackspace_api_key" do
67
+ AssetSync.config.rackspace_api_key.should == "zzzz"
68
+ end
69
+
70
+ it "should configure fog_directory" do
71
+ AssetSync.config.fog_directory.should == "rails_app_test"
72
+ end
73
+
74
+ it "should configure fog_region" do
75
+ AssetSync.config.fog_region.should == "eu-west-1"
76
+ end
77
+
78
+ it "should configure existing_remote_files" do
79
+ AssetSync.config.existing_remote_files.should == "keep"
80
+ end
81
+
82
+
83
+ end
@@ -0,0 +1,20 @@
1
+ defaults: &defaults
2
+ fog_provider: "Rackspace"
3
+ rackspace_username: "xxxx"
4
+ rackspace_api_key: "zzzz"
5
+ region: "eu-west-1"
6
+
7
+ development:
8
+ <<: *defaults
9
+ fog_directory: "rails_app_development"
10
+ existing_remote_files: keep
11
+
12
+ test:
13
+ <<: *defaults
14
+ fog_directory: "rails_app_test"
15
+ existing_remote_files: keep
16
+
17
+ production:
18
+ <<: *defaults
19
+ fog_directory: "rails_app_production"
20
+ existing_remote_files: delete
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.1.10
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-11-05 00:00:00.000000000Z
13
+ date: 2011-11-15 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: fog
17
- requirement: &70137703451140 !ruby/object:Gem::Requirement
17
+ requirement: &70139726871260 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70137703451140
25
+ version_requirements: *70139726871260
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: activemodel
28
- requirement: &70137703450520 !ruby/object:Gem::Requirement
28
+ requirement: &70139726870840 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70137703450520
36
+ version_requirements: *70139726870840
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rspec
39
- requirement: &70137703449900 !ruby/object:Gem::Requirement
39
+ requirement: &70139726870420 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *70137703449900
47
+ version_requirements: *70139726870420
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: bundler
50
- requirement: &70137703449240 !ruby/object:Gem::Requirement
50
+ requirement: &70139726870000 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *70137703449240
58
+ version_requirements: *70139726870000
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: jeweler
61
- requirement: &70137703448620 !ruby/object:Gem::Requirement
61
+ requirement: &70139726869580 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,9 +66,9 @@ dependencies:
66
66
  version: '0'
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *70137703448620
70
- description: After you run assets:precompile your assets will be synchronised with
71
- your S3 bucket, deleting unused files and only uploading the files it needs to.
69
+ version_requirements: *70139726869580
70
+ description: After you run assets:precompile your compiled assets will be synchronised
71
+ with your S3 bucket.
72
72
  email:
73
73
  - shamilton@rumblelabs.com
74
74
  - me@davidjrice.co.uk
@@ -89,13 +89,14 @@ files:
89
89
  - lib/asset_sync/storage.rb
90
90
  - lib/asset_sync/version.rb
91
91
  - lib/generators/asset_sync/install_generator.rb
92
- - lib/generators/asset_sync/templates/asset_sync.rake
93
92
  - lib/generators/asset_sync/templates/asset_sync.rb
94
93
  - lib/generators/asset_sync/templates/asset_sync.yml
95
94
  - lib/tasks/asset_sync.rake
96
95
  - spec/asset_sync_spec.rb
96
+ - spec/aws_with_yml/config/asset_sync.yml
97
+ - spec/rackspace_spec.rb
98
+ - spec/rackspace_with_yml/config/asset_sync.yml
97
99
  - spec/spec_helper.rb
98
- - spec/with_yml/config/asset_sync.yml
99
100
  homepage: https://github.com/rumblelabs/asset_sync
100
101
  licenses: []
101
102
  post_install_message:
@@ -119,8 +120,11 @@ rubyforge_project: asset_sync
119
120
  rubygems_version: 1.8.10
120
121
  signing_key:
121
122
  specification_version: 3
122
- summary: Synchronises Assets in a Rails 3 application and S3/Cloudfront
123
+ summary: Synchronises Assets in a Rails 3 application and Amazon S3/Cloudfront and
124
+ Rackspace Cloudfiles
123
125
  test_files:
124
126
  - spec/asset_sync_spec.rb
127
+ - spec/aws_with_yml/config/asset_sync.yml
128
+ - spec/rackspace_spec.rb
129
+ - spec/rackspace_with_yml/config/asset_sync.yml
125
130
  - spec/spec_helper.rb
126
- - spec/with_yml/config/asset_sync.yml
@@ -1,3 +0,0 @@
1
- Rake::Task["assets:precompile"].enhance do
2
- AssetSync.sync
3
- end