asset_sync 2.4.0 → 2.15.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -8,8 +8,6 @@ describe AssetSync do
8
8
  AssetSync.config = AssetSync::Config.new
9
9
  AssetSync.configure do |config|
10
10
  config.fog_provider = 'Google'
11
- config.google_storage_access_key_id = 'aaaa'
12
- config.google_storage_secret_access_key = 'bbbb'
13
11
  config.fog_directory = 'mybucket'
14
12
  config.existing_remote_files = "keep"
15
13
  end
@@ -24,14 +22,6 @@ describe AssetSync do
24
22
  expect(AssetSync.config.existing_remote_files?).to eq(true)
25
23
  end
26
24
 
27
- it "should configure google_storage_access_key_id" do
28
- expect(AssetSync.config.google_storage_access_key_id).to eq("aaaa")
29
- end
30
-
31
- it "should configure google_storage_secret_access_key" do
32
- expect(AssetSync.config.google_storage_secret_access_key).to eq("bbbb")
33
- end
34
-
35
25
  it "should configure fog_directory" do
36
26
  expect(AssetSync.config.fog_directory).to eq("mybucket")
37
27
  end
@@ -47,36 +37,141 @@ describe AssetSync do
47
37
  it "should default manifest to false" do
48
38
  expect(AssetSync.config.manifest).to be_falsey
49
39
  end
50
- end
51
40
 
52
- describe 'from yml' do
53
- before(:each) do
54
- set_rails_root('google_with_yml')
55
- AssetSync.config = AssetSync::Config.new
56
- end
41
+ describe "when using S3 interop API" do
42
+ before(:each) do
43
+ AssetSync.configure do |config|
44
+ config.google_storage_access_key_id = 'aaaa'
45
+ config.google_storage_secret_access_key = 'bbbb'
46
+ end
47
+ end
57
48
 
58
- it "should configure google_storage_access_key_id" do
59
- expect(AssetSync.config.google_storage_access_key_id).to eq("xxxx")
60
- end
49
+ it "should configure google_storage_access_key_id" do
50
+ expect(AssetSync.config.google_storage_access_key_id).to eq("aaaa")
51
+ end
52
+
53
+ it "should configure google_storage_secret_access_key" do
54
+ expect(AssetSync.config.google_storage_secret_access_key).to eq("bbbb")
55
+ end
56
+
57
+ it "should return the correct fog_options" do
58
+ expected_fog_options = { google_storage_access_key_id: "aaaa",
59
+ google_storage_secret_access_key: "bbbb",
60
+ provider: "Google"}
61
+ expect(AssetSync.config.fog_options).to eq(expected_fog_options)
62
+ end
63
+
64
+ it "should not require that google_json_key_location be set" do
65
+ expect(AssetSync.config.valid?).to eq(true)
66
+ end
67
+
68
+ it "should require that google_storage_secret_access_key or access_key_id be set" do
61
69
 
62
- it "should configure google_storage_secret_access_key" do
63
- expect(AssetSync.config.google_storage_secret_access_key).to eq("zzzz")
70
+ AssetSync.configure do |config|
71
+ config.google_storage_access_key_id = nil
72
+ config.google_storage_secret_access_key = nil
73
+ end
74
+
75
+ expect(AssetSync.config.valid?).to eq(false)
76
+ end
64
77
  end
65
78
 
66
- it "should configure google_storage_access_key" do
67
- expect(AssetSync.config.fog_directory).to eq("rails_app_test")
79
+ describe "when using service account" do
80
+ before(:each) do
81
+ AssetSync.configure do |config|
82
+ config.google_json_key_location = '/path/to.json'
83
+ config.google_project = 'a-google-project-name'
84
+ end
85
+ end
86
+
87
+ it "should configure google_json_key_location" do
88
+ expect(AssetSync.config.google_json_key_location).to eq("/path/to.json")
89
+ end
90
+
91
+ it "should return the correct fog_options" do
92
+ expected_fog_options = { google_json_key_location: "/path/to.json",
93
+ google_project: 'a-google-project-name',
94
+ provider: "Google"}
95
+ expect(AssetSync.config.fog_options).to eq(expected_fog_options)
96
+ end
97
+ it "should not require that google_storage_secret_access_key or access_key_id be set" do
98
+ expect(AssetSync.config.valid?).to eq(true)
99
+ end
68
100
  end
69
101
 
70
- it "should configure google_storage_access_key" do
71
- expect(AssetSync.config.existing_remote_files).to eq("keep")
102
+ describe "when using service account with JSON key string" do
103
+ before(:each) do
104
+ AssetSync.configure do |config|
105
+ config.google_json_key_string = 'a-google-json-key-string'
106
+ config.google_project = 'a-google-project-name'
107
+ end
108
+ end
109
+
110
+ it "should configure google_json_key_string" do
111
+ expect(AssetSync.config.google_json_key_string).to eq("a-google-json-key-string")
112
+ end
113
+
114
+ it "should return the correct fog_options" do
115
+ expected_fog_options = { google_json_key_string: "a-google-json-key-string",
116
+ google_project: 'a-google-project-name',
117
+ provider: "Google"}
118
+ expect(AssetSync.config.fog_options).to eq(expected_fog_options)
119
+ end
120
+ it "should not require that google_storage_secret_access_key or access_key_id be set" do
121
+ expect(AssetSync.config.valid?).to eq(true)
122
+ end
72
123
  end
124
+ end
73
125
 
74
- it "should default gzip_compression to false" do
75
- expect(AssetSync.config.gzip_compression).to be_falsey
126
+ describe 'from yml' do
127
+ describe 'when using S3 interop API' do
128
+ before(:each) do
129
+ set_rails_root('google_with_yml')
130
+ AssetSync.config = AssetSync::Config.new
131
+ end
132
+
133
+ it "should configure google_storage_access_key_id" do
134
+ expect(AssetSync.config.google_storage_access_key_id).to eq("xxxx")
135
+ end
136
+
137
+ it "should configure google_storage_secret_access_key" do
138
+ expect(AssetSync.config.google_storage_secret_access_key).to eq("zzzz")
139
+ end
140
+
141
+ it "should not configure google_json_key_location" do
142
+ expect(AssetSync.config.google_json_key_location).to eq(nil)
143
+ end
144
+
145
+ it "should configure fog_directory" do
146
+ expect(AssetSync.config.fog_directory).to eq("rails_app_test")
147
+ end
148
+
149
+ it "should configure existing_remote_files" do
150
+ expect(AssetSync.config.existing_remote_files).to eq("keep")
151
+ end
152
+
153
+ it "should default gzip_compression to false" do
154
+ expect(AssetSync.config.gzip_compression).to be_falsey
155
+ end
156
+
157
+ it "should default manifest to false" do
158
+ expect(AssetSync.config.manifest).to be_falsey
159
+ end
76
160
  end
77
161
 
78
- it "should default manifest to false" do
79
- expect(AssetSync.config.manifest).to be_falsey
162
+ describe 'when using service account API' do
163
+ before(:each) do
164
+ set_rails_root('google_with_service_account_yml')
165
+ AssetSync.config = AssetSync::Config.new
166
+ end
167
+
168
+ it "should configure google_json_key_location" do
169
+ expect(AssetSync.config.google_json_key_location).to eq("gcs.json")
170
+ end
171
+
172
+ it "should not configure google_storage_secret_access_key" do
173
+ expect(AssetSync.config.google_storage_secret_access_key).to eq(nil)
174
+ end
80
175
  end
81
176
  end
82
177
 
@@ -36,6 +36,8 @@ describe AssetSync::MultiMime do
36
36
  $".grep(/mime\//).each do |file_path|
37
37
  $".delete(file_path)
38
38
  end
39
+
40
+ AssetSync.config = AssetSync::Config.new
39
41
  end
40
42
 
41
43
  after(:all) do
@@ -69,4 +71,49 @@ describe AssetSync::MultiMime do
69
71
 
70
72
  end
71
73
 
74
+ describe "use of option file_ext_to_mime_type_overrides" do
75
+ before(:each) do
76
+ require 'mime/types'
77
+ end
78
+
79
+ context "with default value" do
80
+ it "should return default value set by gem" do
81
+ expect(
82
+ AssetSync::MultiMime.lookup("js").to_s,
83
+ ).to eq("application/javascript")
84
+ end
85
+ end
86
+ context "with empty value" do
87
+ before(:each) do
88
+ AssetSync.config = AssetSync::Config.new
89
+ AssetSync.configure do |config|
90
+ config.file_ext_to_mime_type_overrides.clear
91
+ end
92
+ end
93
+
94
+ it "should return value from mime-types gem" do
95
+ expect(
96
+ AssetSync::MultiMime.lookup("js").to_s,
97
+ ).to eq(::MIME::Types.type_for("js").first.to_s)
98
+ end
99
+ end
100
+ context "with custom value" do
101
+ before(:each) do
102
+ AssetSync.config = AssetSync::Config.new
103
+ AssetSync.configure do |config|
104
+ config.file_ext_to_mime_type_overrides.add(
105
+ :js,
106
+ :"application/x-javascript",
107
+ )
108
+ end
109
+ end
110
+
111
+ it "should return custom value" do
112
+ expect(
113
+ AssetSync::MultiMime.lookup("js").to_s,
114
+ ).to eq("application/x-javascript")
115
+ end
116
+ end
117
+ end
118
+
72
119
  end
@@ -14,7 +14,7 @@ describe AssetSync do
14
14
  config.fog_region = 'eu-west-1'
15
15
  config.existing_remote_files = "keep"
16
16
  config.prefix = "assets"
17
- config.public_path = Pathname("./public")
17
+ config.public_path = "./public"
18
18
  end
19
19
  end
20
20
 
@@ -22,8 +22,9 @@ describe AssetSync do
22
22
  expect(AssetSync.config.prefix).to eq("assets")
23
23
  end
24
24
 
25
- it "should have prefix of assets" do
26
- expect(AssetSync.config.public_path.to_s).to eq("./public")
25
+ it "should have public_path" do
26
+ expect(AssetSync.config.public_path.to_s).to be_end_with("/public")
27
+ expect(AssetSync.config.public_path).to be_absolute
27
28
  end
28
29
 
29
30
  it "should default AssetSync to enabled" do
@@ -54,19 +54,105 @@ describe AssetSync::Storage do
54
54
  storage.upload_files
55
55
  end
56
56
 
57
+ it 'should upload files concurrently if enabled' do
58
+ @config.concurrent_uploads = true
59
+ storage = AssetSync::Storage.new(@config)
60
+
61
+ allow(storage).to receive(:get_local_files).and_return(@local_files)
62
+ allow(storage).to receive(:get_remote_files).and_return(@remote_files)
63
+ allow(File).to receive(:file?).and_return(true) # Pretend they all exist
64
+
65
+ expect(Thread).to receive(:new).exactly(3).times.and_call_original
66
+ (@local_files - @remote_files + storage.always_upload_files).each do |file|
67
+ expect(storage).to receive(:upload_file).with(file)
68
+ end
69
+
70
+ storage.upload_files
71
+ end
72
+
73
+ it 'should allow custom number of threads' do
74
+ @config.concurrent_uploads = true
75
+ @config.concurrent_uploads_max_threads = 2
76
+ storage = AssetSync::Storage.new(@config)
77
+
78
+ allow(storage).to receive(:get_local_files).and_return(@local_files)
79
+ allow(storage).to receive(:get_remote_files).and_return(@remote_files)
80
+ allow(File).to receive(:file?).and_return(true) # Pretend they all exist
81
+
82
+ expect(Thread).to receive(:new).exactly(2).times.and_call_original
83
+ (@local_files - @remote_files + storage.always_upload_files).each do |file|
84
+ expect(storage).to receive(:upload_file).with(file)
85
+ end
86
+
87
+ storage.upload_files
88
+ end
89
+
90
+ it 'should allow remote_file_list_cache_file_path configuration' do
91
+ file_path = './foo.json'
92
+ @config.remote_file_list_cache_file_path = file_path
93
+ storage = AssetSync::Storage.new(@config)
94
+
95
+ allow(storage).to receive(:get_local_files).and_return(@local_files)
96
+ File.write(file_path, @remote_files.to_json)
97
+ expect(storage).not_to receive(:get_remote_files)
98
+ allow(File).to receive(:file?).and_return(true) # Pretend they all exist
99
+
100
+ (@local_files - @remote_files + storage.always_upload_files).each do |file|
101
+ expect(storage).to receive(:upload_file).with(file)
102
+ end
103
+
104
+ expect(storage).not_to receive(:warn)
105
+ storage.upload_files
106
+
107
+ # update remote_file_list_cache corretly
108
+ updated = JSON.parse(File.read(file_path))
109
+ expect(updated.sort.uniq).to eq (@remote_files + @local_files + storage.always_upload_files).sort.uniq
110
+
111
+ File.delete(file_path)
112
+ end
113
+
114
+ it 'should work with broken cache' do
115
+ file_path = './foo.json'
116
+ @config.remote_file_list_cache_file_path = file_path
117
+
118
+ storage = AssetSync::Storage.new(@config)
119
+
120
+ File.write(file_path, 'some non-json text file content')
121
+
122
+ allow(storage).to receive(:get_local_files).and_return(@local_files)
123
+ allow(storage).to receive(:get_remote_files).and_return(@remote_files)
124
+ allow(File).to receive(:file?).and_return(true) # Pretend they all exist
125
+
126
+ (@local_files - @remote_files + storage.always_upload_files).each do |file|
127
+ expect(storage).to receive(:upload_file).with(file)
128
+ end
129
+
130
+ # when broken, warning message should be prompted
131
+ expect(storage).to receive(:warn)
132
+
133
+ storage.upload_files
134
+
135
+ File.delete(file_path)
136
+ end
137
+
57
138
  it 'should upload updated non-fingerprinted files' do
58
139
  @local_files = [
59
- 'public/image.png',
60
- 'public/image-82389298328.png',
61
- 'public/image-a8389f9h324.png',
140
+ 'public/great-image.png',
141
+ 'public/great-image-82389298328.png',
142
+ 'public/great-image-a8389f9h324.png',
143
+ "public/new\nline.js",
144
+ "public/new\nline-aaaaaaaaaaa.js",
145
+ "public/new\nline-bbbbbbbbbbb.js",
62
146
  'public/application.js',
63
147
  'public/application-b3389d983k1.js',
64
148
  'public/application-ac387d53f31.js',
65
149
  'public',
66
150
  ]
67
151
  @remote_files = [
68
- 'public/image.png',
69
- 'public/image-a8389f9h324.png',
152
+ 'public/great-image.png',
153
+ 'public/great-image-a8389f9h324.png',
154
+ "public/new\nline.js",
155
+ "public/new\nline-aaaaaaaaaaa.js",
70
156
  'public/application.js',
71
157
  'public/application-b3389d983k1.js',
72
158
  ]
@@ -77,7 +163,8 @@ describe AssetSync::Storage do
77
163
  allow(File).to receive(:file?).and_return(true) # Pretend they all exist
78
164
 
79
165
  updated_nonfingerprinted_files = [
80
- 'public/image.png',
166
+ 'public/great-image.png',
167
+ "public/new\nline.js",
81
168
  'public/application.js',
82
169
  ]
83
170
  (@local_files - @remote_files + updated_nonfingerprinted_files).each do |file|
@@ -125,7 +212,7 @@ describe AssetSync::Storage do
125
212
  end
126
213
  end
127
214
 
128
- it 'should upload additonal files' do
215
+ it 'should upload additonal files' do
129
216
  @local_files = [
130
217
  'public/image.png',
131
218
  'public/image-82389298328.png',
@@ -307,4 +394,60 @@ describe AssetSync::Storage do
307
394
  storage.upload_file('assets/some_longer_path/local_image2.jpg')
308
395
  end
309
396
  end
397
+
398
+ describe '#delete_extra_remote_files' do
399
+ it 'should delete the files in bulk' do
400
+ remote_files = ['public/image.png']
401
+ connection = double
402
+ config = double
403
+
404
+ storage = AssetSync::Storage.new(@config)
405
+
406
+ [:local_files, :ignored_files, :always_upload_files].each do |method|
407
+ expect(storage).to receive(method).and_return([])
408
+ end
409
+
410
+ allow(storage).to receive(:get_remote_files).and_return(remote_files)
411
+ allow(storage).to receive(:connection).and_return(connection).twice
412
+ allow(storage).to receive(:config).and_return(config).twice
413
+ allow(config).to receive(:aws?).and_return(true)
414
+ allow(config).to receive(:fog_directory).and_return('foo')
415
+ expect(connection).to receive(:delete_multiple_objects).with('foo', remote_files)
416
+
417
+ storage.delete_extra_remote_files
418
+ end
419
+
420
+ context 'when not aws' do
421
+ it 'deletes files sequentially' do
422
+ remote_files = ['public/image.png']
423
+ connection = double
424
+ config = double
425
+ directories = double
426
+ directory = double
427
+ file = double
428
+
429
+ storage = AssetSync::Storage.new(@config)
430
+
431
+ [:local_files, :ignored_files, :always_upload_files].each do |method|
432
+ expect(storage).to receive(method).and_return([])
433
+ end
434
+
435
+ allow(storage).to receive(:get_remote_files).and_return(remote_files)
436
+ allow(storage).to receive(:connection).and_return(connection).twice
437
+ allow(storage).to receive(:config).and_return(config)
438
+ allow(config).to receive(:aws?).and_return(false)
439
+ allow(config).to receive(:fog_directory).and_return('foo')
440
+ allow(config).to receive(:assets_prefix).and_return('foo')
441
+ allow(directories).to receive(:get).and_return(directory)
442
+ allow(directory).to receive(:files).and_return([file])
443
+ allow(file).to receive(:key).and_return('public/image.png')
444
+ allow(connection).to receive(:directories).and_return(directories)
445
+ allow(config).to receive(:backblaze?).and_return(false)
446
+ expect(connection).not_to receive(:delete_multiple_objects)
447
+ expect(file).to receive(:destroy)
448
+
449
+ storage.delete_extra_remote_files
450
+ end
451
+ end
452
+ end
310
453
  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: 2.4.0
4
+ version: 2.15.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Hamilton
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2017-12-20 00:00:00.000000000 Z
14
+ date: 2022-06-02 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: fog-core
@@ -98,7 +98,35 @@ dependencies:
98
98
  - !ruby/object:Gem::Version
99
99
  version: '0'
100
100
  - !ruby/object:Gem::Dependency
101
- name: jeweler
101
+ name: coveralls
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: '0.7'
107
+ type: :development
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0.7'
114
+ - !ruby/object:Gem::Dependency
115
+ name: mime-types
116
+ requirement: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: '3.0'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '3.0'
128
+ - !ruby/object:Gem::Dependency
129
+ name: fog-aws
102
130
  requirement: !ruby/object:Gem::Requirement
103
131
  requirements:
104
132
  - - ">="
@@ -112,7 +140,7 @@ dependencies:
112
140
  - !ruby/object:Gem::Version
113
141
  version: '0'
114
142
  - !ruby/object:Gem::Dependency
115
- name: fog-aws
143
+ name: gitlab-fog-azure-rm
116
144
  requirement: !ruby/object:Gem::Requirement
117
145
  requirements:
118
146
  - - ">="
@@ -126,7 +154,7 @@ dependencies:
126
154
  - !ruby/object:Gem::Version
127
155
  version: '0'
128
156
  - !ruby/object:Gem::Dependency
129
- name: fog-azure-rm
157
+ name: fog-backblaze
130
158
  requirement: !ruby/object:Gem::Requirement
131
159
  requirements:
132
160
  - - ">="
@@ -167,6 +195,20 @@ dependencies:
167
195
  - - ">="
168
196
  - !ruby/object:Gem::Version
169
197
  version: '0'
198
+ - !ruby/object:Gem::Dependency
199
+ name: gem-release
200
+ requirement: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - ">="
203
+ - !ruby/object:Gem::Version
204
+ version: '0'
205
+ type: :development
206
+ prerelease: false
207
+ version_requirements: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - ">="
210
+ - !ruby/object:Gem::Version
211
+ version: '0'
170
212
  description: After you run assets:precompile your compiled assets will be synchronised
171
213
  with your S3 bucket.
172
214
  email:
@@ -179,6 +221,7 @@ extensions: []
179
221
  extra_rdoc_files: []
180
222
  files:
181
223
  - ".editorconfig"
224
+ - ".github/workflows/tests.yaml"
182
225
  - ".gitignore"
183
226
  - ".travis.yml"
184
227
  - Appraisals
@@ -189,10 +232,9 @@ files:
189
232
  - UPGRADING.md
190
233
  - asset_sync.gemspec
191
234
  - docs/heroku.md
192
- - gemfiles/rails_4_1.gemfile
193
- - gemfiles/rails_4_2.gemfile
194
- - gemfiles/rails_5_0.gemfile
195
- - gemfiles/rails_5_1.gemfile
235
+ - gemfiles/rails_5_2.gemfile
236
+ - gemfiles/rails_6_0.gemfile
237
+ - gemfiles/rails_6_1.gemfile
196
238
  - lib/asset_sync.rb
197
239
  - lib/asset_sync/asset_sync.rb
198
240
  - lib/asset_sync/config.rb
@@ -209,14 +251,18 @@ files:
209
251
  - spec/dummy_app/app/assets/javascripts/application.js
210
252
  - spec/fixtures/aws_with_yml/config/asset_sync.yml
211
253
  - spec/fixtures/azure_rm_with_yml/config/asset_sync.yml
254
+ - spec/fixtures/backblaze_with_yml/config/asset_sync.yml
255
+ - spec/fixtures/google_with_service_account_yml/config/asset_sync.yml
212
256
  - spec/fixtures/google_with_yml/config/asset_sync.yml
213
257
  - spec/fixtures/rackspace_with_yml/config/asset_sync.yml
214
258
  - spec/fixtures/with_invalid_yml/config/asset_sync.yml
215
259
  - spec/integration/aws_integration_spec.rb
216
260
  - spec/integration/azure_rm_integration_spec.rb
261
+ - spec/integration/backblaze_intergration_spec.rb
217
262
  - spec/spec_helper.rb
218
263
  - spec/unit/asset_sync_spec.rb
219
264
  - spec/unit/azure_rm_spec.rb
265
+ - spec/unit/backblaze_spec.rb
220
266
  - spec/unit/google_spec.rb
221
267
  - spec/unit/multi_mime_spec.rb
222
268
  - spec/unit/rackspace_spec.rb
@@ -241,8 +287,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
241
287
  - !ruby/object:Gem::Version
242
288
  version: '0'
243
289
  requirements: []
244
- rubyforge_project: asset_sync
245
- rubygems_version: 2.7.3
290
+ rubygems_version: 3.3.15
246
291
  signing_key:
247
292
  specification_version: 4
248
293
  summary: Synchronises Assets in a Rails 3 application and Amazon S3/Cloudfront and
@@ -252,14 +297,18 @@ test_files:
252
297
  - spec/dummy_app/app/assets/javascripts/application.js
253
298
  - spec/fixtures/aws_with_yml/config/asset_sync.yml
254
299
  - spec/fixtures/azure_rm_with_yml/config/asset_sync.yml
300
+ - spec/fixtures/backblaze_with_yml/config/asset_sync.yml
301
+ - spec/fixtures/google_with_service_account_yml/config/asset_sync.yml
255
302
  - spec/fixtures/google_with_yml/config/asset_sync.yml
256
303
  - spec/fixtures/rackspace_with_yml/config/asset_sync.yml
257
304
  - spec/fixtures/with_invalid_yml/config/asset_sync.yml
258
305
  - spec/integration/aws_integration_spec.rb
259
306
  - spec/integration/azure_rm_integration_spec.rb
307
+ - spec/integration/backblaze_intergration_spec.rb
260
308
  - spec/spec_helper.rb
261
309
  - spec/unit/asset_sync_spec.rb
262
310
  - spec/unit/azure_rm_spec.rb
311
+ - spec/unit/backblaze_spec.rb
263
312
  - spec/unit/google_spec.rb
264
313
  - spec/unit/multi_mime_spec.rb
265
314
  - spec/unit/rackspace_spec.rb
@@ -1,10 +0,0 @@
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", "~> 5.1.0"
9
-
10
- gemspec path: "../"