ns_service_pack 0.0.19 → 0.0.21
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/CHANGELOG +104 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +6 -0
- data/README.rdoc +0 -97
- data/VERSION +1 -1
- data/bin/ns_service_pack +91 -0
- data/lib/generators/ns/scaffold/scaffold_generator.rb +12 -0
- data/lib/generators/try/templates/test.rb +3 -0
- data/lib/generators/try/try_generator.rb +17 -0
- data/lib/ns_service_pack/client.rb +40 -0
- data/lib/ns_service_pack/controller_servicable.rb +97 -0
- data/lib/ns_service_pack/field_mapping.rb +128 -122
- data/lib/ns_service_pack/global_const.rb +1 -37
- data/lib/ns_service_pack/result.rb +21 -0
- data/lib/ns_service_pack/result_error.rb +17 -0
- data/lib/ns_service_pack/service_config.rb +30 -0
- data/lib/ns_service_pack/util.rb +36 -0
- data/lib/ns_service_pack/version.rb +1 -0
- data/lib/ns_service_pack.rb +14 -17
- data/lib/templates/active_record/model/model.rb +9 -0
- data/lib/templates/{code_hashes → config/code_hashes}/code_hash.yml.sample +0 -0
- data/lib/templates/config/database.yml.sample +44 -0
- data/lib/templates/config/initializers/ns_service_pack.rb +8 -0
- data/lib/templates/config/initializers/oracle_db_config.rb +21 -0
- data/lib/templates/config/ns_services.yml +19 -0
- data/lib/templates/rails/scaffold_controller/controller.rb +9 -0
- data/ns_service_pack.gemspec +27 -6
- metadata +53 -16
- data/lib/ns_service_pack/application_controller_module.rb +0 -95
- data/lib/tasks/test.rake +0 -2
- data/lib/templates/initializers/ns_service_pack.rb +0 -18
@@ -1,148 +1,154 @@
|
|
1
1
|
#coding: utf-8
|
2
2
|
=begin
|
3
3
|
字段映射,业务字段-数据库字段对应
|
4
|
+
|
5
|
+
TODO: 不需做字段转换的处理
|
4
6
|
=end
|
5
7
|
require 'fileutils'
|
6
|
-
module
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
#在将model转成json数据时会自动调用该方法
|
12
|
-
def as_json(options={})
|
13
|
-
#获取数据库属性数据
|
14
|
-
#TODO 想到的一个改进点:数据库查的时候根据mapping来选字段,而非全查出来,影响效率,影响较大,先不改!
|
15
|
-
default_attrs = self.class.buz_hashize(self.attributes)
|
16
|
-
#支持自定义方法的传入 20111118 for gao
|
17
|
-
add_virtual_buz_attributes!(default_attrs)
|
18
|
-
end
|
19
|
-
|
20
|
-
#TODO check add some notes
|
21
|
-
def add_virtual_buz_attributes!(db_buz_attrs = {})
|
22
|
-
the_mapping = self.class.mapping
|
23
|
-
#获取非数据库属性,称为业务虚拟属性
|
24
|
-
delta_attrs = the_mapping.keys - db_buz_attrs.keys
|
25
|
-
delta_attrs.each do |key|
|
26
|
-
method_name = the_mapping[key]
|
27
|
-
db_buz_attrs[key] = if self.respond_to?(method_name)
|
28
|
-
self.send(method_name)
|
29
|
-
else
|
30
|
-
self.class.get_map_value(key, nil)#给出默认实现
|
31
|
-
end
|
8
|
+
module Ns
|
9
|
+
module FieldMapping
|
10
|
+
def self.included(base)
|
11
|
+
base.extend(ClassMethods)
|
32
12
|
end
|
33
|
-
db_buz_attrs
|
34
|
-
end
|
35
13
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
self.name.underscore
|
44
|
-
end
|
45
|
-
def model_key
|
46
|
-
"#{__model_clazz_name}_mapping"
|
14
|
+
#在将model转成json数据时会自动调用该方法
|
15
|
+
def as_json(options={})
|
16
|
+
#获取数据库属性数据
|
17
|
+
#TODO 想到的一个改进点:数据库查的时候根据mapping来选字段,而非全查出来,影响效率,影响较大,先不改!
|
18
|
+
default_attrs = self.class.buz_hashize(self.attributes)
|
19
|
+
#支持自定义方法的传入 20111118 for gao
|
20
|
+
add_virtual_buz_attributes!(default_attrs)
|
47
21
|
end
|
48
22
|
|
49
|
-
|
50
|
-
|
23
|
+
# 将对象转成json数据时,允许添加额外的属性字段,但并不存入数据库
|
24
|
+
def add_virtual_buz_attributes!(db_buz_attrs = {})
|
25
|
+
the_mapping = self.class.mapping
|
26
|
+
#获取非数据库属性,称为业务虚拟属性
|
27
|
+
delta_attrs = the_mapping.keys - db_buz_attrs.keys
|
28
|
+
delta_attrs.each do |key|
|
29
|
+
method_name = the_mapping[key]
|
30
|
+
db_buz_attrs[key] = if self.respond_to?(method_name)
|
31
|
+
self.send(method_name)
|
32
|
+
else
|
33
|
+
self.class.get_map_value(key, nil)#给出默认实现
|
34
|
+
end
|
35
|
+
end
|
36
|
+
db_buz_attrs
|
51
37
|
end
|
52
38
|
|
53
|
-
def
|
54
|
-
|
55
|
-
#提供默认处理 #TODO 根据数据类型做些更好的转换
|
56
|
-
case k
|
57
|
-
when :created_at, :updated_at
|
58
|
-
value.try(:to_s, :db)
|
59
|
-
else
|
60
|
-
value
|
61
|
-
end
|
39
|
+
def update_from_buz(params={})
|
40
|
+
update_attributes(self.class.db_hashize(params))
|
62
41
|
end
|
63
42
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
43
|
+
module ClassMethods
|
44
|
+
#Fix a bug on 20111117 by shang, this override the original method name
|
45
|
+
def __model_clazz_name
|
46
|
+
self.name.underscore
|
47
|
+
end
|
48
|
+
def model_key
|
49
|
+
"#{__model_clazz_name}_mapping"
|
50
|
+
end
|
51
|
+
|
52
|
+
def mapping
|
53
|
+
GlobalConst.send(model_key)
|
54
|
+
end
|
55
|
+
|
56
|
+
def get_map_value(k, value)
|
57
|
+
#raise "Not implemented!"
|
58
|
+
#提供默认处理 #TODO 根据数据类型做些更好的转换
|
59
|
+
case k
|
60
|
+
when :created_at, :updated_at
|
61
|
+
value.try(:to_s, :db)
|
62
|
+
else
|
63
|
+
value
|
72
64
|
end
|
73
|
-
|
74
|
-
|
75
|
-
|
65
|
+
end
|
66
|
+
|
67
|
+
def dump_new(force=true)
|
68
|
+
if defined?(Rails)
|
69
|
+
file = "#{Rails.root}/data/#{model_key}.yml.#{Time.now.to_i}"
|
70
|
+
path = File.dirname(file)
|
71
|
+
FileUtils.mkpath(path) unless File.directory?(path)
|
72
|
+
existed = File.exists?(file)
|
73
|
+
if existed
|
74
|
+
puts "Warning: #{file} has existed! check it! Default override it!"
|
75
|
+
end
|
76
|
+
if !existed || force
|
77
|
+
File.open(file, 'w+') do |f|
|
78
|
+
f.puts YAML.dump(buz_hashize)
|
79
|
+
end
|
76
80
|
end
|
77
81
|
end
|
78
82
|
end
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
if !existed || force
|
100
|
-
#获取数据库字段列表,屏蔽掉自动维护的created_at/updated_at,也可在生成的文件中配上
|
101
|
-
keys = new.attributes.symbolize_keys.keys.delete_if{|k| k =~ /^created_at|updated_at$/}
|
102
|
-
h = keys.inject({}) do |r, k|
|
103
|
-
#移除掉表前缀
|
104
|
-
rm_prefix = attr_prefix.nil? ? "#{__model_clazz_name}_" : attr_prefix
|
105
|
-
new_key = k.to_s.sub(rm_prefix, '').to_sym
|
106
|
-
r[new_key] = k
|
107
|
-
r
|
83
|
+
|
84
|
+
#辅助方法
|
85
|
+
def new_from_buz(params = {})
|
86
|
+
new(db_hashize(params))
|
87
|
+
end
|
88
|
+
def create_from_buz(params = {})
|
89
|
+
create(db_hashize(params))
|
90
|
+
end
|
91
|
+
|
92
|
+
#生成field mapping,dump到指定的yaml文件中
|
93
|
+
def dump_mapping(attr_prefix = nil, force = true, with_timestamp = false)
|
94
|
+
file = nil
|
95
|
+
if defined?(Rails)
|
96
|
+
tstamp = with_timestamp ? ".#{Time.now.to_i}" : ""
|
97
|
+
file = "#{Rails.root}/#{GlobalConst::APP_CODE_HASHES}mappings/#{model_key}.yml#{tstamp}"
|
98
|
+
path = File.dirname(file)
|
99
|
+
FileUtils.mkpath(path) unless File.directory?(path)
|
100
|
+
existed = File.exists?(file)
|
101
|
+
if existed
|
102
|
+
puts "Warning: #{file} has existed! check it! Default override it!"
|
108
103
|
end
|
109
|
-
|
110
|
-
|
111
|
-
|
104
|
+
if !existed || force
|
105
|
+
#获取数据库字段列表,屏蔽掉自动维护的created_at/updated_at,也可在生成的文件中配上
|
106
|
+
keys = new.attributes.symbolize_keys.keys.delete_if{|k| k =~ /^created_at|updated_at$/}
|
107
|
+
h = keys.inject({}) do |r, k|
|
108
|
+
#移除掉表前缀
|
109
|
+
rm_prefix = attr_prefix.nil? ? "#{__model_clazz_name}_" : attr_prefix
|
110
|
+
new_key = k.to_s.sub(rm_prefix, '').to_sym
|
111
|
+
r[new_key] = k
|
112
|
+
r
|
113
|
+
end
|
114
|
+
FileUtils.rm_f(file) if existed
|
115
|
+
File.open(file, 'w+') do |f|
|
116
|
+
f.puts YAML.dump(model_key.to_sym=>h)
|
117
|
+
end
|
112
118
|
end
|
113
|
-
|
119
|
+
file
|
114
120
|
end
|
115
121
|
end
|
116
|
-
end
|
117
122
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
end
|
123
|
-
|
124
|
-
#业务层到数据层字段参数转换并做一定值处理
|
125
|
-
def db_hashize(params = {})
|
126
|
-
new_params = params.symbolize_keys
|
127
|
-
common_keys = new_params.keys & mapping.keys
|
128
|
-
common_keys.inject({}) do |result, key|
|
129
|
-
result[mapping[key]] = get_map_value(key, new_params[key])
|
130
|
-
result
|
123
|
+
#TODO
|
124
|
+
def dump_field_map(force=true)
|
125
|
+
puts "==Warning: please use dump_mapping instead, this will be removed..."
|
126
|
+
dump_mapping(nil, true)
|
131
127
|
end
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
128
|
+
|
129
|
+
#业务层到数据层字段参数转换并做一定值处理
|
130
|
+
def db_hashize(params = {})
|
131
|
+
new_params = params.symbolize_keys
|
132
|
+
common_keys = new_params.keys & mapping.keys
|
133
|
+
common_keys.inject({}) do |result, key|
|
134
|
+
result[mapping[key]] = get_map_value(key, new_params[key])
|
135
|
+
result
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
#将数据层表示转成业务层表示
|
140
|
+
def buz_hashize(attrs = {})
|
141
|
+
#return {} if attrs.blank?
|
142
|
+
#获取默认初始值
|
143
|
+
attrs = new.attributes if attrs.blank?
|
144
|
+
new_attrs = attrs.symbolize_keys
|
145
|
+
invert_maps = mapping.invert_data
|
146
|
+
common_db_attrs = new_attrs.keys & invert_maps.keys
|
147
|
+
common_db_attrs.inject({}) do |result, attr|
|
148
|
+
buz_field = invert_maps[attr]
|
149
|
+
result[buz_field] = get_map_value(buz_field, new_attrs[attr])
|
150
|
+
result
|
151
|
+
end
|
146
152
|
end
|
147
153
|
end
|
148
154
|
end
|
@@ -6,7 +6,6 @@
|
|
6
6
|
=end
|
7
7
|
require 'fileutils'
|
8
8
|
module GlobalConst
|
9
|
-
SAMPLE_FILE = "templates/code_hashes/code_hash.yml.sample"
|
10
9
|
APP_CODE_HASHES = "config/code_hashes/"
|
11
10
|
|
12
11
|
mattr_accessor :global_data
|
@@ -18,7 +17,7 @@ module GlobalConst
|
|
18
17
|
raise "Method name: #{method_name}(#{args.inspect}) is not defined!"
|
19
18
|
end
|
20
19
|
|
21
|
-
def self.load_code_hashes!(hash_or_file =
|
20
|
+
def self.load_code_hashes!(hash_or_file = {})
|
22
21
|
if hash_or_file.is_a?(Hash)
|
23
22
|
h = hash_or_file
|
24
23
|
else
|
@@ -49,39 +48,4 @@ module GlobalConst
|
|
49
48
|
end
|
50
49
|
end
|
51
50
|
end
|
52
|
-
|
53
|
-
#为引用项目生成样例文件, TODO rake方式生成
|
54
|
-
def self.setup_sample(yml_file = "#{APP_CODE_HASHES}code_hash.yml.sample")
|
55
|
-
if defined? Rails
|
56
|
-
target = "#{Rails.root}/#{yml_file}"
|
57
|
-
unless File.exists?(target)
|
58
|
-
path = File.dirname(target)
|
59
|
-
FileUtils.mkpath(path)
|
60
|
-
#默认覆盖已有
|
61
|
-
FileUtils.cp(SAMPLE_FILE, target)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
#将一个hash和array写入data下的yaml结构中
|
67
|
-
def self.yamlize(hash_or_array = {}, file_name = nil)
|
68
|
-
return if hash_or_array.nil?
|
69
|
-
hash = if hash_or_array.is_a?(Array)
|
70
|
-
hash_or_array.inject({}) do |r, k|
|
71
|
-
r[k] = nil
|
72
|
-
r
|
73
|
-
end
|
74
|
-
else
|
75
|
-
hash_or_array
|
76
|
-
end
|
77
|
-
|
78
|
-
method_key = file_name.nil? ? "hash" : file_name.to_s
|
79
|
-
name = "#{method_key}_#{Time.now.to_i}"
|
80
|
-
file = "#{Rails.root}/data/#{name}.yml"
|
81
|
-
path = File.dirname(file)
|
82
|
-
Fileutils.mkpath(path) unless File.directory?(path)
|
83
|
-
File.open(file, 'w+') do |f|
|
84
|
-
f.puts YAML.dump(method_key.to_sym=>hash)
|
85
|
-
end
|
86
|
-
end
|
87
51
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#coding: utf-8
|
2
|
+
|
3
|
+
module Ns
|
4
|
+
#TODO 封装在gem包中
|
5
|
+
class Result
|
6
|
+
STATUSES = [:ok, :imperfect, :illegal, :error]
|
7
|
+
attr_accessor :status, :msg, :data, :errors
|
8
|
+
def initialize(params = {})
|
9
|
+
_params = params.symbolize_keys
|
10
|
+
@status = _params[:status]
|
11
|
+
@msg = _params[:msg]
|
12
|
+
@data = _params[:data]
|
13
|
+
@errors = _params[:errors]
|
14
|
+
end
|
15
|
+
|
16
|
+
def ok?
|
17
|
+
status == 'ok'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#coding: utf-8
|
2
|
+
|
3
|
+
module Ns
|
4
|
+
class ResultError < RuntimeError
|
5
|
+
attr_reader :result
|
6
|
+
def initialize(result = nil)
|
7
|
+
raise "Invalid result argument!" unless result.is_a?(Result)
|
8
|
+
super(result.msg)
|
9
|
+
@result = result
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_s
|
13
|
+
"RusultError: #{@result.status} #{@result.msg}, detail: #{@result.errors.inspect}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
#coding: utf-8
|
2
|
+
module Ns
|
3
|
+
class ServiceConfig
|
4
|
+
SERVICE_CONFIG_FILE = 'config/ns_services.yml'
|
5
|
+
cattr_accessor :services
|
6
|
+
@@services = {}
|
7
|
+
|
8
|
+
def self.load_services!(config_file = SERVICE_CONFIG_FILE)
|
9
|
+
return unless File.exists?(config_file)
|
10
|
+
service_configs = YAML.load(File.read(SERVICE_CONFIG_FILE))
|
11
|
+
@@services.merge!(service_configs[Rails.env])
|
12
|
+
#load common parts if exists
|
13
|
+
if (common_parts = service_configs['common']).is_a?(Hash)
|
14
|
+
common_parts.each do |k, v|
|
15
|
+
@@services[k] = if v.is_a?(Array)
|
16
|
+
if v.size == 2
|
17
|
+
v[0] = @@services[v[0].to_sym]
|
18
|
+
Util.concat_url(v[0], v[1])
|
19
|
+
else
|
20
|
+
raise "Invalid path!"
|
21
|
+
end #/if
|
22
|
+
else
|
23
|
+
v
|
24
|
+
end #/if
|
25
|
+
end #/do
|
26
|
+
end #/if
|
27
|
+
@@services
|
28
|
+
end #/def
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#coding: utf-8
|
2
|
+
require 'fileutils'
|
3
|
+
module Ns
|
4
|
+
module Util
|
5
|
+
extend self
|
6
|
+
def concat_url(prefix_url='', url='')
|
7
|
+
prefix_url = prefix_url.to_s
|
8
|
+
sep = (prefix_url[-1, 1] == '/' || url[0, 1] == '/') ? '' : '/'
|
9
|
+
"#{prefix_url}#{sep}#{url}"
|
10
|
+
end
|
11
|
+
|
12
|
+
#将一个hash和array写入data下的yaml结构中
|
13
|
+
def self.yamlize(hash_or_array = {}, file_name = nil)
|
14
|
+
return if hash_or_array.nil?
|
15
|
+
hash = if hash_or_array.is_a?(Array)
|
16
|
+
hash_or_array.inject({}) do |r, k|
|
17
|
+
r[k] = nil
|
18
|
+
r
|
19
|
+
end
|
20
|
+
else
|
21
|
+
hash_or_array
|
22
|
+
end
|
23
|
+
|
24
|
+
method_key = file_name.nil? ? "hash" : file_name.to_s
|
25
|
+
name = "#{method_key}_#{Time.now.to_i}"
|
26
|
+
file = "#{Rails.root}/data/#{name}.yml"
|
27
|
+
path = File.dirname(file)
|
28
|
+
FileUtils.mkpath(path) unless File.directory?(path)
|
29
|
+
File.open(file, 'w+') do |f|
|
30
|
+
f.puts YAML.dump(method_key.to_sym=>hash)
|
31
|
+
end
|
32
|
+
puts "Generate a yaml file in #{file}"
|
33
|
+
file
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/ns_service_pack.rb
CHANGED
@@ -4,26 +4,23 @@
|
|
4
4
|
#$LOAD_PATH.unshift("#{NS_GEM_ROOT}/lib")
|
5
5
|
|
6
6
|
require 'fileutils'
|
7
|
+
require 'ns_service_pack/util'
|
7
8
|
require 'ns_service_pack/code_hash'
|
8
9
|
require 'ns_service_pack/global_const'
|
9
10
|
require 'ns_service_pack/field_mapping'
|
11
|
+
require 'ns_service_pack/result'
|
12
|
+
require 'ns_service_pack/result_error'
|
10
13
|
require 'ns_service_pack/result_packer'
|
11
|
-
require 'ns_service_pack/
|
14
|
+
require 'ns_service_pack/controller_servicable'
|
15
|
+
require 'ns_service_pack/client'
|
16
|
+
require 'ns_service_pack/service_config'
|
17
|
+
# TODO FOR optimize
|
12
18
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
init_file = "#{Rails.root}/#{PRE_INIT_FILE}"
|
20
|
-
unless File.exists?(init_file)
|
21
|
-
FileUtils.cp(INIT_FILE_TMPL, init_file)
|
22
|
-
puts "==>I have installed a intializer file: #{init_file}"
|
23
|
-
GlobalConst.setup_sample
|
24
|
-
puts "==>Now config your constants in folder: #{GlobalConst::APP_CODE_HASHES}"
|
25
|
-
else
|
26
|
-
puts "==>It seems you have installed ns service pack, happy with it or bug report to caory!"
|
27
|
-
end
|
19
|
+
# customize deeply TODO
|
20
|
+
module Ns
|
21
|
+
class Railtie < Rails::Railtie
|
22
|
+
config.app_generators do |g|
|
23
|
+
g.templates.unshift File::expand_path('../templates', __FILE__)
|
24
|
+
end
|
28
25
|
end
|
29
|
-
end
|
26
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
<% module_namespacing do -%>
|
3
|
+
class <%= class_name %> < <%= parent_class_name.classify %>
|
4
|
+
<% attributes.select {|attr| attr.reference? }.each do |attribute| -%>
|
5
|
+
belongs_to :<%= attribute.name %>
|
6
|
+
<% end -%>
|
7
|
+
include Ns::FieldMapping
|
8
|
+
end
|
9
|
+
<% end -%>
|
File without changes
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# Oracle/OCI 8i, 9, 10g
|
2
|
+
#
|
3
|
+
# Requires Ruby/OCI8:
|
4
|
+
# http://rubyforge.org/projects/ruby-oci8/
|
5
|
+
#
|
6
|
+
# Specify your database using any valid connection syntax, such as a
|
7
|
+
# tnsnames.ora service name, or an SQL connect string of the form:
|
8
|
+
#
|
9
|
+
# //host:[port][/service name]
|
10
|
+
#
|
11
|
+
# By default prefetch_rows (OCI_ATTR_PREFETCH_ROWS) is set to 100. And
|
12
|
+
# until true bind variables are supported, cursor_sharing is set by default
|
13
|
+
# to 'similar'. Both can be changed in the configuration below; the defaults
|
14
|
+
# are equivalent to specifying:
|
15
|
+
#
|
16
|
+
# prefetch_rows: 100
|
17
|
+
# cursor_sharing: similar
|
18
|
+
#
|
19
|
+
|
20
|
+
development:
|
21
|
+
adapter: mysql2
|
22
|
+
encoding: utf8
|
23
|
+
reconnect: false
|
24
|
+
pool: 5
|
25
|
+
host: localhost
|
26
|
+
database: ningshangOracle
|
27
|
+
username: root
|
28
|
+
password: root
|
29
|
+
socket: /var/run/mysqld/mysqld.sock
|
30
|
+
|
31
|
+
# Warning: The database defined as "test" will be erased and
|
32
|
+
# re-generated from your development database when you run "rake".
|
33
|
+
# Do not set this db to the same as development or production.
|
34
|
+
test:
|
35
|
+
adapter: oracle_enhanced
|
36
|
+
database: oradb.ningshang.me/ningshang
|
37
|
+
username: xxx
|
38
|
+
password: utf8
|
39
|
+
|
40
|
+
production:
|
41
|
+
adapter: oracle_enhanced
|
42
|
+
database: oradb.ningshang.me/ningshang
|
43
|
+
username: xxx
|
44
|
+
password: utf8
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
#If you want to change Oracle enhanced adapter default settings then create initializer file e.g. config/initializers/oracle.rb specify there necessary defaults, e.g.:
|
3
|
+
|
4
|
+
# It is recommended to set time zone in TZ environment variable so that the same timezone will be used by Ruby and by Oracle session
|
5
|
+
#ENV['TZ'] = 'UTC'
|
6
|
+
|
7
|
+
if defined?(ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter)
|
8
|
+
ActiveSupport.on_load(:active_record) do
|
9
|
+
ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.class_eval do
|
10
|
+
# id columns and columns which end with _id will always be converted to integers
|
11
|
+
#self.emulate_integers_by_column_name = true
|
12
|
+
# DATE columns which include "date" in name will be converted to Date, otherwise to Time
|
13
|
+
#self.emulate_dates_by_column_name = true
|
14
|
+
# true and false will be stored as 'Y' and 'N'
|
15
|
+
#self.emulate_booleans_from_strings = true
|
16
|
+
# start primary key sequences from 1 (and not 10000) and take just one next value in each session
|
17
|
+
self.default_sequence_start_value = "1"# NOCACHE INCREMach ENT BY 1"
|
18
|
+
# other settings ...
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#coding: utf-8
|
2
|
+
|
3
|
+
#依赖的服务配置,注意:key不能重复哦!!!
|
4
|
+
|
5
|
+
#==依赖于运行环境的设置
|
6
|
+
development:
|
7
|
+
:customer_service_base_url: http://localhost:5000
|
8
|
+
|
9
|
+
test:
|
10
|
+
:customer_service_base_url: http://customer.api.ilining.cn
|
11
|
+
|
12
|
+
production:
|
13
|
+
:customer_service_base_url: http://customer.api.ilining.cn
|
14
|
+
|
15
|
+
#==依赖于前面值的共有设置
|
16
|
+
#如:开发模式下, AppConfig.services[:customers]==>http://localhost:5000/customers
|
17
|
+
#语法: 键: [依赖键(字符串形式), 附加字串]
|
18
|
+
common:
|
19
|
+
:customers: [customer_service_base_url, customers]
|