rails_reverse_db 0.0.1.alpha → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,4 +1,32 @@
1
- Gem for reverse engineering a mysql or sqlite database
1
+ # Rails Reverse Db [![Build Status](https://secure.travis-ci.org/cmckni3/rails_reverse_db.png)](http://travis-ci.org/cmckni3/rails_reverse_db) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/cmckni3/rails_reverse_db)
2
+
3
+ Gem for reverse engineering an existing database using ActiveRecord
2
4
 
3
5
  Runs the rails scaffolding command with the appropriate arguments
4
- to generate models, controllers, tests, etc from an existing database
6
+ to generate models, controllers, tests, etc from an existing database
7
+
8
+ ## Installation
9
+
10
+ gem 'rails_reverse_db'
11
+
12
+ ## Usage
13
+
14
+ `bundle exec rake reverse_engineer OPTIONS` OR `rake reverse_engineer OPTIONS`
15
+
16
+ By default this will run `rails generate scaffold TableName column:string`
17
+
18
+ ## Copyright
19
+
20
+ Copyright (c) 2012-2013 Chris McKnight and [Anthony Heukmes](https://github.com/ahe/) (2009-2013). Licensed under the MIT License
21
+
22
+ ## Contributing
23
+
24
+ 1. Fork it
25
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
26
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
27
+ 4. Push to the branch (`git push origin my-new-feature`)
28
+ 5. Create new Pull Request
29
+
30
+ ## Thanks
31
+
32
+ Inspired by and uses a little modified code from [Anthony Heukmes](https://github.com/ahe/) [Reverse Scaffold Script](https://github.com/ahe/reverse_scaffold)
data/README.rdoc CHANGED
@@ -1,3 +1,33 @@
1
- = RailsReverseDb
1
+ = Rails Reverse Db {<img src="https://secure.travis-ci.org/cmckni3/rails_reverse_db.png" />}[https://secure.travis-ci.org/cmckni3/rails_reverse_db]]
2
+ {<img src="https://codeclimate.com/badge.png" />}[https://codeclimate.com/github/cmckni3/rails_reverse_db]
2
3
 
3
- This project rocks and uses MIT-LICENSE.
4
+ Gem for reverse engineering an existing database using ActiveRecord
5
+
6
+ Runs the rails scaffolding command with the appropriate arguments
7
+ to generate models, controllers, tests, etc from an existing database
8
+
9
+ == Installation
10
+
11
+ gem 'rails_reverse_db'
12
+
13
+ == Usage
14
+
15
+ `bundle exec rake reverse_engineer OPTIONS` OR `rake reverse_engineer OPTIONS`
16
+
17
+ By default this will run `rails generate scaffold TableName column:string`
18
+
19
+ == Copyright
20
+
21
+ Copyright (c) 2012-2013 Chris McKnight and [Anthony Heukmes](https://github.com/ahe/) (2009-2013). Licensed under the MIT License
22
+
23
+ == Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
30
+
31
+ == Thanks
32
+
33
+ Inspired by and uses a little modified code from [Anthony Heukmes](https://github.com/ahe/) [Reverse Scaffold Script](https://github.com/ahe/reverse_scaffold)
@@ -1,34 +1,31 @@
1
1
  require 'rails_reverse_db/rails_reverse_db_helper'
2
2
 
3
3
  module RailsReverseDb
4
- require 'rails_reverse_db/railtie.rb' if defined?(Rails)
4
+ raise "This gem must be run from a Rails Application" if not defined?(Rails)
5
+ require 'rails_reverse_db/railtie.rb'
5
6
  class RailsReverseDb
6
7
 
7
8
  delegate :connection, :establish_connection, to: ActiveRecord::Base
8
9
 
9
- def initialize
10
+ def initialize(options = {})
11
+ @pk = options[:pk] || 'id'
12
+ @models = options[:models] || false
13
+ @exclude = options[:exclude] || false
14
+ @interactive = options[:i] || false
10
15
  environments = [Rails.env]
11
16
 
12
17
  configurations = ActiveRecord::Base.configurations.values_at(*environments)
13
18
  @configuration = configurations.first
14
- @pk = 'id'
15
19
  establish_connection @configuration
16
-
17
- # configurations = ActiveRecord::Base.configurations.values_at(*environments)
18
- # configurations.compact.each do |configuration|
19
- # yield configuration unless configuration['database'].blank?
20
- # end
21
20
  end
22
21
 
23
22
  def get_tables
24
- tables = ActiveRecord::Base.connection.execute("SHOW TABLES")
25
- tables = tables.to_a.map(&:join)
26
- tables.each do |table|
27
- end
28
- tables
23
+ tables = ActiveRecord::Base.connection.tables
24
+ # remove some tables that are used for migrations
25
+ tables - ["schema_migrations", "propel_migration", "migration_version"]
29
26
  end
30
27
 
31
- def run
28
+ def generate
32
29
  tables = self.get_tables
33
30
  tables.each do |table|
34
31
  if RailsReverseDbHelper::RailsReverseDbHelper.test_singularity(table)
@@ -44,13 +41,15 @@ module RailsReverseDb
44
41
  singular = RailsReverseDbHelper::RailsReverseDbHelper.ucwords(singular)
45
42
  singular.gsub!(' ', '')
46
43
 
44
+ # Credit to Anthony Heukmes for the next few lines
45
+ # Modified to work with my gem
47
46
  eval "class #{singular} < ActiveRecord::Base; set_table_name '#{table}' end"
48
47
  klass = eval "#{singular}"
49
48
  reverse_command = "rails generate scaffold #{singular} "
50
49
  klass.columns.each do |col|
51
50
  reverse_command << col.name + ":" + col.type.to_s + " " unless col.name == @pk
52
51
  end
53
- # system reverse_command + opts.skip_migration
52
+ system reverse_command
54
53
  end
55
54
  end
56
55
  end
@@ -1,9 +1,30 @@
1
1
  require 'rails_reverse_db/rails_reverse_db_helper'
2
2
 
3
- namespace :rails_reverse_db do
4
- desc "Generate scaffolding from tables in database"
5
- task :scaffold => :environment do
6
- g = RailsReverseDb::RailsReverseDb.new
7
- g.run
3
+ desc "Generate migrations, models, or scaffold from tables in database"
4
+ task :reverse_engineer => :environment do
5
+ options = { }
6
+ options[:pk] ||= ENV['pk']
7
+ options[:models] = ENV['models'] || []
8
+ options[:exclude] = ENV['exclude'] || []
9
+ options[:i] ||= ENV['i']
10
+
11
+ if (!options[:models].empty?) and (!options[:exclude].empty?)
12
+ raise "The models and exclude arguments should not be used in conjunction with each other. Use one or the other."
13
+ end
14
+
15
+ g = RailsReverseDb::RailsReverseDb.new(options)
16
+ g.generate
17
+ end
18
+
19
+ namespace :reverse_engineer do
20
+ desc "Reverse Engineer Help"
21
+ task :help => :environment do
22
+ puts "Run rake reverse_engineer to "
23
+ # File.read('docs/help.txt')
24
+ end
25
+
26
+ desc "Reverse Engineer Version"
27
+ task :version => :environment do
28
+ puts RailsReverseDb::VERSION
8
29
  end
9
30
  end
@@ -1,3 +1,3 @@
1
1
  module RailsReverseDb
2
- VERSION = "0.0.1.alpha"
2
+ VERSION = "0.0.5"
3
3
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_reverse_db
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.alpha
5
- prerelease: 6
4
+ version: 0.0.5
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Chris McKnight
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-03 00:00:00.000000000 Z
12
+ date: 2013-01-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 3.2.6
21
+ version: 3.2.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,64 +26,16 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 3.2.6
29
+ version: 3.2.0
30
30
  - !ruby/object:Gem::Dependency
31
- name: rspec-rails
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
- type: :development
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- - !ruby/object:Gem::Dependency
47
- name: capybara
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- - !ruby/object:Gem::Dependency
63
- name: guard-rspec
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- type: :development
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: guard-spork
31
+ name: sqlite3
80
32
  requirement: !ruby/object:Gem::Requirement
81
33
  none: false
82
34
  requirements:
83
35
  - - ! '>='
84
36
  - !ruby/object:Gem::Version
85
37
  version: '0'
86
- type: :development
38
+ type: :runtime
87
39
  prerelease: false
88
40
  version_requirements: !ruby/object:Gem::Requirement
89
41
  none: false
@@ -92,7 +44,7 @@ dependencies:
92
44
  - !ruby/object:Gem::Version
93
45
  version: '0'
94
46
  - !ruby/object:Gem::Dependency
95
- name: sqlite3
47
+ name: mysql2
96
48
  requirement: !ruby/object:Gem::Requirement
97
49
  none: false
98
50
  requirements:
@@ -108,7 +60,7 @@ dependencies:
108
60
  - !ruby/object:Gem::Version
109
61
  version: '0'
110
62
  - !ruby/object:Gem::Dependency
111
- name: mysql2
63
+ name: pg
112
64
  requirement: !ruby/object:Gem::Requirement
113
65
  none: false
114
66
  requirements:
@@ -170,13 +122,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
170
122
  version: '0'
171
123
  segments:
172
124
  - 0
173
- hash: 3402952440522818133
125
+ hash: -1696451438507368891
174
126
  required_rubygems_version: !ruby/object:Gem::Requirement
175
127
  none: false
176
128
  requirements:
177
- - - ! '>'
129
+ - - ! '>='
178
130
  - !ruby/object:Gem::Version
179
- version: 1.3.1
131
+ version: '0'
132
+ segments:
133
+ - 0
134
+ hash: -1696451438507368891
180
135
  requirements: []
181
136
  rubyforge_project:
182
137
  rubygems_version: 1.8.23