legacy_data 0.1.8 → 0.1.9

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.
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