erd 0.1.3 → 0.1.4

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.
@@ -1,14 +1,6 @@
1
1
  class ERD
2
2
  constructor: (@name, @elem, @edges) ->
3
- svg_width = @elem.data('svg_width')
4
- svg_height = @elem.data('svg_height')
5
- if (svg_width > @elem.width())
6
- size = @elem.width() / svg_width
7
- $('#erd > .model').each ->
8
- left = parseFloat $(this).css('left')
9
- top = parseFloat $(this).css('top')
10
- $(this).css({left: left * size, top: top * size})
11
- @paper = Raphael(name, @elem.width(), svg_height)
3
+ @paper = Raphael(name, @elem.data('svg_width'), @elem.data('svg_height'))
12
4
  @setup_handlers()
13
5
  models = @elem.find('.model')
14
6
  @models = {}
@@ -28,7 +28,6 @@ li {
28
28
  }
29
29
 
30
30
  #migration {
31
-
32
31
  table {
33
32
  td {
34
33
  font-size: small;
@@ -40,7 +39,6 @@ li {
40
39
  }
41
40
 
42
41
  #erd {
43
-
44
42
  form {
45
43
  * {
46
44
  float: left;
@@ -136,10 +134,46 @@ li {
136
134
  }
137
135
  }
138
136
 
137
+ #executed,#failed {
138
+ padding: 7px;
139
+ padding-bottom: 0;
140
+ margin-bottom: 20px;
141
+ background-color: #f0f0f0;
142
+
143
+ h2 {
144
+ text-align: left;
145
+ font-weight: bold;
146
+ padding: 5px 5px 5px 15px;
147
+ font-size: 12px;
148
+ margin: -7px;
149
+ margin-bottom: 0px;
150
+ color: #fff;
151
+ }
152
+ h3 {
153
+ font-size: 12px;
154
+ margin: 0;
155
+ padding: 0;
156
+ }
157
+ ul li {
158
+ margin-left: 25px;
159
+ font-size: 12px;
160
+ list-style: square;
161
+ }
162
+ }
163
+
164
+
165
+ #executed {
166
+ border: 2px #0f0 solid;
167
+ h2 {
168
+ background-color: #0c0;
169
+ }
170
+ }
139
171
 
140
172
  #failed {
141
173
  border: 2px #f00 solid;
142
- padding: 2px;
174
+ h2 {
175
+ background-color: #c00;
176
+ }
143
177
  }
144
178
 
145
179
  #model_name_changes, #column_name_changes {
@@ -150,4 +184,3 @@ table, th, td {
150
184
  border: 1px #000 solid;
151
185
  border-collapse: collapse;
152
186
  }
153
-
@@ -21,7 +21,7 @@ module Erd
21
21
 
22
22
  def update
23
23
  changes = ActiveSupport::JSON.decode(params[:changes])
24
- failed_migrations = []
24
+ executed_migrations, failed_migrations = [], []
25
25
  changes.each do |row|
26
26
  begin
27
27
  action, model, column, from, to = row['action'], row['model'].tableize, row['column'], row['from'], row['to']
@@ -29,20 +29,30 @@ module Erd
29
29
  when 'remove_model'
30
30
  generated_migration_file = Erd::Migrator.execute_generate_migration "drop_#{model}"
31
31
  gsub_file generated_migration_file, /def up.* end/m, "def change\n drop_table :#{model}\n end"
32
+ Erd::Migrator.run_migrations :up => generated_migration_file
33
+ executed_migrations << generated_migration_file
32
34
  when 'rename_model'
33
35
  from, to = from.tableize, to.tableize
34
36
  generated_migration_file = Erd::Migrator.execute_generate_migration "rename_#{from}_to_#{to}"
35
37
  gsub_file generated_migration_file, /def up.* end/m, "def change\n rename_table :#{from}, :#{to}\n end"
38
+ Erd::Migrator.run_migrations :up => generated_migration_file
39
+ executed_migrations << generated_migration_file
36
40
  when 'add_column'
37
41
  name_and_type = column.scan(/(.*)\((.*?)\)/).first
38
42
  name, type = name_and_type[0], name_and_type[1]
39
- Erd::Migrator.execute_generate_migration "add_#{name}_to_#{model}", ["#{name}:#{type}"]
43
+ generated_migration_file = Erd::Migrator.execute_generate_migration "add_#{name}_to_#{model}", ["#{name}:#{type}"]
44
+ Erd::Migrator.run_migrations :up => generated_migration_file
45
+ executed_migrations << generated_migration_file
40
46
  when 'rename_column'
41
47
  generated_migration_file = Erd::Migrator.execute_generate_migration "rename_#{model}_#{from}_to_#{to}"
42
48
  gsub_file generated_migration_file, /def up.* end/m, "def change\n rename_column :#{model}, :#{from}, :#{to}\n end"
49
+ Erd::Migrator.run_migrations :up => generated_migration_file
50
+ executed_migrations << generated_migration_file
43
51
  when 'alter_column'
44
52
  generated_migration_file = Erd::Migrator.execute_generate_migration "change_#{model}_#{column}_type_to_#{to}"
45
53
  gsub_file generated_migration_file, /def up.* end/m, "def change\n change_column :#{model}, :#{column}, :#{to}\n end"
54
+ Erd::Migrator.run_migrations :up => generated_migration_file
55
+ executed_migrations << generated_migration_file
46
56
  when 'move'
47
57
  json_file = Rails.root.join('tmp', 'erd_positions.json')
48
58
  positions = json_file.exist? ? ActiveSupport::JSON.decode(json_file.read) : {}
@@ -56,12 +66,12 @@ module Erd
56
66
  end
57
67
  end
58
68
 
59
- redirect_to erd.root_path, :flash => {:failed_migrations => failed_migrations}
69
+ redirect_to erd.root_path, :flash => {:executed_migrations => {:up => executed_migrations}, :failed_migrations => failed_migrations}
60
70
  end
61
71
 
62
72
  def migrate
63
73
  Erd::Migrator.run_migrations :up => params[:up], :down => params[:down]
64
- redirect_to erd.root_path
74
+ redirect_to erd.root_path, :flash => {:executed_migrations => params.slice(:up, :down)}
65
75
  end
66
76
 
67
77
  private
@@ -4,9 +4,22 @@
4
4
  </div>
5
5
 
6
6
  <div id="migration">
7
+ <%- if flash[:executed_migrations].present? -%>
8
+ <div id="executed">
9
+ <h2>Successfully executed the following migrations!</h2>
10
+ <%- [:up, :down].each do |direction| -%>
11
+ <h3><%= direction %></h3>
12
+ <ul>
13
+ <%- flash[:executed_migrations][direction].each do |m| -%>
14
+ <li><%= m %></li>
15
+ <%- end -%>
16
+ </ul>
17
+ <%- end -%>
18
+ </div>
19
+ <%- end -%>
7
20
  <%- if flash[:failed_migrations].present? -%>
8
21
  <div id="failed">
9
- failed migrations
22
+ <h2>failed migrations</h2>
10
23
  <ul>
11
24
  <%- flash[:failed_migrations].each do |m| -%>
12
25
  <li><%= m %></li>
@@ -29,7 +42,7 @@
29
42
  <thead><tr><th>status</th><th>version</th><th>name</th></tr></thead>
30
43
  <tbody>
31
44
  <%- @migrations.each do |m| -%>
32
- <tr><td><label><%= check_box_tag (m[:status] == 'up' ? 'down[]' : 'up[]'), m[:version] %><%= m[:status] %></label></td><td><%= m[:version] %></td><td><%= m[:name] %></td></tr>
45
+ <tr><td><label><%= check_box_tag (m[:status] == 'up' ? 'down[]' : 'up[]'), m[:filename] %><%= m[:status] %></label></td><td><%= m[:version] %></td><td><%= m[:name] %></td></tr>
33
46
  <%- end -%>
34
47
  </tbody>
35
48
  </table>
@@ -12,20 +12,25 @@ module Erd
12
12
  Dir.foreach(Rails.root.join(path)) do |file|
13
13
  if (version_and_name = /^(\d{3,})_(.+)\.rb$/.match(file))
14
14
  status = migrated_versions.delete(version_and_name[1]) ? 'up' : 'down'
15
- migrations << {:status => status, :version => version_and_name[1], :name => version_and_name[2]}
15
+ migrations << {:status => status, :version => version_and_name[1], :name => version_and_name[2], :filename => file}
16
16
  end
17
17
  end
18
18
  end
19
- migrations += migrated_versions.map {|v| {:status => 'up', :version => v, :name => '*** NO FILE ***'}}
19
+ migrations += migrated_versions.map {|v| {:status => 'up', :version => v, :name => '*** NO FILE ***', :filename => v}}
20
20
  migrations.sort_by {|m| m[:version]}
21
21
  end
22
22
 
23
23
  # `rake db:migrate`
24
+ # example:
25
+ # run_migrations up: '/Users/a_matsuda/my_app/db/migrate/20120423023323_create_products.rb'
26
+ # run_migrations up: '20120512020202', down: ...
27
+ # run_migrations up: ['20120512020202', '20120609010203', ...]
24
28
  def run_migrations(migrations)
25
- migrations.each do |direction, versions|
26
- versions.each do |version|
29
+ migrations.each do |direction, version_or_filenames|
30
+ Array.wrap(version_or_filenames).each do |version_or_filename|
31
+ /^(?<version>\d{3,})/ =~ File.basename(version_or_filename)
27
32
  ActiveRecord::Migrator.run(direction, ActiveRecord::Migrator.migrations_path, version.to_i)
28
- end if versions
33
+ end if version_or_filenames
29
34
  end
30
35
  if ActiveRecord::Base.schema_format == :ruby
31
36
  File.open(ENV['SCHEMA'] || "#{Rails.root}/db/schema.rb", 'w') do |file|
@@ -1,3 +1,3 @@
1
1
  module Erd
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
@@ -26,9 +26,12 @@ describe Erd::Migrator do
26
26
  mock(ActiveRecord::Migrator).run(:up, 'db/migrate', 20999999999999)
27
27
  mock(ActiveRecord::SchemaDumper).dump(ActiveRecord::Base.connection, anything)
28
28
  end
29
- specify do
29
+ it 'runs migration by version number' do
30
30
  subject.run_migrations(:up => ['20999999999999'])
31
31
  end
32
+ it 'runs migration by migration filename' do
33
+ subject.run_migrations(:up => [Rails.root.join('db/migrate/20999999999999_create_foobars.rb')])
34
+ end
32
35
  end
33
36
 
34
37
  describe '.execute_generate_migration' do
metadata CHANGED
@@ -1,118 +1,89 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: erd
3
- version: !ruby/object:Gem::Version
4
- hash: 29
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.4
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 3
10
- version: 0.1.3
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Akira Matsuda
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-05-22 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-05-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rails-erd
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70225565859540 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 5
29
- segments:
30
- - 0
31
- - 4
32
- - 5
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
33
21
  version: 0.4.5
34
22
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: nokogiri
38
23
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70225565859540
25
+ - !ruby/object:Gem::Dependency
26
+ name: nokogiri
27
+ requirement: &70225565857760 !ruby/object:Gem::Requirement
40
28
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
48
33
  type: :runtime
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: rspec-rails
52
34
  prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70225565857760
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec-rails
38
+ requirement: &70225565857080 !ruby/object:Gem::Requirement
54
39
  none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- hash: 3
59
- segments:
60
- - 0
61
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
62
44
  type: :development
63
- version_requirements: *id003
64
- - !ruby/object:Gem::Dependency
65
- name: capybara
66
45
  prerelease: false
67
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70225565857080
47
+ - !ruby/object:Gem::Dependency
48
+ name: capybara
49
+ requirement: &70225565856460 !ruby/object:Gem::Requirement
68
50
  none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- hash: 3
73
- segments:
74
- - 0
75
- version: "0"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
76
55
  type: :development
77
- version_requirements: *id004
78
- - !ruby/object:Gem::Dependency
79
- name: rr
80
56
  prerelease: false
81
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *70225565856460
58
+ - !ruby/object:Gem::Dependency
59
+ name: rr
60
+ requirement: &70225565855840 !ruby/object:Gem::Requirement
82
61
  none: false
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- hash: 3
87
- segments:
88
- - 0
89
- version: "0"
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
90
66
  type: :development
91
- version_requirements: *id005
92
- - !ruby/object:Gem::Dependency
93
- name: sqlite3
94
67
  prerelease: false
95
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *70225565855840
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: &70225565854540 !ruby/object:Gem::Requirement
96
72
  none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- hash: 3
101
- segments:
102
- - 0
103
- version: "0"
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
104
77
  type: :development
105
- version_requirements: *id006
78
+ prerelease: false
79
+ version_requirements: *70225565854540
106
80
  description: erd engine on Rails
107
- email:
81
+ email:
108
82
  - ronnie@dio.jp
109
83
  executables: []
110
-
111
84
  extensions: []
112
-
113
85
  extra_rdoc_files: []
114
-
115
- files:
86
+ files:
116
87
  - .gitignore
117
88
  - Gemfile
118
89
  - MIT-LICENSE
@@ -149,38 +120,29 @@ files:
149
120
  - vendor/assets/javascripts/raphael-min.js
150
121
  homepage: https://github.com/amatsuda/erd
151
122
  licenses: []
152
-
153
123
  post_install_message:
154
124
  rdoc_options: []
155
-
156
- require_paths:
125
+ require_paths:
157
126
  - lib
158
- required_ruby_version: !ruby/object:Gem::Requirement
127
+ required_ruby_version: !ruby/object:Gem::Requirement
159
128
  none: false
160
- requirements:
161
- - - ">="
162
- - !ruby/object:Gem::Version
163
- hash: 3
164
- segments:
165
- - 0
166
- version: "0"
167
- required_rubygems_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
168
134
  none: false
169
- requirements:
170
- - - ">="
171
- - !ruby/object:Gem::Version
172
- hash: 3
173
- segments:
174
- - 0
175
- version: "0"
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
176
139
  requirements: []
177
-
178
140
  rubyforge_project:
179
- rubygems_version: 1.8.10
141
+ rubygems_version: 1.8.16
180
142
  signing_key:
181
143
  specification_version: 3
182
144
  summary: erd engine on Rails
183
- test_files:
145
+ test_files:
184
146
  - spec/fake_app/db/migrate/20120428022519_create_authors.rb
185
147
  - spec/fake_app/db/migrate/20120428022535_create_books.rb
186
148
  - spec/fake_app/db/schema.rb