rising_dragon 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b7325e85d2051315672725f40105ce0b5ac4e8e1
4
- data.tar.gz: 92bc9da34ecd6182a4c1f7cae5039f5bdb3d140a
3
+ metadata.gz: e380dfda68728c3a827bace0ed7c693baceb3647
4
+ data.tar.gz: b9a8b7c2c680f21fed1796f098798c58eb6cf79f
5
5
  SHA512:
6
- metadata.gz: df030940e4d67f959e4b1c4c3a9ee492e658c0693d5b45914ee10579299e27fdb8bc63d799d0223d3412d4456390f57cc11a42bd5c9ac438e902ff22d11b08d0
7
- data.tar.gz: dadd90d5e35e6b2a30545b2d3bb5d008d75bafaf4374c624ec94ade46c337f70b11d2059303f439c95ec7833f967fb533ed5cc7a1e72dfdcb122c6786ce7a1d5
6
+ metadata.gz: b3604836e287b5669ebf1b3c5491d6a4c411d5ededc1b4f48d69284bd5478517e0ba2b51b3bc968747c235c8a9842f43a4027edaf785faeb92ad97a47c40d7d0
7
+ data.tar.gz: 2b5561a269b8b76e8fc310589272c2eaadc339a0d255b60c9ca52357408c61a6e7bb704ada255d8d73baff685f43d911056d02bab643ef4c544ec13fd59b011e
data/.codeclimate.yml ADDED
@@ -0,0 +1,3 @@
1
+ engines:
2
+ rubocop:
3
+ enabled: false
data/.gitignore CHANGED
@@ -7,3 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+
11
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.rubocop.yml ADDED
@@ -0,0 +1,14 @@
1
+ inherit_gem:
2
+ onkcop:
3
+ - 'config/rubocop.yml'
4
+ - 'config/rspec.yml'
5
+
6
+ AllCops:
7
+ TargetRubyVersion: 2.4
8
+ DisplayStyleGuide: true
9
+
10
+ RSpec/ExampleLength:
11
+ Max: 100
12
+
13
+ RSpec/MultipleExpectations:
14
+ Max: 30
data/.travis.yml ADDED
@@ -0,0 +1,13 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.7
4
+ - 2.3.1
5
+ - 2.3.4
6
+ - 2.4.1
7
+ - ruby-head
8
+
9
+ sudo: false
10
+
11
+ matrix:
12
+ allow_failures:
13
+ - rvm: ruby-head
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in rising_dragon.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -1,8 +1,12 @@
1
+ [![Build Status](https://travis-ci.org/ota42y/rising_dragon.svg?branch=master)](https://travis-ci.org/ota42y/rising_dragon)
2
+ [![Dependency Status](https://gemnasium.com/badges/github.com/ota42y/rising_dragon.svg)](https://gemnasium.com/github.com/ota42y/rising_dragon)
3
+ [![Code Climate](https://codeclimate.com/github/ota42y/rising_dragon/badges/gpa.svg)](https://codeclimate.com/github/ota42y/rising_dragon)
4
+
1
5
  # RisingDragon
2
6
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/rising_dragon`. To experiment with that code, run `bin/console` for an interactive prompt.
7
+ Use AWS SQS/SNS as event worker for Microservices.
4
8
 
5
- TODO: Delete this and the text above, and describe your gem
9
+ ([Shoryuken](https://github.com/phstc/shoryuken) wrapper)
6
10
 
7
11
  ## Installation
8
12
 
@@ -22,11 +26,23 @@ Or install it yourself as:
22
26
 
23
27
  ## Usage
24
28
 
29
+ execute `bundle exec shoryuken -r steps_worker.rb`
30
+
31
+ ### setting file
25
32
  ```ruby
33
+ # steps_worker.rb
34
+
26
35
  require 'rising_dragon'
27
36
  require 'securerandom'
28
37
 
29
- class StepEventHandler < ::RisingDragon::SQS::Handler
38
+ RisingDragon.sqs_client = Aws::SQS::Client.new(
39
+ secret_access_key: Settings.aws.secret_access_key,
40
+ access_key_id: Settings.aws.access_key_id,
41
+ region: Settings.aws.steps_sqs.region
42
+ )
43
+ RisingDragon.add_group("default_group", 25)
44
+
45
+ class StepsEventHandler < ::RisingDragon::SQS::Handler
30
46
  def handle(event)
31
47
  puts event.type
32
48
  puts event.data
@@ -38,18 +54,20 @@ end
38
54
  class SQSWorker
39
55
  include RisingDragon::SQS::Worker
40
56
 
41
- rising_dragon_options queue: "test", auto_delete: true
42
-
43
- def self.register_handlers(emitter)
44
- emitter.register "StepEvent", StepEventHandler
45
- emitter.ignore "RequlEvent"
46
- end
57
+ rising_dragon_options "SQSQueueName", 1, "default_group", auto_delete: true
58
+
59
+ rising_dragon_register "StepsEvent", StepsEventHandler
60
+ rising_dragon_ignore "IgnoreEvent"
47
61
  end
62
+ ```
48
63
 
49
- body_hash = {
64
+ ### event structure
65
+ ```ruby
66
+ {
50
67
  Message: {
51
- type: "StepEvent",
68
+ type: "StepsEvent",
52
69
  data: {
70
+ # write youre event data
53
71
  "id": 42,
54
72
  "datetime": DateTime.new(2016, 04, 01, 16, 00, 00, "+09:00")
55
73
  },
@@ -57,8 +75,6 @@ body_hash = {
57
75
  timestamp: (Time.now.to_f * 1000).to_i
58
76
  }
59
77
  }
60
-
61
- SQSWorker.new.perform("msg", body_hash.to_json)
62
78
  ```
63
79
 
64
80
  ## Development
data/Rakefile CHANGED
@@ -1,2 +1,6 @@
1
- require 'bundler/gem_tasks'
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
2
6
  task default: :spec
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'bundler/setup'
4
- require 'rising_dragon'
3
+ require "bundler/setup"
4
+ require "rising_dragon"
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require 'rising_dragon'
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require 'irb'
13
+ require "irb"
14
14
  IRB.start(__FILE__)
@@ -1,4 +1,4 @@
1
- require 'json'
1
+ require "json"
2
2
 
3
3
  module RisingDragon
4
4
  module SQS
@@ -35,22 +35,18 @@ module RisingDragon
35
35
 
36
36
  def emit_event(event)
37
37
  handler = @handlers[event.type]
38
- unless handler
39
- raise "RisingDragon::SQS::Emitter handler is not registered. event_name: #{event.type}"
40
- end
38
+ handler.new.handle(event) if handler
41
39
 
42
- handler.new.handle(event)
43
40
  nil
44
41
  end
45
42
 
46
- def event_from_json(json_text)
47
- json = JSON.parse(json_text)
48
- msg = json['Message']
43
+ def event_from_json(body)
44
+ msg = JSON.parse(body["Message"])
49
45
 
50
- id = msg['id']
51
- type = msg['type']
52
- timestamp = Time.at(msg['timestamp'] / 1000.0)
53
- data = msg['data']
46
+ id = msg["id"]
47
+ type = msg["type"]
48
+ timestamp = Time.at(msg["timestamp"] / 1000.0)
49
+ data = msg["data"]
54
50
 
55
51
  ::RisingDragon::Event.new(id: id, type: type, timestamp: timestamp, data: data)
56
52
  end
@@ -1,5 +1,3 @@
1
- require 'shoryuken'
2
-
3
1
  module RisingDragon
4
2
  module SQS
5
3
  module Worker
@@ -11,20 +9,23 @@ module RisingDragon
11
9
  end
12
10
 
13
11
  module ClassMethods
14
- def rising_dragon_options(opt = {})
15
- shoryuken_options(opt)
12
+ def rising_dragon_options(sqs_queue_name, weight, group, opt = {})
13
+ shoryuken_opt = { queue: sqs_queue_name, body_parser: :json }.merge(opt)
14
+ shoryuken_options(shoryuken_opt)
15
+
16
+ Shoryuken.add_queue(sqs_queue_name, weight, group)
16
17
  end
17
18
 
18
- def register_handlers(_emitter)
19
- raise 'Overwrite self.register_handlers'
19
+ def rising_dragon_register(event_name, handle_class)
20
+ emitter.register(event_name, handle_class)
20
21
  end
21
22
 
22
- def emitter
23
- return @emitter if @emitter
23
+ def rising_dragon_ignore(event_name)
24
+ emitter.ignore(event_name)
25
+ end
24
26
 
25
- @emitter = ::RisingDragon::SQS::Emitter.new
26
- register_handlers(@emitter)
27
- @emitter
27
+ def emitter
28
+ @emitter ||= ::RisingDragon::SQS::Emitter.new
28
29
  end
29
30
  end
30
31
 
@@ -1,3 +1,3 @@
1
1
  module RisingDragon
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = "0.1.1".freeze
3
3
  end
data/lib/rising_dragon.rb CHANGED
@@ -1,8 +1,12 @@
1
- require 'rising_dragon/version'
2
- require 'rising_dragon/event'
3
- require 'rising_dragon/sqs/emitter'
4
- require 'rising_dragon/sqs/handler'
5
- require 'rising_dragon/sqs/worker'
1
+ require "shoryuken"
2
+
3
+ require "rising_dragon/version"
4
+ require "rising_dragon/event"
5
+ require "rising_dragon/sqs/emitter"
6
+ require "rising_dragon/sqs/handler"
7
+ require "rising_dragon/sqs/worker"
6
8
 
7
9
  module RisingDragon
10
+ extend SingleForwardable
11
+ def_delegators(:Shoryuken, :add_group, :sqs_client)
8
12
  end
@@ -1,38 +1,42 @@
1
1
  # coding: utf-8
2
2
 
3
- lib = File.expand_path('../lib', __FILE__)
3
+ lib = File.expand_path("../lib", __FILE__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require 'rising_dragon/version'
5
+ require "rising_dragon/version"
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.name = 'rising_dragon'
8
+ spec.name = "rising_dragon"
9
9
  spec.version = RisingDragon::VERSION
10
- spec.authors = ['ota42y']
11
- spec.email = ['ota42y@gmail.com']
12
-
13
- spec.summary = 'Event driven architecture library for AWS SNS/SQS'
14
- spec.homepage = 'https://github.com/ota42y/rising_dragon'
15
- spec.description = 'Event driven architecture library for AWS SNS/SQS include SQS worker and SNS publisher'
16
- spec.license = 'MIT'
17
-
10
+ spec.authors = ["ota42y"]
11
+ spec.email = ["ota42y@gmail.com"]
12
+
13
+ spec.summary = "Event driven architecture library for AWS SNS/SQS"
14
+ spec.homepage = "https://github.com/ota42y/rising_dragon"
15
+ spec.description = "Event driven architecture library for AWS SNS/SQS include SQS worker and SNS publisher"
16
+ spec.license = "MIT"
17
+
18
18
  if spec.respond_to?(:metadata)
19
19
  # allow push to any host
20
20
  else
21
- raise 'RubyGems 2.0 or newer is required to protect against ' \
22
- 'public gem pushes.'
21
+ raise "RubyGems 2.0 or newer is required to protect against " \
22
+ "public gem pushes."
23
23
  end
24
24
 
25
25
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
26
26
  f.match(%r{^(test|spec|features)/})
27
27
  end
28
- spec.bindir = 'exe'
28
+ spec.bindir = "exe"
29
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
- spec.require_paths = ['lib']
30
+ spec.require_paths = ["lib"]
31
+
32
+ spec.add_dependency "shoryuken", "~> 3.1"
31
33
 
32
- spec.add_dependency 'shoryuken', '~> 0'
34
+ spec.add_development_dependency "bundler", "~> 1.14"
35
+ spec.add_development_dependency "rake", "~> 12.0"
36
+ spec.add_development_dependency "rspec", "~> 3"
33
37
 
34
- spec.add_development_dependency 'bundler', '~> 1.14'
35
- spec.add_development_dependency 'rake', '~> 10.0'
36
- spec.add_development_dependency 'pry', '~> 0'
37
- spec.add_development_dependency 'pry-byebug', '~> 0'
38
+ spec.add_development_dependency "rubocop", "~> 0.49.1"
39
+ spec.add_development_dependency "onkcop", "~> 0.49.1"
40
+ spec.add_development_dependency "pry", "~> 0.10"
41
+ spec.add_development_dependency "pry-byebug", "~> 3.4"
38
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rising_dragon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ota42y
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-07 00:00:00.000000000 Z
11
+ date: 2017-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: shoryuken
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '3.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '3.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,42 +44,84 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '12.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '10.0'
54
+ version: '12.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.49.1
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.49.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: onkcop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.49.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.49.1
55
97
  - !ruby/object:Gem::Dependency
56
98
  name: pry
57
99
  requirement: !ruby/object:Gem::Requirement
58
100
  requirements:
59
101
  - - "~>"
60
102
  - !ruby/object:Gem::Version
61
- version: '0'
103
+ version: '0.10'
62
104
  type: :development
63
105
  prerelease: false
64
106
  version_requirements: !ruby/object:Gem::Requirement
65
107
  requirements:
66
108
  - - "~>"
67
109
  - !ruby/object:Gem::Version
68
- version: '0'
110
+ version: '0.10'
69
111
  - !ruby/object:Gem::Dependency
70
112
  name: pry-byebug
71
113
  requirement: !ruby/object:Gem::Requirement
72
114
  requirements:
73
115
  - - "~>"
74
116
  - !ruby/object:Gem::Version
75
- version: '0'
117
+ version: '3.4'
76
118
  type: :development
77
119
  prerelease: false
78
120
  version_requirements: !ruby/object:Gem::Requirement
79
121
  requirements:
80
122
  - - "~>"
81
123
  - !ruby/object:Gem::Version
82
- version: '0'
124
+ version: '3.4'
83
125
  description: Event driven architecture library for AWS SNS/SQS include SQS worker
84
126
  and SNS publisher
85
127
  email:
@@ -88,7 +130,11 @@ executables: []
88
130
  extensions: []
89
131
  extra_rdoc_files: []
90
132
  files:
133
+ - ".codeclimate.yml"
91
134
  - ".gitignore"
135
+ - ".rspec"
136
+ - ".rubocop.yml"
137
+ - ".travis.yml"
92
138
  - CODE_OF_CONDUCT.md
93
139
  - Gemfile
94
140
  - README.md