declare_schema 1.1.0 → 1.2.0.pre.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e974685df9b53809688f8903ceb82a475e50b24a4725275c3cde5949396fcd85
4
- data.tar.gz: 6efca4e93e98e3880418821c2f3969600a8ac48b8b967a96fcc959824fd0e1fd
3
+ metadata.gz: 8e34615eda56bac536ac728a8edcddcec4cad606257a3fbb0769024a1837f0dc
4
+ data.tar.gz: e54fb15d2400b5edf651678d4249b75cbeb014cfe4faa4fbfe6558f19af97e45
5
5
  SHA512:
6
- metadata.gz: 1f2dac19cdac8a2a5b59f7d20f34c6230e69981a89b180e47080f5c77ba047962ed1f1badeeb69230b14c8a074e96b0588bb9ff9e2430ff2a5496c1d60318cc9
7
- data.tar.gz: 90098f7d95782c943e17f04b8fc4f1ed23a4cecf63f6208b54fdfff60af19ca4c43ab661eacd055319ca5ec290b1ac1591586a8ec852eda41375d2b2d020346a
6
+ metadata.gz: 67cef61d9e6dc3bcdc4d1b8f39cf3f4abf43917df38ec5b0f1503f0c275ae94d27501fd10a654eff5ee4ca4c4105bebc1db7031c77112b562a55be8127269893
7
+ data.tar.gz: c511dc4230e52796249f9f5e260ccdef4c21b963b5564236ee2e601366efcc6823470711bc1116947cf9fe97f6ac1a0ec9d9341eee4fa713192be97aece7c762
data/CHANGELOG.md CHANGED
@@ -4,6 +4,11 @@ Inspired by [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
5
  Note: this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [1.2.0] - Unreleased
8
+ ### Added
9
+ - Added a rake task definition that can be optionally included into a non-Rails project to generate
10
+ schema migrations.
11
+
7
12
  ## [1.1.0] - 2022-07-22
8
13
  ### Changed
9
14
  - Fixed a bug where `DeclareSchema::Model::HabtmModelShim` `indexes` and `integer limits` were not being generated properly. Use `limit 8` for ids and primary composite key for habtm model.
@@ -229,6 +234,7 @@ using the appropriate Rails configuration attributes.
229
234
  ### Added
230
235
  - Initial version from https://github.com/Invoca/hobo_fields v4.1.0.
231
236
 
237
+ [1.2.0]: https://github.com/Invoca/declare_schema/compare/v1.1.0...v1.2.0
232
238
  [1.1.0]: https://github.com/Invoca/declare_schema/compare/v1.0.2...v1.1.0
233
239
  [1.0.2]: https://github.com/Invoca/declare_schema/compare/v1.0.1...v1.0.2
234
240
  [1.0.1]: https://github.com/Invoca/declare_schema/compare/v1.0.0...v1.0.1
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- declare_schema (1.1.0)
4
+ declare_schema (1.2.0.pre.1)
5
5
  rails (>= 5.0)
6
6
 
7
7
  GEM
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "declare_schema"
4
+ require "declare_schema/schema_change/all"
5
+ require "declare_schema/schema_change/column_remove"
6
+ require "generators/declare_schema/migration/migrator"
7
+ require "erb"
8
+
9
+ namespace :declare_schema do
10
+ desc 'Generate migrations for the database schema'
11
+ task :generate => 'db:load_config' do
12
+ up, down = Generators::DeclareSchema::Migration::Migrator.new(renames: {}).generate
13
+
14
+ if up.blank?
15
+ puts "Database and models match -- nothing to change"
16
+ return
17
+ end
18
+
19
+ puts "\n---------- Up Migration ----------"
20
+ puts up
21
+ puts "----------------------------------"
22
+
23
+ puts "\n---------- Down Migration --------"
24
+ puts down
25
+ puts "----------------------------------"
26
+
27
+ final_migration_name = default_migration_name
28
+ migration_template = ERB.new(<<~EOF.chomp)
29
+ # frozen_string_literal: true
30
+ class <%= @migration_class_name %> < (ActiveRecord::Migration[4.2])
31
+ def self.up
32
+ <%= @up.presence or raise "no @up given!" %>
33
+ end
34
+ def self.down
35
+ <%= @down.presence or raise "no @down given!" %>
36
+ end
37
+ end
38
+ EOF
39
+
40
+ @up = " #{up.strip.split("\n").join("\n ")}"
41
+ @down = " #{down.strip.split("\n").join("\n ")}"
42
+ @migration_class_name = final_migration_name.camelize
43
+
44
+ File.write("db/migrate/#{Time.now.to_i}_#{final_migration_name.underscore}.rb", migration_template.result(binding))
45
+ end
46
+ end
47
+
48
+ def default_migration_name
49
+ existing = Dir["db/migrate/*declare_schema_migration*"]
50
+ max = existing.grep(/([0-9]+)\.rb$/) { Regexp.last_match(1).to_i }.max.to_i
51
+ "declare_schema_migration_#{max + 1}"
52
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DeclareSchema
4
- VERSION = "1.1.0"
4
+ VERSION = "1.2.0.pre.1"
5
5
  end
@@ -55,9 +55,10 @@ module Generators
55
55
 
56
56
  def load_rails_models
57
57
  ActiveRecord::Migration.verbose = false
58
-
59
- Rails.application.eager_load!
60
- Rails::Engine.subclasses.each(&:eager_load!)
58
+ if defined?(Rails)
59
+ Rails.application.eager_load!
60
+ Rails::Engine.subclasses.each(&:eager_load!)
61
+ end
61
62
  self.class.before_generating_migration_callback&.call
62
63
  end
63
64
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: declare_schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0.pre.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Invoca Development adapted from hobo_fields by Tom Locke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-22 00:00:00.000000000 Z
11
+ date: 2022-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -67,6 +67,7 @@ files:
67
67
  - lib/declare_schema/model/index_definition.rb
68
68
  - lib/declare_schema/model/table_options_definition.rb
69
69
  - lib/declare_schema/railtie.rb
70
+ - lib/declare_schema/rake.rb
70
71
  - lib/declare_schema/schema_change/all.rb
71
72
  - lib/declare_schema/schema_change/base.rb
72
73
  - lib/declare_schema/schema_change/column_add.rb
@@ -141,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
142
  - !ruby/object:Gem::Version
142
143
  version: 1.3.6
143
144
  requirements: []
144
- rubygems_version: 3.3.11
145
+ rubygems_version: 3.1.6
145
146
  signing_key:
146
147
  specification_version: 4
147
148
  summary: Database schema declaration and migration generator for Rails