asir_beanstalk 1.1.1 → 1.1.2

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.
data/Changelog CHANGED
@@ -1,4 +1,9 @@
1
- 2012-12-04 Kurt A. Stephens <ks.git@kurtstephens.com>
1
+ 2012-12-04 Kurt A. Stephens <ks.github@kurtstephens.com>
2
+
3
+ * v1.1.2: New version.
4
+ * example: More examples.
5
+
6
+ 2012-12-04 Kurt A. Stephens <ks.github@kurtstephens.com>
2
7
 
3
8
  * v1.1.1: Initial version: Pulled from asir v1.1.0.
4
9
 
@@ -0,0 +1,40 @@
1
+ #!/bin/sh
2
+ set -x
3
+ dir="$(cd "$(dirname $0)" && /bin/pwd)"
4
+ PATH="$dir/../bin:$PATH"
5
+ export RUBYLIB="$dir/../example:$dir/../lib"
6
+ asir="asir verbose=9 config_rb=$dir/config/asir_config.rb"
7
+ args="$*"
8
+ args="${args:-ALL}"
9
+ # set -e
10
+
11
+ #############################
12
+
13
+ case "$args"
14
+ in
15
+ *resque*|*ALL*)
16
+
17
+ $asir start beanstalk conduit
18
+ sleep 1
19
+ if $asir alive beanstalk conduit; then
20
+ echo "beanstalk conduit alive"
21
+ fi
22
+ $asir start beanstalk worker
23
+ sleep 1
24
+ $asir pid beanstalk worker
25
+ if $asir alive beanstalk worker; then
26
+ echo "resque worker alive"
27
+ fi
28
+
29
+ ruby "$dir/asir_control_client_beanstalk.rb"
30
+ sleep 1
31
+ $asir stop beanstalk worker
32
+ sleep 1
33
+ $asir stop beanstalk conduit
34
+
35
+ ;;
36
+ esac
37
+
38
+ #############################
39
+
40
+ exit 0
@@ -0,0 +1,15 @@
1
+ require 'example_helper'
2
+ require 'asir/transport/beanstalk'
3
+ require 'asir/coder/marshal'
4
+ begin
5
+ Email.asir.transport = t =
6
+ ASIR::Transport::Beanstalk.new(:uri => "tcp://localhost:31001")
7
+ t.one_way = true
8
+ t.encoder = ASIR::Coder::Marshal.new
9
+ pr Email.asir.send_email(:pdf_invoice,
10
+ :to => "user@email.com",
11
+ :customer => @customer)
12
+ ensure
13
+ t.close rescue nil
14
+ end
15
+
@@ -0,0 +1,58 @@
1
+ # Used by asir/bin/asir.
2
+ # Configures asir worker transport and error logging.
3
+ # asir object is bound to ASIR::Environment instance.
4
+
5
+ $stderr.puts "asir.phase = #{asir.phase.inspect}" if asir.verbose >= 1
6
+ case asir.phase
7
+ when :configure
8
+ # NOTHING
9
+ true
10
+ when :environment
11
+ require 'rubygems'
12
+
13
+ gem 'asir'
14
+ require 'asir'
15
+ require 'asir/transport/file'
16
+ require 'asir/coder/marshal'
17
+ require 'asir/coder/yaml'
18
+
19
+ $:.unshift File.expand_path('..')
20
+ require 'example_helper'
21
+ require 'sample_service'
22
+ when :start
23
+ # NOTHING
24
+ true
25
+ when :transport
26
+ # Compose with Marshal for final coding.
27
+ coder = ASIR::Coder::Marshal.new
28
+
29
+ # Logger for worker-side Exceptions.
30
+ error_log_file = asir.log_file.sub(/\.log$/, '-error.log')
31
+ error_transport =
32
+ ASIR::Transport::File.new(:file => error_log_file,
33
+ :mode => 'a+',
34
+ :perms => 0666)
35
+ error_transport.encoder = ASIR::Coder::Yaml.new
36
+
37
+ # Setup requested Transport.
38
+ case asir.adjective
39
+ when :beanstalk
40
+ require 'asir/transport/beanstalk'
41
+ transport = ASIR::Transport::Beanstalk.new
42
+ else
43
+ raise "Cannot configure Transport for #{asir.adjective}"
44
+ end
45
+
46
+ transport.encoder = coder
47
+ transport._logger = STDERR
48
+ transport._log_enabled = true
49
+ # transport.verbose = 3
50
+ transport.on_exception =
51
+ lambda { | transport, exc, phase, message, result |
52
+ error_transport.send_request(message)
53
+ }
54
+
55
+ transport
56
+ else
57
+ $stderr.puts "Warning: unhandled asir.phase: #{asir.phase.inspect}"
58
+ end
@@ -0,0 +1,15 @@
1
+ require 'asir'
2
+ require 'time'
3
+
4
+ module DelayedService
5
+ include ASIR::Client
6
+ def self.do_it(t0)
7
+ dt = Time.now - t0
8
+ result = 5 <= dt && dt <= 6 ? :ok : :not_delayed
9
+ puts "DelayedService.do_it(#{t0.iso8601}) dt=#{dt.inspect} #{result.inspect}"
10
+ $stderr.puts "DelayedService.do_it => #{result.inspect}"
11
+ raise "Failed" unless result == :ok
12
+ result
13
+ end
14
+ end
15
+
data/example/ex02.rb ADDED
@@ -0,0 +1,33 @@
1
+ # !SLIDE :capture_code_output true
2
+ # Asynchronous beanstalkd service with delay option
3
+
4
+ require 'example_helper'
5
+ require 'asir/transport/beanstalk'
6
+ begin
7
+ DelayedService.asir.transport = t =
8
+ ASIR::Transport::Beanstalk.new(:address => '127.0.0.1', :port => 30916)
9
+ t.encoder =
10
+ ASIR::Coder::Marshal.new
11
+ t.start_conduit!; sleep 1
12
+ server_process do
13
+ t.prepare_server!
14
+ t.run_server!
15
+ end
16
+ pr DelayedService.asir.
17
+ _configure{|req, p| req.delay = 5}.
18
+ do_it(Time.now)
19
+ sleep 10
20
+ rescue Object => err
21
+ $stderr.puts "#{err.inspect}\n#{err.backtrace * "\n"}"
22
+ ensure
23
+ t.close; sleep 1
24
+ server_kill; sleep 1
25
+ t.stop_conduit!
26
+ end
27
+
28
+ # !SLIDE END
29
+ # EXPECT: : client process
30
+ # EXPECT: : server process
31
+ # EXPECT: DelayedService.do_it => :ok
32
+ # EXPECT: : pr: nil
33
+
data/example/ex03.rb ADDED
@@ -0,0 +1,42 @@
1
+ # !SLIDE :capture_code_output true
2
+ # Buffered asynchronous beanstalkd service with delay option
3
+
4
+ require 'example_helper'
5
+ require 'asir/transport/beanstalk'
6
+ require 'asir/transport/buffer'
7
+ begin
8
+ t =
9
+ ASIR::Transport::Beanstalk.new(:address => '127.0.0.1', :port => 30917)
10
+ t.encoder =
11
+ ASIR::Coder::Marshal.new
12
+ t.start_conduit!; sleep 1
13
+ DelayedService.asir.transport =
14
+ t0 = ASIR::Transport::Buffer.new(:transport => t)
15
+ t0.pause!
16
+ server_process do
17
+ t.prepare_server!
18
+ t.run_server!
19
+ end
20
+ pr [ :paused?, t0.paused?, :at, Time.now.iso8601(2) ]
21
+ pr DelayedService.asir.
22
+ _configure{|req, p| req.delay = 5}.
23
+ do_it(Time.now)
24
+ sleep 2
25
+ pr [ :resuming, :size, t0.size, :at, Time.now.iso8601(2) ]
26
+ t0.resume!
27
+ pr [ :paused?, t0.paused?, :size, t0.size, :at, Time.now.iso8601(2) ]
28
+ pr [ :resumed, :size, t0.size, :at, Time.now.iso8601(2) ]
29
+ sleep 7
30
+ rescue Object => err
31
+ $stderr.puts "#{err.inspect}\n#{err.backtrace * "\n"}"
32
+ ensure
33
+ t.close; sleep 1; server_kill; sleep 1
34
+ t.stop_conduit!
35
+ end
36
+
37
+ # !SLIDE END
38
+ # EXPECT: : client process
39
+ # EXPECT: : server process
40
+ # EXPECT: DelayedService.do_it => :ok
41
+ # EXPECT: : pr: nil
42
+
@@ -12,8 +12,11 @@ gem 'asir'
12
12
  require 'asir'
13
13
  require 'asir/coder/chain'
14
14
  require 'asir/coder/marshal'
15
+ require 'asir/transport/delegation'
16
+ require 'asir/transport/buffer'
15
17
  ASIR::Log.enabled = true unless ENV['ASIR_EXAMPLE_SILENT']
16
18
  require 'sample_service'
19
+ require 'delayed_service'
17
20
 
18
21
  require 'pp'
19
22
 
@@ -1,3 +1,3 @@
1
1
  module AsirBeanstalk
2
- VERSION = "1.1.1"
2
+ VERSION = "1.1.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asir_beanstalk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -90,7 +90,13 @@ files:
90
90
  - README.md
91
91
  - Rakefile
92
92
  - asir_beanstalk.gemspec
93
+ - example/asir_control.sh
94
+ - example/asir_control_client_beanstalk.rb
95
+ - example/config/asir_config.rb
96
+ - example/delayed_service.rb
93
97
  - example/ex01.rb
98
+ - example/ex02.rb
99
+ - example/ex03.rb
94
100
  - example/example_helper.rb
95
101
  - example/sample_service.rb
96
102
  - lib/asir/transport/beanstalk.rb
@@ -112,7 +118,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
112
118
  version: '0'
113
119
  segments:
114
120
  - 0
115
- hash: -1937949383851329736
121
+ hash: 4610995388030827864
116
122
  required_rubygems_version: !ruby/object:Gem::Requirement
117
123
  none: false
118
124
  requirements:
@@ -121,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
127
  version: '0'
122
128
  segments:
123
129
  - 0
124
- hash: -1937949383851329736
130
+ hash: 4610995388030827864
125
131
  requirements: []
126
132
  rubyforge_project:
127
133
  rubygems_version: 1.8.24