effective_developer 0.4.1 → 0.4.2
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 987dc444541f73d96d4ef8639822910e52cfb47c
|
4
|
+
data.tar.gz: 7ab798c262fbcf37680b5333d8bb5c856a9a933e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4df59039d6e5728ce6c92165b682bb3894ea6e314612e05c91bd1f23b8aaf98d6f19953542874ddcac6d71b47067dc5c5829447cba278348ef5ce2561a47cc59
|
7
|
+
data.tar.gz: 98ee05f7b84c9f894c27ac52f58fa853b76c1253d4e6e2b12ef2fc95750b3876f5ac40957e6f2825d568f8df42547b81bb0349dfcb61dc8f99b6480faf724cab
|
@@ -1,5 +1,7 @@
|
|
1
|
+
require 'rails/generators/active_record/migration/migration_generator'
|
2
|
+
|
1
3
|
module Effective
|
2
|
-
class
|
4
|
+
class LiveGenerator
|
3
5
|
attr_accessor :resource # The class level effective_resource do ... end object
|
4
6
|
|
5
7
|
def initialize(obj)
|
@@ -8,10 +10,12 @@ module Effective
|
|
8
10
|
unless @resource.respond_to?(:model) && @resource.model.present?
|
9
11
|
raise 'expected effective_resource or klass to have an effective_resource do ... end block defined'
|
10
12
|
end
|
13
|
+
|
14
|
+
true
|
11
15
|
end
|
12
16
|
|
13
17
|
# Writes database migrations automatically based on effective_resources do ... end block
|
14
|
-
def
|
18
|
+
def generate!
|
15
19
|
table_attributes = resource.table_attributes
|
16
20
|
model_attributes = resource.model_attributes
|
17
21
|
|
@@ -27,31 +31,34 @@ module Effective
|
|
27
31
|
# Fields are not in database, but present in model.rb
|
28
32
|
if(add_keys = (model_keys - table_keys)).present?
|
29
33
|
Rails.logger.info "effective_developer migrate #{resource.plural_name}: add #{add_keys.to_sentence}"
|
30
|
-
rails_migrate("
|
34
|
+
rails_migrate("add_ATTRIBUTES_to_#{resource.plural_name}", model_attributes.slice(*add_keys))
|
31
35
|
end
|
32
36
|
|
33
37
|
# Fields are in database, but no longer in our effective_resource do block
|
34
38
|
if (remove_keys = (table_keys - model_keys)).present?
|
35
39
|
Rails.logger.info "effective_developer migrate #{resource.plural_name}: remove #{remove_keys.to_sentence}"
|
36
|
-
rails_migrate("
|
40
|
+
rails_migrate("remove_ATTRIBUTES_from_#{resource.plural_name}", table_attributes.slice(*remove_keys))
|
37
41
|
end
|
38
42
|
end
|
39
43
|
|
40
44
|
private
|
41
45
|
|
42
46
|
def rails_migrate(filename, attributes)
|
43
|
-
|
47
|
+
# The filename needs to be unique, but it shouldn't be annoyingly long
|
48
|
+
name = (attributes.keys.first(2) + [("and_#{attributes.length - 2}_more" if attributes.length > 2)]).compact.join('_')
|
49
|
+
filename.sub!('ATTRIBUTES', name)
|
44
50
|
|
45
|
-
|
46
|
-
ActiveRecord::
|
51
|
+
# I don't need to check pending. But if I did:
|
52
|
+
#pending = (ActiveRecord::Migration.check_pending! rescue true)
|
53
|
+
#ActiveRecord::Tasks::DatabaseTasks.migrate if pending
|
47
54
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
# Rails::Generators.invoke('migration', [filename] + invokable, behavior: :invoke, destination_root: Rails.root, migration_paths: ['db/migrate'])
|
55
|
+
args = [filename] + attributes.map { |name, (type, _)| "#{name}:#{type}" }
|
56
|
+
options = {}
|
57
|
+
config = { destination_root: Rails.root }
|
52
58
|
|
53
|
-
|
59
|
+
ActiveRecord::Generators::MigrationGenerator.new(args, options, config).invoke_all
|
54
60
|
ActiveRecord::Tasks::DatabaseTasks.migrate
|
61
|
+
resource.klass.reset_column_information
|
55
62
|
|
56
63
|
true
|
57
64
|
end
|
@@ -8,10 +8,10 @@ module EffectiveDeveloper
|
|
8
8
|
eval File.read("#{config.root}/config/effective_developer.rb")
|
9
9
|
end
|
10
10
|
|
11
|
-
#
|
11
|
+
# Whenever the effective_resource do block is evaluated, check for changes
|
12
12
|
initializer 'effective_developer.effective_resources' do |app|
|
13
13
|
ActiveSupport.on_load :effective_resource do
|
14
|
-
|
14
|
+
Effective::LiveGenerator.new(self).generate! if EffectiveDeveloper.live
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
data/lib/tasks/rename_class.rake
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_developer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -50,7 +50,7 @@ files:
|
|
50
50
|
- Rakefile
|
51
51
|
- app/models/effective/code_writer.rb
|
52
52
|
- app/models/effective/csv_importer.rb
|
53
|
-
- app/models/effective/
|
53
|
+
- app/models/effective/live_generator.rb
|
54
54
|
- config/effective_developer.rb
|
55
55
|
- lib/effective_developer.rb
|
56
56
|
- lib/effective_developer/engine.rb
|