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 CHANGED
@@ -1,10 +1,11 @@
1
1
  language: ruby
2
2
 
3
3
  env:
4
- - DB=mysql CONFIG_FILE=dolphin-mysql.conf.travis
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 -c "./config/${CONFIG_FILE}" &
16
+ - bundle exec ./bin/dolphin_server &
16
17
 
17
18
  script:
18
- - bundle exec rspec ./spec/files/endpoint/
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
+ [![Gem Version](https://badge.fury.io/rb/wakame-dolphin.png)](http://badge.fury.io/rb/wakame-dolphin) [![Build Status](https://travis-ci.org/axsh/wakame-dolphin.png?branch=master)](https://travis-ci.org/axsh/wakame-dolphin) [![Code Climate](https://codeclimate.com/github/axsh/wakame-dolphin.png)](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
- [![Build Status](https://travis-ci.org/axsh/wakame-dolphin.png?branch=master)](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
- require File.join(File.expand_path('../', __FILE__), 'lib/dolphin')
6
+ $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
7
+ require 'dolphin'
7
8
 
8
- unless ENV['CONFIG_FILE'].blank?
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.settings(options[:config_file])
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
@@ -24,3 +24,10 @@ type = file
24
24
  [logger]
25
25
  format = human_readable
26
26
  # format = ltsv
27
+
28
+ [template]
29
+ template_path = ''
30
+ helper_module_path = ''
31
+
32
+ [template_variables]
33
+ # foo = bar
@@ -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
- file_path = File.join(template_path, template_file(template_id))
81
- if File.exists? file_path
82
- File.read(file_path, :encoding => Encoding::UTF_8)
83
- else
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
@@ -7,7 +7,9 @@ module Dolphin::Models
7
7
  class Notification < Base
8
8
  def get(id)
9
9
  res = db.find(:uuid => id)
10
- MultiJson.load(res.value)
10
+ if res
11
+ MultiJson.load(res.value)
12
+ end
11
13
  end
12
14
 
13
15
  def put(id, methods)
@@ -1,145 +1,150 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
- require 'reel/app'
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
- @server = Reel::Server.supervise_as(:reques_handler, host, port) do |connection|
17
+ def start
18
+ Celluloid::Actor[:request_handler_rack_pool] = ::Reel::RackWorker.pool(size: options[:workers], args: [self])
20
19
 
21
- while request = connection.request
22
- begin
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
- post '/events' do |request|
46
- run(request) do
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
- get '/events' do |request|
66
- run(request) do
67
-
68
- limit = @params['limit'].blank? ? GET_EVENT_LIMIT : @params['limit'].to_i
69
- raise "Requested over the limit. Limited to #{GET_EVENT_LIMIT}" if limit > GET_EVENT_LIMIT
70
-
71
- params = {}
72
- params[:count] = limit
73
- params[:start_time] = parse_time(@params['start_time']) unless @params['start_time'].blank?
74
- params[:start_id] = @params['start_id'] unless @params['start_id'].blank?
75
-
76
- events = worker.get_event(params)
77
- raise events.message if events.fail?
78
-
79
- response_params = {
80
- :results => events.message,
81
- :message => 'OK'
82
- }
83
- response_params[:start_time] = @params['start_time'] unless @params['start_time'].blank?
84
- respond_with response_params
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
- get '/notifications' do |request|
89
- run(request) do
90
- required 'notification_id'
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 '/notifications' do |request|
108
- run(request) do
109
- required 'notification_id'
110
- raise 'Nothing parameters.' if @params.blank?
111
-
112
- unsupported_sender_types = @params.keys - Sender::TYPES
113
- raise "Unsuppoted sender types: #{unsupported_sender_types.join(',')}" unless unsupported_sender_types.blank?
114
-
115
- notification = {}
116
- notification[:id] = @notification_id
117
- notification[:methods] = @params
118
- result = worker.put_notification(notification)
119
- raise result.message if result.fail?
120
-
121
- response_params = {
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
- delete '/notifications' do |request|
129
- run(request) do
130
- required 'notification_id'
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
- notification = {}
133
- notification[:id] = @notification_id
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
- result = worker.delete_notification(notification)
136
- raise result.message if result.fail?
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
- response_params = {
139
- :message => 'OK'
140
- }
141
- respond_with response_params
142
- end
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
@@ -1,3 +1,3 @@
1
1
  module Dolphin
2
- VERSION = '0.0.1'
3
- end
2
+ VERSION = '0.0.3'
3
+ end
@@ -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: #{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.settings(config='')
13
-
14
- if @settings.nil?
15
-
16
- # overwrite
17
- if !ENV['CONFIG_FILE'].blank?
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) }
@@ -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 = '0.0.2'
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.2
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-07-03 00:00:00.000000000 Z
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: 2.0.3
340
+ rubygems_version: 1.8.23
295
341
  signing_key:
296
- specification_version: 4
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