picky 4.0.0pre1 → 4.0.0pre2

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 (112) hide show
  1. data/aux/picky/cli.rb +6 -2
  2. data/lib/picky.rb +10 -8
  3. data/lib/picky/backends/backend.rb +37 -0
  4. data/lib/picky/backends/file.rb +0 -20
  5. data/lib/picky/backends/memory.rb +0 -29
  6. data/lib/picky/backends/redis.rb +74 -15
  7. data/lib/picky/backends/redis/list.rb +1 -1
  8. data/lib/picky/backends/sqlite.rb +0 -27
  9. data/lib/picky/bundle.rb +2 -2
  10. data/lib/picky/bundle_indexed.rb +1 -1
  11. data/lib/picky/bundle_indexing.rb +1 -1
  12. data/lib/picky/categories_indexed.rb +1 -11
  13. data/lib/picky/category.rb +4 -4
  14. data/lib/picky/category/location.rb +25 -0
  15. data/lib/picky/category_realtime.rb +4 -3
  16. data/lib/picky/console.rb +1 -1
  17. data/lib/picky/constants.rb +1 -1
  18. data/lib/picky/ext/maybe_compile.rb +2 -2
  19. data/lib/picky/extensions/object.rb +3 -2
  20. data/lib/picky/generators/aliases.rb +7 -2
  21. data/lib/picky/generators/partial/default.rb +1 -0
  22. data/lib/picky/generators/similarity/default.rb +1 -0
  23. data/lib/picky/generators/similarity/phonetic.rb +13 -2
  24. data/lib/picky/generators/strategy.rb +0 -2
  25. data/lib/picky/generators/weights/constant.rb +1 -2
  26. data/lib/picky/generators/weights/default.rb +1 -0
  27. data/lib/picky/generators/weights/dynamic.rb +1 -1
  28. data/lib/picky/generators/weights/logarithmic.rb +1 -1
  29. data/lib/picky/generators/weights/{runtime.rb → stub.rb} +1 -3
  30. data/lib/picky/index.rb +3 -3
  31. data/lib/picky/index_indexing.rb +0 -2
  32. data/lib/picky/index_realtime.rb +1 -1
  33. data/lib/picky/indexers/base.rb +7 -0
  34. data/lib/picky/indexers/parallel.rb +2 -4
  35. data/lib/picky/indexers/serial.rb +2 -0
  36. data/lib/picky/indexes_indexing.rb +1 -1
  37. data/lib/picky/interfaces/live_parameters/master_child.rb +175 -0
  38. data/lib/picky/interfaces/live_parameters/unicorn.rb +37 -0
  39. data/lib/picky/loader.rb +238 -259
  40. data/lib/picky/query/allocation.rb +19 -10
  41. data/lib/picky/query/combination.rb +7 -1
  42. data/lib/picky/query/combinations.rb +1 -6
  43. data/lib/picky/query/token.rb +26 -36
  44. data/lib/picky/results.rb +18 -17
  45. data/lib/picky/scheduler.rb +2 -1
  46. data/lib/picky/search.rb +1 -1
  47. data/lib/picky/sinatra.rb +6 -6
  48. data/lib/picky/statistics.rb +2 -0
  49. data/lib/picky/tokenizer.rb +8 -8
  50. data/lib/picky/wrappers/bundle/calculation.rb +4 -4
  51. data/lib/picky/wrappers/bundle/location.rb +1 -2
  52. data/lib/tasks/framework.rake +1 -1
  53. data/lib/tasks/statistics.rake +1 -1
  54. data/lib/tasks/try.rake +1 -1
  55. data/lib/tasks/try.rb +1 -1
  56. data/spec/aux/picky/cli_spec.rb +12 -12
  57. data/spec/ext/performant_spec.rb +16 -16
  58. data/spec/functional/backends/file_spec.rb +78 -7
  59. data/spec/functional/backends/memory_spec.rb +78 -7
  60. data/spec/functional/backends/redis_spec.rb +73 -13
  61. data/spec/functional/dynamic_weights_spec.rb +3 -4
  62. data/spec/functional/realtime_spec.rb +2 -2
  63. data/spec/functional/speed_spec.rb +2 -2
  64. data/spec/functional/terminate_early_spec.rb +3 -3
  65. data/spec/lib/analytics_spec.rb +1 -1
  66. data/spec/lib/analyzer_spec.rb +5 -3
  67. data/spec/lib/categories_indexed_spec.rb +38 -20
  68. data/spec/lib/category/location_spec.rb +30 -0
  69. data/spec/lib/character_substituters/west_european_spec.rb +1 -0
  70. data/spec/lib/extensions/hash_spec.rb +6 -5
  71. data/spec/lib/extensions/module_spec.rb +6 -6
  72. data/spec/lib/extensions/object_spec.rb +9 -8
  73. data/spec/lib/extensions/string_spec.rb +1 -1
  74. data/spec/lib/generators/similarity/phonetic_spec.rb +11 -0
  75. data/spec/lib/index_realtime_spec.rb +5 -5
  76. data/spec/lib/interfaces/{live_parameters_spec.rb → live_parameters/master_child_spec.rb} +26 -26
  77. data/spec/lib/interfaces/live_parameters/unicorn_spec.rb +160 -0
  78. data/spec/lib/loader_spec.rb +65 -25
  79. data/spec/lib/query/allocation_spec.rb +25 -22
  80. data/spec/lib/query/combinations_spec.rb +13 -36
  81. data/spec/lib/query/token_spec.rb +144 -131
  82. data/spec/lib/query/tokens_spec.rb +14 -0
  83. data/spec/lib/results_spec.rb +14 -8
  84. data/spec/lib/search_spec.rb +1 -1
  85. data/spec/lib/sinatra_spec.rb +8 -8
  86. metadata +28 -91
  87. data/lib/picky/adapters/rack.rb +0 -34
  88. data/lib/picky/adapters/rack/base.rb +0 -27
  89. data/lib/picky/adapters/rack/live_parameters.rb +0 -37
  90. data/lib/picky/adapters/rack/search.rb +0 -67
  91. data/lib/picky/application.rb +0 -268
  92. data/lib/picky/frontend_adapters/rack.rb +0 -161
  93. data/lib/picky/interfaces/live_parameters.rb +0 -187
  94. data/lib/picky/sources/base.rb +0 -92
  95. data/lib/picky/sources/couch.rb +0 -76
  96. data/lib/picky/sources/csv.rb +0 -83
  97. data/lib/picky/sources/db.rb +0 -189
  98. data/lib/picky/sources/delicious.rb +0 -63
  99. data/lib/picky/sources/mongo.rb +0 -80
  100. data/lib/picky/wrappers/category/location.rb +0 -38
  101. data/lib/tasks/routes.rake +0 -8
  102. data/spec/lib/adapters/rack/base_spec.rb +0 -24
  103. data/spec/lib/adapters/rack/live_parameters_spec.rb +0 -26
  104. data/spec/lib/adapters/rack/query_spec.rb +0 -39
  105. data/spec/lib/application_spec.rb +0 -155
  106. data/spec/lib/frontend_adapters/rack_spec.rb +0 -294
  107. data/spec/lib/sources/base_spec.rb +0 -53
  108. data/spec/lib/sources/couch_spec.rb +0 -114
  109. data/spec/lib/sources/csv_spec.rb +0 -89
  110. data/spec/lib/sources/db_spec.rb +0 -125
  111. data/spec/lib/sources/delicious_spec.rb +0 -94
  112. data/spec/lib/sources/mongo_spec.rb +0 -50
@@ -0,0 +1,37 @@
1
+ module Picky
2
+
3
+ # This is very optional.
4
+ # Only load if the user wants it.
5
+ #
6
+ module Interfaces
7
+
8
+ module LiveParameters
9
+
10
+ # This is an interface that provides the user of
11
+ # Picky with the possibility to change parameters
12
+ # while the Application is running.
13
+ #
14
+ class Unicorn < MasterChild
15
+
16
+ def worker_pids
17
+ Unicorn::HttpServer::WORKERS.keys
18
+ end
19
+
20
+ def remove_worker wpid
21
+ worker = Unicorn::HttpServer::WORKERS.delete(wpid) and worker.tmp.close rescue nil
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+
28
+ # Aka.
29
+ #
30
+ # TODO
31
+ #
32
+ # remove_const :Unicorn if defined? Unicorn
33
+ # Unicorn = LiveParameters::Unicorn
34
+
35
+ end
36
+
37
+ end
data/lib/picky/loader.rb CHANGED
@@ -1,280 +1,259 @@
1
1
  module Picky
2
2
 
3
- # Loads the search engine and itself.
3
+ # Loads the search engine and it
4
4
  #
5
5
  module Loader # :nodoc:all
6
6
 
7
- # Reloads the whole app.
8
- # First itself, then the app.
9
- #
10
- def self.reload
11
- Dir.chdir PICKY_ROOT
12
- exclaim 'Reloading loader.'
13
- load_self
14
- exclaim 'Reloading framework.'
15
- load_framework
16
- exclaim 'Reloading application.'
17
- load_application
18
- end
19
-
20
- # Loads this file anew.
21
- #
22
- def self.load_self
23
- exclaim 'Loader loading itself.'
24
- load __FILE__
25
- end
26
-
27
- # Load a file relative to this.
28
- #
29
- def self.load_relative filename_without_rb
30
- load File.join(File.dirname(__FILE__), "#{filename_without_rb}.rb")
31
- end
32
-
33
- # Load a user file.
34
- #
35
- def self.load_user filename
36
- file_name = File.join PICKY_ROOT, "#{filename}.rb"
37
- load file_name if File.exists? file_name
38
- end
39
-
40
- # Load the user's application.
41
- #
42
- def self.load_application
43
- Application.reload
44
- end
45
-
46
- # Loads the internal parts of the framework.
47
- # (Not for the user)
48
- #
49
- def self.load_framework_internals
50
- # Load compiled C code.
51
- #
52
- load_relative 'ext/maybe_compile'
53
-
54
- # Load extensions.
55
- #
56
- load_relative 'extensions/object'
57
- load_relative 'extensions/array'
58
- load_relative 'extensions/symbol'
59
- load_relative 'extensions/string'
60
- load_relative 'extensions/module'
61
- load_relative 'extensions/class'
62
- load_relative 'extensions/hash'
63
-
64
- # Requiring Helpers
65
- #
66
- load_relative 'helpers/measuring'
67
- load_relative 'helpers/indexing'
68
-
69
- # Calculations.
70
- #
71
- load_relative 'calculations/location'
72
-
73
- # Index generation strategies.
74
- #
75
- load_relative 'indexers/base'
76
- load_relative 'indexers/serial'
77
- load_relative 'indexers/parallel'
78
-
79
- # Generators.
80
- #
81
- load_relative 'generators/strategy'
82
-
83
- # Partial index generation strategies.
84
- #
85
- load_relative 'generators/partial/strategy'
86
- load_relative 'generators/partial/none'
87
- load_relative 'generators/partial/substring'
88
- load_relative 'generators/partial/postfix'
89
- load_relative 'generators/partial/infix'
90
- load_relative 'generators/partial/default'
91
-
92
- # Weight index generation strategies.
93
- #
94
- load_relative 'generators/weights/strategy'
95
- load_relative 'generators/weights/runtime'
96
- load_relative 'generators/weights/dynamic'
97
- load_relative 'generators/weights/constant'
98
- load_relative 'generators/weights/logarithmic'
99
- load_relative 'generators/weights/default'
100
-
101
- # Similarity index generation strategies.
102
- #
103
- load_relative 'generators/similarity/strategy'
104
- load_relative 'generators/similarity/none'
105
- load_relative 'generators/similarity/phonetic'
106
- load_relative 'generators/similarity/metaphone'
107
- load_relative 'generators/similarity/double_metaphone'
108
- load_relative 'generators/similarity/soundex'
109
- load_relative 'generators/similarity/default'
110
-
111
- # Index store handling.
112
- #
113
- load_relative 'backends/helpers/file'
114
- load_relative 'backends/backend'
115
-
116
- load_relative 'backends/prepared/text'
117
-
118
- load_relative 'backends/memory'
119
- load_relative 'backends/memory/basic'
120
- load_relative 'backends/memory/marshal'
121
- load_relative 'backends/memory/json'
122
-
123
- load_relative 'backends/file'
124
- load_relative 'backends/file/basic'
125
- load_relative 'backends/file/json'
126
-
127
- load_relative 'backends/redis'
128
- load_relative 'backends/redis/directly_manipulable'
129
- load_relative 'backends/redis/basic'
130
- load_relative 'backends/redis/list'
131
- load_relative 'backends/redis/string'
132
- load_relative 'backends/redis/float'
133
-
134
- load_relative 'backends/sqlite'
135
- load_relative 'backends/sqlite/directly_manipulable'
136
- load_relative 'backends/sqlite/basic'
137
- load_relative 'backends/sqlite/array'
138
- load_relative 'backends/sqlite/value'
139
- load_relative 'backends/sqlite/string_key_array'
140
- load_relative 'backends/sqlite/integer_key_array'
141
-
142
- # Indexing and Indexed things.
143
- #
144
- load_relative 'bundle'
145
- load_relative 'bundle_indexing'
146
- load_relative 'bundle_indexed'
147
- load_relative 'bundle_realtime'
148
-
149
- # Wrappers.
150
- #
151
- load_relative 'wrappers/category/location'
152
-
153
- load_relative 'wrappers/bundle/delegators'
154
- load_relative 'wrappers/bundle/wrapper'
155
- load_relative 'wrappers/bundle/calculation'
156
- load_relative 'wrappers/bundle/location'
157
- load_relative 'wrappers/bundle/exact_partial'
7
+ class << self
158
8
 
159
- # Tokens.
9
+ # Reloads the whole app.
10
+ # First itself, then the app.
160
11
  #
161
- load_relative 'query/token'
162
- load_relative 'query/tokens'
163
-
164
- # Tokenizer.
12
+ def reload app_file = 'app'
13
+ Dir.chdir PICKY_ROOT
14
+ exclaim 'Reloading loader.'
15
+ load_self
16
+ exclaim 'Reloading framework.'
17
+ load_framework
18
+ exclaim "Reloading application in #{File.expand_path(app_file)}."
19
+ load_application app_file
20
+ end
21
+ alias load reload
22
+
23
+ # Loads this file anew.
165
24
  #
166
- load_relative 'tokenizer'
167
-
168
- # Query combinations, qualifiers, weigher.
169
- #
170
- load_relative 'query/combination'
171
- load_relative 'query/combinations'
172
-
173
- load_relative 'query/allocation'
174
- load_relative 'query/allocations'
175
-
176
- load_relative 'query/qualifier_category_mapper'
25
+ def load_self
26
+ Kernel.load __FILE__
27
+ end
177
28
 
178
- load_relative 'query/weights'
179
-
180
- load_relative 'query/indexes'
181
- load_relative 'query/indexes_check'
182
-
183
- # Adapters.
29
+ # Load a file relative to this.
184
30
  #
185
- load_relative 'adapters/rack/base'
186
- load_relative 'adapters/rack/search'
187
- load_relative 'adapters/rack/live_parameters'
188
- load_relative 'adapters/rack'
31
+ def load_relative filename_without_rb
32
+ Kernel.load File.join(File.dirname(__FILE__), "#{filename_without_rb}.rb")
33
+ end
189
34
 
190
- # Routing.
191
- #
192
- load_relative 'frontend_adapters/rack'
193
- end
194
- # Loads the user interface parts.
195
- #
196
- def self.load_user_interface
197
- # Load harakiri.
35
+ # Load a user file.
198
36
  #
199
- load_relative 'rack/harakiri'
37
+ def load_user filename
38
+ Kernel.load File.join(PICKY_ROOT, "#{filename}.rb")
39
+ end
200
40
 
201
- # Load analyzer.
41
+ # Load the user's application.
202
42
  #
203
- load_relative 'analyzer'
204
-
205
- # Character Substituters
43
+ def load_application file = 'app'
44
+ load_user file
45
+ rescue LoadError => e
46
+ exclaim "\nBy default, Picky needs/loads the PICKY_ROOT/app.rb file as the app.\n\n"
47
+ raise e
48
+ end
49
+
50
+ # Loads the internal parts of the framework.
51
+ # (Not for the user)
206
52
  #
207
- load_relative 'character_substituters/west_european'
208
-
209
- # Convenience accessors for generators.
53
+ def load_framework_internals
54
+ # Load compiled C code.
55
+ #
56
+ load_relative 'ext/maybe_compile'
57
+
58
+ # Load extensions.
59
+ #
60
+ load_relative 'extensions/object'
61
+ load_relative 'extensions/array'
62
+ load_relative 'extensions/symbol'
63
+ load_relative 'extensions/string'
64
+ load_relative 'extensions/module'
65
+ load_relative 'extensions/class'
66
+ load_relative 'extensions/hash'
67
+
68
+ # Requiring Helpers
69
+ #
70
+ load_relative 'helpers/measuring'
71
+ load_relative 'helpers/indexing'
72
+
73
+ # Calculations.
74
+ #
75
+ load_relative 'calculations/location'
76
+
77
+ # Index generation strategies.
78
+ #
79
+ load_relative 'indexers/base'
80
+ load_relative 'indexers/serial'
81
+ load_relative 'indexers/parallel'
82
+
83
+ # Generators.
84
+ #
85
+ load_relative 'generators/strategy'
86
+
87
+ # Partial index generation strategies.
88
+ #
89
+ load_relative 'generators/partial/strategy'
90
+ load_relative 'generators/partial/none'
91
+ load_relative 'generators/partial/substring'
92
+ load_relative 'generators/partial/postfix'
93
+ load_relative 'generators/partial/infix'
94
+ load_relative 'generators/partial/default'
95
+
96
+ # Weight index generation strategies.
97
+ #
98
+ load_relative 'generators/weights/strategy'
99
+ load_relative 'generators/weights/stub'
100
+ load_relative 'generators/weights/dynamic'
101
+ load_relative 'generators/weights/constant'
102
+ load_relative 'generators/weights/logarithmic'
103
+ load_relative 'generators/weights/default'
104
+
105
+ # Similarity index generation strategies.
106
+ #
107
+ load_relative 'generators/similarity/strategy'
108
+ load_relative 'generators/similarity/none'
109
+ load_relative 'generators/similarity/phonetic'
110
+ load_relative 'generators/similarity/metaphone'
111
+ load_relative 'generators/similarity/double_metaphone'
112
+ load_relative 'generators/similarity/soundex'
113
+ load_relative 'generators/similarity/default'
114
+
115
+ # Index store handling.
116
+ #
117
+ load_relative 'backends/helpers/file'
118
+ load_relative 'backends/backend'
119
+
120
+ load_relative 'backends/prepared/text'
121
+
122
+ load_relative 'backends/memory'
123
+ load_relative 'backends/memory/basic'
124
+ load_relative 'backends/memory/marshal'
125
+ load_relative 'backends/memory/json'
126
+
127
+ load_relative 'backends/file'
128
+ load_relative 'backends/file/basic'
129
+ load_relative 'backends/file/json'
130
+
131
+ load_relative 'backends/redis'
132
+ load_relative 'backends/redis/directly_manipulable'
133
+ load_relative 'backends/redis/basic'
134
+ load_relative 'backends/redis/list'
135
+ load_relative 'backends/redis/string'
136
+ load_relative 'backends/redis/float'
137
+
138
+ load_relative 'backends/sqlite'
139
+ load_relative 'backends/sqlite/directly_manipulable'
140
+ load_relative 'backends/sqlite/basic'
141
+ load_relative 'backends/sqlite/array'
142
+ load_relative 'backends/sqlite/value'
143
+ load_relative 'backends/sqlite/string_key_array'
144
+ load_relative 'backends/sqlite/integer_key_array'
145
+
146
+ # Indexing and Indexed things.
147
+ #
148
+ load_relative 'bundle'
149
+ load_relative 'bundle_indexing'
150
+ load_relative 'bundle_indexed'
151
+ load_relative 'bundle_realtime'
152
+
153
+ # Wrappers.
154
+ #
155
+ load_relative 'category/location'
156
+
157
+ load_relative 'wrappers/bundle/delegators'
158
+ load_relative 'wrappers/bundle/wrapper'
159
+ load_relative 'wrappers/bundle/calculation'
160
+ load_relative 'wrappers/bundle/location'
161
+ load_relative 'wrappers/bundle/exact_partial'
162
+
163
+ # Tokens.
164
+ #
165
+ load_relative 'query/token'
166
+ load_relative 'query/tokens'
167
+
168
+ # Tokenizer.
169
+ #
170
+ load_relative 'tokenizer'
171
+
172
+ # Query combinations, qualifiers, weigher.
173
+ #
174
+ load_relative 'query/combination'
175
+ load_relative 'query/combinations'
176
+
177
+ load_relative 'query/allocation'
178
+ load_relative 'query/allocations'
179
+
180
+ load_relative 'query/qualifier_category_mapper'
181
+
182
+ load_relative 'query/weights'
183
+
184
+ load_relative 'query/indexes'
185
+ load_relative 'query/indexes_check'
186
+ end
187
+ # Loads the user interface parts.
210
188
  #
211
- load_relative 'generators/aliases'
212
-
213
- # API.
189
+ def load_user_interface
190
+ # Load harakiri.
191
+ #
192
+ load_relative 'rack/harakiri'
193
+
194
+ # Character Substituters
195
+ #
196
+ load_relative 'character_substituters/west_european'
197
+
198
+ # Convenience accessors for generators.
199
+ #
200
+ load_relative 'generators/aliases'
201
+
202
+ # API.
203
+ #
204
+ load_relative 'category'
205
+ load_relative 'category_indexed'
206
+ load_relative 'category_indexing'
207
+ load_relative 'category_realtime'
208
+ load_relative 'category_convenience'
209
+
210
+ load_relative 'categories'
211
+ load_relative 'categories_indexed'
212
+ load_relative 'categories_indexing'
213
+ load_relative 'categories_realtime'
214
+ load_relative 'categories_convenience'
215
+
216
+ load_relative 'indexes'
217
+ load_relative 'indexes_indexed'
218
+ load_relative 'indexes_indexing'
219
+ load_relative 'indexes_convenience'
220
+
221
+ load_relative 'index'
222
+ load_relative 'index_indexed'
223
+ load_relative 'index_indexing'
224
+ load_relative 'index_realtime'
225
+ load_relative 'index_convenience'
226
+
227
+ # Results.
228
+ #
229
+ load_relative 'results'
230
+ load_relative 'results/exact_first'
231
+
232
+ # Search.
233
+ #
234
+ load_relative 'search'
235
+
236
+ # Interfaces
237
+ #
238
+ load_relative 'interfaces/live_parameters/master_child'
239
+ load_relative 'interfaces/live_parameters/unicorn'
240
+
241
+ # Load tools. Load specifically?
242
+ #
243
+ load_relative 'scheduler'
244
+
245
+ # Load migration notices.
246
+ #
247
+ load_relative 'migrations/from_30_to_31'
248
+ end
249
+
250
+ # Loads the framework.
214
251
  #
215
- load_relative 'category'
216
- load_relative 'category_indexed'
217
- load_relative 'category_indexing'
218
- load_relative 'category_realtime'
219
- load_relative 'category_convenience'
220
-
221
- load_relative 'categories'
222
- load_relative 'categories_indexed'
223
- load_relative 'categories_indexing'
224
- load_relative 'categories_realtime'
225
- load_relative 'categories_convenience'
226
-
227
- load_relative 'indexes'
228
- load_relative 'indexes_indexed'
229
- load_relative 'indexes_indexing'
230
- load_relative 'indexes_convenience'
231
-
232
- load_relative 'index'
233
- load_relative 'index_indexed'
234
- load_relative 'index_indexing'
235
- load_relative 'index_realtime'
236
- load_relative 'index_convenience'
237
-
238
- # Results.
239
- #
240
- load_relative 'results'
241
- load_relative 'results/exact_first'
242
-
243
- # Search.
244
- #
245
- load_relative 'search'
246
-
247
- # Sources.
248
- #
249
- load_relative 'sources/base'
250
- load_relative 'sources/db'
251
- load_relative 'sources/csv'
252
- load_relative 'sources/delicious'
253
- load_relative 'sources/couch'
254
- load_relative 'sources/mongo'
255
-
256
- # Interfaces
257
- #
258
- load_relative 'interfaces/live_parameters'
259
-
260
- # Application.
261
- #
262
- load_relative 'application'
263
-
264
- # Load tools. Load specifically?
265
- #
266
- load_relative 'scheduler'
267
-
268
- # Load migration notices.
269
- #
270
- load_relative 'migrations/from_30_to_31'
271
- end
252
+ def load_framework
253
+ load_framework_internals
254
+ load_user_interface
255
+ end
272
256
 
273
- # Loads the framework.
274
- #
275
- def self.load_framework
276
- load_framework_internals
277
- load_user_interface
278
257
  end
279
258
 
280
259
  end