rubypitaya 2.6.4 → 2.7.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rubypitaya/app-template/Gemfile +1 -1
  3. data/lib/rubypitaya/app-template/Gemfile.lock +2 -2
  4. data/lib/rubypitaya/app-template/Makefile +8 -6
  5. data/lib/rubypitaya/app-template/app/app_initializer.rb +41 -31
  6. data/lib/rubypitaya/app-template/app/bll/player_bll.rb +10 -7
  7. data/lib/rubypitaya/app-template/app/constants/status_codes.rb +22 -19
  8. data/lib/rubypitaya/app-template/app/handlers/hello_world_handler.rb +1 -0
  9. data/lib/rubypitaya/app-template/app/handlers/player_handler.rb +69 -66
  10. data/lib/rubypitaya/app-template/app/models/player.rb +13 -10
  11. data/lib/rubypitaya/app-template/config/routes.rb +1 -1
  12. data/lib/rubypitaya/app-template/db/migration/{0000000002_create_player_migration.rb → 1606736477_create_player_migration.rb} +0 -0
  13. data/lib/rubypitaya/app-template/docker-compose.yml +1 -0
  14. data/lib/rubypitaya/app-template/docker/dev/Dockerfile +1 -1
  15. data/lib/rubypitaya/app-template/docker/prod/Dockerfile +5 -1
  16. data/lib/rubypitaya/app-template/kubernetes/README.md +22 -2
  17. data/lib/rubypitaya/app-template/kubernetes/gameplay/deployment-nginx.yaml +130 -0
  18. data/lib/rubypitaya/app-template/kubernetes/gameplay/gameplay-template.yaml +29 -0
  19. data/lib/rubypitaya/app-template/kubernetes/gameplay/nginx.conf +13 -0
  20. data/lib/rubypitaya/app-template/kubernetes/gameplay/service-nginx.yaml +928 -0
  21. data/lib/rubypitaya/app-template/kubernetes/role-rubypitaya.yaml +31 -0
  22. data/lib/rubypitaya/app-template/kubernetes/rolebinding-rubypitaya.yaml +13 -0
  23. data/lib/rubypitaya/app-template/kubernetes/service-etcd.yaml +1 -1
  24. data/lib/rubypitaya/app-template/kubernetes/service-nats.yaml +1 -1
  25. data/lib/rubypitaya/app-template/kubernetes/service-postgres.yaml +1 -1
  26. data/lib/rubypitaya/app-template/kubernetes/service-redis.yaml +1 -1
  27. data/lib/rubypitaya/core/handler_base.rb +2 -1
  28. data/lib/rubypitaya/core/handler_router.rb +2 -1
  29. data/lib/rubypitaya/core/http_routes.rb +1 -1
  30. data/lib/rubypitaya/core/initializer_content.rb +3 -2
  31. data/lib/rubypitaya/core/main.rb +18 -8
  32. data/lib/rubypitaya/version.rb +1 -1
  33. metadata +9 -4
  34. 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: e320e8b3358448fe38fd1c1045f51f69819fe6295c22c7faf53465be8aa835a1
4
- data.tar.gz: 222317d303922f8ff462f6c4cc948fe281a7a218a75894fc2e085073bf4f79ac
3
+ metadata.gz: 78c0e17a12d24e8681424de7febeb3c496362c9efb6ddba566e2cb5a94a8e076
4
+ data.tar.gz: c01c5cdc3bd4adf77d1fae5479418d1f09f693e157b1bb28bc458260841198ee
5
5
  SHA512:
6
- metadata.gz: a1c0594a2b41314ee342a75e74c1169f025afad5bf546e999dc07f2165a78a50c0565d16f3574dbdae06676e9c5a8d5262cdaf500c4187de32996928ca929d6c
7
- data.tar.gz: 5c17f9d693ea7028882192bc5dae2a64abdf1f7749eb97ab218c461ffd9c3fc10fec3239687caed753cc35ed916a159a8522988e5f9b4ad9121a2b971bcb4f5a
6
+ metadata.gz: 2e54976ad166dfef5c686cbd75cabb7c15e2dbb991aa7946b43a120213e26d1fa46b414212d9c1d18a970b17a6689ac89c38c8bedc075670d0ed4ea9a1050253
7
+ data.tar.gz: d510fcd44c66d24be9b7f07de8184f8fbff14d24308abd7955f9d156a2d056bc7417b47cf9c50da0ad9b17e307f7471949b50883b542118a029376c6f35f36f2
@@ -1,6 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem 'rubypitaya', '2.6.4'
3
+ gem 'rubypitaya', '2.7.5'
4
4
 
5
5
  group :development do
6
6
  gem 'pry', '0.12.2'
@@ -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.6.4)
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.6.4)
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 [registry-address]:$(IMAGE_TAG)
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 [registry-address]:$(IMAGE_TAG)
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 $(PROD_NAMESPACE) set image deployment rubypitaya rubypitaya=[registry-address]:$(IMAGE_TAG)
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
- class AppInitializer < RubyPitaya::InitializerBase
1
+ module MyApp
2
2
 
3
- # method: run
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
- def run(initializer_content)
30
- bll = initializer_content.bll
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
- bll.add_instance(:player, playerBll)
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
- class PlayerBLL
1
+ module MyApp
2
+
3
+ class PlayerBLL
2
4
 
3
- def create_new_player(setup, config)
4
- name = config['initial_player']['name']
5
- gold = setup['initial_player.wallet.gold']
5
+ def create_new_player(setup, config)
6
+ name = config['initial_player']['name']
7
+ gold = setup['initial_player.wallet.gold']
6
8
 
7
- player = Player.new(name: name, gold: gold, user: User.new)
8
- player.save
9
- player
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
- class StatusCodes
1
+ module MyApp
2
+
3
+ class StatusCodes
2
4
 
3
- CODE_OK = RubyPitaya::StatusCodes::CODE_OK
5
+ CODE_OK = RubyPitaya::StatusCodes::CODE_OK
4
6
 
5
- ################
6
- ## Existent Codes
7
- ################
8
- ## Success codes
9
- #
10
- # RubyPitaya::StatusCodes::CODE_OK = 'RP-200'
11
- #
12
- #
13
- ## Error codes
14
- # RubyPitaya::StatusCodes::CODE_UNKNOWN = 'RP-000'
15
- # RubyPitaya::StatusCodes::CODE_HANDLER_NOT_FOUND = 'RP-001'
16
- # RubyPitaya::StatusCodes::CODE_ACTION_NOT_FOUND = 'RP-002'
17
- # RubyPitaya::StatusCodes::CODE_NOT_AUTHENTICATED = 'RP-003'
18
- # RubyPitaya::StatusCodes::CODE_AUTHENTICATION_ERROR = 'RP-004'
19
- #
20
- # RubyPitaya::StatusCodes::Connector::CODE_UNKNOWN = 'PIT-000'
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,4 +1,5 @@
1
1
  module MyApp
2
+
2
3
  class HelloWorldHandler < RubyPitaya::HandlerBase
3
4
 
4
5
  non_authenticated_actions :sayHello
@@ -1,79 +1,82 @@
1
- class PlayerHandler < RubyPitaya::HandlerBase
1
+ module MyApp
2
+
3
+ class PlayerHandler < RubyPitaya::HandlerBase
2
4
 
3
- # class: HandlerBase
4
- # attributes:
5
- # - @bll
6
- # - class: InstanceHolder
7
- # - methods:
8
- # - [](key)
9
- # - info: get bll by key
10
- #
11
- # - @redis
12
- # - link: https://github.com/redis/redis-rb/
13
- #
14
- # - @config
15
- # - info: Hash with config json files inside of 'app/config'
16
- # - example:
17
- # Given you have the following file "app/config/initial_player.json"
18
- # And this json content is {'name': 'Guest'}
19
- # And you can get the initial player name
20
- # Then you can run the following code: @config['initial_player']['name']
21
- #
22
- # - @params
23
- # - info: Special hash with the request parameters
24
- # - link: https://api.rubyonrails.org/classes/ActionController/Parameters.html
25
- #
26
- # - @session
27
- # - attributes:
28
- # - id :: session id
29
- # - uid :: user id
30
- # - data :: session data
31
- # - metadata :: session data
32
- # - frontend_id :: connector server id
33
- #
34
- # - @postman
35
- # - info: Send messages to server and clients
36
- # - methods:
37
- # - bind_session(session)
38
- # - info:
39
- # Send a session to connector, you can use to set the userId
40
- # of the session, for example you can set an userId on
41
- # @session, like `@session.uid = '123'`, and then you can
42
- # bind this session with `@postman.bind_session(@session)`
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
- non_authenticated_actions :authenticate
46
+ non_authenticated_actions :authenticate
45
47
 
46
- def authenticate
47
- user_id = @params[:userId]
48
+ def authenticate
49
+ user_id = @params[:userId]
48
50
 
49
- player = Player.find_by_user_id(user_id)
50
- player = @bll[:player].create_new_player(@setup, @config) if player.nil?
51
+ player = Player.find_by_user_id(user_id)
52
+ player = @bll[:player].create_new_player(@setup, @config) if player.nil?
51
53
 
52
- @session.uid = player.user_id
54
+ @session.uid = player.user_id
53
55
 
54
- bind_session_response = @postman.bind_session(@session)
56
+ bind_session_response = @postman.bind_session(@session)
55
57
 
56
- unless bind_session_response.dig(:error, :code).nil?
57
- return response = {
58
- code: RubyPitaya::StatusCodes::CODE_AUTHENTICATION_ERROR,
59
- msg: 'Error to authenticate',
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
- response = {
64
- code: StatusCodes::CODE_OK,
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
- player = Player.find_by_user_id(user_id)
74
+ player = Player.find_by_user_id(user_id)
73
75
 
74
- response = {
75
- code: StatusCodes::CODE_OK,
76
- data: player.to_hash,
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
- class Player < ActiveRecord::Base
3
+ module MyApp
4
4
 
5
- belongs_to :user
5
+ class Player < ActiveRecord::Base
6
6
 
7
- validates_presence_of :name, :gold, :user
7
+ belongs_to :user
8
8
 
9
- def to_hash
10
- {
11
- name: name,
12
- gold: gold,
13
- userId: user_id,
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
@@ -1,6 +1,6 @@
1
1
  class Routes < RubyPitaya::RoutesBase
2
2
 
3
- # class: RoutesBase
3
+ # class: RoutesBase
4
4
  # methods:
5
5
  # - match('new_handler_name', to: 'ClassHandler')
6
6
  # - Defines a new name to handler
@@ -56,6 +56,7 @@ services:
56
56
  working_dir: '/app/rubypitaya'
57
57
  volumes:
58
58
  - '.:/app/rubypitaya'
59
+ - '/var/run/docker.sock:/var/run/docker.sock'
59
60
  ports:
60
61
  - '80:4567'
61
62
  environment:
@@ -1,7 +1,7 @@
1
1
  FROM ruby:2.6.6
2
2
 
3
3
  RUN apt update
4
- RUN apt install -y git vim postgresql-client --no-install-recommends
4
+ RUN apt install -y git vim postgresql-client docker.io --no-install-recommends
5
5
 
6
6
  WORKDIR /app/rubypitaya/
7
7
 
@@ -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