mysql_rake_tasks 0.1.3 → 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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: b08d5ab0c8ee9fd347b874e6a137aa16ebf1bc33a94d9ecc961b5958a3c7a0ac
4
+ data.tar.gz: '02799bc1c94a6bddbec2a795a85355782dc937476571cf428a4dc23b8d3a016a'
5
+ SHA512:
6
+ metadata.gz: 95dada497b356fce73cea69e704357e41cc746b93db227ad4d8cdd7f14ca49e667ee9ed8af55915e3592ef7dc2b3d433b7c222e1f95871c610a19f301e8fdc8a
7
+ data.tar.gz: 507bb3184fa1ade352f24a52aa9c7c255ad3c61a8b4398bf403c3feafd9eac54047c5656a99dfac7a271899efe51d6074b524c37c4efb0e6e6a14e483c9f1de2
File without changes
@@ -1,10 +1,10 @@
1
- = mysql_rake_tasks
1
+ # mysql_rake_tasks
2
2
 
3
3
  A collection of rails rake tasks for mysql
4
4
  1. create_users - creates localhost mysql user accounts for each database listing in the database.yml
5
5
  2. stats - database stats - table size
6
6
 
7
- == Install
7
+ ## Install
8
8
 
9
9
  1. Add mysql_rake_tasks to your gem file
10
10
 
@@ -14,9 +14,9 @@ A collection of rails rake tasks for mysql
14
14
 
15
15
  bundle install
16
16
 
17
- == Examples
17
+ ## Examples
18
18
 
19
- === create_users
19
+ ### create_users
20
20
 
21
21
  To create mysql users in interactive mode run:
22
22
 
@@ -28,7 +28,7 @@ You can also specify your root username and password on the command line:
28
28
 
29
29
  rake db:mysel:create_users[root,mypassword]
30
30
 
31
- === stats
31
+ ### stats
32
32
 
33
33
  To display database stats:
34
34
 
@@ -46,11 +46,11 @@ To display database stats:
46
46
  +--------------------------------+---------------+-----------+----------+------------+
47
47
  Database: mydb_development MySQL Server Version: 5.1.58
48
48
 
49
- == License
49
+ ## License
50
50
 
51
51
  MIT
52
52
 
53
- == Credits
53
+ ## Credits
54
54
 
55
55
  Author: Gregory Ostermayr gregory.ostermayr@gmail.com
56
56
 
data/Rakefile CHANGED
@@ -5,6 +5,7 @@ Bundler::GemHelper.install_tasks
5
5
  task :default => :test
6
6
 
7
7
  require 'rake/testtask'
8
+
8
9
  Rake::TestTask.new do |t|
9
10
  t.test_files = FileList['test/*_test.rb']
10
11
  t.verbose = true
@@ -42,15 +42,15 @@ module MysqlRakeTasks
42
42
  db_name = @config['database']
43
43
 
44
44
  begin
45
- db = Mysql2::Client.new(
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"
45
+ db = Mysql2::Client.new( host: 'localhost', username: @root_user, password: @pass)
46
+
47
+ sql = self.create_user_sql(@config)
48
+ db.query(sql)
49
+
50
+ sql = self.grant_user_sql(@config)
51
+ db.query(sql)
52
+
53
+ $stdout.puts "Created #{username} on #{db_name}\n"
54
54
  rescue Mysql2::Error => e
55
55
  error_output(e)
56
56
  ensure # disconnect from server
@@ -60,33 +60,40 @@ module MysqlRakeTasks
60
60
  end
61
61
 
62
62
  def self.create_user_sql(config)
63
- if config.nil?
64
- return ''
63
+ return '' unless config
64
+
65
+ if config['username'].nil?
66
+ puts 'Error code: missing username entry'
65
67
  end
66
68
 
69
+ sql = <<-SQL
70
+ CREATE USER '#{config['username']}'@'localhost' IDENTIFIED BY '#{config['password']}';
71
+ SQL
72
+ end
73
+
74
+ def self.grant_user_sql(config)
75
+ return '' unless config
76
+
67
77
  if config['username'].nil?
68
78
  puts 'Error code: missing username entry'
69
79
  end
70
80
 
71
- sql = <<-SQL
72
- GRANT
73
- ALL PRIVILEGES
74
- ON #{config['database']}.*
75
- TO #{config['username']}@localhost
76
- IDENTIFIED BY '#{config['password']}';
81
+ sql = <<-SQL
82
+ GRANT ALL ON #{config['database']}.* TO '#{config['username']}'@'localhost';
77
83
  SQL
78
84
  end
79
85
 
80
86
  def self.stats
81
- config = Rails::configuration.database_configuration[Rails.env]
87
+ config = Rails::configuration.database_configuration[Rails.env].clone
82
88
 
83
89
  begin
84
- dbh = Mysql2::Client.new( :host => config['host'], :username => config['username'], :password => config['password'])
90
+ db = Mysql2::Client.new( host: config['host'], username: config['username'], password: config['password'])
91
+
85
92
  db_name = config['database']
86
- version = dbh.info[:version]
93
+ version = db.info[:version]
87
94
 
88
95
  sql = stats_query(db_name)
89
- result = dbh.query sql
96
+ result = db.query sql
90
97
 
91
98
  print_header
92
99
 
@@ -100,7 +107,7 @@ module MysqlRakeTasks
100
107
  rescue Mysql2::Error => e
101
108
  error_output(e)
102
109
  ensure
103
- dbh.close if dbh
110
+ db.close if db
104
111
  end
105
112
  end
106
113
 
@@ -118,7 +125,7 @@ module MysqlRakeTasks
118
125
  def self.print_stat_line(row)
119
126
  printf "| %30s | %13s | %9s | %8s | %10s |\n",
120
127
  row["table_name"].ljust(30),
121
- number_to_human(row["rows"]).rjust(13),
128
+ number_to_human(row["table_rows"]).rjust(13),
122
129
  number_to_human_size(row["data"]),
123
130
  number_to_human_size(row["idx"]),
124
131
  number_to_human_size(row["total_size"])
@@ -135,7 +142,7 @@ module MysqlRakeTasks
135
142
  def self.stats_query(db_name)
136
143
  sql = <<-SQL
137
144
  SELECT table_name,
138
- concat(table_rows) rows,
145
+ concat(table_rows) as table_rows,
139
146
  concat(data_length) data,
140
147
  concat(index_length) idx,
141
148
  concat(data_length+index_length) total_size
@@ -1,3 +1,3 @@
1
1
  module MysqlRakeTasks
2
- VERSION = '0.1.3'
2
+ VERSION = '1.0.0'
3
3
  end
@@ -12,20 +12,21 @@ Gem::Specification.new do |s|
12
12
  s.description = %q{A collection of rails rake tasks for mysql.}
13
13
  s.license = "MIT"
14
14
  s.extra_rdoc_files = [
15
- "LICENSE",
15
+ "LICENSE.txt",
16
16
  "README.rdoc"
17
17
  ]
18
18
 
19
19
  s.rubyforge_project = "mysql_rake_tasks"
20
20
 
21
21
  s.files = `git ls-files`.split("\n")
22
- s.test_files = Dir['test/*.rb']
22
+ s.test_files = Dir['test/*.rb']
23
23
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
24
24
  s.require_paths = ["lib"]
25
25
 
26
26
  # specify any dependencies here; for example:
27
27
  # s.add_development_dependency "rspec"
28
- s.add_development_dependency 'rake', '~> 0.9.2'
28
+ s.add_development_dependency 'rake', '~> 13.0'
29
29
  s.add_development_dependency 'mocha', '~> 0.9.12'
30
+ s.add_development_dependency 'test-unit-rails', '~> 6.0'
30
31
  s.add_runtime_dependency 'mysql2', '>= 0.2.7'
31
32
  end
@@ -6,7 +6,7 @@ require 'mocha'
6
6
 
7
7
  class TasksTest < Test::Unit::TestCase
8
8
  def setup
9
- Rails.stubs(:configuration).returns(Rails::Application::Configuration.allocate)
9
+ Rails.stubs(:configuration).returns(Rails::Application::Configuration.allocate)
10
10
  Rails.configuration.stubs(:database_configuration).returns(stub_config)
11
11
  end
12
12
 
@@ -35,7 +35,7 @@ class TasksTest < Test::Unit::TestCase
35
35
  screen = io_mock do |input|
36
36
  MysqlRakeTasks::Tasks.create_users(:root_user => 'root', :pass => 'wrong')
37
37
  end
38
-
38
+
39
39
  assert_equal 'Error code: 1045', screen[0]
40
40
  assert_equal "Error message: Access denied for user 'root'@'localhost' (using password: YES)", screen[1]
41
41
  assert_equal 'Error code: 1045', screen[2]
@@ -47,7 +47,11 @@ class TasksTest < Test::Unit::TestCase
47
47
  def test_successful_creation
48
48
  screen = io_mock do |input|
49
49
  # :pass needs to be set to mysql root in order to pass
50
- MysqlRakeTasks::Tasks.create_users(:root_user => 'root', :pass => 'myrootpass')
50
+ # mysqladmin --user=root password "myrootpass"
51
+ # create database task_test
52
+ # create database task_production
53
+ # drop user 'test'@'localhost';drop user 'dev'@'localhost';drop user 'prod'@'localhost';
54
+ MysqlRakeTasks::Tasks.create_users(:root_user => 'root', :pass => 'myrootpass')
51
55
  end
52
56
 
53
57
  assert_equal "Created dev on task_development", screen[0], 'Note: ***check test machine password***'
@@ -56,8 +60,10 @@ class TasksTest < Test::Unit::TestCase
56
60
  end
57
61
 
58
62
  def test_lack_of_user_throws_error
59
- config = stub_config
63
+ config = stub_config.clone
60
64
  config["development"].delete "username"
65
+ config["production"].delete "username"
66
+ config["test"].delete "username"
61
67
 
62
68
  Rails.configuration.stubs(:database_configuration).returns(config)
63
69
 
@@ -67,7 +73,7 @@ class TasksTest < Test::Unit::TestCase
67
73
  end
68
74
 
69
75
  assert_equal 'Error code: missing username entry', screen[0], 'Note: ***check test machine password***'
70
- assert_equal 'Error code: 1064', screen[1]
76
+ assert_equal 'Error code: 1396', screen[1]
71
77
  end
72
78
 
73
79
  def test_stats_outputs_header
@@ -101,7 +107,7 @@ class TasksTest < Test::Unit::TestCase
101
107
  "database"=>"task_production",
102
108
  "pool"=>5,
103
109
  "username"=>"prod",
104
- "password"=>"prodpassword"}}
110
+ "password"=>"prodpassword"}}
105
111
  end
106
112
 
107
113
 
metadata CHANGED
@@ -1,61 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mysql_rake_tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
5
- prerelease:
4
+ version: 1.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Gregory Ostermayr
9
- autorequire:
8
+ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-11-09 00:00:00.000000000 Z
11
+ date: 2020-07-18 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
- requirement: &70343679479880 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: 0.9.2
19
+ version: '13.0'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *70343679479880
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '13.0'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: mocha
27
- requirement: &70343679479020 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ~>
31
+ - - "~>"
31
32
  - !ruby/object:Gem::Version
32
33
  version: 0.9.12
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *70343679479020
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.9.12
41
+ - !ruby/object:Gem::Dependency
42
+ name: test-unit-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '6.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '6.0'
36
55
  - !ruby/object:Gem::Dependency
37
56
  name: mysql2
38
- requirement: &70343679478240 !ruby/object:Gem::Requirement
39
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
40
58
  requirements:
41
- - - ! '>='
59
+ - - ">="
42
60
  - !ruby/object:Gem::Version
43
61
  version: 0.2.7
44
62
  type: :runtime
45
63
  prerelease: false
46
- version_requirements: *70343679478240
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 0.2.7
47
69
  description: A collection of rails rake tasks for mysql.
48
70
  email:
49
71
  - gregory.ostermayr@gmail.com
50
72
  executables: []
51
73
  extensions: []
52
74
  extra_rdoc_files:
53
- - LICENSE
75
+ - LICENSE.txt
54
76
  - README.rdoc
55
77
  files:
56
- - .gitignore
78
+ - ".gitignore"
57
79
  - Gemfile
58
- - LICENSE
80
+ - LICENSE.txt
59
81
  - README.rdoc
60
82
  - Rakefile
61
83
  - lib/mysql_rake_tasks.rb
@@ -68,27 +90,25 @@ files:
68
90
  homepage: https://github.com/gregors/mysql_rake_tasks
69
91
  licenses:
70
92
  - MIT
71
- post_install_message:
93
+ metadata: {}
94
+ post_install_message:
72
95
  rdoc_options: []
73
96
  require_paths:
74
97
  - lib
75
98
  required_ruby_version: !ruby/object:Gem::Requirement
76
- none: false
77
99
  requirements:
78
- - - ! '>='
100
+ - - ">="
79
101
  - !ruby/object:Gem::Version
80
102
  version: '0'
81
103
  required_rubygems_version: !ruby/object:Gem::Requirement
82
- none: false
83
104
  requirements:
84
- - - ! '>='
105
+ - - ">="
85
106
  - !ruby/object:Gem::Version
86
107
  version: '0'
87
108
  requirements: []
88
- rubyforge_project: mysql_rake_tasks
89
- rubygems_version: 1.8.5
90
- signing_key:
91
- specification_version: 3
109
+ rubygems_version: 3.0.8
110
+ signing_key:
111
+ specification_version: 4
92
112
  summary: Rake tasks for mysql
93
113
  test_files:
94
114
  - test/tasks_test.rb