esp-commons 0.2.8 → 0.2.9
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.
- 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.
|