run_this_async 0.1.0 → 0.2.0

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: 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)