mysql_rake_tasks 0.1.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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