kangaroo 0.0.3 → 0.1.0.alpha1
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/.gitignore +6 -1
- data/Gemfile +11 -0
- data/README.md +23 -132
- data/Rakefile +0 -8
- data/bin/kang +5 -64
- data/bin/kangdoc +21 -0
- data/bin/kangviz +21 -0
- data/config/kangaroo.yml.sample +12 -2
- data/docs/Architecture.md +1 -0
- data/docs/Classes.md +67 -0
- data/docs/Installation.md +2 -1
- data/docs/Usage.md +1 -0
- data/kangaroo.gemspec +8 -8
- data/lib/kangaroo.rb +3 -2
- data/lib/kangaroo/commands/base.rb +123 -0
- data/lib/kangaroo/commands/cli.rb +65 -0
- data/lib/kangaroo/commands/doc.rb +44 -0
- data/lib/kangaroo/commands/endpoint.rb +33 -0
- data/lib/kangaroo/commands/viz.rb +58 -0
- data/lib/kangaroo/doc.rb +2 -0
- data/lib/kangaroo/exception.rb +3 -0
- data/lib/kangaroo/hirb.rb +2 -1
- data/lib/kangaroo/model/associations.rb +33 -0
- data/lib/kangaroo/model/associations/many2one.rb +43 -0
- data/lib/kangaroo/model/associations/one2many.rb +41 -0
- data/lib/kangaroo/model/attributes.rb +88 -93
- data/lib/kangaroo/model/base.rb +44 -15
- data/lib/kangaroo/model/condition_normalizer.rb +7 -7
- data/lib/kangaroo/model/data_import.rb +28 -0
- data/lib/kangaroo/model/default_attributes.rb +20 -14
- data/lib/kangaroo/model/dynamic_finder.rb +42 -0
- data/lib/kangaroo/model/field.rb +52 -1
- data/lib/kangaroo/model/field/readonly.rb +39 -0
- data/lib/kangaroo/model/finder.rb +6 -2
- data/lib/kangaroo/model/inspector.rb +1 -4
- data/lib/kangaroo/model/mass_import.rb +42 -0
- data/lib/kangaroo/model/open_object_orm.rb +51 -5
- data/lib/kangaroo/model/persistence.rb +43 -19
- data/lib/kangaroo/model/readonly_attributes.rb +43 -0
- data/lib/kangaroo/model/relation.rb +40 -9
- data/lib/kangaroo/model/remote_execute.rb +1 -1
- data/lib/kangaroo/model/required_attributes.rb +26 -0
- data/lib/kangaroo/railtie.rb +13 -3
- data/lib/kangaroo/ruby_adapter/base.rb +2 -1
- data/lib/kangaroo/ruby_adapter/class_definition.rb +18 -3
- data/lib/kangaroo/ruby_adapter/fields.rb +27 -2
- data/lib/kangaroo/ruby_adapter/many2one.rb +38 -0
- data/lib/kangaroo/ruby_adapter/one2many.rb +31 -0
- data/lib/kangaroo/util/client.rb +29 -4
- data/lib/kangaroo/util/configuration.rb +15 -10
- data/lib/kangaroo/util/database.rb +8 -8
- data/lib/kangaroo/util/loader.rb +18 -22
- data/lib/kangaroo/util/loader/information_repository.rb +56 -0
- data/lib/kangaroo/util/loader/namespace.rb +1 -1
- data/lib/kangaroo/util/loader/reflection.rb +61 -0
- data/lib/kangaroo/util/loader/root_namespace.rb +12 -21
- data/lib/kangaroo/util/proxy.rb +9 -0
- data/lib/kangaroo/util/proxy/common.rb +28 -4
- data/lib/kangaroo/util/proxy/db.rb +14 -0
- data/lib/kangaroo/util/proxy/object.rb +40 -1
- data/lib/kangaroo/util/proxy/superadmin.rb +13 -0
- data/lib/kangaroo/version.rb +1 -1
- data/lib/kangaroo/viz.rb +1 -0
- data/lib/kangaroo/viz/base.rb +92 -0
- data/spec/commands/base_spec.rb +42 -0
- data/spec/functional/associations/many2one_spec.rb +72 -0
- data/spec/functional/associations/one2many_spec.rb +65 -0
- data/spec/functional/common_service_spec.rb +25 -0
- data/spec/functional/data_import_spec.rb +48 -0
- data/spec/functional/dynamic_finder_spec.rb +35 -0
- data/spec/functional/exception_handling_spec.rb +18 -0
- data/spec/functional/identity_spec.rb +48 -0
- data/spec/functional/import_export_spec.rb +39 -0
- data/spec/functional/lazy_loading_spec.rb +18 -11
- data/spec/functional/ordering_spec.rb +33 -0
- data/spec/functional/readonly_attributes_spec.rb +37 -0
- data/spec/functional/required_attributes_spec.rb +37 -0
- data/spec/functional/root_namespace_spec.rb +19 -0
- data/spec/functional/select_relation_spec.rb +26 -0
- data/spec/model/attributes_spec.rb +1 -0
- data/spec/model/base_spec.rb +1 -0
- data/spec/model/default_attributes_spec.rb +3 -1
- data/spec/model/finder_spec.rb +2 -1
- data/spec/model/inspector_spec.rb +1 -0
- data/spec/model/open_object_orm_spec.rb +5 -2
- data/spec/model/persistence_spec.rb +1 -0
- data/spec/model/relation_spec.rb +2 -2
- data/spec/ruby_adapter/class_definition_spec.rb +1 -0
- data/spec/server_helper.rb +0 -1
- data/spec/spec_helper.rb +4 -1
- data/spec/util/loader_spec.rb +6 -6
- metadata +152 -159
- data/Gemfile.lock +0 -69
- data/features/configuration.feature +0 -10
- data/features/env.rb +0 -8
- data/features/step_definitions/basic_steps.rb +0 -18
- data/features/step_definitions/configuration_steps.rb +0 -21
- data/features/support/test.yml +0 -11
- data/features/utility_services.feature +0 -33
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -5,153 +5,44 @@ Overview
|
|
|
5
5
|
--------
|
|
6
6
|
|
|
7
7
|
Kangaroo is an OpenObject client/wrapper for Ruby, based on ActiveModel. It provides CRUD access to OpenERP objects via XMLRPC.
|
|
8
|
-
It's fast and provides
|
|
8
|
+
It's fast and provides a lot of neat features.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
Documentation and Feedback
|
|
11
|
+
--------------------------
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Please give us some feedback especially on the documentation, which surely requires a lot of work.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
gem 'kangaroo'
|
|
18
|
-
|
|
19
|
-
And create a **kangaroo.yml** configuration file in **[RAILS\_ROOT]/config**, containing these options:
|
|
20
|
-
|
|
21
|
-
host: 127.0.0.1
|
|
22
|
-
port: 8069
|
|
23
|
-
|
|
24
|
-
database:
|
|
25
|
-
name: my_openerp
|
|
26
|
-
user: admin
|
|
27
|
-
password: admin
|
|
28
|
-
|
|
29
|
-
models:
|
|
30
|
-
- account.*
|
|
31
|
-
- product.*
|
|
32
|
-
- res.company
|
|
33
|
-
|
|
34
|
-
Adjust your connection and database settings and specify the models you need.
|
|
35
|
-
|
|
36
|
-
### Ruby
|
|
37
|
-
|
|
38
|
-
Use Kangaroo in any Ruby project!
|
|
15
|
+
Quick Start
|
|
16
|
+
-----------
|
|
39
17
|
|
|
40
18
|
gem install kangaroo
|
|
41
19
|
|
|
42
|
-
|
|
20
|
+
kang -u admin -p admin -d some_database
|
|
21
|
+
> Oo::Res::Country.limit(5).order(:name).all
|
|
22
|
+
# +------+-----------------------------+
|
|
23
|
+
# | code | name |
|
|
24
|
+
# +------+-----------------------------+
|
|
25
|
+
# | DZ | Algeria |
|
|
26
|
+
# | AS | American Samoa |
|
|
27
|
+
# | AD | Andorra, Principality of |
|
|
28
|
+
# | AO | Angola |
|
|
29
|
+
# | AI | Anguilla |
|
|
30
|
+
# +------+-----------------------------+
|
|
43
31
|
|
|
44
|
-
require 'rubygems'
|
|
45
|
-
require 'kangaroo'
|
|
46
|
-
|
|
47
|
-
# Configure a connection to an OpenERP server
|
|
48
|
-
config = Kangaroo::Util::Configuration.new yaml_file_or_hash, Logger.new(STDOUT)
|
|
49
|
-
config.login
|
|
50
|
-
|
|
51
|
-
# Load OpenERP models matching "res.*" into namespace ::Oo
|
|
52
|
-
# Kangaroo::Util::Loader can be called several times, whenever needed.
|
|
53
|
-
Kangaroo::Util::Loader.new('res.*', config.database, 'Oo').load!
|
|
54
|
-
|
|
55
|
-
### Console
|
|
56
|
-
|
|
57
|
-
See CLI below.
|
|
58
|
-
|
|
59
|
-
Usage
|
|
60
|
-
-----
|
|
61
|
-
|
|
62
|
-
OpenObject models are mapped to ruby classes:
|
|
63
|
-
|
|
64
|
-
Oo::Res::Country
|
|
65
|
-
# represents 'res.country'
|
|
66
|
-
|
|
67
|
-
Oo::Product::Product
|
|
68
|
-
# represents 'product.product'
|
|
69
|
-
|
|
70
|
-
Oo::Sale::Order::Line
|
|
71
|
-
# represents 'sale.order.line
|
|
72
32
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
country = Oo::Res::Country.find 1
|
|
76
|
-
country = Oo::Res::Country.where(:code => 'DE').first
|
|
77
|
-
|
|
78
|
-
country.name = "Schland"
|
|
79
|
-
country.save
|
|
80
|
-
|
|
81
|
-
country.reload
|
|
82
|
-
|
|
83
|
-
countries = Oo::Res::Country.limit(100).all
|
|
84
|
-
countries = Oo::Res::Country.limit(100).order('code').all
|
|
85
|
-
|
|
86
|
-
Oo::Res::Country.create :code => 'DE', :name => 'Germany'
|
|
87
|
-
|
|
88
|
-
CLI
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
Kangaroo comes with a console based on IRB, try it:
|
|
92
|
-
|
|
93
|
-
$kang -c spec/test_env/test.yml
|
|
94
|
-
I, [2011-04-15T23:19:41.990623 #6834] INFO -- : Loading Kangaroo configuration "spec/test_env/test.yml"
|
|
95
|
-
I, [2011-04-15T23:19:41.991091 #6834] INFO -- : Configured OpenERP database "kangaroo_test_database" at "127.0.0.1"
|
|
96
|
-
I, [2011-04-15T23:19:41.996197 #6834] INFO -- : Authenticated user "admin" for OpenERP database "kangaroo_test_database"
|
|
97
|
-
ruby-1.8.7-p302 :001 > Oo::Res::Country
|
|
98
|
-
=> <Oo::Res::Country id, name, code>
|
|
99
|
-
ruby-1.8.7-p302 :002 > Oo::Res::Country.first
|
|
100
|
-
+---------+------+
|
|
101
|
-
| name | code |
|
|
102
|
-
+---------+------+
|
|
103
|
-
| Algeria | DZ |
|
|
104
|
-
+---------+------+
|
|
105
|
-
1 row in set
|
|
106
|
-
|
|
107
|
-
If you omit the -c command line option, you can initialize your Kangaroo connection from the
|
|
108
|
-
console:
|
|
109
|
-
|
|
110
|
-
$kang
|
|
111
|
-
ruby-1.8.7-p302 :001 > Kang.init "port"=>8069, "database"=>{"name"=>"kangaroo_test_database", "models"=>["res.*"], "password"=>"admin", "user"=>"admin"}, "host"=>"127.0.0.1"
|
|
112
|
-
I, [2011-04-15T23:23:59.789551 #7017] INFO -- : Loading Kangaroo configuration {"port"=>8069, "database"=>{"name"=>"kangaroo_test_database", "models"=>["res.*"], "user"=>"admin", "password"=>"admin"}, "host"=>"127.0.0.1"}
|
|
113
|
-
I, [2011-04-15T23:23:59.789706 #7017] INFO -- : Configured OpenERP database "kangaroo_test_database" at "127.0.0.1"
|
|
114
|
-
I, [2011-04-15T23:23:59.794861 #7017] INFO -- : Authenticated user "admin" for OpenERP database "kangaroo_test_database"
|
|
115
|
-
=> true
|
|
116
|
-
ruby-1.8.7-p302 :002 > Oo::Res::Country.limit(5).all
|
|
117
|
-
+------+-----------------------------+
|
|
118
|
-
| code | name |
|
|
119
|
-
+------+-----------------------------+
|
|
120
|
-
| DZ | Algeria |
|
|
121
|
-
| AS | American Samoa |
|
|
122
|
-
| AD | Andorra, Principality ofä ß |
|
|
123
|
-
| AO | Angola |
|
|
124
|
-
| AI | Anguilla |
|
|
125
|
-
+------+-----------------------------+
|
|
126
|
-
5 rows in set
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
Lazy model loading
|
|
130
|
-
------------------
|
|
131
|
-
|
|
132
|
-
You don't have to specify all models you ever need in your configuration file. Kangaroo will lazy load
|
|
133
|
-
models as they are accessed:
|
|
134
|
-
|
|
135
|
-
ruby-1.8.7-p302 :001 > Oo.const_defined? "Product"
|
|
136
|
-
=> false
|
|
137
|
-
ruby-1.8.7-p302 :002 > Oo::Product
|
|
138
|
-
=> Module 'Oo::Product' contains loaded OpenERP Models/Namespaces:
|
|
139
|
-
ruby-1.8.7-p302 :003 > Oo::Product.const_defined? "Product"
|
|
140
|
-
=> false
|
|
141
|
-
ruby-1.8.7-p302 :004 > Oo::Product::Product
|
|
142
|
-
=> <Oo::Product::Product id, loc_case, volume, type, uos_coeff, incoming_qty, price_margin, sale_ok, loc_rack, description_purchase, code, ean13, warranty, description_sale, outgoing_qty, product_tmpl_id, standard_price, rental, uom_po_id, default_code, supply_method, categ_id, procure_method, virtual_available, variants, packaging, pricelist_id, name_template, uos_id, lst_price, cost_method, description, seller_delay, price_extra, seller_id, price, active, company_id, qty_available, list_price, produce_delay, partner_ref, state, name, purchase_ok, mes_type, sale_delay, weight_net, seller_qty, weight, seller_ids, loc_row, product_manager, uom_id>
|
|
143
|
-
|
|
144
|
-
Please refer to {file:docs/Usage.md Usage} to learn about limitations/features not yet
|
|
145
|
-
implemented.
|
|
33
|
+
[a lot more here](http://kangaroogem.org)
|
|
146
34
|
|
|
147
35
|
Development
|
|
148
36
|
-----------
|
|
149
37
|
|
|
38
|
+
Homepage:
|
|
39
|
+
[http://kangaroogem.org](http://kangaroogem.org)
|
|
40
|
+
|
|
150
41
|
SCM:
|
|
151
|
-
[https://github.com/
|
|
42
|
+
[https://github.com/kayoom/kangaroo](https://github.com/kayoom/kangaroo)
|
|
152
43
|
|
|
153
44
|
Issues:
|
|
154
|
-
[
|
|
45
|
+
[http://github.com/kayoom/kangaroo/issues](http://github.com/kayoom/kangaroo/issues)
|
|
155
46
|
|
|
156
47
|
Rubygems:
|
|
157
48
|
[https://rubygems.org/gems/kangaroo](https://rubygems.org/gems/kangaroo)
|
data/Rakefile
CHANGED
|
@@ -22,14 +22,6 @@ rescue LoadError
|
|
|
22
22
|
puts "RSpec is not available. In order to run specs, you must: gem install rspec"
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
begin
|
|
26
|
-
require 'cucumber/rake/task'
|
|
27
|
-
desc "Run Cucumber features."
|
|
28
|
-
Cucumber::Rake::Task.new(:features)
|
|
29
|
-
rescue LoadError
|
|
30
|
-
puts "Cucumber is not available. In order to run features, you must: gem install cucumber"
|
|
31
|
-
end
|
|
32
|
-
|
|
33
25
|
|
|
34
26
|
|
|
35
27
|
# If you want to make this the default task
|
data/bin/kang
CHANGED
|
@@ -1,80 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
3
|
begin
|
|
4
|
+
# Try to just load kangaroo
|
|
4
5
|
require 'kangaroo'
|
|
5
6
|
rescue LoadError
|
|
6
7
|
begin
|
|
8
|
+
# Try kangaroo as installed gem
|
|
7
9
|
require 'rubygems'
|
|
8
10
|
require 'kangaroo'
|
|
9
11
|
rescue LoadError
|
|
12
|
+
# Used for development, if you exec 'bin/kang' from kangaroo source dir and gem not installed
|
|
10
13
|
require 'bundler/setup'
|
|
11
14
|
require 'kangaroo'
|
|
12
15
|
end
|
|
13
16
|
end
|
|
14
17
|
|
|
15
|
-
require '
|
|
16
|
-
require 'optparse'
|
|
17
|
-
options = {}
|
|
18
|
-
|
|
19
|
-
optparse = OptionParser.new do |opts|
|
|
20
|
-
opts.banner = "Usage: kang -c config_file.yaml"
|
|
21
|
-
|
|
22
|
-
options[:config_file] = nil
|
|
23
|
-
opts.on '-c', '--config FILE', 'Specify config file' do |file|
|
|
24
|
-
options[:config_file] = file
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# This displays the help screen, all programs are
|
|
28
|
-
# assumed to have this option.
|
|
29
|
-
opts.on( '-h', '--help', 'Display this screen' ) do
|
|
30
|
-
puts opts
|
|
31
|
-
exit
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
optparse.parse!
|
|
36
|
-
|
|
37
|
-
Kang = OpenStruct.new
|
|
38
|
-
Kang.logger = Logger.new(STDOUT)
|
|
39
|
-
|
|
40
|
-
Kang.class_eval do
|
|
41
|
-
def inspect
|
|
42
|
-
"Kang console"
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def init file_or_hash
|
|
46
|
-
Kang.logger.info "Loading Kangaroo configuration #{file_or_hash.inspect}"
|
|
47
|
-
Kang.config = Kangaroo::Util::Configuration.new file_or_hash, Kang.logger
|
|
48
|
-
Kang.config.login
|
|
49
|
-
|
|
50
|
-
Kangaroo::Util::Loader.new('res.*', Kang.config.database).load!
|
|
51
|
-
true
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
options[:config_file] && Kang.init(options[:config_file])
|
|
56
|
-
|
|
57
|
-
require 'irb'
|
|
58
|
-
require 'irb/completion'
|
|
59
|
-
|
|
60
|
-
Hirb.enable
|
|
61
|
-
IRB.start
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
18
|
+
require 'kangaroo/commands/cli'
|
|
79
19
|
|
|
20
|
+
Kangaroo::Commands::CLI.new(*ARGV).run
|
|
80
21
|
|
data/bin/kangdoc
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
begin
|
|
4
|
+
# Try to just load kangaroo
|
|
5
|
+
require 'kangaroo'
|
|
6
|
+
rescue LoadError
|
|
7
|
+
begin
|
|
8
|
+
# Try kangaroo as installed gem
|
|
9
|
+
require 'rubygems'
|
|
10
|
+
require 'kangaroo'
|
|
11
|
+
rescue LoadError
|
|
12
|
+
# Used for development, if you exec 'bin/kang' from kangaroo source dir and gem not installed
|
|
13
|
+
require 'bundler/setup'
|
|
14
|
+
require 'kangaroo'
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
require 'kangaroo/commands/doc'
|
|
19
|
+
|
|
20
|
+
Kangaroo::Commands::Doc.new(*ARGV).run
|
|
21
|
+
|
data/bin/kangviz
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
begin
|
|
4
|
+
# Try to just load kangaroo
|
|
5
|
+
require 'kangaroo'
|
|
6
|
+
rescue LoadError
|
|
7
|
+
begin
|
|
8
|
+
# Try kangaroo as installed gem
|
|
9
|
+
require 'rubygems'
|
|
10
|
+
require 'kangaroo'
|
|
11
|
+
rescue LoadError
|
|
12
|
+
# Used for development, if you exec 'bin/kang' from kangaroo source dir and gem not installed
|
|
13
|
+
require 'bundler/setup'
|
|
14
|
+
require 'kangaroo'
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
require 'kangaroo/commands/viz'
|
|
19
|
+
|
|
20
|
+
Kangaroo::Commands::Viz.new(*ARGV).run
|
|
21
|
+
|
data/config/kangaroo.yml.sample
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
|
+
# Hostname or ip address and XMLRPC port of your OpenERP Server
|
|
1
2
|
host: 127.0.0.1
|
|
2
3
|
port: 8069
|
|
3
4
|
|
|
5
|
+
# Configure the database you want to use
|
|
4
6
|
database:
|
|
5
|
-
name
|
|
7
|
+
# Database name and credentials
|
|
8
|
+
name: kangaroo_test_database
|
|
6
9
|
user: admin
|
|
7
10
|
password: admin
|
|
8
11
|
|
|
12
|
+
# Namespace (top-level Module) for your OpenObject classes, e.g.
|
|
13
|
+
# OpenObjects 'product.product' will be accessible via Ruby class Abc::Product::Product
|
|
14
|
+
# __must__ begin with a capital letter!
|
|
15
|
+
namespace: 'Abc'
|
|
16
|
+
|
|
17
|
+
# Specify models to load on startup, e.g. all models in the 'product' namespace, and the single 'res.company' model
|
|
18
|
+
# Keep in mind, that Kangaroo will lazy load any model not specified here on first access. You can even leave this
|
|
19
|
+
# blank to load all models as late as they're needed.
|
|
9
20
|
models:
|
|
10
|
-
- account.*
|
|
11
21
|
- product.*
|
|
12
22
|
- res.company
|
data/docs/Architecture.md
CHANGED
data/docs/Classes.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
Classes
|
|
2
|
+
=======
|
|
3
|
+
|
|
4
|
+
#### Index
|
|
5
|
+
{file:README.md Readme}
|
|
6
|
+
{file:docs/Installation.md Installation}
|
|
7
|
+
{file:docs/Usage.md Usage}
|
|
8
|
+
{file:docs/Architecture.md Architecture}
|
|
9
|
+
{file:docs/AdditionalServices.md Additional Services}
|
|
10
|
+
{file:docs/Classes.md Classes}
|
|
11
|
+
|
|
12
|
+
{Kangaroo}
|
|
13
|
+
--------
|
|
14
|
+
|
|
15
|
+
### Railtie
|
|
16
|
+
* {Kangaroo::Railtie}
|
|
17
|
+
|
|
18
|
+
### Model
|
|
19
|
+
* {Kangaroo::Model}
|
|
20
|
+
* * {Kangaroo::Model::Attributes}
|
|
21
|
+
* * {Kangaroo::Model::Base}
|
|
22
|
+
* * {Kangaroo::Model::ConditionNormalizer}
|
|
23
|
+
* * {Kangaroo::Model::DefaultAttributes}
|
|
24
|
+
* * {Kangaroo::Model::Field}
|
|
25
|
+
* * {Kangaroo::Model::Finder}
|
|
26
|
+
* * {Kangaroo::Model::Inspector}
|
|
27
|
+
* * {Kangaroo::Model::OpenObjectOrm}
|
|
28
|
+
* * {Kangaroo::Model::Persistence}
|
|
29
|
+
* * {Kangaroo::Model::ReadonlyAttributes}
|
|
30
|
+
* * {Kangaroo::Model::Relation}
|
|
31
|
+
* * {Kangaroo::Model::RemoteExecute}
|
|
32
|
+
|
|
33
|
+
### RubyAdapter
|
|
34
|
+
* {Kangaroo::RubyAdapter}
|
|
35
|
+
* * {Kangaroo::RubyAdapter::Base}
|
|
36
|
+
* * {Kangaroo::RubyAdapter::ClassDefinition}
|
|
37
|
+
* * {Kangaroo::RubyAdapter::Fields}
|
|
38
|
+
|
|
39
|
+
### Util
|
|
40
|
+
* {Kangaroo::Util}
|
|
41
|
+
* * {Kangaroo::Util::Client}
|
|
42
|
+
* * {Kangaroo::Util::Configuration}
|
|
43
|
+
* * {Kangaroo::Util::Database}
|
|
44
|
+
* * {Kangaroo::Util::Loader}
|
|
45
|
+
* * * {Kangaroo::Util::Loader::Model}
|
|
46
|
+
* * * {Kangaroo::Util::Loader::Namespace}
|
|
47
|
+
* * * {Kangaroo::Util::Loader::RootNamespace}
|
|
48
|
+
* * {Kangaroo::Util::Proxy}
|
|
49
|
+
* * * {Kangaroo::Util::Proxy::Common}
|
|
50
|
+
* * * {Kangaroo::Util::Proxy::Db}
|
|
51
|
+
* * * {Kangaroo::Util::Proxy::Object}
|
|
52
|
+
* * * {Kangaroo::Util::Proxy::Report}
|
|
53
|
+
* * * {Kangaroo::Util::Proxy::Superadmin}
|
|
54
|
+
* * * {Kangaroo::Util::Proxy::Wizard}
|
|
55
|
+
* * * {Kangaroo::Util::Proxy::Workflow}
|
|
56
|
+
|
|
57
|
+
### Hirb
|
|
58
|
+
* {Hirb::Views::Kangaroo}
|
|
59
|
+
|
|
60
|
+
### Exceptions
|
|
61
|
+
* {Kangaroo::Exception}
|
|
62
|
+
* * {Kangaroo::RecordNotFound}
|
|
63
|
+
* * {Kangaroo::ReadonlyRecord}
|
|
64
|
+
* * {Kangaroo::RecordSavingFailed}
|
|
65
|
+
* * {Kangaroo::InstantiatedRecordNeedsIDError}
|
|
66
|
+
* * {Kangaroo::ChildDefinedBeforeParentError}
|
|
67
|
+
* * {Kangaroo::NoMethodError}
|