legacy_data 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. data/Rakefile +37 -1
  2. data/VERSION +1 -1
  3. data/examples/blog_migration.rb +26 -0
  4. data/examples/create_j2ee_petstore.sql +91 -0
  5. data/examples/delete_j2ee_petstore.sql +14 -0
  6. data/examples/drupal_6_14.sql +809 -0
  7. data/examples/generated/blog_mysql/comment.rb +11 -0
  8. data/examples/generated/blog_mysql/factories.rb +9 -0
  9. data/examples/generated/blog_mysql/post.rb +11 -0
  10. data/examples/generated/blog_mysql/tag.rb +11 -0
  11. data/{spec/functional/expected → examples/generated/blog_sqlite3}/comment.rb +3 -4
  12. data/examples/generated/blog_sqlite3/factories.rb +12 -0
  13. data/{spec/functional/expected → examples/generated/blog_sqlite3}/post.rb +3 -3
  14. data/examples/generated/blog_sqlite3/tag.rb +11 -0
  15. data/examples/generated/drupal_mysql/access.rb +12 -0
  16. data/examples/generated/drupal_mysql/action.rb +11 -0
  17. data/examples/generated/drupal_mysql/actions_aid.rb +11 -0
  18. data/examples/generated/drupal_mysql/authmap.rb +13 -0
  19. data/examples/generated/drupal_mysql/batch.rb +12 -0
  20. data/examples/generated/drupal_mysql/block.rb +13 -0
  21. data/examples/generated/drupal_mysql/blocks_role.rb +12 -0
  22. data/examples/generated/drupal_mysql/box.rb +13 -0
  23. data/examples/generated/drupal_mysql/cache.rb +12 -0
  24. data/examples/generated/drupal_mysql/cache_block.rb +12 -0
  25. data/examples/generated/drupal_mysql/cache_filter.rb +12 -0
  26. data/examples/generated/drupal_mysql/cache_form.rb +12 -0
  27. data/examples/generated/drupal_mysql/cache_menu.rb +12 -0
  28. data/examples/generated/drupal_mysql/cache_page.rb +12 -0
  29. data/examples/generated/drupal_mysql/cache_update.rb +12 -0
  30. data/examples/generated/drupal_mysql/comment.rb +12 -0
  31. data/examples/generated/drupal_mysql/factories.rb +370 -0
  32. data/examples/generated/drupal_mysql/filter.rb +13 -0
  33. data/examples/generated/drupal_mysql/filter_format.rb +13 -0
  34. data/examples/generated/drupal_mysql/flood.rb +12 -0
  35. data/examples/generated/drupal_mysql/history.rb +12 -0
  36. data/examples/generated/drupal_mysql/menu_custom.rb +11 -0
  37. data/examples/generated/drupal_mysql/menu_link.rb +12 -0
  38. data/examples/generated/drupal_mysql/menu_router.rb +12 -0
  39. data/examples/generated/drupal_mysql/node.rb +13 -0
  40. data/examples/generated/drupal_mysql/node_access.rb +12 -0
  41. data/examples/generated/drupal_mysql/node_comment_statistic.rb +12 -0
  42. data/examples/generated/drupal_mysql/node_counter.rb +12 -0
  43. data/examples/generated/drupal_mysql/node_revision.rb +12 -0
  44. data/examples/generated/drupal_mysql/node_type.rb +12 -0
  45. data/examples/generated/drupal_mysql/permission.rb +12 -0
  46. data/examples/generated/drupal_mysql/role.rb +12 -0
  47. data/examples/generated/drupal_mysql/session.rb +12 -0
  48. data/examples/generated/drupal_mysql/system.rb +12 -0
  49. data/examples/generated/drupal_mysql/term_data.rb +12 -0
  50. data/examples/generated/drupal_mysql/term_hierarchy.rb +12 -0
  51. data/examples/generated/drupal_mysql/term_node.rb +12 -0
  52. data/examples/generated/drupal_mysql/term_relation.rb +13 -0
  53. data/examples/generated/drupal_mysql/term_synonym.rb +12 -0
  54. data/examples/generated/drupal_mysql/uploaded_files.rb +12 -0
  55. data/examples/generated/drupal_mysql/url_alias.rb +12 -0
  56. data/examples/generated/drupal_mysql/user.rb +14 -0
  57. data/examples/generated/drupal_mysql/users_role.rb +12 -0
  58. data/examples/generated/drupal_mysql/variable.rb +11 -0
  59. data/examples/generated/drupal_mysql/vocabulary.rb +12 -0
  60. data/examples/generated/drupal_mysql/vocabulary_node_type.rb +12 -0
  61. data/examples/generated/drupal_mysql/watchdog.rb +12 -0
  62. data/examples/generated/j2ee_petstore_mysql/address.rb +11 -0
  63. data/examples/generated/j2ee_petstore_mysql/category.rb +11 -0
  64. data/examples/generated/j2ee_petstore_mysql/factories.rb +57 -0
  65. data/examples/generated/j2ee_petstore_mysql/id_gen.rb +12 -0
  66. data/examples/generated/j2ee_petstore_mysql/item.rb +12 -0
  67. data/examples/generated/j2ee_petstore_mysql/product.rb +11 -0
  68. data/examples/generated/j2ee_petstore_mysql/seller_contact_info.rb +11 -0
  69. data/examples/generated/j2ee_petstore_mysql/tag.rb +13 -0
  70. data/examples/generated/j2ee_petstore_mysql/tag_item.rb +13 -0
  71. data/examples/generated/j2ee_petstore_mysql/ziplocation.rb +11 -0
  72. data/examples/generated/j2ee_petstore_oracle/address.rb +11 -0
  73. data/examples/generated/j2ee_petstore_oracle/category.rb +11 -0
  74. data/examples/generated/j2ee_petstore_oracle/factories.rb +52 -0
  75. data/examples/generated/j2ee_petstore_oracle/id_gen.rb +12 -0
  76. data/examples/generated/j2ee_petstore_oracle/item.rb +15 -0
  77. data/examples/generated/j2ee_petstore_oracle/product.rb +12 -0
  78. data/examples/generated/j2ee_petstore_oracle/sellercontactinfo.rb +11 -0
  79. data/examples/generated/j2ee_petstore_oracle/tag.rb +13 -0
  80. data/examples/generated/j2ee_petstore_oracle/ziplocation.rb +11 -0
  81. data/examples/generated/j2ee_petstore_sqlite3/address.rb +12 -0
  82. data/examples/generated/j2ee_petstore_sqlite3/category.rb +12 -0
  83. data/examples/generated/j2ee_petstore_sqlite3/factories.rb +57 -0
  84. data/examples/generated/j2ee_petstore_sqlite3/id_gen.rb +13 -0
  85. data/examples/generated/j2ee_petstore_sqlite3/item.rb +13 -0
  86. data/examples/generated/j2ee_petstore_sqlite3/product.rb +12 -0
  87. data/examples/generated/j2ee_petstore_sqlite3/seller_contact_info.rb +12 -0
  88. data/examples/generated/j2ee_petstore_sqlite3/tag.rb +13 -0
  89. data/examples/generated/j2ee_petstore_sqlite3/tag_item.rb +14 -0
  90. data/examples/generated/j2ee_petstore_sqlite3/ziplocation.rb +11 -0
  91. data/generators/models_from_tables/models_from_tables_generator.rb +5 -36
  92. data/generators/models_from_tables/templates/model.rb +5 -39
  93. data/legacy_data.gemspec +187 -11
  94. data/lib/active_record/connection_adapters/oracleenhanced_adapter.rb +85 -0
  95. data/lib/legacy_data.rb +5 -2
  96. data/lib/legacy_data/schema.rb +10 -7
  97. data/lib/legacy_data/table_class_name_mapper.rb +1 -1
  98. data/lib/legacy_data/table_definition.rb +120 -5
  99. data/spec/expected/post.rb +3 -3
  100. data/spec/functional/blog_adapterspec.rb +45 -0
  101. data/spec/functional/database.yml +45 -0
  102. data/spec/functional/drupal_adapterspec.rb +54 -0
  103. data/spec/functional/functional_spec_helper.rb +24 -0
  104. data/spec/functional/j2ee_petstore_adapterspec.rb +57 -0
  105. data/spec/legacy_data/schema_spec.rb +7 -3
  106. data/spec/legacy_data/table_definition_spec.rb +101 -10
  107. data/spec/models_from_tables_generator_spec.rb +19 -7
  108. data/spec/spec_helper.rb +6 -18
  109. metadata +193 -10
  110. data/examples/j2ee_petstore.sql +0 -512
  111. data/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb +0 -61
  112. data/spec/functional/models_from_tables_spec.rb +0 -27
@@ -98,13 +98,17 @@ describe LegacyData::Schema do
98
98
  end
99
99
 
100
100
  it 'should give no "belongs_to" when the adapter does not support foreign keys' do
101
- @connection.should_receive(:respond_to?).with(:foreign_keys_for).and_return(false)
101
+ @connection.should_receive(:respond_to?).with(:foreign_keys).and_return(false)
102
102
  @schema.belongs_to_relations.should == {}
103
103
  end
104
104
 
105
105
  it 'should get all "belongs_to" relationships when a foreign key is in my table' do
106
- @connection.should_receive(:respond_to?).with(:foreign_keys_for).and_return(true)
107
- @connection.should_receive(:foreign_keys_for).and_return([['OTHER_TABLE', 'FK_1'], ['THE_TABLE', 'the_table_id']])
106
+ @connection.should_receive(:respond_to?).with(:foreign_keys).and_return(true)
107
+ @connection.should_receive(:foreign_keys).and_return([
108
+ Foreigner::ConnectionAdapters::ForeignKeyDefinition.new('some_table', 'OTHER_TABLE', {:column=>'fk_1'}),
109
+ Foreigner::ConnectionAdapters::ForeignKeyDefinition.new('some_table', 'THE_TABLE', {:column=>'the_table_id'})
110
+ ])
111
+
108
112
  @schema.belongs_to_relations.should == {'other_table' => {:foreign_key=>:fk_1 },
109
113
  'the_table' => {:foreign_key=>:the_table_id} }
110
114
  end
@@ -6,23 +6,114 @@ describe LegacyData::TableDefinition do
6
6
  LegacyData::TableDefinition.new({option=>'some value'})[option].should == 'some value'
7
7
  end
8
8
 
9
- it 'should allow you to set class_name' do
10
- table_definition = LegacyData::TableDefinition.new({})
11
- table_definition.class_name = 'NewClassName'
12
- table_definition[:class_name].should == 'NewClassName'
9
+ end
10
+
11
+ describe 'formatting for model' do
12
+ describe 'relationships' do
13
+ before :each do
14
+ @table_definition = LegacyData::TableDefinition.new({})
15
+ end
16
+
17
+ it 'should format a hash for a has_many or belongs_to list' do
18
+ @table_definition.options_to_s({:foreign_key=>:posts_id, :class_name=>'SomeClass'}).should == ':class_name => "SomeClass", :foreign_key => :posts_id'
19
+ end
13
20
  end
14
21
 
15
- it 'should reveal itself as a hash' do
16
- params = {}
17
- [:class_name, :table_name, :columns, :primary_key, :relations, :constraints].each { |field| params[field] = "#{field}_value" }
18
- table_definition = LegacyData::TableDefinition.new(params)
19
- table_definition.to_hash.should == params
22
+ describe 'constraints' do
23
+ it 'should generate commented lines for multi column unique constraints' do
24
+ table_definition = LegacyData::TableDefinition.new(:constraints => {:multi_column_unique => [[:author, :title],
25
+ [:address, :phone]]
26
+ })
27
+ table_definition.multi_column_unique_constraints_to_s.should == ["#validates_uniqueness_of_multiple_column_constraint [:author, :title]",
28
+ "#validates_uniqueness_of_multiple_column_constraint [:address, :phone]"]
29
+ end
30
+
31
+ it 'should generate inclusion of constraints with a method returning possible values' do
32
+ table_definition = LegacyData::TableDefinition.new(:constraints => {:inclusion_of => {:flag => ['Y', 'N'],
33
+ :state => ['MA', 'NY']}
34
+ })
35
+ table_definition.inclusion_of_constraints_to_s.first.should == <<-RB
36
+ def self.possible_values_for_state
37
+ ["MA", "NY"]
38
+ end
39
+ validates_inclusion_of :state,
40
+ :in => possible_values_for_state,
41
+ :message => "is not one of (\#{possible_values_for_state.join(', ')})"
42
+ RB
43
+ table_definition.inclusion_of_constraints_to_s.second.should == <<-RB
44
+ def self.possible_values_for_flag
45
+ ["Y", "N"]
46
+ end
47
+ validates_inclusion_of :flag,
48
+ :in => possible_values_for_flag,
49
+ :message => "is not one of (\#{possible_values_for_flag.join(', ')})"
50
+ RB
51
+ end
52
+
53
+ it 'should generate inclusion of constraints with a method returning possible values' do
54
+ table_definition = LegacyData::TableDefinition.new(:constraints => {:custom => {:my_constraint => "some plsql logic",
55
+ :another_one => "multi\nline\n plsql logic"}
56
+ })
57
+ table_definition.custom_constraints_to_s.should include <<-RB
58
+ validate :validate_my_constraint
59
+ def validate_my_constraint
60
+ # TODO: validate this SQL constraint
61
+ <<-SQL
62
+ some plsql logic
63
+ SQL
64
+ end
65
+ RB
66
+ table_definition.custom_constraints_to_s.should include <<-RB
67
+ validate :validate_another_one
68
+ def validate_another_one
69
+ # TODO: validate this SQL constraint
70
+ <<-SQL
71
+ multi
72
+ line
73
+ plsql logic
74
+ SQL
75
+ end
76
+ RB
77
+ end
78
+
79
+ describe 'numericality constraints' do
80
+ before :each do
81
+ @table_definition = LegacyData::TableDefinition.new(:constraints => {:numericality_of => {:allow_nil => ['col1', 'col2'],
82
+ :do_not_allow_nil => ['col3', 'col4']}
83
+ }
84
+ )
85
+ end
86
+ it 'should generate numericality constraints for those that allow nil and those that do not' do
87
+ @table_definition.numericality_of_constraints_to_s.should == ["validates_numericality_of :col1, :col2, {:allow_nil=>true}",
88
+ "validates_numericality_of :col3, :col4"]
89
+ end
90
+
91
+ it 'should not fail when there are no nullable constraints' do
92
+ @table_definition.constraints[:numericality_of][:allow_nil] = nil
93
+ @table_definition.numericality_of_constraints_to_s.should == [[],
94
+ "validates_numericality_of :col3, :col4"]
95
+ end
96
+
97
+ it 'should not fail when there are no non-nullable constraints' do
98
+ @table_definition.constraints[:numericality_of][:do_not_allow_nil] = nil
99
+ @table_definition.numericality_of_constraints_to_s.should == ["validates_numericality_of :col1, :col2, {:allow_nil=>true}",
100
+ []]
101
+ end
102
+
103
+ it 'should not fail when there are no nullable or non-nullable constraints' do
104
+ @table_definition.constraints[:numericality_of][:allow_nil] = nil
105
+ @table_definition.constraints[:numericality_of][:do_not_allow_nil] = nil
106
+ @table_definition.numericality_of_constraints_to_s.should == [[],
107
+ []]
108
+ end
109
+ end
20
110
  end
111
+
21
112
  end
22
113
 
23
114
  describe 'join table' do
24
115
  before :each do
25
- @foreign_key_columns = ['one_table_id', 'another_table_id']
116
+ @foreign_key_columns = [mock(:name=>'one_table_id'), mock(:name=>'another_table_id') ]
26
117
  @belongs_to_relation = {'one_table' => {:foreign_key=>:one_table_id },
27
118
  'another_table' => {:foreign_key=>:another_table_id} }
28
119
  end
@@ -11,16 +11,16 @@ describe 'Models From Tables generator' do
11
11
  end
12
12
 
13
13
  before :each do
14
- FileUtils.rm(RAILS_ROOT + '/spec/factories.rb')
14
+ FileUtils.rm(RAILS_ROOT + '/spec/factories.rb', :force => true)
15
15
 
16
16
  @posts = LegacyData::TableDefinition.new( :class_name => 'Posts',
17
17
  :table_name => 'posts',
18
18
  :columns => [stub(:name=>'title', :null=>false, :type=>:string),
19
19
  stub(:name=>'body', :null=>false, :type=>:string)],
20
20
  :primary_key => 'id',
21
- :relations => { :has_many =>{'comments'=>{:foreign_key=>'comment_id'}},
21
+ :relations => { :has_many =>{'comments'=>{:foreign_key=>:comment_id}},
22
22
  :belongs_to =>{},
23
- :has_and_belongs_to_many=>[]
23
+ :has_and_belongs_to_many=>{}
24
24
  },
25
25
  :constraints => { :unique =>['title'],
26
26
  :multi_column_unique=>[],
@@ -36,16 +36,28 @@ describe 'Models From Tables generator' do
36
36
  LegacyData::TableClassNameMapper.should_receive(:let_user_validate_dictionary)
37
37
  LegacyData::TableClassNameMapper.stub!(:class_name_for).with('posts' ).and_return('Post')
38
38
  LegacyData::TableClassNameMapper.stub!(:class_name_for).with('comments').and_return('Comment')
39
-
40
- cmd = command_for_generator('models_from_tables', ["--table-name", "posts"], :create)
41
- cmd.invoke!
42
39
  end
43
40
 
44
41
  it 'should generate a posts model' do
42
+ invoke_generator('models_from_tables', ["--table-name", "posts"], :create)
43
+
45
44
  File.read(RAILS_ROOT + '/app/models/post.rb').should == File.read(File.expand_path(File.dirname(__FILE__) + '/expected/post.rb'))
46
45
  end
47
46
 
48
- it 'should generate a :posts factory' do
47
+ it 'should not generate factories by default' do
48
+ generator = load_generator('models_from_tables', ["--table-name", "posts"])
49
+ generator.should_not_receive(:add_factory_girl_factory)
50
+
51
+ cmd = generator.command(:create)
52
+ cmd.stub!(:logger).and_return(stub('stub').as_null_object)
53
+ cmd.invoke!
54
+ end
55
+
56
+ it 'should generate factories when asked' do
57
+ generator = load_generator('models_from_tables', ["--table-name", "posts", "--with-factories"])
58
+ cmd = generator.command(:create)
59
+ cmd.stub!(:logger).and_return(stub('stub').as_null_object)
60
+ cmd.invoke!
49
61
 
50
62
  File.read(RAILS_ROOT + '/spec/factories.rb').should == File.read(File.expand_path(File.dirname(__FILE__) + '/expected/factories.rb'))
51
63
  end
data/spec/spec_helper.rb CHANGED
@@ -3,31 +3,17 @@ require 'activerecord'
3
3
  # require 'active_record/connection_adapters/oracle_enhanced_adapter'
4
4
 
5
5
 
6
-
7
- ## TODO parameterize this ....
6
+ # Since Legacy Data depends on Foreigner we need to have an ActiveRecord connection established
8
7
  ActiveRecord::Base.establish_connection({:adapter=>'sqlite3', :database=> ":memory:"})
9
8
 
10
- ActiveRecord::Base.connection.create_table :posts do |t|
11
- t.string :title
12
- t.text :body
13
- end
14
- ActiveRecord::Base.connection.create_table :comments do |t|
15
- t.integer :post_id
16
- t.text :body
17
- end
18
9
 
19
-
20
- # $LOAD_PATH.unshift(File.dirname(__FILE__))
21
10
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
22
11
  require 'legacy_data'
23
12
 
13
+
24
14
  require 'spec'
25
15
  require 'spec/autorun'
26
16
 
27
- Spec::Runner.configure do |config|
28
-
29
- end
30
-
31
17
  ### Load the rails generator code
32
18
  require 'rails_generator'
33
19
  require 'rails_generator/scripts'
@@ -37,13 +23,15 @@ Rails::Generator::Base.reset_sources
37
23
  def add_source(path)
38
24
  Rails::Generator::Base.append_sources(Rails::Generator::PathSource.new(:builtin, path))
39
25
  end
40
-
41
26
  add_source(File.dirname(__FILE__) + '/../generators')
42
27
 
28
+
29
+
43
30
  def load_generator(generator_name="models_from_tables", args=[])
44
31
  Rails::Generator::Base.instance(generator_name,
45
32
  (args.dup << '--quiet'),
46
- {:generator=>generator_name, :command=>:create, :destination=>RAILS_ROOT})
33
+ {:generator=>generator_name, :command=>:create, :destination=>RAILS_ROOT}
34
+ )
47
35
  end
48
36
 
49
37
  def command_for_generator(generator_name, args, the_command= :create)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legacy_data
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Rothenberg
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-14 00:00:00 -04:00
12
+ date: 2009-10-21 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -32,6 +32,16 @@ dependencies:
32
32
  - !ruby/object:Gem::Version
33
33
  version: "0"
34
34
  version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: matthuhiggins-foreigner
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.2.1
44
+ version:
35
45
  description: Create ActiveRecord models from an existing database
36
46
  email: alex@alexrothenberg.com
37
47
  executables: []
@@ -48,22 +58,110 @@ files:
48
58
  - README.rdoc
49
59
  - Rakefile
50
60
  - VERSION
51
- - examples/j2ee_petstore.sql
61
+ - examples/blog_migration.rb
62
+ - examples/create_j2ee_petstore.sql
63
+ - examples/delete_j2ee_petstore.sql
64
+ - examples/drupal_6_14.sql
65
+ - examples/generated/blog_mysql/comment.rb
66
+ - examples/generated/blog_mysql/factories.rb
67
+ - examples/generated/blog_mysql/post.rb
68
+ - examples/generated/blog_mysql/tag.rb
69
+ - examples/generated/blog_sqlite3/comment.rb
70
+ - examples/generated/blog_sqlite3/factories.rb
71
+ - examples/generated/blog_sqlite3/post.rb
72
+ - examples/generated/blog_sqlite3/tag.rb
73
+ - examples/generated/drupal_mysql/access.rb
74
+ - examples/generated/drupal_mysql/action.rb
75
+ - examples/generated/drupal_mysql/actions_aid.rb
76
+ - examples/generated/drupal_mysql/authmap.rb
77
+ - examples/generated/drupal_mysql/batch.rb
78
+ - examples/generated/drupal_mysql/block.rb
79
+ - examples/generated/drupal_mysql/blocks_role.rb
80
+ - examples/generated/drupal_mysql/box.rb
81
+ - examples/generated/drupal_mysql/cache.rb
82
+ - examples/generated/drupal_mysql/cache_block.rb
83
+ - examples/generated/drupal_mysql/cache_filter.rb
84
+ - examples/generated/drupal_mysql/cache_form.rb
85
+ - examples/generated/drupal_mysql/cache_menu.rb
86
+ - examples/generated/drupal_mysql/cache_page.rb
87
+ - examples/generated/drupal_mysql/cache_update.rb
88
+ - examples/generated/drupal_mysql/comment.rb
89
+ - examples/generated/drupal_mysql/factories.rb
90
+ - examples/generated/drupal_mysql/filter.rb
91
+ - examples/generated/drupal_mysql/filter_format.rb
92
+ - examples/generated/drupal_mysql/flood.rb
93
+ - examples/generated/drupal_mysql/history.rb
94
+ - examples/generated/drupal_mysql/menu_custom.rb
95
+ - examples/generated/drupal_mysql/menu_link.rb
96
+ - examples/generated/drupal_mysql/menu_router.rb
97
+ - examples/generated/drupal_mysql/node.rb
98
+ - examples/generated/drupal_mysql/node_access.rb
99
+ - examples/generated/drupal_mysql/node_comment_statistic.rb
100
+ - examples/generated/drupal_mysql/node_counter.rb
101
+ - examples/generated/drupal_mysql/node_revision.rb
102
+ - examples/generated/drupal_mysql/node_type.rb
103
+ - examples/generated/drupal_mysql/permission.rb
104
+ - examples/generated/drupal_mysql/role.rb
105
+ - examples/generated/drupal_mysql/session.rb
106
+ - examples/generated/drupal_mysql/system.rb
107
+ - examples/generated/drupal_mysql/term_data.rb
108
+ - examples/generated/drupal_mysql/term_hierarchy.rb
109
+ - examples/generated/drupal_mysql/term_node.rb
110
+ - examples/generated/drupal_mysql/term_relation.rb
111
+ - examples/generated/drupal_mysql/term_synonym.rb
112
+ - examples/generated/drupal_mysql/uploaded_files.rb
113
+ - examples/generated/drupal_mysql/url_alias.rb
114
+ - examples/generated/drupal_mysql/user.rb
115
+ - examples/generated/drupal_mysql/users_role.rb
116
+ - examples/generated/drupal_mysql/variable.rb
117
+ - examples/generated/drupal_mysql/vocabulary.rb
118
+ - examples/generated/drupal_mysql/vocabulary_node_type.rb
119
+ - examples/generated/drupal_mysql/watchdog.rb
120
+ - examples/generated/j2ee_petstore_mysql/address.rb
121
+ - examples/generated/j2ee_petstore_mysql/category.rb
122
+ - examples/generated/j2ee_petstore_mysql/factories.rb
123
+ - examples/generated/j2ee_petstore_mysql/id_gen.rb
124
+ - examples/generated/j2ee_petstore_mysql/item.rb
125
+ - examples/generated/j2ee_petstore_mysql/product.rb
126
+ - examples/generated/j2ee_petstore_mysql/seller_contact_info.rb
127
+ - examples/generated/j2ee_petstore_mysql/tag.rb
128
+ - examples/generated/j2ee_petstore_mysql/tag_item.rb
129
+ - examples/generated/j2ee_petstore_mysql/ziplocation.rb
130
+ - examples/generated/j2ee_petstore_oracle/address.rb
131
+ - examples/generated/j2ee_petstore_oracle/category.rb
132
+ - examples/generated/j2ee_petstore_oracle/factories.rb
133
+ - examples/generated/j2ee_petstore_oracle/id_gen.rb
134
+ - examples/generated/j2ee_petstore_oracle/item.rb
135
+ - examples/generated/j2ee_petstore_oracle/product.rb
136
+ - examples/generated/j2ee_petstore_oracle/sellercontactinfo.rb
137
+ - examples/generated/j2ee_petstore_oracle/tag.rb
138
+ - examples/generated/j2ee_petstore_oracle/ziplocation.rb
139
+ - examples/generated/j2ee_petstore_sqlite3/address.rb
140
+ - examples/generated/j2ee_petstore_sqlite3/category.rb
141
+ - examples/generated/j2ee_petstore_sqlite3/factories.rb
142
+ - examples/generated/j2ee_petstore_sqlite3/id_gen.rb
143
+ - examples/generated/j2ee_petstore_sqlite3/item.rb
144
+ - examples/generated/j2ee_petstore_sqlite3/product.rb
145
+ - examples/generated/j2ee_petstore_sqlite3/seller_contact_info.rb
146
+ - examples/generated/j2ee_petstore_sqlite3/tag.rb
147
+ - examples/generated/j2ee_petstore_sqlite3/tag_item.rb
148
+ - examples/generated/j2ee_petstore_sqlite3/ziplocation.rb
52
149
  - generators/models_from_tables/USAGE
53
150
  - generators/models_from_tables/models_from_tables_generator.rb
54
151
  - generators/models_from_tables/templates/model.rb
55
152
  - legacy_data.gemspec
56
- - lib/active_record/connection_adapters/oracle_enhanced_adapter.rb
153
+ - lib/active_record/connection_adapters/oracleenhanced_adapter.rb
57
154
  - lib/legacy_data.rb
58
155
  - lib/legacy_data/schema.rb
59
156
  - lib/legacy_data/table_class_name_mapper.rb
60
157
  - lib/legacy_data/table_definition.rb
61
158
  - spec/expected/factories.rb
62
159
  - spec/expected/post.rb
63
- - spec/functional/expected/comment.rb
64
- - spec/functional/expected/post.rb
160
+ - spec/functional/blog_adapterspec.rb
161
+ - spec/functional/database.yml
162
+ - spec/functional/drupal_adapterspec.rb
65
163
  - spec/functional/functional_spec_helper.rb
66
- - spec/functional/models_from_tables_spec.rb
164
+ - spec/functional/j2ee_petstore_adapterspec.rb
67
165
  - spec/legacy_data/schema_spec.rb
68
166
  - spec/legacy_data/table_class_name_mapper_spec.rb
69
167
  - spec/legacy_data/table_definition_spec.rb
@@ -100,12 +198,97 @@ summary: Create ActiveRecord models from an existing database
100
198
  test_files:
101
199
  - spec/expected/factories.rb
102
200
  - spec/expected/post.rb
103
- - spec/functional/expected/comment.rb
104
- - spec/functional/expected/post.rb
201
+ - spec/functional/blog_adapterspec.rb
202
+ - spec/functional/drupal_adapterspec.rb
105
203
  - spec/functional/functional_spec_helper.rb
106
- - spec/functional/models_from_tables_spec.rb
204
+ - spec/functional/j2ee_petstore_adapterspec.rb
107
205
  - spec/legacy_data/schema_spec.rb
108
206
  - spec/legacy_data/table_class_name_mapper_spec.rb
109
207
  - spec/legacy_data/table_definition_spec.rb
110
208
  - spec/models_from_tables_generator_spec.rb
111
209
  - spec/spec_helper.rb
210
+ - examples/blog_migration.rb
211
+ - examples/generated/blog_mysql/comment.rb
212
+ - examples/generated/blog_mysql/factories.rb
213
+ - examples/generated/blog_mysql/post.rb
214
+ - examples/generated/blog_mysql/tag.rb
215
+ - examples/generated/blog_sqlite3/comment.rb
216
+ - examples/generated/blog_sqlite3/factories.rb
217
+ - examples/generated/blog_sqlite3/post.rb
218
+ - examples/generated/blog_sqlite3/tag.rb
219
+ - examples/generated/drupal_mysql/access.rb
220
+ - examples/generated/drupal_mysql/action.rb
221
+ - examples/generated/drupal_mysql/actions_aid.rb
222
+ - examples/generated/drupal_mysql/authmap.rb
223
+ - examples/generated/drupal_mysql/batch.rb
224
+ - examples/generated/drupal_mysql/block.rb
225
+ - examples/generated/drupal_mysql/blocks_role.rb
226
+ - examples/generated/drupal_mysql/box.rb
227
+ - examples/generated/drupal_mysql/cache.rb
228
+ - examples/generated/drupal_mysql/cache_block.rb
229
+ - examples/generated/drupal_mysql/cache_filter.rb
230
+ - examples/generated/drupal_mysql/cache_form.rb
231
+ - examples/generated/drupal_mysql/cache_menu.rb
232
+ - examples/generated/drupal_mysql/cache_page.rb
233
+ - examples/generated/drupal_mysql/cache_update.rb
234
+ - examples/generated/drupal_mysql/comment.rb
235
+ - examples/generated/drupal_mysql/factories.rb
236
+ - examples/generated/drupal_mysql/filter.rb
237
+ - examples/generated/drupal_mysql/filter_format.rb
238
+ - examples/generated/drupal_mysql/flood.rb
239
+ - examples/generated/drupal_mysql/history.rb
240
+ - examples/generated/drupal_mysql/menu_custom.rb
241
+ - examples/generated/drupal_mysql/menu_link.rb
242
+ - examples/generated/drupal_mysql/menu_router.rb
243
+ - examples/generated/drupal_mysql/node.rb
244
+ - examples/generated/drupal_mysql/node_access.rb
245
+ - examples/generated/drupal_mysql/node_comment_statistic.rb
246
+ - examples/generated/drupal_mysql/node_counter.rb
247
+ - examples/generated/drupal_mysql/node_revision.rb
248
+ - examples/generated/drupal_mysql/node_type.rb
249
+ - examples/generated/drupal_mysql/permission.rb
250
+ - examples/generated/drupal_mysql/role.rb
251
+ - examples/generated/drupal_mysql/session.rb
252
+ - examples/generated/drupal_mysql/system.rb
253
+ - examples/generated/drupal_mysql/term_data.rb
254
+ - examples/generated/drupal_mysql/term_hierarchy.rb
255
+ - examples/generated/drupal_mysql/term_node.rb
256
+ - examples/generated/drupal_mysql/term_relation.rb
257
+ - examples/generated/drupal_mysql/term_synonym.rb
258
+ - examples/generated/drupal_mysql/uploaded_files.rb
259
+ - examples/generated/drupal_mysql/url_alias.rb
260
+ - examples/generated/drupal_mysql/user.rb
261
+ - examples/generated/drupal_mysql/users_role.rb
262
+ - examples/generated/drupal_mysql/variable.rb
263
+ - examples/generated/drupal_mysql/vocabulary.rb
264
+ - examples/generated/drupal_mysql/vocabulary_node_type.rb
265
+ - examples/generated/drupal_mysql/watchdog.rb
266
+ - examples/generated/j2ee_petstore_mysql/address.rb
267
+ - examples/generated/j2ee_petstore_mysql/category.rb
268
+ - examples/generated/j2ee_petstore_mysql/factories.rb
269
+ - examples/generated/j2ee_petstore_mysql/id_gen.rb
270
+ - examples/generated/j2ee_petstore_mysql/item.rb
271
+ - examples/generated/j2ee_petstore_mysql/product.rb
272
+ - examples/generated/j2ee_petstore_mysql/seller_contact_info.rb
273
+ - examples/generated/j2ee_petstore_mysql/tag.rb
274
+ - examples/generated/j2ee_petstore_mysql/tag_item.rb
275
+ - examples/generated/j2ee_petstore_mysql/ziplocation.rb
276
+ - examples/generated/j2ee_petstore_oracle/address.rb
277
+ - examples/generated/j2ee_petstore_oracle/category.rb
278
+ - examples/generated/j2ee_petstore_oracle/factories.rb
279
+ - examples/generated/j2ee_petstore_oracle/id_gen.rb
280
+ - examples/generated/j2ee_petstore_oracle/item.rb
281
+ - examples/generated/j2ee_petstore_oracle/product.rb
282
+ - examples/generated/j2ee_petstore_oracle/sellercontactinfo.rb
283
+ - examples/generated/j2ee_petstore_oracle/tag.rb
284
+ - examples/generated/j2ee_petstore_oracle/ziplocation.rb
285
+ - examples/generated/j2ee_petstore_sqlite3/address.rb
286
+ - examples/generated/j2ee_petstore_sqlite3/category.rb
287
+ - examples/generated/j2ee_petstore_sqlite3/factories.rb
288
+ - examples/generated/j2ee_petstore_sqlite3/id_gen.rb
289
+ - examples/generated/j2ee_petstore_sqlite3/item.rb
290
+ - examples/generated/j2ee_petstore_sqlite3/product.rb
291
+ - examples/generated/j2ee_petstore_sqlite3/seller_contact_info.rb
292
+ - examples/generated/j2ee_petstore_sqlite3/tag.rb
293
+ - examples/generated/j2ee_petstore_sqlite3/tag_item.rb
294
+ - examples/generated/j2ee_petstore_sqlite3/ziplocation.rb