asir_beanstalk 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
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