esp-commons 0.2.8 → 0.2.9
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/esp-commons/engine.rb +1 -1
- data/lib/esp-commons/{message_maker.rb → lib/message_maker.rb} +1 -1
- data/lib/esp-commons/{requester.rb → lib/requester.rb} +2 -2
- data/lib/esp-commons/lib/subscriber.rb +56 -0
- data/lib/esp-commons/version.rb +1 -1
- data/lib/generators/esp_commons/install/install_generator.rb +6 -1
- data/lib/generators/esp_commons/install/{config → templates/config}/schedule.rb +0 -0
- data/lib/generators/esp_commons/install/templates/script/subscriber +27 -0
- metadata +19 -17
data/lib/esp-commons/engine.rb
CHANGED
@@ -4,7 +4,7 @@ module EspCommons
|
|
4
4
|
class Engine < ::Rails::Engine
|
5
5
|
isolate_namespace EspCommons
|
6
6
|
|
7
|
-
config.autoload_paths << File.expand_path('../', __FILE__)
|
7
|
+
config.autoload_paths << File.expand_path('../lib/', __FILE__)
|
8
8
|
|
9
9
|
config.before_configuration do
|
10
10
|
Settings.define 'appeals.url', :env_var => 'APPEALS_URL'
|
@@ -3,7 +3,7 @@ require 'curb'
|
|
3
3
|
class Requester
|
4
4
|
def initialize(url, headers_accept = nil)
|
5
5
|
@response = Curl::Easy.perform(url) do |curl|
|
6
|
-
curl.headers['Accept'] = headers_accept
|
6
|
+
curl.headers['Accept'] = headers_accept if headers_accept
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
@@ -20,7 +20,7 @@ class Requester
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def response_body
|
23
|
-
@response_body ||= response.body_str
|
23
|
+
@response_body ||= response.body_str.force_encoding 'UTF-8'
|
24
24
|
end
|
25
25
|
|
26
26
|
def response_hash
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'amqp'
|
2
|
+
|
3
|
+
class Subscriber
|
4
|
+
def start
|
5
|
+
subscribers.each do |subscriber|
|
6
|
+
AMQP.start(Settings['amqp.url']) do |connection|
|
7
|
+
channel = AMQP::Channel.new(connection)
|
8
|
+
channel.prefetch(1)
|
9
|
+
|
10
|
+
exchange = channel.topic('esp')
|
11
|
+
queue = channel.queue(queue_name(subscriber), :durable => true)
|
12
|
+
|
13
|
+
queue.bind(exchange, :routing_key => '*')
|
14
|
+
|
15
|
+
Signal.trap("TERM") do
|
16
|
+
connection.close do
|
17
|
+
logger.info "#{subscriber.class} stopped"
|
18
|
+
EM.stop { exit }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
queue.subscribe(:ack => true) do |header, message|
|
23
|
+
method = header.routing_key
|
24
|
+
if subscriber.respond_to?(method)
|
25
|
+
logger.debug("#{subscriber.class} receive #{method}: #{message}")
|
26
|
+
subscriber.send(method, message)
|
27
|
+
header.ack
|
28
|
+
else
|
29
|
+
logger.warn "#{subscriber.class} not respond to #{method}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
logger.info "#{subscriber.class} started"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def subscribers
|
39
|
+
Dir.glob("#{Rails.root}/lib/subscribers/*").map do |subscriber_path|
|
40
|
+
require subscriber_path
|
41
|
+
File.basename(subscriber_path, '.rb').classify.constantize.new
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def logger
|
46
|
+
@@logger ||= ActiveSupport::BufferedLogger.new("#{Rails.root}/log/subscriber.log")
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
def queue_name(subscriber)
|
51
|
+
from = subscriber.class.name.sub(/Subscriber$/, '').underscore
|
52
|
+
to = Rails.application.class.name.sub('::Application', '').underscore
|
53
|
+
|
54
|
+
"esp.#{from}.#{to}"
|
55
|
+
end
|
56
|
+
end
|
data/lib/esp-commons/version.rb
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
module EspCommons
|
2
2
|
module Generators
|
3
3
|
class InstallGenerator < Rails::Generators::Base
|
4
|
-
source_root File.expand_path('
|
4
|
+
source_root File.expand_path('../templates', __FILE__)
|
5
|
+
|
6
|
+
def create_scripts
|
7
|
+
copy_file 'script/subscriber'
|
8
|
+
chmod 'script/subscriber', 0755
|
9
|
+
end
|
5
10
|
end
|
6
11
|
end
|
7
12
|
end
|
File without changes
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.expand_path('../../config/environment', __FILE__)
|
4
|
+
|
5
|
+
dir = Rails.root.to_s
|
6
|
+
|
7
|
+
daemon_name = (dir.split('/')[-2..-1] << "daemon").join('-')
|
8
|
+
|
9
|
+
daemon_options = {
|
10
|
+
:multiple => false,
|
11
|
+
:dir_mode => :normal,
|
12
|
+
:dir => Rails.root.join('tmp', 'pids'),
|
13
|
+
:backtrace => true
|
14
|
+
}
|
15
|
+
|
16
|
+
Daemons.run_proc(daemon_name, daemon_options) do
|
17
|
+
if ARGV.include?('--')
|
18
|
+
ARGV.slice! 0..ARGV.index('--')
|
19
|
+
else
|
20
|
+
ARGV.clear
|
21
|
+
end
|
22
|
+
|
23
|
+
Dir.chdir dir
|
24
|
+
|
25
|
+
Subscriber.new.start
|
26
|
+
end
|
27
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: esp-commons
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-04-26 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: active_attr
|
16
|
-
requirement: &
|
16
|
+
requirement: &4143620 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *4143620
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: curb
|
27
|
-
requirement: &
|
27
|
+
requirement: &4142600 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *4142600
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: openteam-commons
|
38
|
-
requirement: &
|
38
|
+
requirement: &4141820 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *4141820
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rails
|
49
|
-
requirement: &
|
49
|
+
requirement: &4141160 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *4141160
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: sqlite3
|
60
|
-
requirement: &
|
60
|
+
requirement: &4233920 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *4233920
|
69
69
|
description: Description of EspCommons.
|
70
70
|
email:
|
71
71
|
- mail@openteam.ru
|
@@ -75,13 +75,15 @@ extra_rdoc_files: []
|
|
75
75
|
files:
|
76
76
|
- app/models/esp_commons/image.rb
|
77
77
|
- config/locales/commons.ru.yml
|
78
|
+
- lib/esp-commons/lib/message_maker.rb
|
79
|
+
- lib/esp-commons/lib/subscriber.rb
|
80
|
+
- lib/esp-commons/lib/requester.rb
|
78
81
|
- lib/esp-commons/engine.rb
|
79
|
-
- lib/esp-commons/message_maker.rb
|
80
|
-
- lib/esp-commons/requester.rb
|
81
82
|
- lib/esp-commons/version.rb
|
82
83
|
- lib/esp-commons.rb
|
83
|
-
- lib/generators/esp_commons/install/config/schedule.rb
|
84
84
|
- lib/generators/esp_commons/install/install_generator.rb
|
85
|
+
- lib/generators/esp_commons/install/templates/config/schedule.rb
|
86
|
+
- lib/generators/esp_commons/install/templates/script/subscriber
|
85
87
|
- MIT-LICENSE
|
86
88
|
- Rakefile
|
87
89
|
- README.rdoc
|
@@ -99,7 +101,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
99
101
|
version: '0'
|
100
102
|
segments:
|
101
103
|
- 0
|
102
|
-
hash:
|
104
|
+
hash: -3731403451187529304
|
103
105
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
106
|
none: false
|
105
107
|
requirements:
|
@@ -108,10 +110,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
110
|
version: '0'
|
109
111
|
segments:
|
110
112
|
- 0
|
111
|
-
hash:
|
113
|
+
hash: -3731403451187529304
|
112
114
|
requirements: []
|
113
115
|
rubyforge_project:
|
114
|
-
rubygems_version: 1.8.
|
116
|
+
rubygems_version: 1.8.15
|
115
117
|
signing_key:
|
116
118
|
specification_version: 3
|
117
119
|
summary: Summary of EspCommons.
|