coney_island 0.9 → 0.10

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: 7dba043d7a55d3830d4a1d26147fa56148433713
4
- data.tar.gz: be41a962dd7a4507839f4f7285e823c2a4ba0508
3
+ metadata.gz: 1f6db60a160fd5830bdb37c33a3cbc3c198684d1
4
+ data.tar.gz: 8322d3d273c4d89d5979f3c1f84ba191b37f8a96
5
5
  SHA512:
6
- metadata.gz: 9e816ff7f5e2620a672c6fb8be05755b5b270c77be586595befcea3258b8624d3a65011461781d9c62b8972acf608ef06ae6799336dc13bb27b472e44aeb1512
7
- data.tar.gz: 3d8e612aad3bd9e432e15f3328cbdad05de6497a46ae62e4a6ba517fab9b89e211e0f6415e354cca7d28e6db341d2ce592abfcfba80b361d3990c5e2c69a3cc2
6
+ metadata.gz: c1ba2a4ca1c04f20be1b37423ec72cf5776a982273a51494695ca28ffa8dffbb36d36755197610cc81999f9f2245b36b7d4aad929c67aa64013c997cd7ff20b1
7
+ data.tar.gz: 12120fa3eab929b82e4df6946c43be9c552672cdf6e0aa64c42cac522cbcc12987c7d91a40d72e9ccbcf37bfeebbb1eac5ae316be8eedd7806d8cbd45c79ac2c
@@ -11,6 +11,7 @@ module ConeyIsland
11
11
  @timeout = args['timeout']
12
12
  @method_name = args['method_name']
13
13
  @instance_id = args['instance_id']
14
+ @singleton = args['singleton']
14
15
  @class_name = args['klass']
15
16
  @klass = @class_name.constantize
16
17
  @method_args = args['args']
@@ -25,6 +26,8 @@ module ConeyIsland
25
26
  @timeout ||= BG_TIMEOUT_SECONDS
26
27
  if @instance_id.present?
27
28
  @object = @klass.find(@instance_id)
29
+ elsif @singleton
30
+ @object = @klass.new
28
31
  else
29
32
  @object = @klass
30
33
  end
@@ -5,7 +5,22 @@ module ConeyIsland
5
5
  base.extend ClassMethods
6
6
  end
7
7
 
8
+ def method_missing(method_name, *args)
9
+ method_str = method_name.to_s
10
+ if method_str =~ /.*_async$/
11
+ synchronous_method = method_str.sub(/_async$/, '')
12
+ if self.respond_to?(:id) && self.class.respond_to?(:find)
13
+ ConeyIsland.submit(self.class, synchronous_method, instance_id: self.id, args: args)
14
+ else
15
+ ConeyIsland.submit(self.class, synchronous_method, singleton: true, args: args)
16
+ end
17
+ else
18
+ super
19
+ end
20
+ end
21
+
8
22
  module ClassMethods
23
+
9
24
  def set_background_defaults(work_queue: nil, delay: nil, timeout: nil)
10
25
  self.coney_island_settings[:work_queue] = work_queue
11
26
  self.coney_island_settings[:delay] = delay
@@ -16,25 +31,16 @@ module ConeyIsland
16
31
  @coney_island_settings ||= {}
17
32
  end
18
33
 
19
- def create_instance_async_methods(*synchronous_methods)
20
- synchronous_methods.each do |synchronous_method|
21
- define_method("#{synchronous_method}_async") do |*args|
22
- unless self.respond_to? :id
23
- raise StandardError.new(
24
- "#{synchronous_method} is not an instance method, ConeyIsland can't async it via :create_instance_async_methods")
25
- end
26
- ConeyIsland.submit(self.class, synchronous_method, instance_id: self.id, args: args)
27
- end
34
+ def method_missing(method_name, *args)
35
+ method_str = method_name.to_s
36
+ if method_str =~ /.*_async$/
37
+ synchronous_method = method_str.sub(/_async$/, '')
38
+ ConeyIsland.submit(self, synchronous_method, args: args)
39
+ else
40
+ super
28
41
  end
29
42
  end
30
43
 
31
- def create_class_async_methods(*synchronous_methods)
32
- synchronous_methods.each do |synchronous_method|
33
- define_singleton_method("#{synchronous_method}_async") do |*args|
34
- ConeyIsland.submit(self, synchronous_method, args: args)
35
- end
36
- end
37
- end
38
44
  end
39
45
 
40
46
  end
@@ -1,3 +1,3 @@
1
1
  module ConeyIsland
2
- VERSION = "0.9"
2
+ VERSION = "0.10"
3
3
  end
@@ -1,42 +1,14 @@
1
1
  ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
2
2
  Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
3
- ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
4
- Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
5
- Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
6
- ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
7
- ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
8
- Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
9
- Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
10
- ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
11
- mocked method :publish expects 0 arguments, got 2
12
- undefined method `publish' for nil:NilClass
13
- undefined method `publish' for nil:NilClass
14
- undefined method `publish' for nil:NilClass
15
- undefined method `publish' for nil:NilClass
16
- undefined method `publish' for nil:NilClass
17
- undefined method `publish' for nil:NilClass
18
- undefined method `publish' for nil:NilClass
19
- undefined method `publish' for nil:NilClass
20
- undefined method `publish' for nil:NilClass
21
- undefined method `publish' for nil:NilClass
22
- undefined method `publish' for nil:NilClass
23
- undefined method `publish' for nil:NilClass
24
- undefined method `publish' for nil:NilClass
25
- mocked method :publish expects 0 arguments, got 2
26
- mocked method :publish expects 0 arguments, got 2
27
- mocked method :publish expects 0 arguments, got 2
28
3
  Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
29
4
  ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
30
5
  Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
31
6
  ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
32
7
  Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
33
8
  ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
34
- ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
35
9
  Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
36
10
  ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
37
11
  Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
38
- Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
39
- ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
40
12
  ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
41
13
  Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
42
14
  ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
@@ -44,10 +16,7 @@ Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
44
16
  ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
45
17
  Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
46
18
  ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
47
- Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
48
- Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
49
19
  ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
50
20
  Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
51
21
  ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
52
22
  Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
53
- ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
@@ -57,25 +57,40 @@ class PerformerTest < MiniTest::Test
57
57
  end
58
58
 
59
59
  describe 'async methods' do
60
- it 'creates async instance methods' do
60
+ it 'responds to async instance methods' do
61
61
  my_performer = MyPerformer.new(7)
62
62
  ConeyIsland.run_inline
63
63
  my_performer.set_color_async 'sage'
64
64
  my_performer.color.must_equal 'sage'
65
65
  end
66
- it 'creates async class methods' do
66
+ it 'reponds to async class methods' do
67
67
  ConeyIsland.run_inline
68
68
  MyPerformer.set_tone_async 'contemplative'
69
69
  MyPerformer.tone.must_equal 'contemplative'
70
70
  end
71
+ it 'responds to async methods on singletons' do
72
+ my_singleton = MySingleton.new
73
+ ConeyIsland.run_inline
74
+ singleton_mock = Minitest::Mock.new
75
+ singleton_mock.expect :perform, nil, ['interesting stuff']
76
+ MySingleton.stub(:new, singleton_mock) do
77
+ my_singleton.perform_async 'interesting stuff'
78
+ end
79
+ singleton_mock.verify
80
+ end
81
+ end
82
+ end
83
+
84
+ class MySingleton
85
+ include ConeyIsland::Performer
86
+
87
+ def perform(arg)
71
88
  end
72
89
  end
73
90
 
74
91
  class MyPerformer
75
92
  include ConeyIsland::Performer
76
93
  set_background_defaults work_queue: 'cyclone', delay: 1, timeout: 5
77
- create_class_async_methods :set_tone
78
- create_instance_async_methods :set_color
79
94
 
80
95
  def self.instances
81
96
  @instances ||= {}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coney_island
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.9'
4
+ version: '0.10'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Draut
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-04 00:00:00.000000000 Z
12
+ date: 2015-03-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails