prelands_rails 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +17 -1
- data/lib/prelands_rails/concerns/my_aws_client.rb +27 -0
- data/lib/prelands_rails/recompile_simple_source/rename_zip_file.rb +45 -0
- data/lib/prelands_rails/recompile_simple_source/update_record.rb +39 -0
- data/lib/prelands_rails/recompile_simple_source.rb +8 -1
- data/lib/prelands_rails/update_simple_source/generate_new_aws_prefix.rb +27 -0
- data/lib/prelands_rails/update_simple_source/remove_content_from_old_aws_prefix.rb +29 -0
- data/lib/prelands_rails/update_simple_source/update_record.rb +4 -2
- data/lib/prelands_rails/update_simple_source/upload/delete_compiled_files.rb +5 -4
- data/lib/prelands_rails/update_simple_source.rb +9 -3
- data/lib/prelands_rails.rb +5 -1
- data/prelands_rails.gemspec +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7215ed2505e3982375df9f4af396e1cf41f664e66a8b94d0048b4cf825cae7f4
|
4
|
+
data.tar.gz: b7537bb7fe333adea7c257964dcf2fc6a45c262e84571345217c7f28e575cee9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e58628c60bb44f6fd8ca4455b6459410daab098e2bc5e393ad8438b48adb73304897c3a41e3d58f302bc81c0bb12f3f57313969609bafe6003cc6f3f8c15714
|
7
|
+
data.tar.gz: e14305a5130d5f552f09f5f20d02db037ada4ca9e88a8c5b49780cfb36a39f30ff2346d7dc1a0e3ca778eeefe70e56ed86c33a54e41af11f96adc7cecc02a8ac
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -7,4 +7,20 @@
|
|
7
7
|
1. Bump version inside `prelands_rails.gemspec`.
|
8
8
|
2. Make commit & push to `master` branch.
|
9
9
|
3. Then checkout `tags` branch and `git rebase master` (accept theirs if there are any conflicts).
|
10
|
-
4. Then `git push` - and Gitlab CI publish the new version of the gem.
|
10
|
+
4. Then `git push` - and Gitlab CI publish the new version of the gem.
|
11
|
+
|
12
|
+
# Local developing
|
13
|
+
|
14
|
+
Execute in bash console using the actual path to the gem folder:
|
15
|
+
|
16
|
+
bundle config local.prelands_rails /home/scout/git/prelands_rails/
|
17
|
+
|
18
|
+
Expected output:
|
19
|
+
|
20
|
+
You are replacing the current global value of local.prelands_rails, which is currently "/home/scout/git/preland_rails/"
|
21
|
+
|
22
|
+
In the Gemfile of a host application specify actual gem version, branch and semi-github path:
|
23
|
+
|
24
|
+
gem 'prelands_rails', '0.1.4', github: 'prelands_rails/prelands_rails', branch: 'master'
|
25
|
+
|
26
|
+
Run `bundle`, launch puma server. Now your host application uses the local files.
|
@@ -92,6 +92,33 @@ module PrelandsRails
|
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
95
|
+
# Переместит файл в пределах +bucket_name+
|
96
|
+
# @return true если успешно переместил
|
97
|
+
def move_file(s3_old_file_name, s3_new_file_name, bucket_name)
|
98
|
+
log :move_file, ['', s3_old_file_name, ' moving to ', s3_new_file_name, ' in ', bucket_name, '.'].join('"')
|
99
|
+
|
100
|
+
obj = Aws::S3::Object.new(bucket_name, s3_old_file_name, client: @s3.client)
|
101
|
+
new_target = [bucket_name, s3_new_file_name].join('/')
|
102
|
+
|
103
|
+
begin
|
104
|
+
obj.move_to new_target
|
105
|
+
rescue Aws::S3::Errors::NoSuchKey
|
106
|
+
log :move_file, 'Aws::S3::Errors::NoSuchKey: The specified key does not exist: "%s"' % s3_old_file_name
|
107
|
+
return false
|
108
|
+
end
|
109
|
+
|
110
|
+
obj = Aws::S3::Object.new(bucket_name, s3_new_file_name, client: @s3.client)
|
111
|
+
|
112
|
+
begin
|
113
|
+
obj.acl.put({ acl: ACL_PUBLIC_READ })
|
114
|
+
rescue Aws::S3::Errors::NoSuchKey
|
115
|
+
log :move_file_acl_put, 'Aws::S3::Errors::NoSuchKey: The specified key does not exist: "%s"' % s3_old_file_name
|
116
|
+
return false
|
117
|
+
end
|
118
|
+
|
119
|
+
true
|
120
|
+
end
|
121
|
+
|
95
122
|
private
|
96
123
|
|
97
124
|
def log(method, output)
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PrelandsRails
|
4
|
+
class RecompileSimpleSource
|
5
|
+
class RenameZipFile
|
6
|
+
include ::PrelandsRails::AbstractInteractor
|
7
|
+
include ::Interactor
|
8
|
+
include ::Interactor::Contracts
|
9
|
+
|
10
|
+
expects do
|
11
|
+
required(:aws_prefix).value(type?: String)
|
12
|
+
required(:old_aws_prefix).value(type?: String)
|
13
|
+
required(:s3_credentials).schema do
|
14
|
+
required(:access_key).filled(:str?)
|
15
|
+
required(:secret_key).filled(:str?)
|
16
|
+
required(:region).filled(:str?)
|
17
|
+
end
|
18
|
+
required(:zip_bucket_name).filled(:str?)
|
19
|
+
end
|
20
|
+
|
21
|
+
assures do
|
22
|
+
required(:is_zip_moved).filled(:bool?)
|
23
|
+
end
|
24
|
+
|
25
|
+
def act
|
26
|
+
old_name = '%s/src.zip' % context.old_aws_prefix
|
27
|
+
new_name = '%s/src.zip' % context.aws_prefix
|
28
|
+
|
29
|
+
context.is_zip_moved =
|
30
|
+
client.move_file old_name, new_name, context.zip_bucket_name
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def client
|
36
|
+
return @client if defined?(@client)
|
37
|
+
|
38
|
+
creds = context.s3_credentials
|
39
|
+
@client = ::PrelandsRails::MyAwsClient.new creds[:access_key], creds[:secret_key], creds[:region]
|
40
|
+
end
|
41
|
+
|
42
|
+
on_breach { |breaches| bad_expects breaches }
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PrelandsRails
|
4
|
+
class RecompileSimpleSource
|
5
|
+
#
|
6
|
+
# обновит запись ::Preland::SimpleSource
|
7
|
+
#
|
8
|
+
class UpdateRecord
|
9
|
+
include ::PrelandsRails::AbstractInteractor
|
10
|
+
include ::Interactor
|
11
|
+
include ::Interactor::Contracts
|
12
|
+
include ::PrelandsRails::Base
|
13
|
+
|
14
|
+
expects do
|
15
|
+
required(:aws_prefix).value(type?: String)
|
16
|
+
required(:old_aws_prefix).value(type?: String)
|
17
|
+
required(:model_preland_simple_source).filled
|
18
|
+
end
|
19
|
+
|
20
|
+
assures do
|
21
|
+
required(:preland_simple_source).filled
|
22
|
+
end
|
23
|
+
|
24
|
+
def act
|
25
|
+
source.aws_prefix = context.aws_prefix
|
26
|
+
source.save!
|
27
|
+
context.preland_simple_source = source
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def source
|
33
|
+
@source ||= context.model_preland_simple_source.find_by aws_prefix: context.old_aws_prefix
|
34
|
+
end
|
35
|
+
|
36
|
+
on_breach { |breaches| bad_expects breaches }
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -18,6 +18,7 @@ module PrelandsRails
|
|
18
18
|
required(:region).filled(:str?)
|
19
19
|
end
|
20
20
|
required(:bucket_names).value(type?: Array)
|
21
|
+
required(:model_preland_simple_source).filled
|
21
22
|
end
|
22
23
|
|
23
24
|
before do
|
@@ -33,6 +34,8 @@ module PrelandsRails
|
|
33
34
|
required(:incoming_locales).filled(type?: Array)
|
34
35
|
required(:files_content).value(type?: Hash)
|
35
36
|
required(:compiled_htmls).value(type?: Hash)
|
37
|
+
required(:old_aws_prefix).value(type?: String)
|
38
|
+
required(:is_zip_moved).filled(:bool?)
|
36
39
|
end
|
37
40
|
|
38
41
|
after do
|
@@ -44,7 +47,11 @@ module PrelandsRails
|
|
44
47
|
::PrelandsRails::CreateSimpleSource::DetectIncomingLocales,
|
45
48
|
::PrelandsRails::CreateSimpleSource::CheckZipFiles,
|
46
49
|
::PrelandsRails::CreateSimpleSource::Compile,
|
47
|
-
|
50
|
+
::PrelandsRails::UpdateSimpleSource::GenerateNewAwsPrefix,
|
51
|
+
Upload,
|
52
|
+
UpdateRecord, # update aws_prefix
|
53
|
+
::PrelandsRails::UpdateSimpleSource::RemoveContentFromOldAwsPrefix,
|
54
|
+
RenameZipFile
|
48
55
|
|
49
56
|
on_breach { |breaches| bad_expects breaches }
|
50
57
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PrelandsRails
|
4
|
+
class UpdateSimpleSource
|
5
|
+
|
6
|
+
class GenerateNewAwsPrefix
|
7
|
+
include ::PrelandsRails::AbstractInteractor
|
8
|
+
include ::Interactor
|
9
|
+
include ::Interactor::Contracts
|
10
|
+
|
11
|
+
expects do
|
12
|
+
required(:aws_prefix).value(type?: String)
|
13
|
+
end
|
14
|
+
|
15
|
+
assures do
|
16
|
+
required(:old_aws_prefix).value(type?: String)
|
17
|
+
end
|
18
|
+
|
19
|
+
def act
|
20
|
+
context.old_aws_prefix = context.aws_prefix
|
21
|
+
context.aws_prefix = SecureRandom.uuid[0..7]
|
22
|
+
end
|
23
|
+
|
24
|
+
on_breach { |breaches| bad_expects breaches }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PrelandsRails
|
4
|
+
class UpdateSimpleSource
|
5
|
+
|
6
|
+
class RemoveContentFromOldAwsPrefix
|
7
|
+
include ::PrelandsRails::AbstractInteractor
|
8
|
+
include ::Interactor
|
9
|
+
include ::Interactor::Contracts
|
10
|
+
include ::PrelandsRails::UpdateSimpleSource::Upload::DeleteCompiledFiles
|
11
|
+
|
12
|
+
expects do
|
13
|
+
required(:old_aws_prefix).value(type?: String)
|
14
|
+
required(:s3_credentials).schema do
|
15
|
+
required(:access_key).filled(:str?)
|
16
|
+
required(:secret_key).filled(:str?)
|
17
|
+
required(:region).filled(:str?)
|
18
|
+
end
|
19
|
+
required(:bucket_names).value(type?: Array)
|
20
|
+
end
|
21
|
+
|
22
|
+
def act
|
23
|
+
delete_compiled_files(context.old_aws_prefix)
|
24
|
+
end
|
25
|
+
|
26
|
+
on_breach { |breaches| bad_expects breaches }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -11,7 +11,8 @@ module PrelandsRails
|
|
11
11
|
|
12
12
|
expects do
|
13
13
|
required(:archive) # Входящий архив с исходниками от фрилансера. Rack::Test::UploadedFile | ActionDispatch::Http::UploadedFile
|
14
|
-
required(:aws_prefix).value(type?: String)
|
14
|
+
required(:aws_prefix).value(type?: String)
|
15
|
+
required(:old_aws_prefix).value(type?: String)
|
15
16
|
required(:preland_id).filled
|
16
17
|
required(:preland_domain_ids).value(type?: Array)
|
17
18
|
required(:incoming_locales).filled(type?: Array)
|
@@ -27,10 +28,11 @@ module PrelandsRails
|
|
27
28
|
end
|
28
29
|
|
29
30
|
def act
|
30
|
-
source = context.model_preland_simple_source.find_by aws_prefix: context.
|
31
|
+
source = context.model_preland_simple_source.find_by aws_prefix: context.old_aws_prefix
|
31
32
|
source.archive = context.archive if context.archive
|
32
33
|
source.preland_domain_ids = context.preland_domain_ids
|
33
34
|
source.locales = context.incoming_locales
|
35
|
+
source.aws_prefix = context.aws_prefix
|
34
36
|
source.save!
|
35
37
|
context.preland_simple_source = source
|
36
38
|
end
|
@@ -7,16 +7,17 @@ module PrelandsRails
|
|
7
7
|
# Удалить из +bucket_names+ файлы преленда из директории +aws_prefix+.
|
8
8
|
#
|
9
9
|
module DeleteCompiledFiles
|
10
|
-
def delete_compiled_files
|
11
|
-
|
12
|
-
|
10
|
+
def delete_compiled_files(that_aws_prefix = nil)
|
11
|
+
aws_prefix = that_aws_prefix || context.aws_prefix
|
12
|
+
creds = context.s3_credentials
|
13
|
+
client = ::PrelandsRails::MyAwsClient.new creds[:access_key], creds[:secret_key], creds[:region]
|
13
14
|
|
14
15
|
context.bucket_names.each do |bucket_name|
|
15
16
|
files = client.list_objects bucket_name
|
16
17
|
next unless files
|
17
18
|
|
18
19
|
files = files.map do |file_name|
|
19
|
-
{ key: file_name } if file_name.index(
|
20
|
+
{ key: file_name } if file_name.index(aws_prefix) == 0
|
20
21
|
end.compact
|
21
22
|
|
22
23
|
next if files.empty?
|
@@ -2,7 +2,11 @@
|
|
2
2
|
|
3
3
|
module PrelandsRails
|
4
4
|
#
|
5
|
-
# Примет zip-файл с исходниками преленда и
|
5
|
+
# Примет zip-файл с исходниками преленда и обновит исходники этого преленда.
|
6
|
+
# В результате будет обновлён `aws_prefix` -- имя директории в букете,
|
7
|
+
# что позволит избежать кэширования статического контента. . Другими словами,
|
8
|
+
# при обновлении файлов не надо ждать, пока Amazon обновит кэш или
|
9
|
+
# очищать кэш Amazon-а.
|
6
10
|
#
|
7
11
|
class UpdateSimpleSource
|
8
12
|
include ::PrelandsRails::AbstractInteractor
|
@@ -41,8 +45,10 @@ module PrelandsRails
|
|
41
45
|
CheckZipFiles,
|
42
46
|
ValidateZipContent,
|
43
47
|
Compile,
|
44
|
-
|
45
|
-
|
48
|
+
GenerateNewAwsPrefix,
|
49
|
+
Upload, # to new aws_prefix
|
50
|
+
UpdateRecord, # also update aws_prefix
|
51
|
+
RemoveContentFromOldAwsPrefix
|
46
52
|
|
47
53
|
on_breach { |breaches| bad_expects breaches }
|
48
54
|
end
|
data/lib/prelands_rails.rb
CHANGED
@@ -32,6 +32,8 @@ require 'prelands_rails/create_simple_source'
|
|
32
32
|
require 'prelands_rails/update_simple_source/upload/delete_compiled_files'
|
33
33
|
require 'prelands_rails/update_simple_source/check_zip_files'
|
34
34
|
require 'prelands_rails/update_simple_source/compile'
|
35
|
+
require 'prelands_rails/update_simple_source/generate_new_aws_prefix'
|
36
|
+
require 'prelands_rails/update_simple_source/remove_content_from_old_aws_prefix'
|
35
37
|
require 'prelands_rails/update_simple_source/update_record'
|
36
38
|
require 'prelands_rails/update_simple_source/upload'
|
37
39
|
require 'prelands_rails/update_simple_source/validate_zip_content'
|
@@ -39,8 +41,10 @@ require 'prelands_rails/update_simple_source'
|
|
39
41
|
|
40
42
|
require 'prelands_rails/validate_simple_source'
|
41
43
|
|
42
|
-
require 'prelands_rails/recompile_simple_source/upload'
|
43
44
|
require 'prelands_rails/recompile_simple_source/download_zip'
|
45
|
+
require 'prelands_rails/recompile_simple_source/rename_zip_file'
|
46
|
+
require 'prelands_rails/recompile_simple_source/update_record'
|
47
|
+
require 'prelands_rails/recompile_simple_source/upload'
|
44
48
|
require 'prelands_rails/recompile_simple_source'
|
45
49
|
|
46
50
|
module PrelandsRails
|
data/prelands_rails.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prelands_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- C80609A
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: interactor
|
@@ -314,10 +314,14 @@ files:
|
|
314
314
|
- lib/prelands_rails/create_simple_source/validate_zip_content/validate_js/js.rb
|
315
315
|
- lib/prelands_rails/recompile_simple_source.rb
|
316
316
|
- lib/prelands_rails/recompile_simple_source/download_zip.rb
|
317
|
+
- lib/prelands_rails/recompile_simple_source/rename_zip_file.rb
|
318
|
+
- lib/prelands_rails/recompile_simple_source/update_record.rb
|
317
319
|
- lib/prelands_rails/recompile_simple_source/upload.rb
|
318
320
|
- lib/prelands_rails/update_simple_source.rb
|
319
321
|
- lib/prelands_rails/update_simple_source/check_zip_files.rb
|
320
322
|
- lib/prelands_rails/update_simple_source/compile.rb
|
323
|
+
- lib/prelands_rails/update_simple_source/generate_new_aws_prefix.rb
|
324
|
+
- lib/prelands_rails/update_simple_source/remove_content_from_old_aws_prefix.rb
|
321
325
|
- lib/prelands_rails/update_simple_source/update_record.rb
|
322
326
|
- lib/prelands_rails/update_simple_source/upload.rb
|
323
327
|
- lib/prelands_rails/update_simple_source/upload/delete_compiled_files.rb
|