activerecord-oracle_enhanced-adapter-with-schema 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +35 -11
- data/VERSION +1 -1
- data/activerecord-oracle_enhanced-adapter-with-schema.gemspec +3 -3
- data/lib/active_record/connection_adapters/oracle_enhanced.rake +42 -0
- metadata +178 -153
data/README.md
CHANGED
@@ -1,29 +1,53 @@
|
|
1
|
-
activerecord-oracle_enhanced-adapter
|
2
|
-
|
1
|
+
activerecord-oracle_enhanced-adapter-with-schema
|
2
|
+
================================================
|
3
3
|
|
4
|
-
Oracle enhanced adapter for ActiveRecord (
|
5
|
-
When you need to use two different users in your database. One user is to create/modify tables (Data Definition) in your schema, and one is to use that tables (Data Manipulation) within in the app. (I agree it doesnt make any sense, but when there is a policy, you cant go beyond that unfortunately, if you cant change the policy)
|
4
|
+
Oracle enhanced adapter with schema config support for ActiveRecord (Using this gem, you can specify schema details in database.yml). Using this gem, you can define schema in your database.yml to make a specific schema DB Connection. This is very useful in certain situations like -
|
6
5
|
|
7
|
-
|
6
|
+
* The default oracle adapter assumes that the DB user will have all permissions to his schema. For most of the cases, its true. But it will not be true for some cases. When you need to use two different users in your database. One user is to create/modify tables (Data Definition) in your schema, and another one is to use that tables (Data Manipulation) within in the app. So the application user account will not have access to do DDL (I agree it doesnt make any sense, but when there is a policy, you cant go beyond that unfortunately, if you cant change the policy)
|
7
|
+
|
8
|
+
You will see these kind of scenarios in organizations where you have a DBA policy that app user should not be allowed to
|
9
|
+
created/edit tables. And those DDL operations should be done by a separate ADMIN user account.
|
8
10
|
|
9
11
|
DESCRIPTION
|
10
12
|
-----------
|
11
13
|
|
12
14
|
This repo is forked from rsim/oracle-enhanced repo. So please refer this page [rsim's Oracle Enhanced](http://www.github.com/rsim/oracle-enhanced) for more details.
|
13
15
|
|
14
|
-
|
16
|
+
This gem is an enhanced version of rsim's oracle adapter, so that we can mention the schema details in our database.yml file, e.g.
|
15
17
|
|
16
|
-
|
18
|
+
production:
|
17
19
|
adapter: oracle_enhanced
|
18
20
|
database: xe
|
19
21
|
username: dml_user
|
20
22
|
password: secret
|
21
23
|
schema: your_schema_name
|
24
|
+
|
25
|
+
|
26
|
+
To run DDL migrations, you can create another custom environment like below
|
27
|
+
Note: This custom environment user should have the required privileges (DBA)
|
22
28
|
|
23
|
-
|
24
|
-
|
29
|
+
ddl_production:
|
30
|
+
adapter: oracle_enhanced
|
31
|
+
database: xe
|
32
|
+
username: ddl_user
|
33
|
+
password: secret
|
34
|
+
schema: your_schema_name
|
35
|
+
|
36
|
+
We can manage this custom migration layer by using custom capistrano receipies or other deployment techniques. So whenever you want to create/alter tables, you can use this custom env like below
|
37
|
+
|
38
|
+
rake db:migrate RAILS_ENV=ddl_production
|
39
|
+
|
40
|
+
|
41
|
+
To grant privileges, you can use below rake task with the custom ddl migration env below (DBA user)
|
25
42
|
|
26
|
-
|
43
|
+
rake db:grant:<privilege> TABLE=<tablename> ROLE=<rolename> RAILS_ENV=<custom ddl migration env>
|
44
|
+
|
45
|
+
Examples:
|
46
|
+
|
47
|
+
rake db:grant:select TABLE=users ROLE=readonlyuser RAILS_ENV=ddl_production
|
48
|
+
rake db:grant:insert TABLE=users ROLE=webapp RAILS_ENV=ddl_production
|
49
|
+
rake db:grant:update TABLE=users ROLE=webapp RAILS_ENV=ddl_production
|
50
|
+
rake db:grant:delete TABLE=users ROLE=webapp RAILS_ENV=ddl_production
|
27
51
|
|
28
52
|
|
29
53
|
INSTALLATION
|
@@ -101,7 +125,7 @@ LICENSE
|
|
101
125
|
|
102
126
|
(The MIT License)
|
103
127
|
|
104
|
-
Copyright (c)
|
128
|
+
Copyright (c) 2013 Arunkumar Balu
|
105
129
|
|
106
130
|
Permission is hereby granted, free of charge, to any person obtaining
|
107
131
|
a copy of this software and associated documentation files (the
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
0.0.2
|
@@ -5,13 +5,13 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{activerecord-oracle_enhanced-adapter-with-schema}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = [%q{Arunkumar Balu}]
|
12
12
|
s.date = %q{2013-03-18}
|
13
|
-
s.description = %q{
|
14
|
-
This gem is a tweaked version of original activerecord-oracle_enhanced-adapter gem.
|
13
|
+
s.description = %q{Oracle enhanced adapter with schema config support for ActiveRecord (Using this gem, you can specify schema details in database.yml).
|
14
|
+
This gem is a tweaked version of original activerecord-oracle_enhanced-adapter gem.
|
15
15
|
}
|
16
16
|
s.email = %q{arunkarthick.it@gmail.com}
|
17
17
|
s.extra_rdoc_files = [
|
@@ -58,6 +58,48 @@ if defined?(drop_database) == 'method'
|
|
58
58
|
end
|
59
59
|
|
60
60
|
namespace :db do
|
61
|
+
namespace :grant do
|
62
|
+
task :select => :environment do
|
63
|
+
ActiveRecord::Base.connection.execute "GRANT select on #{TABLE} TO #{ENV['ROLE']}"
|
64
|
+
end
|
65
|
+
|
66
|
+
task :insert => :environment do
|
67
|
+
ActiveRecord::Base.connection.execute "GRANT insert on #{TABLE} TO #{ENV['ROLE']}"
|
68
|
+
end
|
69
|
+
|
70
|
+
task :update => :environment do
|
71
|
+
ActiveRecord::Base.connection.execute "GRANT update on #{ENV['TABLE']} TO #{ENV['ROLE']}"
|
72
|
+
end
|
73
|
+
|
74
|
+
task :delete => :environment do
|
75
|
+
ActiveRecord::Base.connection.execute "GRANT delete on #{ENV['TABLE']} TO #{ENV['ROLE']}"
|
76
|
+
end
|
77
|
+
|
78
|
+
task :references => :environment do
|
79
|
+
ActiveRecord::Base.connection.execute "GRANT references on #{ENV['TABLE']} TO #{ENV['ROLE']}"
|
80
|
+
end
|
81
|
+
|
82
|
+
task :alter => :environment do
|
83
|
+
ActiveRecord::Base.connection.execute "GRANT alter on #{ENV['TABLE']} TO #{ENV['ROLE']}"
|
84
|
+
end
|
85
|
+
|
86
|
+
task :index => :environment do
|
87
|
+
ActiveRecord::Base.connection.execute "GRANT index on #{ENV['TABLE']} TO #{ENV['ROLE']}"
|
88
|
+
end
|
89
|
+
|
90
|
+
task :execute => :environment do
|
91
|
+
ActiveRecord::Base.connection.execute "GRANT execute on #{ENV['TABLE']} TO #{ENV['ROLE']}"
|
92
|
+
end
|
93
|
+
|
94
|
+
task :default => :environment do
|
95
|
+
ActiveRecord::Base.connection.execute "GRANT select, insert, update, delete on #{ENV['TABLE']} TO #{ENV['ROLE']}"
|
96
|
+
end
|
97
|
+
|
98
|
+
task :all => :environment do
|
99
|
+
ActiveRecord::Base.connection.execute "GRANT all on #{ENV['TABLE']} TO #{ENV['ROLE']}"
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
61
103
|
|
62
104
|
namespace :structure do
|
63
105
|
redefine_task :dump => :environment do |existing_actions|
|
metadata
CHANGED
@@ -1,173 +1,204 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-oracle_enhanced-adapter-with-schema
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
version: 0.0.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Arunkumar Balu
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-03-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: jeweler
|
22
|
-
|
23
|
-
|
24
|
-
requirements:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
25
19
|
- - ~>
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
segments:
|
28
|
-
- 1
|
29
|
-
- 5
|
30
|
-
- 1
|
20
|
+
- !ruby/object:Gem::Version
|
31
21
|
version: 1.5.1
|
32
22
|
type: :development
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: rspec
|
36
23
|
prerelease: false
|
37
|
-
|
38
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
39
27
|
- - ~>
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.5.1
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '2.4'
|
45
38
|
type: :development
|
46
|
-
version_requirements: *id002
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: activerecord
|
49
39
|
prerelease: false
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '2.4'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: activerecord
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
57
54
|
type: :development
|
58
|
-
version_requirements: *id003
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: activemodel
|
61
55
|
prerelease: false
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
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: activemodel
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
69
70
|
type: :development
|
70
|
-
version_requirements: *id004
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: activesupport
|
73
71
|
prerelease: false
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
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: activesupport
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
81
86
|
type: :development
|
82
|
-
version_requirements: *id005
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: actionpack
|
85
87
|
prerelease: false
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: actionpack
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
93
102
|
type: :development
|
94
|
-
version_requirements: *id006
|
95
|
-
- !ruby/object:Gem::Dependency
|
96
|
-
name: railties
|
97
103
|
prerelease: false
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: railties
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
105
118
|
type: :development
|
106
|
-
version_requirements: *id007
|
107
|
-
- !ruby/object:Gem::Dependency
|
108
|
-
name: arel
|
109
119
|
prerelease: false
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: arel
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
117
134
|
type: :development
|
118
|
-
version_requirements: *id008
|
119
|
-
- !ruby/object:Gem::Dependency
|
120
|
-
name: journey
|
121
135
|
prerelease: false
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: journey
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ! '>='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0'
|
129
150
|
type: :development
|
130
|
-
version_requirements: *id009
|
131
|
-
- !ruby/object:Gem::Dependency
|
132
|
-
name: ruby-plsql
|
133
151
|
prerelease: false
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
- !ruby/object:Gem::Dependency
|
159
|
+
name: ruby-plsql
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
162
|
+
requirements:
|
163
|
+
- - ! '>='
|
164
|
+
- !ruby/object:Gem::Version
|
142
165
|
version: 0.4.4
|
143
166
|
type: :development
|
144
|
-
version_requirements: *id010
|
145
|
-
- !ruby/object:Gem::Dependency
|
146
|
-
name: ruby-oci8
|
147
167
|
prerelease: false
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 0.4.4
|
174
|
+
- !ruby/object:Gem::Dependency
|
175
|
+
name: ruby-oci8
|
176
|
+
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
178
|
+
requirements:
|
179
|
+
- - ! '>='
|
180
|
+
- !ruby/object:Gem::Version
|
156
181
|
version: 2.0.4
|
157
182
|
type: :development
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
186
|
+
requirements:
|
187
|
+
- - ! '>='
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: 2.0.4
|
190
|
+
description: ! 'Oracle enhanced adapter with schema config support for ActiveRecord
|
191
|
+
(Using this gem, you can specify schema details in database.yml).
|
162
192
|
|
193
|
+
This gem is a tweaked version of original activerecord-oracle_enhanced-adapter gem.
|
194
|
+
|
195
|
+
'
|
163
196
|
email: arunkarthick.it@gmail.com
|
164
197
|
executables: []
|
165
|
-
|
166
198
|
extensions: []
|
167
|
-
|
168
|
-
extra_rdoc_files:
|
199
|
+
extra_rdoc_files:
|
169
200
|
- README.md
|
170
|
-
files:
|
201
|
+
files:
|
171
202
|
- .rspec
|
172
203
|
- Gemfile
|
173
204
|
- History.md
|
@@ -213,37 +244,31 @@ files:
|
|
213
244
|
- spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb
|
214
245
|
- spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb
|
215
246
|
- spec/spec_helper.rb
|
216
|
-
has_rdoc: true
|
217
247
|
homepage: http://github.com/arunkarthick/activerecord-oracle_enhanced-adapter-with-schema
|
218
248
|
licenses: []
|
219
|
-
|
220
249
|
post_install_message:
|
221
250
|
rdoc_options: []
|
222
|
-
|
223
|
-
require_paths:
|
251
|
+
require_paths:
|
224
252
|
- lib
|
225
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
requirements:
|
234
|
-
- -
|
235
|
-
- !ruby/object:Gem::Version
|
236
|
-
|
237
|
-
- 0
|
238
|
-
version: "0"
|
253
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
254
|
+
none: false
|
255
|
+
requirements:
|
256
|
+
- - ! '>='
|
257
|
+
- !ruby/object:Gem::Version
|
258
|
+
version: '0'
|
259
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
260
|
+
none: false
|
261
|
+
requirements:
|
262
|
+
- - ! '>='
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: '0'
|
239
265
|
requirements: []
|
240
|
-
|
241
266
|
rubyforge_project:
|
242
|
-
rubygems_version: 1.
|
267
|
+
rubygems_version: 1.8.23
|
243
268
|
signing_key:
|
244
269
|
specification_version: 3
|
245
270
|
summary: Oracle enhanced adapter for ActiveRecord
|
246
|
-
test_files:
|
271
|
+
test_files:
|
247
272
|
- spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb
|
248
273
|
- spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb
|
249
274
|
- spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb
|