rubypitaya 2.7.0 → 2.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rubypitaya/app-template/Gemfile +1 -1
- data/lib/rubypitaya/app-template/Gemfile.lock +2 -2
- data/lib/rubypitaya/app-template/Makefile +13 -6
- data/lib/rubypitaya/app-template/Rakefile +19 -0
- data/lib/rubypitaya/app-template/app/app_initializer.rb +10 -0
- data/lib/rubypitaya/app-template/bin/console +8 -4
- data/lib/rubypitaya/app-template/docker-compose.yml +1 -0
- data/lib/rubypitaya/app-template/docker/dev/Dockerfile +1 -1
- data/lib/rubypitaya/app-template/kubernetes/deployment-rubypitaya.yaml +2 -2
- data/lib/rubypitaya/app-template/kubernetes/role-rubypitaya.yaml +1 -1
- data/lib/rubypitaya/core/handler_base.rb +2 -1
- data/lib/rubypitaya/core/handler_router.rb +2 -1
- data/lib/rubypitaya/core/http_routes.rb +1 -1
- data/lib/rubypitaya/core/initializer_base.rb +4 -0
- data/lib/rubypitaya/core/initializer_broadcast.rb +18 -0
- data/lib/rubypitaya/core/initializer_content.rb +3 -2
- data/lib/rubypitaya/core/main.rb +18 -8
- data/lib/rubypitaya/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29b7ecc7e113e398e9295133b97a79f04af607848ba185db0005027af86b70c9
|
4
|
+
data.tar.gz: 6ae5d8f4b78041e30bf8d362f443ce18a22bdc3fd1f909afb037622b9b4201b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a4209c6106cca1ecd8f88cb7dc6db0615c4bb3e1455d5b4319a986cb76c96a9359edd2f1189292724e64b2f8e4b38f5156854f2ba42476fa1fda9d4ae68c1b1
|
7
|
+
data.tar.gz: 4fee00de34828c2810b64f4af518987c48963e5a9b48dd2e25b46accd31413b852e5f41ebcd55f989c467a342212c3f9888c07114147fee98371e18772497986
|
@@ -69,7 +69,7 @@ GEM
|
|
69
69
|
rspec-support (~> 3.8.0)
|
70
70
|
rspec-support (3.8.3)
|
71
71
|
ruby2_keywords (0.0.2)
|
72
|
-
rubypitaya (2.
|
72
|
+
rubypitaya (2.8.0)
|
73
73
|
activerecord (= 6.0.2)
|
74
74
|
etcdv3 (= 0.10.2)
|
75
75
|
eventmachine (= 1.2.7)
|
@@ -106,7 +106,7 @@ DEPENDENCIES
|
|
106
106
|
listen (= 3.2.1)
|
107
107
|
pry (= 0.12.2)
|
108
108
|
rspec (= 3.8.0)
|
109
|
-
rubypitaya (= 2.
|
109
|
+
rubypitaya (= 2.8.0)
|
110
110
|
|
111
111
|
BUNDLED WITH
|
112
112
|
1.17.2
|
@@ -1,3 +1,9 @@
|
|
1
|
+
IMAGE_TAG ?= latest
|
2
|
+
IMAGE_REGISTRY ?= [put-your-registry-here]
|
3
|
+
KUBE_NAMESPACE ?= [put-your-namespace-here]
|
4
|
+
KUBE_DEPLOYMENT_SERVER ?= rubypitaya
|
5
|
+
KUBECONTEXT ?= ''
|
6
|
+
|
1
7
|
## Run ruby pitaya metagame project
|
2
8
|
run:
|
3
9
|
@docker-compose run --service-ports --rm rubypitaya bundle exec rubypitaya run
|
@@ -30,6 +36,10 @@ db-create:
|
|
30
36
|
db-migrate:
|
31
37
|
@docker-compose run --service-ports --rm rubypitaya bundle exec rake db:migrate
|
32
38
|
|
39
|
+
## Show migrations status on database
|
40
|
+
db-migrate-status:
|
41
|
+
@docker-compose run --service-ports --rm rubypitaya bundle exec rake db:status
|
42
|
+
|
33
43
|
## Rollback migrations STEP=1
|
34
44
|
db-rollback:
|
35
45
|
@docker-compose run --service-ports --rm -e STEP="$(STEP)" rubypitaya bundle exec rake db:rollback
|
@@ -48,15 +58,15 @@ generate-gemfilelock:
|
|
48
58
|
|
49
59
|
## Build image to production environment
|
50
60
|
prod-build-image:
|
51
|
-
@docker build . -f docker/prod/Dockerfile -t
|
61
|
+
@docker build . -f docker/prod/Dockerfile -t $(IMAGE_REGISTRY):$(IMAGE_TAG)
|
52
62
|
|
53
63
|
## Push prod image to gitlab
|
54
64
|
prod-push-image:
|
55
|
-
@docker push
|
65
|
+
@docker push $(IMAGE_REGISTRY):$(IMAGE_TAG)
|
56
66
|
|
57
67
|
## Deploy prod image to kubernetes cluster
|
58
68
|
prod-deploy-image:
|
59
|
-
kubectl -n $(
|
69
|
+
kubectl --context='$(KUBECONTEXT)' -n $(KUBE_NAMESPACE) set image deployment $(KUBE_DEPLOYMENT_SERVER) $(KUBE_DEPLOYMENT_SERVER)=$(IMAGE_REGISTRY):$(IMAGE_TAG)
|
60
70
|
|
61
71
|
.DEFAULT_GOAL := show-help
|
62
72
|
|
@@ -98,6 +108,3 @@ show-help:
|
|
98
108
|
} \
|
99
109
|
printf "\n"; \
|
100
110
|
}'
|
101
|
-
|
102
|
-
|
103
|
-
|
@@ -75,6 +75,25 @@ namespace :db do
|
|
75
75
|
puts 'Database deleted.'
|
76
76
|
end
|
77
77
|
|
78
|
+
desc 'migration status'
|
79
|
+
task :status do
|
80
|
+
environment_name = ENV.fetch("RUBYPITAYA_ENV") { 'development' }
|
81
|
+
database_config = RubyPitaya::DatabaseConfig.new(environment_name, RubyPitaya::Path::DATABASE_CONFIG_PATH)
|
82
|
+
connection_data = database_config.connection_data
|
83
|
+
migrations_paths = [RubyPitaya::Path::Core::MIGRATIONS_FOLDER_PATH]
|
84
|
+
migrations_paths += RubyPitaya::Path::Plugins::MIGRATIONS_FOLDER_PATHS
|
85
|
+
migrations_paths += [RubyPitaya::Path::MIGRATIONS_FOLDER_PATH]
|
86
|
+
|
87
|
+
ActiveRecord::Base.establish_connection(connection_data)
|
88
|
+
ActiveRecord::Migrator.migrations_paths = migrations_paths
|
89
|
+
ActiveRecord::Base.connection.migration_context.migrations_status.each do |status, version, name|
|
90
|
+
puts "#{status.center(8)} #{version.ljust(14)} #{name}"
|
91
|
+
end
|
92
|
+
ActiveRecord::Base.connection.close
|
93
|
+
|
94
|
+
puts 'Rollback done.'
|
95
|
+
end
|
96
|
+
|
78
97
|
desc 'Reset the database'
|
79
98
|
task :reset do
|
80
99
|
Rake::Task['db:drop'].invoke
|
@@ -27,6 +27,12 @@ module MyApp
|
|
27
27
|
# - methods:
|
28
28
|
# - [](key)
|
29
29
|
# - get config file by config path
|
30
|
+
# - log
|
31
|
+
# - class: Logger
|
32
|
+
# - link: https://ruby-doc.org/stdlib-2.6.4/libdoc/logger/rdoc/Logger.html
|
33
|
+
# - methods:
|
34
|
+
# - info
|
35
|
+
# - log information
|
30
36
|
|
31
37
|
def run(initializer_content)
|
32
38
|
bll = initializer_content.bll
|
@@ -35,5 +41,9 @@ module MyApp
|
|
35
41
|
|
36
42
|
bll.add_instance(:player, playerBll)
|
37
43
|
end
|
44
|
+
|
45
|
+
def self.path
|
46
|
+
__FILE__
|
47
|
+
end
|
38
48
|
end
|
39
49
|
end
|
@@ -18,10 +18,14 @@ Gem.find_files('rubypitaya/**/*.rb').each do |path|
|
|
18
18
|
path.include?('app-template')
|
19
19
|
end
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
app_folder_paths = RubyPitaya::Path::Plugins::APP_FOLDER_PATHS + [RubyPitaya::Path::APP_FOLDER_PATH]
|
22
|
+
app_folder_paths.each do |app_folder_path|
|
23
|
+
app_files_path = File.join(app_folder_path, '**/*.rb')
|
24
|
+
|
25
|
+
Dir[app_files_path].each do |path|
|
26
|
+
require path unless path.end_with?('spec.rb') ||
|
27
|
+
path.include?('db/migration')
|
28
|
+
end
|
25
29
|
end
|
26
30
|
|
27
31
|
require 'irb'
|
@@ -16,7 +16,7 @@ spec:
|
|
16
16
|
spec:
|
17
17
|
containers:
|
18
18
|
- name: rubypitaya
|
19
|
-
image:
|
19
|
+
image: registry.gitlab.com/lucianopc/ruby-pitaya:latest
|
20
20
|
command: ["bundle", "exec", "rubypitaya", "run"]
|
21
21
|
ports:
|
22
22
|
- containerPort: 4567
|
@@ -45,4 +45,4 @@ spec:
|
|
45
45
|
- name: DATABASE_NAME
|
46
46
|
value: "ruby_pitaya"
|
47
47
|
imagePullSecrets:
|
48
|
-
- name: gitlab-registry
|
48
|
+
- name: gitlab-registry
|
@@ -4,10 +4,11 @@ module RubyPitaya
|
|
4
4
|
|
5
5
|
class_attribute :non_authenticated_routes, default: []
|
6
6
|
|
7
|
-
attr_accessor :bll, :redis, :setup, :config, :params, :session, :postman
|
7
|
+
attr_accessor :bll, :log, :redis, :setup, :config, :params, :session, :postman
|
8
8
|
|
9
9
|
def initialize
|
10
10
|
@bll = nil
|
11
|
+
@log = nil
|
11
12
|
@redis = nil
|
12
13
|
@setup = nil
|
13
14
|
@config = nil
|
@@ -53,7 +53,7 @@ module RubyPitaya
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def call(handler_name, action_name, session, postman, redis, setup, config,
|
56
|
-
bll, params)
|
56
|
+
bll, log, params)
|
57
57
|
unless @handler_name_map.include?(handler_name)
|
58
58
|
return {
|
59
59
|
code: StatusCodes::CODE_HANDLER_NOT_FOUND,
|
@@ -71,6 +71,7 @@ module RubyPitaya
|
|
71
71
|
handler = @handler_name_map[handler_name]
|
72
72
|
|
73
73
|
handler.bll = bll
|
74
|
+
handler.log = log
|
74
75
|
handler.redis = redis
|
75
76
|
handler.setup = setup
|
76
77
|
handler.config = config
|
@@ -23,7 +23,7 @@ module RubyPitaya
|
|
23
23
|
@setup = settings.setup
|
24
24
|
@config = settings.config
|
25
25
|
|
26
|
-
if request.content_type == '
|
26
|
+
if request.content_type == 'application/json'
|
27
27
|
request_body = request.body.read
|
28
28
|
@params.merge!(JSON.parse(request_body)) if !request_body.blank?
|
29
29
|
end
|
@@ -6,7 +6,25 @@ module RubyPitaya
|
|
6
6
|
class InitializerBroadcast
|
7
7
|
|
8
8
|
def run(initializer_content)
|
9
|
+
app_classes = []
|
10
|
+
plugin_classes = []
|
11
|
+
|
9
12
|
ObjectSpace.each_object(InitializerBase.singleton_class) do |klass|
|
13
|
+
is_plugin_class = klass.path.include?('plugins')
|
14
|
+
|
15
|
+
if is_plugin_class
|
16
|
+
plugin_classes << klass
|
17
|
+
else
|
18
|
+
app_classes << klass
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
plugin_classes.each do |klass|
|
23
|
+
instance = klass.new
|
24
|
+
instance.run(initializer_content)
|
25
|
+
end
|
26
|
+
|
27
|
+
app_classes.each do |klass|
|
10
28
|
instance = klass.new
|
11
29
|
instance.run(initializer_content)
|
12
30
|
end
|
@@ -2,10 +2,11 @@ module RubyPitaya
|
|
2
2
|
|
3
3
|
class InitializerContent
|
4
4
|
|
5
|
-
attr_reader :bll, :redis, :config
|
5
|
+
attr_reader :bll, :log, :redis, :setup, :config
|
6
6
|
|
7
|
-
def initialize(bll, redis, setup, config)
|
7
|
+
def initialize(bll, log, redis, setup, config)
|
8
8
|
@bll = bll
|
9
|
+
@log = log
|
9
10
|
@redis = redis
|
10
11
|
@setup = setup
|
11
12
|
@config = config
|
data/lib/rubypitaya/core/main.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'socket'
|
2
|
+
require 'logger'
|
2
3
|
require 'securerandom'
|
3
4
|
require 'active_model'
|
4
5
|
|
@@ -8,6 +9,7 @@ require 'rubypitaya/core/config'
|
|
8
9
|
require 'rubypitaya/core/session'
|
9
10
|
require 'rubypitaya/core/postman'
|
10
11
|
require 'rubypitaya/core/parameters'
|
12
|
+
require 'rubypitaya/core/http_routes'
|
11
13
|
require 'rubypitaya/core/routes_base'
|
12
14
|
require 'rubypitaya/core/status_codes'
|
13
15
|
require 'rubypitaya/core/handler_router'
|
@@ -31,6 +33,12 @@ module RubyPitaya
|
|
31
33
|
@environment_name = ENV.fetch("RUBYPITAYA_ENV") { 'development' }
|
32
34
|
@is_development_environment = @environment_name == 'development'
|
33
35
|
|
36
|
+
@log = Logger.new('/proc/self/fd/1')
|
37
|
+
@log.level = Logger::INFO
|
38
|
+
@log.formatter = proc do |severity, datetime, progname, msg|
|
39
|
+
"#{msg}\n"
|
40
|
+
end
|
41
|
+
|
34
42
|
@application_files_importer = ApplicationFilesImporter.new
|
35
43
|
@application_files_importer.import
|
36
44
|
@application_files_importer.auto_reload if @is_development_environment
|
@@ -71,6 +79,7 @@ module RubyPitaya
|
|
71
79
|
@bll = InstanceHolder.new
|
72
80
|
|
73
81
|
@initializer_content = InitializerContent.new(@bll,
|
82
|
+
@log,
|
74
83
|
@redis_connector.redis,
|
75
84
|
@setup,
|
76
85
|
@config)
|
@@ -87,6 +96,7 @@ module RubyPitaya
|
|
87
96
|
|
88
97
|
def run_http
|
89
98
|
HttpRoutes.set :bll, @bll
|
99
|
+
HttpRoutes.set :log, @log
|
90
100
|
HttpRoutes.set :setup, @setup
|
91
101
|
HttpRoutes.set :config, @config
|
92
102
|
HttpRoutes.set :views, [Path::HTTP_VIEWS_PATH] + Path::Plugins::HTTP_VIEWS_PATHS
|
@@ -106,7 +116,7 @@ module RubyPitaya
|
|
106
116
|
Signal.trap("SIGQUIT") { throw :sig_shutdown }
|
107
117
|
Signal.trap("SIGTERM") { throw :sig_shutdown }
|
108
118
|
|
109
|
-
|
119
|
+
@log.info "Server started!"
|
110
120
|
run_nats_connection
|
111
121
|
end
|
112
122
|
|
@@ -121,7 +131,7 @@ module RubyPitaya
|
|
121
131
|
return if @is_shutting_down
|
122
132
|
@is_shutting_down = true
|
123
133
|
|
124
|
-
|
134
|
+
@log.info "Server shutting down..."
|
125
135
|
|
126
136
|
@etcd_connector.disconnect
|
127
137
|
@database_connector.disconnect
|
@@ -152,22 +162,22 @@ module RubyPitaya
|
|
152
162
|
|
153
163
|
handler_name, action_name = message_route.split('.')[1..-1]
|
154
164
|
|
155
|
-
|
156
|
-
|
165
|
+
@log.info "request -> route: #{message_route}"
|
166
|
+
@log.info " -> data: #{message_data}"
|
157
167
|
|
158
168
|
response = @handler_router.call(handler_name, action_name, @session,
|
159
169
|
@postman, @redis_connector.redis,
|
160
|
-
@setup, @config, @bll, params)
|
170
|
+
@setup, @config, @bll, @log, params)
|
161
171
|
|
162
172
|
delta_time_seconds = Time.now.to_i - start_time_seconds
|
163
173
|
|
164
|
-
|
174
|
+
@log.info "response [#{delta_time_seconds}s] -> #{response.to_json}"
|
165
175
|
|
166
176
|
response
|
167
177
|
end
|
168
178
|
rescue Exception => error
|
169
|
-
|
170
|
-
|
179
|
+
@log.info "ERROR: #{error}"
|
180
|
+
@log.info error.backtrace
|
171
181
|
run_nats_connection
|
172
182
|
end
|
173
183
|
end
|
data/lib/rubypitaya/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubypitaya
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luciano Prestes Cavalcanti
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|