ruby-api 1.0.2 → 1.0.3

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
  SHA1:
3
- metadata.gz: 6eec1157e5e196267d1b08d450fb9c754ed2a5b5
4
- data.tar.gz: beae12dd9f939ff1b112498eabae2eee0cdce7ea
3
+ metadata.gz: 690eb8fb0de772562ea754e3baf9d694f1180df1
4
+ data.tar.gz: 93a607e48c16654b6cb1b9f44836ac8ebfc7ac16
5
5
  SHA512:
6
- metadata.gz: e2d13ac8c0561fff292ebf410e72e1fc9ba11f0e6f0f3e18356da51a13486fb0427e29b0a7ea962d6182b698f34aec38616abe10107112f215d45ca095a101b4
7
- data.tar.gz: aa11a57965b83d2c6575a7bbf9267422d98f96a7c01019440cd7bd184f1e54e349e384e4f4b2b1a9f4c1e3bc1c68615fa7f518c2d48423b75e4955794eb4301d
6
+ metadata.gz: e2d2518098e9d1c9010d0986cf55c68a05219a5172f1ef4593dc1745dbd2823c98875037d4451912f033f399f0bba72c0a7450d0d12d3122889149772f996d1b
7
+ data.tar.gz: 93fd8c681642c55f06634dfa35037bb68b625542294ef4a9848c1ed1d98217c696bda8721a84157b80ff734bfd25de55585b495cb160f5ac620bc97e49c6caa3
@@ -18,12 +18,32 @@ module RubyAPI
18
18
  require_relative 'ruby_api/application'
19
19
 
20
20
  CONFIG_DIR = 'config'
21
+ CONFIG_FILE = 'app.yml'
21
22
  BOOT_SCRIPT = 'boot'
22
23
 
23
- def self.application(config = nil)
24
- return @app if @app
25
- @app = Application.new(config)
26
- .boot
24
+ def self.application(root, overrides = {})
25
+ @root = root
26
+ Application.new(config(overrides)).boot
27
+ end
28
+
29
+ def self.config(overrides = {})
30
+ path = overrides[:config_file]
31
+ path ||= File.join CONFIG_DIR, CONFIG_FILE
32
+ path = path(path)
33
+ raise "Config missing at #{path}" unless File.exist?(path)
34
+ Config.new YAML.load_file(path)
35
+ end
36
+
37
+ def self.root=(path)
38
+ @root = path
39
+ end
40
+
41
+ def self.root
42
+ @root
43
+ end
44
+
45
+ def self.path(path)
46
+ File.join @root, path
27
47
  end
28
48
 
29
49
  def self.environment
@@ -4,35 +4,30 @@ module RubyAPI
4
4
  # Application
5
5
  class Application
6
6
  APP_MODULE_NAME = 'APP'
7
- APP_SOURCE_PATH = 'app/app'
7
+ APP_SOURCE_PATH = 'src/main'
8
8
 
9
9
  attr_reader :config, :logger, :routes
10
10
 
11
- def initialize(cfg = {})
12
- @config = load_config(cfg)
11
+ def initialize(config)
12
+ raise "Invalid config: #{config.inspect}" unless config.is_a?(Config)
13
+ @config = config
13
14
  @routes = load_routes
14
15
  end
15
16
 
16
- def load_config(cfg)
17
- require_hash_or_string(cfg, 'Invalid configuration: %s')
18
- cfg = YAML.load_file cfg if cfg.is_a?(String)
19
- Config.new(cfg)
20
- end
21
-
22
17
  def load_routes
23
18
  return {} unless config.key?(:routes)
24
19
 
25
20
  routes = config.routes
26
21
  require_hash_or_string(routes, 'Invalid routes config: %s')
27
- routes = YAML.load_file routes if routes.is_a?(String)
22
+ routes = YAML.load_file RubyAPI.path(routes) if routes.is_a?(String)
28
23
  @routes = routes.deep_symbolize_keys!
29
24
  end
30
25
 
31
26
  def boot
32
27
  @logger = Logger.new log_path[:info]
33
28
  @logger_err = Logger.new log_path[:error]
34
- require boot_script if boot_script?
35
- require app_path
29
+ require RubyAPI.path(boot_script) if boot_script?
30
+ require RubyAPI.path(app_path)
36
31
  self
37
32
  end
38
33
 
@@ -76,9 +71,10 @@ module RubyAPI
76
71
 
77
72
  def boot_script?
78
73
  return false unless config.key?(:boot_script)
79
- path = config.boot_script
80
- logger.warn "Boot script not found at: #{path}" unless File.exist?(path)
81
- path
74
+ path = RubyAPI.path(boot_script)
75
+ return true if File.exist?(path)
76
+ logger.warn "Boot script not found at: #{path}"
77
+ false
82
78
  end
83
79
 
84
80
  def process(request)
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../ruby_api'
4
+
5
+ module RubyAPI
6
+ module Cli
7
+ # :nodoc
8
+ class Generate < Thor
9
+ desc 'feature NAME', 'generate application feature module'
10
+ def feature(name)
11
+ path = File.join RubyAPI::CONFIG_DIR, RubyAPI::CONFIG_FILE
12
+ config = RubyAPI.config
13
+ puts config.to_yaml
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,13 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'server'
4
+ require_relative 'generate'
5
+
3
6
  module RubyAPI
4
7
  module Cli
5
8
  # RubyAPI Main CLI command
6
9
  class Main < Thor
7
- desc 'hello [MESSAGE]', 'say: Hello MESSAGE'
8
- def hello(message = 'World')
9
- puts "Hello #{message}"
10
- end
10
+ desc 'server COMMAND', 'control API server'
11
+ subcommand 'server', Server
12
+
13
+ desc 'generate OBJECT [OPTIONS]', 'generate framework objects'
14
+ subcommand 'generate', Generate
11
15
  end
12
16
  end
13
17
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyAPI
4
+ module Cli
5
+ # :nodoc
6
+ class Server < Thor
7
+ desc 'start', 'start API server'
8
+ option :server, aliases: [:s], type: :string, default: 'puma'
9
+ option :port, aliases: [:p], type: :numeric, default: 1234
10
+ option :config, aliases: [:c], type: :string, default: 'config.ru'
11
+ def start
12
+ exec format('bundle exec %<server>s -p %<port>d %<config>s',
13
+ server: options[:server],
14
+ port: options[:port],
15
+ config: options[:config])
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubyAPI
4
- VERSION = '1.0.2'
4
+ VERSION = '1.0.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Voislav Jovanovic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-17 00:00:00.000000000 Z
11
+ date: 2018-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -119,7 +119,9 @@ files:
119
119
  - lib/ruby_api.rb
120
120
  - lib/ruby_api/application.rb
121
121
  - lib/ruby_api/cli.rb
122
+ - lib/ruby_api/cli/generate.rb
122
123
  - lib/ruby_api/cli/main.rb
124
+ - lib/ruby_api/cli/server.rb
123
125
  - lib/ruby_api/config.rb
124
126
  - lib/ruby_api/operation.rb
125
127
  - lib/ruby_api/request.rb