bard-rake 0.17.2 → 0.18.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 00d307fb7abbd2503336eb68114f3a915d2092ce2d5a191ce5dd81e151b6cd9e
4
- data.tar.gz: a86dcd92c00397d3a2459b66493c1941dfcfb58354034d8524a20ec8ae7a96d7
3
+ metadata.gz: ff6a5ba13f2aa38b6355725ada3de72182c9eaf517901cffd1e772f4e898529a
4
+ data.tar.gz: 8552e64f3932f384145a936ff9fa76a939a3821049e3763f4cadf778e4ed22ba
5
5
  SHA512:
6
- metadata.gz: b1dfb4341498fa62f39ed3a2f6742b7eb4dd9c18aab57e661620ffae6815651575f3d67adc6c1cdf2855b24b6e0b4f7a68ecfbf7c56f70a1f40982e356c6423f
7
- data.tar.gz: 9eacdd5523670468e5515884f52a199f6a9a8ec5c967b9e2b3aca6a1ff632e1585601508dfee71400c1bcf9fc601e94801ea36778e00bf5d27191ec729416daf
6
+ metadata.gz: 77ed1b2db7e7006866d0e0bbf4204c155727caa0e608596aa8b707a9732abfe927a69ac403195b560c10170e0bd194625d3a2e72b871b5aaf9a2109154234467
7
+ data.tar.gz: 1a95634e0c298230ab5d43d9396df77cd49da2958bc2d63cfc2d6f52bdc6cd98f5246b93b5f819eaf8ec437e3decf3c0ff8dd9205899253c73085e60108670c7
data/bard-rake.gemspec CHANGED
@@ -19,8 +19,9 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_dependency "rake"
21
21
  spec.add_dependency "backhoe"
22
+ spec.add_dependency "railties"
22
23
 
23
- spec.add_development_dependency "bundler", "~> 1.3"
24
+ spec.add_development_dependency "bundler"
24
25
  spec.add_development_dependency(%q<rspec>, [">= 1.2.9"])
25
26
  end
26
27
 
@@ -56,19 +56,20 @@ if defined?(ActiveRecord)
56
56
 
57
57
  ActiveRecord::Base.configurations.configs_for.each do |db_config|
58
58
  env = db_config.env_name
59
- configuration = db_config.config
60
- database = configuration["database"]
59
+ if Rails.version < "7"
60
+ configuration = db_config.config
61
+ database = configuration["database"]
62
+ else
63
+ configuration = db_config.configuration_hash
64
+ database = configuration[:database]
65
+ end
61
66
 
62
67
  next unless database
63
68
  next unless whitelist.include?(env)
64
69
  next if modified_databases.include?(database)
65
70
 
66
- if local_database?(configuration)
67
- ActiveRecord::Base.establish_connection configuration
68
- block.call configuration, env
69
- else
70
- $stderr.puts "This task only modifies local databases. #{database} is on a remote host."
71
- end
71
+ ActiveRecord::Base.establish_connection configuration
72
+ block.call configuration, env
72
73
 
73
74
  modified_databases << database
74
75
  end
@@ -76,10 +77,6 @@ if defined?(ActiveRecord)
76
77
  Rake::Task["db:_dump"].invoke
77
78
  end
78
79
 
79
- def local_database?(configuration)
80
- configuration["host"].blank? || ActiveRecord::Tasks::DatabaseTasks::LOCAL_HOSTS.include?(configuration["host"])
81
- end
82
-
83
80
  def test_environment?
84
81
  rails_env == "test"
85
82
  end
@@ -1,6 +1,6 @@
1
1
  module Bard
2
2
  module Rake
3
- VERSION = "0.17.2"
3
+ VERSION = "0.18.2"
4
4
  end
5
5
  end
6
6
 
@@ -0,0 +1,40 @@
1
+ class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version %>]
2
+ def up
3
+ execute "ALTER DATABASE `#{db.current_database}` CHARACTER SET #{charset} COLLATE #{collation};"
4
+ db.tables.each do |table|
5
+ execute "ALTER TABLE `#{table}` ROW_FORMAT=DYNAMIC CHARACTER SET #{charset} COLLATE #{collation};"
6
+
7
+ db.columns(table).each do |column|
8
+ case column.sql_type
9
+ when /([a-z]*)text/i
10
+ default = (column.default.blank?) ? '' : "DEFAULT '#{column.default}'"
11
+ null = (column.null) ? '' : 'NOT NULL'
12
+ execute "ALTER TABLE `#{table}` MODIFY `#{column.name}` #{column.sql_type.upcase} CHARACTER SET #{charset} COLLATE #{collation} #{default} #{null};"
13
+ when /varchar\(([0-9]+)\)/i
14
+ sql_type = column.sql_type.upcase
15
+ default = (column.default.blank?) ? '' : "DEFAULT '#{column.default}'"
16
+ null = (column.null) ? '' : 'NOT NULL'
17
+ execute "ALTER TABLE `#{table}` MODIFY `#{column.name}` #{sql_type} CHARACTER SET #{charset} COLLATE #{collation} #{default} #{null};"
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ def down
24
+ end
25
+
26
+ private
27
+
28
+ def charset
29
+ "utf8mb4"
30
+ end
31
+
32
+ def collation
33
+ "utf8mb4_unicode_ci"
34
+ end
35
+
36
+ def db
37
+ ActiveRecord::Base.connection
38
+ end
39
+ end
40
+
@@ -0,0 +1,25 @@
1
+ require "rails/generators"
2
+
3
+ module Bard
4
+ class Utf8mb4MigrationGenerator < Rails::Generators::Base
5
+ include Rails::Generators::Migration
6
+
7
+ source_root File.expand_path("templates", __dir__)
8
+
9
+ def self.next_migration_number(dirname)
10
+ next_migration_number = current_migration_number(dirname) + 1
11
+ ActiveRecord::Migration.next_migration_number(next_migration_number)
12
+ end
13
+
14
+ def install_migration
15
+ migration_template "migration.rb", "db/migrate/convert_to_utf8mb4.rb"
16
+ end
17
+
18
+ def specify_charset_and_collation_in_database_yml
19
+ ["config/database.yml", "config/database.sample.yml"].each do |file|
20
+ inject_into_file file, " charset: utf8mb4\n", after: " socket: /var/run/mysqld/mysqld.sock\n"
21
+ end
22
+ end
23
+ end
24
+ end
25
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bard-rake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.2
4
+ version: 0.18.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micah Geisel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-15 00:00:00.000000000 Z
11
+ date: 2021-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -38,20 +38,34 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: railties
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - "~>"
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: '1.3'
61
+ version: '0'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - "~>"
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: '1.3'
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -93,6 +107,8 @@ files:
93
107
  - lib/bard/rake/railtie.rb
94
108
  - lib/bard/rake/testing.rb
95
109
  - lib/bard/rake/version.rb
110
+ - lib/generators/bard/utf8mb4_migration/templates/migration.rb.tt
111
+ - lib/generators/bard/utf8mb4_migration/utf8mb4_migration_generator.rb
96
112
  homepage: http://github.com/botandrose/bard-rake
97
113
  licenses:
98
114
  - MIT
@@ -112,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
128
  - !ruby/object:Gem::Version
113
129
  version: '0'
114
130
  requirements: []
115
- rubygems_version: 3.0.3
131
+ rubygems_version: 3.0.8
116
132
  signing_key:
117
133
  specification_version: 4
118
134
  summary: Rake tasks for all bard projects.