rubypitaya 3.4.2 → 3.5.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 +6 -0
- data/lib/rubypitaya/app-template/app/app_initializer.rb +13 -3
- data/lib/rubypitaya/app-template/app/handlers/error_handler.rb +18 -0
- data/lib/rubypitaya/app-template/app/handlers/player_handler.rb +0 -3
- data/lib/rubypitaya/core/handler_base.rb +4 -4
- data/lib/rubypitaya/core/handler_router.rb +3 -3
- data/lib/rubypitaya/core/http_routes.rb +1 -1
- data/lib/rubypitaya/core/initializer_content.rb +3 -3
- data/lib/rubypitaya/core/main.rb +21 -11
- data/lib/rubypitaya/core/{redis_connector.rb → redis_service.rb} +16 -3
- data/lib/rubypitaya/core/service_base.rb +21 -0
- data/lib/rubypitaya/core/service_holder.rb +32 -0
- data/lib/rubypitaya/core/spec-helpers/handler_spec_helper.rb +6 -19
- data/lib/rubypitaya/version.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bea764ce3cb4595677dc5ff2b0af555d0fa0db47500e0ae28a4431275ff0b3d0
|
4
|
+
data.tar.gz: b4d3ac9a4b66605396f1fd27fb83618e8897f5284e6fc9b97426b0ece545ef10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38152d121b929079ba9315832bfac315771bb640c7cabbd7c66fdd286662706c54f9a0412d575bc2024e3aa929aae950c679c6189969ecfe454e41d333e38fb7
|
7
|
+
data.tar.gz: c3b9b060a58f659a32fbff7baa950eade738672d426e1aaadb295df58bed56cbd5ddde2b09f1ce3a8caca47c4b1ce85e086b10598798c858fb45fdc0483604cb
|
@@ -99,7 +99,7 @@ GEM
|
|
99
99
|
rspec-support (~> 3.11.0)
|
100
100
|
rspec-support (3.11.0)
|
101
101
|
ruby2_keywords (0.0.5)
|
102
|
-
rubypitaya (3.
|
102
|
+
rubypitaya (3.5.0)
|
103
103
|
activerecord (= 7.0.2)
|
104
104
|
etcdv3 (= 0.11.5)
|
105
105
|
google-protobuf (= 3.19.4)
|
@@ -138,7 +138,7 @@ DEPENDENCIES
|
|
138
138
|
listen (= 3.7.1)
|
139
139
|
pry (= 0.14.1)
|
140
140
|
rspec (= 3.11.0)
|
141
|
-
rubypitaya (= 3.
|
141
|
+
rubypitaya (= 3.5.0)
|
142
142
|
sinatra-contrib (= 2.1.0)
|
143
143
|
|
144
144
|
BUNDLED WITH
|
@@ -99,6 +99,12 @@ prod-push-image:
|
|
99
99
|
prod-deploy-image:
|
100
100
|
kubectl --context='$(KUBECONTEXT)' -n $(KUBE_NAMESPACE) set image deployment $(KUBE_DEPLOYMENT_SERVER) $(KUBE_DEPLOYMENT_SERVER)=$(IMAGE_REGISTRY):$(IMAGE_TAG)
|
101
101
|
|
102
|
+
## + Other Commands
|
103
|
+
|
104
|
+
## Clear docker containers and volumes
|
105
|
+
clear:
|
106
|
+
@docker rm -f $$(docker ps -aq) ; docker volume rm -f $$(docker volume ls)
|
107
|
+
|
102
108
|
.DEFAULT_GOAL := show-help
|
103
109
|
|
104
110
|
.PHONY: show-help
|
@@ -1,10 +1,12 @@
|
|
1
|
+
require 'rubypitaya/core/redis_service'
|
2
|
+
|
1
3
|
class AppInitializer < RubyPitaya::InitializerBase
|
2
4
|
|
3
5
|
# method: run
|
4
6
|
# parameter: initializer_content
|
5
7
|
# attributes:
|
6
|
-
# -
|
7
|
-
# - link: https://
|
8
|
+
# - services
|
9
|
+
# - link: https://gitlab.com/LucianoPC/ruby-pitaya/-/blob/master/lib/rubypitaya/core/service_holder.rb
|
8
10
|
#
|
9
11
|
# - mongo
|
10
12
|
# - class: Mongo::Client
|
@@ -29,9 +31,17 @@ class AppInitializer < RubyPitaya::InitializerBase
|
|
29
31
|
# - info
|
30
32
|
# - log information
|
31
33
|
|
34
|
+
# services:
|
35
|
+
# - redis
|
36
|
+
# - link: https://github.com/redis/redis-rb/
|
37
|
+
|
32
38
|
def run(initializer_content)
|
33
|
-
|
39
|
+
setup = initializer_content.setup
|
40
|
+
services = initializer_content.services
|
34
41
|
|
42
|
+
services.add(:redis, RubyPitaya::RedisService.new(setup))
|
43
|
+
|
44
|
+
playerBll = PlayerBLL.new
|
35
45
|
PlayerHandler.objects.add(:bll, playerBll)
|
36
46
|
end
|
37
47
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class ErrorHandler < RubyPitaya::HandlerBase
|
2
|
+
|
3
|
+
non_authenticated_actions :getError
|
4
|
+
|
5
|
+
def getError
|
6
|
+
error_code = RubyPitaya::StatusCodes::CODE_ERROR
|
7
|
+
error_message = "Some Error"
|
8
|
+
|
9
|
+
raise RubyPitaya::RouteError.new(error_code, error_message)
|
10
|
+
|
11
|
+
response = {
|
12
|
+
code: 'RP-200',
|
13
|
+
data: {
|
14
|
+
message: 'Ok!'
|
15
|
+
}
|
16
|
+
}
|
17
|
+
end
|
18
|
+
end
|
@@ -8,9 +8,6 @@ class PlayerHandler < RubyPitaya::HandlerBase
|
|
8
8
|
# - [](key)
|
9
9
|
# - info: get object by key
|
10
10
|
#
|
11
|
-
# - @redis
|
12
|
-
# - link: https://github.com/redis/redis-rb/
|
13
|
-
#
|
14
11
|
# - @mongo
|
15
12
|
# - class: Mongo::Client
|
16
13
|
# - link: https://docs.mongodb.com/ruby-driver/current/tutorials/quick-start/
|
@@ -7,11 +7,11 @@ module RubyPitaya
|
|
7
7
|
class_attribute :non_authenticated_routes, default: []
|
8
8
|
class_attribute :handler_objects, default: nil, instance_reader: false, instance_writer: false, instance_accessor: false, instance_predicate: false
|
9
9
|
|
10
|
-
attr_reader :objects, :log, :
|
10
|
+
attr_reader :objects, :log, :services, :setup, :config, :params, :session, :postman
|
11
11
|
|
12
12
|
def initialize
|
13
13
|
@log = nil
|
14
|
-
@
|
14
|
+
@services = nil
|
15
15
|
@setup = nil
|
16
16
|
@config = nil
|
17
17
|
@params = nil
|
@@ -21,9 +21,9 @@ module RubyPitaya
|
|
21
21
|
@objects = self.class.objects
|
22
22
|
end
|
23
23
|
|
24
|
-
def set_attributes(log,
|
24
|
+
def set_attributes(log, services, mongo, setup, config, params, session, postman)
|
25
25
|
@log = log
|
26
|
-
@
|
26
|
+
@services = services
|
27
27
|
@mongo = mongo
|
28
28
|
@setup = setup
|
29
29
|
@config = config
|
@@ -64,7 +64,7 @@ module RubyPitaya
|
|
64
64
|
@handler_name_map = @handler_name_map.to_h
|
65
65
|
end
|
66
66
|
|
67
|
-
def call(handler_name, action_name, session, postman,
|
67
|
+
def call(handler_name, action_name, session, postman, services, mongo, setup,
|
68
68
|
config, log, params)
|
69
69
|
unless @handler_name_map.include?(handler_name)
|
70
70
|
return {
|
@@ -83,11 +83,11 @@ module RubyPitaya
|
|
83
83
|
handler = @handler_name_map[handler_name]
|
84
84
|
|
85
85
|
if !handler.class.authenticated_action_name?(action_name)
|
86
|
-
handler.set_attributes(log,
|
86
|
+
handler.set_attributes(log, services, mongo, setup, config, params, session, postman)
|
87
87
|
handler.send(action_name)
|
88
88
|
else
|
89
89
|
if session.authenticated?
|
90
|
-
handler.set_attributes(log,
|
90
|
+
handler.set_attributes(log, services, mongo, setup, config, params, session, postman)
|
91
91
|
handler.send(action_name)
|
92
92
|
else
|
93
93
|
return {
|
@@ -2,12 +2,12 @@ module RubyPitaya
|
|
2
2
|
|
3
3
|
class InitializerContent
|
4
4
|
|
5
|
-
attr_reader :log, :
|
5
|
+
attr_reader :log, :services, :mongo, :setup, :config
|
6
6
|
|
7
|
-
def initialize(log,
|
7
|
+
def initialize(log, services, mongo, setup, config)
|
8
8
|
@log = log
|
9
|
+
@services = services
|
9
10
|
@mongo = mongo
|
10
|
-
@redis = redis
|
11
11
|
@setup = setup
|
12
12
|
@config = config
|
13
13
|
end
|
data/lib/rubypitaya/core/main.rb
CHANGED
@@ -13,13 +13,13 @@ require 'rubypitaya/core/http_routes'
|
|
13
13
|
require 'rubypitaya/core/route_error'
|
14
14
|
require 'rubypitaya/core/routes_base'
|
15
15
|
require 'rubypitaya/core/status_codes'
|
16
|
-
require 'rubypitaya/core/handler_router'
|
17
16
|
require 'rubypitaya/core/etcd_connector'
|
17
|
+
require 'rubypitaya/core/handler_router'
|
18
18
|
require 'rubypitaya/core/nats_connector'
|
19
|
+
require 'rubypitaya/core/service_holder'
|
19
20
|
require 'rubypitaya/core/database_config'
|
20
21
|
require 'rubypitaya/core/instance_holder'
|
21
22
|
require 'rubypitaya/core/mongo_connector'
|
22
|
-
require 'rubypitaya/core/redis_connector'
|
23
23
|
require 'rubypitaya/core/database_connector'
|
24
24
|
require 'rubypitaya/core/initializer_content'
|
25
25
|
require 'rubypitaya/core/initializer_broadcast'
|
@@ -64,10 +64,6 @@ module RubyPitaya
|
|
64
64
|
@nats_connector = NatsConnector.new(@nats_address, @service_uuid,
|
65
65
|
@server_name)
|
66
66
|
|
67
|
-
@redis_address = @setup['rubypitaya.redis.url']
|
68
|
-
@redis_connector = RedisConnector.new(@redis_address)
|
69
|
-
@redis_connector.connect
|
70
|
-
|
71
67
|
@database_config = DatabaseConfig.new
|
72
68
|
@database_connector = DatabaseConnector.new(@database_config, @log)
|
73
69
|
@database_connector.connect
|
@@ -86,10 +82,12 @@ module RubyPitaya
|
|
86
82
|
@config = Config.new
|
87
83
|
@config.auto_reload if @is_development_environment
|
88
84
|
|
85
|
+
@services = ServiceHolder.new
|
86
|
+
|
89
87
|
@objects = InstanceHolder.new
|
90
88
|
|
91
89
|
@initializer_content = InitializerContent.new(@log,
|
92
|
-
@
|
90
|
+
@services,
|
93
91
|
@mongo_connector.mongo,
|
94
92
|
@setup,
|
95
93
|
@config)
|
@@ -98,15 +96,25 @@ module RubyPitaya
|
|
98
96
|
|
99
97
|
@handler_router = HandlerRouter.new(@is_cheats_enabled)
|
100
98
|
|
99
|
+
connect_services
|
100
|
+
|
101
101
|
run_http
|
102
102
|
run_server
|
103
103
|
end
|
104
104
|
|
105
105
|
private
|
106
106
|
|
107
|
+
def connect_services
|
108
|
+
@services.all_services.map(&:connect)
|
109
|
+
end
|
110
|
+
|
111
|
+
def disconnect_services
|
112
|
+
@services.all_services.map(&:disconnect)
|
113
|
+
end
|
114
|
+
|
107
115
|
def run_http
|
108
116
|
HttpRoutes.set :log, @log
|
109
|
-
HttpRoutes.set :
|
117
|
+
HttpRoutes.set :services, @services
|
110
118
|
HttpRoutes.set :mongo, @mongo_connector.mongo
|
111
119
|
HttpRoutes.set :setup, @setup
|
112
120
|
HttpRoutes.set :config, @config
|
@@ -147,6 +155,8 @@ module RubyPitaya
|
|
147
155
|
|
148
156
|
@log.info "Server shutting down..."
|
149
157
|
|
158
|
+
disconnect_services
|
159
|
+
|
150
160
|
@etcd_connector.disconnect
|
151
161
|
@nats_connector.disconnect
|
152
162
|
@database_connector.disconnect
|
@@ -186,17 +196,17 @@ module RubyPitaya
|
|
186
196
|
|
187
197
|
begin
|
188
198
|
response = @handler_router.call(handler_name, action_name, @session,
|
189
|
-
@postman, @
|
199
|
+
@postman, @services,
|
190
200
|
@mongo_connector.mongo, @setup, @config,
|
191
201
|
@log, params)
|
192
202
|
rescue RouteError => error
|
193
|
-
@log.error "ROUTE ERROR: #{error.class} | #{error.message}
|
203
|
+
@log.error "ROUTE ERROR: #{error.class} | #{error.message} \n #{error.backtrace.join("\n")}"
|
194
204
|
response = {
|
195
205
|
code: error.code,
|
196
206
|
message: error.message
|
197
207
|
}
|
198
208
|
rescue Exception => error
|
199
|
-
@log.error "INTERNAL ERROR: #{error.class} | #{error.message}
|
209
|
+
@log.error "INTERNAL ERROR: #{error.class} | #{error.message} \n #{error.backtrace.join("\n")}"
|
200
210
|
response = {
|
201
211
|
code: StatusCodes::CODE_INTERNAL_ERROR,
|
202
212
|
message: StatusCodes::MESSAGE_INTERNAL_ERROR,
|
@@ -1,14 +1,15 @@
|
|
1
1
|
require 'redis'
|
2
|
+
require 'rubypitaya/core/service_base'
|
2
3
|
|
3
4
|
module RubyPitaya
|
4
5
|
|
5
|
-
class
|
6
|
+
class RedisService < ServiceBase
|
6
7
|
|
7
8
|
attr_reader :redis
|
8
9
|
|
9
|
-
def initialize(
|
10
|
+
def initialize(setup)
|
10
11
|
@redis = nil
|
11
|
-
@redis_address =
|
12
|
+
@redis_address = setup['rubypitaya.redis.url']
|
12
13
|
end
|
13
14
|
|
14
15
|
def connect
|
@@ -21,5 +22,17 @@ module RubyPitaya
|
|
21
22
|
|
22
23
|
@redis.ping
|
23
24
|
end
|
25
|
+
|
26
|
+
def disconnect
|
27
|
+
@redis.close
|
28
|
+
end
|
29
|
+
|
30
|
+
def client
|
31
|
+
@redis
|
32
|
+
end
|
33
|
+
|
34
|
+
def clear_all_data
|
35
|
+
@redis.flushall
|
36
|
+
end
|
24
37
|
end
|
25
38
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module RubyPitaya
|
2
|
+
|
3
|
+
class ServiceBase
|
4
|
+
|
5
|
+
def connect
|
6
|
+
raise "Service connect method not implemented"
|
7
|
+
end
|
8
|
+
|
9
|
+
def disconnect
|
10
|
+
raise "Service disconnect method not implemented"
|
11
|
+
end
|
12
|
+
|
13
|
+
# def get_service_instance
|
14
|
+
# raise "Service get_service_instance method not implemented"
|
15
|
+
# end
|
16
|
+
|
17
|
+
def clear_all_data
|
18
|
+
raise "Service disconnect method not implemented"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module RubyPitaya
|
2
|
+
|
3
|
+
class ServiceHolder
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@services = {}
|
7
|
+
end
|
8
|
+
|
9
|
+
def add(key, service)
|
10
|
+
check_service_instance(service)
|
11
|
+
@services[key] = service
|
12
|
+
end
|
13
|
+
|
14
|
+
def [](key)
|
15
|
+
@services[key].client
|
16
|
+
end
|
17
|
+
|
18
|
+
def all_services
|
19
|
+
@services.values
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def check_service_instance(service)
|
25
|
+
raise not_a_service_message(service) unless service.is_a? ServiceBase
|
26
|
+
end
|
27
|
+
|
28
|
+
def not_a_service_message(service)
|
29
|
+
"Service #{service.class} is not inheriting from RubyPitaya::ServiceBase"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'rubypitaya/core/setup'
|
2
2
|
require 'rubypitaya/core/handler_router'
|
3
|
-
require 'rubypitaya/core/
|
3
|
+
require 'rubypitaya/core/service_holder'
|
4
4
|
require 'rubypitaya/core/spec-helpers/setup_spec_helper'
|
5
5
|
require 'rubypitaya/core/spec-helpers/config_spec_helper'
|
6
6
|
require 'rubypitaya/core/spec-helpers/postman_spec_helper'
|
@@ -17,10 +17,10 @@ module RubyPitaya
|
|
17
17
|
@@config = ConfigSpecHelper.new
|
18
18
|
@@session = Session.new
|
19
19
|
@@postman = PostmanSpecHelper.new
|
20
|
+
@@services = ServiceHolder.new
|
20
21
|
|
21
22
|
@@response = {}
|
22
23
|
|
23
|
-
initialize_redis
|
24
24
|
initialize_mongo
|
25
25
|
|
26
26
|
is_cheats_enabled = @@setup.fetch('rubypitaya.server.cheats', false)
|
@@ -28,7 +28,7 @@ module RubyPitaya
|
|
28
28
|
|
29
29
|
|
30
30
|
@@initializer_content = InitializerContent.new(@@log,
|
31
|
-
@@
|
31
|
+
@@services,
|
32
32
|
@@mongo_connector.mongo,
|
33
33
|
@@setup,
|
34
34
|
@@config)
|
@@ -40,7 +40,7 @@ module RubyPitaya
|
|
40
40
|
handler_name, action_name = route.split('.')[1..-1]
|
41
41
|
|
42
42
|
@@response = @@handler_router.call(handler_name, action_name, @@session,
|
43
|
-
@@postman, @@
|
43
|
+
@@postman, @@services,
|
44
44
|
@@mongo_connector.mongo, @@setup,
|
45
45
|
@@config, @@log, params)
|
46
46
|
rescue RouteError => error
|
@@ -98,25 +98,12 @@ module RubyPitaya
|
|
98
98
|
@@postman
|
99
99
|
end
|
100
100
|
|
101
|
-
def
|
102
|
-
@@
|
101
|
+
def services
|
102
|
+
@@services
|
103
103
|
end
|
104
104
|
|
105
105
|
private
|
106
106
|
|
107
|
-
def initialize_redis
|
108
|
-
@@redis_connector ||= nil
|
109
|
-
|
110
|
-
if @@redis_connector.nil?
|
111
|
-
@@core_setup ||= Setup.new
|
112
|
-
redis_address = @@core_setup['rubypitaya.redis.url']
|
113
|
-
@@redis_connector = RedisConnector.new(redis_address)
|
114
|
-
@@redis_connector.connect
|
115
|
-
end
|
116
|
-
|
117
|
-
@@redis_connector.redis.flushall
|
118
|
-
end
|
119
|
-
|
120
107
|
def initialize_mongo
|
121
108
|
@@mongo_connector ||= nil
|
122
109
|
|
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: 3.
|
4
|
+
version: 3.5.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: 2022-
|
11
|
+
date: 2022-03-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|
@@ -268,6 +268,7 @@ files:
|
|
268
268
|
- "./lib/rubypitaya/app-template/app/bll/player_bll.rb"
|
269
269
|
- "./lib/rubypitaya/app-template/app/config/initial_player.json"
|
270
270
|
- "./lib/rubypitaya/app-template/app/constants/status_codes.rb"
|
271
|
+
- "./lib/rubypitaya/app-template/app/handlers/error_handler.rb"
|
271
272
|
- "./lib/rubypitaya/app-template/app/handlers/hello_world_handler.rb"
|
272
273
|
- "./lib/rubypitaya/app-template/app/handlers/player_handler.rb"
|
273
274
|
- "./lib/rubypitaya/app-template/app/http/hello_world_http.rb"
|
@@ -357,9 +358,11 @@ files:
|
|
357
358
|
- "./lib/rubypitaya/core/postman.rb"
|
358
359
|
- "./lib/rubypitaya/core/protos/nats_connector.proto"
|
359
360
|
- "./lib/rubypitaya/core/protos/nats_connector_pb.rb"
|
360
|
-
- "./lib/rubypitaya/core/
|
361
|
+
- "./lib/rubypitaya/core/redis_service.rb"
|
361
362
|
- "./lib/rubypitaya/core/route_error.rb"
|
362
363
|
- "./lib/rubypitaya/core/routes_base.rb"
|
364
|
+
- "./lib/rubypitaya/core/service_base.rb"
|
365
|
+
- "./lib/rubypitaya/core/service_holder.rb"
|
363
366
|
- "./lib/rubypitaya/core/session.rb"
|
364
367
|
- "./lib/rubypitaya/core/setup.rb"
|
365
368
|
- "./lib/rubypitaya/core/spec-helpers/config_spec_helper.rb"
|