rubypitaya 3.4.2 → 3.7.0
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/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/Rakefile +6 -5
- data/lib/rubypitaya/app-template/app/app_initializer.rb +19 -7
- data/lib/rubypitaya/app-template/app/constants/status_codes.rb +1 -0
- data/lib/rubypitaya/app-template/app/handlers/error_handler.rb +18 -0
- data/lib/rubypitaya/app-template/app/handlers/hello_world_handler.rb +13 -2
- data/lib/rubypitaya/app-template/app/handlers/player_handler.rb +10 -12
- data/lib/rubypitaya/app-template/app/setup/rubypitaya.yml +0 -1
- data/lib/rubypitaya/app-template/features/hello_world.feature +24 -0
- data/lib/rubypitaya/app-template/features/step_definitions/rubypitaya_steps.rb +11 -0
- data/lib/rubypitaya/app-template/features/support/env.rb +8 -2
- data/lib/rubypitaya/app-template/spec/player_handler_spec.rb +6 -6
- data/lib/rubypitaya/app-template/spec/redis_service_spec.rb +19 -0
- data/lib/rubypitaya/core/app/services/mongo_service.rb +35 -0
- data/lib/rubypitaya/core/app/services/redis_service.rb +36 -0
- data/lib/rubypitaya/core/database_config.rb +9 -9
- data/lib/rubypitaya/core/database_connector.rb +6 -4
- data/lib/rubypitaya/core/handler_base.rb +4 -5
- data/lib/rubypitaya/core/handler_router.rb +3 -3
- data/lib/rubypitaya/core/helpers/setup_helper.rb +2 -3
- data/lib/rubypitaya/core/http_routes.rb +1 -2
- data/lib/rubypitaya/core/initializer_content.rb +3 -4
- data/lib/rubypitaya/core/main.rb +22 -27
- data/lib/rubypitaya/core/service_base.rb +21 -0
- data/lib/rubypitaya/core/service_holder.rb +32 -0
- data/lib/rubypitaya/core/session.rb +8 -0
- data/lib/rubypitaya/core/setup.rb +4 -0
- data/lib/rubypitaya/core/spec-helpers/config_spec_helper.rb +11 -1
- data/lib/rubypitaya/core/spec-helpers/handler_spec_helper.rb +35 -40
- data/lib/rubypitaya/core/spec-helpers/rubypitaya_spec_helper.rb +9 -0
- data/lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb +22 -4
- data/lib/rubypitaya/version.rb +1 -1
- metadata +8 -4
- data/lib/rubypitaya/core/mongo_connector.rb +0 -25
- data/lib/rubypitaya/core/redis_connector.rb +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d18288d711a487bc0b84dcd073c63ed0192ca0412fb99fcbc1e0305c587df97
|
4
|
+
data.tar.gz: 1c5b6be9550df23b8d625806ae0b2a0f3a6b454e01a9ba32f27d890b5f169272
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0326e18138b4eeae46b59d4d43df908446072b95838e724dcf9fd46125c937519bdf3781e177ba97c7e7db5d3aeabbc5a25675f0602d2aeaa4a640637bc1fc2e
|
7
|
+
data.tar.gz: cfe3acbd44442ea99606bb6ba4e51b7103febecdad79551228a1bf2a2aaf5fda80b219d168fed4e8055eed6efc006aea0c0d582df6d0a15d6f7ab5e83769ee6c
|
@@ -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.7.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.7.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,6 +1,7 @@
|
|
1
1
|
require 'active_record'
|
2
2
|
|
3
3
|
require 'rubypitaya/core/path'
|
4
|
+
require 'rubypitaya/core/setup'
|
4
5
|
require 'rubypitaya/core/database_config'
|
5
6
|
|
6
7
|
|
@@ -8,7 +9,7 @@ namespace :db do
|
|
8
9
|
|
9
10
|
desc 'Create the database'
|
10
11
|
task :create do
|
11
|
-
database_config = RubyPitaya::DatabaseConfig.new
|
12
|
+
database_config = RubyPitaya::DatabaseConfig.new(RubyPitaya::Setup.new)
|
12
13
|
connection_data = database_config.connection_data_without_database
|
13
14
|
|
14
15
|
ActiveRecord::Base.establish_connection(connection_data)
|
@@ -20,7 +21,7 @@ namespace :db do
|
|
20
21
|
|
21
22
|
desc 'Migrate the database'
|
22
23
|
task :migrate do
|
23
|
-
database_config = RubyPitaya::DatabaseConfig.new
|
24
|
+
database_config = RubyPitaya::DatabaseConfig.new(RubyPitaya::Setup.new)
|
24
25
|
connection_data = database_config.connection_data
|
25
26
|
migrations_paths = [RubyPitaya::Path::Core::MIGRATIONS_FOLDER_PATH]
|
26
27
|
migrations_paths += RubyPitaya::Path::Plugins::MIGRATIONS_FOLDER_PATHS
|
@@ -36,7 +37,7 @@ namespace :db do
|
|
36
37
|
|
37
38
|
desc 'Rollback migrations'
|
38
39
|
task :rollback do
|
39
|
-
database_config = RubyPitaya::DatabaseConfig.new
|
40
|
+
database_config = RubyPitaya::DatabaseConfig.new(RubyPitaya::Setup.new)
|
40
41
|
connection_data = database_config.connection_data
|
41
42
|
migrations_paths = [RubyPitaya::Path::Core::MIGRATIONS_FOLDER_PATH]
|
42
43
|
migrations_paths += RubyPitaya::Path::Plugins::MIGRATIONS_FOLDER_PATHS
|
@@ -61,7 +62,7 @@ namespace :db do
|
|
61
62
|
|
62
63
|
desc 'Drop the database'
|
63
64
|
task :drop do
|
64
|
-
database_config = RubyPitaya::DatabaseConfig.new
|
65
|
+
database_config = RubyPitaya::DatabaseConfig.new(RubyPitaya::Setup.new)
|
65
66
|
connection_data = database_config.connection_data_without_database
|
66
67
|
|
67
68
|
ActiveRecord::Base.establish_connection(connection_data)
|
@@ -74,7 +75,7 @@ namespace :db do
|
|
74
75
|
|
75
76
|
desc 'migration status'
|
76
77
|
task :status do
|
77
|
-
database_config = RubyPitaya::DatabaseConfig.new
|
78
|
+
database_config = RubyPitaya::DatabaseConfig.new(RubyPitaya::Setup.new)
|
78
79
|
connection_data = database_config.connection_data
|
79
80
|
migrations_paths = [RubyPitaya::Path::Core::MIGRATIONS_FOLDER_PATH]
|
80
81
|
migrations_paths += RubyPitaya::Path::Plugins::MIGRATIONS_FOLDER_PATHS
|
@@ -1,14 +1,13 @@
|
|
1
|
+
require 'rubypitaya/core/app/services/mongo_service'
|
2
|
+
require 'rubypitaya/core/app/services/redis_service'
|
3
|
+
|
1
4
|
class AppInitializer < RubyPitaya::InitializerBase
|
2
5
|
|
3
6
|
# method: run
|
4
7
|
# parameter: initializer_content
|
5
8
|
# attributes:
|
6
|
-
# -
|
7
|
-
# - link: https://
|
8
|
-
#
|
9
|
-
# - mongo
|
10
|
-
# - class: Mongo::Client
|
11
|
-
# - link: https://docs.mongodb.com/ruby-driver/current/tutorials/quick-start/
|
9
|
+
# - services
|
10
|
+
# - link: https://gitlab.com/LucianoPC/ruby-pitaya/-/blob/master/lib/rubypitaya/core/service_holder.rb
|
12
11
|
#
|
13
12
|
# - config
|
14
13
|
# - class: RubyPitaya::Config
|
@@ -28,10 +27,23 @@ class AppInitializer < RubyPitaya::InitializerBase
|
|
28
27
|
# - methods:
|
29
28
|
# - info
|
30
29
|
# - log information
|
30
|
+
#
|
31
|
+
# services:
|
32
|
+
# - redis
|
33
|
+
# - link: https://github.com/redis/redis-rb/
|
34
|
+
#
|
35
|
+
# - mongo
|
36
|
+
# - class: Mongo::Client
|
37
|
+
# - link: https://docs.mongodb.com/ruby-driver/current/tutorials/quick-start/
|
31
38
|
|
32
39
|
def run(initializer_content)
|
33
|
-
|
40
|
+
setup = initializer_content.setup
|
41
|
+
services = initializer_content.services
|
34
42
|
|
43
|
+
services.add(:mongo, RubyPitaya::MongoService.new(setup))
|
44
|
+
services.add(:redis, RubyPitaya::RedisService.new(setup))
|
45
|
+
|
46
|
+
playerBll = PlayerBLL.new
|
35
47
|
PlayerHandler.objects.add(:bll, playerBll)
|
36
48
|
end
|
37
49
|
|
@@ -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: StatusCodes::CODE_OK,
|
13
|
+
data: {
|
14
|
+
message: 'Ok!'
|
15
|
+
}
|
16
|
+
}
|
17
|
+
end
|
18
|
+
end
|
@@ -1,13 +1,24 @@
|
|
1
1
|
class HelloWorldHandler < RubyPitaya::HandlerBase
|
2
2
|
|
3
|
-
non_authenticated_actions :sayHello
|
3
|
+
non_authenticated_actions :sayHello, :showMessage
|
4
4
|
|
5
5
|
def sayHello
|
6
6
|
response = {
|
7
|
-
code:
|
7
|
+
code: StatusCodes::CODE_OK,
|
8
8
|
data: {
|
9
9
|
message: 'Hello!'
|
10
10
|
}
|
11
11
|
}
|
12
12
|
end
|
13
|
+
|
14
|
+
def showMessage
|
15
|
+
message = @params[:message]
|
16
|
+
|
17
|
+
response = {
|
18
|
+
code: StatusCodes::CODE_OK,
|
19
|
+
data: {
|
20
|
+
message: message
|
21
|
+
}
|
22
|
+
}
|
23
|
+
end
|
13
24
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class PlayerHandler < RubyPitaya::HandlerBase
|
2
2
|
|
3
|
-
# class: HandlerBase
|
3
|
+
# class: RubyPitaya::HandlerBase
|
4
4
|
# attributes:
|
5
5
|
# - @objects
|
6
6
|
# - class: InstanceHolder
|
@@ -8,13 +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
|
-
# - @mongo
|
15
|
-
# - class: Mongo::Client
|
16
|
-
# - link: https://docs.mongodb.com/ruby-driver/current/tutorials/quick-start/
|
17
|
-
#
|
18
11
|
# - @config
|
19
12
|
# - info: Hash with config json files inside of 'app/config'
|
20
13
|
# - example:
|
@@ -44,6 +37,14 @@ class PlayerHandler < RubyPitaya::HandlerBase
|
|
44
37
|
# of the session, for example you can set an userId on
|
45
38
|
# @session, like `@session.uid = '123'`, and then you can
|
46
39
|
# bind this session with `@postman.bind_session(@session)`
|
40
|
+
#
|
41
|
+
# - @services:
|
42
|
+
# - redis
|
43
|
+
# - link: https://github.com/redis/redis-rb/
|
44
|
+
#
|
45
|
+
# - mongo
|
46
|
+
# - class: Mongo::Client
|
47
|
+
# - link: https://docs.mongodb.com/ruby-driver/current/tutorials/quick-start/
|
47
48
|
|
48
49
|
non_authenticated_actions :authenticate
|
49
50
|
|
@@ -58,10 +59,7 @@ class PlayerHandler < RubyPitaya::HandlerBase
|
|
58
59
|
bind_session_response = @postman.bind_session(@session)
|
59
60
|
|
60
61
|
unless bind_session_response.dig(:error, :code).nil?
|
61
|
-
|
62
|
-
code: RubyPitaya::StatusCodes::CODE_AUTHENTICATION_ERROR,
|
63
|
-
msg: 'Error to authenticate',
|
64
|
-
}
|
62
|
+
raise RubyPitaya::RouteError.new(StatusCodes::CODE_AUTHENTICATION_ERROR, 'Error to authenticate')
|
65
63
|
end
|
66
64
|
|
67
65
|
response = {
|
@@ -6,3 +6,27 @@ Feature: Hello World
|
|
6
6
|
Given client call route 'rubypitaya.helloWorldHandler.sayHello'
|
7
7
|
Then server should response 'code' as 'RP-200'
|
8
8
|
And server should response 'data.message' as 'Hello!'
|
9
|
+
|
10
|
+
Scenario: Custom message
|
11
|
+
When client call route 'rubypitaya.helloWorldHandler.showMessage' with params:
|
12
|
+
| message |
|
13
|
+
| Hello World! |
|
14
|
+
Then server should response 'code' as 'RP-200'
|
15
|
+
And server should response 'data.message' as 'Hello World!'
|
16
|
+
|
17
|
+
Scenario: Custom message with json
|
18
|
+
When client call route 'rubypitaya.helloWorldHandler.showMessage' with json params:
|
19
|
+
"""
|
20
|
+
{
|
21
|
+
"message": "Hello World!"
|
22
|
+
}
|
23
|
+
"""
|
24
|
+
Then server should response the following json:
|
25
|
+
"""
|
26
|
+
{
|
27
|
+
"code": "RP-200",
|
28
|
+
"data": {
|
29
|
+
"message": "Hello World!"
|
30
|
+
}
|
31
|
+
}
|
32
|
+
"""
|
@@ -2,6 +2,16 @@ Given(/^[Cc]lient call route ["'](.+)["']$/) do |route|
|
|
2
2
|
@handler_helper.request(route)
|
3
3
|
end
|
4
4
|
|
5
|
+
Given(/^[Cc]lient call route ["'](.+)["'] with param[s]*[:]*$/) do |route, table|
|
6
|
+
params = table.hashes.first.symbolize_keys
|
7
|
+
@handler_helper.request(route, params)
|
8
|
+
end
|
9
|
+
|
10
|
+
Given(/^[Cc]lient call route ["'](.+)["'] with json param[s]*[:]*$/) do |route, json|
|
11
|
+
params = JSON.parse(json, symbolize_names: true)
|
12
|
+
@handler_helper.request(route, params)
|
13
|
+
end
|
14
|
+
|
5
15
|
Given(/^[Ss]erver should response ["'](.+)["'] as ["'](.+)["']$/) do |response_key, expected_value|
|
6
16
|
response_value = @handler_helper.response.dig(*response_key.split('.').map(&:to_sym))
|
7
17
|
|
@@ -52,6 +62,7 @@ end
|
|
52
62
|
|
53
63
|
Before do
|
54
64
|
ActiveRecord::Base.descendants.each { |c| c.delete_all unless c == ActiveRecord::SchemaMigration }
|
65
|
+
RubyPitaya::HandlerSpecHelper.update_before_each
|
55
66
|
@handler_helper = RubyPitaya::HandlerSpecHelperClass.new('cucumber')
|
56
67
|
end
|
57
68
|
|
@@ -1,7 +1,13 @@
|
|
1
1
|
require 'rspec'
|
2
2
|
require 'cucumber/rspec/doubles'
|
3
3
|
|
4
|
+
require 'rubypitaya/core/helpers/setup_helper'
|
5
|
+
require 'rubypitaya/core/spec-helpers/handler_spec_helper_class'
|
6
|
+
|
4
7
|
ENV['RUBYPITAYA_ENV'] = 'test'
|
5
8
|
|
6
|
-
|
7
|
-
|
9
|
+
RubyPitaya::HandlerSpecHelper.initialize_before_suite
|
10
|
+
|
11
|
+
at_exit do
|
12
|
+
RubyPitaya::HandlerSpecHelper.finalize_after_suite
|
13
|
+
end
|
@@ -3,12 +3,12 @@ require 'spec_helper'
|
|
3
3
|
RSpec.describe 'PlayerHandler', type: :request do
|
4
4
|
context 'authenticate' do
|
5
5
|
it 'create_new_user' do
|
6
|
-
|
7
|
-
'
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
set_config({
|
7
|
+
'initial_player' => {
|
8
|
+
'name' => 'Guest',
|
9
|
+
'wallet' => {'gold' => 10},
|
10
|
+
}
|
11
|
+
})
|
12
12
|
|
13
13
|
params = {}
|
14
14
|
request("rubypitaya.playerHandler.authenticate", params)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe 'RubyPitaya::RedisService', type: :request do
|
4
|
+
it 'mock service' do
|
5
|
+
allow(services[:redis]).to receive(:get).with('key').and_return('something')
|
6
|
+
|
7
|
+
value = services[:redis].get('key')
|
8
|
+
|
9
|
+
expect(value).to eq('something')
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'not mock service' do
|
13
|
+
services[:redis].set('foo', 'bar')
|
14
|
+
|
15
|
+
value = services[:redis].get('foo')
|
16
|
+
|
17
|
+
expect(value).to eq('bar')
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'mongo'
|
2
|
+
require 'rubypitaya/core/service_base'
|
3
|
+
|
4
|
+
module RubyPitaya
|
5
|
+
|
6
|
+
class MongoService < ServiceBase
|
7
|
+
|
8
|
+
def initialize(setup)
|
9
|
+
@mongo = nil
|
10
|
+
@mongo_address = setup['rubypitaya.mongo.url']
|
11
|
+
@mongo_user = setup['rubypitaya.mongo.user']
|
12
|
+
@mongo_password = setup['rubypitaya.mongo.pass']
|
13
|
+
@mongo_database_name = setup['rubypitaya.mongo.database']
|
14
|
+
end
|
15
|
+
|
16
|
+
def connect
|
17
|
+
@mongo = Mongo::Client.new([@mongo_address],
|
18
|
+
user: @mongo_user,
|
19
|
+
password: @mongo_password,
|
20
|
+
database: @mongo_database_name)
|
21
|
+
end
|
22
|
+
|
23
|
+
def disconnect
|
24
|
+
# TODO: implement it
|
25
|
+
end
|
26
|
+
|
27
|
+
def client
|
28
|
+
@mongo
|
29
|
+
end
|
30
|
+
|
31
|
+
def clear_all_data
|
32
|
+
# TODO: implement it
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'redis'
|
2
|
+
require 'rubypitaya/core/service_base'
|
3
|
+
|
4
|
+
module RubyPitaya
|
5
|
+
|
6
|
+
class RedisService < ServiceBase
|
7
|
+
|
8
|
+
def initialize(setup)
|
9
|
+
@redis = nil
|
10
|
+
@redis_address = setup['rubypitaya.redis.url']
|
11
|
+
end
|
12
|
+
|
13
|
+
def connect
|
14
|
+
@redis = Redis.new(
|
15
|
+
url: @redis_address,
|
16
|
+
:reconnect_attempts => 10,
|
17
|
+
:reconnect_delay => 1.5,
|
18
|
+
:reconnect_delay_max => 2.0,
|
19
|
+
)
|
20
|
+
|
21
|
+
@redis.ping
|
22
|
+
end
|
23
|
+
|
24
|
+
def disconnect
|
25
|
+
@redis.close
|
26
|
+
end
|
27
|
+
|
28
|
+
def client
|
29
|
+
@redis
|
30
|
+
end
|
31
|
+
|
32
|
+
def clear_all_data
|
33
|
+
@redis.flushall
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -7,20 +7,20 @@ module RubyPitaya
|
|
7
7
|
|
8
8
|
class DatabaseConfig
|
9
9
|
|
10
|
-
def initialize()
|
11
|
-
@setup = Setup.new
|
12
|
-
|
10
|
+
def initialize(setup)
|
13
11
|
@config = {
|
14
12
|
'adapter' => 'postgresql',
|
15
13
|
'encoding' => 'unicode',
|
16
|
-
'pool' =>
|
17
|
-
'host' =>
|
18
|
-
'user' =>
|
19
|
-
'password' =>
|
20
|
-
'database' =>
|
14
|
+
'pool' => setup.fetch('rubypitaya.database.pool', 5),
|
15
|
+
'host' => setup['rubypitaya.database.host'],
|
16
|
+
'user' => setup['rubypitaya.database.user'],
|
17
|
+
'password' => setup['rubypitaya.database.password'],
|
18
|
+
'database' => setup['rubypitaya.database.name'],
|
21
19
|
}
|
22
20
|
|
23
|
-
|
21
|
+
environment_name = setup.fetch('rubypitaya.server.environment', 'development')
|
22
|
+
|
23
|
+
@config['database'] = "#{@config['database']}_test" if environment_name == 'test'
|
24
24
|
end
|
25
25
|
|
26
26
|
def config
|
@@ -5,14 +5,16 @@ module RubyPitaya
|
|
5
5
|
|
6
6
|
class DatabaseConnector
|
7
7
|
|
8
|
-
def initialize(
|
9
|
-
@database_config =
|
10
|
-
@logger
|
8
|
+
def initialize(setup, logger = nil)
|
9
|
+
@database_config = DatabaseConfig.new(setup)
|
10
|
+
@logger = ActiveSupport::Logger.new(STDOUT)
|
11
|
+
# TODO: Use this
|
12
|
+
# @logger = logger || ActiveSupport::Logger.new(STDOUT)
|
11
13
|
end
|
12
14
|
|
13
15
|
def connect
|
14
16
|
ActiveRecord::Base.establish_connection(@database_config.connection_data)
|
15
|
-
ActiveRecord::Base.logger =
|
17
|
+
ActiveRecord::Base.logger = @logger
|
16
18
|
ActiveSupport::LogSubscriber.colorize_logging = true
|
17
19
|
end
|
18
20
|
|
@@ -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,10 +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, setup, config, params, session, postman)
|
25
25
|
@log = log
|
26
|
-
@
|
27
|
-
@mongo = mongo
|
26
|
+
@services = services
|
28
27
|
@setup = setup
|
29
28
|
@config = config
|
30
29
|
@params = params
|
@@ -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, 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, 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, setup, config, params, session, postman)
|
91
91
|
handler.send(action_name)
|
92
92
|
else
|
93
93
|
return {
|
@@ -1,12 +1,11 @@
|
|
1
1
|
require 'active_record'
|
2
2
|
|
3
|
+
require 'rubypitaya/core/setup'
|
3
4
|
require 'rubypitaya/core/database_config'
|
4
5
|
|
5
6
|
# Database connection
|
6
|
-
database_config = RubyPitaya::DatabaseConfig.new
|
7
|
+
database_config = RubyPitaya::DatabaseConfig.new(RubyPitaya::Setup.new)
|
7
8
|
ActiveRecord::Base.establish_connection(database_config.connection_data)
|
8
|
-
# ActiveRecord::Base.logger = ActiveSupport::Logger.new(STDOUT)
|
9
|
-
# ActiveSupport::LogSubscriber.colorize_logging = true
|
10
9
|
|
11
10
|
connection_data = database_config.connection_data
|
12
11
|
migrations_paths = [RubyPitaya::Path::Core::MIGRATIONS_FOLDER_PATH]
|
@@ -24,9 +24,8 @@ module RubyPitaya
|
|
24
24
|
content_type :json
|
25
25
|
|
26
26
|
@log = settings.log
|
27
|
-
@mongo = settings.mongo
|
28
27
|
@setup = settings.setup
|
29
|
-
@
|
28
|
+
@services = settings.services
|
30
29
|
@config = settings.config
|
31
30
|
@objects = settings.objects
|
32
31
|
@session = nil
|
@@ -2,12 +2,11 @@ module RubyPitaya
|
|
2
2
|
|
3
3
|
class InitializerContent
|
4
4
|
|
5
|
-
attr_reader :log, :
|
5
|
+
attr_reader :log, :services, :setup, :config
|
6
6
|
|
7
|
-
def initialize(log,
|
7
|
+
def initialize(log, services, setup, config)
|
8
8
|
@log = log
|
9
|
-
@
|
10
|
-
@redis = redis
|
9
|
+
@services = services
|
11
10
|
@setup = setup
|
12
11
|
@config = config
|
13
12
|
end
|
data/lib/rubypitaya/core/main.rb
CHANGED
@@ -13,13 +13,11 @@ 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/
|
19
|
+
require 'rubypitaya/core/service_holder'
|
20
20
|
require 'rubypitaya/core/instance_holder'
|
21
|
-
require 'rubypitaya/core/mongo_connector'
|
22
|
-
require 'rubypitaya/core/redis_connector'
|
23
21
|
require 'rubypitaya/core/database_connector'
|
24
22
|
require 'rubypitaya/core/initializer_content'
|
25
23
|
require 'rubypitaya/core/initializer_broadcast'
|
@@ -64,33 +62,20 @@ module RubyPitaya
|
|
64
62
|
@nats_connector = NatsConnector.new(@nats_address, @service_uuid,
|
65
63
|
@server_name)
|
66
64
|
|
67
|
-
@
|
68
|
-
@redis_connector = RedisConnector.new(@redis_address)
|
69
|
-
@redis_connector.connect
|
70
|
-
|
71
|
-
@database_config = DatabaseConfig.new
|
72
|
-
@database_connector = DatabaseConnector.new(@database_config, @log)
|
65
|
+
@database_connector = DatabaseConnector.new(@setup, @log)
|
73
66
|
@database_connector.connect
|
74
67
|
|
75
|
-
@mongo_enabled = @setup['rubypitaya.mongo.enabled']
|
76
|
-
@mongo_address = @setup['rubypitaya.mongo.url']
|
77
|
-
@mongo_user = @setup['rubypitaya.mongo.user']
|
78
|
-
@mongo_password = @setup['rubypitaya.mongo.pass']
|
79
|
-
@mongo_database_name = @setup['rubypitaya.mongo.database']
|
80
|
-
@mongo_connector = MongoConnector.new(@mongo_address, @mongo_user,
|
81
|
-
@mongo_password, @mongo_database_name)
|
82
|
-
@mongo_connector.connect if @mongo_enabled
|
83
|
-
|
84
68
|
@session = Session.new
|
85
69
|
@postman = Postman.new(@nats_connector)
|
86
70
|
@config = Config.new
|
87
71
|
@config.auto_reload if @is_development_environment
|
88
72
|
|
73
|
+
@services = ServiceHolder.new
|
74
|
+
|
89
75
|
@objects = InstanceHolder.new
|
90
76
|
|
91
77
|
@initializer_content = InitializerContent.new(@log,
|
92
|
-
@
|
93
|
-
@mongo_connector.mongo,
|
78
|
+
@services,
|
94
79
|
@setup,
|
95
80
|
@config)
|
96
81
|
@initializer_broadcast = InitializerBroadcast.new
|
@@ -98,16 +83,25 @@ module RubyPitaya
|
|
98
83
|
|
99
84
|
@handler_router = HandlerRouter.new(@is_cheats_enabled)
|
100
85
|
|
86
|
+
connect_services
|
87
|
+
|
101
88
|
run_http
|
102
89
|
run_server
|
103
90
|
end
|
104
91
|
|
105
92
|
private
|
106
93
|
|
94
|
+
def connect_services
|
95
|
+
@services.all_services.map(&:connect)
|
96
|
+
end
|
97
|
+
|
98
|
+
def disconnect_services
|
99
|
+
@services.all_services.map(&:disconnect)
|
100
|
+
end
|
101
|
+
|
107
102
|
def run_http
|
108
103
|
HttpRoutes.set :log, @log
|
109
|
-
HttpRoutes.set :
|
110
|
-
HttpRoutes.set :mongo, @mongo_connector.mongo
|
104
|
+
HttpRoutes.set :services, @services
|
111
105
|
HttpRoutes.set :setup, @setup
|
112
106
|
HttpRoutes.set :config, @config
|
113
107
|
HttpRoutes.set :objects, @objects
|
@@ -147,6 +141,8 @@ module RubyPitaya
|
|
147
141
|
|
148
142
|
@log.info "Server shutting down..."
|
149
143
|
|
144
|
+
disconnect_services
|
145
|
+
|
150
146
|
@etcd_connector.disconnect
|
151
147
|
@nats_connector.disconnect
|
152
148
|
@database_connector.disconnect
|
@@ -186,17 +182,16 @@ module RubyPitaya
|
|
186
182
|
|
187
183
|
begin
|
188
184
|
response = @handler_router.call(handler_name, action_name, @session,
|
189
|
-
@postman, @
|
190
|
-
@mongo_connector.mongo, @setup, @config,
|
185
|
+
@postman, @services, @setup, @config,
|
191
186
|
@log, params)
|
192
187
|
rescue RouteError => error
|
193
|
-
@log.error "ROUTE ERROR: #{error.class} | #{error.message}
|
188
|
+
@log.error "ROUTE ERROR: #{error.code} | #{error.class} | #{error.message} \n #{error.backtrace.join("\n")}"
|
194
189
|
response = {
|
195
190
|
code: error.code,
|
196
191
|
message: error.message
|
197
192
|
}
|
198
193
|
rescue Exception => error
|
199
|
-
@log.error "INTERNAL ERROR: #{error.class} | #{error.message}
|
194
|
+
@log.error "INTERNAL ERROR: #{error.code} | #{error.class} | #{error.message} \n #{error.backtrace.join("\n")}"
|
200
195
|
response = {
|
201
196
|
code: StatusCodes::CODE_INTERNAL_ERROR,
|
202
197
|
message: StatusCodes::MESSAGE_INTERNAL_ERROR,
|
@@ -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
|
@@ -27,6 +27,10 @@ module RubyPitaya
|
|
27
27
|
@config_mock = merge_recursively(@config_mock, add_hash).deep_symbolize_keys.stringify_keys
|
28
28
|
end
|
29
29
|
|
30
|
+
def clear
|
31
|
+
@config_mock = {}
|
32
|
+
end
|
33
|
+
|
30
34
|
private
|
31
35
|
|
32
36
|
def undig(*keys, value)
|
@@ -34,7 +38,13 @@ module RubyPitaya
|
|
34
38
|
end
|
35
39
|
|
36
40
|
def merge_recursively(a, b)
|
37
|
-
a.merge(b)
|
41
|
+
a.merge(b) do |key, a_item, b_item|
|
42
|
+
if a_item.is_a?(Hash) && b_item.is_a?(Hash)
|
43
|
+
merge_recursively(a_item, b_item)
|
44
|
+
else
|
45
|
+
a[key] = b_item
|
46
|
+
end
|
47
|
+
end
|
38
48
|
end
|
39
49
|
end
|
40
50
|
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'
|
@@ -9,39 +9,52 @@ module RubyPitaya
|
|
9
9
|
|
10
10
|
module HandlerSpecHelper
|
11
11
|
|
12
|
-
def
|
13
|
-
|
12
|
+
def self.initialize_before_suite
|
13
|
+
default_setup = Setup.new.get_config
|
14
14
|
|
15
15
|
@@log = Logger.new('/dev/null')
|
16
|
-
@@setup = SetupSpecHelper.new
|
16
|
+
@@setup = SetupSpecHelper.new(default_setup)
|
17
17
|
@@config = ConfigSpecHelper.new
|
18
18
|
@@session = Session.new
|
19
19
|
@@postman = PostmanSpecHelper.new
|
20
|
+
@@services = ServiceHolder.new
|
20
21
|
|
21
|
-
@@
|
22
|
-
|
23
|
-
initialize_redis
|
24
|
-
initialize_mongo
|
22
|
+
@@default_setup = Setup.new
|
25
23
|
|
26
|
-
is_cheats_enabled = @@setup.fetch('rubypitaya.server.cheats',
|
24
|
+
is_cheats_enabled = @@setup.fetch('rubypitaya.server.cheats', true)
|
27
25
|
@@handler_router ||= HandlerRouter.new(is_cheats_enabled)
|
28
26
|
|
29
27
|
|
30
28
|
@@initializer_content = InitializerContent.new(@@log,
|
31
|
-
@@
|
32
|
-
@@mongo_connector.mongo,
|
29
|
+
@@services,
|
33
30
|
@@setup,
|
34
31
|
@@config)
|
35
32
|
@@initializer_broadcast = InitializerBroadcast.new
|
36
33
|
@@initializer_broadcast.run(@@initializer_content)
|
34
|
+
|
35
|
+
connect_services
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.finalize_after_suite
|
39
|
+
disconnect_services
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.update_before_each
|
43
|
+
@@response = {}
|
44
|
+
@@setup.clear
|
45
|
+
@@config.clear
|
46
|
+
@@session.clear
|
47
|
+
clear_all_services_data
|
48
|
+
end
|
49
|
+
|
50
|
+
def initialize(context)
|
37
51
|
end
|
38
52
|
|
39
53
|
def request(route, params = {})
|
40
54
|
handler_name, action_name = route.split('.')[1..-1]
|
41
55
|
|
42
56
|
@@response = @@handler_router.call(handler_name, action_name, @@session,
|
43
|
-
@@postman, @@
|
44
|
-
@@mongo_connector.mongo, @@setup,
|
57
|
+
@@postman, @@services, @@setup,
|
45
58
|
@@config, @@log, params)
|
46
59
|
rescue RouteError => error
|
47
60
|
@@response = {
|
@@ -98,40 +111,22 @@ module RubyPitaya
|
|
98
111
|
@@postman
|
99
112
|
end
|
100
113
|
|
101
|
-
def
|
102
|
-
@@
|
114
|
+
def services
|
115
|
+
@@services
|
103
116
|
end
|
104
117
|
|
105
118
|
private
|
106
119
|
|
107
|
-
def
|
108
|
-
@@
|
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
|
120
|
+
def self.connect_services
|
121
|
+
@@services.all_services.map(&:connect)
|
118
122
|
end
|
119
123
|
|
120
|
-
def
|
121
|
-
@@
|
122
|
-
|
123
|
-
if @@mongo_connector.nil?
|
124
|
-
@@core_setup ||= Setup.new
|
125
|
-
mongo_address = @@core_setup['rubypitaya.mongo.url']
|
126
|
-
mongo_user = @@core_setup['rubypitaya.mongo.user']
|
127
|
-
mongo_password = @@core_setup['rubypitaya.mongo.pass']
|
128
|
-
mongo_database_name = @@core_setup['rubypitaya.mongo.database']
|
129
|
-
@@mongo_connector = MongoConnector.new(mongo_address, mongo_user,
|
130
|
-
mongo_password, mongo_database_name)
|
131
|
-
@@mongo_connector.connect
|
132
|
-
end
|
124
|
+
def self.disconnect_services
|
125
|
+
@@services.all_services.map(&:disconnect)
|
126
|
+
end
|
133
127
|
|
134
|
-
|
128
|
+
def self.clear_all_services_data
|
129
|
+
@@services.all_services.map(&:clear_all_data)
|
135
130
|
end
|
136
131
|
end
|
137
132
|
end
|
@@ -8,7 +8,16 @@ require 'rubypitaya/core/spec-helpers/handler_spec_helper'
|
|
8
8
|
RSpec.configure do |config|
|
9
9
|
config.include RubyPitaya::HandlerSpecHelper
|
10
10
|
|
11
|
+
config.before(:suite) do
|
12
|
+
RubyPitaya::HandlerSpecHelper.initialize_before_suite
|
13
|
+
end
|
14
|
+
|
15
|
+
config.after(:suite) do
|
16
|
+
RubyPitaya::HandlerSpecHelper.finalize_after_suite
|
17
|
+
end
|
18
|
+
|
11
19
|
config.before(:each) do
|
20
|
+
RubyPitaya::HandlerSpecHelper.update_before_each
|
12
21
|
ActiveRecord::Base.descendants.each { |c| c.delete_all unless c == ActiveRecord::SchemaMigration }
|
13
22
|
end
|
14
23
|
|
@@ -2,13 +2,18 @@ module RubyPitaya
|
|
2
2
|
|
3
3
|
class SetupSpecHelper
|
4
4
|
|
5
|
-
def initialize
|
5
|
+
def initialize(default_setup = {})
|
6
|
+
@empty_hash = {}
|
6
7
|
@setup_mock = {}
|
8
|
+
@default_setup = default_setup
|
7
9
|
end
|
8
10
|
|
9
11
|
def [](key)
|
10
12
|
split_key = key.split('.')
|
11
|
-
@setup_mock.dig(*split_key)
|
13
|
+
result = @setup_mock.dig(*split_key)
|
14
|
+
return result unless result.nil?
|
15
|
+
|
16
|
+
@default_setup.dig(*split_key)
|
12
17
|
end
|
13
18
|
|
14
19
|
def auto_reload
|
@@ -25,7 +30,14 @@ module RubyPitaya
|
|
25
30
|
end
|
26
31
|
|
27
32
|
def fetch(*args)
|
28
|
-
|
33
|
+
result = self[args[0]]
|
34
|
+
return result unless result.nil?
|
35
|
+
|
36
|
+
@empty_hash.fetch(*args)
|
37
|
+
end
|
38
|
+
|
39
|
+
def clear
|
40
|
+
@setup_mock = {}
|
29
41
|
end
|
30
42
|
|
31
43
|
private
|
@@ -35,7 +47,13 @@ module RubyPitaya
|
|
35
47
|
end
|
36
48
|
|
37
49
|
def merge_recursively(a, b)
|
38
|
-
a.merge(b)
|
50
|
+
a.merge(b) do |key, a_item, b_item|
|
51
|
+
if a_item.is_a?(Hash) && b_item.is_a?(Hash)
|
52
|
+
merge_recursively(a_item, b_item)
|
53
|
+
else
|
54
|
+
a[key] = b_item
|
55
|
+
end
|
56
|
+
end
|
39
57
|
end
|
40
58
|
end
|
41
59
|
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: 3.
|
4
|
+
version: 3.7.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-05 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"
|
@@ -331,9 +332,12 @@ files:
|
|
331
332
|
- "./lib/rubypitaya/app-template/plugins.yaml"
|
332
333
|
- "./lib/rubypitaya/app-template/spec/hello_world_handler_spec.rb"
|
333
334
|
- "./lib/rubypitaya/app-template/spec/player_handler_spec.rb"
|
335
|
+
- "./lib/rubypitaya/app-template/spec/redis_service_spec.rb"
|
334
336
|
- "./lib/rubypitaya/app-template/spec/spec_helper.rb"
|
335
337
|
- "./lib/rubypitaya/core/app/migrations/0000000001_create_user_migration.rb"
|
336
338
|
- "./lib/rubypitaya/core/app/models/user.rb"
|
339
|
+
- "./lib/rubypitaya/core/app/services/mongo_service.rb"
|
340
|
+
- "./lib/rubypitaya/core/app/services/redis_service.rb"
|
337
341
|
- "./lib/rubypitaya/core/application_files_importer.rb"
|
338
342
|
- "./lib/rubypitaya/core/config.rb"
|
339
343
|
- "./lib/rubypitaya/core/config_core.rb"
|
@@ -350,16 +354,16 @@ files:
|
|
350
354
|
- "./lib/rubypitaya/core/initializer_content.rb"
|
351
355
|
- "./lib/rubypitaya/core/instance_holder.rb"
|
352
356
|
- "./lib/rubypitaya/core/main.rb"
|
353
|
-
- "./lib/rubypitaya/core/mongo_connector.rb"
|
354
357
|
- "./lib/rubypitaya/core/nats_connector.rb"
|
355
358
|
- "./lib/rubypitaya/core/parameters.rb"
|
356
359
|
- "./lib/rubypitaya/core/path.rb"
|
357
360
|
- "./lib/rubypitaya/core/postman.rb"
|
358
361
|
- "./lib/rubypitaya/core/protos/nats_connector.proto"
|
359
362
|
- "./lib/rubypitaya/core/protos/nats_connector_pb.rb"
|
360
|
-
- "./lib/rubypitaya/core/redis_connector.rb"
|
361
363
|
- "./lib/rubypitaya/core/route_error.rb"
|
362
364
|
- "./lib/rubypitaya/core/routes_base.rb"
|
365
|
+
- "./lib/rubypitaya/core/service_base.rb"
|
366
|
+
- "./lib/rubypitaya/core/service_holder.rb"
|
363
367
|
- "./lib/rubypitaya/core/session.rb"
|
364
368
|
- "./lib/rubypitaya/core/setup.rb"
|
365
369
|
- "./lib/rubypitaya/core/spec-helpers/config_spec_helper.rb"
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'mongo'
|
2
|
-
|
3
|
-
module RubyPitaya
|
4
|
-
|
5
|
-
class MongoConnector
|
6
|
-
|
7
|
-
def initialize(mongo_address, mongo_user, mongo_password, mongo_database_name)
|
8
|
-
@mongo_address = mongo_address
|
9
|
-
@mongo_user = mongo_user
|
10
|
-
@mongo_password = mongo_password
|
11
|
-
@mongo_database_name = mongo_database_name
|
12
|
-
end
|
13
|
-
|
14
|
-
def connect
|
15
|
-
@mongo_client = Mongo::Client.new([@mongo_address],
|
16
|
-
user: @mongo_user,
|
17
|
-
password: @mongo_password,
|
18
|
-
database: @mongo_database_name)
|
19
|
-
end
|
20
|
-
|
21
|
-
def mongo
|
22
|
-
@mongo_client
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'redis'
|
2
|
-
|
3
|
-
module RubyPitaya
|
4
|
-
|
5
|
-
class RedisConnector
|
6
|
-
|
7
|
-
attr_reader :redis
|
8
|
-
|
9
|
-
def initialize(redis_address)
|
10
|
-
@redis = nil
|
11
|
-
@redis_address = redis_address
|
12
|
-
end
|
13
|
-
|
14
|
-
def connect
|
15
|
-
@redis = Redis.new(
|
16
|
-
url: @redis_address,
|
17
|
-
:reconnect_attempts => 10,
|
18
|
-
:reconnect_delay => 1.5,
|
19
|
-
:reconnect_delay_max => 2.0,
|
20
|
-
)
|
21
|
-
|
22
|
-
@redis.ping
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|