mrdu 1.0.0
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.
- checksums.yaml +7 -0
- data/lib/mrdu.rb +153 -0
- metadata +71 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 20a024f77552f6dd1a770d73f0b1680bdc8c23da
|
4
|
+
data.tar.gz: 814f334e731940127ecc95821d091c1cbd1ddd57
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1d7dde3aabe2a81ca981a32ed12b28ed70087ef934d803d33191dc6e1bb77daa5a1181ce2868aff3b2717870b4152b21a5320f7993282e6affa51fda06ed7fed
|
7
|
+
data.tar.gz: c93bbb77cf5333557499d51f652a983c06e13979084f81cd1d0bdef7bc9dfe28e45a52bbc9ffd90292b38d0f208a1e0223ce3b997cf82d4468ab45d631e4b349
|
data/lib/mrdu.rb
ADDED
@@ -0,0 +1,153 @@
|
|
1
|
+
require 'trollop'
|
2
|
+
require 'systemu'
|
3
|
+
|
4
|
+
def unmount_ramdisk_mount(ramdisk_dir)
|
5
|
+
check_cmd = <<-CMD
|
6
|
+
sudo stat -f -c '%T' #{ramdisk_dir}
|
7
|
+
CMD
|
8
|
+
|
9
|
+
unmount_cmd = <<-CMD
|
10
|
+
sudo umount #{ramdisk_dir}
|
11
|
+
CMD
|
12
|
+
|
13
|
+
status, stdout, stderr = systemu(check_cmd)
|
14
|
+
while stdout.include?('tmpfs')
|
15
|
+
status, stdout, stderr = systemu(unmount_cmd)
|
16
|
+
puts "Unmount ramdisk mount - status: #{status} - stdout: #{stdout} - stderr: #{stderr}"
|
17
|
+
status, stdout, stderr = systemu(check_cmd)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def create_ramdisk_mount(ramdisk_dir, ramdisk_size)
|
22
|
+
cmd = <<-CMD
|
23
|
+
sudo mkdir -p #{ramdisk_dir} &&
|
24
|
+
sudo mount -t tmpfs -o size=#{ramdisk_size}M tmpfs #{ramdisk_dir}
|
25
|
+
CMD
|
26
|
+
status, stdout, stderr = systemu(cmd)
|
27
|
+
puts "Create ramdisk mount - status: #{status} - stdout: #{stdout} - stderr: #{stderr}"
|
28
|
+
end
|
29
|
+
|
30
|
+
def create_data_location(ramdisk_dir, mysql_data_dir)
|
31
|
+
cmd = <<-CMD
|
32
|
+
sudo mkdir -p #{ramdisk_dir}#{mysql_data_dir}
|
33
|
+
sudo chown -R mysql.mysql #{ramdisk_dir}#{mysql_data_dir}
|
34
|
+
CMD
|
35
|
+
status, stdout, stderr = systemu(cmd)
|
36
|
+
puts "Create mysql data location on ramdisk - status: #{status} - stdout: #{stdout} - stderr: #{stderr}"
|
37
|
+
end
|
38
|
+
|
39
|
+
def create_log_location(ramdisk_dir, mysql_log_dir)
|
40
|
+
cmd = <<-CMD
|
41
|
+
sudo mkdir -p #{ramdisk_dir}#{mysql_log_dir}
|
42
|
+
sudo chown -R mysql.mysql #{ramdisk_dir}#{mysql_log_dir}
|
43
|
+
CMD
|
44
|
+
status, stdout, stderr = systemu(cmd)
|
45
|
+
puts "Create mysql log location on ramdisk - status: #{status} - stdout: #{stdout} - stderr: #{stderr}"
|
46
|
+
end
|
47
|
+
|
48
|
+
def create_socket_location(ramdisk_dir, mysql_socket_dir)
|
49
|
+
cmd = <<-CMD
|
50
|
+
sudo mkdir -p #{ramdisk_dir}#{mysql_socket_dir}
|
51
|
+
sudo chown -R mysql.mysql #{ramdisk_dir}#{mysql_socket_dir}
|
52
|
+
CMD
|
53
|
+
status, stdout, stderr = systemu(cmd)
|
54
|
+
puts "Create mysql socket location on ramdisk - status: #{status} - stdout: #{stdout} - stderr: #{stderr}"
|
55
|
+
end
|
56
|
+
|
57
|
+
def create_tmp_location(ramdisk_dir, mysql_tmp_dir)
|
58
|
+
cmd = <<-CMD
|
59
|
+
sudo mkdir -p #{ramdisk_dir}#{mysql_tmp_dir}
|
60
|
+
sudo chown -R mysql.mysql #{ramdisk_dir}#{mysql_tmp_dir}
|
61
|
+
CMD
|
62
|
+
status, stdout, stderr = systemu(cmd)
|
63
|
+
puts "Create mysql temp location on ramdisk - status: #{status} - stdout: #{stdout} - stderr: #{stderr}"
|
64
|
+
end
|
65
|
+
|
66
|
+
def create_config_file(ramdisk_dir, ramdisk_mysql_port, mysql_data_dir, mysql_log_dir, mysql_socket_dir, mysql_config_dir, mysql_tmp_dir, mysql_port)
|
67
|
+
cmd = <<-CMD
|
68
|
+
sudo mkdir -p #{ramdisk_dir}#{mysql_config_dir}
|
69
|
+
sudo cp -R #{mysql_config_dir}/* #{ramdisk_dir}#{mysql_config_dir}
|
70
|
+
CMD
|
71
|
+
status, stdout, stderr = systemu(cmd)
|
72
|
+
puts "Create mysql config file on ramdisk - status: #{status} - stdout: #{stdout} - stderr: #{stderr}"
|
73
|
+
|
74
|
+
cmd = <<-CMD
|
75
|
+
sudo sed -i 's|#{mysql_port}|#{ramdisk_mysql_port}|g' #{ramdisk_dir}#{mysql_config_dir}/my.cnf
|
76
|
+
sudo sed -i 's|#{mysql_data_dir}|#{ramdisk_dir}#{mysql_data_dir}|g' #{ramdisk_dir}#{mysql_config_dir}/my.cnf
|
77
|
+
sudo sed -i 's|#{mysql_log_dir}|#{ramdisk_dir}#{mysql_log_dir}|g' #{ramdisk_dir}#{mysql_config_dir}/my.cnf
|
78
|
+
sudo sed -i 's|#{mysql_socket_dir}|#{ramdisk_dir}#{mysql_socket_dir}|g' #{ramdisk_dir}#{mysql_config_dir}/my.cnf
|
79
|
+
sudo sed -i 's|#{mysql_config_dir}|#{ramdisk_dir}#{mysql_config_dir}|g' #{ramdisk_dir}#{mysql_config_dir}/my.cnf
|
80
|
+
sudo sed -i 's|#{mysql_tmp_dir}$|#{ramdisk_dir}#{mysql_tmp_dir}|g' #{ramdisk_dir}#{mysql_config_dir}/my.cnf
|
81
|
+
CMD
|
82
|
+
status, stdout, stderr = systemu(cmd)
|
83
|
+
puts "Setup mysql config file on ramdisk - status: #{status} - stdout: #{stdout} - stderr: #{stderr}"
|
84
|
+
end
|
85
|
+
|
86
|
+
def initialize_data_location(ramdisk_dir, mysql_data_dir)
|
87
|
+
cmd = <<-CMD
|
88
|
+
sudo mysql_install_db --user=mysql --datadir=#{ramdisk_dir}#{mysql_data_dir}
|
89
|
+
CMD
|
90
|
+
status, stdout, stderr = systemu(cmd)
|
91
|
+
puts "Initialize mysql data location on ramdisk - status: #{status} - stdout: #{stdout} - stderr: #{stderr}"
|
92
|
+
end
|
93
|
+
|
94
|
+
def start_mysql_server(ramdisk_dir, mysql_config_dir)
|
95
|
+
cmd = <<-CMD
|
96
|
+
sudo mysqld_safe --defaults-file=#{ramdisk_dir}#{mysql_config_dir}/my.cnf &
|
97
|
+
CMD
|
98
|
+
status, stdout, stderr = systemu(cmd)
|
99
|
+
puts "Start mysql server on ramdisk - status: #{status} - stdout: #{stdout} - stderr: #{stderr}"
|
100
|
+
end
|
101
|
+
|
102
|
+
def stop_mysql_server(ramdisk_dir, mysql_socket_dir)
|
103
|
+
cmd = <<-CMD
|
104
|
+
sudo cat #{ramdisk_dir}#{mysql_socket_dir}/mysqld.pid
|
105
|
+
CMD
|
106
|
+
status, stdout, stderr = systemu(cmd)
|
107
|
+
pid = stdout
|
108
|
+
|
109
|
+
cmd = <<-CMD
|
110
|
+
sudo kill #{pid}
|
111
|
+
CMD
|
112
|
+
status, stdout, stderr = systemu(cmd)
|
113
|
+
puts "Killing mysql server on ramdisk - status: #{status} - stdout: #{stdout} - stderr: #{stderr}"
|
114
|
+
end
|
115
|
+
|
116
|
+
|
117
|
+
opts = Trollop::options do
|
118
|
+
opt :ramdisk_mysql_port, 'Set the desired port of the mysql server running on ramdisk', :type => :integer, :default => 3307
|
119
|
+
opt :ramdisk_size, 'Set the desired size (in MB) of your ramdisk', :type => :integer, :default => 512
|
120
|
+
opt :ramdisk_dir, 'Set the desired directory to be used as the ramdisk mount', :type => :string, :default => '/tmp/ramdisk'
|
121
|
+
opt :mysql_port, 'Specify the port used by the mysql server currently on your machine', :type => :integer, :default => 3306
|
122
|
+
opt :mysql_data_dir, 'Specify the location of the mysql data directory currently on your machine', :type => :string, :default => '/var/lib/mysql'
|
123
|
+
opt :mysql_log_dir, 'Specify the location of the mysql log directory currently on your machine', :type => :string, :default => '/var/log/mysql'
|
124
|
+
opt :mysql_socket_dir, 'Specify the location of the mysql socket directory currently on your machine', :type => :string, :default => '/var/run/mysqld'
|
125
|
+
opt :mysql_config_dir, 'Specify the location of the mysql config directory currently on your machine', :type => :string, :default => '/etc/mysql'
|
126
|
+
opt :mysql_tmp_dir, 'Specify the location of the mysql tmp directory currently on your machine', :type => :string, :default => '/tmp'
|
127
|
+
end
|
128
|
+
|
129
|
+
unmount_ramdisk_mount opts[:ramdisk_dir]
|
130
|
+
create_ramdisk_mount opts[:ramdisk_dir], opts[:ramdisk_size]
|
131
|
+
create_data_location opts[:ramdisk_dir], opts[:mysql_data_dir]
|
132
|
+
create_log_location opts[:ramdisk_dir], opts[:mysql_log_dir]
|
133
|
+
create_socket_location opts[:ramdisk_dir], opts[:mysql_socket_dir]
|
134
|
+
create_tmp_location opts[:ramdisk_dir], opts[:mysql_tmp_dir]
|
135
|
+
create_config_file opts[:ramdisk_dir], opts[:ramdisk_mysql_port], opts[:mysql_data_dir], opts[:mysql_log_dir], opts[:mysql_socket_dir], opts[:mysql_config_dir], opts[:mysql_tmp_dir], opts[:mysql_port]
|
136
|
+
initialize_data_location opts[:ramdisk_dir], opts[:mysql_data_dir]
|
137
|
+
start_mysql_server opts[:ramdisk_dir], opts[:mysql_config_dir]
|
138
|
+
|
139
|
+
puts "\n\n"
|
140
|
+
puts "MySQL is now running."
|
141
|
+
puts "Configure your client to use the root user, no password, host 127.0.0.1, and port #{opts[:ramdisk_mysql_port]}."
|
142
|
+
puts "To force a TCP/IP connection, do not use localhost, but use 127.0.0.1 instead. See http://dev.mysql.com/doc/refman/5.1/en/connecting.html for more info."
|
143
|
+
puts "Just press ^C when you no longer need it."
|
144
|
+
|
145
|
+
Signal.trap('SIGHUP') { stop_mysql_server(opts[:ramdisk_dir], opts[:mysql_socket_dir]); exit }
|
146
|
+
Signal.trap('SIGINT') { stop_mysql_server(opts[:ramdisk_dir], opts[:mysql_socket_dir]); exit }
|
147
|
+
Signal.trap('SIGQUIT') { stop_mysql_server(opts[:ramdisk_dir], opts[:mysql_socket_dir]); exit }
|
148
|
+
Signal.trap('SIGKILL') { stop_mysql_server(opts[:ramdisk_dir], opts[:mysql_socket_dir]); exit }
|
149
|
+
Signal.trap('SIGTERM') { stop_mysql_server(opts[:ramdisk_dir], opts[:mysql_socket_dir]); exit }
|
150
|
+
|
151
|
+
while true
|
152
|
+
sleep 1000000
|
153
|
+
end
|
metadata
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mrdu
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tom Van Eyck
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-05-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: trollop
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: systemu
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Spawn a temporary MySQL instance off a RAM disk on Ubuntu.
|
42
|
+
email: tomvaneyck@gmail.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- lib/mrdu.rb
|
48
|
+
homepage: https://github.com/vaneyckt/mrdu
|
49
|
+
licenses: []
|
50
|
+
metadata: {}
|
51
|
+
post_install_message:
|
52
|
+
rdoc_options: []
|
53
|
+
require_paths:
|
54
|
+
- lib
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - '>='
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - '>='
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
requirements: []
|
66
|
+
rubyforge_project:
|
67
|
+
rubygems_version: 2.0.3
|
68
|
+
signing_key:
|
69
|
+
specification_version: 4
|
70
|
+
summary: Spawn a temporary MySQL instance off a RAM disk on Ubuntu.
|
71
|
+
test_files: []
|