reliable-msg-agent 0.0.3 → 0.1.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.
- data/History.txt +10 -0
- data/README.rdoc +157 -15
- data/bin/reliable-msg-agent +23 -8
- data/lib/reliable-msg/agent/agent.rb +3 -1
- data/lib/reliable-msg/agent/scripts/script_runner.rb +33 -22
- data/lib/reliable-msg/agent/version.rb +2 -2
- data/resources/agent.conf +0 -3
- data/resources/examples/ap4r-dispatch-agent.conf +0 -2
- data/resources/examples/log-level-change-agent.conf +0 -2
- data/resources/examples/log-rotate-daily-agent.conf +0 -2
- data/resources/examples/log-rotate-size-agent.conf +0 -2
- data/resources/reliable-msg-agentd +3 -1
- data/spec/service_spec.rb +20 -4
- metadata +4 -4
data/History.txt
CHANGED
@@ -1,4 +1,14 @@
|
|
1
1
|
|
2
|
+
== 0.1.0 2011-04-04
|
3
|
+
|
4
|
+
* Changed README.rdoc
|
5
|
+
* Added testcase.
|
6
|
+
* bugfix: The relative path was not correctly interpreted.
|
7
|
+
* Added commandline option daemon mode(-d).
|
8
|
+
* Added commandline option user(-u) and group(-g).
|
9
|
+
* Removed "user" and "group" from configurations.
|
10
|
+
* Changed "agent" config option changes arbitrarily from indispensability.
|
11
|
+
|
2
12
|
== 0.0.3 2011-03-31
|
3
13
|
|
4
14
|
* Added testcase for Service class.
|
data/README.rdoc
CHANGED
@@ -24,20 +24,153 @@ in A and processes it is taken.
|
|
24
24
|
| Agent | ... + Agent +
|
25
25
|
+-------+ +-------+
|
26
26
|
|
27
|
-
== Getting started
|
27
|
+
== Getting started 1
|
28
28
|
|
29
29
|
=== Install
|
30
30
|
|
31
31
|
gem install reliable-msg-agent
|
32
32
|
|
33
|
-
===
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
33
|
+
=== Start reliable-msg
|
34
|
+
|
35
|
+
reliable-msg is started beforehand.
|
36
|
+
|
37
|
+
$ queues manager start
|
38
|
+
I, [2011-04-03T23:00:43.781875 #1856] INFO -- : Created queues configuration file in: /usr/loc...
|
39
|
+
I, [2011-04-03T23:00:43.781875 #1856] INFO -- : Using message store: disk
|
40
|
+
I, [2011-04-03T23:00:43.812875 #1856] INFO -- : Accepting requests at: druby://localhost:6438
|
41
|
+
|
42
|
+
=== Start reliable-msg-agent
|
43
|
+
|
44
|
+
$ reliable-msg-agent start
|
45
|
+
*** Starting ReliableMsg-Agent...
|
46
|
+
I, [2011-04-03T23:02:11.390875 #2724] INFO -- : *** reliable-msg agent service starting...
|
47
|
+
I, [2011-04-03T23:02:11.390875 #2724] INFO -- : --- starting workers.
|
48
|
+
I, [2011-04-03T23:02:11.452875 #2724] INFO -- : *** reliable-msg agent service started.
|
49
|
+
|
50
|
+
=== Push message to reliable-msg queue.
|
51
|
+
|
52
|
+
The message "foo" is push to queue of reliable-msg.
|
53
|
+
|
54
|
+
$ irb -rubygems -rreliable-msg
|
55
|
+
irb(main):001:0> ReliableMsg::Queue.new("queue.agent").put("foo")
|
56
|
+
=> "0d98c020-402a-012e-f635-000ae47391e2"
|
57
|
+
irb(main):002:0> exit
|
58
|
+
$
|
59
|
+
|
60
|
+
=== The console that executes reliable-msg-agent is seen.
|
61
|
+
|
62
|
+
The message is acquired from reliable-msg, and the log is output.
|
63
|
+
|
64
|
+
$ queues manager start
|
65
|
+
I, [2011-04-03T23:13:41.046875 #3860] INFO -- : *** reliable-msg agent service starting...
|
66
|
+
I, [2011-04-03T23:13:41.046875 #3860] INFO -- : --- starting workers.
|
67
|
+
I, [2011-04-03T23:13:41.093875 #3860] INFO -- : *** reliable-msg agent service started.
|
68
|
+
I, [2011-04-03T23:14:24.280875 #3860] INFO -- : message fetched - <9957e5a0-402a-012e-f635-000ae47391e2>
|
69
|
+
I, [2011-04-03T23:14:24.280875 #3860] INFO -- : message received
|
70
|
+
--- !ruby/object:ReliableMsg::Message
|
71
|
+
headers:
|
72
|
+
:delivery: :best_effort
|
73
|
+
:max_deliveries: 5
|
74
|
+
:created: 1301840063
|
75
|
+
:id: 9957e5a0-402a-012e-f635-000ae47391e2
|
76
|
+
:expires:
|
77
|
+
:priority: 0
|
78
|
+
id: 9957e5a0-402a-012e-f635-000ae47391e2
|
79
|
+
object: foo
|
80
|
+
|
81
|
+
== Getting started 2 - The behavior when the message is acquired is changed.
|
82
|
+
|
83
|
+
Default operation of reliable-msg-agent is only a log output.
|
84
|
+
This can be changed.
|
85
|
+
|
86
|
+
=== Start reliable-msg
|
87
|
+
|
88
|
+
reliable-msg is started beforehand.
|
89
|
+
|
90
|
+
$ queues manager start
|
91
|
+
I, [2011-04-03T23:00:43.781875 #1856] INFO -- : Created queues configuration file in: /usr/loc...
|
92
|
+
I, [2011-04-03T23:00:43.781875 #1856] INFO -- : Using message store: disk
|
93
|
+
I, [2011-04-03T23:00:43.812875 #1856] INFO -- : Accepting requests at: druby://localhost:6438
|
94
|
+
|
95
|
+
=== Preparation for configuration file
|
96
|
+
|
97
|
+
The file /etc/reliable-msg-agent.conf of the following content is prepared.
|
98
|
+
|
99
|
+
# /etc/reliable-msg-agent.conf
|
100
|
+
---
|
101
|
+
agent: /etc/reliable-msg-agent.rb
|
102
|
+
consumers:
|
103
|
+
-
|
104
|
+
source_uri: druby://localhost:6438
|
105
|
+
every: 1.0
|
106
|
+
target: queue.agent
|
107
|
+
threads: 1
|
108
|
+
|
109
|
+
In addition, the file /etc/reliable-msg-agent.rb of the following content is prepared.
|
110
|
+
Here, the directory specified by the message is made.
|
111
|
+
|
112
|
+
# /etc/reliable-msg-agnet.rb
|
113
|
+
require "fileutils"
|
114
|
+
|
115
|
+
# The method of processing the message is defined.
|
116
|
+
#
|
117
|
+
# if the evaluation result is nil or false,
|
118
|
+
# it is considered that it failes.
|
119
|
+
#
|
120
|
+
# === Args
|
121
|
+
#
|
122
|
+
# +msg+ :: fetched message from reliable-msg queue.
|
123
|
+
# +conf+ :: consumer configurations.
|
124
|
+
# +options+ :: the options (it is still unused.)
|
125
|
+
#
|
126
|
+
def call msg, conf, options = {}
|
127
|
+
dir = File.join "/tmp", msg.object
|
128
|
+
FileUtils.mkdir_p dir
|
129
|
+
@logger.info { "directory created - #{dir}" }
|
130
|
+
end
|
131
|
+
|
132
|
+
=== Start reliable-msg-agent
|
133
|
+
|
134
|
+
The configuration file is specified by commandline option.
|
135
|
+
|
136
|
+
$ reliable-msg-agent start -c /etc/reliable-msg-agent.conf
|
137
|
+
*** Starting ReliableMsg-Agent...
|
138
|
+
I, [2011-04-04T00:06:23.759875 #1804] INFO -- : *** reliable-msg agent service starting...
|
139
|
+
I, [2011-04-04T00:06:23.759875 #1804] INFO -- : --- starting workers.
|
140
|
+
I, [2011-04-04T00:06:23.783875 #1804] INFO -- : *** reliable-msg agent service started.
|
141
|
+
|
142
|
+
=== Push message to reliable-msg queue.
|
143
|
+
|
144
|
+
The message "foo" and "bar" are push to queue of reliable-msg.
|
145
|
+
|
146
|
+
$ irb -rubygems -rreliable-msg
|
147
|
+
irb(main):001:0> ReliableMsg::Queue.new("queue.agent").put("foo")
|
148
|
+
=> "f19aadd0-4032-012e-f635-000ae47391e2"
|
149
|
+
irb(main):002:0> ReliableMsg::Queue.new("queue.agent").put("bar")
|
150
|
+
=> "f3c33320-4032-012e-f635-000ae47391e2"
|
151
|
+
irb(main):003:0> exit
|
152
|
+
$
|
153
|
+
|
154
|
+
=== The console that executes reliable-msg-agent is seen.
|
155
|
+
|
156
|
+
The message is acquired from reliable-msg, and directory was made.
|
157
|
+
|
158
|
+
$ reliable-msg-agent start -c /etc/reliable-msg-agent.conf
|
159
|
+
*** Starting ReliableMsg-Agent...
|
160
|
+
I, [2011-04-04T00:06:23.759875 #1804] INFO -- : *** reliable-msg agent service starting...
|
161
|
+
I, [2011-04-04T00:06:23.759875 #1804] INFO -- : --- starting workers.
|
162
|
+
I, [2011-04-04T00:06:23.783875 #1804] INFO -- : *** reliable-msg agent service started.
|
163
|
+
I, [2011-04-04T00:14:07.921875 #1804] INFO -- : message fetched - <f19aadd0-4032-012e-f635-000ae47391e2>
|
164
|
+
I, [2011-04-04T00:14:07.936875 #1804] INFO -- : directory created - /tmp/foo
|
165
|
+
I, [2011-04-04T00:14:11.102875 #1804] INFO -- : message fetched - <f3c33320-4032-012e-f635-000ae47391e2>
|
166
|
+
I, [2011-04-04T00:14:11.106875 #1804] INFO -- : directory created - /tmp/bar
|
167
|
+
|
168
|
+
$ ls -l /tmp/{foo,bar}
|
169
|
+
/tmp/bar:
|
170
|
+
total 0
|
171
|
+
|
172
|
+
/tmp/foo:
|
173
|
+
total 0
|
41
174
|
|
42
175
|
== Reliable-msg-agent commands
|
43
176
|
|
@@ -51,20 +184,29 @@ in A and processes it is taken.
|
|
51
184
|
$ reliable-msg-agent start --help
|
52
185
|
Usage: reliable-msg-agent start [options]
|
53
186
|
-v, --verbose Verbose output
|
187
|
+
-d, --daemon Daemon mode
|
188
|
+
-u, --user=USER Effective user name
|
189
|
+
-g, --group=GROUP Effective group name
|
54
190
|
-c, --conf=CONFFILE Config file
|
55
|
-
-l, --log=LOGFILE Log file
|
56
|
-
-p, --pid=PIDFILE PID file
|
191
|
+
-l, --log=LOGFILE Log file (only for the daemon mode)
|
192
|
+
-p, --pid=PIDFILE PID file (only for the daemon mode)
|
57
193
|
-h, --help Show this message
|
58
194
|
--version Show version
|
59
195
|
|
60
196
|
* -v, --verbose
|
61
197
|
verbose output.
|
198
|
+
* -d, --daemon
|
199
|
+
daemon mode.
|
200
|
+
* -u, --user
|
201
|
+
effective user name (The authority of seteuid is necessary.)
|
202
|
+
* -g, --group
|
203
|
+
effective group name (The authority of setegid is necessary.)
|
62
204
|
* -c, --conf=CONFFILE
|
63
|
-
path for config file. default is /
|
205
|
+
path for config file. default is {GEM_INSTALL_DIR}/resources/agent.conf
|
64
206
|
* -l, --log=LOGFILE
|
65
|
-
path for log file. default is /var/reliable-msg-agent/agent.log
|
207
|
+
path for log file. default is /var/reliable-msg-agent/agent.log (only for the daemon mode)
|
66
208
|
* -p, --pid=PIDFILE
|
67
|
-
path for pid file. default is /var/reliable-msg-agent/agent.pid
|
209
|
+
path for pid file. default is /var/reliable-msg-agent/agent.pid (only for the daemon mode)
|
68
210
|
* -h, --help
|
69
211
|
show this message.
|
70
212
|
* --version
|
@@ -75,7 +217,7 @@ in A and processes it is taken.
|
|
75
217
|
$ reliable-msg-agent stop --help
|
76
218
|
Usage: reliable-msg-agent stop [options]
|
77
219
|
-v, --verbose Verbose output
|
78
|
-
-p, --pid=PIDFILE PID file
|
220
|
+
-p, --pid=PIDFILE PID file
|
79
221
|
-h, --help Show this message
|
80
222
|
--version Show version
|
81
223
|
|
data/bin/reliable-msg-agent
CHANGED
@@ -14,14 +14,23 @@ parsers["start"] = OptionParser.new { |parser|
|
|
14
14
|
parser.on("-v", "--verbose", "Verbose output") {
|
15
15
|
options[:verbose] = true
|
16
16
|
}
|
17
|
+
parser.on("-d", "--daemon", "Daemon mode") {
|
18
|
+
options[:daemon] = true
|
19
|
+
}
|
20
|
+
parser.on("-u", "--user=USER", "Effective user name") { |v|
|
21
|
+
options[:user] = v
|
22
|
+
}
|
23
|
+
parser.on("-g", "--group=GROUP", "Effective group name") { |v|
|
24
|
+
options[:group] = v
|
25
|
+
}
|
17
26
|
parser.on("-c", "--conf=CONFFILE", "Config file") { |v|
|
18
|
-
options[:conf] = v
|
27
|
+
options[:conf] = File.expand_path(v)
|
19
28
|
}
|
20
|
-
parser.on("-l", "--log=LOGFILE", "Log file") { |v|
|
21
|
-
options[:log] = v
|
29
|
+
parser.on("-l", "--log=LOGFILE", "Log file (only for the daemon mode)") { |v|
|
30
|
+
options[:log] = File.expand_path(v)
|
22
31
|
}
|
23
|
-
parser.on("-p", "--pid=PIDFILE", "PID file") { |v|
|
24
|
-
options[:pid] = v
|
32
|
+
parser.on("-p", "--pid=PIDFILE", "PID file (only for the daemon mode)") { |v|
|
33
|
+
options[:pid] = File.expand_path(v)
|
25
34
|
}
|
26
35
|
}
|
27
36
|
parsers["stop"] = OptionParser.new { |parser|
|
@@ -30,8 +39,8 @@ parsers["stop"] = OptionParser.new { |parser|
|
|
30
39
|
parser.on("-v", "--verbose", "Verbose output") {
|
31
40
|
options[:verbose] = true
|
32
41
|
}
|
33
|
-
parser.on("-p", "--pid=PIDFILE", "PID file
|
34
|
-
options[:pid] = v
|
42
|
+
parser.on("-p", "--pid=PIDFILE", "PID file") { |v|
|
43
|
+
options[:pid] = File.expand_path(v)
|
35
44
|
}
|
36
45
|
}
|
37
46
|
parsers.each { |k,v| parser = v
|
@@ -54,7 +63,13 @@ unless parsers.keys.include?(subcommand)
|
|
54
63
|
$stderr.puts
|
55
64
|
exit 1
|
56
65
|
end
|
57
|
-
|
66
|
+
|
67
|
+
begin
|
68
|
+
parsers[subcommand].parse! ARGV
|
69
|
+
rescue
|
70
|
+
$stderr.puts parsers[subcommand].help
|
71
|
+
exit 1
|
72
|
+
end
|
58
73
|
|
59
74
|
require "reliable-msg/agent/scripts/script_runner"
|
60
75
|
ReliableMsg::Agent::ScriptRunner.new.send subcommand.to_sym, options
|
@@ -2,6 +2,8 @@
|
|
2
2
|
require "rubygems"
|
3
3
|
require "reliable-msg/agent"
|
4
4
|
|
5
|
+
require "yaml"
|
6
|
+
|
5
7
|
module ReliableMsg::Agent #:nodoc:
|
6
8
|
class Agent
|
7
9
|
def initialize logger
|
@@ -20,7 +22,7 @@ module ReliableMsg::Agent #:nodoc:
|
|
20
22
|
# +options+ :: the options (it is still unused.)
|
21
23
|
#
|
22
24
|
def call msg, conf, options = {}
|
23
|
-
|
25
|
+
@logger.info { "message received\n#{msg.to_yaml}" }
|
24
26
|
end
|
25
27
|
end
|
26
28
|
end
|
@@ -17,28 +17,43 @@ module ReliableMsg::Agent #:nodoc:
|
|
17
17
|
|
18
18
|
default_options = {
|
19
19
|
:verbose => false,
|
20
|
-
:
|
20
|
+
:daemon => false,
|
21
|
+
:user => nil,
|
22
|
+
:group => nil,
|
23
|
+
:conf => File.expand_path(File.dirname(__FILE__) + "/../../../../resources/agent.conf"),
|
21
24
|
:log => "/var/reliable-msg-agent/agent.log",
|
22
25
|
:pid => "/var/reliable-msg-agent/agent.pid",
|
23
26
|
}
|
24
27
|
opt = default_options.merge options
|
25
28
|
|
26
29
|
conf = load_configurations opt[:conf]
|
27
|
-
change_privilege
|
28
|
-
pidfile_accessible_test opt[:pid]
|
29
|
-
logger =
|
30
|
+
change_privilege opt[:user], opt[:group]
|
31
|
+
pidfile_accessible_test opt[:pid] if opt[:daemon]
|
32
|
+
logger = if opt[:daemon]
|
33
|
+
create_logger conf["logger"], opt[:log]
|
34
|
+
else
|
35
|
+
create_logger conf["logger"], $stdout
|
36
|
+
end
|
30
37
|
|
31
38
|
agent_definition conf["agent"]
|
32
39
|
|
33
|
-
|
40
|
+
if opt[:daemon]
|
41
|
+
daemonize(logger) {
|
42
|
+
service = Service.new logger, conf
|
43
|
+
register_signal_handler logger, service, opt[:pid]
|
44
|
+
|
45
|
+
service.start
|
46
|
+
write_pidfile opt[:pid]
|
47
|
+
while service.alive?; sleep 3; end
|
48
|
+
}
|
49
|
+
else
|
34
50
|
service = Service.new logger, conf
|
35
|
-
|
36
|
-
|
37
|
-
|
51
|
+
register_signal_handler logger, service
|
52
|
+
|
38
53
|
service.start
|
39
|
-
write_pidfile opt[:pid]
|
40
54
|
while service.alive?; sleep 3; end
|
41
|
-
|
55
|
+
exit 0
|
56
|
+
end
|
42
57
|
|
43
58
|
rescue Exception => e
|
44
59
|
$stderr.puts "--- ReliableMsg-Agent error! - #{e.message}"
|
@@ -80,22 +95,18 @@ module ReliableMsg::Agent #:nodoc:
|
|
80
95
|
YAML.load(ERB.new(IO.read(conffile)).result)
|
81
96
|
end
|
82
97
|
|
83
|
-
def change_privilege
|
84
|
-
user = conf["user"]
|
98
|
+
def change_privilege user, group
|
85
99
|
uid = begin
|
86
|
-
Etc.getpwnam(user.to_s).uid
|
100
|
+
user ? Etc.getpwnam(user.to_s).uid : Process.euid
|
87
101
|
rescue ArgumentError
|
88
102
|
raise "can't find user for #{user}"
|
89
103
|
end
|
90
|
-
group = conf["group"]
|
91
104
|
gid = begin
|
92
|
-
Etc.getgrnam(group.to_s).gid
|
105
|
+
group ? Etc.getgrnam(group.to_s).gid : Process.egid
|
93
106
|
rescue ArgumentError
|
94
107
|
raise "can't find group for #{group}"
|
95
108
|
end
|
96
109
|
|
97
|
-
raise "Dont't run as root user." if uid == 0
|
98
|
-
|
99
110
|
Process::Sys.setegid(gid)
|
100
111
|
Process::Sys.seteuid(uid)
|
101
112
|
end
|
@@ -135,19 +146,19 @@ module ReliableMsg::Agent #:nodoc:
|
|
135
146
|
}
|
136
147
|
end
|
137
148
|
|
138
|
-
def register_signal_handler logger, service, pidfile
|
149
|
+
def register_signal_handler logger, service, pidfile = nil
|
139
150
|
stopping = false
|
140
|
-
[:TERM].each { |sig|
|
151
|
+
[:INT, :TERM].each { |sig|
|
141
152
|
Signal.trap(sig) {
|
142
153
|
unless stopping
|
143
154
|
begin
|
144
155
|
stopping = true
|
145
156
|
service.stop
|
146
|
-
File.unlink pidfile if File.exist? pidfile
|
157
|
+
File.unlink pidfile if pidfile and File.exist? pidfile
|
147
158
|
exit! 0
|
148
159
|
|
149
160
|
rescue Exception => e
|
150
|
-
File.unlink pidfile if File.exist? pidfile
|
161
|
+
File.unlink pidfile if pidfile and File.exist? pidfile
|
151
162
|
logger.fatal { "ReliableMsg-Agent error! - #{e.message}" }
|
152
163
|
logger.fatal { e.backtrace.join("\n\t") }
|
153
164
|
exit! 1
|
@@ -162,7 +173,7 @@ module ReliableMsg::Agent #:nodoc:
|
|
162
173
|
end
|
163
174
|
|
164
175
|
def agent_definition deffile
|
165
|
-
Agent.class_eval open(deffile, "r") { |f| f.read }
|
176
|
+
Agent.class_eval open(deffile, "r") { |f| f.read } if deffile
|
166
177
|
end
|
167
178
|
|
168
179
|
end
|
data/resources/agent.conf
CHANGED
@@ -7,13 +7,15 @@
|
|
7
7
|
prog=reliable-msg-agentd
|
8
8
|
|
9
9
|
base=reliable-msg-agent
|
10
|
+
user=root
|
11
|
+
group=root
|
10
12
|
cnf=/etc/reliable-msg-agent/agent.conf
|
11
13
|
pid=/var/reliable-msg-agent/agent.pid
|
12
14
|
log=/var/reliable-msg-agent/agent.log
|
13
15
|
|
14
16
|
start() {
|
15
17
|
echo $"Start ReliableMsg-Agent ..."
|
16
|
-
$base start -c $cnf -p $pid -l $log -d
|
18
|
+
$base start -u $user -g $group -c $cnf -p $pid -l $log -d
|
17
19
|
}
|
18
20
|
|
19
21
|
stop() {
|
data/spec/service_spec.rb
CHANGED
@@ -80,9 +80,10 @@ describe ReliableMsg::Agent::Service do
|
|
80
80
|
@consumers = mock ReliableMsg::Agent::Consumers
|
81
81
|
@consumers.stub!(:new).and_return @consumers
|
82
82
|
|
83
|
-
|
84
|
-
@consumers.stub!(:
|
85
|
-
@consumers.stub!(:
|
83
|
+
consumers_alive = false
|
84
|
+
@consumers.stub!(:start) { consumers_alive = true }
|
85
|
+
@consumers.stub!(:stop) { consumers_alive = false }
|
86
|
+
@consumers.stub!(:alive?).and_return { consumers_alive }
|
86
87
|
|
87
88
|
ReliableMsg::Agent::Service.class_eval {
|
88
89
|
public_class_method :dependency_classes
|
@@ -98,12 +99,27 @@ describe ReliableMsg::Agent::Service do
|
|
98
99
|
exactly(1)
|
99
100
|
ReliableMsg::Agent::Service.new @logger, @conf
|
100
101
|
end
|
102
|
+
|
103
|
+
describe "#start" do
|
104
|
+
before do
|
105
|
+
@s = ReliableMsg::Agent::Service.new @logger, @conf
|
106
|
+
end
|
107
|
+
|
108
|
+
it "mockclass should receive #start exactly 1" do
|
109
|
+
@consumers.should_receive(:start).with(no_args).exactly(1)
|
110
|
+
@s.start
|
111
|
+
end
|
112
|
+
|
113
|
+
after do
|
114
|
+
@s.stop rescue nil
|
115
|
+
@s = nil
|
116
|
+
end
|
117
|
+
end
|
101
118
|
end
|
102
119
|
|
103
120
|
after do
|
104
121
|
ReliableMsg::Agent::Service.dependency_classes_init
|
105
122
|
end
|
106
123
|
end
|
107
|
-
|
108
124
|
end
|
109
125
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reliable-msg-agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.3
|
10
|
+
version: 0.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- hamajyotan
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-04-04 00:00:00 +09:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|