wakame-dolphin 0.0.2 → 0.0.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.
- data/.travis.yml +4 -3
- data/README.md +2 -4
- data/Rakefile +3 -4
- data/bin/dolphin_server +4 -2
- data/config/dolphin.conf.example +7 -0
- data/lib/dolphin/helpers/request_helper.rb +0 -50
- data/lib/dolphin/message_builder.rb +27 -7
- data/lib/dolphin/models/rdb/notification.rb +3 -1
- data/lib/dolphin/request_handler.rb +121 -116
- data/lib/dolphin/version.rb +2 -2
- data/lib/dolphin/worker.rb +3 -3
- data/lib/dolphin.rb +13 -21
- data/spec/spec_helper.rb +6 -2
- data/wakame-dolphin.gemspec +4 -3
- metadata +67 -21
- checksums.yaml +0 -7
data/.travis.yml
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
language: ruby
|
2
2
|
|
3
3
|
env:
|
4
|
-
- DB=mysql CONFIG_FILE
|
4
|
+
- DB=mysql CONFIG_FILE=./config/dolphin-mysql.conf.travis
|
5
5
|
|
6
6
|
rvm:
|
7
7
|
- 1.9.3
|
8
|
+
- 2.0.0
|
8
9
|
|
9
10
|
before_install:
|
10
11
|
- gem update bundler
|
@@ -12,10 +13,10 @@ before_install:
|
|
12
13
|
before_script:
|
13
14
|
- mysql -e 'create database dolphin;'
|
14
15
|
- bundle exec rake db:mysql:init
|
15
|
-
- bundle exec ./bin/dolphin_server
|
16
|
+
- bundle exec ./bin/dolphin_server &
|
16
17
|
|
17
18
|
script:
|
18
|
-
- bundle exec
|
19
|
+
- bundle exec rake spec
|
19
20
|
|
20
21
|
after_script:
|
21
22
|
- bundle exec rake db:mysql:drop
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Dolphin
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/wakame-dolphin) [](https://travis-ci.org/axsh/wakame-dolphin) [](https://codeclimate.com/github/axsh/wakame-dolphin)
|
4
|
+
|
3
5
|
Dolphin is notification service.
|
4
6
|
|
5
7
|
### Install for production
|
@@ -68,10 +70,6 @@ $ ls ./tmp/mails
|
|
68
70
|
$ bundle exec rake spec
|
69
71
|
```
|
70
72
|
|
71
|
-
### Code Status
|
72
|
-
|
73
|
-
[](https://travis-ci.org/axsh/wakame-dolphin)
|
74
|
-
|
75
73
|
### License
|
76
74
|
|
77
75
|
Copyright (c) Axsh Co. Components are included distribution under LGPL 3.0 and Apache 2.0
|
data/Rakefile
CHANGED
@@ -3,11 +3,10 @@
|
|
3
3
|
require "rubygems"
|
4
4
|
require "bundler/setup"
|
5
5
|
|
6
|
-
|
6
|
+
$LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
|
7
|
+
require 'dolphin'
|
7
8
|
|
8
|
-
|
9
|
-
Dolphin.settings(File.join(Dolphin.config_path, ENV['CONFIG_FILE']))
|
10
|
-
end
|
9
|
+
Dolphin.load_setting
|
11
10
|
|
12
11
|
require "rspec/core/rake_task"
|
13
12
|
desc 'Run rspec'
|
data/bin/dolphin_server
CHANGED
@@ -31,6 +31,8 @@ rescue => e
|
|
31
31
|
exit!
|
32
32
|
end
|
33
33
|
|
34
|
+
Signal.trap(:INT, "EXIT")
|
35
|
+
|
34
36
|
require 'ltsv'
|
35
37
|
require 'celluloid'
|
36
38
|
|
@@ -56,7 +58,7 @@ module Dolphin
|
|
56
58
|
def self.run(options)
|
57
59
|
|
58
60
|
# init config_file
|
59
|
-
Dolphin.
|
61
|
+
Dolphin.load_setting(options[:config_file])
|
60
62
|
|
61
63
|
if RUBY_VERSION.to_f >= 2
|
62
64
|
# Celluloid::TaskFiber by default
|
@@ -88,7 +90,7 @@ module Dolphin
|
|
88
90
|
# TODO: Chanage to rackup
|
89
91
|
|
90
92
|
server_settings = Dolphin.settings['server']
|
91
|
-
RequestHandler.new(server_settings['host'], server_settings['port'])
|
93
|
+
RequestHandler.new(server_settings['host'], server_settings['port']).start
|
92
94
|
|
93
95
|
Manager.run
|
94
96
|
end
|
data/config/dolphin.conf.example
CHANGED
@@ -6,43 +6,6 @@ module Dolphin
|
|
6
6
|
module Helpers
|
7
7
|
module RequestHelper
|
8
8
|
|
9
|
-
def attach_request_params(request)
|
10
|
-
raise "Unsuppoted Content-Type: #{request.env['Content-Type']}" unless request.env['Content-Type'] === 'application/json'
|
11
|
-
@params = {}
|
12
|
-
@notification_id = request.env['X-Notification-Id']
|
13
|
-
@message_type = request.env['X-Message-Type']
|
14
|
-
case request.method
|
15
|
-
when "POST"
|
16
|
-
v = request.input.to_a[0]
|
17
|
-
@params = MultiJson.load(v)
|
18
|
-
when "GET"
|
19
|
-
@params = parse_query_string(request.env["QUERY_STRING"])
|
20
|
-
end
|
21
|
-
@params
|
22
|
-
end
|
23
|
-
|
24
|
-
def run(request, &blk)
|
25
|
-
begin
|
26
|
-
attach_request_params(request)
|
27
|
-
logger :info, @params
|
28
|
-
blk.call
|
29
|
-
rescue LoadError => e
|
30
|
-
logger :error, e
|
31
|
-
[400, {}, MultiJson.dump({
|
32
|
-
:message => 'Request faild.'
|
33
|
-
})]
|
34
|
-
rescue => e
|
35
|
-
logger :error, e
|
36
|
-
[400, {}, MultiJson.dump({
|
37
|
-
:message => e.message
|
38
|
-
})]
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def respond_with(data)
|
43
|
-
[200, {}, MultiJson.dump(data)]
|
44
|
-
end
|
45
|
-
|
46
9
|
def required(name)
|
47
10
|
case name
|
48
11
|
when 'notification_id'
|
@@ -50,19 +13,6 @@ module Dolphin
|
|
50
13
|
end
|
51
14
|
end
|
52
15
|
|
53
|
-
private
|
54
|
-
def parse_query_string(query_string)
|
55
|
-
params = {}
|
56
|
-
unless query_string.blank?
|
57
|
-
parts = query_string.split('&')
|
58
|
-
parts.collect do |part|
|
59
|
-
key, value = part.split('=')
|
60
|
-
params.store(key, value)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
params
|
64
|
-
end
|
65
|
-
|
66
16
|
def parse_time(time)
|
67
17
|
return nil if time.blank? || !time.is_a?(String)
|
68
18
|
Time.parse(URI.decode(time)).to_time
|
@@ -8,6 +8,17 @@ module Dolphin
|
|
8
8
|
|
9
9
|
include Dolphin::Helpers::Message::ZabbixHelper
|
10
10
|
|
11
|
+
# Load plugable helpers
|
12
|
+
if Dolphin.settings['template']
|
13
|
+
Dir.glob(File.join(Dolphin.settings['template']['helper_module_path'], '*_helper.rb')).each {|f|
|
14
|
+
require f
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
Dolphin::Helpers::Message.constants.each {|c|
|
19
|
+
include Dolphin::Helpers::Message.const_get(c)
|
20
|
+
}
|
21
|
+
|
11
22
|
def build(template_str, params)
|
12
23
|
template = Erubis::Eruby.new(template_str)
|
13
24
|
if params.is_a? Hash
|
@@ -77,13 +88,22 @@ module Dolphin
|
|
77
88
|
|
78
89
|
private
|
79
90
|
def template(template_id)
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
logger :warn, "File not found #{file_path}"
|
85
|
-
nil
|
91
|
+
load_target_templates = []
|
92
|
+
|
93
|
+
if Dolphin.settings['template']
|
94
|
+
load_target_templates << File.join(Dolphin.settings['template']['template_path'], 'email')
|
86
95
|
end
|
96
|
+
|
97
|
+
load_target_templates << template_path
|
98
|
+
load_target_templates.each {|path|
|
99
|
+
file_path = File.join(path, template_file(template_id))
|
100
|
+
if File.exists? file_path
|
101
|
+
return File.read(file_path, :encoding => Encoding::UTF_8)
|
102
|
+
else
|
103
|
+
logger :warn, "File not found #{file_path}"
|
104
|
+
return nil
|
105
|
+
end
|
106
|
+
}
|
87
107
|
end
|
88
108
|
|
89
109
|
def template_file(template_id)
|
@@ -95,4 +115,4 @@ module Dolphin
|
|
95
115
|
end
|
96
116
|
end
|
97
117
|
end
|
98
|
-
end
|
118
|
+
end
|
@@ -1,145 +1,150 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
|
-
require 'reel
|
3
|
+
require 'reel'
|
4
4
|
require 'extlib/blank'
|
5
|
+
require 'sinatra/base'
|
6
|
+
require 'sinatra/respond_with'
|
5
7
|
|
6
8
|
module Dolphin
|
7
|
-
class RequestHandler
|
8
|
-
include Reel::App
|
9
|
+
class RequestHandler < Rack::Handler::Reel
|
9
10
|
include Dolphin::Util
|
10
|
-
include Dolphin::Helpers::RequestHelper
|
11
|
-
|
12
|
-
GET_EVENT_LIMIT = 30.freeze
|
13
11
|
|
14
12
|
def initialize(host, port)
|
15
|
-
|
16
|
-
# TODO: Fix Celluloid.logger loading order.
|
13
|
+
super({:host=>host, :port=>port, :app=>RequestApp.new})
|
17
14
|
logger :info, "Load settings in #{Dolphin.config}"
|
15
|
+
end
|
18
16
|
|
19
|
-
|
17
|
+
def start
|
18
|
+
Celluloid::Actor[:request_handler_rack_pool] = ::Reel::RackWorker.pool(size: options[:workers], args: [self])
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
logger :info, {
|
24
|
-
:host => request.headers["Host"],
|
25
|
-
:user_agent => request.headers["User-Agent"]
|
26
|
-
}
|
27
|
-
options = {
|
28
|
-
:method => request.method,
|
29
|
-
:input => request.body
|
30
|
-
}
|
31
|
-
options.merge!(request.headers)
|
32
|
-
status, headers_or_body, body = call Rack::MockRequest.env_for(request.url, options)
|
33
|
-
connection.respond status_symbol(status), headers_or_body, body.to_s
|
34
|
-
rescue => e
|
35
|
-
logger :error, e
|
36
|
-
break
|
37
|
-
end
|
38
|
-
end
|
20
|
+
::Reel::Server.supervise_as(:request_handler, options[:host], options[:port]) do |connection|
|
21
|
+
Celluloid::Actor[:request_handler_rack_pool].handle(connection.detach)
|
39
22
|
end
|
40
23
|
logger :info, "Running on ruby #{RUBY_VERSION} with selected #{Celluloid::task_class}"
|
41
|
-
logger :info, "Listening on http://#{host}:#{port}"
|
42
|
-
@server
|
24
|
+
logger :info, "Listening on http://#{options[:host]}:#{options[:port]}"
|
43
25
|
end
|
44
26
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
raise 'Nothing parameters.' if @params.blank?
|
49
|
-
|
50
|
-
event = {}
|
51
|
-
event[:notification_id] = @notification_id
|
52
|
-
event[:message_type] = @message_type
|
53
|
-
event[:messages] = @params
|
54
|
-
|
55
|
-
events = worker.future.put_event(event)
|
56
|
-
|
57
|
-
# always success because put_event is async action.
|
58
|
-
response_params = {
|
59
|
-
:message => 'OK'
|
60
|
-
}
|
61
|
-
respond_with response_params
|
62
|
-
end
|
27
|
+
def stop
|
28
|
+
Celluloid::Actor[:request_handler].terminate!
|
29
|
+
Celluloid::Actor[:request_handler_rack_pool].terminate!
|
63
30
|
end
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
31
|
+
end
|
32
|
+
|
33
|
+
class RequestApp < Sinatra::Base
|
34
|
+
include Dolphin::Util
|
35
|
+
helpers Dolphin::Helpers::RequestHelper
|
36
|
+
register Sinatra::RespondWith
|
37
|
+
|
38
|
+
respond_to :json
|
39
|
+
GET_EVENT_LIMIT = 3000.freeze
|
40
|
+
|
41
|
+
before do
|
42
|
+
logger :info, {
|
43
|
+
:host => request.host,
|
44
|
+
:user_agent => request.user_agent
|
45
|
+
}
|
46
|
+
@notification_id = request.env['HTTP_X_NOTIFICATION_ID']
|
47
|
+
@message_type = request.env['HTTP_X_MESSAGE_TYPE']
|
48
|
+
|
49
|
+
if request.post?
|
50
|
+
v = request.body
|
51
|
+
@params = MultiJson.load(v)
|
52
|
+
elsif request.get?
|
53
|
+
@params = request.params
|
85
54
|
end
|
86
55
|
end
|
87
56
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
notification = {}
|
93
|
-
notification[:id] = @notification_id
|
94
|
-
|
95
|
-
result = worker.get_notification(notification)
|
96
|
-
raise result.message if result.fail?
|
97
|
-
raise "Not found notification id" if result.message.nil?
|
98
|
-
|
99
|
-
response_params = {
|
100
|
-
:results => result.message,
|
101
|
-
:message => 'OK'
|
102
|
-
}
|
103
|
-
respond_with response_params
|
104
|
-
end
|
57
|
+
error(RuntimeError) do
|
58
|
+
status(400)
|
59
|
+
respond_with {message:'Failed'}
|
105
60
|
end
|
106
61
|
|
107
|
-
post '/
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
:message => 'OK'
|
123
|
-
}
|
124
|
-
respond_with response_params
|
125
|
-
end
|
62
|
+
post '/events' do
|
63
|
+
raise 'Nothing parameters.' if @params.blank?
|
64
|
+
|
65
|
+
event = {}
|
66
|
+
event[:notification_id] = @notification_id
|
67
|
+
event[:message_type] = @message_type
|
68
|
+
event[:messages] = @params
|
69
|
+
|
70
|
+
events = worker.future.put_event(event)
|
71
|
+
|
72
|
+
# always success because put_event is async action.
|
73
|
+
response_params = {
|
74
|
+
:message => 'OK'
|
75
|
+
}
|
76
|
+
respond_with response_params
|
126
77
|
end
|
127
78
|
|
128
|
-
|
129
|
-
|
130
|
-
|
79
|
+
get '/events' do
|
80
|
+
limit = @params['limit'].blank? ? GET_EVENT_LIMIT : @params['limit'].to_i
|
81
|
+
raise "Requested over the limit. Limited to #{GET_EVENT_LIMIT}" if limit > GET_EVENT_LIMIT
|
82
|
+
|
83
|
+
event = {}
|
84
|
+
event[:count] = limit
|
85
|
+
event[:start_time] = parse_time(@params['start_time']) unless @params['start_time'].blank?
|
86
|
+
event[:start_id] = @params['start_id'] unless @params['start_id'].blank?
|
87
|
+
|
88
|
+
events = worker.get_event(event)
|
89
|
+
raise events.message if events.fail?
|
90
|
+
|
91
|
+
response_params = {
|
92
|
+
:results => events.message,
|
93
|
+
:message => 'OK'
|
94
|
+
}
|
95
|
+
response_params[:start_time] = @params['start_time'] unless @params['start_time'].blank?
|
96
|
+
respond_with response_params
|
97
|
+
end
|
131
98
|
|
132
|
-
|
133
|
-
|
99
|
+
get '/notifications' do
|
100
|
+
required 'notification_id'
|
101
|
+
|
102
|
+
notification = {}
|
103
|
+
notification[:id] = @notification_id
|
104
|
+
|
105
|
+
result = worker.get_notification(notification)
|
106
|
+
raise result.message if result.fail?
|
107
|
+
raise "Not found notification id" if result.message.nil?
|
108
|
+
|
109
|
+
response_params = {
|
110
|
+
:results => result.message,
|
111
|
+
:message => 'OK'
|
112
|
+
}
|
113
|
+
respond_with response_params
|
114
|
+
end
|
134
115
|
|
135
|
-
|
136
|
-
|
116
|
+
post '/notifications' do
|
117
|
+
required 'notification_id'
|
118
|
+
raise 'Nothing parameters.' if @params.blank?
|
119
|
+
|
120
|
+
unsupported_sender_types = @params.keys - Sender::TYPES
|
121
|
+
raise "Unsuppoted sender types: #{unsupported_sender_types.join(',')}" unless unsupported_sender_types.blank?
|
122
|
+
|
123
|
+
notification = {}
|
124
|
+
notification[:id] = @notification_id
|
125
|
+
notification[:methods] = @params
|
126
|
+
result = worker.put_notification(notification)
|
127
|
+
raise result.message if result.fail?
|
128
|
+
|
129
|
+
response_params = {
|
130
|
+
:message => 'OK'
|
131
|
+
}
|
132
|
+
respond_with response_params
|
133
|
+
end
|
137
134
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
135
|
+
delete '/notifications' do
|
136
|
+
required 'notification_id'
|
137
|
+
|
138
|
+
notification = {}
|
139
|
+
notification[:id] = @notification_id
|
140
|
+
|
141
|
+
result = worker.delete_notification(notification)
|
142
|
+
raise result.message if result.fail?
|
143
|
+
|
144
|
+
response_params = {
|
145
|
+
:message => 'OK'
|
146
|
+
}
|
147
|
+
respond_with response_params
|
143
148
|
end
|
144
149
|
|
145
150
|
private
|
data/lib/dolphin/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module Dolphin
|
2
|
-
VERSION = '0.0.
|
3
|
-
end
|
2
|
+
VERSION = '0.0.3'
|
3
|
+
end
|
data/lib/dolphin/worker.rb
CHANGED
@@ -59,13 +59,13 @@ module Dolphin
|
|
59
59
|
end
|
60
60
|
|
61
61
|
message = build_message(sender_type, message_template_id, build_params)
|
62
|
-
message.event_id = event_id
|
63
|
-
|
64
62
|
if message.nil?
|
65
|
-
log_message = "Failed to build message: #{
|
63
|
+
log_message = "Failed to build message: #{build_params}"
|
66
64
|
logger :error, log_message
|
67
65
|
# Does not do response to Request Handler.
|
68
66
|
next
|
67
|
+
else
|
68
|
+
message.event_id = event_id
|
69
69
|
end
|
70
70
|
|
71
71
|
logger :info, "Send notification from Worker #{message}"
|
data/lib/dolphin.rb
CHANGED
@@ -4,31 +4,23 @@ require 'parseconfig'
|
|
4
4
|
require 'ostruct'
|
5
5
|
require 'extlib/blank'
|
6
6
|
|
7
|
-
Signal.trap(:INT, "EXIT")
|
8
|
-
|
9
7
|
$LOAD_PATH.unshift File.expand_path('../', __FILE__)
|
10
8
|
|
11
9
|
module Dolphin
|
12
|
-
def self.
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
#
|
17
|
-
|
18
|
-
config = File.join(Dolphin.config_path, ENV['CONFIG_FILE'])
|
19
|
-
elsif config.blank?
|
20
|
-
config = File.join(Dolphin.config_path, 'dolphin.conf')
|
21
|
-
end
|
22
|
-
|
23
|
-
if !File.exists?(config)
|
24
|
-
puts "File not found #{config}"
|
25
|
-
exit!
|
26
|
-
end
|
27
|
-
|
28
|
-
# TODO:validation
|
29
|
-
@config = config
|
30
|
-
@settings = ParseConfig.new(config)
|
10
|
+
def self.load_setting(path=nil)
|
11
|
+
path ||= ENV['CONFIG_FILE'] || File.join(Dolphin.config_path, 'dolphin.conf')
|
12
|
+
|
13
|
+
if !File.exists?(path)
|
14
|
+
STDERR.puts "Not found configuration file: #{path}"
|
15
|
+
exit!
|
31
16
|
end
|
17
|
+
|
18
|
+
@config = path
|
19
|
+
@settings = ParseConfig.new(path)
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.settings
|
23
|
+
raise "Configuration file is not loaded yet." if @settings.nil?
|
32
24
|
@settings
|
33
25
|
end
|
34
26
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,13 +1,17 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
|
-
require 'rspec'
|
5
|
-
require File.join(File.expand_path('../../', __FILE__), 'lib/dolphin')
|
6
4
|
|
7
5
|
# Setup Bundler
|
8
6
|
ENV['BUNDLE_GEMFILE'] ||= File.expand_path(File.dirname(__FILE__) + '/Gemfile')
|
9
7
|
require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
|
10
8
|
Bundler.require :default if defined?(Bundler)
|
9
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
10
|
+
|
11
|
+
require 'rspec'
|
12
|
+
require 'dolphin'
|
13
|
+
|
14
|
+
Dolphin.load_setting
|
11
15
|
|
12
16
|
# Load helper files
|
13
17
|
Dir.glob('./spec/helpers/*_helper.rb').each {|f| require File.expand_path(f) }
|
data/wakame-dolphin.gemspec
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
$:.push File.expand_path('../lib', __FILE__)
|
3
|
-
|
3
|
+
require 'dolphin/version'
|
4
4
|
Gem::Specification.new do |spec|
|
5
5
|
spec.name = 'wakame-dolphin'
|
6
|
-
spec.version =
|
6
|
+
spec.version = Dolphin::VERSION
|
7
7
|
spec.platform = Gem::Platform::RUBY
|
8
8
|
spec.summary = 'notification service'
|
9
9
|
spec.description = 'notification service'
|
@@ -27,11 +27,12 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_runtime_dependency 'extlib', '~> 0.9.16'
|
28
28
|
spec.add_runtime_dependency 'multi_json', '1.6.1'
|
29
29
|
spec.add_runtime_dependency 'rake', '= 10.0.3'
|
30
|
-
spec.add_runtime_dependency 'octarine', '= 0.0.3'
|
31
30
|
spec.add_runtime_dependency 'parseconfig', '= 1.0.2'
|
32
31
|
spec.add_runtime_dependency 'erubis', '= 2.7.0'
|
33
32
|
spec.add_runtime_dependency 'mail-iso-2022-jp', '= 2.0.1'
|
34
33
|
spec.add_runtime_dependency 'simple_uuid', '= 0.2.0'
|
34
|
+
spec.add_runtime_dependency 'sinatra', '~> 1.4.0'
|
35
|
+
spec.add_runtime_dependency 'sinatra-contrib', '~> 1.4.0'
|
35
36
|
|
36
37
|
# Fixed version for reel
|
37
38
|
spec.add_runtime_dependency 'celluloid', '= 0.12.4'
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wakame-dolphin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- axsh Ltd.
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2013-
|
12
|
+
date: 2013-08-16 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: reel
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - '='
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - '='
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -27,6 +30,7 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: actionmailer
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - '='
|
32
36
|
- !ruby/object:Gem::Version
|
@@ -34,6 +38,7 @@ dependencies:
|
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
43
|
- - '='
|
39
44
|
- !ruby/object:Gem::Version
|
@@ -41,6 +46,7 @@ dependencies:
|
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: ltsv
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
51
|
- - '='
|
46
52
|
- !ruby/object:Gem::Version
|
@@ -48,6 +54,7 @@ dependencies:
|
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
59
|
- - '='
|
53
60
|
- !ruby/object:Gem::Version
|
@@ -55,6 +62,7 @@ dependencies:
|
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: extlib
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
67
|
- - ~>
|
60
68
|
- !ruby/object:Gem::Version
|
@@ -62,6 +70,7 @@ dependencies:
|
|
62
70
|
type: :runtime
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
75
|
- - ~>
|
67
76
|
- !ruby/object:Gem::Version
|
@@ -69,6 +78,7 @@ dependencies:
|
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: multi_json
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
83
|
- - '='
|
74
84
|
- !ruby/object:Gem::Version
|
@@ -76,6 +86,7 @@ dependencies:
|
|
76
86
|
type: :runtime
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
91
|
- - '='
|
81
92
|
- !ruby/object:Gem::Version
|
@@ -83,6 +94,7 @@ dependencies:
|
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: rake
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
99
|
- - '='
|
88
100
|
- !ruby/object:Gem::Version
|
@@ -90,27 +102,15 @@ dependencies:
|
|
90
102
|
type: :runtime
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
107
|
- - '='
|
95
108
|
- !ruby/object:Gem::Version
|
96
109
|
version: 10.0.3
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: octarine
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - '='
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: 0.0.3
|
104
|
-
type: :runtime
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - '='
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 0.0.3
|
111
110
|
- !ruby/object:Gem::Dependency
|
112
111
|
name: parseconfig
|
113
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
114
|
requirements:
|
115
115
|
- - '='
|
116
116
|
- !ruby/object:Gem::Version
|
@@ -118,6 +118,7 @@ dependencies:
|
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
121
122
|
requirements:
|
122
123
|
- - '='
|
123
124
|
- !ruby/object:Gem::Version
|
@@ -125,6 +126,7 @@ dependencies:
|
|
125
126
|
- !ruby/object:Gem::Dependency
|
126
127
|
name: erubis
|
127
128
|
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
128
130
|
requirements:
|
129
131
|
- - '='
|
130
132
|
- !ruby/object:Gem::Version
|
@@ -132,6 +134,7 @@ dependencies:
|
|
132
134
|
type: :runtime
|
133
135
|
prerelease: false
|
134
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
135
138
|
requirements:
|
136
139
|
- - '='
|
137
140
|
- !ruby/object:Gem::Version
|
@@ -139,6 +142,7 @@ dependencies:
|
|
139
142
|
- !ruby/object:Gem::Dependency
|
140
143
|
name: mail-iso-2022-jp
|
141
144
|
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
142
146
|
requirements:
|
143
147
|
- - '='
|
144
148
|
- !ruby/object:Gem::Version
|
@@ -146,6 +150,7 @@ dependencies:
|
|
146
150
|
type: :runtime
|
147
151
|
prerelease: false
|
148
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
149
154
|
requirements:
|
150
155
|
- - '='
|
151
156
|
- !ruby/object:Gem::Version
|
@@ -153,6 +158,7 @@ dependencies:
|
|
153
158
|
- !ruby/object:Gem::Dependency
|
154
159
|
name: simple_uuid
|
155
160
|
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
156
162
|
requirements:
|
157
163
|
- - '='
|
158
164
|
- !ruby/object:Gem::Version
|
@@ -160,13 +166,47 @@ dependencies:
|
|
160
166
|
type: :runtime
|
161
167
|
prerelease: false
|
162
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
163
170
|
requirements:
|
164
171
|
- - '='
|
165
172
|
- !ruby/object:Gem::Version
|
166
173
|
version: 0.2.0
|
174
|
+
- !ruby/object:Gem::Dependency
|
175
|
+
name: sinatra
|
176
|
+
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
178
|
+
requirements:
|
179
|
+
- - ~>
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: 1.4.0
|
182
|
+
type: :runtime
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
186
|
+
requirements:
|
187
|
+
- - ~>
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: 1.4.0
|
190
|
+
- !ruby/object:Gem::Dependency
|
191
|
+
name: sinatra-contrib
|
192
|
+
requirement: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
194
|
+
requirements:
|
195
|
+
- - ~>
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: 1.4.0
|
198
|
+
type: :runtime
|
199
|
+
prerelease: false
|
200
|
+
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
202
|
+
requirements:
|
203
|
+
- - ~>
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: 1.4.0
|
167
206
|
- !ruby/object:Gem::Dependency
|
168
207
|
name: celluloid
|
169
208
|
requirement: !ruby/object:Gem::Requirement
|
209
|
+
none: false
|
170
210
|
requirements:
|
171
211
|
- - '='
|
172
212
|
- !ruby/object:Gem::Version
|
@@ -174,6 +214,7 @@ dependencies:
|
|
174
214
|
type: :runtime
|
175
215
|
prerelease: false
|
176
216
|
version_requirements: !ruby/object:Gem::Requirement
|
217
|
+
none: false
|
177
218
|
requirements:
|
178
219
|
- - '='
|
179
220
|
- !ruby/object:Gem::Version
|
@@ -181,6 +222,7 @@ dependencies:
|
|
181
222
|
- !ruby/object:Gem::Dependency
|
182
223
|
name: celluloid-io
|
183
224
|
requirement: !ruby/object:Gem::Requirement
|
225
|
+
none: false
|
184
226
|
requirements:
|
185
227
|
- - '='
|
186
228
|
- !ruby/object:Gem::Version
|
@@ -188,6 +230,7 @@ dependencies:
|
|
188
230
|
type: :runtime
|
189
231
|
prerelease: false
|
190
232
|
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
none: false
|
191
234
|
requirements:
|
192
235
|
- - '='
|
193
236
|
- !ruby/object:Gem::Version
|
@@ -195,6 +238,7 @@ dependencies:
|
|
195
238
|
- !ruby/object:Gem::Dependency
|
196
239
|
name: nio4r
|
197
240
|
requirement: !ruby/object:Gem::Requirement
|
241
|
+
none: false
|
198
242
|
requirements:
|
199
243
|
- - '='
|
200
244
|
- !ruby/object:Gem::Version
|
@@ -202,6 +246,7 @@ dependencies:
|
|
202
246
|
type: :runtime
|
203
247
|
prerelease: false
|
204
248
|
version_requirements: !ruby/object:Gem::Requirement
|
249
|
+
none: false
|
205
250
|
requirements:
|
206
251
|
- - '='
|
207
252
|
- !ruby/object:Gem::Version
|
@@ -274,26 +319,27 @@ files:
|
|
274
319
|
homepage: https://github.com/axsh/wakame-dolphin
|
275
320
|
licenses:
|
276
321
|
- LGPL 3.0
|
277
|
-
metadata: {}
|
278
322
|
post_install_message:
|
279
323
|
rdoc_options: []
|
280
324
|
require_paths:
|
281
325
|
- - lib
|
282
326
|
required_ruby_version: !ruby/object:Gem::Requirement
|
327
|
+
none: false
|
283
328
|
requirements:
|
284
|
-
- - '>='
|
329
|
+
- - ! '>='
|
285
330
|
- !ruby/object:Gem::Version
|
286
331
|
version: 1.9.3
|
287
332
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
333
|
+
none: false
|
288
334
|
requirements:
|
289
|
-
- - '>='
|
335
|
+
- - ! '>='
|
290
336
|
- !ruby/object:Gem::Version
|
291
337
|
version: 1.3.6
|
292
338
|
requirements: []
|
293
339
|
rubyforge_project:
|
294
|
-
rubygems_version:
|
340
|
+
rubygems_version: 1.8.23
|
295
341
|
signing_key:
|
296
|
-
specification_version:
|
342
|
+
specification_version: 3
|
297
343
|
summary: notification service
|
298
344
|
test_files:
|
299
345
|
- spec/files/cassandra_models_spec.rb
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 1083fcd12c989df0d9878212ca88dd1e9799d3a0
|
4
|
-
data.tar.gz: 064f9d4865ff443cb3d0a1abc6e7b687e8fcc9e8
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 0cc6b3984d0c446b8fe8acc8cbd8d8794c0142774f3a87e762616985e3ba50b80c1a6a17f9c99b7732da3366218b789844f4ad00be41efa25c30a440d60cc47c
|
7
|
-
data.tar.gz: 68faacea3a90b3b3277fb06251dcc8b69632bfef277d6c0cfd7c975277704bda759969c514072f4ce6831c74d7560cd3ed3c7db8a1ae4cdeb1b0b8febf0bffb8
|