seedog 0.2.2 → 0.3.0

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
- SHA1:
3
- metadata.gz: 77073e668cc54b18305540d04e3f7af252918aab
4
- data.tar.gz: 4a986822c068b7306f4b9c21c56610dbea647219
2
+ SHA256:
3
+ metadata.gz: e538d203e72c7c0bce7622a7746d741271707ea19bf115026620c8a49c215aea
4
+ data.tar.gz: f37f70bf746517e07886a90763e9713e80646035be8b8af1d9eee64ec47087af
5
5
  SHA512:
6
- metadata.gz: 57bddf9b4d3eb112f82aac1e01c064842c176b1011bf2cb3dfcfe14a852780ab87321f0f24fd021e6de5dd996cd76ebddb792f685d53e5de536e65746da53a68
7
- data.tar.gz: 2dd5914f2c477a585e69f237c535ff8a60eb53b5cf62d49ae6b1e2d07c15cb0886c288b052c1c89b101bf7aa941f4012ae3ce814080567dad3de3c55b37f2b59
6
+ metadata.gz: 05c0fae459e9daac32c6f960bd4fc0058847382408c156e8f4c92e10ab32ab48a7a1f6a64730087f889b2c5f4730ee6565f9e098ae617806c32255bc01e0facb
7
+ data.tar.gz: 327e5abc6cfe9eb07965198d46d43ec7fb80eb325ef04ebf26200344035b0f57157130ca2fb9d8e589c3ba733e392578365b4ebb04913d130538f2691d2364dc
@@ -5,27 +5,28 @@ module Seedog
5
5
  @evaluator = evaluator
6
6
  @model = model
7
7
  @upsert_attributes = upsert_attributes
8
+ @attrs = {}.with_indifferent_access
8
9
  end
9
10
 
10
- def call(&block)
11
- attrs = {}
12
- @model.model_class.attribute_names.each do |attr|
13
- define_singleton_method(attr) do |value|
14
- attrs[attr] = value
15
- end
16
- end
11
+ def method_missing(method, arg)
12
+ @attrs[method] = arg
13
+ end
17
14
 
15
+ def call(&block)
18
16
  instance_exec(&block) if block
19
17
 
20
- before_attrs = instance.attributes.slice(*attrs.keys)
18
+ before_attrs = instance.attributes.with_indifferent_access.slice(*@attrs.keys)
19
+
21
20
  if instance.new_record?
22
- puts "\33[32mCreate #{@model.model_class.name.underscore} #{@upsert_attributes.merge(attrs)}\33[0m"
23
- elsif before_attrs != attrs
24
- puts "Update #{@model.model_class.name.underscore} #{@upsert_attributes.merge(before_attrs)} to #{@upsert_attributes.merge(attrs)}"
21
+ puts "\33[32mCreate #{@model.model_class.name.underscore} #{@upsert_attributes.merge(@attrs)}\33[0m"
22
+ @evaluator.changed = true
23
+ elsif before_attrs != @attrs
24
+ puts "Update #{@model.model_class.name.underscore} #{@upsert_attributes.merge(before_attrs)} to #{@upsert_attributes.merge(@attrs)}"
25
+ @evaluator.changed = true
25
26
  end
26
27
 
27
- unless @evaluator.dry_run
28
- instance.assign_attributes(attrs)
28
+ if !@evaluator.dry_run && @evaluator.changed
29
+ instance.assign_attributes(@attrs)
29
30
  instance.save!(validate: @evaluator.config.validate)
30
31
  end
31
32
  end
@@ -3,15 +3,27 @@ require 'seedog/dsl'
3
3
  module Seedog
4
4
  class Evaluator
5
5
  attr_reader :config, :dry_run
6
+ attr_accessor :changed
6
7
 
7
8
  def initialize(config, dry_run: false)
8
9
  @config = config
9
10
  @dry_run = dry_run
11
+ @changed = false
10
12
  end
11
13
 
12
14
  def run
15
+ if dry_run
16
+ puts "Apply `#{config.file.relative_path_from(Rails.root)}` (dry-run)"
17
+ else
18
+ puts "Apply `#{config.file.relative_path_from(Rails.root)}`"
19
+ end
20
+
13
21
  dsl = DSL.new(self)
14
22
  dsl.instance_eval(config.file.read)
23
+
24
+ unless changed
25
+ puts 'No change'
26
+ end
15
27
  end
16
28
  end
17
29
  end
@@ -1,3 +1,3 @@
1
1
  module Seedog
2
- VERSION = '0.2.2'
2
+ VERSION = '0.3.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seedog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shota Iguchi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-02 00:00:00.000000000 Z
11
+ date: 2018-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -121,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
121
  version: '0'
122
122
  requirements: []
123
123
  rubyforge_project:
124
- rubygems_version: 2.6.14
124
+ rubygems_version: 2.7.3
125
125
  signing_key:
126
126
  specification_version: 4
127
127
  summary: Hyper master data manager for activerecord.