rmre 0.0.2 → 0.0.3

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