mysql_rake_tasks 0.1.2 → 0.1.3
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/lib/mysql_rake_tasks/tasks.rb +59 -45
- data/lib/mysql_rake_tasks/version.rb +1 -1
- data/test/tasks_test.rb +6 -7
- metadata +9 -24
@@ -13,47 +13,46 @@ module MysqlRakeTasks
|
|
13
13
|
# Parses input args for username and password, if not given
|
14
14
|
# it will prompt the user
|
15
15
|
def self.get_input(*args)
|
16
|
-
|
16
|
+
unless args[0].nil?
|
17
17
|
root_user = args[0][:root_user]
|
18
18
|
root_pass = args[0][:pass]
|
19
19
|
end
|
20
20
|
|
21
|
-
if root_user.nil? or root_pass.nil?
|
21
|
+
if root_user.nil? or root_pass.nil?
|
22
22
|
$stdout.puts 'mysql user:'
|
23
23
|
root_user = $stdin.gets.chomp
|
24
24
|
|
25
|
-
|
25
|
+
$stdout.puts 'mysql password:'
|
26
26
|
system 'stty -echo'
|
27
27
|
root_pass = $stdin.gets.chomp
|
28
28
|
system 'stty echo'
|
29
29
|
end
|
30
30
|
|
31
|
-
|
31
|
+
return root_user, root_pass
|
32
32
|
end
|
33
33
|
|
34
34
|
# creates user permissions for mysql database for localhost only
|
35
35
|
def self.create_users(args)
|
36
|
-
|
37
|
-
@root_user = args[:root_user]
|
38
|
-
@pass = args[:pass]
|
36
|
+
@root_user, @pass = self.get_input(args)
|
39
37
|
|
40
38
|
# create a mysql user for each listing in database.yml file
|
41
39
|
Rails::configuration.database_configuration.each do |listing|
|
40
|
+
@config = listing[1]
|
41
|
+
username = @config['username']
|
42
|
+
db_name = @config['database']
|
43
|
+
|
42
44
|
begin
|
43
|
-
@config = listing[1]
|
44
45
|
db = Mysql2::Client.new(
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
46
|
+
:host => 'localhost',
|
47
|
+
:username => @root_user,
|
48
|
+
:password => @pass,
|
49
|
+
:socket => @config['socket'])
|
50
|
+
|
51
|
+
sql = self.create_user_sql(@config)
|
52
|
+
db.query sql
|
53
|
+
$stdout.puts "Created #{username} on #{db_name}\n"
|
53
54
|
rescue Mysql2::Error => e
|
54
|
-
|
55
|
-
$stdout.puts "Error message: #{e.error}"
|
56
|
-
$stdout.puts "Error SQLSTATE: #{e.sqlstate}" if e.respond_to?("sqlstate")
|
55
|
+
error_output(e)
|
57
56
|
ensure # disconnect from server
|
58
57
|
db.close if db
|
59
58
|
end
|
@@ -61,11 +60,11 @@ module MysqlRakeTasks
|
|
61
60
|
end
|
62
61
|
|
63
62
|
def self.create_user_sql(config)
|
64
|
-
if config.nil?
|
65
|
-
return
|
63
|
+
if config.nil?
|
64
|
+
return ''
|
66
65
|
end
|
67
66
|
|
68
|
-
if config['username'].nil?
|
67
|
+
if config['username'].nil?
|
69
68
|
puts 'Error code: missing username entry'
|
70
69
|
end
|
71
70
|
|
@@ -83,45 +82,54 @@ module MysqlRakeTasks
|
|
83
82
|
|
84
83
|
begin
|
85
84
|
dbh = Mysql2::Client.new( :host => config['host'], :username => config['username'], :password => config['password'])
|
86
|
-
|
85
|
+
db_name = config['database']
|
86
|
+
version = dbh.info[:version]
|
87
|
+
|
88
|
+
sql = stats_query(db_name)
|
87
89
|
result = dbh.query sql
|
88
90
|
|
89
|
-
|
90
|
-
db_total = 0
|
91
|
-
result.each do |row|
|
92
|
-
printf "| %30s | %13s | %9s | %8s | %10s |\n",
|
93
|
-
row["table_name"].ljust(30),
|
94
|
-
number_to_human(row["rows"]).rjust(13),
|
95
|
-
number_to_human_size(row["data"]),
|
96
|
-
number_to_human_size(row["idx"]),
|
97
|
-
number_to_human_size(row["total_size"])
|
98
|
-
|
99
|
-
db_total += row["total_size"].to_i
|
100
|
-
end
|
91
|
+
print_header
|
101
92
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
93
|
+
db_total = 0
|
94
|
+
result.each do |row|
|
95
|
+
print_stat_line(row)
|
96
|
+
db_total += row["total_size"].to_i
|
97
|
+
end
|
98
|
+
|
99
|
+
print_footer(db_total, db_name, version)
|
107
100
|
rescue Mysql2::Error => e
|
108
|
-
|
109
|
-
puts "Error message: #{e.error}"
|
110
|
-
puts "Error SQLSTATE: #{e.sqlstate}" if e.respond_to?("sqlstate")
|
101
|
+
error_output(e)
|
111
102
|
ensure
|
112
103
|
dbh.close if dbh
|
113
104
|
end
|
114
105
|
end
|
115
106
|
|
116
107
|
def self.print_separator
|
117
|
-
puts
|
108
|
+
puts "+--------------------------------+---------------+-----------+----------+------------+"
|
118
109
|
end
|
119
110
|
|
120
111
|
def self.print_header
|
121
112
|
print_separator
|
122
113
|
printf "| %30s | %13s | %9s | %8s | %8s |\n",
|
123
114
|
"Table Name".ljust(30), "Rows", "Data Size", "IDX Size", "Total Size"
|
124
|
-
|
115
|
+
print_separator
|
116
|
+
end
|
117
|
+
|
118
|
+
def self.print_stat_line(row)
|
119
|
+
printf "| %30s | %13s | %9s | %8s | %10s |\n",
|
120
|
+
row["table_name"].ljust(30),
|
121
|
+
number_to_human(row["rows"]).rjust(13),
|
122
|
+
number_to_human_size(row["data"]),
|
123
|
+
number_to_human_size(row["idx"]),
|
124
|
+
number_to_human_size(row["total_size"])
|
125
|
+
end
|
126
|
+
|
127
|
+
def self.print_footer(db_total, db_name, version)
|
128
|
+
print_separator
|
129
|
+
printf "|%70s | %10s |\n",'', number_to_human_size(db_total)
|
130
|
+
print_separator
|
131
|
+
puts "Database: #{db_name} MySQL Server Version: #{version}\n"
|
132
|
+
puts " "
|
125
133
|
end
|
126
134
|
|
127
135
|
def self.stats_query(db_name)
|
@@ -136,5 +144,11 @@ module MysqlRakeTasks
|
|
136
144
|
ORDER BY table_name;
|
137
145
|
SQL
|
138
146
|
end
|
147
|
+
|
148
|
+
def self.error_output(e)
|
149
|
+
$stdout.puts "Error code: #{e.errno}"
|
150
|
+
$stdout.puts "Error message: #{e.error}"
|
151
|
+
$stdout.puts "Error SQLSTATE: #{e.sqlstate}" if e.respond_to?("sqlstate")
|
152
|
+
end
|
139
153
|
end
|
140
154
|
end
|
data/test/tasks_test.rb
CHANGED
@@ -11,24 +11,23 @@ class TasksTest < Test::Unit::TestCase
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def test_two_args_returns_two_values
|
14
|
-
|
14
|
+
user, pass = MysqlRakeTasks::Tasks::get_input({:root_user => 'user', :pass => 'pass'})
|
15
15
|
|
16
|
-
assert_equal
|
17
|
-
assert_equal '
|
18
|
-
assert_equal 'pass', output[:pass]
|
16
|
+
assert_equal 'user', user
|
17
|
+
assert_equal 'pass', pass
|
19
18
|
end
|
20
19
|
|
21
20
|
def test_lack_of_args_invokes_cli_interface
|
22
21
|
output = ""
|
23
22
|
screen = io_mock do |input|
|
24
23
|
input.string = "root\nmyrootpass\n"
|
25
|
-
|
24
|
+
@user, @pass = MysqlRakeTasks::Tasks.get_input
|
26
25
|
end
|
27
26
|
|
28
27
|
assert_equal 'mysql user:', screen[0]
|
29
28
|
assert_equal 'mysql password:', screen[1]
|
30
|
-
assert_equal 'root',
|
31
|
-
assert_equal 'myrootpass'
|
29
|
+
assert_equal 'root', @user
|
30
|
+
assert_equal 'myrootpass',@pass
|
32
31
|
end
|
33
32
|
|
34
33
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mysql_rake_tasks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70343679479880 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,15 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.9.2
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 0.9.2
|
24
|
+
version_requirements: *70343679479880
|
30
25
|
- !ruby/object:Gem::Dependency
|
31
26
|
name: mocha
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirement: &70343679479020 !ruby/object:Gem::Requirement
|
33
28
|
none: false
|
34
29
|
requirements:
|
35
30
|
- - ~>
|
@@ -37,15 +32,10 @@ dependencies:
|
|
37
32
|
version: 0.9.12
|
38
33
|
type: :development
|
39
34
|
prerelease: false
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 0.9.12
|
35
|
+
version_requirements: *70343679479020
|
46
36
|
- !ruby/object:Gem::Dependency
|
47
37
|
name: mysql2
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirement: &70343679478240 !ruby/object:Gem::Requirement
|
49
39
|
none: false
|
50
40
|
requirements:
|
51
41
|
- - ! '>='
|
@@ -53,12 +43,7 @@ dependencies:
|
|
53
43
|
version: 0.2.7
|
54
44
|
type: :runtime
|
55
45
|
prerelease: false
|
56
|
-
version_requirements:
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 0.2.7
|
46
|
+
version_requirements: *70343679478240
|
62
47
|
description: A collection of rails rake tasks for mysql.
|
63
48
|
email:
|
64
49
|
- gregory.ostermayr@gmail.com
|
@@ -101,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
86
|
version: '0'
|
102
87
|
requirements: []
|
103
88
|
rubyforge_project: mysql_rake_tasks
|
104
|
-
rubygems_version: 1.8.
|
89
|
+
rubygems_version: 1.8.5
|
105
90
|
signing_key:
|
106
91
|
specification_version: 3
|
107
92
|
summary: Rake tasks for mysql
|