souls 0.23.7 → 0.24.1
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/.gitignore +1 -1
- data/Gemfile.lock +1 -1
- data/README.md +34 -5
- data/api_v0.0.1.tar.gz +0 -0
- data/apps/api/.env.sample +7 -0
- data/apps/api/.gitignore +32 -0
- data/apps/api/.irbrc +1 -0
- data/apps/api/.rspec +3 -0
- data/apps/api/.rubocop.yml +132 -0
- data/apps/api/.ruby-version +1 -0
- data/apps/api/CODE_OF_CONDUCT.md +74 -0
- data/apps/api/Dockerfile +16 -0
- data/apps/api/Dockerfile.dev +17 -0
- data/apps/api/Gemfile +50 -0
- data/apps/api/Gemfile.lock +412 -0
- data/apps/api/LICENSE.txt +67 -0
- data/apps/api/Procfile +2 -0
- data/apps/api/Procfile.dev +2 -0
- data/apps/api/README.md +37 -0
- data/apps/api/Rakefile +5 -0
- data/apps/api/app.rb +114 -0
- data/apps/api/app/engines/notification_engine.rb +5 -0
- data/apps/api/app/graphql/mutations/.keep +0 -0
- data/apps/api/app/graphql/mutations/base/article/create_article.rb +30 -0
- data/apps/api/app/graphql/mutations/base/article/delete_article.rb +17 -0
- data/apps/api/app/graphql/mutations/base/article/destroy_delete_article.rb +17 -0
- data/apps/api/app/graphql/mutations/base/article/update_article.rb +30 -0
- data/apps/api/app/graphql/mutations/base/article_category/create_article_category.rb +21 -0
- data/apps/api/app/graphql/mutations/base/article_category/delete_article_category.rb +17 -0
- data/apps/api/app/graphql/mutations/base/article_category/destroy_delete_article_category.rb +17 -0
- data/apps/api/app/graphql/mutations/base/article_category/update_article_category.rb +21 -0
- data/apps/api/app/graphql/mutations/base/user/create_user.rb +31 -0
- data/apps/api/app/graphql/mutations/base/user/delete_user.rb +17 -0
- data/apps/api/app/graphql/mutations/base/user/destroy_delete_user.rb +17 -0
- data/apps/api/app/graphql/mutations/base/user/update_user.rb +31 -0
- data/apps/api/app/graphql/mutations/base_mutation.rb +65 -0
- data/apps/api/app/graphql/mutations/managers/user_manager/add_user_role.rb +22 -0
- data/apps/api/app/graphql/mutations/managers/user_manager/remove_user_role.rb +22 -0
- data/apps/api/app/graphql/mutations/managers/user_manager/sign_in_user.rb +45 -0
- data/apps/api/app/graphql/queries/article.rb +13 -0
- data/apps/api/app/graphql/queries/article_categories.rb +11 -0
- data/apps/api/app/graphql/queries/article_category.rb +13 -0
- data/apps/api/app/graphql/queries/articles.rb +11 -0
- data/apps/api/app/graphql/queries/base_query.rb +12 -0
- data/apps/api/app/graphql/queries/me.rb +11 -0
- data/apps/api/app/graphql/queries/user.rb +13 -0
- data/apps/api/app/graphql/queries/users.rb +11 -0
- data/apps/api/app/graphql/resolvers/article_category_search.rb +41 -0
- data/apps/api/app/graphql/resolvers/article_search.rb +57 -0
- data/apps/api/app/graphql/resolvers/base.rb +17 -0
- data/apps/api/app/graphql/resolvers/user_search.rb +63 -0
- data/apps/api/app/graphql/souls_api_schema.rb +43 -0
- data/apps/api/app/graphql/types/.keep +0 -0
- data/apps/api/app/graphql/types/article_category_type.rb +12 -0
- data/apps/api/app/graphql/types/article_type.rb +30 -0
- data/apps/api/app/graphql/types/base/base_argument.rb +4 -0
- data/apps/api/app/graphql/types/base/base_enum.rb +4 -0
- data/apps/api/app/graphql/types/base/base_field.rb +5 -0
- data/apps/api/app/graphql/types/base/base_input_object.rb +5 -0
- data/apps/api/app/graphql/types/base/base_interface.rb +7 -0
- data/apps/api/app/graphql/types/base/base_object.rb +6 -0
- data/apps/api/app/graphql/types/base/base_scalar.rb +4 -0
- data/apps/api/app/graphql/types/base/base_union.rb +4 -0
- data/apps/api/app/graphql/types/base/mutation_type.rb +26 -0
- data/apps/api/app/graphql/types/base/query_type.rb +18 -0
- data/apps/api/app/graphql/types/connections/article_category_connection.rb +3 -0
- data/apps/api/app/graphql/types/connections/article_connection.rb +3 -0
- data/apps/api/app/graphql/types/connections/base_connection.rb +14 -0
- data/apps/api/app/graphql/types/connections/user_connection.rb +3 -0
- data/apps/api/app/graphql/types/edges/article_category_edge.rb +5 -0
- data/apps/api/app/graphql/types/edges/article_edge.rb +5 -0
- data/apps/api/app/graphql/types/edges/base_edge.rb +4 -0
- data/apps/api/app/graphql/types/edges/user_edge.rb +5 -0
- data/apps/api/app/graphql/types/user_type.rb +24 -0
- data/apps/api/app/models/article.rb +4 -0
- data/apps/api/app/models/article_category.rb +3 -0
- data/apps/api/app/models/user.rb +19 -0
- data/apps/api/app/policies/application_policy.rb +40 -0
- data/apps/api/app/policies/article_category_policy.rb +31 -0
- data/apps/api/app/policies/article_policy.rb +31 -0
- data/apps/api/app/policies/user_policy.rb +35 -0
- data/apps/api/app/utils/association_loader.rb +50 -0
- data/apps/api/app/utils/fire_store.rb +9 -0
- data/apps/api/app/utils/firebase_id_token.rb +4 -0
- data/apps/api/app/utils/json_web_token.rb +13 -0
- data/apps/api/app/utils/record_loader.rb +10 -0
- data/apps/api/app/utils/souls_helper.rb +18 -0
- data/apps/api/cloudbuild.yml +32 -0
- data/apps/api/config.ru +17 -0
- data/apps/api/config/database.yml +33 -0
- data/apps/api/config/souls.rb +10 -0
- data/apps/api/constants/areas.rb +71 -0
- data/apps/api/constants/column_name_ja.rb +27 -0
- data/apps/api/db/migrate/20200006095538_create_users.rb +30 -0
- data/apps/api/db/migrate/20200712180236_create_article_categories.rb +12 -0
- data/apps/api/db/migrate/20200714215521_create_articles.rb +22 -0
- data/apps/api/db/schema.rb +78 -0
- data/apps/api/db/seeds.rb +44 -0
- data/apps/api/github/workflows/delivery.yml +81 -0
- data/apps/api/log/.keep +0 -0
- data/apps/api/spec/factories/article_categories.rb +9 -0
- data/apps/api/spec/factories/articles.rb +17 -0
- data/apps/api/spec/factories/users.rb +23 -0
- data/apps/api/spec/models/article_category_spec.rb +7 -0
- data/apps/api/spec/models/article_spec.rb +7 -0
- data/apps/api/spec/models/user_spec.rb +7 -0
- data/apps/api/spec/mutations/base/article_category_spec.rb +46 -0
- data/apps/api/spec/mutations/base/article_spec.rb +70 -0
- data/apps/api/spec/mutations/base/user_spec.rb +76 -0
- data/apps/api/spec/policies/article_category_policy_spec.rb +25 -0
- data/apps/api/spec/policies/article_policy_spec.rb +25 -0
- data/apps/api/spec/policies/user_policy_spec.rb +5 -0
- data/apps/api/spec/queries/article_category_spec.rb +39 -0
- data/apps/api/spec/queries/article_spec.rb +53 -0
- data/apps/api/spec/queries/user_spec.rb +59 -0
- data/apps/api/spec/resolvers/article_category_search_spec.rb +54 -0
- data/apps/api/spec/resolvers/article_search_spec.rb +68 -0
- data/apps/api/spec/resolvers/user_search_spec.rb +74 -0
- data/apps/api/spec/spec_helper.rb +110 -0
- data/apps/api/tmp/.keep +0 -0
- data/apps/worker/.env.sample +9 -0
- data/apps/worker/.gitignore +32 -0
- data/apps/worker/.irbrc +1 -0
- data/apps/worker/.rspec +3 -0
- data/apps/worker/.rubocop.yml +132 -0
- data/apps/worker/.ruby-version +1 -0
- data/apps/worker/CODE_OF_CONDUCT.md +74 -0
- data/apps/worker/Dockerfile +16 -0
- data/apps/worker/Dockerfile.dev +17 -0
- data/apps/worker/Gemfile +49 -0
- data/apps/worker/Gemfile.lock +396 -0
- data/apps/worker/LICENSE.txt +67 -0
- data/apps/worker/Procfile +1 -0
- data/apps/worker/Procfile.dev +1 -0
- data/apps/worker/README.md +37 -0
- data/apps/worker/Rakefile +5 -0
- data/apps/worker/app.rb +101 -0
- data/apps/worker/app/engines/notification_engine.rb +5 -0
- data/apps/worker/app/graphql/mutations/.keep +0 -0
- data/apps/worker/app/graphql/mutations/base_mutation.rb +16 -0
- data/apps/worker/app/graphql/mutations/workers/send_user_mail_job.rb +31 -0
- data/apps/worker/app/graphql/souls_api_schema.rb +43 -0
- data/apps/worker/app/graphql/types/.keep +0 -0
- data/apps/worker/app/graphql/types/base/base_argument.rb +4 -0
- data/apps/worker/app/graphql/types/base/base_enum.rb +4 -0
- data/apps/worker/app/graphql/types/base/base_field.rb +5 -0
- data/apps/worker/app/graphql/types/base/base_input_object.rb +5 -0
- data/apps/worker/app/graphql/types/base/base_interface.rb +7 -0
- data/apps/worker/app/graphql/types/base/base_object.rb +5 -0
- data/apps/worker/app/graphql/types/base/base_scalar.rb +4 -0
- data/apps/worker/app/graphql/types/base/base_union.rb +4 -0
- data/apps/worker/app/graphql/types/base/mutation_type.rb +12 -0
- data/apps/worker/app/graphql/types/base/query_type.rb +6 -0
- data/apps/worker/app/models/article.rb +4 -0
- data/apps/worker/app/models/article_category.rb +3 -0
- data/apps/worker/app/models/user.rb +19 -0
- data/apps/worker/app/utils/fire_store.rb +9 -0
- data/apps/worker/app/utils/souls_helper.rb +96 -0
- data/apps/worker/cloudbuild.yml +32 -0
- data/apps/worker/config.ru +17 -0
- data/apps/worker/config/database.yml +33 -0
- data/apps/worker/config/souls.rb +10 -0
- data/apps/worker/db/migrate/20200006095538_create_users.rb +30 -0
- data/apps/worker/db/migrate/20200712180236_create_article_categories.rb +12 -0
- data/apps/worker/db/migrate/20200714215521_create_articles.rb +22 -0
- data/apps/worker/db/schema.rb +78 -0
- data/apps/worker/db/seeds.rb +44 -0
- data/apps/worker/github/workflows/delivery.yml +81 -0
- data/apps/worker/log/.keep +0 -0
- data/apps/worker/spec/factories/article_categories.rb +9 -0
- data/apps/worker/spec/factories/articles.rb +17 -0
- data/apps/worker/spec/factories/users.rb +23 -0
- data/apps/worker/spec/models/article_category_spec.rb +7 -0
- data/apps/worker/spec/models/article_spec.rb +7 -0
- data/apps/worker/spec/models/user_spec.rb +7 -0
- data/apps/worker/spec/spec_helper.rb +110 -0
- data/apps/worker/tmp/.keep +0 -0
- data/config/souls.rb +7 -3
- data/exe/souls +18 -5
- data/lib/souls.rb +6 -21
- data/lib/souls/gcloud.rb +1 -0
- data/lib/souls/gcloud/compute.rb +62 -60
- data/lib/souls/gcloud/iam.rb +24 -22
- data/lib/souls/gcloud/pubsub.rb +21 -0
- data/lib/souls/init.rb +1 -1
- data/lib/souls/version.rb +1 -1
- data/souls_api2.tar.gz +0 -0
- metadata +178 -2
File without changes
|
@@ -0,0 +1,17 @@
|
|
1
|
+
FactoryBot.define do
|
2
|
+
factory :article do
|
3
|
+
association :user, factory: :user
|
4
|
+
title { Faker::Book.unique.title }
|
5
|
+
body { Faker::Quote.matz }
|
6
|
+
thumnail_url { Faker::Internet.url }
|
7
|
+
public_date { Time.now }
|
8
|
+
association :article_category, factory: :article_category
|
9
|
+
is_public { false }
|
10
|
+
just_created { false }
|
11
|
+
slag { Faker::Internet.password(min_length: 16) }
|
12
|
+
tags { %w[tag1 tag2 tag3] }
|
13
|
+
is_deleted { false }
|
14
|
+
created_at { Time.now }
|
15
|
+
updated_at { Time.now }
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "gimei"
|
2
|
+
FactoryBot.define do
|
3
|
+
factory :user do
|
4
|
+
uid { Faker::Internet.password }
|
5
|
+
username { Gimei.kanji }
|
6
|
+
screen_name { Faker::Internet.unique.username }
|
7
|
+
last_name { Gimei.last.hiragana }
|
8
|
+
first_name { Gimei.first.hiragana }
|
9
|
+
last_name_kanji { Gimei.last.kanji }
|
10
|
+
first_name_kanji { Gimei.first.kanji }
|
11
|
+
last_name_kana { Gimei.last.katakana }
|
12
|
+
first_name_kana { Gimei.last.katakana }
|
13
|
+
email { Faker::Internet.unique.email }
|
14
|
+
tel { Faker::PhoneNumber.subscriber_number(length: 10) }
|
15
|
+
icon_url { "https://picsum.photos/200" }
|
16
|
+
birthday { Faker::Date.birthday(min_age: 18, max_age: 65) }
|
17
|
+
gender { Gimei.male }
|
18
|
+
lang { "ja" }
|
19
|
+
category { "user" }
|
20
|
+
roles_mask { :normal }
|
21
|
+
is_deleted { false }
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
ENV["RACK_ENV"] = "test"
|
2
|
+
require "./app"
|
3
|
+
require "rspec"
|
4
|
+
# require "test/unit"
|
5
|
+
require "rack/test"
|
6
|
+
require "database_cleaner"
|
7
|
+
require "capybara/rspec"
|
8
|
+
require "webmock/rspec"
|
9
|
+
require "pundit/matchers"
|
10
|
+
|
11
|
+
if ENV["RACK_ENV"] == "production"
|
12
|
+
abort("The Souls environment is running in production mode!")
|
13
|
+
end
|
14
|
+
|
15
|
+
WebMock.disable_net_connect!(allow_localhost: true)
|
16
|
+
|
17
|
+
begin
|
18
|
+
ActiveRecord::Migration.maintain_test_schema!
|
19
|
+
rescue ActiveRecord::PendingMigrationError => e
|
20
|
+
puts e.to_s.strip
|
21
|
+
exit 1
|
22
|
+
end
|
23
|
+
|
24
|
+
def app
|
25
|
+
SoulsApi
|
26
|
+
end
|
27
|
+
|
28
|
+
Pundit::Matchers.configure do |config|
|
29
|
+
# config.user_alias = :user_role
|
30
|
+
end
|
31
|
+
|
32
|
+
RSpec.configure do |config|
|
33
|
+
config.order = :random
|
34
|
+
|
35
|
+
config.include Capybara::DSL
|
36
|
+
config.expect_with :rspec do |expectations|
|
37
|
+
# config.filter_run_excluding skip: true
|
38
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
39
|
+
end
|
40
|
+
|
41
|
+
# rspec-mocks config goes here. You can use an alternate test double
|
42
|
+
# library (such as bogus or mocha) by changing the `mock_with` option here.
|
43
|
+
config.mock_with :rspec do |mocks|
|
44
|
+
mocks.verify_partial_doubles = true
|
45
|
+
end
|
46
|
+
|
47
|
+
config.shared_context_metadata_behavior = :apply_to_host_groups
|
48
|
+
config.include FactoryBot::Syntax::Methods
|
49
|
+
config.include Rack::Test::Methods
|
50
|
+
|
51
|
+
config.before(:suite) do
|
52
|
+
FactoryBot.find_definitions
|
53
|
+
DatabaseCleaner.clean_with(:truncation)
|
54
|
+
end
|
55
|
+
|
56
|
+
config.before(:each) do |_example|
|
57
|
+
DatabaseCleaner.strategy = :transaction
|
58
|
+
DatabaseCleaner.start
|
59
|
+
end
|
60
|
+
|
61
|
+
config.append_after(:each) { |_example| DatabaseCleaner.clean }
|
62
|
+
config.filter_run_excluding long: true
|
63
|
+
config.filter_run_excluding uses_external_service: true
|
64
|
+
end
|
65
|
+
|
66
|
+
class ActiveRecord::Base
|
67
|
+
mattr_accessor :shared_connection
|
68
|
+
@@shared_connection = nil
|
69
|
+
|
70
|
+
def self.connection
|
71
|
+
@@shared_connection || retrieve_connection
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
|
76
|
+
def get_global_key class_name, id
|
77
|
+
Base64.strict_encode64("#{class_name}:#{id}")
|
78
|
+
end
|
79
|
+
|
80
|
+
class ActiveSupport::TestCase
|
81
|
+
setup :begin_gc_deferment
|
82
|
+
teardown :reconsider_gc_deferment
|
83
|
+
teardown :scrub_instance_variables
|
84
|
+
|
85
|
+
@@reserved_ivars = %w[@_implementation @_result @_proxy @_assigns_hash_proxy @_backtrace]
|
86
|
+
DEFERRED_GC_THRESHOLD = (ENV["DEFER_GC"] || 1.0).to_f
|
87
|
+
|
88
|
+
@@last_gc_run = Time.now
|
89
|
+
|
90
|
+
def begin_gc_deferment
|
91
|
+
GC.disable if DEFERRED_GC_THRESHOLD > 0
|
92
|
+
end
|
93
|
+
|
94
|
+
def reconsider_gc_deferment
|
95
|
+
if DEFERRED_GC_THRESHOLD > 0 && Time.now - @@last_gc_run >= DEFERRED_GC_THRESHOLD
|
96
|
+
|
97
|
+
GC.enable
|
98
|
+
GC.start
|
99
|
+
GC.disable
|
100
|
+
|
101
|
+
@@last_gc_run = Time.now
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def scrub_instance_variables
|
106
|
+
(instance_variables - @@reserved_ivars).each do |ivar|
|
107
|
+
instance_variable_set(ivar, nil)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
File without changes
|
data/config/souls.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
Souls.configure do |config|
|
2
|
-
config.app = "souls-
|
3
|
-
config.project_id = "souls-
|
4
|
-
config.strain = "
|
2
|
+
config.app = "souls-api"
|
3
|
+
config.project_id = "souls-api"
|
4
|
+
config.strain = "worker"
|
5
|
+
config.api_repo = "elsoul/souls_api"
|
6
|
+
config.worker_repo = "elsoul/souls_worker"
|
7
|
+
config.worker_endpoint = "https://worker.com"
|
8
|
+
config.fixed_gems = []
|
5
9
|
end
|
data/exe/souls
CHANGED
@@ -17,7 +17,7 @@ begin
|
|
17
17
|
exit
|
18
18
|
end
|
19
19
|
first_message = Paint % [
|
20
|
-
"Select Strain: %{red_text} %{yellow_text} %{green_text} %{blue_text} %{cyan_text} %{
|
20
|
+
"Select Strain: %{red_text} %{yellow_text} %{green_text} %{blue_text} %{cyan_text} %{magenta_text}",
|
21
21
|
:white,
|
22
22
|
{
|
23
23
|
red_text: ["\n1. SOULs GraphQL API", :red],
|
@@ -25,7 +25,7 @@ begin
|
|
25
25
|
green_text: ["\n3. SOULs Console Web", :green],
|
26
26
|
blue_text: ["\n4. SOULs Admin Web", :blue],
|
27
27
|
cyan_text: ["\n5. SOULs Media Web", :cyan],
|
28
|
-
|
28
|
+
magenta_text: ["\n6. SOULs Doc Web", :magenta]
|
29
29
|
}
|
30
30
|
]
|
31
31
|
puts(first_message)
|
@@ -42,8 +42,6 @@ begin
|
|
42
42
|
case strain
|
43
43
|
when "media", "admin", "console", "doc"
|
44
44
|
system("yarn dev")
|
45
|
-
when "worker"
|
46
|
-
system("bundle exec puma -p 3000 -e development")
|
47
45
|
else
|
48
46
|
system("foreman start -f Procfile.dev")
|
49
47
|
end
|
@@ -69,7 +67,22 @@ begin
|
|
69
67
|
Whirly.start(spinner: "clock", interval: 420, stop: "🎉") do
|
70
68
|
Whirly.status = status
|
71
69
|
send_method = ARGV[1]
|
72
|
-
|
70
|
+
|
71
|
+
case send_method
|
72
|
+
when "create_pubsub_topic"
|
73
|
+
topic_name = ARGV[2]
|
74
|
+
args = { topic_name: topic_name }
|
75
|
+
Souls::Gcloud.public_send(send_method, args)
|
76
|
+
when "create_pubsub_subscription"
|
77
|
+
project_id = Souls.configuration.project_id
|
78
|
+
topic_name = ARGV[2]
|
79
|
+
service_account = "#{Souls.configuration.app}@#{project_id}iam.gserviceaccount.com"
|
80
|
+
endpoint = Souls.configuration.endpoint
|
81
|
+
args = { project_id: project_id, topic_name: topic_name, service_account: service_account, endpoint: endpoint }
|
82
|
+
Souls::Gcloud.public_send(send_method, args)
|
83
|
+
else
|
84
|
+
Souls::Gcloud.public_send(send_method)
|
85
|
+
end
|
73
86
|
Whirly.status = "Done!"
|
74
87
|
end
|
75
88
|
when "-v", "--version"
|
data/lib/souls.rb
CHANGED
@@ -64,24 +64,6 @@ module Souls
|
|
64
64
|
)
|
65
65
|
end
|
66
66
|
|
67
|
-
def self.show_wait_spinner(fps = 10)
|
68
|
-
chars = %w[| / - \\]
|
69
|
-
delay = 1.0 / fps
|
70
|
-
iter = 0
|
71
|
-
spinner =
|
72
|
-
Thread.new do
|
73
|
-
while iter
|
74
|
-
print(chars[(iter += 1) % chars.length])
|
75
|
-
sleep(delay)
|
76
|
-
print("\b")
|
77
|
-
end
|
78
|
-
end
|
79
|
-
yield.tap do
|
80
|
-
iter = false
|
81
|
-
spinner.join
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
67
|
def self.gemfile_latest_version
|
86
68
|
file_path = "./Gemfile"
|
87
69
|
updated_gems = []
|
@@ -97,6 +79,7 @@ module Souls
|
|
97
79
|
url = URI("https://rubygems.org/api/v1/versions/#{gem[0]}/latest.json")
|
98
80
|
res = Net::HTTP.get_response(url)
|
99
81
|
data = JSON.parse(res.body)
|
82
|
+
next if Souls.configuration.fixed_gems.include?(gem[0].to_s)
|
100
83
|
next if data["version"].to_s == gem[1].to_s
|
101
84
|
|
102
85
|
updated_lines << if from_dev
|
@@ -185,14 +168,16 @@ module Souls
|
|
185
168
|
end
|
186
169
|
|
187
170
|
class Configuration
|
188
|
-
attr_accessor :app, :strain, :project_id, :
|
171
|
+
attr_accessor :app, :strain, :project_id, :worker_repo, :api_repo, :worker_endpoint, :fixed_gems
|
189
172
|
|
190
173
|
def initialize
|
191
174
|
@app = nil
|
192
175
|
@project_id = nil
|
193
176
|
@strain = nil
|
194
|
-
@
|
195
|
-
@
|
177
|
+
@worker_repo = nil
|
178
|
+
@api_repo = nil
|
179
|
+
@worker_endpoint = nil
|
180
|
+
@fixed_gems = nil
|
196
181
|
end
|
197
182
|
end
|
198
183
|
end
|
data/lib/souls/gcloud.rb
CHANGED
data/lib/souls/gcloud/compute.rb
CHANGED
@@ -1,71 +1,73 @@
|
|
1
1
|
module Souls
|
2
2
|
module Gcloud
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
class << self
|
4
|
+
def auth_login
|
5
|
+
project_id = Souls.configuration.project_id
|
6
|
+
system("gcloud config set project #{project_id}")
|
7
|
+
system("gcloud auth login")
|
8
|
+
end
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
10
|
+
def enable_permissions
|
11
|
+
system("gcloud services enable compute.googleapis.com")
|
12
|
+
puts("Operating permission to compute.googleapis.com ...")
|
13
|
+
system("gcloud services enable iam.googleapis.com")
|
14
|
+
puts("Operating permission to iam.googleapis.com ...")
|
15
|
+
system("gcloud services enable dns.googleapis.com")
|
16
|
+
puts("Operating permission to dns.googleapis.com ...")
|
17
|
+
system("gcloud services enable sqladmin.googleapis.com")
|
18
|
+
puts("Operating permission to sqladmin.googleapis.com ...")
|
19
|
+
system("gcloud services enable sql-component.googleapis.com")
|
20
|
+
puts("Operating permission to sql-component.googleapis.com ...")
|
21
|
+
system("gcloud services enable servicenetworking.googleapis.com")
|
22
|
+
puts("Operating permission to servicenetworking.googleapis.com ...")
|
23
|
+
system("gcloud services enable containerregistry.googleapis.com")
|
24
|
+
puts("Operating permission to containerregistry.googleapis.com")
|
25
|
+
system("gcloud services enable run.googleapis.com")
|
26
|
+
puts("Operating permission to run.googleapis.com")
|
27
|
+
end
|
27
28
|
|
28
|
-
|
29
|
-
|
29
|
+
def create_network
|
30
|
+
return "Error: Please Set Souls.configuration" if Souls.configuration.app.nil?
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
network = Souls.configuration.app
|
33
|
+
system("gcloud compute networks create #{network}")
|
34
|
+
rescue StandardError => e
|
35
|
+
raise(StandardError, e)
|
36
|
+
end
|
36
37
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
38
|
+
def create_firewall(ip_range: "10.140.0.0/20")
|
39
|
+
network = Souls.configuration.app
|
40
|
+
system(
|
41
|
+
"gcloud compute firewall-rules create #{network}
|
42
|
+
--network #{network}
|
43
|
+
--allow tcp,udp,icmp
|
44
|
+
--source-ranges #{ip_range}"
|
45
|
+
)
|
46
|
+
system("gcloud compute firewall-rules create #{network}-ssh --network #{network} --allow tcp:22,tcp:3389,icmp")
|
47
|
+
end
|
47
48
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
49
|
+
def create_private_access
|
50
|
+
network = Souls.configuration.app
|
51
|
+
project_id = Souls.configuration.project_id
|
52
|
+
system(
|
53
|
+
"gcloud compute addresses create #{network}-my-network \
|
54
|
+
--global \
|
55
|
+
--purpose=VPC_PEERING \
|
56
|
+
--prefix-length=16 \
|
57
|
+
--description='peering range for SOULs' \
|
58
|
+
--network=#{network} \
|
59
|
+
--project=#{project_id}"
|
60
|
+
)
|
61
|
+
end
|
61
62
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
63
|
+
def create_sql_instance(root_pass: "Postgre123!", zone: "asia-northeast1-b")
|
64
|
+
app = "#{Souls.configuration.app}-db"
|
65
|
+
system(
|
66
|
+
"gcloud sql instances create #{app}
|
67
|
+
--database-version=POSTGRES_13 --cpu=2 --memory=7680MB --zone=#{zone}
|
68
|
+
--root-password='#{root_pass}' --database-flags cloudsql.iam_authentication=on"
|
69
|
+
)
|
70
|
+
end
|
69
71
|
end
|
70
72
|
end
|
71
73
|
end
|