erd 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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