ooor 1.6.5 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.md +131 -88
- data/bin/ooor +4 -2
- data/lib/app/helpers/core_helpers.rb +137 -0
- data/lib/app/models/base64.rb +14 -25
- data/lib/app/models/common_service.rb +3 -15
- data/lib/app/models/db_service.rb +6 -17
- data/lib/app/models/ooor_client.rb +3 -15
- data/lib/app/models/open_object_resource.rb +40 -41
- data/lib/app/models/relation.rb +4 -16
- data/lib/app/models/serialization.rb +5 -0
- data/lib/app/models/type_casting.rb +8 -3
- data/lib/app/models/uml.rb +26 -35
- data/lib/app/ui/action_window.rb +13 -19
- data/lib/app/ui/client_base.rb +4 -21
- data/lib/app/ui/form_model.rb +4 -15
- data/lib/ooor.rb +50 -46
- data/spec/ooor_spec.rb +49 -29
- metadata +38 -37
- data/agpl-3.0-licence.txt +0 -661
- data/lib/app/ui/menu.rb +0 -34
data/lib/app/ui/action_window.rb
CHANGED
@@ -1,19 +1,8 @@
|
|
1
|
-
# OOOR:
|
2
|
-
# Copyright (C) 2009-
|
1
|
+
# OOOR: OpenObject On Ruby
|
2
|
+
# Copyright (C) 2009-2012 Akretion LTDA (<http://www.akretion.com>).
|
3
3
|
# Author: Raphaël Valyi
|
4
|
-
#
|
5
|
-
|
6
|
-
# it under the terms of the GNU Affero General Public License as
|
7
|
-
# published by the Free Software Foundation, either version 3 of the
|
8
|
-
# License, or (at your option) any later version.
|
9
|
-
#
|
10
|
-
# This program is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU Affero General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU Affero General Public License
|
16
|
-
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
4
|
+
# Licensed under the MIT license, see MIT-LICENSE file
|
5
|
+
|
17
6
|
module Ooor
|
18
7
|
class ActionWindow
|
19
8
|
class << self
|
@@ -43,10 +32,15 @@ module Ooor
|
|
43
32
|
act_win_class
|
44
33
|
end
|
45
34
|
|
35
|
+
def get_url(mode='tree', id=nil, tab=nil) #TODO deal with visible tab in Javascript, possibly hacking web-client
|
36
|
+
url = "#{self.ooor.base_url.gsub("xmlrpc", "web/webclient/home")}#action_id=#{@openerp_act_window.id}&view_type=#{mode}"
|
37
|
+
url += "&id=#{id}" if id
|
38
|
+
end
|
39
|
+
|
46
40
|
def get_view_id(mode)
|
47
|
-
IrActionsAct_window.read(@openerp_act_window.id, ["view_ids"])["view_ids"]
|
48
|
-
IrActionsAct_windowView.read(
|
49
|
-
return view_hash["
|
41
|
+
ids = IrActionsAct_window.read(@openerp_act_window.id, ["view_ids"])["view_ids"]
|
42
|
+
IrActionsAct_windowView.read(ids, ["view_mode", "view_id"]).each do |view_hash|
|
43
|
+
return view_hash["view_id"][0] if view_hash["view_id"] && view_hash["view_mode"] == mode.to_s
|
50
44
|
end
|
51
45
|
IrUiView.search([['model', '=', act_window_param.openerp_model], ['type', '=', mode.to_s]])
|
52
46
|
end
|
@@ -99,4 +93,4 @@ module Ooor
|
|
99
93
|
|
100
94
|
|
101
95
|
end
|
102
|
-
end
|
96
|
+
end
|
data/lib/app/ui/client_base.rb
CHANGED
@@ -1,31 +1,14 @@
|
|
1
|
-
# OOOR:
|
2
|
-
# Copyright (C) 2009-
|
1
|
+
# OOOR: OpenObject On Ruby
|
2
|
+
# Copyright (C) 2009-2012 Akretion LTDA (<http://www.akretion.com>).
|
3
3
|
# Author: Raphaël Valyi
|
4
|
-
#
|
5
|
-
# This program is free software: you can redistribute it and/or modify
|
6
|
-
# it under the terms of the GNU Affero General Public License as
|
7
|
-
# published by the Free Software Foundation, either version 3 of the
|
8
|
-
# License, or (at your option) any later version.
|
9
|
-
#
|
10
|
-
# This program is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU Affero General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU Affero General Public License
|
16
|
-
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
4
|
+
# Licensed under the MIT license, see MIT-LICENSE file
|
17
5
|
|
18
6
|
require 'app/ui/form_model'
|
19
|
-
require 'app/ui/menu'
|
20
7
|
require 'app/ui/action_window'
|
21
8
|
|
22
9
|
module Ooor
|
23
10
|
module ClientBase
|
24
11
|
|
25
|
-
def menu_class
|
26
|
-
const_get('ir.ui.menu').send :include, MenuModule
|
27
|
-
end
|
28
|
-
|
29
12
|
def get_init_menu(user_id=@config[:user_id])
|
30
13
|
const_get('res.users').read([user_id], ['menu_id', 'name'], @global_context)
|
31
14
|
end
|
@@ -50,4 +33,4 @@ module Ooor
|
|
50
33
|
FormModel.new(view['name'], view['view_id'], view['arch'], view['fields'], nil, models, context, view['view_id'])
|
51
34
|
end
|
52
35
|
end
|
53
|
-
end
|
36
|
+
end
|
data/lib/app/ui/form_model.rb
CHANGED
@@ -1,19 +1,8 @@
|
|
1
|
-
# OOOR:
|
2
|
-
# Copyright (C) 2009-
|
1
|
+
# OOOR: OpenObject On Ruby
|
2
|
+
# Copyright (C) 2009-2012 Akretion LTDA (<http://www.akretion.com>).
|
3
3
|
# Author: Raphaël Valyi
|
4
|
-
#
|
5
|
-
|
6
|
-
# it under the terms of the GNU Affero General Public License as
|
7
|
-
# published by the Free Software Foundation, either version 3 of the
|
8
|
-
# License, or (at your option) any later version.
|
9
|
-
#
|
10
|
-
# This program is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU Affero General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU Affero General Public License
|
16
|
-
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
4
|
+
# Licensed under the MIT license, see MIT-LICENSE file
|
5
|
+
|
17
6
|
module Ooor
|
18
7
|
class FormModel
|
19
8
|
attr_accessor :name, :wizard_id, :datas, :arch, :fields, :type, :state, :view_id, :open_object_resources, :view_context
|
data/lib/ooor.rb
CHANGED
@@ -1,23 +1,10 @@
|
|
1
|
-
# OOOR:
|
2
|
-
# Copyright (C) 2009-
|
1
|
+
# OOOR: OpenObject On Ruby
|
2
|
+
# Copyright (C) 2009-2012 Akretion LTDA (<http://www.akretion.com>).
|
3
3
|
# Author: Raphaël Valyi
|
4
|
-
#
|
5
|
-
# This program is free software: you can redistribute it and/or modify
|
6
|
-
# it under the terms of the GNU Affero General Public License as
|
7
|
-
# published by the Free Software Foundation, either version 3 of the
|
8
|
-
# License, or (at your option) any later version.
|
9
|
-
#
|
10
|
-
# This program is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU Affero General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU Affero General Public License
|
16
|
-
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
4
|
+
# Licensed under the MIT license, see MIT-LICENSE file
|
17
5
|
|
18
6
|
require 'logger'
|
19
7
|
require 'app/models/open_object_resource'
|
20
|
-
require 'app/models/uml'
|
21
8
|
require 'app/models/db_service'
|
22
9
|
require 'app/models/common_service'
|
23
10
|
require 'app/models/base64'
|
@@ -27,9 +14,19 @@ module Ooor
|
|
27
14
|
def self.new(*args)
|
28
15
|
Ooor.send :new, *args
|
29
16
|
end
|
17
|
+
|
18
|
+
def self.xtend(model_name, &block)
|
19
|
+
@extensions ||= {}
|
20
|
+
@extensions[model_name] ||= []
|
21
|
+
@extensions[model_name] << block
|
22
|
+
@extensions
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.extensions
|
26
|
+
@extensions
|
27
|
+
end
|
30
28
|
|
31
29
|
class Ooor
|
32
|
-
include UML
|
33
30
|
include DbService
|
34
31
|
include CommonService
|
35
32
|
include ClientBase
|
@@ -91,43 +88,50 @@ module Ooor
|
|
91
88
|
def load_models(to_load_models=@config[:models])
|
92
89
|
@global_context = @config[:global_context] || {}
|
93
90
|
global_login(@config[:username] || 'admin', @config[:password] || 'admin')
|
91
|
+
([File.dirname(__FILE__) + '/app/helpers/*'] + (@config[:helper_paths] || [])).each {|dir| Dir[dir].each { |file| require file }}
|
94
92
|
@ir_model_class = define_openerp_model({'model' => 'ir.model'}, @config[:scope_prefix])
|
95
93
|
if to_load_models #we load only a customized subset of the OpenERP models
|
96
94
|
model_ids = @ir_model_class.search([['model', 'in', to_load_models]])
|
97
|
-
else
|
98
|
-
model_ids = @
|
95
|
+
else
|
96
|
+
model_ids = @ir_model_class.search() - [1]
|
99
97
|
end
|
100
98
|
models = @ir_model_class.read(model_ids, ['model'])#['name', 'model', 'id', 'info', 'state'])#, 'field_id', 'access_ids'])
|
101
99
|
@global_context.merge!({}).merge!(@config[:global_context] || {})
|
102
|
-
models.each {|openerp_model| define_openerp_model(openerp_model, @config[:scope_prefix])}
|
100
|
+
models.each {|openerp_model| define_openerp_model(openerp_model, @config[:scope_prefix], nil, nil, nil, nil, @config[:reload])}
|
103
101
|
end
|
104
102
|
|
105
|
-
def define_openerp_model(param, scope_prefix=nil, url=nil, database=nil, user_id=nil, pass=nil)
|
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
|
-
|
103
|
+
def define_openerp_model(param, scope_prefix=nil, url=nil, database=nil, user_id=nil, pass=nil, reload=false)
|
104
|
+
model_class_name = OpenObjectResource.class_name_from_model_key(param['model'])
|
105
|
+
scope = scope_prefix ? Object.const_get(scope_prefix) : Object
|
106
|
+
if reload || !scope.const_defined?(model_class_name)
|
107
|
+
klass = Class.new(OpenObjectResource)
|
108
|
+
klass.ooor = self
|
109
|
+
klass.site = url || @base_url
|
110
|
+
klass.user = user_id
|
111
|
+
klass.password = pass
|
112
|
+
klass.database = database
|
113
|
+
klass.openerp_model = param['model']
|
114
|
+
klass.openerp_id = url || param['id']
|
115
|
+
klass.info = (param['info'] || '').gsub("'",' ')
|
116
|
+
klass.name = model_class_name
|
117
|
+
klass.state = param['state']
|
118
|
+
#klass.field_ids = param['field_id']
|
119
|
+
#klass.access_ids = param['access_ids']
|
120
|
+
klass.many2one_associations = {}
|
121
|
+
klass.one2many_associations = {}
|
122
|
+
klass.many2many_associations = {}
|
123
|
+
klass.polymorphic_m2o_associations = {}
|
124
|
+
klass.associations_keys = []
|
125
|
+
klass.fields = {}
|
126
|
+
klass.scope_prefix = scope_prefix
|
127
|
+
@logger.debug "registering #{model_class_name} as an ActiveResource proxy for OpenObject #{param['model']} model"
|
128
|
+
scope.const_set(model_class_name, klass)
|
129
|
+
(::Ooor.extensions[param['model']] || []).each {|block| klass.class_eval(&block)}
|
130
|
+
@loaded_models.push(klass)
|
131
|
+
return klass
|
132
|
+
else
|
133
|
+
return scope.const_get(model_class_name)
|
134
|
+
end
|
131
135
|
end
|
132
136
|
end
|
133
137
|
|
data/spec/ooor_spec.rb
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
# OOOR: OpenObject On Ruby
|
2
|
+
# Copyright (C) 2009-2012 Akretion LTDA (<http://www.akretion.com>).
|
3
|
+
# Author: Raphaël Valyi
|
4
|
+
# Licensed under the MIT license, see MIT-LICENSE file
|
5
|
+
|
1
6
|
require File.dirname(__FILE__) + '/../lib/ooor'
|
2
7
|
|
3
8
|
#RSpec executable specification; see http://rspec.info/ for more information.
|
@@ -34,34 +39,30 @@ describe Ooor do
|
|
34
39
|
end
|
35
40
|
|
36
41
|
it "should be able to load a profile" do
|
37
|
-
accounting_module_ids = IrModuleModule.search(['|', ['name','=', '
|
42
|
+
accounting_module_ids = IrModuleModule.search(['|', ['name','=', 'sale'], ['name','=', 'account_voucher']])
|
38
43
|
accounting_module_ids.each do |accounting_module_id|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
conf2 = ResConfigView.create(:view => 'extended')
|
43
|
-
conf2.action_next
|
44
|
-
conf3 = BaseSetupCompany.create(:name => 'Akretion')
|
45
|
-
conf3.action_next
|
46
|
-
conf4 = BaseSetupInstaller.create(:sale => 1)
|
47
|
-
conf4.action_next
|
48
|
-
@ooor.load_models
|
49
|
-
config5 = AccountInstaller.create(:charts => 'configurable')
|
50
|
-
config5.action_next
|
51
|
-
@ooor.loaded_models.should_not be_empty
|
44
|
+
mod = IrModuleModule.find(accounting_module_id)
|
45
|
+
unless mod.state == "installed"
|
46
|
+
mod.button_install
|
52
47
|
end
|
53
48
|
end
|
49
|
+
wizard = BaseModuleUpgrade.create
|
50
|
+
wizard.upgrade_module
|
51
|
+
@ooor.load_models
|
52
|
+
# config5 = AccountInstaller.create(:charts => 'configurable')
|
53
|
+
# config5.action_next
|
54
|
+
@ooor.loaded_models.should_not be_empty
|
54
55
|
end
|
55
56
|
|
56
57
|
it "should be able to configure the database" do
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
w3 = @ooor.const_get('wizard.multi.charts.accounts').create
|
64
|
-
w3.action_create
|
58
|
+
# chart_module_id = IrModuleModule.search([['category_id', '=', 'Account Charts'], ['name','=', 'l10n_fr']])[0]
|
59
|
+
if AccountTax.search.empty?
|
60
|
+
w1 = @ooor.const_get('account.installer').create(:charts => "configurable")
|
61
|
+
w1.action_next
|
62
|
+
w1 = @ooor.const_get('wizard.multi.charts.accounts').create(:charts => "configurable", :code_digits => 2)
|
63
|
+
w1.action_next
|
64
|
+
# w3 = @ooor.const_get('wizard.multi.charts.accounts').create
|
65
|
+
# w3.action_create
|
65
66
|
end
|
66
67
|
end
|
67
68
|
end
|
@@ -111,8 +112,8 @@ describe Ooor do
|
|
111
112
|
partners = ResPartner.find(:all, :params => {:supplier => true})
|
112
113
|
partners.should_not be_empty
|
113
114
|
end
|
114
|
-
|
115
|
-
it "should mimic ActiveResource
|
115
|
+
|
116
|
+
it "should mimic ActiveResource scopinging with first" do
|
116
117
|
partner = ResPartner.find(:first, :params => {:customer => true})
|
117
118
|
partner.should be_kind_of ResPartner
|
118
119
|
end
|
@@ -133,7 +134,7 @@ describe Ooor do
|
|
133
134
|
o = SaleOrder.find(1)
|
134
135
|
o.date_order.should be_kind_of(Date)
|
135
136
|
m = StockMove.find(1)
|
136
|
-
m.date.should be_kind_of(
|
137
|
+
m.date.should be_kind_of(DateTime)
|
137
138
|
end
|
138
139
|
|
139
140
|
it "should be able to call any Class method" do
|
@@ -383,15 +384,15 @@ describe Ooor do
|
|
383
384
|
end
|
384
385
|
|
385
386
|
it "should accept rendering options" do
|
386
|
-
SaleOrder.print_uml(:
|
387
|
+
SaleOrder.print_uml({:detailed => true}).should be_true
|
387
388
|
end
|
388
389
|
end
|
389
390
|
|
390
391
|
|
391
392
|
describe "Multi-instance and class name scoping" do
|
392
393
|
before(:all) do
|
393
|
-
@ooor1 = Ooor.new(:url => @url, :username => @username, :password => @password, :database => @database, :scope_prefix => 'OE1', :models => ['product.product'])
|
394
|
-
@ooor2 = Ooor.new(:url => @url, :username => @username, :password => @password, :database => @database, :scope_prefix => 'OE2', :models => ['product.product'])
|
394
|
+
@ooor1 = Ooor.new(:url => @url, :username => @username, :password => @password, :database => @database, :scope_prefix => 'OE1', :models => ['product.product'], :reload => true)
|
395
|
+
@ooor2 = Ooor.new(:url => @url, :username => @username, :password => @password, :database => @database, :scope_prefix => 'OE2', :models => ['product.product'], :reload => true)
|
395
396
|
end
|
396
397
|
|
397
398
|
it "should still be possible to find a ressource using an absolute id" do
|
@@ -405,4 +406,23 @@ describe Ooor do
|
|
405
406
|
end
|
406
407
|
end
|
407
408
|
|
408
|
-
|
409
|
+
|
410
|
+
describe "Ruby OpenERP extensions" do
|
411
|
+
before(:all) do
|
412
|
+
@ooor = Ooor.new(:url => @url, :username => @username, :password => @password, :database => @database, :helper_paths => [File.dirname(__FILE__) + '/helpers/*'], :reload => true)
|
413
|
+
end
|
414
|
+
|
415
|
+
it "should have default core helpers loaded" do
|
416
|
+
mod = IrModuleModule.find(:first, :domain=>['name', '=', 'sale'])
|
417
|
+
mod.print_dependency_graph
|
418
|
+
end
|
419
|
+
|
420
|
+
it "should load custom helper paths" do
|
421
|
+
IrModuleModule.say_hello.should == "Hello"
|
422
|
+
mod = IrModuleModule.find(:first, :domain=>['name', '=', 'sale'])
|
423
|
+
mod.say_name.should == "sale"
|
424
|
+
end
|
425
|
+
|
426
|
+
end
|
427
|
+
|
428
|
+
end
|
metadata
CHANGED
@@ -1,39 +1,44 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ooor
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.7.0
|
4
5
|
prerelease:
|
5
|
-
version: 1.6.5
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Raphael Valyi - www.akretion.com
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-06-29 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: activeresource
|
17
|
-
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
21
|
-
- -
|
22
|
-
- !ruby/object:Gem::Version
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
23
21
|
version: 2.3.5
|
24
22
|
type: :runtime
|
25
|
-
|
26
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 2.3.5
|
30
|
+
description: OOOR exposes business object proxies to your Ruby (Rails or not) application,
|
31
|
+
that maps seamlessly to your remote OpenObject/OpenERP server using webservices.
|
32
|
+
It extends the standard ActiveResource API. Running on JRuby, OOOR also offers a
|
33
|
+
convenient bridge between OpenERP and the Java eco-system
|
27
34
|
email: rvalyi@akretion.com
|
28
|
-
executables:
|
35
|
+
executables:
|
29
36
|
- ooor
|
30
37
|
extensions: []
|
31
|
-
|
32
38
|
extra_rdoc_files: []
|
33
|
-
|
34
|
-
files:
|
39
|
+
files:
|
35
40
|
- README.md
|
36
|
-
-
|
41
|
+
- MIT-LICENSE
|
37
42
|
- lib/ooor.rb
|
38
43
|
- ooor.yml
|
39
44
|
- lib/app/models/open_object_resource.rb
|
@@ -48,35 +53,31 @@ files:
|
|
48
53
|
- lib/app/ui/action_window.rb
|
49
54
|
- lib/app/ui/client_base.rb
|
50
55
|
- lib/app/ui/form_model.rb
|
51
|
-
- lib/app/
|
56
|
+
- lib/app/helpers/core_helpers.rb
|
52
57
|
- spec/ooor_spec.rb
|
53
58
|
- bin/ooor
|
54
59
|
homepage: http://github.com/rvalyi/ooor
|
55
60
|
licenses: []
|
56
|
-
|
57
61
|
post_install_message:
|
58
62
|
rdoc_options: []
|
59
|
-
|
60
|
-
require_paths:
|
63
|
+
require_paths:
|
61
64
|
- lib
|
62
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
63
66
|
none: false
|
64
|
-
requirements:
|
65
|
-
- -
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version:
|
68
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
72
|
none: false
|
70
|
-
requirements:
|
71
|
-
- -
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version:
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
74
77
|
requirements: []
|
75
|
-
|
76
78
|
rubyforge_project:
|
77
|
-
rubygems_version: 1.8.
|
79
|
+
rubygems_version: 1.8.24
|
78
80
|
signing_key:
|
79
81
|
specification_version: 3
|
80
82
|
summary: OOOR - OpenObject On Ruby
|
81
83
|
test_files: []
|
82
|
-
|