mysql-pause 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -54,6 +54,10 @@ gem install mysql-pause
54
54
  1 row in set (18.01 sec)
55
55
 
56
56
  == Extend MySQL adapter
57
+ === Install
58
+
59
+ gem install mysql-pause-adapter-ext
60
+
57
61
  === Example code
58
62
 
59
63
  require 'active_record'
data/bin/mpctl CHANGED
@@ -4,10 +4,28 @@ $: << File.expand_path(File.dirname(__FILE__) + '/../lib')
4
4
  require 'drb/drb'
5
5
  require 'optparse'
6
6
  require 'mysql-pause/constants'
7
+ require 'yaml'
8
+
9
+ COMMAND_NAME = File.basename(__FILE__)
7
10
 
8
11
  COMMANDS = {
9
- 'pause' => true,
10
- 'resume' => false,
12
+ 'pause' => lambda {|server_options|
13
+ server_options[:pause] = true
14
+ },
15
+ 'resume' => lambda {|server_options|
16
+ server_options[:pause] = false
17
+ },
18
+ 'status' => lambda {|server_options|
19
+ h = {}
20
+ server_options.to_hash.each {|k, v| h[k.to_s] = v }
21
+ puts YAML.dump(h)
22
+ },
23
+ 'set-interval' => lambda {|server_options, v|
24
+ server_options[:interval] = v.to_i
25
+ },
26
+ 'set-debug' => lambda {|server_options, v|
27
+ server_options[:debug] = !!(/#{Regexp.escape(v)}/i =~ 'true')
28
+ },
11
29
  }
12
30
 
13
31
  options = nil
@@ -19,11 +37,10 @@ ARGV.options do |parser|
19
37
  :socket => "/var/tmp/#{APP_NAME}.sock",
20
38
  }
21
39
 
22
- parser.on('-i', '--inerval=N' ) {|v| options[:interval] = v.to_i }
23
- parser.on('' , '--socket=SOCK_FILE') {|v| options[:socket] = v }
40
+ parser.on('-S', '--socket=SOCK_FILE') {|v| options[:socket] = v }
24
41
 
25
42
  help_and_exit = lambda do |v|
26
- $stderr.puts parser.help.sub(APP_NAME, "#{APP_NAME} {#{cmds.join('|')}}")
43
+ $stderr.puts parser.help.sub(COMMAND_NAME, "#{COMMAND_NAME} {#{cmds.join('|')}}")
27
44
  exit 1
28
45
  end
29
46
 
@@ -31,13 +48,17 @@ ARGV.options do |parser|
31
48
 
32
49
  parser.parse!
33
50
 
34
- unless (ARGV.length == 0 and options.length > 1) or (ARGV.length == 1 and cmds.include?(ARGV[0]))
51
+ unless ARGV.length >= 1 and cmds.include?(ARGV[0])
35
52
  help_and_exit.call(true)
36
53
  end
37
54
  end # parse options
38
55
 
39
- cmd = ARGV[0]
40
56
  server_options = DRbObject.new_with_uri("drbunix:#{options[:socket]}")
41
57
 
42
- server_options[:pause] = COMMANDS[cmd] if cmd
43
- server_options[:interval] = options[:interval] if options[:interval]
58
+ cmd = COMMANDS.fetch(ARGV[0])
59
+
60
+ if cmd.arity > 1
61
+ cmd.call(server_options, ARGV[1])
62
+ else
63
+ cmd.call(server_options)
64
+ end
@@ -18,6 +18,7 @@ ARGV.options do |parser|
18
18
  :interval => 3,
19
19
  :working_dir => '/var',
20
20
  :socket => "/var/tmp/#{APP_NAME}.sock",
21
+ :debug => false,
21
22
  }
22
23
 
23
24
  parser.on('-a', '--addr=ADDR' ) {|v| options[:addr] = v }
@@ -26,8 +27,9 @@ ARGV.options do |parser|
26
27
  parser.on('-P', '--backend-port=PORT') {|v| options[:backend_port] = v.to_i }
27
28
  parser.on('-i', '--inerval=N' ) {|v| options[:interval] = v.to_i }
28
29
  parser.on('-n', '--threads=SIZE' ) {|v| options[:threads] = v.to_i }
29
- parser.on('' , '--working-dir=DIR' ) {|v| options[:working_dir] = v }
30
- parser.on('' , '--socket=SOCK_FILE' ) {|v| options[:socket] = v }
30
+ parser.on('-W', '--working-dir=DIR' ) {|v| options[:working_dir] = v }
31
+ parser.on('-S', '--socket=SOCK_FILE' ) {|v| options[:socket] = v }
32
+ parser.on('', '--debug' ) { options[:debug] = true }
31
33
 
32
34
  help_and_exit = lambda do |v|
33
35
  $stderr.puts parser.help.sub(APP_NAME, "#{APP_NAME} {#{daemon_commands.join('|')}}")
@@ -6,6 +6,18 @@ module MysqlPause
6
6
  @proxy = proxy
7
7
  end
8
8
 
9
+ def post_init
10
+ if @proxy.options[:debug]
11
+ @proxy.logger.debug("backend: connect")
12
+ end
13
+ end
14
+
15
+ def unbind
16
+ if @proxy.options[:debug]
17
+ @proxy.logger.debug("backend: unbind")
18
+ end
19
+ end
20
+
9
21
  def receive_data(data)
10
22
  @proxy.send_data(data)
11
23
  end
@@ -1,2 +1,2 @@
1
1
  APP_NAME = 'mysql-pause'
2
- Version = '0.1.4'
2
+ Version = '0.1.5'
@@ -6,6 +6,8 @@ require 'socket'
6
6
 
7
7
  module MysqlPause
8
8
  class Proxy < EM::Connection
9
+ attr_reader :options
10
+ attr_reader :logger
9
11
 
10
12
  def initialize(be_host, be_port, options)
11
13
  @options = options
@@ -23,6 +25,18 @@ module MysqlPause
23
25
  end
24
26
  end
25
27
 
28
+ def post_init
29
+ if @options[:debug]
30
+ @logger.debug("proxy: connect")
31
+ end
32
+ end
33
+
34
+ def unbind
35
+ if @options[:debug]
36
+ @logger.debug("proxy: unbind")
37
+ end
38
+ end
39
+
26
40
  def receive_data(data)
27
41
  EM.defer {
28
42
  if @options[:pause]
@@ -23,6 +23,7 @@ module MysqlPause
23
23
  @@control_options = {
24
24
  :pause => false,
25
25
  :interval => @@options[:interval],
26
+ :debug => @@options[:debug],
26
27
  }
27
28
 
28
29
  # start DRb
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mysql-pause
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-24 00:00:00.000000000 Z
12
+ date: 2013-05-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine