mysql-pause 0.1.4 → 0.1.5

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/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