oracle-model-generator 0.3.0 → 0.3.1

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/CHANGES CHANGED
@@ -1,3 +1,7 @@
1
+ = 0.3.1 - 3-Apr-2012
2
+ * Added the --class option that allows you to specify the model name on the
3
+ command line. Thanks go to Daniel Luna for the patch (plus some minor fixes).
4
+
1
5
  = 0.3.0 - 12-May-2011
2
6
  * Added automatic test generation. In addition to the active record model file,
3
7
  a test file will be generated that includes a series of stock tests that
data/README CHANGED
@@ -7,11 +7,11 @@ Using the command line tool:
7
7
 
8
8
  omg -d your_database -t locations -u some_user -p some_password
9
9
 
10
- Results in a file called "locations.rb". This is an ActiveRecord model
11
- declaration, with all validations, primary keys, table name and belongs_to
12
- relationships defined.
10
+ The above command results in a file called "location.rb". This is an
11
+ ActiveRecord model declaration, with all validations, primary keys,
12
+ table name and belongs_to relationships defined.
13
13
 
14
- If your locations table looks like this:
14
+ If your LOCATIONS table looks like this:
15
15
 
16
16
  create table locations(
17
17
  location_id number(4,0) primary key,
@@ -26,7 +26,7 @@ If your locations table looks like this:
26
26
 
27
27
  The omg library will generate this:
28
28
 
29
- class Locations < ActiveRecord::Base
29
+ class Location < ActiveRecord::Base
30
30
  set_table_name :locations
31
31
  set_primary_key :location_id
32
32
 
@@ -111,7 +111,8 @@ application.
111
111
  I also do not go out of my way to get the model name correct with regards
112
112
  to singular vs plural. I do a simple guess that covers most cases, but
113
113
  complex cases will break it. It's much easier for you to rename a class or
114
- file name than it is for me to get this 100% correct.
114
+ file name than it is for me to get this 100% correct. As of 0.3.1 there's
115
+ also the --class option that let's you eplicitly set it if you like.
115
116
 
116
117
  = Author's Comments
117
118
  I chose not to patch legacy_data because I have no interest in supporting
@@ -126,6 +127,9 @@ Add automatic test suite generation for rspec.
126
127
  Explicitly set :foreign_key if using CPK in belongs_to relationships.
127
128
  The output could use a little formatting love.
128
129
 
130
+ = Acknowlegements
131
+ Thanks go to Daniel Luna for his --class patch.
132
+
129
133
  = Known Issues
130
134
  None known. If you find any issues, please report them on the github project
131
135
  page at http://www.github.com/djberg96/oracle-model-generator.
@@ -136,7 +140,7 @@ implied warranties, including, without limitation, the implied
136
140
  warranties of merchantability and fitness for a particular purpose.
137
141
 
138
142
  = Copyright
139
- (C) 2010, 2011 Daniel J. Berger
143
+ (C) 2010-2012 Daniel J. Berger
140
144
  All Rights Reserved
141
145
 
142
146
  = License
data/bin/omg CHANGED
@@ -11,6 +11,7 @@ rescue LoadError
11
11
  end
12
12
 
13
13
  opts = Getopt::Long.getopts(
14
+
14
15
  ['--help', '-h'],
15
16
  ['--table', '-t', Getopt::REQUIRED],
16
17
  ['--view', '-v', Getopt::REQUIRED],
@@ -19,7 +20,8 @@ opts = Getopt::Long.getopts(
19
20
  ['--database', '-d', Getopt::REQUIRED],
20
21
  ['--output', '-o', Getopt::REQUIRED],
21
22
  ['--rails', '-r', Getopt::REQUIRED],
22
- ['--tests', '-x', Getopt::OPTIONAL]
23
+ ['--tests', '-x', Getopt::OPTIONAL],
24
+ ['--class', '-c', Getopt::OPTIONAL]
23
25
  )
24
26
 
25
27
  def help
@@ -35,6 +37,7 @@ def help
35
37
  -p, --password => The password used to establish a connection to the database.
36
38
  -r, --rails => The version of rails you're using (2 or 3).
37
39
  -x, --tests => Generate tests (the default).
40
+ -c, --class => Class name for the generated table (optional)
38
41
 
39
42
  If no user or password are supplied, then OMG will attempt to glean that
40
43
  information using a combination of the database name and your .dbrc file.
@@ -130,16 +133,18 @@ if rails < 2 || rails > 3
130
133
  puts "Invalid version of Rails. Specify either 2 or 3."
131
134
  exit!
132
135
  end
136
+
137
+ omg.instance_eval { @model = opts['class'] } if opts['class'] # dirty fix
133
138
 
134
139
  File.open(ofile, 'w') do |fh|
135
140
  fh.puts "class #{omg.model} < ActiveRecord::Base"
136
- fh.puts " set_table_name :#{table}"
141
+ fh.puts " set_table_name :\"#{table}\""
137
142
 
138
143
  if omg.primary_keys.size > 1
139
144
  fh.puts "\n # Requires the composite-primary-keys library"
140
145
  fh.puts " set_primary_keys " + omg.primary_keys.inspect
141
146
  else
142
- fh.puts "\n set_primary_key " + omg.primary_keys.first.to_sym.inspect
147
+ fh.puts "\n set_primary_key " + omg.primary_keys.first.to_sym.inspect unless omg.primary_keys.first.nil?
143
148
  end
144
149
 
145
150
  fh.puts "\n # Table relationships\n\n"
@@ -213,21 +218,24 @@ File.open(ofile, 'w') do |fh|
213
218
  max = "9" * col.precision
214
219
  max.insert(col.precision - col.scale, ".") if col.scale > 0
215
220
 
216
- validation = "\n validates :#{col.name.downcase}, "
221
+ validation = "\n validates :#{col.name.downcase}"
217
222
 
218
223
  unless col.nullable?
219
- validation << ":presence => #{!col.nullable?}, "
224
+ validation << ", :presence => #{!col.nullable?}"
220
225
  end
221
226
 
222
- validation << ":numericality => {"
223
- validation << "\n :less_than_or_equal_to => #{max}, "
224
- validation << "\n :greater_than_or_equal_to => -#{max}"
227
+ unless max.empty?
228
+ validation << ", :numericality => {"
229
+ validation << "\n :less_than_or_equal_to => #{max}, "
230
+ validation << "\n :greater_than_or_equal_to => -#{max}"
231
+
232
+ if col.scale == 0
233
+ validation << ",\n :only_integer => true"
234
+ end
225
235
 
226
- if col.scale == 0
227
- validation << ",\n :only_integer => true"
236
+ validation << "\n }\n\n"
228
237
  end
229
238
 
230
- validation << "\n }\n\n"
231
239
  end
232
240
 
233
241
  fh.puts " #{validation}"
@@ -4,7 +4,7 @@ module Oracle
4
4
  module Model
5
5
  class Generator
6
6
  # The version of the oracle-model-generator library
7
- VERSION = '0.3.0'
7
+ VERSION = '0.3.1'
8
8
 
9
9
  # The raw OCI8 connection.
10
10
  attr_reader :connection
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = 'oracle-model-generator'
5
- gem.version = '0.3.0'
5
+ gem.version = '0.3.1'
6
6
  gem.author = 'Daniel J. Berger'
7
7
  gem.license = 'Artistic 2.0'
8
8
  gem.email = 'djberg96@gmail.com'
@@ -20,7 +20,7 @@ class TC_Oracle_Model_Generator < Test::Unit::TestCase
20
20
  end
21
21
 
22
22
  test "version number is correct" do
23
- assert_equal('0.3.0', Oracle::Model::Generator::VERSION)
23
+ assert_equal('0.3.1', Oracle::Model::Generator::VERSION)
24
24
  end
25
25
 
26
26
  test "constructor accepts an oci8 connection object" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oracle-model-generator
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 0
10
- version: 0.3.0
9
+ - 1
10
+ version: 0.3.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Daniel J. Berger
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-12 00:00:00 -06:00
19
- default_executable:
18
+ date: 2012-04-03 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: ruby-oci8
@@ -75,16 +74,15 @@ extra_rdoc_files:
75
74
  - README
76
75
  - MANIFEST
77
76
  files:
78
- - Rakefile
79
- - README
80
- - oracle-model-generator.gemspec
77
+ - bin/omg
78
+ - CHANGES
81
79
  - lib/oracle/model/generator.rb
82
80
  - lib/oracle_model_generator.rb
83
- - CHANGES
84
- - test/test_oracle_model_generator.rb
85
81
  - MANIFEST
86
- - bin/omg
87
- has_rdoc: true
82
+ - oracle-model-generator.gemspec
83
+ - Rakefile
84
+ - README
85
+ - test/test_oracle_model_generator.rb
88
86
  homepage: http://www.github.com/djberg96/oracle-model-generator
89
87
  licenses:
90
88
  - Artistic 2.0
@@ -114,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
112
  requirements: []
115
113
 
116
114
  rubyforge_project: N/A
117
- rubygems_version: 1.6.2
115
+ rubygems_version: 1.8.10
118
116
  signing_key:
119
117
  specification_version: 3
120
118
  summary: A Ruby interface for determining protocol information