emmy-engine 0.1.4 → 0.2.3

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: b2738e02335b186ba03f5474c7e0cb5668919a6b
4
- data.tar.gz: 7649dd1e83bd18139ac6c52b3bb750cf550362dd
3
+ metadata.gz: bb59578321a7548dfbfb97f3aec79be5fa4748d4
4
+ data.tar.gz: 6956f77fa81364267887394db94e96a81315178c
5
5
  SHA512:
6
- metadata.gz: 8ede6c059b71e1e018321722975a3b55c06684d21624de1ba8cb08212d2d8dec89727ae1b87eee76010c7377d46afc475edae4afd68f2a786a6725f9c0c9b291
7
- data.tar.gz: ef5fe3e3407fe8e311eb6bb44afc73ed69830b933e06956d5821dfa5bb38033beee8bdd7631f94479b70a3f8a384de2bdd8d63d3fb1d27ff40f88036301f043d
6
+ metadata.gz: 3a561103f57d1797a6e91e7deb4cf255ed99ab771ff55797cca9353393fb8afbdceba608c9f33eedfc0452c9656a7fd6d9c32e48f4479b0d72315e6928d05f5a
7
+ data.tar.gz: c56a4fddb13fe885d462d22a98ee702940b6b3e8cfe521eed86b6795da420af967119e6d2f573aee808473a0007c9c90cf2bba2aaaea01b4fe00ef15a43b014c
data/README.md CHANGED
@@ -1,3 +1,3 @@
1
- # Emmy
1
+ # Emmy Engine
2
2
 
3
3
  Don't use directly use emmy gem instead
data/bin/emmy ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ require 'emmy'
3
+
4
+ runner = Emmy::Runner.instance
5
+
6
+ unless runner.execute_bin_emmy
7
+ runner.run_action
8
+ end
data/emmy-engine.gemspec CHANGED
@@ -1,7 +1,13 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
4
5
  require 'emmy/version'
6
+ version = File.read(File.expand_path('../../EMMY_VERSION', __FILE__)).strip
7
+ if version != Emmy::VERSION
8
+ puts "Different version numbers"
9
+ exit
10
+ end
5
11
 
6
12
  Gem::Specification.new do |spec|
7
13
  spec.name = "emmy-engine"
@@ -9,20 +15,21 @@ Gem::Specification.new do |spec|
9
15
  spec.authors = ["inre"]
10
16
  spec.email = ["inre.storm@gmail.com"]
11
17
 
12
- spec.summary = %q{Emmy engine}
18
+ spec.summary = %q{Emmy Engine}
13
19
  #spec.description = %q{TODO: Write a longer description or delete this line.}
14
20
  #spec.homepage = "TODO: Put your gem's website or public repo URL here."
15
21
 
16
22
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
- spec.bindir = "exe"
18
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
+ spec.bindir = "bin"
24
+ spec.executables = "emmy"
19
25
  spec.require_paths = ["lib"]
20
26
 
21
- spec.add_dependency "emmy-machine", ">= 0.1.11"
22
- spec.add_dependency "emmy-http", ">= 0.2.2"
23
- spec.add_dependency "emmy-http-client", ">= 0.1.7"
27
+ spec.add_dependency "emmy-machine", "~> 0.1"
28
+ spec.add_dependency "emmy-http", "~> 0.2"
29
+ spec.add_dependency "emmy-http-client", "~> 0.1"
24
30
 
25
- spec.add_development_dependency "bundler", "~> 1.9"
26
- spec.add_development_dependency "rake", "~> 10.0"
27
- spec.add_development_dependency "rspec", "~> 3"
31
+ spec.add_development_dependency "eventmachine", "~> 1.0"
32
+ spec.add_development_dependency "bundler", "~> 1.9"
33
+ spec.add_development_dependency "rake", "~> 10.0"
34
+ spec.add_development_dependency "rspec", "~> 3"
28
35
  end
@@ -0,0 +1,143 @@
1
+ module Emmy
2
+ class Runner
3
+ include Singleton
4
+ using EventObject
5
+ events :parse
6
+
7
+ RUBY = Gem.ruby
8
+ BIN_EMMY = "bin/emmy"
9
+
10
+ attr_accessor :argv
11
+ attr_accessor :env
12
+ attr_accessor :config
13
+ attr_accessor :action
14
+ attr_accessor :option_parser
15
+
16
+ def initialize
17
+ @argv = ARGV
18
+ @env = ENV
19
+ @config = EmmyHttp::Configuration.new
20
+ @action = :start_server
21
+
22
+ on :parse do
23
+ parse_environment!
24
+ end
25
+ on :parse do
26
+ option_parser.parse!(argv)
27
+ end
28
+ on :parse do
29
+ defaults!
30
+ end
31
+ on :parse do
32
+ update_rack_environment!
33
+ end
34
+ end
35
+
36
+ def execute_bin_emmy
37
+ return false unless File.file?(BIN_EMMY)
38
+ exec RUBY, BIN_EMMY, *argv
39
+ true
40
+ end
41
+
42
+ def parse_environment!
43
+ config.environment = env['EMMY_ENV'] || env['RACK_ENV'] || 'development'
44
+ end
45
+
46
+ def update_rack_environment!
47
+ ENV['RACK_ENV'] = config.environment
48
+ end
49
+
50
+ def option_parser
51
+ @option_parser ||= OptionParser.new do |opts|
52
+ opts.banner = "Usage: emmy [options]"
53
+ opts.separator "Options:"
54
+ # configure
55
+ opts.on("-e", "--environment ENV", "Specifies the execution environment",
56
+ "Default: #{config.environment}") { |env| config.environment = env }
57
+ opts.on("-p", "--port PORT", "Runs Emmy on the specified port",
58
+ "Default: #{config.url.port}") { |port| config.url.port = port }
59
+ opts.on("-a", "--address HOST", "Binds Emmy to the specified host",
60
+ "Default: #{config.url.host}") { |address| config.url.host = address }
61
+ opts.on("-b", "--backend [name]", "Backend name",
62
+ "Default: backend") { |name| config.backend = name }
63
+ opts.on("-d", "--daemonize", "Runs server in the background") { config.daemonize = true }
64
+ opts.on("-s", "--silence", "Logging disabled") { config.logging = false }
65
+ # actions
66
+ opts.on("-i", "--info", "Shows server configuration") { @action = :show_configuration }
67
+ opts.on("-c", "--console", "Start a console") { @action = :start_console }
68
+ opts.on("-h", "--help", "Display this help message") { @action = :display_help }
69
+ opts.on("-v", "--version", "Display Emmy version.") { @action = :display_version }
70
+ end
71
+ end
72
+
73
+ def defaults!
74
+ if Process.uid == 0
75
+ config.user = "worker"
76
+ config.group = "worker"
77
+ end
78
+
79
+ config.pid ||= "tmp/pids/#{config.backend}.pid"
80
+ end
81
+
82
+ def run_action
83
+ # Run parsers
84
+ parse!
85
+ # start action
86
+ send(action)
87
+ self
88
+ end
89
+
90
+ def start_server
91
+ load backend_file
92
+ end
93
+
94
+ def start_console
95
+ if defined?(binding.pry)
96
+ TOPLEVEL_BINDING.pry
97
+ else
98
+ require 'irb'
99
+ require 'irb/completion'
100
+ IRB.start
101
+ end
102
+ end
103
+
104
+ def show_configuration
105
+ puts "Server configuration:"
106
+ config.attributes.each do |name, value|
107
+ value = "off" if value.nil?
108
+ puts " #{name}: #{value}"
109
+ end
110
+ end
111
+
112
+ def display_help
113
+ puts option_parser
114
+ end
115
+
116
+ def display_version
117
+ puts Emmy::VERSION
118
+ end
119
+
120
+ def error(message)
121
+ puts message
122
+ exit
123
+ end
124
+
125
+ private
126
+
127
+ def backend_file
128
+ thin = (config.backend == 'backend') ? EmmyExtends::Thin::EMMY_BACKEND : nil rescue nil
129
+ backends = [
130
+ "#{Dir.getwd}/#{config.backend}.rb",
131
+ "#{Dir.getwd}/config/#{config.backend}.rb",
132
+ thin
133
+ ].compact
134
+
135
+ backends.each do |file|
136
+ return file if File.readable_real?(file)
137
+ end
138
+ error "Can't find backend in #{backends.inspect} places."
139
+ end
140
+
141
+ #<<<
142
+ end
143
+ end
data/lib/emmy/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Emmy
2
- VERSION = "0.1.4"
2
+ VERSION = "0.2.3"
3
3
  end
data/lib/emmy.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'singleton'
1
2
  require 'emmy_machine'
2
3
  require 'emmy_http'
3
4
  require 'emmy_http/client'
@@ -7,5 +8,8 @@ module Emmy
7
8
  include EventObject
8
9
  include Fibre::Synchrony
9
10
 
10
- autoload :Http, 'emmy/http'
11
+ autoload :Http, 'emmy/http'
12
+ autoload :Runner, 'emmy/runner'
11
13
  end
14
+
15
+ require 'emmy/version'
metadata CHANGED
@@ -1,57 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: emmy-engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - inre
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-04 00:00:00.000000000 Z
11
+ date: 2015-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: emmy-machine
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.11
19
+ version: '0.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.11
26
+ version: '0.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: emmy-http
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.2.2
33
+ version: '0.2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.2.2
40
+ version: '0.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: emmy-http-client
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.7
47
+ version: '0.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: eventmachine
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: 0.1.7
68
+ version: '1.0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -97,7 +111,8 @@ dependencies:
97
111
  description:
98
112
  email:
99
113
  - inre.storm@gmail.com
100
- executables: []
114
+ executables:
115
+ - emmy
101
116
  extensions: []
102
117
  extra_rdoc_files: []
103
118
  files:
@@ -106,9 +121,11 @@ files:
106
121
  - Gemfile
107
122
  - README.md
108
123
  - Rakefile
124
+ - bin/emmy
109
125
  - emmy-engine.gemspec
110
126
  - lib/emmy.rb
111
127
  - lib/emmy/http.rb
128
+ - lib/emmy/runner.rb
112
129
  - lib/emmy/version.rb
113
130
  homepage:
114
131
  licenses: []
@@ -132,5 +149,5 @@ rubyforge_project:
132
149
  rubygems_version: 2.4.6
133
150
  signing_key:
134
151
  specification_version: 4
135
- summary: Emmy engine
152
+ summary: Emmy Engine
136
153
  test_files: []