prelands_rails 0.1.4 → 0.1.5
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.
- 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
|