rubypitaya 1.7.1 → 2.0.0

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: 8c64a441e12fb5d3a9b7ff19762a9bc5a3ce3dea73ae73d98693dba745e49299
4
- data.tar.gz: 7893c9fabe736b60619c6758645bb12e6a87a90f3f8e417096a077499613f1bc
3
+ metadata.gz: 22d3c8209b6441874334ea9dca6d209ff79ff63e5a5cbb4273125ac94bad12e7
4
+ data.tar.gz: 2d50b5319e1c113a92b5e67f76835a9be9706f4c60fc91185bdfa984cc576e25
5
5
  SHA512:
6
- metadata.gz: a6c8988dc0946445a6f7d2921344a1f80f342a476050d8c5c10a7cb671bb6a8b01be447bdcd3ce35b04ca5a11bab5772c2fff319c8de5dca3c7dd6a625fcb53a
7
- data.tar.gz: b0edc4b5f49fa1b1ddd710aaf27072705c3ac967453d1244a0c51f37e5a9d6cc1b4a802de0ca260ec027f18d3714b1d4d39dd3eabc2e5956de29dde9cd715cba
6
+ metadata.gz: 95b1cc17e073849eea4aa13fb9f00f99f016768be5aaaeb00e93571829d036fbc4abc3407b165001858cfae0e23473f3f91ffdb52f8d14f3339599e82209f998
7
+ data.tar.gz: 1918c5bbda757ef6566acf6f32c269d6aaa08dae329316651d9ac417f7774fe1d0c1ac2f685d498f1b15e891d4b2f72f4fe15e4a6d8ef6b1975c0d1a323903b3
@@ -1,6 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem 'rubypitaya', '1.7.1'
3
+ gem 'rubypitaya', '2.0.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.1)
65
+ rubypitaya (2.0.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.1)
88
+ rubypitaya (= 2.0.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,38 @@ 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::MIGRATIONS_FOLDER_PATH]
28
+ migrations_paths += RubyPitaya::Path::Plugins::MIGRATIONS_FOLDER_PATHS
28
29
 
29
30
  ActiveRecord::Base.establish_connection(connection_data)
30
- ActiveRecord::Migrator.migrations_paths = [migrations_path]
31
+ ActiveRecord::Migrator.migrations_paths = migrations_paths
31
32
  ActiveRecord::Tasks::DatabaseTasks.migrate
32
33
  ActiveRecord::Base.connection.close
33
34
  puts 'Database migrated.'
34
35
  end
35
36
 
37
+ desc 'Rollback migrations'
38
+ task :rollback do
39
+ environment_name = ENV.fetch("RUBYPITAYA_ENV") { 'development' }
40
+ database_config = RubyPitaya::DatabaseConfig.new(environment_name, RubyPitaya::Path::DATABASE_CONFIG_PATH)
41
+ connection_data = database_config.connection_data
42
+
43
+ step = ENV["STEP"] ? ENV["STEP"].to_i : 1
44
+
45
+ if step == 0
46
+ puts ''
47
+ puts 'Error: No rollback to STEP=0'
48
+ puts ''
49
+ return
50
+ end
51
+
52
+ ActiveRecord::Base.establish_connection(connection_data)
53
+ ActiveRecord::Base.connection.migration_context.rollback(step)
54
+ ActiveRecord::Base.connection.close
55
+
56
+ puts 'Rollback done.'
57
+ end
58
+
36
59
  desc 'Drop the database'
37
60
  task :drop do
38
61
  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
@@ -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'
@@ -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::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,16 @@ 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
+
16
+ class Plugins
17
+ APP_FOLDER_PATHS = Dir.glob(File.join(Dir.pwd, 'plugins/*/app/'))
18
+ HANDLERS_FOLDER_PATHS = Dir.glob(File.join(Dir.pwd, 'plugins/*/app/handlers'))
19
+ APP_CONFIG_FOLDER_PATHS = Dir.glob(File.join(Dir.pwd, 'plugins/*/app/config/'))
20
+ MIGRATIONS_FOLDER_PATHS = Dir.glob(File.join(Dir.pwd, 'plugins/*/db/migration'))
21
+ end
14
22
  end
15
23
  end
@@ -12,15 +12,14 @@ module RubyPitaya
12
12
  end
13
13
 
14
14
  def connect
15
- @redis = Redis.new(url: @redis_address)
15
+ @redis = Redis.new(
16
+ url: @redis_address,
17
+ :reconnect_attempts => 10,
18
+ :reconnect_delay => 1.5,
19
+ :reconnect_delay_max => 2.0,
20
+ )
16
21
 
17
- test_connection
18
- end
19
-
20
- def test_connection
21
- @redis.set('tmp', 'value')
22
- @redis.get('tmp')
23
- @redis.del('tmp')
22
+ @redis.ping
24
23
  end
25
24
  end
26
25
  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.1"
2
+ VERSION = '2.0.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.1
4
+ version: 2.0.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,8 @@ 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/001_create_user_migration.rb"
208
+ - "./lib/rubypitaya/app-template/db/migration/002_create_player_migration.rb"
209
209
  - "./lib/rubypitaya/app-template/docker-compose.yml"
210
210
  - "./lib/rubypitaya/app-template/docker/dev/Dockerfile"
211
211
  - "./lib/rubypitaya/app-template/docker/entrypoint.sh"
@@ -244,6 +244,7 @@ files:
244
244
  - "./lib/rubypitaya/core/redis_connector.rb"
245
245
  - "./lib/rubypitaya/core/routes_base.rb"
246
246
  - "./lib/rubypitaya/core/session.rb"
247
+ - "./lib/rubypitaya/core/status_codes.rb"
247
248
  - "./lib/rubypitaya/version.rb"
248
249
  - bin/rubypitaya
249
250
  homepage: https://gitlab.com/LucianoPC/ruby-pitaya