rubypitaya 2.6.4 → 2.7.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/lib/rubypitaya/app-template/Gemfile +1 -1
- data/lib/rubypitaya/app-template/Gemfile.lock +2 -2
- data/lib/rubypitaya/app-template/Makefile +8 -6
- data/lib/rubypitaya/app-template/app/app_initializer.rb +41 -31
- data/lib/rubypitaya/app-template/app/bll/player_bll.rb +10 -7
- data/lib/rubypitaya/app-template/app/constants/status_codes.rb +22 -19
- data/lib/rubypitaya/app-template/app/handlers/hello_world_handler.rb +1 -0
- data/lib/rubypitaya/app-template/app/handlers/player_handler.rb +69 -66
- data/lib/rubypitaya/app-template/app/models/player.rb +13 -10
- data/lib/rubypitaya/app-template/config/routes.rb +1 -1
- data/lib/rubypitaya/app-template/db/migration/{0000000002_create_player_migration.rb → 1606736477_create_player_migration.rb} +0 -0
- 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/docker/prod/Dockerfile +5 -1
- data/lib/rubypitaya/app-template/kubernetes/README.md +22 -2
- data/lib/rubypitaya/app-template/kubernetes/gameplay/deployment-nginx.yaml +130 -0
- data/lib/rubypitaya/app-template/kubernetes/gameplay/gameplay-template.yaml +29 -0
- data/lib/rubypitaya/app-template/kubernetes/gameplay/nginx.conf +13 -0
- data/lib/rubypitaya/app-template/kubernetes/gameplay/service-nginx.yaml +928 -0
- data/lib/rubypitaya/app-template/kubernetes/role-rubypitaya.yaml +31 -0
- data/lib/rubypitaya/app-template/kubernetes/rolebinding-rubypitaya.yaml +13 -0
- data/lib/rubypitaya/app-template/kubernetes/service-etcd.yaml +1 -1
- data/lib/rubypitaya/app-template/kubernetes/service-nats.yaml +1 -1
- data/lib/rubypitaya/app-template/kubernetes/service-postgres.yaml +1 -1
- data/lib/rubypitaya/app-template/kubernetes/service-redis.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_content.rb +3 -2
- data/lib/rubypitaya/core/main.rb +18 -8
- data/lib/rubypitaya/version.rb +1 -1
- metadata +9 -4
- data/lib/rubypitaya/app-template/docker/prod/Makefile +0 -67
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78c0e17a12d24e8681424de7febeb3c496362c9efb6ddba566e2cb5a94a8e076
|
4
|
+
data.tar.gz: c01c5cdc3bd4adf77d1fae5479418d1f09f693e157b1bb28bc458260841198ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e54976ad166dfef5c686cbd75cabb7c15e2dbb991aa7946b43a120213e26d1fa46b414212d9c1d18a970b17a6689ac89c38c8bedc075670d0ed4ea9a1050253
|
7
|
+
data.tar.gz: d510fcd44c66d24be9b7f07de8184f8fbff14d24308abd7955f9d156a2d056bc7417b47cf9c50da0ad9b17e307f7471949b50883b542118a029376c6f35f36f2
|
@@ -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.7.5)
|
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.7.5)
|
110
110
|
|
111
111
|
BUNDLED WITH
|
112
112
|
1.17.2
|
@@ -1,3 +1,8 @@
|
|
1
|
+
IMAGE_TAG ?= latest
|
2
|
+
IMAGE_REGISTRY ?= [put-your-registry-here]
|
3
|
+
KUBE_NAMESPACE ?= [put-your-namespace-here]
|
4
|
+
KUBE_DEPLOYMENT_SERVER ?= rubypitaya
|
5
|
+
|
1
6
|
## Run ruby pitaya metagame project
|
2
7
|
run:
|
3
8
|
@docker-compose run --service-ports --rm rubypitaya bundle exec rubypitaya run
|
@@ -48,15 +53,15 @@ generate-gemfilelock:
|
|
48
53
|
|
49
54
|
## Build image to production environment
|
50
55
|
prod-build-image:
|
51
|
-
@docker build . -f docker/prod/Dockerfile -t
|
56
|
+
@docker build . -f docker/prod/Dockerfile -t $(IMAGE_REGISTRY):$(IMAGE_TAG)
|
52
57
|
|
53
58
|
## Push prod image to gitlab
|
54
59
|
prod-push-image:
|
55
|
-
@docker push
|
60
|
+
@docker push $(IMAGE_REGISTRY):$(IMAGE_TAG)
|
56
61
|
|
57
62
|
## Deploy prod image to kubernetes cluster
|
58
63
|
prod-deploy-image:
|
59
|
-
kubectl -n $(
|
64
|
+
kubectl --context='$(KUBECONTEXT)' -n $(KUBE_NAMESPACE) set image deployment $(KUBE_DEPLOYMENT_SERVER) $(KUBE_DEPLOYMENT_SERVER)=$(IMAGE_REGISTRY):$(IMAGE_TAG)
|
60
65
|
|
61
66
|
.DEFAULT_GOAL := show-help
|
62
67
|
|
@@ -98,6 +103,3 @@ show-help:
|
|
98
103
|
} \
|
99
104
|
printf "\n"; \
|
100
105
|
}'
|
101
|
-
|
102
|
-
|
103
|
-
|
@@ -1,36 +1,46 @@
|
|
1
|
-
|
1
|
+
module MyApp
|
2
2
|
|
3
|
-
|
4
|
-
# parameter: initializer_content
|
5
|
-
# attributes:
|
6
|
-
# - bll
|
7
|
-
# - class: RubyPitaya::InstanceHolder
|
8
|
-
# - link: https://gitlab.com/LucianoPC/ruby-pitaya/-/blob/master/lib/rubypitaya/core/instance_holder.rb
|
9
|
-
# - methods:
|
10
|
-
# - add_instance(key, instance)
|
11
|
-
# - add any instance to any key
|
12
|
-
# - [](key)
|
13
|
-
# - get instance by key
|
14
|
-
# - redis
|
15
|
-
# - link: https://github.com/redis/redis-rb/
|
16
|
-
# - config
|
17
|
-
# - class: RubyPitaya::Config
|
18
|
-
# - link: https://gitlab.com/LucianoPC/ruby-pitaya/-/blob/master/lib/rubypitaya/core/config.rb
|
19
|
-
# - methods:
|
20
|
-
# - [](key)
|
21
|
-
# - get config file by config path
|
22
|
-
# - setup
|
23
|
-
# - class: RubyPitaya::Setup
|
24
|
-
# - link: https://gitlab.com/LucianoPC/ruby-pitaya/-/blob/master/lib/rubypitaya/core/setup.rb
|
25
|
-
# - methods:
|
26
|
-
# - [](key)
|
27
|
-
# - get config file by config path
|
3
|
+
class AppInitializer < RubyPitaya::InitializerBase
|
28
4
|
|
29
|
-
|
30
|
-
|
5
|
+
# method: run
|
6
|
+
# parameter: initializer_content
|
7
|
+
# attributes:
|
8
|
+
# - bll
|
9
|
+
# - class: RubyPitaya::InstanceHolder
|
10
|
+
# - link: https://gitlab.com/LucianoPC/ruby-pitaya/-/blob/master/lib/rubypitaya/core/instance_holder.rb
|
11
|
+
# - methods:
|
12
|
+
# - add_instance(key, instance)
|
13
|
+
# - add any instance to any key
|
14
|
+
# - [](key)
|
15
|
+
# - get instance by key
|
16
|
+
# - redis
|
17
|
+
# - link: https://github.com/redis/redis-rb/
|
18
|
+
# - config
|
19
|
+
# - class: RubyPitaya::Config
|
20
|
+
# - link: https://gitlab.com/LucianoPC/ruby-pitaya/-/blob/master/lib/rubypitaya/core/config.rb
|
21
|
+
# - methods:
|
22
|
+
# - [](key)
|
23
|
+
# - get config file by config path
|
24
|
+
# - setup
|
25
|
+
# - class: RubyPitaya::Setup
|
26
|
+
# - link: https://gitlab.com/LucianoPC/ruby-pitaya/-/blob/master/lib/rubypitaya/core/setup.rb
|
27
|
+
# - methods:
|
28
|
+
# - [](key)
|
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
|
31
36
|
|
32
|
-
playerBll = PlayerBLL.new
|
33
37
|
|
34
|
-
|
38
|
+
def run(initializer_content)
|
39
|
+
bll = initializer_content.bll
|
40
|
+
|
41
|
+
playerBll = PlayerBLL.new
|
42
|
+
|
43
|
+
bll.add_instance(:player, playerBll)
|
44
|
+
end
|
35
45
|
end
|
36
|
-
end
|
46
|
+
end
|
@@ -1,11 +1,14 @@
|
|
1
|
-
|
1
|
+
module MyApp
|
2
|
+
|
3
|
+
class PlayerBLL
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
|
5
|
+
def create_new_player(setup, config)
|
6
|
+
name = config['initial_player']['name']
|
7
|
+
gold = setup['initial_player.wallet.gold']
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
-
|
9
|
+
player = Player.new(name: name, gold: gold, user: User.new)
|
10
|
+
player.save
|
11
|
+
player
|
12
|
+
end
|
10
13
|
end
|
11
14
|
end
|
@@ -1,22 +1,25 @@
|
|
1
|
-
|
1
|
+
module MyApp
|
2
|
+
|
3
|
+
class StatusCodes
|
2
4
|
|
3
|
-
|
5
|
+
CODE_OK = RubyPitaya::StatusCodes::CODE_OK
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
7
|
+
################
|
8
|
+
## Existent Codes
|
9
|
+
################
|
10
|
+
## Success codes
|
11
|
+
#
|
12
|
+
# RubyPitaya::StatusCodes::CODE_OK = 'RP-200'
|
13
|
+
#
|
14
|
+
#
|
15
|
+
## Error codes
|
16
|
+
# RubyPitaya::StatusCodes::CODE_UNKNOWN = 'RP-000'
|
17
|
+
# RubyPitaya::StatusCodes::CODE_HANDLER_NOT_FOUND = 'RP-001'
|
18
|
+
# RubyPitaya::StatusCodes::CODE_ACTION_NOT_FOUND = 'RP-002'
|
19
|
+
# RubyPitaya::StatusCodes::CODE_NOT_AUTHENTICATED = 'RP-003'
|
20
|
+
# RubyPitaya::StatusCodes::CODE_AUTHENTICATION_ERROR = 'RP-004'
|
21
|
+
#
|
22
|
+
# RubyPitaya::StatusCodes::Connector::CODE_UNKNOWN = 'PIT-000'
|
23
|
+
################
|
24
|
+
end
|
22
25
|
end
|
@@ -1,79 +1,82 @@
|
|
1
|
-
|
1
|
+
module MyApp
|
2
|
+
|
3
|
+
class PlayerHandler < RubyPitaya::HandlerBase
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
5
|
+
# class: HandlerBase
|
6
|
+
# attributes:
|
7
|
+
# - @bll
|
8
|
+
# - class: InstanceHolder
|
9
|
+
# - methods:
|
10
|
+
# - [](key)
|
11
|
+
# - info: get bll by key
|
12
|
+
#
|
13
|
+
# - @redis
|
14
|
+
# - link: https://github.com/redis/redis-rb/
|
15
|
+
#
|
16
|
+
# - @config
|
17
|
+
# - info: Hash with config json files inside of 'app/config'
|
18
|
+
# - example:
|
19
|
+
# Given you have the following file "app/config/initial_player.json"
|
20
|
+
# And this json content is {'name': 'Guest'}
|
21
|
+
# And you can get the initial player name
|
22
|
+
# Then you can run the following code: @config['initial_player']['name']
|
23
|
+
#
|
24
|
+
# - @params
|
25
|
+
# - info: Special hash with the request parameters
|
26
|
+
# - link: https://api.rubyonrails.org/classes/ActionController/Parameters.html
|
27
|
+
#
|
28
|
+
# - @session
|
29
|
+
# - attributes:
|
30
|
+
# - id :: session id
|
31
|
+
# - uid :: user id
|
32
|
+
# - data :: session data
|
33
|
+
# - metadata :: session data
|
34
|
+
# - frontend_id :: connector server id
|
35
|
+
#
|
36
|
+
# - @postman
|
37
|
+
# - info: Send messages to server and clients
|
38
|
+
# - methods:
|
39
|
+
# - bind_session(session)
|
40
|
+
# - info:
|
41
|
+
# Send a session to connector, you can use to set the userId
|
42
|
+
# of the session, for example you can set an userId on
|
43
|
+
# @session, like `@session.uid = '123'`, and then you can
|
44
|
+
# bind this session with `@postman.bind_session(@session)`
|
43
45
|
|
44
|
-
|
46
|
+
non_authenticated_actions :authenticate
|
45
47
|
|
46
|
-
|
47
|
-
|
48
|
+
def authenticate
|
49
|
+
user_id = @params[:userId]
|
48
50
|
|
49
|
-
|
50
|
-
|
51
|
+
player = Player.find_by_user_id(user_id)
|
52
|
+
player = @bll[:player].create_new_player(@setup, @config) if player.nil?
|
51
53
|
|
52
|
-
|
54
|
+
@session.uid = player.user_id
|
53
55
|
|
54
|
-
|
56
|
+
bind_session_response = @postman.bind_session(@session)
|
55
57
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
58
|
+
unless bind_session_response.dig(:error, :code).nil?
|
59
|
+
return response = {
|
60
|
+
code: RubyPitaya::StatusCodes::CODE_AUTHENTICATION_ERROR,
|
61
|
+
msg: 'Error to authenticate',
|
62
|
+
}
|
63
|
+
end
|
64
|
+
|
65
|
+
response = {
|
66
|
+
code: StatusCodes::CODE_OK,
|
67
|
+
data: player.to_hash,
|
60
68
|
}
|
61
69
|
end
|
62
70
|
|
63
|
-
|
64
|
-
|
65
|
-
data: player.to_hash,
|
66
|
-
}
|
67
|
-
end
|
68
|
-
|
69
|
-
def getInfo
|
70
|
-
user_id = @session.uid
|
71
|
+
def getInfo
|
72
|
+
user_id = @session.uid
|
71
73
|
|
72
|
-
|
74
|
+
player = Player.find_by_user_id(user_id)
|
73
75
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
76
|
+
response = {
|
77
|
+
code: StatusCodes::CODE_OK,
|
78
|
+
data: player.to_hash,
|
79
|
+
}
|
80
|
+
end
|
78
81
|
end
|
79
|
-
end
|
82
|
+
end
|
@@ -1,16 +1,19 @@
|
|
1
1
|
require 'active_record'
|
2
2
|
|
3
|
-
|
3
|
+
module MyApp
|
4
4
|
|
5
|
-
|
5
|
+
class Player < ActiveRecord::Base
|
6
6
|
|
7
|
-
|
7
|
+
belongs_to :user
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
9
|
+
validates_presence_of :name, :gold, :user
|
10
|
+
|
11
|
+
def to_hash
|
12
|
+
{
|
13
|
+
name: name,
|
14
|
+
gold: gold,
|
15
|
+
userId: user_id,
|
16
|
+
}
|
17
|
+
end
|
15
18
|
end
|
16
|
-
end
|
19
|
+
end
|
File without changes
|
@@ -10,9 +10,13 @@ COPY . .
|
|
10
10
|
|
11
11
|
FROM ruby:2.6.6-slim
|
12
12
|
|
13
|
-
RUN apt update && apt install -y postgresql-client --no-install-recommends
|
13
|
+
RUN apt update && apt install -y postgresql-client curl python3 bash vim --no-install-recommends
|
14
14
|
RUN rm -rf /var/lib/apt/lists/*
|
15
15
|
|
16
|
+
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
|
17
|
+
RUN chmod +x ./kubectl
|
18
|
+
RUN mv ./kubectl /usr/local/bin
|
19
|
+
|
16
20
|
COPY --from=builder /usr/local/etc /usr/local/etc
|
17
21
|
COPY --from=builder /usr/local/bundle /usr/local/bundle
|
18
22
|
COPY --from=builder /usr/local/bin/ruby /usr/local/bin/ruby
|