radar-app 0.2.0 → 0.4.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
  SHA1:
3
- metadata.gz: 6451827404096a8f8f291cc24caf8867d54b25fa
4
- data.tar.gz: 725711585095dc1590354482f30194453ad2d0df
3
+ metadata.gz: 0aa7420cd66d5654f91c63d38055cd2d7391e2bb
4
+ data.tar.gz: bbc18a791718be0136d7714e123a28e382d347d5
5
5
  SHA512:
6
- metadata.gz: 433ce29ab89088d662b38a5886655024fa2e19e8bff212a6cde5e99f0de6160e5e719ed3456a68bbb7ee937b95cd00e7f6af16fbc85825af0187468734188a06
7
- data.tar.gz: c7d4039612a9de7835173a6cfcc4bbf3db8797b99365e464cb6f1732ff92895cc7a3443561107003cad3a304b2f87a9d62f3ac601fd84fcabbc087650f57eed3
6
+ metadata.gz: 943dde85e1c2a8e046ef48828ddcef5b81b5391936e44ae6c6337d5bcf6f03d7e9b006771599d71852574015abce6f9e93577f045cd55db44fa3b1bc26b80df3
7
+ data.tar.gz: 979d9ed0eb09e84822a3d97d4b02b79b6001543d8290b9735a4c9c2b14d7d560c28faf16250e3219c28ed2736d2e7368b8749206085d7a0828c9f88e31e27c55
@@ -1,2 +1 @@
1
1
  require 'radar/app'
2
- require 'thrift/builder'
@@ -17,6 +17,15 @@ require 'active_support/inflector'
17
17
 
18
18
  module Radar
19
19
  module App
20
+
21
+ def self.transaction_importer
22
+ @transaction_importer
23
+ end
24
+
25
+ def self.transaction_importer=(ti)
26
+ @transaction_importer = ti
27
+ end
28
+
20
29
  def self.env
21
30
  @env ||= ActiveSupport::StringInquirer.new(ENV['RADAR_ENV'] || 'development')
22
31
  end
@@ -2,9 +2,10 @@ module Radar
2
2
  module App
3
3
  module Bootstrap
4
4
  def self.startup
5
+ require 'radar-app'
5
6
  load_env_config
6
7
  load_app_config
7
- Radar::App::Server.new(ENV['PORT'] || 5000).start
8
+ load_initializers
8
9
  end
9
10
 
10
11
  protected
@@ -20,6 +21,10 @@ module Radar
20
21
  def self.load_app_config
21
22
  require './config/app.rb'
22
23
  end
24
+
25
+ def self.load_initializers
26
+ Dir['./config/initializers/**/*.rb'].each { |f| require f }
27
+ end
23
28
  end
24
29
  end
25
30
  end
@@ -6,8 +6,9 @@ module Radar
6
6
  module App
7
7
  class Runner < Thor
8
8
  register(Radar::App::Tasks::New, :new, 'new APP', 'Create a new app')
9
- register(Radar::App::Tasks::Generate, :generate, 'generate TYPE', 'Generate source files')
9
+ register(Radar::App::Tasks::Generate, :generate, 'generate TYPE NAME', 'Generate source files')
10
10
  register(Radar::App::Tasks::Server, :server, 'server', 'Start the app server')
11
+ register(Radar::App::Tasks::Console, :console, 'console', 'Start the console for test')
11
12
  end
12
13
  end
13
14
  end
@@ -7,10 +7,22 @@ module Radar
7
7
  include Radar::App::Logger
8
8
 
9
9
  def start
10
- handler = Radar::App::AnalyzerController.new
11
- processor = ProcessorFactory.create_processor(Radar::API::AnalyzerController::Processor).new(handler)
10
+ multiplexer = Thrift::MultiplexedProcessor.new
11
+ analyzer_controller = Radar::App::AnalyzerController.new
12
+ multiplexer.register_processor(
13
+ 'PortfolioAnalyzer',
14
+ ProcessorFactory.create_processor(Radar::API::AnalyzerController::Processor).
15
+ new(analyzer_controller)
16
+ )
17
+ unless Radar::App.transaction_importer.nil?
18
+ multiplexer.register_processor(
19
+ 'TransactionImporter',
20
+ ProcessorFactory.create_processor(Radar::API::TransactionImporter::Processor).
21
+ new(Radar::App.transaction_importer)
22
+ )
23
+ end
12
24
  transport = Thrift::ServerSocket.new(port)
13
- server = Thrift::NonblockingServer.new(processor, transport, Thrift::FramedTransportFactory.new)
25
+ server = Thrift::NonblockingServer.new(multiplexer, transport, Thrift::FramedTransportFactory.new)
14
26
  logger.info { "Starting app on port #{port}..." }
15
27
  server.serve
16
28
  end
@@ -1,3 +1,4 @@
1
1
  require 'radar/app/tasks/new'
2
2
  require 'radar/app/tasks/server'
3
3
  require 'radar/app/tasks/generate'
4
+ require 'radar/app/tasks/console'
@@ -0,0 +1,32 @@
1
+ require 'radar/app/bootstrap'
2
+
3
+ module Radar
4
+ module App
5
+ module Tasks
6
+ class Console < Thor::Group
7
+ include Thor::Actions
8
+ namespace :console
9
+
10
+ def start_console
11
+ Radar::App::Bootstrap.startup
12
+ if Object.const_defined?('Pry')
13
+ Pry.start(nil, commands: pry_commands)
14
+ else
15
+ IRB.start
16
+ end
17
+ end
18
+
19
+ protected
20
+
21
+ def pry_commands
22
+ Pry::CommandSet.new do
23
+ command 'reload!', 'Reload the app classes' do
24
+ puts 'Reloading...'
25
+ $class_reloader.execute_if_updated
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -21,7 +21,7 @@ module Radar
21
21
  def create_basic_files
22
22
  copy_file 'Gemfile', "#{app_name}/Gemfile"
23
23
  copy_file 'Procfile', "#{app_name}/Procfile"
24
- copy_file '.webhook', "#{app_name}/.webhook"
24
+ copy_file 'DOKKU_SCALE', "#{app_name}/DOKKU_SCALE"
25
25
  copy_file 'config/app.rb', "#{app_name}/config/app.rb"
26
26
  end
27
27
 
@@ -6,8 +6,8 @@ module Radar
6
6
  namespace :server
7
7
 
8
8
  def start_server
9
- require 'radar-app'
10
9
  Radar::App::Bootstrap.startup
10
+ Radar::App::Server.new(ENV['PORT'] || 5000).start
11
11
  end
12
12
  end
13
13
  end
@@ -1,5 +1,5 @@
1
1
  module Radar
2
2
  module App
3
- VERSION = "0.2.0"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
@@ -0,0 +1 @@
1
+ app=1
@@ -1 +1 @@
1
- web: bundle exec radar-app server
1
+ app: bundle exec radar-app server
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: radar-app
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leonardo Mendonca
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-01-25 00:00:00.000000000 Z
12
+ date: 2017-02-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -181,20 +181,16 @@ files:
181
181
  - lib/radar/app/server.rb
182
182
  - lib/radar/app/session.rb
183
183
  - lib/radar/app/tasks.rb
184
+ - lib/radar/app/tasks/console.rb
184
185
  - lib/radar/app/tasks/generate.rb
185
186
  - lib/radar/app/tasks/new.rb
186
187
  - lib/radar/app/tasks/server.rb
187
188
  - lib/radar/app/version.rb
188
- - lib/thrift/builder.rb
189
189
  - radar-app.gemspec
190
- - spec/example.thrift
191
- - spec/gen-rb/example_constants.rb
192
- - spec/gen-rb/example_types.rb
193
190
  - spec/lib/radar/app/analyzer_spec.rb
194
191
  - spec/lib/radar/app/processor_factory_spec.rb
195
192
  - spec/lib/radar/app/tasks/generate_spec.rb
196
- - spec/lib/thrift/builder_spec.rb
197
- - templates/.webhook
193
+ - templates/DOKKU_SCALE
198
194
  - templates/Gemfile
199
195
  - templates/Procfile
200
196
  - templates/analyzers/analyzer.rb.erb
@@ -225,10 +221,6 @@ signing_key:
225
221
  specification_version: 4
226
222
  summary: radar-app generator
227
223
  test_files:
228
- - spec/example.thrift
229
- - spec/gen-rb/example_constants.rb
230
- - spec/gen-rb/example_types.rb
231
224
  - spec/lib/radar/app/analyzer_spec.rb
232
225
  - spec/lib/radar/app/processor_factory_spec.rb
233
226
  - spec/lib/radar/app/tasks/generate_spec.rb
234
- - spec/lib/thrift/builder_spec.rb
@@ -1,36 +0,0 @@
1
- module Thrift
2
- class Builder
3
- def initialize(clazz)
4
- @class = clazz
5
- end
6
-
7
- def build(attributes)
8
- @class.new.tap do |obj|
9
- attributes.each do |attribute, value|
10
- obj.send "#{attribute}=", build_attr(@class::FIELDS[obj.name_to_id(attribute.to_s)], value)
11
- end
12
- end
13
- end
14
-
15
- protected
16
-
17
- def build_attr(field, value)
18
- case field[:type]
19
- when Thrift::Types::STRUCT
20
- Builder.new(field[:class]).build(value)
21
- when Thrift::Types::LIST
22
- value.map { |child| build_attr(field[:element], child) }
23
- when Thrift::Types::SET
24
- value.map { |child| build_attr(field[:element], child) }.to_set
25
- when Thrift::Types::I32
26
- if field.include?(:enum_class)
27
- field[:enum_class].const_get(value.upcase)
28
- else
29
- value
30
- end
31
- else
32
- value
33
- end
34
- end
35
- end
36
- end
@@ -1,19 +0,0 @@
1
- enum Gender {
2
- MALE, FEMALE
3
- }
4
-
5
- struct PhoneNumber {
6
- 1: string contry_code
7
- 2: string area_code
8
- 3: string number
9
- }
10
-
11
- struct Person {
12
- 1: string name
13
- 2: PhoneNumber phone
14
- 3: list<Person> children
15
- 4: list<string> notes
16
- 5: Gender gender
17
- 6: i32 age
18
- 7: set<i32> favorite_numbers
19
- }
@@ -1,9 +0,0 @@
1
- #
2
- # Autogenerated by Thrift Compiler (0.9.3)
3
- #
4
- # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
- #
6
-
7
- require 'thrift'
8
- require 'example_types'
9
-
@@ -1,66 +0,0 @@
1
- #
2
- # Autogenerated by Thrift Compiler (0.9.3)
3
- #
4
- # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
- #
6
-
7
- require 'thrift'
8
-
9
- module Gender
10
- MALE = 0
11
- FEMALE = 1
12
- VALUE_MAP = {0 => "MALE", 1 => "FEMALE"}
13
- VALID_VALUES = Set.new([MALE, FEMALE]).freeze
14
- end
15
-
16
- class PhoneNumber
17
- include ::Thrift::Struct, ::Thrift::Struct_Union
18
- CONTRY_CODE = 1
19
- AREA_CODE = 2
20
- NUMBER = 3
21
-
22
- FIELDS = {
23
- CONTRY_CODE => {:type => ::Thrift::Types::STRING, :name => 'contry_code'},
24
- AREA_CODE => {:type => ::Thrift::Types::STRING, :name => 'area_code'},
25
- NUMBER => {:type => ::Thrift::Types::STRING, :name => 'number'}
26
- }
27
-
28
- def struct_fields; FIELDS; end
29
-
30
- def validate
31
- end
32
-
33
- ::Thrift::Struct.generate_accessors self
34
- end
35
-
36
- class Person
37
- include ::Thrift::Struct, ::Thrift::Struct_Union
38
- NAME = 1
39
- PHONE = 2
40
- CHILDREN = 3
41
- NOTES = 4
42
- GENDER = 5
43
- AGE = 6
44
- FAVORITE_NUMBERS = 7
45
-
46
- FIELDS = {
47
- NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
48
- PHONE => {:type => ::Thrift::Types::STRUCT, :name => 'phone', :class => ::PhoneNumber},
49
- CHILDREN => {:type => ::Thrift::Types::LIST, :name => 'children', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Person}},
50
- NOTES => {:type => ::Thrift::Types::LIST, :name => 'notes', :element => {:type => ::Thrift::Types::STRING}},
51
- GENDER => {:type => ::Thrift::Types::I32, :name => 'gender', :enum_class => ::Gender},
52
- AGE => {:type => ::Thrift::Types::I32, :name => 'age'},
53
- FAVORITE_NUMBERS => {:type => ::Thrift::Types::SET, :name => 'favorite_numbers', :element => {:type => ::Thrift::Types::I32}}
54
- }
55
-
56
- def struct_fields; FIELDS; end
57
-
58
- def validate
59
- unless @gender.nil? || ::Gender::VALID_VALUES.include?(@gender)
60
- raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field gender!')
61
- end
62
- end
63
-
64
- ::Thrift::Struct.generate_accessors self
65
- end
66
-
@@ -1,36 +0,0 @@
1
- $:.unshift File.expand_path('../../../gen-rb', __FILE__)
2
-
3
- require 'thrift/builder'
4
- require 'example_types'
5
-
6
- describe Thrift::Builder do
7
- describe '#build' do
8
- it 'builds a object of type defined by constructor' do
9
- expect(Thrift::Builder.new(Person).build({})).to be_kind_of(Person)
10
- end
11
- it 'sets basic attributes' do
12
- expect(Thrift::Builder.new(Person).build(name: 'Andre').name).to eq 'Andre'
13
- end
14
- it 'sets nested objects' do
15
- expect(Thrift::Builder.new(Person).build(phone: {}).phone).to be_kind_of(PhoneNumber)
16
- end
17
- it 'sets nested objects attributes' do
18
- expect(Thrift::Builder.new(Person).build(phone: {contry_code: '55'}).phone.contry_code).to eq '55'
19
- end
20
- it 'sets nested objects inside arrays' do
21
- expect(Thrift::Builder.new(Person).build(children: [ { name: 'Helena' } ]).children.first.name).to eq 'Helena'
22
- end
23
- it 'sets basic attributes inside arrays' do
24
- expect(Thrift::Builder.new(Person).build(notes: [ 'test' ]).notes).to eq [ 'test' ]
25
- end
26
- it 'sets enum attributes' do
27
- expect(Thrift::Builder.new(Person).build(gender: :male).gender).to eq Gender::MALE
28
- end
29
- it 'sets i32 attributes' do
30
- expect(Thrift::Builder.new(Person).build(age: 34).age).to eq 34
31
- end
32
- it 'sets set attributes' do
33
- expect(Thrift::Builder.new(Person).build(favorite_numbers: [7, 10]).favorite_numbers).to eq Set.new([7, 10])
34
- end
35
- end
36
- end
@@ -1 +0,0 @@
1
- POST http://${RADAR_HOST:-radar.indicativos.com.br}/apps/$APP/up port=$PORT