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.
@@ -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