ruby_ext_direct 0.0.2 → 0.0.3

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.
Files changed (34) hide show
  1. data/Gemfile +1 -1
  2. data/README.markdown +60 -0
  3. data/lib/ext_direct/api.rb +68 -10
  4. data/lib/ext_direct/router.rb +25 -5
  5. data/lib/ext_direct/version.rb +1 -1
  6. data/ruby_ext_direct.gemspec +1 -0
  7. data/test/test_ext_direct.rb +19 -0
  8. metadata +17 -34
  9. data/README +0 -12
  10. data/examples/API/Gemfile +0 -29
  11. data/examples/API/app/actions/api_action.rb +0 -18
  12. data/examples/API/app/actions/home_action.rb +0 -11
  13. data/examples/API/app/actions/router_action.rb +0 -18
  14. data/examples/API/application.rb +0 -37
  15. data/examples/API/config.ru +0 -25
  16. data/examples/API/config/database.yml +0 -6
  17. data/examples/API/config/routes.rb +0 -6
  18. data/examples/API/public/NamesApp/app/store/NamesStore.js +0 -48
  19. data/examples/API/public/NamesApp/app/view/namesWindow.js +0 -21
  20. data/examples/API/public/NamesApp/app/view/ui/namesWindow.js +0 -58
  21. data/examples/API/public/NamesApp/designer.html +0 -19
  22. data/examples/API/public/NamesApp/designer.js +0 -32
  23. data/examples/API/public/NamesApp/designer_includeOrder.txt +0 -3
  24. data/examples/API/public/namesApp.xds +0 -200
  25. data/examples/rack/config.ru +0 -40
  26. data/examples/rack/exposed_classes/countries.rb +0 -10
  27. data/examples/rack/exposed_classes/names.rb +0 -82
  28. data/examples/rack/html/NamesApp/app/store/NamesStore.js +0 -56
  29. data/examples/rack/html/NamesApp/app/view/namesWindow.js +0 -49
  30. data/examples/rack/html/NamesApp/app/view/ui/namesWindow.js +0 -92
  31. data/examples/rack/html/NamesApp/designer.html +0 -19
  32. data/examples/rack/html/NamesApp/designer.js +0 -32
  33. data/examples/rack/html/NamesApp/designer_includeOrder.txt +0 -3
  34. data/examples/rack/html/names.xds +0 -275
@@ -1,37 +0,0 @@
1
- require "rubygems"
2
- require "bundler"
3
-
4
- module API
5
- class Application
6
-
7
- def self.root(path = nil)
8
- @_root ||= File.expand_path(File.dirname(__FILE__))
9
- path ? File.join(@_root, path.to_s) : @_root
10
- end
11
-
12
- def self.env
13
- @_env ||= ENV['RACK_ENV'] || 'development'
14
- end
15
-
16
- def self.routes
17
- @_routes ||= eval(File.read('./config/routes.rb'))
18
- end
19
-
20
- def self.database_config
21
- @_database_config ||= YAML.load(File.read('./config/database.yml')).with_indifferent_access
22
- end
23
-
24
- # Initialize the application
25
- def self.initialize!
26
- ActiveRecord::Base.configurations = API::Application.database_config
27
- ActiveRecord::Base.establish_connection(API::Application.env)
28
- ExtDirect::Api.expose_all "/Users/mehmetc/Sources/LBT/ext_direct/examples/rack/exposed_classes"
29
- end
30
-
31
- end
32
- end
33
-
34
- Bundler.require(:default, API::Application.env)
35
-
36
- # Preload application classes
37
- Dir['./app/**/*.rb'].each {|f| require f}
@@ -1,25 +0,0 @@
1
- require './application'
2
- API::Application.initialize!
3
-
4
- # Development middlewares
5
- if API::Application.env == 'development'
6
- use AsyncRack::CommonLogger
7
-
8
- # Enable code reloading on every request
9
- use Rack::Reloader, 0
10
-
11
- # Serve assets from /public
12
- use Rack::Static, :urls => ["/NamesApp", "/javascripts"], :root => API::Application.root(:public)
13
- end
14
-
15
- # Running thin :
16
- #
17
- # bundle exec thin --max-persistent-conns 1024 --timeout 0 -R config.ru start
18
- #
19
- # Vebose mode :
20
- #
21
- # Very useful when you want to view all the data being sent/received by thin
22
- #
23
- # bundle exec thin --max-persistent-conns 1024 --timeout 0 -V -R config.ru start
24
- #
25
- run API::Application.routes
@@ -1,6 +0,0 @@
1
- development:
2
- adapter: em_mysql2
3
- database: API_development
4
- host: localhost
5
- username: root
6
- pool: 100
@@ -1,6 +0,0 @@
1
- # Check out https://github.com/joshbuddy/http_router for more information on HttpRouter
2
- HttpRouter.new do
3
- add('/api').to(ApiAction)
4
- add('/router').to(RouterAction)
5
- add('/').to(HomeAction)
6
- end
@@ -1,48 +0,0 @@
1
- /*
2
- * File: app/store/NamesStore.js
3
- * Date: Tue Sep 06 2011 15:09:45 GMT+0200 (CEST)
4
- *
5
- * This file was generated by Ext Designer version 1.2.0.
6
- * http://www.sencha.com/products/designer/
7
- *
8
- * This file will be auto-generated each and everytime you export.
9
- *
10
- * Do NOT hand edit this file.
11
- */
12
-
13
- Ext.define('NamesApp.store.NamesStore', {
14
- extend: 'Ext.data.Store',
15
-
16
- constructor: function(cfg) {
17
- var me = this;
18
- cfg = cfg || {};
19
- me.callParent([Ext.apply({
20
- autoLoad: true,
21
- storeId: 'NamesStore',
22
- proxy: {
23
- type: 'direct',
24
- api: {
25
- read: Names.get,
26
- update: Names.set
27
- },
28
- reader: {
29
- type: 'json'
30
- }
31
- },
32
- fields: [
33
- {
34
- name: 'name',
35
- type: 'string'
36
- },
37
- {
38
- name: 'address',
39
- type: 'string'
40
- },
41
- {
42
- name: 'country',
43
- type: 'string'
44
- }
45
- ]
46
- }, cfg)]);
47
- }
48
- });
@@ -1,21 +0,0 @@
1
- /*
2
- * File: app/view/namesWindow.js
3
- * Date: Tue Sep 06 2011 15:09:45 GMT+0200 (CEST)
4
- *
5
- * This file was generated by Ext Designer version 1.2.0.
6
- * http://www.sencha.com/products/designer/
7
- *
8
- * This file will be generated the first time you export.
9
- *
10
- * You should implement event handling and custom methods in this
11
- * class.
12
- */
13
-
14
- Ext.define('NamesApp.view.namesWindow', {
15
- extend: 'NamesApp.view.ui.namesWindow',
16
-
17
- initComponent: function() {
18
- var me = this;
19
- me.callParent(arguments);
20
- }
21
- });
@@ -1,58 +0,0 @@
1
- /*
2
- * File: app/view/ui/namesWindow.js
3
- * Date: Tue Sep 06 2011 15:09:45 GMT+0200 (CEST)
4
- *
5
- * This file was generated by Ext Designer version 1.2.0.
6
- * http://www.sencha.com/products/designer/
7
- *
8
- * This file will be auto-generated each and everytime you export.
9
- *
10
- * Do NOT hand edit this file.
11
- */
12
-
13
- Ext.define('NamesApp.view.ui.namesWindow', {
14
- extend: 'Ext.window.Window',
15
-
16
- height: 541,
17
- id: 'namesWindow',
18
- width: 797,
19
- layout: {
20
- type: 'fit'
21
- },
22
- title: 'All Names',
23
-
24
- initComponent: function() {
25
- var me = this;
26
- me.items = [
27
- {
28
- xtype: 'gridpanel',
29
- id: 'namesGrid',
30
- title: 'Names Grid',
31
- store: 'NamesStore',
32
- viewConfig: {
33
-
34
- },
35
- columns: [
36
- {
37
- xtype: 'gridcolumn',
38
- width: 186,
39
- dataIndex: 'name',
40
- text: 'Name'
41
- },
42
- {
43
- xtype: 'gridcolumn',
44
- width: 453,
45
- dataIndex: 'address',
46
- text: 'Address'
47
- },
48
- {
49
- xtype: 'gridcolumn',
50
- dataIndex: 'country',
51
- text: 'Country'
52
- }
53
- ]
54
- }
55
- ];
56
- me.callParent(arguments);
57
- }
58
- });
@@ -1,19 +0,0 @@
1
- <!DOCTYPE html>
2
-
3
- <!-- Auto Generated with Ext Designer -->
4
- <!-- Modifications to this file will be overwritten. -->
5
- <html>
6
- <head>
7
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8
- <title>namesApp.xds</title>
9
- <link rel="stylesheet" type="text/css" href="http://extjs.cachefly.net/ext-4.0.2a/resources/css/ext-all.css"/>
10
- <script type="text/javascript" src="http://extjs.cachefly.net/ext-4.0.2a/ext-all-debug.js"></script>
11
- <script type="text/javascript">
12
- Ext.ns("REMOTING_API");
13
- REMOTING_API = {"descriptor":"REMOTING_API","url":"/router","type":"remoting","actions":{"Countries":[{"name":"countries","len":0},{"name":"get","len":0}],"Names":[{"name":"names","len":0},{"name":"get","len":0},{"name":"set","len":1}]}};
14
- Ext.Direct.addProvider(REMOTING_API);
15
- </script>
16
- <script type="text/javascript" src="designer.js"></script>
17
- </head>
18
- <body></body>
19
- </html>
@@ -1,32 +0,0 @@
1
- /*
2
- * File: designer.js
3
- * Date: Tue Sep 06 2011 15:09:45 GMT+0200 (CEST)
4
- *
5
- * This file was generated by Ext Designer version 1.2.0.
6
- * http://www.sencha.com/products/designer/
7
- *
8
- * This file will be auto-generated each and everytime you export.
9
- *
10
- * Do NOT hand edit this file.
11
- */
12
-
13
- Ext.Loader.setConfig({
14
- enabled: true
15
- });
16
-
17
- Ext.application({
18
- name: 'NamesApp',
19
-
20
- stores: [
21
- 'NamesStore'
22
- ],
23
-
24
- launch: function() {
25
- Ext.QuickTips.init();
26
-
27
- var cmp1 = Ext.create('NamesApp.view.namesWindow', {
28
- renderTo: Ext.getBody()
29
- });
30
- cmp1.show();
31
- }
32
- });
@@ -1,3 +0,0 @@
1
- <script type="text/javascript" src="app/view/ui/namesWindow.js"></script>
2
- <script type="text/javascript" src="app/view/namesWindow.js"></script>
3
- <script type="text/javascript" src="app/store/NamesStore.js"></script>
@@ -1,200 +0,0 @@
1
- {
2
- "name": "names.xds",
3
- "settings": {
4
- "urlPrefix": "http://localhost/",
5
- "directAPI": "http://localhost:3000/api",
6
- "spacesToIndent": "4",
7
- "codeGenFormat": "Class",
8
- "exportPath": "./NamesApp",
9
- "extPath": "http://extjs.cachefly.net/ext-4.0.2a/",
10
- "lineEnding": "LF",
11
- "instantiateStore": true,
12
- "exportXDSFiles": true,
13
- "genTimestamps": true,
14
- "appName": "NamesApp"
15
- },
16
- "xdsVersion": "1.2.0",
17
- "components": [
18
- {
19
- "id": "ExtBox1-ext-gen2626",
20
- "type": "window",
21
- "reference": {
22
- "name": "items",
23
- "type": "array"
24
- },
25
- "codeClass": null,
26
- "userConfig": {
27
- "height": 541,
28
- "id": "namesWindow",
29
- "width": 797,
30
- "layout": "fit",
31
- "title": "All Names",
32
- "designer|userClassName": "namesWindow"
33
- },
34
- "cn": [
35
- {
36
- "id": "ExtBox1-ext-gen2817",
37
- "type": "gridpanel",
38
- "reference": {
39
- "name": "items",
40
- "type": "array"
41
- },
42
- "codeClass": null,
43
- "userConfig": {
44
- "id": "namesGrid",
45
- "title": "Names Grid",
46
- "store": "NamesStore",
47
- "designer|userClassName": "MyGridPanel"
48
- },
49
- "cn": [
50
- {
51
- "id": "ExtBox1-ext-gen2854",
52
- "type": "gridview",
53
- "reference": {
54
- "name": "viewConfig",
55
- "type": "object"
56
- },
57
- "codeClass": null,
58
- "userConfig": {
59
- "designer|userClassName": "MyGridView"
60
- }
61
- },
62
- {
63
- "id": "ExtBox1-ext-gen3478",
64
- "type": "gridcolumn",
65
- "reference": {
66
- "name": "columns",
67
- "type": "array"
68
- },
69
- "codeClass": null,
70
- "userConfig": {
71
- "width": 186,
72
- "dataIndex": "name",
73
- "text": "Name",
74
- "designer|userClassName": "MyColumn1"
75
- }
76
- },
77
- {
78
- "id": "ExtBox1-ext-gen3487",
79
- "type": "gridcolumn",
80
- "reference": {
81
- "name": "columns",
82
- "type": "array"
83
- },
84
- "codeClass": null,
85
- "userConfig": {
86
- "width": 453,
87
- "dataIndex": "address",
88
- "text": "Address",
89
- "designer|userClassName": "MyColumn2"
90
- }
91
- },
92
- {
93
- "id": "ExtBox1-ext-gen3496",
94
- "type": "gridcolumn",
95
- "reference": {
96
- "name": "columns",
97
- "type": "array"
98
- },
99
- "codeClass": null,
100
- "userConfig": {
101
- "dataIndex": "country",
102
- "text": "Country",
103
- "designer|userClassName": "MyColumn3"
104
- }
105
- }
106
- ]
107
- }
108
- ]
109
- }
110
- ],
111
- "stores": [
112
- {
113
- "id": "ExtBox1-ext-gen1666",
114
- "type": "directstore",
115
- "reference": {
116
- "name": "items",
117
- "type": "array"
118
- },
119
- "codeClass": null,
120
- "userConfig": {
121
- "autoLoad": true,
122
- "storeId": "NamesStore",
123
- "designer|userClassName": "NamesStore"
124
- },
125
- "cn": [
126
- {
127
- "id": "ExtBox1-ext-gen1670",
128
- "type": "directproxy",
129
- "reference": {
130
- "name": "proxy",
131
- "type": "object"
132
- },
133
- "codeClass": null,
134
- "userConfig": {
135
- "api": "{read:Names.get,\nupdate:Names.set}",
136
- "directFn": null,
137
- "designer|userClassName": "Direct Proxy"
138
- },
139
- "cn": [
140
- {
141
- "id": "ExtBox1-ext-gen1676",
142
- "type": "jsonreader",
143
- "reference": {
144
- "name": "reader",
145
- "type": "object"
146
- },
147
- "codeClass": null,
148
- "userConfig": {
149
- "designer|userClassName": "Json Reader"
150
- }
151
- }
152
- ]
153
- },
154
- {
155
- "id": "ExtBox1-ext-gen2110",
156
- "type": "datafield",
157
- "reference": {
158
- "name": "fields",
159
- "type": "array"
160
- },
161
- "codeClass": null,
162
- "userConfig": {
163
- "name": "name",
164
- "type": "string",
165
- "designer|userClassName": "MyField"
166
- }
167
- },
168
- {
169
- "id": "ExtBox1-ext-gen2117",
170
- "type": "datafield",
171
- "reference": {
172
- "name": "fields",
173
- "type": "array"
174
- },
175
- "codeClass": null,
176
- "userConfig": {
177
- "name": "address",
178
- "type": "string",
179
- "designer|userClassName": "MyField1"
180
- }
181
- },
182
- {
183
- "id": "ExtBox1-ext-gen2124",
184
- "type": "datafield",
185
- "reference": {
186
- "name": "fields",
187
- "type": "array"
188
- },
189
- "codeClass": null,
190
- "userConfig": {
191
- "name": "country",
192
- "type": "string",
193
- "designer|userClassName": "MyField2"
194
- }
195
- }
196
- ]
197
- }
198
- ],
199
- "framework": "ext40"
200
- }