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.
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