rails_reverse_db 0.0.1.alpha → 0.0.5
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/README.md +30 -2
- data/README.rdoc +32 -2
- data/lib/rails_reverse_db.rb +14 -15
- data/lib/rails_reverse_db/tasks/rails_reverse_db_tasks.rake +26 -5
- data/lib/rails_reverse_db/version.rb +1 -1
- metadata +15 -60
data/README.md
CHANGED
@@ -1,4 +1,32 @@
|
|
1
|
-
|
1
|
+
# Rails Reverse Db [](http://travis-ci.org/cmckni3/rails_reverse_db) [](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
|
-
=
|
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
|
-
|
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)
|
data/lib/rails_reverse_db.rb
CHANGED
@@ -1,34 +1,31 @@
|
|
1
1
|
require 'rails_reverse_db/rails_reverse_db_helper'
|
2
2
|
|
3
3
|
module RailsReverseDb
|
4
|
-
|
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.
|
25
|
-
tables
|
26
|
-
tables
|
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
|
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
|
-
|
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
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
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
|
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.
|
5
|
-
prerelease:
|
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:
|
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.
|
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.
|
29
|
+
version: 3.2.0
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
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: :
|
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:
|
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:
|
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:
|
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:
|
131
|
+
version: '0'
|
132
|
+
segments:
|
133
|
+
- 0
|
134
|
+
hash: -1696451438507368891
|
180
135
|
requirements: []
|
181
136
|
rubyforge_project:
|
182
137
|
rubygems_version: 1.8.23
|