rising_dragon 0.1.0 → 0.1.1

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.
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