rails_db_objects 0.0.4 → 0.1.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.
- checksums.yaml +4 -4
- data/Rakefile +28 -34
- data/lib/rails_db_objects/db_objects_creator.rb +231 -227
- data/lib/rails_db_objects/railtie.rb +15 -15
- data/lib/rails_db_objects/version.rb +3 -3
- data/lib/tasks/rails_db_objects_tasks.rake +45 -46
- data/test/dummy/Rakefile +6 -6
- data/test/dummy/bin/bundle +3 -3
- data/test/dummy/bin/rails +4 -4
- data/test/dummy/bin/rake +4 -4
- data/test/dummy/bin/setup +29 -29
- data/test/dummy/config/application.rb +25 -26
- data/test/dummy/config/boot.rb +5 -5
- data/test/dummy/config/environment.rb +5 -5
- data/test/rails_db_objects_test.rb +7 -7
- data/test/test_helper.rb +20 -20
- metadata +50 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 236a510b06b887a06f6b4ea958ed92cfb183d401
|
4
|
+
data.tar.gz: 7af1e835809cf8108a8b93a743ae8cbca821cb28
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8749705009d45ebd899118e3f803587f6061df240dd1508054a9e3a3cb0e00c92783de815686621962b98b03c2ab1da01ae008a602dafc15498bc9026b4c46e
|
7
|
+
data.tar.gz: eb95b8974ffd4554d838252f4979ec1138654929792b500a8010f1db0fd2013459a84cc8a4b3ce059e20e1137470cfcf2e798d80406d6c218b9e995a48fc68aa
|
data/Rakefile
CHANGED
@@ -1,34 +1,28 @@
|
|
1
|
-
begin
|
2
|
-
require 'bundler/setup'
|
3
|
-
rescue LoadError
|
4
|
-
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
-
end
|
6
|
-
|
7
|
-
require 'rdoc/task'
|
8
|
-
|
9
|
-
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
-
rdoc.rdoc_dir = 'rdoc'
|
11
|
-
rdoc.title = 'RailsDbObjects'
|
12
|
-
rdoc.options << '--line-numbers'
|
13
|
-
rdoc.rdoc_files.include('README.rdoc')
|
14
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
-
end
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
t.pattern = 'test/**/*_test.rb'
|
30
|
-
t.verbose = false
|
31
|
-
end
|
32
|
-
|
33
|
-
|
34
|
-
task default: :test
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'RailsDbObjects'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
Bundler::GemHelper.install_tasks
|
18
|
+
|
19
|
+
require 'rake/testtask'
|
20
|
+
|
21
|
+
Rake::TestTask.new(:test) do |t|
|
22
|
+
t.libs << 'lib'
|
23
|
+
t.libs << 'test'
|
24
|
+
t.pattern = 'test/**/*_test.rb'
|
25
|
+
t.verbose = false
|
26
|
+
end
|
27
|
+
|
28
|
+
task default: :test
|
@@ -1,227 +1,231 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
files
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
end
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
puts "#{
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
1
|
+
module RailsDbObjects
|
2
|
+
class DbObjectsCreator
|
3
|
+
attr_reader :objects
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@objects = {}
|
7
|
+
end
|
8
|
+
|
9
|
+
def register_files(files)
|
10
|
+
files.each do |file|
|
11
|
+
object_name = File.basename(file, File.extname(file))
|
12
|
+
object_type = File.dirname(file.to_s).to_s.split('/').last.upcase
|
13
|
+
|
14
|
+
@objects[object_type] ||= {}
|
15
|
+
|
16
|
+
content = File.read(file)
|
17
|
+
content_lines = content.split("\n")
|
18
|
+
|
19
|
+
# Reject the commented lines from the file
|
20
|
+
sql_content = content_lines.reject { |x| x.strip =~ /^--/ || x.strip =~ /^#/ }.join("\n")
|
21
|
+
|
22
|
+
file_obj = {
|
23
|
+
path: file,
|
24
|
+
sql_content: sql_content,
|
25
|
+
status: :none,
|
26
|
+
requires: [],
|
27
|
+
silent: false,
|
28
|
+
keep: false,
|
29
|
+
deleted: false,
|
30
|
+
dbschema: Rails.configuration.rails_db_objects[:objects_dbschema],
|
31
|
+
dropsql: [],
|
32
|
+
createsql: [],
|
33
|
+
vanilla: false,
|
34
|
+
condition: []
|
35
|
+
}
|
36
|
+
|
37
|
+
# Detect directives in commentary
|
38
|
+
directives = extract_from_comments(content_lines)
|
39
|
+
|
40
|
+
# puts "directives: #{directives.inspect}"
|
41
|
+
directives.each { |directive| prepare_directive(file_obj, directive) }
|
42
|
+
|
43
|
+
@objects[object_type][object_name] = file_obj
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def drop_objects
|
48
|
+
reset_objects_status!
|
49
|
+
@objects.keys.each do |object_type|
|
50
|
+
@objects[object_type].each do |name, object|
|
51
|
+
drop_object(object_type, name, object) unless object[:skip_pre]
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def create_objects
|
57
|
+
reset_objects_status!
|
58
|
+
@objects.keys.each do |object_type|
|
59
|
+
@objects[object_type].each do |name, object|
|
60
|
+
create_object(object_type, name, object) unless object[:skip_post]
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
|
67
|
+
def full(name)
|
68
|
+
prefix = @dbschema.blank? ? '' : "#{@dbschema}."
|
69
|
+
"#{prefix}#{wrap_name(name)}"
|
70
|
+
end
|
71
|
+
|
72
|
+
def wrap_name(name)
|
73
|
+
adapter_name = ActiveRecord::Base.connection.adapter_name
|
74
|
+
|
75
|
+
case adapter_name
|
76
|
+
when 'PostgreSQL'
|
77
|
+
"\"#{name}\""
|
78
|
+
when 'MySQL'
|
79
|
+
"`#{name}`"
|
80
|
+
when 'SQLServer'
|
81
|
+
"[#{name}]"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def extract_from_comments(content_lines)
|
86
|
+
dir_lines = content_lines.select { |x| x.strip =~ /^--/ || x.strip =~ /^#/ }.map(&:strip)
|
87
|
+
dir_lines.map { |x| /^--/.match?(x) ? x[2..-1] : x[1..-1] }.select { |x| x =~ /^!/ }
|
88
|
+
end
|
89
|
+
|
90
|
+
def prepare_directive(file_obj, directive)
|
91
|
+
file_obj[:requires] += directive.split(' ')[1..-1] if /^!require /.match?(directive)
|
92
|
+
file_obj[:vanilla] = /^!vanilla/.match?(directive)
|
93
|
+
file_obj[:skip_post] = /^!deleted/.match?(directive)
|
94
|
+
file_obj[:silent] = /^!silent/.match?(directive)
|
95
|
+
file_obj[:skip_pre] = /^!keep/.match?(directive)
|
96
|
+
file_obj[:dbschema] = directive.split(' ')[1..-1] if /^!schema/.match?(directive)
|
97
|
+
file_obj[:condition] << directive.split(' ')[1..-1].join(' ') if /^!condition /.match?(directive)
|
98
|
+
file_obj[:dropsql] << directive.split(' ')[1..-1].join(' ') if /^!dropsql /.match?(directive)
|
99
|
+
file_obj[:createsql] << directive.split(' ')[1..-1].join(' ') if /^!createsql /.match?(directive)
|
100
|
+
end
|
101
|
+
|
102
|
+
def reset_objects_status!
|
103
|
+
@objects.keys.each do |object_type|
|
104
|
+
@objects[object_type].each do |_name, object|
|
105
|
+
object[:status] = :none
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def drop_object(object_type, name, object)
|
111
|
+
return if object[:status] == :loaded
|
112
|
+
|
113
|
+
if object[:status] == :inprogress
|
114
|
+
raise "Error: Circular file reference! (#{object_type} #{name})"
|
115
|
+
end
|
116
|
+
|
117
|
+
object[:requires].each do |requirement|
|
118
|
+
requires = requirement.split('/', 2)
|
119
|
+
required_object = requires.last
|
120
|
+
required_type = requires.first.upcase if requires.length == 2
|
121
|
+
required_type ||= object_type
|
122
|
+
drop_object required_type, required_object, @objects[required_type.upcase][required_object]
|
123
|
+
end
|
124
|
+
|
125
|
+
@dbschema = (object[:dbschema] || []).clone
|
126
|
+
full_name = full(name)
|
127
|
+
|
128
|
+
sql = if object[:vanilla]
|
129
|
+
object[:sql_content]
|
130
|
+
elsif object[:dropsql].compact.empty?
|
131
|
+
"DROP #{object_type} #{full_name};"
|
132
|
+
else
|
133
|
+
object[:dropsql].compact.join(";\n")
|
134
|
+
end
|
135
|
+
|
136
|
+
begin
|
137
|
+
unless object[:condition].compact.empty?
|
138
|
+
condition = !ActiveRecord::Base.connection.select_rows(object[:condition].join("\n")).empty?
|
139
|
+
if condition
|
140
|
+
puts "CONDITION MET FOR #{object_type} #{full_name}"
|
141
|
+
else
|
142
|
+
puts "CONDITION NOT MET FOR #{object_type} #{full_name}"
|
143
|
+
return
|
144
|
+
end
|
145
|
+
end
|
146
|
+
ActiveRecord::Base.connection.execute(sql)
|
147
|
+
puts "#{sql}... OK"
|
148
|
+
rescue StandardError => e
|
149
|
+
unless object[:silent]
|
150
|
+
puts '#' * 80
|
151
|
+
puts e.message.to_s
|
152
|
+
# puts "#"*80
|
153
|
+
# puts "#{e.backtrace}"
|
154
|
+
puts '#' * 80
|
155
|
+
puts "WARNING: #{sql}... ERROR"
|
156
|
+
puts '#' * 80
|
157
|
+
# else
|
158
|
+
# puts "WARNING: #{sql}... SILENT"
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
object[:status] = :loaded
|
163
|
+
end
|
164
|
+
|
165
|
+
def create_object(object_type, name, object)
|
166
|
+
# skip empty sql content
|
167
|
+
if object[:sql_content].strip.blank?
|
168
|
+
puts "#{object_type} #{name} EMPTY... SKIPPING"
|
169
|
+
return
|
170
|
+
end
|
171
|
+
|
172
|
+
# object already loaded.
|
173
|
+
return if object[:status] == :loaded
|
174
|
+
|
175
|
+
raise "Error: Circular file reference! (#{object_type} #{name})" if object[:status] == :inprogress
|
176
|
+
|
177
|
+
object[:status] = :inprogress
|
178
|
+
|
179
|
+
create_dependencies(object, object_type)
|
180
|
+
|
181
|
+
@dbschema = (object[:dbschema] || []).clone
|
182
|
+
full_name = full(name)
|
183
|
+
|
184
|
+
sql = if object[:vanilla]
|
185
|
+
object[:sql_content]
|
186
|
+
elsif object[:createsql].compact.empty?
|
187
|
+
"CREATE #{object_type} #{full_name}\n#{object[:sql_content]}"
|
188
|
+
else
|
189
|
+
object[:createsql].compact.join("\n")
|
190
|
+
end
|
191
|
+
|
192
|
+
begin
|
193
|
+
unless object[:condition].compact.empty?
|
194
|
+
condition = ActiveRecord::Base.connection.select_rows(object[:condition].join("\n")).empty?
|
195
|
+
if condition
|
196
|
+
puts "CONDITION MET FOR #{object_type} #{full_name}"
|
197
|
+
else
|
198
|
+
puts "CONDITION NOT MET FOR #{object_type} #{full_name}"
|
199
|
+
return
|
200
|
+
end
|
201
|
+
end
|
202
|
+
ActiveRecord::Base.connection.execute(sql.to_s)
|
203
|
+
puts "CREATE #{object_type} #{full_name}... OK"
|
204
|
+
rescue StandardError => e
|
205
|
+
unless object[:silent]
|
206
|
+
puts '#' * 80
|
207
|
+
puts e.message.to_s
|
208
|
+
# puts "#"*80
|
209
|
+
# puts "#{e.backtrace}"
|
210
|
+
puts '#' * 80
|
211
|
+
puts "WARNING: CREATE #{object_type} #{full_name}... ERROR"
|
212
|
+
puts '#' * 80
|
213
|
+
# else
|
214
|
+
# puts "WARNING: CREATE #{object_type} #{full_name}... SILENT"
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
object[:status] = :loaded
|
219
|
+
end
|
220
|
+
|
221
|
+
def create_dependencies(object, object_type)
|
222
|
+
object[:requires].each do |requirement|
|
223
|
+
requires = requirement.split('/', 2)
|
224
|
+
required_object = requires.last
|
225
|
+
required_type = requires.first.upcase if requires.length == 2
|
226
|
+
required_type ||= object_type
|
227
|
+
create_object required_type, required_object, @objects[required_type.upcase][required_object]
|
228
|
+
end
|
229
|
+
end
|
230
|
+
end
|
231
|
+
end
|
@@ -1,15 +1,15 @@
|
|
1
|
-
class Railtie < Rails::Railtie
|
2
|
-
railtie_name :rails_db_objects
|
3
|
-
|
4
|
-
config.rails_db_objects = ActiveSupport::OrderedHash.new
|
5
|
-
|
6
|
-
initializer
|
7
|
-
app.config.rails_db_objects[:objects_path] = %w
|
8
|
-
app.config.rails_db_objects[:objects_ext] =
|
9
|
-
app.config.rails_db_objects[:objects_dbschema] = ['dbo']
|
10
|
-
end
|
11
|
-
|
12
|
-
rake_tasks do
|
13
|
-
load
|
14
|
-
end
|
15
|
-
end
|
1
|
+
class Railtie < Rails::Railtie
|
2
|
+
railtie_name :rails_db_objects
|
3
|
+
|
4
|
+
config.rails_db_objects = ActiveSupport::OrderedHash.new
|
5
|
+
|
6
|
+
initializer 'rails_db_objects.initialize' do |app|
|
7
|
+
app.config.rails_db_objects[:objects_path] = %w[db/objects/**/]
|
8
|
+
app.config.rails_db_objects[:objects_ext] = '*.sql'
|
9
|
+
app.config.rails_db_objects[:objects_dbschema] = ['dbo']
|
10
|
+
end
|
11
|
+
|
12
|
+
rake_tasks do
|
13
|
+
load 'tasks/rails_db_objects_tasks.rake'
|
14
|
+
end
|
15
|
+
end
|
@@ -1,3 +1,3 @@
|
|
1
|
-
module RailsDbObjects
|
2
|
-
VERSION =
|
3
|
-
end
|
1
|
+
module RailsDbObjects
|
2
|
+
VERSION = '0.1.1'.freeze
|
3
|
+
end
|
@@ -1,46 +1,45 @@
|
|
1
|
-
namespace :db do
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
objects_path.each do |path|
|
10
|
-
creator.register_files
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
end
|
1
|
+
namespace :db do
|
2
|
+
desc 'Generate all the database objects of the current project'
|
3
|
+
task create_objects: :environment do
|
4
|
+
creator = RailsDbObjects::DbObjectsCreator.new
|
5
|
+
|
6
|
+
objects_path = Rails.configuration.rails_db_objects[:objects_path]
|
7
|
+
objects_ext = Rails.configuration.rails_db_objects[:objects_ext]
|
8
|
+
|
9
|
+
objects_path.each do |path|
|
10
|
+
creator.register_files(Dir[File.join(path, objects_ext)].map { |x| File.expand_path(x) })
|
11
|
+
end
|
12
|
+
|
13
|
+
creator.create_objects
|
14
|
+
end
|
15
|
+
|
16
|
+
desc 'Drop all the database objects of the current project'
|
17
|
+
task drop_objects: :environment do
|
18
|
+
creator = RailsDbObjects::DbObjectsCreator.new
|
19
|
+
|
20
|
+
objects_path = Rails.configuration.rails_db_objects[:objects_path]
|
21
|
+
objects_ext = Rails.configuration.rails_db_objects[:objects_ext]
|
22
|
+
|
23
|
+
objects_path.each do |path|
|
24
|
+
creator.register_files(Dir[File.join(path, objects_ext)].map { |x| File.expand_path(x) })
|
25
|
+
end
|
26
|
+
|
27
|
+
creator.drop_objects
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
require 'rake/hooks'
|
32
|
+
|
33
|
+
before 'db:migrate' do
|
34
|
+
Rake::Task['db:drop_objects'].invoke
|
35
|
+
end
|
36
|
+
before 'db:rollback' do
|
37
|
+
Rake::Task['db:drop_objects'].invoke
|
38
|
+
end
|
39
|
+
|
40
|
+
after 'db:migrate' do
|
41
|
+
Rake::Task['db:create_objects'].invoke
|
42
|
+
end
|
43
|
+
after 'db:rollback' do
|
44
|
+
Rake::Task['db:create_objects'].invoke
|
45
|
+
end
|
data/test/dummy/Rakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
2
|
-
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
3
|
-
|
4
|
-
require File.expand_path('
|
5
|
-
|
6
|
-
Rails.application.load_tasks
|
1
|
+
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
2
|
+
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
3
|
+
|
4
|
+
require File.expand_path('config/application', __dir__)
|
5
|
+
|
6
|
+
Rails.application.load_tasks
|
data/test/dummy/bin/bundle
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
#!/usr/bin/env ruby.exe
|
2
|
-
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('
|
3
|
-
load Gem.bin_path('bundler', 'bundle')
|
1
|
+
#!/usr/bin/env ruby.exe
|
2
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
|
3
|
+
load Gem.bin_path('bundler', 'bundle')
|
data/test/dummy/bin/rails
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#!/usr/bin/env ruby.exe
|
2
|
-
APP_PATH = File.expand_path('
|
3
|
-
require_relative '../config/boot'
|
4
|
-
require 'rails/commands'
|
1
|
+
#!/usr/bin/env ruby.exe
|
2
|
+
APP_PATH = File.expand_path('../config/application', __dir__)
|
3
|
+
require_relative '../config/boot'
|
4
|
+
require 'rails/commands'
|
data/test/dummy/bin/rake
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#!/usr/bin/env ruby.exe
|
2
|
-
require_relative '../config/boot'
|
3
|
-
require 'rake'
|
4
|
-
Rake.application.run
|
1
|
+
#!/usr/bin/env ruby.exe
|
2
|
+
require_relative '../config/boot'
|
3
|
+
require 'rake'
|
4
|
+
Rake.application.run
|
data/test/dummy/bin/setup
CHANGED
@@ -1,29 +1,29 @@
|
|
1
|
-
#!/usr/bin/env ruby.exe
|
2
|
-
require 'pathname'
|
3
|
-
|
4
|
-
# path to your application root.
|
5
|
-
APP_ROOT = Pathname.new File.expand_path('
|
6
|
-
|
7
|
-
Dir.chdir APP_ROOT do
|
8
|
-
# This script is a starting point to setup your application.
|
9
|
-
# Add necessary setup steps to this file:
|
10
|
-
|
11
|
-
puts
|
12
|
-
system
|
13
|
-
system
|
14
|
-
|
15
|
-
# puts "\n== Copying sample files =="
|
16
|
-
# unless File.exist?("config/database.yml")
|
17
|
-
# system "cp config/database.yml.sample config/database.yml"
|
18
|
-
# end
|
19
|
-
|
20
|
-
puts "\n== Preparing database =="
|
21
|
-
system
|
22
|
-
|
23
|
-
puts "\n== Removing old logs and tempfiles =="
|
24
|
-
system
|
25
|
-
system
|
26
|
-
|
27
|
-
puts "\n== Restarting application server =="
|
28
|
-
system
|
29
|
-
end
|
1
|
+
#!/usr/bin/env ruby.exe
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
# path to your application root.
|
5
|
+
APP_ROOT = Pathname.new File.expand_path('..', __dir__)
|
6
|
+
|
7
|
+
Dir.chdir APP_ROOT do
|
8
|
+
# This script is a starting point to setup your application.
|
9
|
+
# Add necessary setup steps to this file:
|
10
|
+
|
11
|
+
puts '== Installing dependencies =='
|
12
|
+
system 'gem install bundler --conservative'
|
13
|
+
system 'bundle check || bundle install'
|
14
|
+
|
15
|
+
# puts "\n== Copying sample files =="
|
16
|
+
# unless File.exist?("config/database.yml")
|
17
|
+
# system "cp config/database.yml.sample config/database.yml"
|
18
|
+
# end
|
19
|
+
|
20
|
+
puts "\n== Preparing database =="
|
21
|
+
system 'bin/rake db:setup'
|
22
|
+
|
23
|
+
puts "\n== Removing old logs and tempfiles =="
|
24
|
+
system 'rm -f log/*'
|
25
|
+
system 'rm -rf tmp/cache'
|
26
|
+
|
27
|
+
puts "\n== Restarting application server =="
|
28
|
+
system 'touch tmp/restart.txt'
|
29
|
+
end
|
@@ -1,26 +1,25 @@
|
|
1
|
-
require File.expand_path('
|
2
|
-
|
3
|
-
require 'rails/all'
|
4
|
-
|
5
|
-
Bundler.require(*Rails.groups)
|
6
|
-
require
|
7
|
-
|
8
|
-
module Dummy
|
9
|
-
class Application < Rails::Application
|
10
|
-
# Settings in config/environments/* take precedence over those specified here.
|
11
|
-
# Application configuration should go into files in config/initializers
|
12
|
-
# -- all .rb files in that directory are automatically loaded.
|
13
|
-
|
14
|
-
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
15
|
-
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
16
|
-
# config.time_zone = 'Central Time (US & Canada)'
|
17
|
-
|
18
|
-
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
19
|
-
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
20
|
-
# config.i18n.default_locale = :de
|
21
|
-
|
22
|
-
# Do not swallow errors in after_commit/after_rollback callbacks.
|
23
|
-
config.active_record.raise_in_transactional_callbacks = true
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
1
|
+
require File.expand_path('boot', __dir__)
|
2
|
+
|
3
|
+
require 'rails/all'
|
4
|
+
|
5
|
+
Bundler.require(*Rails.groups)
|
6
|
+
require 'rails_db_objects'
|
7
|
+
|
8
|
+
module Dummy
|
9
|
+
class Application < Rails::Application
|
10
|
+
# Settings in config/environments/* take precedence over those specified here.
|
11
|
+
# Application configuration should go into files in config/initializers
|
12
|
+
# -- all .rb files in that directory are automatically loaded.
|
13
|
+
|
14
|
+
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
15
|
+
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
16
|
+
# config.time_zone = 'Central Time (US & Canada)'
|
17
|
+
|
18
|
+
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
19
|
+
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
20
|
+
# config.i18n.default_locale = :de
|
21
|
+
|
22
|
+
# Do not swallow errors in after_commit/after_rollback callbacks.
|
23
|
+
config.active_record.raise_in_transactional_callbacks = true
|
24
|
+
end
|
25
|
+
end
|
data/test/dummy/config/boot.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
# Set up gems listed in the Gemfile.
|
2
|
-
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('
|
3
|
-
|
4
|
-
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
5
|
-
$LOAD_PATH.unshift File.expand_path('
|
1
|
+
# Set up gems listed in the Gemfile.
|
2
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../Gemfile', __dir__)
|
3
|
+
|
4
|
+
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
5
|
+
$LOAD_PATH.unshift File.expand_path('../../../lib', __dir__)
|
@@ -1,5 +1,5 @@
|
|
1
|
-
# Load the Rails application.
|
2
|
-
require File.expand_path('
|
3
|
-
|
4
|
-
# Initialize the Rails application.
|
5
|
-
Rails.application.initialize!
|
1
|
+
# Load the Rails application.
|
2
|
+
require File.expand_path('application', __dir__)
|
3
|
+
|
4
|
+
# Initialize the Rails application.
|
5
|
+
Rails.application.initialize!
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class RailsDbObjectsTest < ActiveSupport::TestCase
|
4
|
-
test
|
5
|
-
assert_kind_of Module, RailsDbObjects
|
6
|
-
end
|
7
|
-
end
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RailsDbObjectsTest < ActiveSupport::TestCase
|
4
|
+
test 'truth' do
|
5
|
+
assert_kind_of Module, RailsDbObjects
|
6
|
+
end
|
7
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
|
-
# Configure Rails Environment
|
2
|
-
ENV[
|
3
|
-
|
4
|
-
require File.expand_path(
|
5
|
-
ActiveRecord::Migrator.migrations_paths = [File.expand_path(
|
6
|
-
require
|
7
|
-
|
8
|
-
# Filter out Minitest backtrace while allowing backtrace from other libraries
|
9
|
-
# to be shown.
|
10
|
-
Minitest.backtrace_filter = Minitest::BacktraceFilter.new
|
11
|
-
|
12
|
-
# Load support files
|
13
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
14
|
-
|
15
|
-
# Load fixtures from the engine
|
16
|
-
if ActiveSupport::TestCase.respond_to?(:fixture_path=)
|
17
|
-
ActiveSupport::TestCase.fixture_path = File.expand_path(
|
18
|
-
ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path
|
19
|
-
ActiveSupport::TestCase.fixtures :all
|
20
|
-
end
|
1
|
+
# Configure Rails Environment
|
2
|
+
ENV['RAILS_ENV'] = 'test'
|
3
|
+
|
4
|
+
require File.expand_path('../test/dummy/config/environment.rb', __dir__)
|
5
|
+
ActiveRecord::Migrator.migrations_paths = [File.expand_path('../test/dummy/db/migrate', __dir__)]
|
6
|
+
require 'rails/test_help'
|
7
|
+
|
8
|
+
# Filter out Minitest backtrace while allowing backtrace from other libraries
|
9
|
+
# to be shown.
|
10
|
+
Minitest.backtrace_filter = Minitest::BacktraceFilter.new
|
11
|
+
|
12
|
+
# Load support files
|
13
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
14
|
+
|
15
|
+
# Load fixtures from the engine
|
16
|
+
if ActiveSupport::TestCase.respond_to?(:fixture_path=)
|
17
|
+
ActiveSupport::TestCase.fixture_path = File.expand_path('fixtures', __dir__)
|
18
|
+
ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path
|
19
|
+
ActiveSupport::TestCase.fixtures :all
|
20
|
+
end
|
metadata
CHANGED
@@ -1,19 +1,61 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_db_objects
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ''
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
12
|
-
dependencies:
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
date: 2018-10-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake-hooks
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rubocop
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rubocop-rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: |-
|
56
|
+
A tool to manage database objects like views, functions, triggers, stored procedures or assemblies.
|
57
|
+
Inspired by the rails_db_views gem (which you can find at https://github.com/anykeyh/rails_db_views)
|
58
|
+
and re-using a lot of the code from there.
|
17
59
|
email:
|
18
60
|
- ''
|
19
61
|
executables: []
|
@@ -83,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
125
|
version: '0'
|
84
126
|
requirements: []
|
85
127
|
rubyforge_project:
|
86
|
-
rubygems_version: 2.6.14
|
128
|
+
rubygems_version: 2.6.14.1
|
87
129
|
signing_key:
|
88
130
|
specification_version: 4
|
89
131
|
summary: Drops and Creates database objects via rake/hook before and after any rake
|