rmre 0.0.2 → 0.0.3

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.
data/.gitignore CHANGED
@@ -1 +1,2 @@
1
1
  *.gem
2
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in rmre_tst.gemspec
4
+ gemspec
@@ -0,0 +1,45 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ rmre (0.0.2)
5
+ activerecord (>= 3.0.0)
6
+ erubis (~> 2.6.6)
7
+
8
+ GEM
9
+ remote: http://rubygems.org/
10
+ specs:
11
+ abstract (1.0.0)
12
+ activemodel (3.2.1)
13
+ activesupport (= 3.2.1)
14
+ builder (~> 3.0.0)
15
+ activerecord (3.2.1)
16
+ activemodel (= 3.2.1)
17
+ activesupport (= 3.2.1)
18
+ arel (~> 3.0.0)
19
+ tzinfo (~> 0.3.29)
20
+ activesupport (3.2.1)
21
+ i18n (~> 0.6)
22
+ multi_json (~> 1.0)
23
+ arel (3.0.0)
24
+ builder (3.0.0)
25
+ diff-lcs (1.1.3)
26
+ erubis (2.6.6)
27
+ abstract (>= 1.0.0)
28
+ i18n (0.6.0)
29
+ multi_json (1.1.0)
30
+ rspec (2.8.0)
31
+ rspec-core (~> 2.8.0)
32
+ rspec-expectations (~> 2.8.0)
33
+ rspec-mocks (~> 2.8.0)
34
+ rspec-core (2.8.0)
35
+ rspec-expectations (2.8.0)
36
+ diff-lcs (~> 1.1.2)
37
+ rspec-mocks (2.8.0)
38
+ tzinfo (0.3.31)
39
+
40
+ PLATFORMS
41
+ ruby
42
+
43
+ DEPENDENCIES
44
+ rmre!
45
+ rspec
@@ -6,6 +6,12 @@ key if tables and columns naming doesn't follow Rails convention. It also tries
6
6
  all foreign keys data from a database if DBE is MySql, PostgreSQL, Oracle or MS SQL and
7
7
  sets models relationships on a basic level through belongs_to and has_many declarations.
8
8
 
9
+ = Installation
10
+
11
+ Rmre gem is on the Rubygems and you can install it with
12
+
13
+ gem install rmre
14
+
9
15
  = How to use
10
16
 
11
17
  Rmre is very simple to use:
@@ -51,6 +57,12 @@ it mathes whether name of the table starts with passed patterns:
51
57
 
52
58
  with create models only for tables names with prefixes ec_ or vi_.
53
59
 
60
+ == Test databases
61
+
62
+ If you want to try *Rmre* and you do not have sample database you can use
63
+ _Sakila_ at http://dev.mysql.com/doc/sakila/en/sakila.html#sakila-installation for MySQL and
64
+ _Pagila_ at http://pgfoundry.org/projects/dbsamples for PostgreSQL.
65
+
54
66
  = TODO
55
67
 
56
68
  * Improve filtering
@@ -0,0 +1,9 @@
1
+ require "bundler"
2
+ require "rspec/core/rake_task"
3
+
4
+ Bundler::GemHelper.install_tasks
5
+
6
+ RSpec::Core::RakeTask.new do |t|
7
+ t.rspec_opts = ["--color"]
8
+ end
9
+
data/bin/rmre CHANGED
@@ -1,21 +1,30 @@
1
1
  #!/usr/bin/env ruby
2
2
  $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
3
- require 'optparse'
4
- require 'rmre'
3
+
4
+ require "yaml"
5
+ require "optparse"
6
+ require "erubis"
7
+ require "rmre"
5
8
 
6
9
  options = {:db => {}}
7
10
  optparse = OptionParser.new do |opts|
11
+ opts.banner = "Usage: rmre -a ADAPTER -d DATABASE [options]"
12
+
8
13
  opts.on('-h', '--help', 'Display this screen') do
9
14
  puts opts
10
15
  exit
11
16
  end
12
17
 
13
- options[:db][:adapter] = 'sqlite3'
14
- opts.on('-a', '--adapter [ADAPTER]', 'ActiveRecord adapter to use (default SQLite3)') do |a|
18
+ opts.on('-f', '--file [FILE]',
19
+ 'Without file name creates settings and models loading RMRE files; otherwise loads settings from file') do |f|
20
+ options[:file] = f.nil? ? true : f
21
+ end
22
+
23
+ opts.on('-a', '--adapter ADAPTER', 'ActiveRecord adapter to use') do |a|
15
24
  options[:db][:adapter] = a
16
25
  end
17
26
 
18
- opts.on('-d', '--database DATABASE', 'Name of database') do |d|
27
+ opts.on('-d', '--database DATABASE', 'Database name') do |d|
19
28
  options[:db][:database] = d
20
29
  end
21
30
 
@@ -29,6 +38,16 @@ optparse = OptionParser.new do |opts|
29
38
  options[:db][:password] = p
30
39
  end
31
40
 
41
+ options[:db][:port] = nil
42
+ opts.on('--port [PORT]', 'Port to use for database connection') do |p|
43
+ options[:db][:port] = p
44
+ end
45
+
46
+ options[:db][:timeout] = 5000
47
+ opts.on('-t', '--timeout [TIMEOUT]', 'Database connection timeout') do |t|
48
+ options[:db][:timeout] = t
49
+ end
50
+
32
51
  opts.on('-m', '--mode [MODE]', 'MS SQL conenction mode (ODBC only)') do |m|
33
52
  options[:db][:mode] = m
34
53
  end
@@ -36,23 +55,82 @@ optparse = OptionParser.new do |opts|
36
55
  opts.on('-n', '--dsn [DSN]', 'ODBC DSN name (MS SQL only)') do |n|
37
56
  options[:db][:dsn] = n
38
57
  end
39
-
58
+
40
59
  options[:out_path] = File.expand_path(File.join(Dir.tmpdir, "rmre_models"))
41
60
  opts.on('-o', '--out [PATH]', 'Path where models will be generated (default <TMP>/rmre_models)') do |p|
61
+ p.tr!(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
42
62
  options[:out_path] = p
43
63
  end
44
64
 
45
65
  opts.on('-s', '--host [HOST]', 'IP address or name of the host') do |s|
46
66
  options[:db][:host] = s
47
67
  end
48
-
68
+
49
69
  opts.on('-i', '--include pattern1,pattern2', Array, 'Include prefixes') do |i|
50
70
  options[:include] = i
51
71
  end
72
+
73
+ opts.on('-v', '--version', "Prints gem version") do |v|
74
+ puts "Rmre version #{Rmre::VERSION}"
75
+ exit
76
+ end
77
+
78
+ opts.on('--dump-schema [FILE]', 'Create schema migration to FILE') do |ds_file|
79
+ options[:dump_schema] = ds_file
80
+ end
81
+ end
82
+
83
+ begin
84
+ optparse.parse!
85
+ rescue OptionParser::ParseError => pe
86
+ puts pe.message
87
+ puts optparse
88
+ exit
52
89
  end
53
90
 
54
- optparse.parse!
91
+ if options[:file] == true
92
+ options[:db].merge!(:adapter=>'adapter_name',:database=>'db_name') if options[:db][:adapter].nil?
93
+ options.delete(:file)
94
+ file_name = 'rmre_db'
95
+ file_path = File.join(options[:out_path], "#{file_name}.yml")
96
+ puts "Generating file #{file_path}..."
97
+ FileUtils.mkdir_p options[:out_path] unless File.exist? options[:out_path]
98
+ File.open(file_path, "w") do |file|
99
+ file.print options.to_yaml
100
+ end
101
+
102
+ file_path = File.join(options[:out_path], "#{file_name}.rb")
103
+ puts "Generating file #{file_path}..."
104
+ File.open(file_path, "w") do |file|
105
+ eruby = Erubis::Eruby.new(File.read(File.join(File.expand_path("../../lib/rmre", __FILE__), 'load_file.eruby')))
106
+ file.write eruby.result(:out_path => options[:out_path],
107
+ :file_name => "#{file_name}")
108
+ end
109
+ else
110
+ options = YAML.load_file(options[:file]) if options[:file] && File.exists?(options[:file])
55
111
 
56
- generator = Rmre::Generator.new(options[:db], options[:out_path], options[:include])
57
- generator.connect
58
- generator.create_models(generator.connection.tables)
112
+ unless options[:db][:adapter]
113
+ puts "Missing required arguments -a (--adapter) and -d (--database)"
114
+ puts optparse
115
+ exit
116
+ end
117
+
118
+ generator = Rmre::Generator.new(options[:db], options[:out_path], options[:include])
119
+
120
+ begin
121
+ generator.connect
122
+ rescue Exception => e
123
+ puts e.message
124
+ exit
125
+ end
126
+
127
+ if options[:dump_schema]
128
+ puts "Dumping schema to #{options[:dump_schema]}..."
129
+ File.open(options[:dump_schema], 'w') do |file|
130
+ generator.dump_schema(file)
131
+ end
132
+ else
133
+ puts "Generating models..."
134
+ generator.create_models(generator.connection.tables)
135
+ end
136
+ end
@@ -1 +1,2 @@
1
1
  require 'rmre/generator'
2
+ require 'rmre/version'
@@ -0,0 +1,27 @@
1
+ require "active_record"
2
+ require "active_record/base"
3
+ require "active_record/schema_dumper"
4
+
5
+ module ActiveRecord
6
+ class SchemaDumper
7
+ def self.dump_with_fk(connection=ActiveRecord::Base.connection, foreign_keys=[], stream=STDOUT)
8
+ new(connection).dump_with_fk(foreign_keys, stream)
9
+ stream
10
+ end
11
+
12
+ def dump_with_fk(foreign_keys, stream)
13
+ header(stream)
14
+ tables(stream)
15
+
16
+ foreign_keys.each do |fk|
17
+ stream.puts <<-SQL
18
+ execute "ALTER TABLE #{fk['from_table']} ADD CONSTRAINT fk_#{fk['from_table']}_#{fk['to_table']}
19
+ FOREIGN KEY (#{fk['from_column']}) REFERENCES #{fk['to_table']}(#{fk['to_column']})"
20
+ SQL
21
+ end
22
+
23
+ trailer(stream)
24
+ stream
25
+ end
26
+ end
27
+ end
@@ -1,6 +1,7 @@
1
1
  require "tmpdir"
2
2
  require "fileutils"
3
- require "active_record"
3
+ require "erubis"
4
+ require "rmre/active_record/schema_dumper"
4
5
 
5
6
  module Rmre
6
7
  class Generator
@@ -8,7 +9,7 @@ module Rmre
8
9
  attr_reader :output_path
9
10
 
10
11
  SETTINGS_ROOT = File.expand_path('../../../../db', __FILE__)
11
-
12
+
12
13
  def initialize(options, out_path, include)
13
14
  @connection_options = options
14
15
  @connection = nil
@@ -18,37 +19,41 @@ module Rmre
18
19
 
19
20
  def connect
20
21
  return if @connection_options.empty?
21
-
22
+
22
23
  ActiveRecord::Base.establish_connection(@connection_options)
23
24
  @connection = ActiveRecord::Base.connection
24
25
  end
25
26
 
26
27
  def create_models(tables)
27
28
  return unless tables.is_a? Array
28
-
29
+
29
30
  FileUtils.mkdir_p(@output_path) if !Dir.exists?(@output_path)
30
31
 
31
32
  tables.each do |table_name|
32
33
  create_model(table_name) if process?(table_name)
33
34
  end
34
35
  end
35
-
36
+
37
+ def dump_schema(stream)
38
+ ActiveRecord::SchemaDumper.dump_with_fk(connection, foreign_keys, stream)
39
+ end
40
+
36
41
  def create_model(table_name)
37
- File.open(File.join(output_path, "#{table_name}.rb"), "w") do |file|
42
+ File.open(File.join(output_path, "#{table_name.tableize.singularize}.rb"), "w") do |file|
38
43
  constraints = []
39
44
 
40
45
  foreign_keys.each do |fk|
41
46
  src = constraint_src(table_name, fk)
42
47
  constraints << src unless src.nil?
43
48
  end
44
-
49
+
45
50
  file.write generate_model_source(table_name, constraints)
46
51
  end
47
52
  end
48
53
 
49
54
  def process?(table_name)
50
55
  return true if @include_prefixes.nil? || @include_prefixes.empty?
51
-
56
+
52
57
  @include_prefixes.each do |prefix|
53
58
  return true if table_name =~ /^#{prefix}/
54
59
  end
@@ -79,22 +84,21 @@ module Rmre
79
84
  def constraint_src(table_name, fk={})
80
85
  src = nil
81
86
  if fk['from_table'] == table_name
82
- src = "belongs_to :#{fk['to_table']}, :class_name => '#{fk['to_table'].classify}', :foreign_key => :#{fk['from_column']}"
87
+ src = "belongs_to :#{fk['to_table'].downcase}, :class_name => '#{fk['to_table'].tableize.classify}', :foreign_key => :#{fk['from_column']}"
83
88
  elsif fk['to_table'] == table_name
84
- src = "has_many :#{fk['from_table'].pluralize}, :class_name => '#{fk['from_table'].classify}'"
89
+ src = "has_many :#{fk['from_table'].downcase.pluralize}, :class_name => '#{fk['from_table'].tableize.classify}'"
85
90
  end
86
91
  src
87
92
  end
88
-
93
+
89
94
  def generate_model_source(table_name, constraints)
90
- src = "class #{table_name.classify} < ActiveRecord::Base\n"
91
- primary_key = connection.primary_key(table_name)
92
- src << " set_primary_key :#{primary_key}\n" unless "id" == primary_key || primary_key.nil?
93
- src << " set_table_name '#{table_name}'\n" unless table_name == table_name.classify.tableize
94
- src << " #{constraints.join("\n ")}"
95
- src << "\nend\n"
95
+ eruby = Erubis::Eruby.new(File.read(File.join(File.expand_path("../", __FILE__), 'model.eruby')))
96
+ eruby.result(:table_name => table_name,
97
+ :primary_key => connection.primary_key(table_name),
98
+ :constraints => constraints,
99
+ :has_type_column => connection.columns(table_name).find { |col| col.name == 'type' })
96
100
  end
97
-
101
+
98
102
  def mysql_foreign_keys
99
103
  sql = <<-SQL
100
104
  select
@@ -117,16 +121,16 @@ SELECT tc.table_name as from_table,
117
121
  ccu.table_name AS to_table,
118
122
  ccu.column_name AS to_column
119
123
  FROM information_schema.table_constraints tc
120
- LEFT JOIN information_schema.key_column_usage kcu
124
+ LEFT JOIN information_schema.key_column_usage kcu
121
125
  ON tc.constraint_catalog = kcu.constraint_catalog
122
126
  AND tc.constraint_schema = kcu.constraint_schema
123
127
  AND tc.constraint_name = kcu.constraint_name
124
-
125
- LEFT JOIN information_schema.referential_constraints rc
128
+
129
+ LEFT JOIN information_schema.referential_constraints rc
126
130
  ON tc.constraint_catalog = rc.constraint_catalog
127
131
  AND tc.constraint_schema = rc.constraint_schema
128
132
  AND tc.constraint_name = rc.constraint_name
129
- LEFT JOIN information_schema.constraint_column_usage ccu
133
+ LEFT JOIN information_schema.constraint_column_usage ccu
130
134
  ON rc.unique_constraint_catalog = ccu.constraint_catalog
131
135
  AND rc.unique_constraint_schema = ccu.constraint_schema
132
136
  AND rc.unique_constraint_name = ccu.constraint_name
@@ -138,25 +142,25 @@ SQL
138
142
 
139
143
  def mssql_foreign_keys
140
144
  sql = <<-SQL
141
- SELECT C.TABLE_NAME [from_table],
142
- KCU.COLUMN_NAME [from_column],
143
- C2.TABLE_NAME [to_table],
145
+ SELECT C.TABLE_NAME [from_table],
146
+ KCU.COLUMN_NAME [from_column],
147
+ C2.TABLE_NAME [to_table],
144
148
  KCU2.COLUMN_NAME [to_column]
145
- FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS C
146
- INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU
147
- ON C.CONSTRAINT_SCHEMA = KCU.CONSTRAINT_SCHEMA
148
- AND C.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME
149
- INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC
150
- ON C.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA
151
- AND C.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
152
- INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS C2
153
- ON RC.UNIQUE_CONSTRAINT_SCHEMA = C2.CONSTRAINT_SCHEMA
154
- AND RC.UNIQUE_CONSTRAINT_NAME = C2.CONSTRAINT_NAME
155
- INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2
156
- ON C2.CONSTRAINT_SCHEMA = KCU2.CONSTRAINT_SCHEMA
157
- AND C2.CONSTRAINT_NAME = KCU2.CONSTRAINT_NAME
158
- AND KCU.ORDINAL_POSITION = KCU2.ORDINAL_POSITION
159
- WHERE C.CONSTRAINT_TYPE = 'FOREIGN KEY'
149
+ FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS C
150
+ INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU
151
+ ON C.CONSTRAINT_SCHEMA = KCU.CONSTRAINT_SCHEMA
152
+ AND C.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME
153
+ INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC
154
+ ON C.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA
155
+ AND C.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
156
+ INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS C2
157
+ ON RC.UNIQUE_CONSTRAINT_SCHEMA = C2.CONSTRAINT_SCHEMA
158
+ AND RC.UNIQUE_CONSTRAINT_NAME = C2.CONSTRAINT_NAME
159
+ INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2
160
+ ON C2.CONSTRAINT_SCHEMA = KCU2.CONSTRAINT_SCHEMA
161
+ AND C2.CONSTRAINT_NAME = KCU2.CONSTRAINT_NAME
162
+ AND KCU.ORDINAL_POSITION = KCU2.ORDINAL_POSITION
163
+ WHERE C.CONSTRAINT_TYPE = 'FOREIGN KEY'
160
164
  SQL
161
165
  connection.select_all(sql)
162
166
  end
@@ -166,9 +170,9 @@ SQL
166
170
  connection.tables.each do |table|
167
171
  connection.foreign_keys(table).each do |oracle_fk|
168
172
  table_fk = { 'from_table' => oracle_fk.from_table,
169
- 'from_column' => oracle_fk.options[:column],
173
+ 'from_column' => oracle_fk.options[:columns][0],
170
174
  'to_table' => oracle_fk.to_table,
171
- 'to_column' => oracle_fk.options[:primary_key] }
175
+ 'to_column' => oracle_fk.options[:references][0] }
172
176
  fk << table_fk
173
177
  end
174
178
  end
@@ -0,0 +1,14 @@
1
+ require "yaml"
2
+ require "active_record"
3
+
4
+ <%= "dir = File.join('#{out_path}', '*.rb')" %>
5
+ Dir.glob(dir) { |file| require file }
6
+
7
+ def connect
8
+ <%= "settings_file = './#{file_name}.yml'" %>
9
+ exit unless File.exists?(settings_file)
10
+ settings = YAML.load_file(settings_file)
11
+ ActiveRecord::Base.establish_connection(settings[:db])
12
+ ActiveRecord::Base.connection
13
+ end
14
+
@@ -0,0 +1,17 @@
1
+ class <%= table_name.tableize.classify %> < ActiveRecord::Base
2
+ <% unless table_name == table_name.tableize %>
3
+ <%= "set_table_name '#{table_name}'" -%>
4
+ <% end %>
5
+
6
+ <% unless "id" == primary_key || primary_key.nil? %>
7
+ <%= "set_primary_key :#{primary_key}" -%>
8
+ <% end %>
9
+
10
+ <% if has_type_column %>
11
+ <%= "set_inheritance_column :ruby_type" -%>
12
+ <% end %>
13
+
14
+ <% constraints.each do |constraint| %>
15
+ <%= constraint -%>
16
+ <% end %>
17
+ end
@@ -1,3 +1,3 @@
1
1
  module Rmre
2
- VERSION = "0.0.2" unless defined?(::Rmre::VERSION)
2
+ VERSION = "0.0.3" unless defined?(::Rmre::VERSION)
3
3
  end
@@ -17,6 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.rubyforge_project = "rmre"
18
18
 
19
19
  s.add_dependency "activerecord", ">= 3.0.0"
20
+ s.add_dependency "erubis", "~> 2.6.6"
20
21
  s.add_development_dependency "rspec"
21
22
 
22
23
  s.files = `git ls-files`.split("\n")
@@ -7,21 +7,28 @@ module Rmre
7
7
  :database => 'db',
8
8
  :username => 'user',
9
9
  :password => 'pass'},
10
- :out_path => '/tmp/gne-test',
10
+ :out_path => File.join(Dir.tmpdir, 'gne-test'),
11
11
  :include => ['incl1_', 'incl2_']}
12
12
  end
13
+
14
+ let(:generator) do |gen|
15
+ gen = Generator.new(settings[:db], settings[:out_path], settings[:include])
16
+ connection = double("db_connection")
17
+ connection.stub(:columns).and_return([])
18
+ gen.stub(:connection).and_return(connection)
19
+ gen
20
+ end
13
21
 
14
- let(:generator) { Generator.new(settings[:db], settings[:out_path], settings[:include]) }
15
22
  let(:tables) { %w(incl1_tbl1 incl1_tbl2 incl2_tbl1 user processes) }
16
-
17
- it "should flag table inv_plan for processing" do
23
+
24
+ it "should flag table incl1_tbl1 for processing" do
18
25
  generator.process?('incl1_tbl1').should be_true
19
26
  end
20
27
 
21
- it "should not flag table shkprocesses for processing" do
28
+ it "should not flag table 'processes' for processing" do
22
29
  generator.process?('processes').should be_false
23
30
  end
24
-
31
+
25
32
  it "should process three tables from the passed array of tables" do
26
33
  generator.stub(:create_model)
27
34
 
@@ -33,12 +40,37 @@ module Rmre
33
40
  generator.stub_chain(:connection, :primary_key).and_return("id")
34
41
  generator.send(:generate_model_source, 'incl1_tbl1', []).should match(/set_table_name \'incl1_tbl1\'/)
35
42
  end
36
-
43
+
37
44
  it "should create three model files" do
38
45
  generator.stub_chain(:connection, :primary_key).and_return("id")
39
46
  generator.stub(:foreign_keys).and_return([])
40
47
  generator.create_models(tables)
41
48
  Dir.glob(File.join(generator.output_path, "*.rb")).should have(3).items
42
49
  end
50
+
51
+ it "should create prettified file names" do
52
+ file = double("model_file")
53
+ file.stub(:write)
54
+
55
+ generator.connection.stub(:primary_key).and_return('')
56
+
57
+ File.stub(:open).and_yield(file)
58
+ File.should_receive(:open).with(/tbl_user/, "w")
59
+ file.should_receive(:write).with(/class TblUser/)
60
+
61
+ generator.create_model("TBL_USERS")
62
+ end
63
+
64
+ it "should set primary key if PK column is not id" do
65
+ file = double("model_file")
66
+ file.stub(:write)
67
+
68
+ generator.connection.stub(:primary_key).and_return("usr_id")
69
+
70
+ File.stub(:open).and_yield(file)
71
+ file.should_receive(:write).with(/set_primary_key :usr_id/)
72
+
73
+ generator.create_model("users")
74
+ end
43
75
  end
44
76
  end
metadata CHANGED
@@ -1,107 +1,102 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rmre
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 2
9
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Bosko Ivanisevic
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2010-10-01 00:00:00 +02:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-02-19 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: activerecord
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &20264180 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 3
30
- - 0
31
- - 0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
32
21
  version: 3.0.0
33
22
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: rspec
37
23
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *20264180
25
+ - !ruby/object:Gem::Dependency
26
+ name: erubis
27
+ requirement: &20263340 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 2.6.6
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *20263340
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &20262920 !ruby/object:Gem::Requirement
39
39
  none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- segments:
44
- - 0
45
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
46
44
  type: :development
47
- version_requirements: *id002
48
- description: Rmre creates ActiveRecord models for legacy database with all constraints found.
49
- email:
45
+ prerelease: false
46
+ version_requirements: *20262920
47
+ description: Rmre creates ActiveRecord models for legacy database with all constraints
48
+ found.
49
+ email:
50
50
  - bosko.ivanisevic@gmail.com
51
- executables:
51
+ executables:
52
52
  - rmre
53
53
  extensions: []
54
-
55
- extra_rdoc_files:
54
+ extra_rdoc_files:
56
55
  - README.rdoc
57
56
  - LICENSE.txt
58
- files:
57
+ files:
59
58
  - .gitignore
59
+ - Gemfile
60
+ - Gemfile.lock
60
61
  - LICENSE.txt
61
62
  - README.rdoc
63
+ - Rakefile
62
64
  - bin/rmre
63
65
  - lib/rmre.rb
66
+ - lib/rmre/active_record/schema_dumper.rb
64
67
  - lib/rmre/generator.rb
68
+ - lib/rmre/load_file.eruby
69
+ - lib/rmre/model.eruby
65
70
  - lib/rmre/version.rb
66
71
  - rmre.gemspec
67
72
  - spec/rmre/generator_spec.rb
68
73
  - spec/spec_helper.rb
69
- has_rdoc: true
70
74
  homepage: http://github.com/bosko/rmre
71
75
  licenses: []
72
-
73
76
  post_install_message:
74
- rdoc_options:
77
+ rdoc_options:
75
78
  - --title
76
79
  - Rmre -- Rails Models Reverse Engineering
77
80
  - --main
78
81
  - README.rdoc
79
- require_paths:
82
+ require_paths:
80
83
  - lib
81
- required_ruby_version: !ruby/object:Gem::Requirement
84
+ required_ruby_version: !ruby/object:Gem::Requirement
82
85
  none: false
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- segments:
87
- - 0
88
- version: "0"
89
- required_rubygems_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
91
  none: false
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- segments:
95
- - 1
96
- - 3
97
- - 6
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
98
95
  version: 1.3.6
99
96
  requirements: []
100
-
101
97
  rubyforge_project: rmre
102
- rubygems_version: 1.3.7
98
+ rubygems_version: 1.8.10
103
99
  signing_key:
104
100
  specification_version: 3
105
101
  summary: The easiest way to create ActiveRecord models for legacy database
106
102
  test_files: []
107
-