rubypitaya 1.7.2 → 2.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f956732e23359892f97cd275d3d258b6937374f7f8e7ddb40f5d97d0abcce272
4
- data.tar.gz: '09c66465d85c6814a83833afecec31dafdc229111d63a9534ba5a7fc2258921a'
3
+ metadata.gz: 2cc4718b7cd0df9727cfc2758ee744825bc1a9eeac93e9f34ca42cb3d9b42031
4
+ data.tar.gz: 4cc801f3f64c975ed2be0b8a842d7ff028e7546f175a36f6f5006095ee686d88
5
5
  SHA512:
6
- metadata.gz: e1c97191adfaac2e829355814ee88fcc3cc999b09219296ef3abe509eb2fbee6422044095bb220a0cb5fd23cb1b80ceb7d2b17773710c4d23470c10993226f23
7
- data.tar.gz: 5c49869cb24b420f4a7bc4d7c255c1b29fae2adf550ccd0ebc3dfb74a2ccafc72f7c09ed41217dedff0fc33c68c893bcca21f5239f37df282d12ead48d59a0d4
6
+ metadata.gz: a1dca87bab6d093dcc46a2941134964beacba1ded24898bd7445aec2e0fce1d1081a0404e7ba4ccb05fb5ecbfeb0e1995b964086ce16ad63376d4280f20ff302
7
+ data.tar.gz: '0885d2711fab0a98dbd2dfd0aff6ae6cd0452e5fc705b73cac3aecdc203b8f12bcbaa92c634b92f2fd8193ee813e542fa2f70f97646da1f84585fbad9f9de895'
@@ -1,6 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem 'rubypitaya', '1.7.2'
3
+ gem 'rubypitaya', '2.1.0'
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 (1.7.2)
65
+ rubypitaya (2.1.0)
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
  pry (= 0.12.2)
86
86
  rake (= 10.0)
87
87
  rspec (= 3.8.0)
88
- rubypitaya (= 1.7.2)
88
+ rubypitaya (= 2.1.0)
89
89
 
90
90
  BUNDLED WITH
91
91
  1.17.2
@@ -30,6 +30,10 @@ db-create:
30
30
  db-migrate:
31
31
  @docker-compose run --service-ports --rm rubypitaya bundle exec rake db:migrate
32
32
 
33
+ ## Rollback migrations STEP=1
34
+ db-rollback:
35
+ @docker-compose run --service-ports --rm -e STEP="$(STEP)" rubypitaya bundle exec rake db:rollback
36
+
33
37
  ## Drop database
34
38
  db-drop:
35
39
  @docker-compose run --service-ports --rm rubypitaya bundle exec rake db:drop
@@ -24,15 +24,39 @@ namespace :db do
24
24
  environment_name = ENV.fetch("RUBYPITAYA_ENV") { 'development' }
25
25
  database_config = RubyPitaya::DatabaseConfig.new(environment_name, RubyPitaya::Path::DATABASE_CONFIG_PATH)
26
26
  connection_data = database_config.connection_data
27
- migrations_path = RubyPitaya::Path::MIGRATIONS_FOLDER_PATH
27
+ migrations_paths = [RubyPitaya::Path::Core::MIGRATIONS_FOLDER_PATH]
28
+ migrations_paths += RubyPitaya::Path::Plugins::MIGRATIONS_FOLDER_PATHS
29
+ migrations_paths += [RubyPitaya::Path::MIGRATIONS_FOLDER_PATH]
28
30
 
29
31
  ActiveRecord::Base.establish_connection(connection_data)
30
- ActiveRecord::Migrator.migrations_paths = [migrations_path]
32
+ ActiveRecord::Migrator.migrations_paths = migrations_paths
31
33
  ActiveRecord::Tasks::DatabaseTasks.migrate
32
34
  ActiveRecord::Base.connection.close
33
35
  puts 'Database migrated.'
34
36
  end
35
37
 
38
+ desc 'Rollback migrations'
39
+ task :rollback do
40
+ environment_name = ENV.fetch("RUBYPITAYA_ENV") { 'development' }
41
+ database_config = RubyPitaya::DatabaseConfig.new(environment_name, RubyPitaya::Path::DATABASE_CONFIG_PATH)
42
+ connection_data = database_config.connection_data
43
+
44
+ step = ENV["STEP"] ? ENV["STEP"].to_i : 1
45
+
46
+ if step == 0
47
+ puts ''
48
+ puts 'Error: No rollback to STEP=0'
49
+ puts ''
50
+ return
51
+ end
52
+
53
+ ActiveRecord::Base.establish_connection(connection_data)
54
+ ActiveRecord::Base.connection.migration_context.rollback(step)
55
+ ActiveRecord::Base.connection.close
56
+
57
+ puts 'Rollback done.'
58
+ end
59
+
36
60
  desc 'Drop the database'
37
61
  task :drop do
38
62
  environment_name = ENV.fetch("RUBYPITAYA_ENV") { 'development' }
@@ -1,15 +1,22 @@
1
1
  class StatusCodes
2
- # Success codes
3
- CODE_OK = 'RP-200'
4
2
 
5
- # Error codes
6
- CODE_UNKNOWN = 'RP-000'
7
- CODE_HANDLER_NOT_FOUNDED = 'RP-001'
8
- CODE_ACTION_NOT_FOUNDED = 'RP-002'
9
- CODE_NOT_AUTHENTICATED = 'RP-003'
10
- CODE_AUTHENTICATION_ERROR = 'RP-004'
3
+ CODE_OK = RubyPitaya::StatusCodes::CODE_OK
11
4
 
12
- class Connector
13
- CODE_UNKNOWN = 'PIT-000'
14
- end
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_FOUNDED = 'RP-001'
16
+ # RubyPitaya::StatusCodes::CODE_ACTION_NOT_FOUNDED = '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
+ ################
15
22
  end
@@ -1,4 +1,3 @@
1
- require 'active_record'
2
-
3
- class User < ActiveRecord::Base
4
- end
1
+ User.class_eval do
2
+ # has_one :player
3
+ end
@@ -14,14 +14,14 @@ ActiveSupport::LogSubscriber.colorize_logging = true
14
14
 
15
15
  Gem.find_files('rubypitaya/**/*.rb').each do |path|
16
16
  require path unless path.end_with?('spec.rb') ||
17
- path.include?('db/migrate') ||
17
+ path.include?('db/migration') ||
18
18
  path.include?('app-template')
19
19
  end
20
20
 
21
21
  app_files_path = File.join(RubyPitaya::Path::APP_FOLDER_PATH, '**/*.rb')
22
22
  Dir[app_files_path].each do |path|
23
23
  require path unless path.end_with?('spec.rb') ||
24
- path.include?('db/migrate')
24
+ path.include?('db/migration')
25
25
  end
26
26
 
27
27
  require 'irb'
@@ -34,7 +34,7 @@ services:
34
34
  - 'etcd'
35
35
  - 'redis'
36
36
  ports:
37
- - '3252:3250'
37
+ - '3250:3250'
38
38
  environment:
39
39
  PITAYA_CLUSTER_RPC_SERVER_NATS_CONNECT: 'nats://nats:4222'
40
40
  PITAYA_CLUSTER_RPC_CLIENT_NATS_CONNECT: 'nats://nats:4222'
@@ -0,0 +1,4 @@
1
+ require 'active_record'
2
+
3
+ class User < ActiveRecord::Base
4
+ end
@@ -5,20 +5,26 @@ module RubyPitaya
5
5
  class ApplicationFilesImporter
6
6
 
7
7
  def import
8
- app_files_path = "#{Path::APP_FOLDER_PATH}/**/*.rb"
8
+ @app_folder_paths = [Path::Core::APP_FOLDER_PATH, Path::APP_FOLDER_PATH] + Path::Plugins::APP_FOLDER_PATHS
9
9
 
10
- Gem.find_files(app_files_path).each { |path| require path }
10
+ @app_folder_paths.each do |app_folder_path|
11
+ app_files_path = "#{app_folder_path}/**/*.rb"
12
+
13
+ Gem.find_files(app_files_path).each { |path| require path }
14
+ end
11
15
  end
12
16
 
13
17
  def auto_reload
14
18
  require 'listen'
15
19
 
16
- @app_files_listener = Listen.to(Path::APP_FOLDER_PATH, only: /\.rb$/) do |modified, added, removed|
17
- import_added_files(added)
18
- reload_modified_files(modified)
19
- end
20
+ @app_folder_paths.each do |app_folder_path|
21
+ @app_files_listener = Listen.to(app_folder_path, only: /\.rb$/) do |modified, added, removed|
22
+ import_added_files(added)
23
+ reload_modified_files(modified)
24
+ end
20
25
 
21
- @app_files_listener.start
26
+ @app_files_listener.start
27
+ end
22
28
  end
23
29
 
24
30
  private
@@ -2,16 +2,17 @@ module RubyPitaya
2
2
 
3
3
  class Config
4
4
 
5
- def initialize(configs_folder_path)
6
- @configs_folder_path = configs_folder_path
7
-
8
- path_to_all_files = File.join(@configs_folder_path, '**/*.json')
9
- config_files = Dir.glob(path_to_all_files)
10
-
5
+ def initialize()
11
6
  @config = {}
7
+ @configs_folder_paths = [Path::APP_CONFIG_FOLDER_PATH] + Path::Plugins::APP_CONFIG_FOLDER_PATHS
12
8
 
13
- config_files.each do |config_file|
14
- load_config_file(config_file)
9
+ @configs_folder_paths.each do |configs_folder_path|
10
+ path_to_all_files = File.join(configs_folder_path, '**/*.json')
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
15
16
  end
16
17
  end
17
18
 
@@ -26,21 +27,23 @@ module RubyPitaya
26
27
  def auto_reload
27
28
  require 'listen'
28
29
 
29
- @config_files_listener = Listen.to(@configs_folder_path, only: /\.json$/) do |modified, added, removed|
30
- import_added_files(added)
31
- reload_modified_files(modified)
32
- end
30
+ @configs_folder_paths.each do |configs_folder_path|
31
+ config_files_listener = Listen.to(configs_folder_path, only: /\.json$/) do |modified, added, removed|
32
+ import_added_files(configs_folder_path, added)
33
+ reload_modified_files(configs_folder_path, modified)
34
+ end
33
35
 
34
- @config_files_listener.start
36
+ config_files_listener.start
37
+ end
35
38
  end
36
39
 
37
40
  private
38
41
 
39
- def load_config_file(file_path)
42
+ def load_config_file(configs_folder_path, file_path)
40
43
  config_text = File.open(file_path, &:read)
41
44
  config_hash = JSON.parse(config_text)
42
45
 
43
- path_array = file_path.sub(/^#{@configs_folder_path}/, '')[0..-6]
46
+ path_array = file_path.sub(/^#{configs_folder_path}/, '')[0..-6]
44
47
  .split('/')
45
48
 
46
49
  set_config_value(path_array, config_hash)
@@ -50,17 +53,17 @@ module RubyPitaya
50
53
  puts error.backtrace
51
54
  end
52
55
 
53
- def import_added_files(files_path)
56
+ def import_added_files(configs_folder_path, files_path)
54
57
  files_path.each do |path|
55
- load_config_file(path)
58
+ load_config_file(configs_folder_path, path)
56
59
 
57
60
  puts "ADDED config: #{path}"
58
61
  end
59
62
  end
60
63
 
61
- def reload_modified_files(files_path)
64
+ def reload_modified_files(configs_folder_path, files_path)
62
65
  files_path.each do |path|
63
- load_config_file(path)
66
+ load_config_file(configs_folder_path, path)
64
67
 
65
68
  puts "MODIFIED @config: #{path}"
66
69
  end
@@ -75,7 +78,7 @@ module RubyPitaya
75
78
  if is_last_index
76
79
  config[key] = value
77
80
  else
78
- config[key] = {}
81
+ config[key] = {} unless config.key?(key)
79
82
  config = config[key]
80
83
  end
81
84
  end
@@ -4,9 +4,15 @@ module RubyPitaya
4
4
 
5
5
  class HandlerRouter
6
6
 
7
- def initialize(handler_folder_path, routes_path)
7
+ def initialize()
8
+ routes_path = Path::ROUTES_FILE_PATH
9
+ handler_folder_paths = [Path::HANDLERS_FOLDER_PATH] + Path::Plugins::HANDLERS_FOLDER_PATHS
10
+
8
11
  import_routes_file(routes_path)
9
- import_handler_files(handler_folder_path)
12
+
13
+ handler_folder_paths.each do |handler_folder_path|
14
+ import_handler_files(handler_folder_path)
15
+ end
10
16
 
11
17
  import_routes_class
12
18
  import_handler_classes
@@ -8,6 +8,7 @@ require 'rubypitaya/core/session'
8
8
  require 'rubypitaya/core/postman'
9
9
  require 'rubypitaya/core/parameters'
10
10
  require 'rubypitaya/core/routes_base'
11
+ require 'rubypitaya/core/status_codes'
11
12
  require 'rubypitaya/core/handler_router'
12
13
  require 'rubypitaya/core/etcd_connector'
13
14
  require 'rubypitaya/core/nats_connector'
@@ -61,7 +62,7 @@ module RubyPitaya
61
62
 
62
63
  @session = Session.new
63
64
  @postman = Postman.new(@nats_connector)
64
- @config = Config.new(Path::APP_CONFIG_FOLDER_PATH)
65
+ @config = Config.new()
65
66
  @config.auto_reload if @is_development_environment
66
67
 
67
68
  @bll = InstanceHolder.new
@@ -70,8 +71,7 @@ module RubyPitaya
70
71
  @initializer_broadcast = InitializerBroadcast.new
71
72
  @initializer_broadcast.run(@initializer_content)
72
73
 
73
- @handler_router = HandlerRouter.new(Path::HANDLERS_FOLDER_PATH,
74
- Path::ROUTES_FILE_PATH)
74
+ @handler_router = HandlerRouter.new()
75
75
 
76
76
  run_server
77
77
  end
@@ -8,8 +8,20 @@ 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
- MIGRATIONS_FOLDER_PATH = File.join(Dir.pwd, 'db/migrate/')
11
+ MIGRATIONS_FOLDER_PATH = File.join(Dir.pwd, 'db/migration/')
12
12
 
13
13
  ROUTES_FILE_PATH = File.join(Dir.pwd, 'config/routes.rb')
14
+
15
+ class Core
16
+ APP_FOLDER_PATH = File.join(__dir__, 'app/')
17
+ MIGRATIONS_FOLDER_PATH = File.join(__dir__, 'db/migration/')
18
+ end
19
+
20
+ class Plugins
21
+ APP_FOLDER_PATHS = Dir.glob(File.join(Dir.pwd, 'plugins/*/app/'))
22
+ HANDLERS_FOLDER_PATHS = Dir.glob(File.join(Dir.pwd, 'plugins/*/app/handlers'))
23
+ APP_CONFIG_FOLDER_PATHS = Dir.glob(File.join(Dir.pwd, 'plugins/*/app/config/'))
24
+ MIGRATIONS_FOLDER_PATHS = Dir.glob(File.join(Dir.pwd, 'plugins/*/db/migration'))
25
+ end
14
26
  end
15
27
  end
@@ -0,0 +1,18 @@
1
+ module RubyPitaya
2
+
3
+ class StatusCodes
4
+ # Success codes
5
+ CODE_OK = 'RP-200'
6
+
7
+ # Error codes
8
+ CODE_UNKNOWN = 'RP-000'
9
+ CODE_HANDLER_NOT_FOUNDED = 'RP-001'
10
+ CODE_ACTION_NOT_FOUNDED = 'RP-002'
11
+ CODE_NOT_AUTHENTICATED = 'RP-003'
12
+ CODE_AUTHENTICATION_ERROR = 'RP-004'
13
+
14
+ class Connector
15
+ CODE_UNKNOWN = 'PIT-000'
16
+ end
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
1
  module RubyPitaya
2
- VERSION = "1.7.2"
2
+ VERSION = '2.1.0'
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: 1.7.2
4
+ version: 2.1.0
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-06-24 00:00:00.000000000 Z
11
+ date: 2020-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -204,8 +204,7 @@ files:
204
204
  - "./lib/rubypitaya/app-template/bin/console"
205
205
  - "./lib/rubypitaya/app-template/config/database.yml"
206
206
  - "./lib/rubypitaya/app-template/config/routes.rb"
207
- - "./lib/rubypitaya/app-template/db/migrate/001_create_user_migration.rb"
208
- - "./lib/rubypitaya/app-template/db/migrate/002_create_player_migration.rb"
207
+ - "./lib/rubypitaya/app-template/db/migration/0000000002_create_player_migration.rb"
209
208
  - "./lib/rubypitaya/app-template/docker-compose.yml"
210
209
  - "./lib/rubypitaya/app-template/docker/dev/Dockerfile"
211
210
  - "./lib/rubypitaya/app-template/docker/entrypoint.sh"
@@ -225,10 +224,12 @@ files:
225
224
  - "./lib/rubypitaya/app-template/kubernetes/statefulset-nats.yaml"
226
225
  - "./lib/rubypitaya/app-template/kubernetes/statefulset-postgres.yaml"
227
226
  - "./lib/rubypitaya/app-template/kubernetes/statefulset-redis.yaml"
227
+ - "./lib/rubypitaya/core/app/models/user.rb"
228
228
  - "./lib/rubypitaya/core/application_files_importer.rb"
229
229
  - "./lib/rubypitaya/core/config.rb"
230
230
  - "./lib/rubypitaya/core/database_config.rb"
231
231
  - "./lib/rubypitaya/core/database_connector.rb"
232
+ - "./lib/rubypitaya/core/db/migration/0000000001_create_user_migration.rb"
232
233
  - "./lib/rubypitaya/core/etcd_connector.rb"
233
234
  - "./lib/rubypitaya/core/handler_base.rb"
234
235
  - "./lib/rubypitaya/core/handler_router.rb"
@@ -244,6 +245,7 @@ files:
244
245
  - "./lib/rubypitaya/core/redis_connector.rb"
245
246
  - "./lib/rubypitaya/core/routes_base.rb"
246
247
  - "./lib/rubypitaya/core/session.rb"
248
+ - "./lib/rubypitaya/core/status_codes.rb"
247
249
  - "./lib/rubypitaya/version.rb"
248
250
  - bin/rubypitaya
249
251
  homepage: https://gitlab.com/LucianoPC/ruby-pitaya