rubypitaya 1.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 +7 -0
- data/bin/rubypitaya +56 -0
- data/lib/rubypitaya/app-template/Gemfile +10 -0
- data/lib/rubypitaya/app-template/Gemfile.lock +83 -0
- data/lib/rubypitaya/app-template/Makefile +91 -0
- data/lib/rubypitaya/app-template/Rakefile +57 -0
- data/lib/rubypitaya/app-template/app/app_initializer.rb +23 -0
- data/lib/rubypitaya/app-template/app/bll/player_bll.rb +10 -0
- data/lib/rubypitaya/app-template/app/config/initial_player.json +3 -0
- data/lib/rubypitaya/app-template/app/constants/status_codes.rb +15 -0
- data/lib/rubypitaya/app-template/app/handlers/hello_world_handler.rb +11 -0
- data/lib/rubypitaya/app-template/app/handlers/player_handler.rb +79 -0
- data/lib/rubypitaya/app-template/app/models/player.rb +15 -0
- data/lib/rubypitaya/app-template/app/models/user.rb +4 -0
- data/lib/rubypitaya/app-template/bin/console +22 -0
- data/lib/rubypitaya/app-template/config/database.yml +22 -0
- data/lib/rubypitaya/app-template/db/migrate/001_create_user_migration.rb +12 -0
- data/lib/rubypitaya/app-template/db/migrate/002_create_player_migration.rb +14 -0
- data/lib/rubypitaya/app-template/docker/dev/Dockerfile +19 -0
- data/lib/rubypitaya/app-template/docker/entrypoint.sh +13 -0
- data/lib/rubypitaya/app-template/docker/prod/Dockerfile +32 -0
- data/lib/rubypitaya/app-template/docker/prod/Makefile +67 -0
- data/lib/rubypitaya/app-template/docker-compose.yml +75 -0
- data/lib/rubypitaya/core/application_files_importer.rb +13 -0
- data/lib/rubypitaya/core/config.rb +33 -0
- data/lib/rubypitaya/core/database_config.rb +50 -0
- data/lib/rubypitaya/core/database_connector.rb +22 -0
- data/lib/rubypitaya/core/etcd_connector.rb +75 -0
- data/lib/rubypitaya/core/handler_base.rb +26 -0
- data/lib/rubypitaya/core/handler_router.rb +71 -0
- data/lib/rubypitaya/core/initializer_base.rb +8 -0
- data/lib/rubypitaya/core/initializer_broadcast.rb +15 -0
- data/lib/rubypitaya/core/initializer_content.rb +12 -0
- data/lib/rubypitaya/core/instance_holder.rb +17 -0
- data/lib/rubypitaya/core/main.rb +121 -0
- data/lib/rubypitaya/core/nats_connector.rb +148 -0
- data/lib/rubypitaya/core/parameters.rb +245 -0
- data/lib/rubypitaya/core/path.rb +13 -0
- data/lib/rubypitaya/core/postman.rb +31 -0
- data/lib/rubypitaya/core/redis_connector.rb +26 -0
- data/lib/rubypitaya/core/session.rb +29 -0
- data/lib/rubypitaya/version.rb +4 -0
- data/lib/rubypitaya.rb +20 -0
- metadata +240 -0
@@ -0,0 +1,245 @@
|
|
1
|
+
require 'date'
|
2
|
+
require 'bigdecimal'
|
3
|
+
require 'stringio'
|
4
|
+
|
5
|
+
require 'active_support/concern'
|
6
|
+
require 'active_support/core_ext/hash/indifferent_access'
|
7
|
+
require 'active_support/core_ext/array/wrap'
|
8
|
+
|
9
|
+
module RubyPitaya
|
10
|
+
|
11
|
+
class ParameterMissing < IndexError
|
12
|
+
attr_reader :param
|
13
|
+
|
14
|
+
def initialize(param)
|
15
|
+
@param = param
|
16
|
+
super("param is missing or the value is empty: #{param}")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class UnpermittedParameters < IndexError
|
21
|
+
attr_reader :params
|
22
|
+
|
23
|
+
def initialize(params)
|
24
|
+
@params = params
|
25
|
+
super("found unpermitted parameters: #{params.join(", ")}")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class Parameters < ActiveSupport::HashWithIndifferentAccess
|
30
|
+
attr_accessor :permitted
|
31
|
+
alias :permitted? :permitted
|
32
|
+
|
33
|
+
cattr_accessor :action_on_unpermitted_parameters, :instance_accessor => false
|
34
|
+
|
35
|
+
# Never raise an UnpermittedParameters exception because of these params
|
36
|
+
# are present. They are added by Rails and it's of no concern.
|
37
|
+
NEVER_UNPERMITTED_PARAMS = %w( controller action )
|
38
|
+
|
39
|
+
def initialize(attributes = nil)
|
40
|
+
super(attributes)
|
41
|
+
@permitted = false
|
42
|
+
end
|
43
|
+
|
44
|
+
def permit!
|
45
|
+
each_pair do |key, value|
|
46
|
+
value = convert_hashes_to_parameters(key, value)
|
47
|
+
Array.wrap(value).each do |_|
|
48
|
+
_.permit! if _.respond_to? :permit!
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
@permitted = true
|
53
|
+
self
|
54
|
+
end
|
55
|
+
|
56
|
+
def require(key)
|
57
|
+
self[key].presence || raise(ParameterMissing.new(key))
|
58
|
+
end
|
59
|
+
|
60
|
+
alias :required :require
|
61
|
+
|
62
|
+
def permit(*filters)
|
63
|
+
params = self.class.new
|
64
|
+
|
65
|
+
filters.flatten.each do |filter|
|
66
|
+
case filter
|
67
|
+
when Symbol, String
|
68
|
+
permitted_scalar_filter(params, filter)
|
69
|
+
when Hash then
|
70
|
+
hash_filter(params, filter)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
unpermitted_parameters!(params) if self.class.action_on_unpermitted_parameters
|
75
|
+
|
76
|
+
params.permit!
|
77
|
+
end
|
78
|
+
|
79
|
+
def [](key)
|
80
|
+
convert_hashes_to_parameters(key, super)
|
81
|
+
end
|
82
|
+
|
83
|
+
def fetch(key, *args)
|
84
|
+
convert_hashes_to_parameters(key, super, false)
|
85
|
+
rescue KeyError, IndexError
|
86
|
+
raise ParameterMissing.new(key)
|
87
|
+
end
|
88
|
+
|
89
|
+
def slice(*keys)
|
90
|
+
self.class.new(super).tap do |new_instance|
|
91
|
+
new_instance.instance_variable_set :@permitted, @permitted
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def dup
|
96
|
+
self.class.new(self).tap do |duplicate|
|
97
|
+
duplicate.default = default
|
98
|
+
duplicate.instance_variable_set :@permitted, @permitted
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
protected
|
103
|
+
def convert_value(value, conversion = nil)
|
104
|
+
if value.class == Hash
|
105
|
+
Parameters.new(value)
|
106
|
+
elsif value.is_a?(Array)
|
107
|
+
value.dup.replace(value.map { |e| convert_value(e) })
|
108
|
+
else
|
109
|
+
value
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
private
|
114
|
+
|
115
|
+
def convert_hashes_to_parameters(key, value, assign_if_converted=true)
|
116
|
+
converted = convert_value_to_parameters(value)
|
117
|
+
self[key] = converted if assign_if_converted && !converted.equal?(value)
|
118
|
+
converted
|
119
|
+
end
|
120
|
+
|
121
|
+
def convert_value_to_parameters(value)
|
122
|
+
if value.is_a?(Array)
|
123
|
+
value.map { |_| convert_value_to_parameters(_) }
|
124
|
+
elsif value.is_a?(Parameters) || !value.is_a?(Hash)
|
125
|
+
value
|
126
|
+
else
|
127
|
+
self.class.new(value)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
#
|
132
|
+
# --- Filtering ----------------------------------------------------------
|
133
|
+
#
|
134
|
+
|
135
|
+
# This is a white list of permitted scalar types that includes the ones
|
136
|
+
# supported in XML and JSON requests.
|
137
|
+
#
|
138
|
+
# This list is in particular used to filter ordinary requests, String goes
|
139
|
+
# as first element to quickly short-circuit the common case.
|
140
|
+
#
|
141
|
+
# If you modify this collection please update the README.
|
142
|
+
PERMITTED_SCALAR_TYPES = [
|
143
|
+
String,
|
144
|
+
Symbol,
|
145
|
+
NilClass,
|
146
|
+
Numeric,
|
147
|
+
TrueClass,
|
148
|
+
FalseClass,
|
149
|
+
Date,
|
150
|
+
Time,
|
151
|
+
# DateTimes are Dates, we document the type but avoid the redundant check.
|
152
|
+
StringIO,
|
153
|
+
IO,
|
154
|
+
]
|
155
|
+
|
156
|
+
def permitted_scalar?(value)
|
157
|
+
PERMITTED_SCALAR_TYPES.any? {|type| value.is_a?(type)}
|
158
|
+
end
|
159
|
+
|
160
|
+
def array_of_permitted_scalars?(value)
|
161
|
+
if value.is_a?(Array)
|
162
|
+
value.all? {|element| permitted_scalar?(element)}
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
def permitted_scalar_filter(params, key)
|
167
|
+
if has_key?(key) && permitted_scalar?(self[key])
|
168
|
+
params[key] = self[key]
|
169
|
+
end
|
170
|
+
|
171
|
+
keys.grep(/\A#{Regexp.escape(key.to_s)}\(\d+[if]?\)\z/).each do |key|
|
172
|
+
if permitted_scalar?(self[key])
|
173
|
+
params[key] = self[key]
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
def array_of_permitted_scalars_filter(params, key, hash = self)
|
179
|
+
if hash.has_key?(key) && array_of_permitted_scalars?(hash[key])
|
180
|
+
params[key] = hash[key]
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
def hash_filter(params, filter)
|
185
|
+
filter = filter.with_indifferent_access
|
186
|
+
|
187
|
+
# Slicing filters out non-declared keys.
|
188
|
+
slice(*filter.keys).each do |key, value|
|
189
|
+
next unless value
|
190
|
+
|
191
|
+
if filter[key] == []
|
192
|
+
# Declaration {:comment_ids => []}.
|
193
|
+
array_of_permitted_scalars_filter(params, key)
|
194
|
+
else
|
195
|
+
# Declaration {:user => :name} or {:user => [:name, :age, {:adress => ...}]}.
|
196
|
+
params[key] = each_element(value) do |element, index|
|
197
|
+
if element.is_a?(Hash)
|
198
|
+
element = self.class.new(element) unless element.respond_to?(:permit)
|
199
|
+
element.permit(*Array.wrap(filter[key]))
|
200
|
+
elsif filter[key].is_a?(Hash) && filter[key][index] == []
|
201
|
+
array_of_permitted_scalars_filter(params, index, value)
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
def each_element(value)
|
209
|
+
if value.is_a?(Array)
|
210
|
+
value.map { |el| yield el }.compact
|
211
|
+
# fields_for on an array of records uses numeric hash keys.
|
212
|
+
elsif fields_for_style?(value)
|
213
|
+
hash = value.class.new
|
214
|
+
value.each { |k,v| hash[k] = yield(v, k) }
|
215
|
+
hash
|
216
|
+
else
|
217
|
+
yield value
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
def fields_for_style?(object)
|
222
|
+
object.is_a?(Hash) && object.all? { |k, v| k =~ /\A-?\d+\z/ && v.is_a?(Hash) }
|
223
|
+
end
|
224
|
+
|
225
|
+
def unpermitted_parameters!(params)
|
226
|
+
return unless self.class.action_on_unpermitted_parameters
|
227
|
+
|
228
|
+
unpermitted_keys = unpermitted_keys(params)
|
229
|
+
|
230
|
+
if unpermitted_keys.any?
|
231
|
+
case self.class.action_on_unpermitted_parameters
|
232
|
+
when :log
|
233
|
+
name = "unpermitted_parameters.action_controller"
|
234
|
+
ActiveSupport::Notifications.instrument(name, :keys => unpermitted_keys)
|
235
|
+
when :raise
|
236
|
+
raise UnpermittedParameters.new(unpermitted_keys)
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
def unpermitted_keys(params)
|
242
|
+
self.keys - params.keys - NEVER_UNPERMITTED_PARAMS
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module RubyPitaya
|
2
|
+
|
3
|
+
class Path
|
4
|
+
APP_TEMPLATE_FOLDER_PATH = File.join(__dir__, '../app-template/')
|
5
|
+
|
6
|
+
DATABASE_CONFIG_PATH = File.join(Dir.pwd, 'config/database.yml')
|
7
|
+
|
8
|
+
APP_FOLDER_PATH = File.join(Dir.pwd, 'app/')
|
9
|
+
HANDLERS_FOLDER_PATH = File.join(Dir.pwd, 'app/handlers/')
|
10
|
+
APP_CONFIG_FOLDER_PATH = File.join(Dir.pwd, 'app/config/')
|
11
|
+
MIGRATIONS_FOLDER_PATH = File.join(Dir.pwd, 'db/migrate/')
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'rubypitaya/core/nats_connector'
|
2
|
+
|
3
|
+
module RubyPitaya
|
4
|
+
|
5
|
+
class Postman
|
6
|
+
|
7
|
+
MESSAGE_ROUTE_BIND_SESSION = 'sys.bindsession'
|
8
|
+
|
9
|
+
def initialize(nats_connector)
|
10
|
+
@nats_connector = nats_connector
|
11
|
+
end
|
12
|
+
|
13
|
+
def bind_session(session)
|
14
|
+
route = MESSAGE_ROUTE_BIND_SESSION
|
15
|
+
|
16
|
+
nats_session = NatsSession.new(
|
17
|
+
id: session.id,
|
18
|
+
uid: session.uid,
|
19
|
+
data: session.data.to_json,
|
20
|
+
)
|
21
|
+
|
22
|
+
response = @nats_connector.push_to_frontend(session, route, nats_session)
|
23
|
+
|
24
|
+
response
|
25
|
+
end
|
26
|
+
|
27
|
+
def push_to_user(uid, message_route, payload)
|
28
|
+
@nats_connector.push_to_user(uid, message_route, payload)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'redis'
|
2
|
+
|
3
|
+
module RubyPitaya
|
4
|
+
|
5
|
+
class RedisConnector
|
6
|
+
|
7
|
+
attr_reader :redis
|
8
|
+
|
9
|
+
def initialize(redis_address)
|
10
|
+
@redis = nil
|
11
|
+
@redis_address = redis_address
|
12
|
+
end
|
13
|
+
|
14
|
+
def connect
|
15
|
+
@redis = Redis.new(url: @redis_address)
|
16
|
+
|
17
|
+
test_connection
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_connection
|
21
|
+
@redis.set('tmp', 'value')
|
22
|
+
@redis.get('tmp')
|
23
|
+
@redis.del('tmp')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module RubyPitaya
|
2
|
+
|
3
|
+
class Session
|
4
|
+
|
5
|
+
attr_reader :id, :uid, :data, :metadata, :frontend_id
|
6
|
+
|
7
|
+
attr_writer :uid, :data
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@id = ''
|
11
|
+
@uid = ''
|
12
|
+
@data = {}
|
13
|
+
@metadata = {}
|
14
|
+
@frontend_id = ''
|
15
|
+
end
|
16
|
+
|
17
|
+
def update(id, uid, data, metadata, frontend_id)
|
18
|
+
@id = id
|
19
|
+
@uid = uid
|
20
|
+
@data = data
|
21
|
+
@metadata = metadata
|
22
|
+
@frontend_id = frontend_id
|
23
|
+
end
|
24
|
+
|
25
|
+
def authenticated?
|
26
|
+
!@uid.strip.empty?
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/rubypitaya.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
require 'rubypitaya/core/main'
|
4
|
+
|
5
|
+
module RubyPitaya
|
6
|
+
|
7
|
+
class RubyPitaya
|
8
|
+
|
9
|
+
def self.run_server
|
10
|
+
Main.new
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.create_project(project_name, folder_path)
|
14
|
+
project_path = File.join(folder_path, project_name)
|
15
|
+
app_template_path = Path::APP_TEMPLATE_FOLDER_PATH
|
16
|
+
|
17
|
+
FileUtils.cp_r app_template_path, project_path
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
metadata
ADDED
@@ -0,0 +1,240 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rubypitaya
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Luciano Prestes Cavalcanti
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-04-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: pg
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.21.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.21.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: eventmachine
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.2.7
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.2.7
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: nats
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.11.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.11.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: redis
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 4.1.3
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 4.1.3
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: etcdv3
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.10.2
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.10.2
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: protobuf
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 3.10.0
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 3.10.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: activerecord
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 6.0.2
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 6.0.2
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: pry
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.12.2
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.12.2
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: bundler
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 1.17.2
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 1.17.2
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rake
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - '='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '10.0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - '='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '10.0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rspec
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 3.8.0
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 3.8.0
|
167
|
+
description: RubyPitaya is an application to create servers using the pitaya protocol.
|
168
|
+
email:
|
169
|
+
- lucianopcbr@gmail.com
|
170
|
+
executables:
|
171
|
+
- rubypitaya
|
172
|
+
extensions: []
|
173
|
+
extra_rdoc_files: []
|
174
|
+
files:
|
175
|
+
- "./lib/rubypitaya.rb"
|
176
|
+
- "./lib/rubypitaya/app-template/Gemfile"
|
177
|
+
- "./lib/rubypitaya/app-template/Gemfile.lock"
|
178
|
+
- "./lib/rubypitaya/app-template/Makefile"
|
179
|
+
- "./lib/rubypitaya/app-template/Rakefile"
|
180
|
+
- "./lib/rubypitaya/app-template/app/app_initializer.rb"
|
181
|
+
- "./lib/rubypitaya/app-template/app/bll/player_bll.rb"
|
182
|
+
- "./lib/rubypitaya/app-template/app/config/initial_player.json"
|
183
|
+
- "./lib/rubypitaya/app-template/app/constants/status_codes.rb"
|
184
|
+
- "./lib/rubypitaya/app-template/app/handlers/hello_world_handler.rb"
|
185
|
+
- "./lib/rubypitaya/app-template/app/handlers/player_handler.rb"
|
186
|
+
- "./lib/rubypitaya/app-template/app/models/player.rb"
|
187
|
+
- "./lib/rubypitaya/app-template/app/models/user.rb"
|
188
|
+
- "./lib/rubypitaya/app-template/bin/console"
|
189
|
+
- "./lib/rubypitaya/app-template/config/database.yml"
|
190
|
+
- "./lib/rubypitaya/app-template/db/migrate/001_create_user_migration.rb"
|
191
|
+
- "./lib/rubypitaya/app-template/db/migrate/002_create_player_migration.rb"
|
192
|
+
- "./lib/rubypitaya/app-template/docker-compose.yml"
|
193
|
+
- "./lib/rubypitaya/app-template/docker/dev/Dockerfile"
|
194
|
+
- "./lib/rubypitaya/app-template/docker/entrypoint.sh"
|
195
|
+
- "./lib/rubypitaya/app-template/docker/prod/Dockerfile"
|
196
|
+
- "./lib/rubypitaya/app-template/docker/prod/Makefile"
|
197
|
+
- "./lib/rubypitaya/core/application_files_importer.rb"
|
198
|
+
- "./lib/rubypitaya/core/config.rb"
|
199
|
+
- "./lib/rubypitaya/core/database_config.rb"
|
200
|
+
- "./lib/rubypitaya/core/database_connector.rb"
|
201
|
+
- "./lib/rubypitaya/core/etcd_connector.rb"
|
202
|
+
- "./lib/rubypitaya/core/handler_base.rb"
|
203
|
+
- "./lib/rubypitaya/core/handler_router.rb"
|
204
|
+
- "./lib/rubypitaya/core/initializer_base.rb"
|
205
|
+
- "./lib/rubypitaya/core/initializer_broadcast.rb"
|
206
|
+
- "./lib/rubypitaya/core/initializer_content.rb"
|
207
|
+
- "./lib/rubypitaya/core/instance_holder.rb"
|
208
|
+
- "./lib/rubypitaya/core/main.rb"
|
209
|
+
- "./lib/rubypitaya/core/nats_connector.rb"
|
210
|
+
- "./lib/rubypitaya/core/parameters.rb"
|
211
|
+
- "./lib/rubypitaya/core/path.rb"
|
212
|
+
- "./lib/rubypitaya/core/postman.rb"
|
213
|
+
- "./lib/rubypitaya/core/redis_connector.rb"
|
214
|
+
- "./lib/rubypitaya/core/session.rb"
|
215
|
+
- "./lib/rubypitaya/version.rb"
|
216
|
+
- bin/rubypitaya
|
217
|
+
homepage: https://gitlab.com/LucianoPC/ruby-pitaya
|
218
|
+
licenses:
|
219
|
+
- MIT
|
220
|
+
metadata: {}
|
221
|
+
post_install_message:
|
222
|
+
rdoc_options: []
|
223
|
+
require_paths:
|
224
|
+
- lib
|
225
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - ">="
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
230
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
231
|
+
requirements:
|
232
|
+
- - ">="
|
233
|
+
- !ruby/object:Gem::Version
|
234
|
+
version: '0'
|
235
|
+
requirements: []
|
236
|
+
rubygems_version: 3.0.3
|
237
|
+
signing_key:
|
238
|
+
specification_version: 4
|
239
|
+
summary: Create servers with pitaya
|
240
|
+
test_files: []
|