rubypitaya 2.6.0 → 2.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rubypitaya/app-template/Gemfile +1 -1
  3. data/lib/rubypitaya/app-template/Gemfile.lock +29 -8
  4. data/lib/rubypitaya/app-template/app/app_initializer.rb +34 -31
  5. data/lib/rubypitaya/app-template/app/bll/player_bll.rb +10 -7
  6. data/lib/rubypitaya/app-template/app/constants/status_codes.rb +22 -19
  7. data/lib/rubypitaya/app-template/app/handlers/hello_world_handler.rb +1 -0
  8. data/lib/rubypitaya/app-template/app/handlers/player_handler.rb +69 -66
  9. data/lib/rubypitaya/app-template/app/http/{hello_world.rb → hello_world_http.rb} +0 -0
  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/prod/Dockerfile +5 -1
  14. data/lib/rubypitaya/app-template/kubernetes/README.md +22 -2
  15. data/lib/rubypitaya/app-template/kubernetes/gameplay/deployment-nginx.yaml +130 -0
  16. data/lib/rubypitaya/app-template/kubernetes/gameplay/gameplay-template.yaml +29 -0
  17. data/lib/rubypitaya/app-template/kubernetes/gameplay/nginx.conf +13 -0
  18. data/lib/rubypitaya/app-template/kubernetes/gameplay/service-nginx.yaml +928 -0
  19. data/lib/rubypitaya/app-template/kubernetes/role-rubypitaya.yaml +31 -0
  20. data/lib/rubypitaya/app-template/kubernetes/rolebinding-rubypitaya.yaml +13 -0
  21. data/lib/rubypitaya/app-template/kubernetes/service-etcd.yaml +1 -1
  22. data/lib/rubypitaya/app-template/kubernetes/service-nats.yaml +1 -1
  23. data/lib/rubypitaya/app-template/kubernetes/service-postgres.yaml +1 -1
  24. data/lib/rubypitaya/app-template/kubernetes/service-redis.yaml +1 -1
  25. data/lib/rubypitaya/core/http_routes.rb +10 -2
  26. data/lib/rubypitaya/core/main.rb +1 -1
  27. data/lib/rubypitaya/version.rb +1 -1
  28. metadata +10 -5
  29. 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: 7b2abc1a729bbdfcbffe4b9a064066f5db1fd614cea10720b252fd6ff3412f9e
4
- data.tar.gz: 1e05d907b214dee124c7911c076ad7972bf23250cf63f45733d70f41e72ee6de
3
+ metadata.gz: 87587b02594a88b88edbf8c1f834a088a375a159d8382aae4199529690d7adad
4
+ data.tar.gz: 56ba5c551c06c7cc36feaede56353adb522a917047fefc47788b7f49409c73b7
5
5
  SHA512:
6
- metadata.gz: 032e897dfba632fc3cac9b3b29b2613ca4a6db37d6add26636f81c54655f7b820ac71405a30e6f41c149ae55d6f43cf62ea9b442c551a226f61914550237be9b
7
- data.tar.gz: a21c0215c1d3c389595a10f93679862c7ce5f82f6c6b6c809ffbe791c31a850dc5d124f832fca202428dc62ea1425e915ec7726332f8c78deb5f33f75fcbaa9c
6
+ metadata.gz: a3b0512be9ad4f86ed742a49856fd814d2ad116c2895b89362e9bb623bcc1aa29019c08eb0ed42f16f6c28b3b1977c7ff8d2634c37574d17f9261a17af1b966c
7
+ data.tar.gz: 0a0b2173420b168a6326465da9272db42ad04b67c8b9573a38bde67b9d08d7811e69f1f5db549d9de64dfb5058736298f97276d3a7c6944c994bd9018689e1ae
@@ -1,6 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem 'rubypitaya', '2.6.0'
3
+ gem 'rubypitaya', '2.7.0'
4
4
 
5
5
  group :development do
6
6
  gem 'pry', '0.12.2'
@@ -12,14 +12,14 @@ GEM
12
12
  minitest (~> 5.1)
13
13
  tzinfo (~> 1.1)
14
14
  zeitwerk (~> 2.2)
15
- coderay (1.1.2)
15
+ coderay (1.1.3)
16
16
  concurrent-ruby (1.1.7)
17
- diff-lcs (1.3)
17
+ diff-lcs (1.4.4)
18
18
  etcdv3 (0.10.2)
19
19
  grpc (~> 1.17)
20
20
  eventmachine (1.2.7)
21
- ffi (1.12.2)
22
- google-protobuf (3.13.0)
21
+ ffi (1.13.1)
22
+ google-protobuf (3.14.0)
23
23
  googleapis-common-protos-types (1.0.5)
24
24
  google-protobuf (~> 3.11)
25
25
  grpc (1.32.0)
@@ -33,6 +33,9 @@ GEM
33
33
  method_source (0.9.2)
34
34
  middleware (0.1.0)
35
35
  minitest (5.14.2)
36
+ multi_json (1.15.0)
37
+ mustermann (1.1.1)
38
+ ruby2_keywords (~> 0.0.1)
36
39
  nats (0.11.0)
37
40
  eventmachine (~> 1.2, >= 1.2)
38
41
  pg (0.21.0)
@@ -44,8 +47,11 @@ GEM
44
47
  pry (0.12.2)
45
48
  coderay (~> 1.1.0)
46
49
  method_source (~> 0.9.0)
50
+ rack (2.2.3)
51
+ rack-protection (2.1.0)
52
+ rack
47
53
  rake (10.0.0)
48
- rb-fsevent (0.10.3)
54
+ rb-fsevent (0.10.4)
49
55
  rb-inotify (0.10.1)
50
56
  ffi (~> 1.0)
51
57
  redis (4.1.3)
@@ -62,7 +68,8 @@ GEM
62
68
  diff-lcs (>= 1.2.0, < 2.0)
63
69
  rspec-support (~> 3.8.0)
64
70
  rspec-support (3.8.3)
65
- rubypitaya (2.6.0)
71
+ ruby2_keywords (0.0.2)
72
+ rubypitaya (2.7.0)
66
73
  activerecord (= 6.0.2)
67
74
  etcdv3 (= 0.10.2)
68
75
  eventmachine (= 1.2.7)
@@ -71,11 +78,25 @@ GEM
71
78
  protobuf (= 3.10.0)
72
79
  rake (= 10.0)
73
80
  redis (= 4.1.3)
81
+ sinatra (= 2.1.0)
82
+ sinatra-contrib (= 2.1.0)
83
+ sinatra (2.1.0)
84
+ mustermann (~> 1.0)
85
+ rack (~> 2.2)
86
+ rack-protection (= 2.1.0)
87
+ tilt (~> 2.0)
88
+ sinatra-contrib (2.1.0)
89
+ multi_json
90
+ mustermann (~> 1.0)
91
+ rack-protection (= 2.1.0)
92
+ sinatra (= 2.1.0)
93
+ tilt (~> 2.0)
74
94
  thor (1.0.1)
75
95
  thread_safe (0.3.6)
96
+ tilt (2.0.10)
76
97
  tzinfo (1.2.8)
77
98
  thread_safe (~> 0.1)
78
- zeitwerk (2.4.1)
99
+ zeitwerk (2.4.2)
79
100
 
80
101
  PLATFORMS
81
102
  ruby
@@ -85,7 +106,7 @@ DEPENDENCIES
85
106
  listen (= 3.2.1)
86
107
  pry (= 0.12.2)
87
108
  rspec (= 3.8.0)
88
- rubypitaya (= 2.6.0)
109
+ rubypitaya (= 2.7.0)
89
110
 
90
111
  BUNDLED WITH
91
112
  1.17.2
@@ -1,36 +1,39 @@
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
31
30
 
32
- playerBll = PlayerBLL.new
31
+ def run(initializer_content)
32
+ bll = initializer_content.bll
33
33
 
34
- bll.add_instance(:player, playerBll)
34
+ playerBll = PlayerBLL.new
35
+
36
+ bll.add_instance(:player, playerBll)
37
+ end
35
38
  end
36
- end
39
+ 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
@@ -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