rubypitaya 2.5.0 → 2.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d954de0e8be9b30865fd328f1126a35c520fa6bd3f553040bfead26594cb19eb
4
- data.tar.gz: 0a0663e7dea4b076b57d93d08376d428ac12b87f4ce4068e3033c6298780faf0
3
+ metadata.gz: 84f3bb326f6529e6952dceb0f93ac795cfb862cd7661dd14c7d9714296094e6e
4
+ data.tar.gz: 0c731e2b492a3392cb8ffc58999e407229ba9283af9f3ac425a864651f703678
5
5
  SHA512:
6
- metadata.gz: 6ec34b4eba49194b30fc00871c034e721b13b3fdc7fb58b6942f9bb5e0a6ea693b7c23678453fed7ff72a18c743f2d78f9dfed0128e48770ab2e73e3c650ad41
7
- data.tar.gz: 8a6cdc19ecebf38d7c47dc946166c63c408a3192e40b7a1432478e1bb7a947aed545cac1c46f6be2a9ece618a0f4007c555448ba67259390cafdf9b7d5bf6c1d
6
+ metadata.gz: f231eed02e593db2e16890cdba291d99ed58a48358c00b5e0bbd9d7136da0e76d21c532028b9133bf77478130978c2c6233cc212b577d6985d2d1b06a81363e6
7
+ data.tar.gz: e3d32e830dc6a436a06a549ebd428dd004facbbd45cd0fb3107a34a8d01e48ef4da127eae55035989b941a997fc7da7d3d37a93e10973aedc80dbfe5a4ee637a
@@ -1,6 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem 'rubypitaya', '2.5.0'
3
+ gem 'rubypitaya', '2.5.1'
4
4
 
5
5
  group :development do
6
6
  gem 'pry', '0.12.2'
@@ -62,7 +62,7 @@ GEM
62
62
  diff-lcs (>= 1.2.0, < 2.0)
63
63
  rspec-support (~> 3.8.0)
64
64
  rspec-support (3.8.3)
65
- rubypitaya (2.5.0)
65
+ rubypitaya (2.5.1)
66
66
  activerecord (= 6.0.2)
67
67
  etcdv3 (= 0.10.2)
68
68
  eventmachine (= 1.2.7)
@@ -85,7 +85,7 @@ DEPENDENCIES
85
85
  listen (= 3.2.1)
86
86
  pry (= 0.12.2)
87
87
  rspec (= 3.8.0)
88
- rubypitaya (= 2.5.0)
88
+ rubypitaya (= 2.5.1)
89
89
 
90
90
  BUNDLED WITH
91
91
  1.17.2
@@ -19,6 +19,12 @@ class AppInitializer < RubyPitaya::InitializerBase
19
19
  # - methods:
20
20
  # - [](key)
21
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
22
28
 
23
29
  def run(initializer_content)
24
30
  bll = initializer_content.bll
@@ -1,9 +1,10 @@
1
1
  class PlayerBLL
2
2
 
3
- def create_new_player(config)
3
+ def create_new_player(setup, config)
4
4
  name = config['initial_player']['name']
5
+ gold = setup['initial_player.wallet.gold']
5
6
 
6
- player = Player.new(name: name, user: User.new)
7
+ player = Player.new(name: name, gold: gold, user: User.new)
7
8
  player.save
8
9
  player
9
10
  end
@@ -12,8 +12,8 @@ class StatusCodes
12
12
  #
13
13
  ## Error codes
14
14
  # RubyPitaya::StatusCodes::CODE_UNKNOWN = 'RP-000'
15
- # RubyPitaya::StatusCodes::CODE_HANDLER_NOT_FOUNDED = 'RP-001'
16
- # RubyPitaya::StatusCodes::CODE_ACTION_NOT_FOUNDED = 'RP-002'
15
+ # RubyPitaya::StatusCodes::CODE_HANDLER_NOT_FOUND = 'RP-001'
16
+ # RubyPitaya::StatusCodes::CODE_ACTION_NOT_FOUND = 'RP-002'
17
17
  # RubyPitaya::StatusCodes::CODE_NOT_AUTHENTICATED = 'RP-003'
18
18
  # RubyPitaya::StatusCodes::CODE_AUTHENTICATION_ERROR = 'RP-004'
19
19
  #
@@ -47,7 +47,7 @@ class PlayerHandler < RubyPitaya::HandlerBase
47
47
  user_id = @params[:userId]
48
48
 
49
49
  player = Player.find_by_user_id(user_id)
50
- player = @bll[:player].create_new_player(@config) if player.nil?
50
+ player = @bll[:player].create_new_player(@setup, @config) if player.nil?
51
51
 
52
52
  @session.uid = player.user_id
53
53
 
@@ -55,14 +55,14 @@ class PlayerHandler < RubyPitaya::HandlerBase
55
55
 
56
56
  unless bind_session_response.dig(:error, :code).nil?
57
57
  return response = {
58
- code: StatusCodes::CODE_AUTHENTICATION_ERROR,
58
+ code: RubyPitaya::StatusCodes::CODE_AUTHENTICATION_ERROR,
59
59
  msg: 'Error to authenticate',
60
60
  }
61
61
  end
62
62
 
63
63
  response = {
64
64
  code: StatusCodes::CODE_OK,
65
- player: player.to_hash,
65
+ data: player.to_hash,
66
66
  }
67
67
  end
68
68
 
@@ -73,7 +73,7 @@ class PlayerHandler < RubyPitaya::HandlerBase
73
73
 
74
74
  response = {
75
75
  code: StatusCodes::CODE_OK,
76
- player: player.to_hash,
76
+ data: player.to_hash,
77
77
  }
78
78
  end
79
79
  end
@@ -4,11 +4,12 @@ class Player < ActiveRecord::Base
4
4
 
5
5
  belongs_to :user
6
6
 
7
- validates_presence_of :name, :user
7
+ validates_presence_of :name, :gold, :user
8
8
 
9
9
  def to_hash
10
10
  {
11
11
  name: name,
12
+ gold: gold,
12
13
  userId: user_id,
13
14
  }
14
15
  end
@@ -8,7 +8,7 @@ default: &default
8
8
 
9
9
  development:
10
10
  <<: *default
11
- database: <%= "#{ENV['DATABASE_NAME']}_development" %>
11
+ database: <%= "#{ENV['DATABASE_NAME']}" %>
12
12
 
13
13
  test:
14
14
  <<: *default
@@ -16,7 +16,5 @@ test:
16
16
 
17
17
  production:
18
18
  <<: *default
19
- database: <%= "#{ENV['DATABASE_NAME']}_production" %>
20
- # username: rails_project
21
- # password: <%= ENV['RAILS_PROJECT_DATABASE_PASSWORD'] %>
19
+ database: <%= "#{ENV['DATABASE_NAME']}" %>
22
20
 
@@ -8,6 +8,7 @@ class CreatePlayerMigration < ActiveRecord::Migration[5.1]
8
8
  create_table :players, id: :uuid do |t|
9
9
  t.belongs_to :user, type: :uuid
10
10
  t.string :name, null: false
11
+ t.integer :gold, null: false
11
12
  t.timestamps null: false
12
13
  end
13
14
  end
@@ -43,7 +43,7 @@ services:
43
43
  PITAYA_CLUSTER_SD_ETCD_PREFIX: 'rubypitaya/'
44
44
  SERVER_ROUTES: 'rubypitaya'
45
45
 
46
- rubypitaya:
46
+ rubypitaya: &rubypitaya
47
47
  depends_on:
48
48
  - 'db'
49
49
  - 'nats'
@@ -73,31 +73,8 @@ services:
73
73
  DATABASE_NAME: 'ruby_pitaya'
74
74
 
75
75
  rubypitaya-console:
76
- depends_on:
77
- - 'db'
78
- - 'nats'
79
- - 'etcd'
80
- - 'redis'
81
- - 'connector'
82
- build:
83
- context: '.'
84
- dockerfile: 'docker/dev/Dockerfile'
85
- working_dir: '/app/rubypitaya'
86
- volumes:
87
- - '.:/app/rubypitaya'
88
- environment:
89
- SERVER_NAME: 'rubypitaya'
90
- RUBYPITAYA_ENV: 'development'
91
- HISTFILE: '/app/rubypitaya/.bash-history'
92
- NATS_URL: 'nats://nats:4222'
93
- ETCD_URL: 'http://etcd:2379'
94
- ETCD_PREFIX: 'rubypitaya/'
95
- ETCD_LEASE_SECONDS: '60'
96
- REDIS_URL: 'redis://redis:6379'
97
- DATABASE_HOST: 'db'
98
- DATABASE_USER: 'postgres'
99
- DATABASE_PASSWORD: 'postgres'
100
- DATABASE_NAME: 'ruby_pitaya'
76
+ <<: *rubypitaya
77
+ ports: []
101
78
 
102
79
  volumes:
103
80
  postgres:
@@ -4,11 +4,12 @@ module RubyPitaya
4
4
 
5
5
  class_attribute :non_authenticated_routes, default: []
6
6
 
7
- attr_accessor :bll, :redis, :config, :params, :session, :postman
7
+ attr_accessor :bll, :redis, :setup, :config, :params, :session, :postman
8
8
 
9
9
  def initialize
10
10
  @bll = nil
11
11
  @redis = nil
12
+ @setup = nil
12
13
  @config = nil
13
14
  @params = nil
14
15
  @session = nil
@@ -52,18 +52,18 @@ module RubyPitaya
52
52
  @handler_name_map = @handler_name_map.to_h
53
53
  end
54
54
 
55
- def call(handler_name, action_name, session, postman, redis, config, bll,
56
- params)
55
+ def call(handler_name, action_name, session, postman, redis, setup, config,
56
+ bll, params)
57
57
  unless @handler_name_map.include?(handler_name)
58
58
  return {
59
- code: StatusCodes::CODE_HANDLER_NOT_FOUNDED,
59
+ code: StatusCodes::CODE_HANDLER_NOT_FOUND,
60
60
  msg: "Handler #{handler_name} not founded"
61
61
  }
62
62
  end
63
63
 
64
64
  unless @handler_name_map[handler_name].methods.include?(action_name.to_sym)
65
65
  return {
66
- code: StatusCodes::CODE_ACTION_NOT_FOUNDED,
66
+ code: StatusCodes::CODE_ACTION_NOT_FOUND,
67
67
  msg: "Handler #{handler_name} action #{action_name} not founded"
68
68
  }
69
69
  end
@@ -72,6 +72,7 @@ module RubyPitaya
72
72
 
73
73
  handler.bll = bll
74
74
  handler.redis = redis
75
+ handler.setup = setup
75
76
  handler.config = config
76
77
  handler.params = params
77
78
  handler.session = session
@@ -14,6 +14,7 @@ module RubyPitaya
14
14
  content_type :json
15
15
 
16
16
  @bll = settings.bll
17
+ @setup = settings.setup
17
18
  @config = settings.config
18
19
 
19
20
  request_body = request.body.read
@@ -4,9 +4,10 @@ module RubyPitaya
4
4
 
5
5
  attr_reader :bll, :redis, :config
6
6
 
7
- def initialize(bll, redis, config)
7
+ def initialize(bll, redis, setup, config)
8
8
  @bll = bll
9
9
  @redis = redis
10
+ @setup = setup
10
11
  @config = config
11
12
  end
12
13
  end
@@ -3,6 +3,7 @@ require 'securerandom'
3
3
  require 'active_model'
4
4
 
5
5
  require 'rubypitaya/core/path'
6
+ require 'rubypitaya/core/setup'
6
7
  require 'rubypitaya/core/config'
7
8
  require 'rubypitaya/core/session'
8
9
  require 'rubypitaya/core/postman'
@@ -64,11 +65,14 @@ module RubyPitaya
64
65
  @postman = Postman.new(@nats_connector)
65
66
  @config = Config.new
66
67
  @config.auto_reload if @is_development_environment
68
+ @setup = Setup.new
69
+ @setup.auto_reload if @is_development_environment
67
70
 
68
71
  @bll = InstanceHolder.new
69
72
 
70
73
  @initializer_content = InitializerContent.new(@bll,
71
74
  @redis_connector.redis,
75
+ @setup,
72
76
  @config)
73
77
  @initializer_broadcast = InitializerBroadcast.new
74
78
  @initializer_broadcast.run(@initializer_content)
@@ -83,6 +87,7 @@ module RubyPitaya
83
87
 
84
88
  def run_http
85
89
  HttpRoutes.set :bll, @bll
90
+ HttpRoutes.set :setup, @setup
86
91
  HttpRoutes.set :config, @config
87
92
  HttpRoutes.set :views, [Path::HTTP_VIEWS_PATH] + Path::Plugins::APP_CONFIG_FOLDER_PATHS;
88
93
 
@@ -152,7 +157,7 @@ module RubyPitaya
152
157
 
153
158
  response = @handler_router.call(handler_name, action_name, @session,
154
159
  @postman, @redis_connector.redis,
155
- @config, @bll, params)
160
+ @setup, @config, @bll, params)
156
161
 
157
162
  delta_time_seconds = Time.now.to_i - start_time_seconds
158
163
 
@@ -8,6 +8,7 @@ module RubyPitaya
8
8
  APP_FOLDER_PATH = File.join(Dir.pwd, 'app/')
9
9
  HANDLERS_FOLDER_PATH = File.join(Dir.pwd, 'app/handlers/')
10
10
  APP_CONFIG_FOLDER_PATH = File.join(Dir.pwd, 'app/config/')
11
+ APP_SETUP_FOLDER_PATH = File.join(Dir.pwd, 'app/setup/')
11
12
  MIGRATIONS_FOLDER_PATH = File.join(Dir.pwd, 'db/migration/')
12
13
 
13
14
  ROUTES_FILE_PATH = File.join(Dir.pwd, 'config/routes.rb')
@@ -23,6 +24,7 @@ module RubyPitaya
23
24
  APP_FOLDER_PATHS = Dir.glob(File.join(Dir.pwd, 'plugins/*/app/'))
24
25
  HANDLERS_FOLDER_PATHS = Dir.glob(File.join(Dir.pwd, 'plugins/*/app/handlers'))
25
26
  APP_CONFIG_FOLDER_PATHS = Dir.glob(File.join(Dir.pwd, 'plugins/*/app/config/'))
27
+ APP_SETUP_FOLDER_PATHS = Dir.glob(File.join(Dir.pwd, 'plugins/*/app/setup/'))
26
28
  MIGRATIONS_FOLDER_PATHS = Dir.glob(File.join(Dir.pwd, 'plugins/*/db/migration'))
27
29
  HTTP_VIEWS_PATHS = Dir.glob(File.join(Dir.pwd, 'plugins/*/app/http/views'))
28
30
  end
@@ -0,0 +1,96 @@
1
+ module RubyPitaya
2
+
3
+ class Setup
4
+
5
+ def initialize()
6
+ @config = {}
7
+ configs_folder_paths = Path::Plugins::APP_SETUP_FOLDER_PATHS + [Path::APP_SETUP_FOLDER_PATH]
8
+
9
+ configs_folder_paths.each do |configs_folder_path|
10
+ path_to_all_files = File.join(configs_folder_path, '**/*.yml')
11
+ config_files = Dir.glob(path_to_all_files)
12
+
13
+ config_files.each do |config_file|
14
+ load_config_file(configs_folder_path, config_file)
15
+ end
16
+ end
17
+ end
18
+
19
+ def [](key)
20
+ result = get_config_from_env_var(key)
21
+ return result unless result.nil?
22
+
23
+ split_key = key.split('.')
24
+ @config.dig(*split_key)
25
+ end
26
+
27
+ def get_config_from_env_var(key)
28
+ env_key = key.gsub('.', '_').upcase
29
+ ENV.fetch(env_key) { nil }
30
+ end
31
+
32
+ def auto_reload
33
+ require 'listen'
34
+
35
+ configs_folder_path = Path::APP_CONFIG_FOLDER_PATH
36
+
37
+ config_files_listener = Listen.to(configs_folder_path,
38
+ only: /\.yml$/,
39
+ force_polling: true,
40
+ latency: 0.25,
41
+ wait_for_delay: 0.1) do |modified, added, removed|
42
+ import_added_files(configs_folder_path, added)
43
+ reload_modified_files(configs_folder_path, modified)
44
+ end
45
+
46
+ config_files_listener.start
47
+ end
48
+
49
+ private
50
+
51
+ def load_config_file(configs_folder_path, file_path)
52
+ config_text = File.open(file_path, &:read)
53
+ config_hash = YAML.load(ERB.new(config_text).result)
54
+
55
+ path_array = file_path.sub(/^#{configs_folder_path}/, '')[0..-5]
56
+ .split('/')
57
+
58
+ set_config_value(path_array, config_hash)
59
+
60
+ rescue Exception => error
61
+ puts "ERROR: #{error}"
62
+ puts error.backtrace
63
+ end
64
+
65
+ def import_added_files(configs_folder_path, files_path)
66
+ files_path.each do |path|
67
+ load_config_file(configs_folder_path, path)
68
+
69
+ puts "ADDED config: #{path}"
70
+ end
71
+ end
72
+
73
+ def reload_modified_files(configs_folder_path, files_path)
74
+ files_path.each do |path|
75
+ load_config_file(configs_folder_path, path)
76
+
77
+ puts "MODIFIED @config: #{path}"
78
+ end
79
+ end
80
+
81
+ def set_config_value(keys, value)
82
+ config = @config
83
+
84
+ keys.each_with_index do |key, index|
85
+ is_last_index = index == keys.size - 1
86
+
87
+ if is_last_index
88
+ config[key] = value
89
+ else
90
+ config[key] = {} unless config.key?(key)
91
+ config = config[key]
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -6,8 +6,8 @@ module RubyPitaya
6
6
 
7
7
  # Error codes
8
8
  CODE_UNKNOWN = 'RP-000'
9
- CODE_HANDLER_NOT_FOUNDED = 'RP-001'
10
- CODE_ACTION_NOT_FOUNDED = 'RP-002'
9
+ CODE_HANDLER_NOT_FOUND = 'RP-001'
10
+ CODE_ACTION_NOT_FOUND = 'RP-002'
11
11
  CODE_NOT_AUTHENTICATED = 'RP-003'
12
12
  CODE_AUTHENTICATION_ERROR = 'RP-004'
13
13
 
@@ -1,3 +1,3 @@
1
1
  module RubyPitaya
2
- VERSION = '2.5.0'
2
+ VERSION = '2.5.1'
3
3
  end
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: 2.5.0
4
+ version: 2.5.1
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: 2020-11-27 00:00:00.000000000 Z
11
+ date: 2020-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -231,6 +231,7 @@ files:
231
231
  - "./lib/rubypitaya/app-template/app/http/views/hello_world.erb"
232
232
  - "./lib/rubypitaya/app-template/app/models/player.rb"
233
233
  - "./lib/rubypitaya/app-template/app/models/user.rb"
234
+ - "./lib/rubypitaya/app-template/app/setup/initial_player.yml"
234
235
  - "./lib/rubypitaya/app-template/bin/console"
235
236
  - "./lib/rubypitaya/app-template/config/database.yml"
236
237
  - "./lib/rubypitaya/app-template/config/routes.rb"
@@ -277,6 +278,7 @@ files:
277
278
  - "./lib/rubypitaya/core/redis_connector.rb"
278
279
  - "./lib/rubypitaya/core/routes_base.rb"
279
280
  - "./lib/rubypitaya/core/session.rb"
281
+ - "./lib/rubypitaya/core/setup.rb"
280
282
  - "./lib/rubypitaya/core/status_codes.rb"
281
283
  - "./lib/rubypitaya/version.rb"
282
284
  - bin/rubypitaya