run_this_async 0.1.0 → 0.2.0

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: 543867a503c8625f932e04ed58d1bb08eb4e0e40
4
- data.tar.gz: 7866ed65fea7d68f971a89c39c7076f3b6829a48
3
+ metadata.gz: 3d8f24535438601f2fe80bf8225445d44a7d2147
4
+ data.tar.gz: 5929ec09d932b559ed1a4068701905bbe6fa2093
5
5
  SHA512:
6
- metadata.gz: 4087b893b6a7cead4a6a78454906ad83263ef28928dabc1e76a9b00ee2815a9700cc365150167d5b823e1ba570f3e5f3f04d88518fa88cebb7f0968d6556414a
7
- data.tar.gz: 43335c0eb438228fbbb55506c0a9a1c427413e6495f03e7051be8d891950db90561284d7093cf52aee2d3d6224db4a5674a6fb1fb12cc9edf5a784ee85fdcc4d
6
+ metadata.gz: 3420b7cb982633ca61b5705bdd56fd42e89aa8593d5a4d8f89a698dd937288c264eb8e2ec7a323448534e13585665119fb01cc974644de78546d3c03cb938e8f
7
+ data.tar.gz: b59b52e45490654e924b90a01c768567abdc1764264da6353deb6af8e7050368dfa6a1c1a9e9ba63af44c7a82608ab988abf610d05fa985c80b71af3844b06c5
@@ -1,4 +1,5 @@
1
1
  require 'sidekiq'
2
+ require 'run_this_async/callee/decoder'
2
3
 
3
4
  class RunThisAsync::AsyncRunner
4
5
  include ::Sidekiq::Worker
@@ -6,9 +7,7 @@ class RunThisAsync::AsyncRunner
6
7
  def perform(expected_job_id, callee, method, args = nil)
7
8
  return if unexpected_job_id?(expected_job_id)
8
9
 
9
- if callee.is_a?(String)
10
- callee = Object.const_get(callee)
11
- end
10
+ callee = RunThisAsync::Callee::Decoder.call(callee)
12
11
 
13
12
  if method.is_a?(Array)
14
13
  send_chain_of_methods(callee, method, args)
@@ -0,0 +1,7 @@
1
+ module ActiveRecord
2
+ class Base; end
3
+ end
4
+
5
+ module RunThisAsync
6
+ class ActiveRecordPointer < Struct.new(:klass, :id); end
7
+ end
@@ -0,0 +1,25 @@
1
+ module RunThisAsync::Callee
2
+ class Decoder
3
+ include Concord.new(:callee)
4
+ include Procto.call
5
+
6
+ def call
7
+ if callee.instance_of?(String)
8
+ return class_from_string
9
+ elsif callee.instance_of?(RunThisAsync::ActiveRecordPointer)
10
+ return activerecord_model
11
+ end
12
+
13
+ callee
14
+ end
15
+
16
+ private
17
+ def class_from_string
18
+ Object.const_get(callee)
19
+ end
20
+
21
+ def activerecord_model
22
+ callee.klass.find_by(id: callee.id)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ module RunThisAsync::Callee
2
+ class Encoder
3
+ include Concord.new(:callee)
4
+ include Procto.call
5
+
6
+ def call
7
+ if callee.instance_of?(Class)
8
+ return stringified_class
9
+ elsif callee.is_a?(ActiveRecord::Base)
10
+ return activerecord_pointer
11
+ end
12
+
13
+ callee
14
+ end
15
+
16
+ private
17
+ def stringified_class
18
+ callee.to_s
19
+ end
20
+
21
+ def activerecord_pointer
22
+ RunThisAsync::ActiveRecordPointer.new(callee.class, callee.id)
23
+ end
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module RunThisAsync
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,5 +1,9 @@
1
1
  require 'run_this_async/version'
2
+ require 'concord'
3
+ require 'procto'
2
4
  require 'run_this_async/async_runner'
5
+ require 'run_this_async/callee/encoder'
6
+ require 'run_this_async/callee/active_record_pointer'
3
7
 
4
8
  module Kernel
5
9
  def run_this(expected_job_id = nil)
@@ -10,7 +14,7 @@ end
10
14
  module RunThisAsync
11
15
  class AsyncPlan < BasicObject
12
16
  def initialize(callee, expected_job_id)
13
- @callee = callee.is_a?(::Class) ? callee.to_s : callee
17
+ @callee = ::RunThisAsync::Callee::Encoder.call(callee)
14
18
  @expected_job_id = expected_job_id
15
19
  @methods_to_call = []
16
20
  @with_args = []
@@ -22,4 +22,6 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
23
  spec.add_development_dependency "rspec", "~> 3.0"
24
24
  spec.add_development_dependency "sidekiq", "~> 4.0"
25
+ spec.add_development_dependency "concord", "~> 0.1.4"
26
+ spec.add_development_dependency "procto", "~> 0.0.3"
25
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: run_this_async
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominik Bylica
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-04 00:00:00.000000000 Z
11
+ date: 2016-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,34 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '4.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: concord
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.1.4
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.1.4
83
+ - !ruby/object:Gem::Dependency
84
+ name: procto
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.0.3
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.0.3
69
97
  description:
70
98
  email:
71
99
  - byldominik+fenoloftaleina@gmail.com
@@ -84,6 +112,9 @@ files:
84
112
  - bin/setup
85
113
  - lib/run_this_async.rb
86
114
  - lib/run_this_async/async_runner.rb
115
+ - lib/run_this_async/callee/active_record_pointer.rb
116
+ - lib/run_this_async/callee/decoder.rb
117
+ - lib/run_this_async/callee/encoder.rb
87
118
  - lib/run_this_async/version.rb
88
119
  - run_this_async.gemspec
89
120
  homepage: https://github.com/fenoloftaleina/run_this_async
@@ -106,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
137
  version: '0'
107
138
  requirements: []
108
139
  rubyforge_project:
109
- rubygems_version: 2.4.3
140
+ rubygems_version: 2.5.1
110
141
  signing_key:
111
142
  specification_version: 4
112
143
  summary: RunThisAsync allows you to call any chain of methods on a class (or object)