mysql_isolated_server 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  class MysqlIsolatedServer
2
- VERSION = "0.0.3"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -47,6 +47,26 @@ class MysqlIsolatedServer
47
47
  output.split("\n").first
48
48
  end
49
49
 
50
+ def up!
51
+ exec_server <<-EOL
52
+ mysqld --no-defaults --default-storage-engine=innodb \
53
+ --datadir=#{@mysql_data_dir} --pid-file=#{@base}/mysqld.pid --port=#{@port} \
54
+ #{@params} --socket=#{@mysql_data_dir}/mysql.sock --log-bin --log-slave-updates
55
+ EOL
56
+
57
+ while !system("mysql -h127.0.0.1 --port=#{@port} --database=mysql -u root -e 'select 1' >/dev/null 2>&1")
58
+ sleep(0.1)
59
+ end
60
+ end
61
+
62
+ def down!
63
+ Process.kill("TERM", @pid)
64
+ while (Process.kill 0, @pid rescue false)
65
+ sleep 1
66
+ end
67
+ @cx = nil
68
+ end
69
+
50
70
  def boot!
51
71
  @port ||= grab_free_port
52
72
  system("rm -Rf #{@mysql_data_dir}")
@@ -61,15 +81,7 @@ class MysqlIsolatedServer
61
81
  system("cp #{File.expand_path(File.dirname(__FILE__))}/tables/user.* #{@mysql_data_dir}/mysql")
62
82
  end
63
83
 
64
- exec_server <<-EOL
65
- mysqld --no-defaults --default-storage-engine=innodb \
66
- --datadir=#{@mysql_data_dir} --pid-file=#{@base}/mysqld.pid --port=#{@port} \
67
- #{@params} --socket=#{@mysql_data_dir}/mysql.sock --log-bin --log-slave-updates
68
- EOL
69
-
70
- while !system("mysql -h127.0.0.1 --port=#{@port} --database=mysql -u root -e 'select 1' >/dev/null 2>&1")
71
- sleep(0.1)
72
- end
84
+ up!
73
85
 
74
86
  tzinfo_to_sql = locate_executable("mysql_tzinfo_to_sql5", "mysql_tzinfo_to_sql")
75
87
  raise "could not find mysql_tzinfo_to_sql" unless tzinfo_to_sql
@@ -109,8 +121,9 @@ class MysqlIsolatedServer
109
121
 
110
122
  exec(cmd)
111
123
  end
124
+ Thread.new { Process.wait(pid) }
112
125
  at_exit {
113
- Process.kill("TERM", pid)
126
+ Process.kill("TERM", pid) rescue nil
114
127
  system("rm -Rf #{base}")
115
128
  }
116
129
  @pid = pid
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mysql_isolated_server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
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-04-19 00:00:00.000000000 Z
12
+ date: 2013-04-23 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A small library that allows you to easily spin up new local mysql servers
15
15
  for testing purposes.
@@ -50,7 +50,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
50
50
  version: '0'
51
51
  requirements: []
52
52
  rubyforge_project:
53
- rubygems_version: 1.8.24
53
+ rubygems_version: 1.8.25
54
54
  signing_key:
55
55
  specification_version: 3
56
56
  summary: A small library that allows you to easily spin up new local mysql servers