mysql_rake_tasks 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- if !args[0].nil? then
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? then
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
- $stdout.puts 'mysql password:'
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
- {:root_user => root_user, :pass => root_pass}
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
- args = self.get_input(args)
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
- :host => 'localhost',
46
- :username => @root_user,
47
- :password => @pass,
48
- :socket => @config['socket'])
49
-
50
- sql = self.create_user_sql(@config)
51
- db.query sql
52
- $stdout.puts "Created #{@config['username']} on #{@config['database']}\n"
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
- $stdout.puts "Error code: #{e.errno}"
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? then
65
- return ""
63
+ if config.nil?
64
+ return ''
66
65
  end
67
66
 
68
- if config['username'].nil? then
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
- sql = stats_query(config['database'])
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
- print_header
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
- print_separator
103
- printf "|%70s | %10s |\n",'', number_to_human_size(db_total)
104
- print_separator
105
- puts "Database: #{config['database']} MySQL Server Version: #{dbh.info[:version]}\n"
106
- puts " "
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
- puts "Error code: #{e.errno}"
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
- print_separator
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
@@ -1,3 +1,3 @@
1
1
  module MysqlRakeTasks
2
- VERSION = "0.1.2"
2
+ VERSION = '0.1.3'
3
3
  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
- output = MysqlRakeTasks::Tasks::get_input({:root_user => 'user', :pass => 'pass'})
14
+ user, pass = MysqlRakeTasks::Tasks::get_input({:root_user => 'user', :pass => 'pass'})
15
15
 
16
- assert_equal 2, output.length
17
- assert_equal 'user', output[:root_user]
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
- output = MysqlRakeTasks::Tasks.get_input
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', output[:root_user]
31
- assert_equal 'myrootpass', output[:pass]
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.2
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-04-12 00:00:00.000000000 Z
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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.19
89
+ rubygems_version: 1.8.5
105
90
  signing_key:
106
91
  specification_version: 3
107
92
  summary: Rake tasks for mysql