ooor 1.4.2 → 1.5.0

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.
@@ -1,5 +1,5 @@
1
1
  # OOOR: Open Object On Rails
2
- # Copyright (C) 2009-2010 Akretion LTDA (<http://www.akretion.com>).
2
+ # Copyright (C) 2009-2011 Akretion LTDA (<http://www.akretion.com>).
3
3
  # Author: Raphaël Valyi
4
4
  #
5
5
  # This program is free software: you can redistribute it and/or modify
@@ -14,15 +14,89 @@
14
14
  #
15
15
  # You should have received a copy of the GNU Affero General Public License
16
16
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ module Ooor
18
+ class ActionWindow
19
+ class << self
20
+ attr_accessor :klass, :openerp_act_window, :views
21
+
22
+ def from_menu(menu)
23
+ act_win_class = Class.new(ActionWindow)
24
+ act_win_class.openerp_act_window = menu.action
25
+ act_win_class.klass = menu.class.const_get(menu.action.res_model)
26
+ act_win_class.views = {}
27
+ act_win_class
28
+ end
29
+
30
+ def from_act_window(act_window)
31
+ act_win_class = Class.new(ActionWindow)
32
+ act_win_class.openerp_act_window = act_window
33
+ act_win_class.klass = act_window.class.const_get(act_window.res_model)
34
+ act_win_class.views = {}
35
+ act_win_class
36
+ end
37
+
38
+ def from_model(act_window_param)
39
+ act_win_class = Class.new(ActionWindow)
40
+ act_win_class.openerp_act_window = IrActionsAct_window.find(:first, :domain=>[['res_model', '=', act_window_param.openerp_model]])
41
+ act_win_class.klass = act_window_param
42
+ act_win_class.views = {}
43
+ act_win_class
44
+ end
45
+
46
+ def get_view_id(mode)
47
+ IrActionsAct_window.read(@openerp_act_window.id, ["view_ids"])["view_ids"]
48
+ IrActionsAct_windowView.read([9,10], ["view_mode"]).each do |view_hash|
49
+ return view_hash["id"] if view_hash["view_mode"] == mode.to_s
50
+ end
51
+ IrUiView.search([['model', '=', act_window_param.openerp_model], ['type', '=', mode.to_s]])
52
+ end
53
+
54
+ def get_fields(mode)
55
+ @views[mode] ||= @klass.fields_view_get(get_view_id(mode), mode)
56
+ @views[mode]['fields'] #TODO order by occurrence in view XML
57
+ end
58
+
59
+ def column_names
60
+ reload_fields_definition
61
+ @column_names ||= ["id"] + get_fields('tree').keys()
62
+ end
63
+
64
+ def columns_hash
65
+ reload_fields_definition
66
+ unless @column_hash
67
+ @column_hash = {"id" => {"string"=>"Id", "type"=>"integer"}}.merge(get_fields('tree'))
68
+ def @column_hash.type
69
+ col_type = @column_hash['type'].to_sym #TODO mapping ?
70
+ col_type == :char && :string || col_type
71
+ end
72
+ end
73
+ @column_hash
74
+ end
75
+
76
+ def primary_key
77
+ "id"
78
+ end
79
+
80
+ def get_arch(mode)
81
+ #TODO
82
+ end
83
+
84
+ def open(mode='tree', ids=nil)#TODO: fix!
85
+ if view_mode.index(mode)
86
+ the_view_id = false
87
+ relations['views'].each do |tuple|
88
+ the_view_id = tuple[0] if tuple[1] == mode
89
+ end
90
+ self.class.ooor.build_object_view(self.class.ooor.const_get(res_model), the_view_id, mode, domain || [], ids, {})
91
+ end
92
+ end
17
93
 
18
- module ActionWindowModule
19
- def open(mode='tree', ids=nil)
20
- if view_mode.index(mode)
21
- the_view_id = false
22
- relations['views'].each do |tuple|
23
- the_view_id = tuple[0] if tuple[1] == mode
94
+ def method_missing(method, *args, &block)
95
+ @klass.send(method, *args, &block)
24
96
  end
25
- self.class.ooor.build_object_view(self.class.ooor.const_get(res_model), the_view_id, mode, domain || [], ids, {})
97
+
26
98
  end
99
+
100
+
27
101
  end
28
102
  end
@@ -1,5 +1,5 @@
1
1
  # OOOR: Open Object On Rails
2
- # Copyright (C) 2009-2010 Akretion LTDA (<http://www.akretion.com>).
2
+ # Copyright (C) 2009-2011 Akretion LTDA (<http://www.akretion.com>).
3
3
  # Author: Raphaël Valyi
4
4
  #
5
5
  # This program is free software: you can redistribute it and/or modify
@@ -19,38 +19,35 @@ require 'app/ui/form_model'
19
19
  require 'app/ui/menu'
20
20
  require 'app/ui/action_window'
21
21
 
22
- module ClientBase
22
+ module Ooor
23
+ module ClientBase
23
24
 
24
- def menu_class
25
- action_window_class()
26
- const_get('ir.ui.menu').send :include, MenuModule
27
- end
28
-
29
- def action_window_class
30
- const_get('ir.actions.act_window').send :include, ActionWindowModule
31
- end
32
-
33
- def get_init_menu(user_id=@config[:user_id])
34
- const_get('res.users').read([user_id], ['menu_id', 'name'], @global_context)
35
- end
25
+ def menu_class
26
+ const_get('ir.ui.menu').send :include, MenuModule
27
+ end
36
28
 
37
- #Ooor can have wizards that are not object related, for instance to configure the initial database:
38
- def old_wizard_step(wizard_name, step='init', wizard_id=nil, form={}, context={})
39
- result = @ir_model_class.old_wizard_step(wizard_name, nil, step, wizard_id, form, {})
40
- FormModel.new(wizard_name, result[0], nil, nil, result[1], [self], @global_context)#TODO set arch and fields
41
- end
29
+ def get_init_menu(user_id=@config[:user_id])
30
+ const_get('res.users').read([user_id], ['menu_id', 'name'], @global_context)
31
+ end
42
32
 
43
- def build_object_view(model_class, view_id, view_mode='form', domain=[], ids=nil, context={}, toolbar=false)
44
- #TODO put in cache eventually:
45
- view = model_class.fields_view_get(view_id, view_mode, @global_context, toolbar)
46
- context = @global_context.merge(context)
47
- ids = const_get(view['model']).search(domain) unless ids #TODO replace by search_read once OpenERP has that
48
- values = const_get(view['model']).read(ids, view['fields'], context)
49
- models = []
50
- ids.each_with_index do |id, k|
51
- models << const_get(view['model']).new(values[k], [], context)
33
+ #Ooor can have wizards that are not object related, for instance to configure the initial database:
34
+ def old_wizard_step(wizard_name, step='init', wizard_id=nil, form={}, context={})
35
+ result = @ir_model_class.old_wizard_step(wizard_name, nil, step, wizard_id, form, {})
36
+ FormModel.new(wizard_name, result[0], nil, nil, result[1], [self], @global_context)#TODO set arch and fields
52
37
  end
53
38
 
54
- FormModel.new(view['name'], view['view_id'], view['arch'], view['fields'], nil, models, context, view['view_id'])
39
+ def build_object_view(model_class, view_id, view_mode='form', domain=[], ids=nil, context={}, toolbar=false)
40
+ #TODO put in cache eventually:
41
+ view = model_class.fields_view_get(view_id, view_mode, @global_context, toolbar)
42
+ context = @global_context.merge(context)
43
+ ids = const_get(view['model']).search(domain) unless ids #TODO replace by search_read once OpenERP has that
44
+ values = const_get(view['model']).read(ids, view['fields'], context)
45
+ models = []
46
+ ids.each_with_index do |id, k|
47
+ models << const_get(view['model']).new(values[k], [], context)
48
+ end
49
+
50
+ FormModel.new(view['name'], view['view_id'], view['arch'], view['fields'], nil, models, context, view['view_id'])
51
+ end
55
52
  end
56
53
  end
@@ -1,5 +1,5 @@
1
1
  # OOOR: Open Object On Rails
2
- # Copyright (C) 2009-2010 Akretion LTDA (<http://www.akretion.com>).
2
+ # Copyright (C) 2009-2011 Akretion LTDA (<http://www.akretion.com>).
3
3
  # Author: Raphaël Valyi
4
4
  #
5
5
  # This program is free software: you can redistribute it and/or modify
@@ -14,85 +14,86 @@
14
14
  #
15
15
  # You should have received a copy of the GNU Affero General Public License
16
16
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ module Ooor
18
+ class FormModel
19
+ attr_accessor :name, :wizard_id, :datas, :arch, :fields, :type, :state, :view_id, :open_object_resources, :view_context
17
20
 
18
- class FormModel
19
- attr_accessor :name, :wizard_id, :datas, :arch, :fields, :type, :state, :view_id, :open_object_resources, :view_context
20
-
21
- def initialize(name, wizard_id, arch, fields, data, open_object_resources, view_context, view_id=nil)
22
- @arch = arch
23
- @fields = fields
24
- @name = name
25
- @wizard_id = wizard_id
26
- @open_object_resources = open_object_resources
27
- @view_context = view_context
28
- if data #it's a wizard
29
- @datas = data['datas'].symbolize_keys!
30
- @type = data['type']
31
- update_wizard_state(data['state'])
21
+ def initialize(name, wizard_id, arch, fields, data, open_object_resources, view_context, view_id=nil)
22
+ @arch = arch
23
+ @fields = fields
24
+ @name = name
25
+ @wizard_id = wizard_id
26
+ @open_object_resources = open_object_resources
27
+ @view_context = view_context
28
+ if data #it's a wizard
29
+ @datas = data['datas'].symbolize_keys!
30
+ @type = data['type']
31
+ update_wizard_state(data['state'])
32
+ end
32
33
  end
33
- end
34
34
 
35
- def to_html
36
- "<div>not implemented in OOOR core gem!</div>"
37
- end
35
+ def to_html
36
+ "<div>not implemented in OOOR core gem!</div>"
37
+ end
38
38
 
39
- def to_s
40
- content = ""
41
- content << @name
42
- @open_object_resources.each do |resource|
43
- content << "\n---------"
44
- @fields.each do |k, v| #TODO no need for new call if many2one
45
- if v['type'] == 'many2one'
46
- content << "\n#{k}: #{resource.relations[k]}"
47
- else
48
- content << "\n#{k}: #{resource.send(k)}"
39
+ def to_s
40
+ content = ""
41
+ content << @name
42
+ @open_object_resources.each do |resource|
43
+ content << "\n---------"
44
+ @fields.each do |k, v| #TODO no need for new call if many2one
45
+ if v['type'] == 'many2one'
46
+ content << "\n#{k}: #{resource.relations[k]}"
47
+ else
48
+ content << "\n#{k}: #{resource.send(k)}"
49
+ end
49
50
  end
50
51
  end
51
52
  end
52
- end
53
53
 
54
- def old_wizard_step(method_symbol, *arguments)
55
- values = @datas.merge!((arguments[0] || {}).symbolize_keys!)
56
- context = @view_context.merge(arguments[1] || {})
57
- if @open_object_resources.size == 1
58
- open_object_resource = @open_object_resources[0]
59
- if open_object_resource.is_a? Ooor
60
- data = open_object_resource.ir_model_class.old_wizard_step(@name, nil, method_symbol, @wizard_id, values, context)
61
- else
62
- data = open_object_resource.class.old_wizard_step(@name, [open_object_resource.id], method_symbol, @wizard_id, values, context)
63
- end
64
- if data[1]['state'] == 'end'
54
+ def old_wizard_step(method_symbol, *arguments)
55
+ values = @datas.merge!((arguments[0] || {}).symbolize_keys!)
56
+ context = @view_context.merge(arguments[1] || {})
57
+ if @open_object_resources.size == 1
58
+ open_object_resource = @open_object_resources[0]
65
59
  if open_object_resource.is_a? Ooor
66
- return 'end'
60
+ data = open_object_resource.ir_model_class.old_wizard_step(@name, nil, method_symbol, @wizard_id, values, context)
67
61
  else
68
- return open_object_resource.reload_from_record!(open_object_resource.class.find(open_object_resource.id, :context => context))
62
+ data = open_object_resource.class.old_wizard_step(@name, [open_object_resource.id], method_symbol, @wizard_id, values, context)
63
+ end
64
+ if data[1]['state'] == 'end'
65
+ if open_object_resource.is_a? Ooor
66
+ return 'end'
67
+ else
68
+ return open_object_resource.reload_from_record!(open_object_resource.class.find(open_object_resource.id, :context => context))
69
+ end
69
70
  end
71
+ @arch = data[1]['arch']
72
+ @fields = data[1]['fields']
73
+ @datas.merge!(data[1]['datas'].symbolize_keys!) unless data[1]['datas'].empty?
74
+ @type = data[1]['type']
75
+ update_wizard_state(data[1]['state']) #FIXME ideally we should remove old methods
76
+ return self
77
+ else
78
+ ids = @open_object_resources.collect{ |open_object_resources| open_object_resources.id }
79
+ return open_object_resource.class.old_wizard_step(@name, ids, method_symbol, @wizard_id, values, context)
70
80
  end
71
- @arch = data[1]['arch']
72
- @fields = data[1]['fields']
73
- @datas.merge!(data[1]['datas'].symbolize_keys!) unless data[1]['datas'].empty?
74
- @type = data[1]['type']
75
- update_wizard_state(data[1]['state']) #FIXME ideally we should remove old methods
76
- return self
77
- else
78
- ids = @open_object_resources.collect{ |open_object_resources| open_object_resources.id }
79
- return open_object_resource.class.old_wizard_step(@name, ids, method_symbol, @wizard_id, values, context)
80
81
  end
81
- end
82
82
 
83
- private
83
+ private
84
84
 
85
- def update_wizard_state(state)
86
- if state.is_a? Array
87
- @state = state
88
- @state.each do |state_item| #generates autocompletion handles
89
- self.class_eval do
90
- define_method state_item[0] do |*args|
91
- self.send :old_wizard_step, *[state_item[0], *args]
85
+ def update_wizard_state(state)
86
+ if state.is_a? Array
87
+ @state = state
88
+ @state.each do |state_item| #generates autocompletion handles
89
+ self.class_eval do
90
+ define_method state_item[0] do |*args|
91
+ self.send :old_wizard_step, *[state_item[0], *args]
92
+ end
92
93
  end
93
94
  end
94
95
  end
95
96
  end
96
- end
97
97
 
98
+ end
98
99
  end
@@ -1,5 +1,5 @@
1
1
  # OOOR: Open Object On Rails
2
- # Copyright (C) 2009-2010 Akretion LTDA (<http://www.akretion.com>).
2
+ # Copyright (C) 2009-2011 Akretion LTDA (<http://www.akretion.com>).
3
3
  # Author: Raphaël Valyi
4
4
  #
5
5
  # This program is free software: you can redistribute it and/or modify
@@ -16,18 +16,19 @@
16
16
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
 
18
18
  require 'app/ui/action_window'
19
+ module Ooor
20
+ module MenuModule
19
21
 
20
- module MenuModule
22
+ attr_accessor :menu_action
21
23
 
22
- attr_accessor :menu_action
24
+ def menu_action
25
+ #TODO put in cache eventually:
26
+ action_values = self.class.ooor.const_get('ir.values').rpc_execute('get', 'action', 'tree_but_open', [['ir.ui.menu', id]], false, self.class.ooor.global_context)[0][2]#get already exists
27
+ @menu_action = self.class.ooor.const_get('ir.actions.act_window').new(action_values, []) #TODO deal with action reference instead
28
+ end
23
29
 
24
- def menu_action
25
- #TODO put in cache eventually:
26
- action_values = self.class.ooor.const_get('ir.values').rpc_execute('get', 'action', 'tree_but_open', [['ir.ui.menu', id]], false, self.class.ooor.global_context)[0][2]#get already exists
27
- @menu_action = self.class.ooor.const_get('ir.actions.act_window').new(action_values, []) #TODO deal with action reference instead
28
- end
29
-
30
- def open(mode='tree', ids=nil)
31
- menu_action.open(mode, ids)
30
+ def open(mode='tree', ids=nil)
31
+ menu_action.open(mode, ids)
32
+ end
32
33
  end
33
34
  end
@@ -23,90 +23,103 @@ require 'app/models/common_service'
23
23
  require 'app/models/base64'
24
24
  require 'app/ui/client_base'
25
25
 
26
- class Ooor
27
- include UML
28
- include DbService
29
- include CommonService
30
- include ClientBase
26
+ module Ooor
27
+ def self.new(*args)
28
+ Ooor.send :new, *args
29
+ end
30
+
31
+ class Ooor
32
+ include UML
33
+ include DbService
34
+ include CommonService
35
+ include ClientBase
31
36
 
32
- cattr_accessor :default_ooor, :default_config
33
- attr_accessor :logger, :config, :loaded_models, :base_url, :global_context, :ir_model_class
37
+ cattr_accessor :default_ooor, :default_config
38
+ attr_accessor :logger, :config, :loaded_models, :base_url, :global_context, :ir_model_class
34
39
 
35
- #load the custom configuration
36
- def self.load_config(config_file=nil, env=nil)
37
- config_file ||= defined?(RAILS_ROOT) && "#{RAILS_ROOT}/config/ooor.yml" || 'ooor.yml'
38
- @config = YAML.load_file(config_file)[env || 'development']
39
- rescue SystemCallError
40
- @logger.error """failed to load OOOR yaml configuration file.
41
- make sure your app has a #{config_file} file correctly set up
42
- if not, just copy/paste the default ooor.yml file from the OOOR Gem
43
- to #{RAILS_ROOT}/config/ooor.yml and customize it properly\n\n"""
44
- raise
45
- end
40
+ #load the custom configuration
41
+ def self.load_config(config_file=nil, env=nil)
42
+ config_file ||= defined?(Rails.root) && "#{Rails.root}/config/ooor.yml" || 'ooor.yml'
43
+ @config = YAML.load_file(config_file)[env || 'development']
44
+ rescue SystemCallError
45
+ puts """failed to load OOOR yaml configuration file.
46
+ make sure your app has a #{config_file} file correctly set up
47
+ if not, just copy/paste the default ooor.yml file from the OOOR Gem
48
+ to #{Rails.root}/config/ooor.yml and customize it properly\n\n"""
49
+ {}
50
+ end
46
51
 
47
- def initialize(config, env=false)
48
- @config = config.is_a?(String) ? Ooor.load_config(config, env) : config
49
- @config.symbolize_keys!
50
- @logger = ((defined?(Rails) && $0 != 'irb' || config[:force_rails_logger]) ? Rails.logger : Logger.new($stdout))
51
- @logger.level = config[:log_level] if config[:log_level]
52
- OpenObjectResource.logger = @logger
53
- @base_url = config[:url].gsub(/\/$/,'')
54
- @loaded_models = []
55
- scope = Module.new and Object.const_set(config[:scope_prefix], scope) if config[:scope_prefix]
56
- if config[:database]
57
- load_models()
52
+ def initialize(config, env=false)
53
+ @config = config.is_a?(String) ? Ooor.load_config(config, env) : config
54
+ @config.symbolize_keys!
55
+ @logger = ((defined?(Rails) && $0 != 'irb' && Rails.logger || config[:force_rails_logger]) ? Rails.logger : Logger.new($stdout))
56
+ @logger.level = config[:log_level] if config[:log_level]
57
+ OpenObjectResource.logger = @logger
58
+ @base_url = config[:url].gsub(/\/$/,'')
59
+ @loaded_models = []
60
+ scope = Module.new and Object.const_set(config[:scope_prefix], scope) if config[:scope_prefix]
61
+ load_models() if config[:database]
58
62
  end
59
- end
60
63
 
61
- def const_get(model_key)
62
- @ir_model_class.const_get(model_key)
63
- end
64
+ def const_get(model_key)
65
+ @ir_model_class.const_get(model_key)
66
+ end
64
67
 
65
- def load_models(to_load_models=@config[:models])
66
- @global_context = @config[:global_context] || {}
67
- global_login(@config[:username] || 'admin', @config[:password] || 'admin')
68
- @ir_model_class = define_openerp_model({'model' => 'ir.model'}, @config[:scope_prefix])
69
- if to_load_models #we load only a customized subset of the OpenERP models
70
- model_ids = @ir_model_class.search([['model', 'in', to_load_models]])
71
- else #we load all the models
72
- model_ids = @ir_model_class.search() - [1, 2]
68
+ def load_models(to_load_models=@config[:models])
69
+ @global_context = @config[:global_context] || {}
70
+ global_login(@config[:username] || 'admin', @config[:password] || 'admin')
71
+ @ir_model_class = define_openerp_model({'model' => 'ir.model'}, @config[:scope_prefix])
72
+ if to_load_models #we load only a customized subset of the OpenERP models
73
+ model_ids = @ir_model_class.search([['model', 'in', to_load_models]])
74
+ else #we load all the models
75
+ model_ids = @ir_model_class.search() - [1]
76
+ end
77
+ models = @ir_model_class.read(model_ids, ['name', 'model', 'id', 'info', 'state'])#, 'field_id', 'access_ids'])
78
+ @global_context.merge!({}).merge!(@config[:global_context] || {})
79
+ models.each {|openerp_model| define_openerp_model(openerp_model, @config[:scope_prefix])}
73
80
  end
74
- models = @ir_model_class.read(model_ids, ['name', 'model', 'id', 'info', 'state', 'field_id', 'access_ids'])
75
- @global_context.merge!({}).merge!(@config[:global_context] || {})
76
- models.each {|openerp_model| define_openerp_model(openerp_model, @config[:scope_prefix])}
77
- end
78
81
 
79
- def define_openerp_model(param, scope_prefix=nil, url=nil, database=nil, user_id=nil, pass=nil)
80
- klass = Class.new(OpenObjectResource)
81
- klass.ooor = self
82
- klass.site = url || @base_url
83
- klass.user = user_id
84
- klass.password = pass
85
- klass.database = database
86
- klass.openerp_model = param['model']
87
- klass.openerp_id = url || param['id']
88
- klass.info = (param['info'] || '').gsub("'",' ')
89
- klass.name = param['name']
90
- klass.state = param['state']
91
- klass.field_ids = param['field_id']
92
- klass.access_ids = param['access_ids']
93
- klass.many2one_relations = {}
94
- klass.one2many_relations = {}
95
- klass.many2many_relations = {}
96
- klass.polymorphic_m2o_relations = {}
97
- klass.relations_keys = []
98
- klass.fields = {}
99
- klass.scope_prefix = scope_prefix
100
- model_class_name = klass.class_name_from_model_key
101
- @logger.info "registering #{model_class_name} as a Rails ActiveResource Model wrapper for OpenObject #{param['model']} model"
102
- (scope_prefix ? Object.const_get(scope_prefix) : Object).const_set(model_class_name, klass)
103
- @loaded_models.push(klass)
104
- klass
105
- end
82
+ def define_openerp_model(param, scope_prefix=nil, url=nil, database=nil, user_id=nil, pass=nil)
83
+ klass = Class.new(OpenObjectResource)
84
+ klass.ooor = self
85
+ klass.site = url || @base_url
86
+ klass.user = user_id
87
+ klass.password = pass
88
+ klass.database = database
89
+ klass.openerp_model = param['model']
90
+ klass.openerp_id = url || param['id']
91
+ klass.info = (param['info'] || '').gsub("'",' ')
92
+ model_class_name = klass.class_name_from_model_key
93
+ klass.name = model_class_name
94
+ klass.state = param['state']
95
+ #klass.field_ids = param['field_id']
96
+ #klass.access_ids = param['access_ids']
97
+ klass.many2one_associations = {}
98
+ klass.one2many_associations = {}
99
+ klass.many2many_associations = {}
100
+ klass.polymorphic_m2o_associations = {}
101
+ klass.associations_keys = []
102
+ klass.fields = {}
103
+ klass.scope_prefix = scope_prefix
104
+ @logger.info "registering #{model_class_name} as an ActiveResource proxy for OpenObject #{param['model']} model"
105
+ (scope_prefix ? Object.const_get(scope_prefix) : Object).const_set(model_class_name, klass)
106
+ @loaded_models.push(klass)
107
+ klass
108
+ end
106
109
 
110
+ end
111
+
112
+ if defined?(Rails) #Optional autoload in Rails:
113
+ if Rails.version[0] == "3"[0] #Rails 3 bootstrap
114
+ class Railtie < Rails::Railtie
115
+ initializer "ooor.middleware" do |app|
116
+ Ooor.default_config = Ooor.load_config(false, RAILS_ENV)
117
+ Ooor.default_ooor = Ooor.new(Ooor.default_config) if Ooor.default_config['bootstrap']
118
+ end
119
+ end
120
+ else #Rails 2.3.x bootstrap
121
+ Ooor.default_config = Ooor.load_config(false, RAILS_ENV)
122
+ Ooor.default_ooor = Ooor.new(Ooor.default_config) if Ooor.default_config['bootstrap']
123
+ end
124
+ end
107
125
  end
108
-
109
- if defined?(Rails) #Optionnal autoload in Rails:
110
- Ooor.default_config = Ooor.load_config(false, RAILS_ENV)
111
- Ooor.default_ooor = Ooor.new(Ooor.default_config) if Ooor.default_config['bootstrap']
112
- end