mysql_isolated_server 0.2.0 → 0.2.1

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/Gemfile CHANGED
@@ -2,3 +2,4 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in mysql_isolated_server.gemspec
4
4
  gemspec
5
+ gem 'bump'
data/README.md CHANGED
@@ -1,29 +1,34 @@
1
- # MysqlIsolatedServer
1
+ # Mysql Isolated Servers -- a gem for testing mysql stuff
2
2
 
3
- TODO: Write a gem description
3
+ This gem provides functionality to quickly bring up and tear down mysql instances for the
4
+ purposes of testing code against more advanced mysql topologies -- replication, vertical
5
+ partitions, etc.
4
6
 
5
- ## Installation
7
+ I developed this as part of my testing strategy for implementing http://github.com/osheroff/ar_mysql_flexmaster, but it's
8
+ been useful in developement of a couple of other projects too (http://github.com/osheroff/mmtop).
6
9
 
7
- Add this line to your application's Gemfile:
10
+ ## Usage
8
11
 
9
- gem 'mysql_isolated_server'
12
+ ```
13
+ $mysql_master = MysqlIsolatedServer.new(allow_output: false)
14
+ $mysql_master.boot!
10
15
 
11
- And then execute:
16
+ puts "mysql master booted on port #{$mysql_master.port} -- access with mysql -uroot -h127.0.0.1 --port=#{$mysql_master.port} mysql"
12
17
 
13
- $ bundle
18
+ $mysql_slave = MysqlIsolatedServer.new
19
+ $mysql_slave.boot!
14
20
 
15
- Or install it yourself as:
21
+ puts "mysql slave booted on port #{$mysql_slave.port} -- access with mysql -uroot -h127.0.0.1 --port=#{$mysql_slave.port} mysql"
16
22
 
17
- $ gem install mysql_isolated_server
23
+ $mysql_slave_2 = MysqlIsolatedServer.new
24
+ $mysql_slave_2.boot!
18
25
 
19
- ## Usage
26
+ puts "mysql chained slave booted on port #{$mysql_slave_2.port} -- access with mysql -uroot -h127.0.0.1 --port=#{$mysql_slave_2.port} mysql"
20
27
 
21
- TODO: Write usage instructions here
28
+ $mysql_slave.make_slave_of($mysql_master)
29
+ $mysql_slave_2.make_slave_of($mysql_slave)
22
30
 
23
- ## Contributing
31
+ $mysql_slave.set_rw(false)
32
+ sleep if __FILE__ == $0
33
+ ```
24
34
 
25
- 1. Fork it
26
- 2. Create your feature branch (`git checkout -b my-new-feature`)
27
- 3. Commit your changes (`git commit -am 'Add some feature'`)
28
- 4. Push to the branch (`git push origin my-new-feature`)
29
- 5. Create new Pull Request
data/Rakefile CHANGED
@@ -1 +1,2 @@
1
1
  require "bundler/gem_tasks"
2
+ require "bump/tasks"
@@ -1,3 +1,3 @@
1
1
  class MysqlIsolatedServer
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -43,13 +43,15 @@ class MysqlIsolatedServer
43
43
 
44
44
  def locate_executable(*candidates)
45
45
  output = `which #{candidates.join(' ')}`
46
- return nil if output == "\n"
46
+ raise "I couldn't find any of these: #{candidates.join(',')} in $PATH" if output.chomp.empty?
47
47
  output.split("\n").first
48
48
  end
49
49
 
50
50
  def up!
51
+ mysqld = locate_executable("mysqld")
52
+
51
53
  exec_server <<-EOL
52
- mysqld --no-defaults --default-storage-engine=innodb \
54
+ #{mysqld} --no-defaults --default-storage-engine=innodb \
53
55
  --datadir=#{@mysql_data_dir} --pid-file=#{@base}/mysqld.pid --port=#{@port} \
54
56
  #{@params} --socket=#{@mysql_data_dir}/mysql.sock --log-bin --log-slave-updates
55
57
  EOL
@@ -75,7 +77,8 @@ class MysqlIsolatedServer
75
77
  system("cp -a #{@load_data_path}/* #{@mysql_data_dir}")
76
78
  system("rm -f #{@mysql_data_dir}/relay-log.info")
77
79
  else
78
- mysql_install_db = `which mysql_install_db`
80
+ mysql_install_db = locate_executable("mysql_install_db")
81
+
79
82
  idb_path = File.dirname(mysql_install_db)
80
83
  system("(cd #{idb_path}/..; mysql_install_db --datadir=#{@mysql_data_dir} --user=`whoami`) >/dev/null 2>&1")
81
84
  system("cp #{File.expand_path(File.dirname(__FILE__))}/tables/user.* #{@mysql_data_dir}/mysql")
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.2.0
4
+ version: 0.2.1
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-02 00:00:00.000000000 Z
12
+ date: 2013-06-03 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.
@@ -56,3 +56,4 @@ specification_version: 3
56
56
  summary: A small library that allows you to easily spin up new local mysql servers
57
57
  for testing purposes.
58
58
  test_files: []
59
+ has_rdoc: