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 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 (with support to specify schema in database.yml). All credit goes to rsim (http://github.com/rsim). I just added some additional code, so that you can specify the required schema in your database.yml to make a specific schema DB Connection. This is very useful in certain situations like -
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
- You will see these kind of scenarios in organizations where you have a DBA policy that app user should not be allowed to created/edit tables. And those DDL operations should be done by a separate ADMIN user account.
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
- I just added the additional code, so that we can mention the schema details in our database.yml file, e.g.
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
- development:
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
- PENDING
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
- * Adding support to run two types of migrations (DML migration script and DDL migration script) separately without mixing it with each other.
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) 2008-2011 Arunkumar Balu
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.4.2
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.1"
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{Forked from rsim's Oracle "enhanced" ActiveRecord adapter. Using this gem, you can specify the schema details in your database.yml file.
14
- This gem is a tweaked version of original activerecord-oracle_enhanced-adapter gem. Thanks to rsim for such a great library.
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
- prerelease: false
5
- segments:
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
- date: 2013-03-18 00:00:00 -04:00
18
- default_executable:
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
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
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
- requirement: &id002 !ruby/object:Gem::Requirement
38
- requirements:
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
39
27
  - - ~>
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 2
43
- - 4
44
- version: "2.4"
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
- requirement: &id003 !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- segments:
55
- - 0
56
- version: "0"
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
- requirement: &id004 !ruby/object:Gem::Requirement
63
- requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- segments:
67
- - 0
68
- version: "0"
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
- requirement: &id005 !ruby/object:Gem::Requirement
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- segments:
79
- - 0
80
- version: "0"
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
- requirement: &id006 !ruby/object:Gem::Requirement
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- segments:
91
- - 0
92
- version: "0"
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
- requirement: &id007 !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- segments:
103
- - 0
104
- version: "0"
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
- requirement: &id008 !ruby/object:Gem::Requirement
111
- requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- segments:
115
- - 0
116
- version: "0"
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
- requirement: &id009 !ruby/object:Gem::Requirement
123
- requirements:
124
- - - ">="
125
- - !ruby/object:Gem::Version
126
- segments:
127
- - 0
128
- version: "0"
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
- requirement: &id010 !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- segments:
139
- - 0
140
- - 4
141
- - 4
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
- requirement: &id011 !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- segments:
153
- - 2
154
- - 0
155
- - 4
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
- version_requirements: *id011
159
- description: |
160
- Forked from rsim's Oracle "enhanced" ActiveRecord adapter. Using this gem, you can specify the schema details in your database.yml file.
161
- This gem is a tweaked version of original activerecord-oracle_enhanced-adapter gem. Thanks to rsim for such a great library.
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
- requirements:
227
- - - ">="
228
- - !ruby/object:Gem::Version
229
- segments:
230
- - 0
231
- version: "0"
232
- required_rubygems_version: !ruby/object:Gem::Requirement
233
- requirements:
234
- - - ">="
235
- - !ruby/object:Gem::Version
236
- segments:
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.3.6
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