yaml2erd 0.1.1 → 0.2.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
2
  SHA256:
3
- metadata.gz: bd5696521ec49d8752a8b85cdf0eac256ccfd2e7b807031b956d454cc9bc4c8b
4
- data.tar.gz: 3b9308df9411151cec2cb7f0dd358ad859db04446e174efd46f700b3df4123ea
3
+ metadata.gz: b0c951305aba9df6d52d9ee4cd03a37315600bddb6ad784d513989a6cd59a49f
4
+ data.tar.gz: 0d5056f95c9bc2ace3ae549ee3c7e0a35ce51822c4614cb37334b049136831ec
5
5
  SHA512:
6
- metadata.gz: b0ff3fd25fa6751e68fc1b806e19fda231126cd683623b0364e4928de5e457469ab29fa9de8b417028c365f6a6851607b8d82e0afd4ec06600051132ee8525c8
7
- data.tar.gz: a28aaeb33320bc7943e37d97beb109b6988b3a15b84627ca64f5869272cc936a70021cf446196d4c56fe5caa3f8da34dea9757425ade63942f03e51fd3cbef7d
6
+ metadata.gz: 4dc611ca29259d56d984881e787ab8a7bc523df072c23772bb54f6939402fb54aff54c0c754a15f0e5fc398497fada7d171bf97247f5c86552c214f08163b213
7
+ data.tar.gz: e4010ff0d1a4433e71d60efb3827f124df5bd1113c59cb8427618c2c0179bebc5b8434929872dba4d4703149b4c26636b3787f366d966fbf247285c6c9b73ecd
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- yaml2erd (0.1.0)
4
+ yaml2erd (0.2.0)
5
5
  activesupport (~> 5.2)
6
6
  gviz (~> 0.3.5)
7
7
 
data/README.md CHANGED
@@ -46,12 +46,28 @@ sample path
46
46
  ### step4. execute
47
47
  ```
48
48
  mkdir erd
49
- bin/yaml2erd erd/table.yaml -c config/gv_conf.yaml -o erd/table.png
49
+ yaml2erd erd/table.yaml -c config/gv_conf.yaml -o erd/table.png
50
50
  ```
51
51
 
52
52
  - `-c` option is config path
53
53
  - `-o` option is outputed path
54
54
 
55
+ ## you can notice the difference between ERD and DDL
56
+ - step1. get column info from yaml
57
+
58
+ ```
59
+ parser = ErYamlParser.new('erd/table.yaml')
60
+ columns_hash_yaml = parser.models[:Post].columns
61
+ ```
62
+
63
+ - step2. get column info from ActiveRecord
64
+
65
+ ```
66
+ columns_hash_ar = Post.column_names
67
+ ```
68
+
69
+ - step3. Write test code to compare these two
70
+
55
71
  ## Development
56
72
 
57
73
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -0,0 +1,17 @@
1
+ class GvIdMap
2
+ def initialize
3
+ @map = {}
4
+ @cnt = 1
5
+ end
6
+
7
+ def enc(model)
8
+ model = model.to_sym if model.class == String
9
+
10
+ if @map[model].nil?
11
+ @map[model] = @cnt.to_s.to_sym
12
+ @cnt += 1
13
+ end
14
+
15
+ @map[model]
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  class Yaml2erd
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/yaml2erd.rb CHANGED
@@ -1,7 +1,8 @@
1
1
  require 'gviz'
2
- require 'rails/all'
2
+ require 'active_support/all'
3
3
  require 'yaml2erd/version'
4
4
  require 'yaml2erd/er_yaml_parser'
5
+ require 'yaml2erd/gv_id_map'
5
6
 
6
7
  class Yaml2erd
7
8
  attr_accessor :group_global_conf
@@ -42,6 +43,7 @@ class Yaml2erd
42
43
  def initialize(yaml_file_path, conf_yaml_path)
43
44
  @yaml = ErYamlParser.new(yaml_file_path)
44
45
  @gv = Gviz.new
46
+ @gv_id_map = GvIdMap.new
45
47
 
46
48
  apply_conf(conf_yaml_path)
47
49
  end
@@ -57,11 +59,11 @@ class Yaml2erd
57
59
 
58
60
  # TODO: addとrouteの違いはなんだろう
59
61
  # entityの枠(model)作成
60
- @gv.route model
62
+ @gv.route @gv_id_map.enc(model)
61
63
 
62
64
  # entityの中身(tableタグ)作成、適用
63
65
  table_tag = create_table_tag(model, columns, description)
64
- @gv.node model, label: table_tag
66
+ @gv.node @gv_id_map.enc(model), label: table_tag
65
67
 
66
68
  # relation適用
67
69
  apply_relation(model, relations)
@@ -195,7 +197,7 @@ class Yaml2erd
195
197
  relations.each do |relation|
196
198
  relation.each do |rel_type, rel_model|
197
199
  next if rel_type == :belongs_to
198
- @gv.edge "#{model}_#{rel_model}", ARROW_MAP[rel_type]
200
+ @gv.edge "#{@gv_id_map.enc(model)}_#{@gv_id_map.enc(rel_model)}", ARROW_MAP[rel_type]
199
201
  end
200
202
  end
201
203
  end
@@ -208,13 +210,14 @@ class Yaml2erd
208
210
  # mapをもとにグルーピング
209
211
  @yaml.groups_map.each do |group_name, models|
210
212
  group_bgcolor = @yaml.groups_bgcolor_map[group_name.to_sym]
213
+ alias_models = models.map do |model| @gv_id_map.enc(model) end
211
214
 
212
215
  @gv.subgraph do
213
216
  global group_conf.merge(label: group_name, bgcolor: group_bgcolor)
214
217
  nodes nodes_conf
215
218
  # model割り当て
216
- models.each do |model|
217
- node model
219
+ alias_models.each do |alias_model|
220
+ node alias_model
218
221
  end
219
222
  end
220
223
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yaml2erd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - rh-taro
@@ -103,6 +103,7 @@ files:
103
103
  - lib/yaml2erd.rb
104
104
  - lib/yaml2erd/er_yaml_model.rb
105
105
  - lib/yaml2erd/er_yaml_parser.rb
106
+ - lib/yaml2erd/gv_id_map.rb
106
107
  - lib/yaml2erd/version.rb
107
108
  - yaml2erd.gemspec
108
109
  homepage: https://github.com/rh-taro/yaml2erd