hyper-model 0.99.6 → 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.
- checksums.yaml +4 -4
- data/Gemfile +2 -1
- data/Gemfile.lock +49 -28
- data/hyper-model.gemspec +7 -6
- data/lib/active_record_base.rb +8 -8
- data/lib/hyper-model.rb +6 -4
- data/lib/hyper_model/version.rb +1 -1
- data/lib/hyper_react/input_tags.rb +32 -29
- data/lib/{hyperloop → hyperstack}/model/load.rb +1 -1
- data/lib/reactive_record/active_record/errors.rb +2 -2
- data/lib/reactive_record/active_record/instance_methods.rb +1 -1
- data/lib/reactive_record/active_record/public_columns_hash.rb +3 -3
- data/lib/reactive_record/active_record/reactive_record/base.rb +7 -7
- data/lib/reactive_record/active_record/reactive_record/collection.rb +6 -6
- data/lib/reactive_record/active_record/reactive_record/getters.rb +1 -1
- data/lib/reactive_record/active_record/reactive_record/isomorphic_base.rb +4 -5
- data/lib/reactive_record/active_record/reactive_record/operations.rb +2 -2
- data/lib/reactive_record/active_record/reactive_record/setters.rb +4 -4
- data/lib/reactive_record/active_record/reactive_record/while_loading.rb +119 -115
- data/lib/reactive_record/broadcast.rb +11 -11
- data/lib/reactive_record/permissions.rb +3 -3
- data/lib/reactive_record/pry.rb +1 -1
- data/lib/reactive_record/server_data_cache.rb +2 -2
- metadata +34 -24
- data/CHANGELOG.md +0 -34
- data/DOCS.md +0 -735
- data/LICENSE.txt +0 -21
- data/README.md +0 -51
- data/path_release_steps.md +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a245fe2a742d8094103d2db9c6750b7b237ad35a264d0ad32943cfa818a1369f
|
4
|
+
data.tar.gz: 1aabdd74cf0891a044990eaad6bba04a954707ad6019cd45346503222bce4339
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c01d045ff7537335365032b0d61dd3effb7e64724ca1e87e6ede22543ece2ba3985ccc3cc47b44d5bf5052807699412ef92fe87655b7768c37d4d2faa6e0ebe7
|
7
|
+
data.tar.gz: e494ac07e5b6acbad8dfd1575c1953e6ad977e85a120fcde5883f86e06e02d8ba1c8ba7ade123da11f8a549fab2f29d9494154061c62fdb2649217e4c8a93da9
|
data/Gemfile
CHANGED
@@ -2,7 +2,8 @@ source 'https://rubygems.org'
|
|
2
2
|
#gem "opal-jquery", git: "https://github.com/opal/opal-jquery.git", branch: "master"
|
3
3
|
# hyper-model is still using an ancient inlined version of hyper-spec
|
4
4
|
#gem 'hyper-spec', path: '../hyper-spec'
|
5
|
-
gem '
|
5
|
+
gem 'hyperstack-config', path: '../hyperstack-config'
|
6
|
+
gem 'hyper-state', path: '../hyper-state'
|
6
7
|
gem 'hyper-store', path: '../hyper-store'
|
7
8
|
gem 'hyper-component', path: '../hyper-component'
|
8
9
|
gem 'hyper-operation', path: '../hyper-operation'
|
data/Gemfile.lock
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../hyper-component
|
3
3
|
specs:
|
4
|
-
hyper-component (0.
|
5
|
-
hyper-
|
6
|
-
|
7
|
-
libv8 (~> 6.
|
8
|
-
mini_racer (~> 0.
|
4
|
+
hyper-component (0.1)
|
5
|
+
hyper-state (= 0.1)
|
6
|
+
hyperstack-config (= 0.1)
|
7
|
+
libv8 (~> 6.3.0)
|
8
|
+
mini_racer (~> 0.1.15)
|
9
9
|
opal (>= 0.11.0, < 0.12.0)
|
10
10
|
opal-activesupport (~> 0.3.1)
|
11
11
|
react-rails (>= 2.4.0, < 2.5.0)
|
@@ -13,37 +13,48 @@ PATH
|
|
13
13
|
PATH
|
14
14
|
remote: ../hyper-operation
|
15
15
|
specs:
|
16
|
-
hyper-operation (0.
|
16
|
+
hyper-operation (0.1)
|
17
17
|
activerecord (>= 4.0.0)
|
18
|
-
hyper-component (= 0.
|
18
|
+
hyper-component (= 0.1)
|
19
19
|
mutations
|
20
20
|
opal-activesupport (~> 0.3.1)
|
21
21
|
|
22
|
+
PATH
|
23
|
+
remote: ../hyper-state
|
24
|
+
specs:
|
25
|
+
hyper-state (0.1)
|
26
|
+
hyperstack-config (= 0.1)
|
27
|
+
opal (>= 0.11.0, < 0.12.0)
|
28
|
+
|
22
29
|
PATH
|
23
30
|
remote: ../hyper-store
|
24
31
|
specs:
|
25
|
-
hyper-store (0.
|
26
|
-
|
32
|
+
hyper-store (0.1)
|
33
|
+
hyper-state (= 0.1)
|
34
|
+
hyperstack-config (= 0.1)
|
27
35
|
opal (>= 0.11.0, < 0.12.0)
|
28
36
|
|
29
37
|
PATH
|
30
|
-
remote: ../
|
38
|
+
remote: ../hyperstack-config
|
31
39
|
specs:
|
32
|
-
|
33
|
-
libv8 (~> 6.
|
34
|
-
|
40
|
+
hyperstack-config (0.1)
|
41
|
+
libv8 (~> 6.3.0)
|
42
|
+
listen (~> 3.0)
|
43
|
+
mini_racer (~> 0.1.15)
|
35
44
|
opal (>= 0.11.0, < 0.12.0)
|
36
45
|
opal-browser (~> 0.2.0)
|
37
46
|
uglifier
|
47
|
+
websocket
|
38
48
|
|
39
49
|
PATH
|
40
50
|
remote: .
|
41
51
|
specs:
|
42
|
-
hyper-model (0.
|
52
|
+
hyper-model (0.1)
|
43
53
|
activemodel
|
44
54
|
activerecord (>= 4.0.0)
|
45
|
-
hyper-component (= 0.
|
46
|
-
hyper-operation (= 0.
|
55
|
+
hyper-component (= 0.1)
|
56
|
+
hyper-operation (= 0.1)
|
57
|
+
hyper-store (= 0.1)
|
47
58
|
|
48
59
|
GEM
|
49
60
|
remote: https://rubygems.org/
|
@@ -162,7 +173,11 @@ GEM
|
|
162
173
|
rails-dom-testing (>= 1, < 3)
|
163
174
|
railties (>= 4.2.0)
|
164
175
|
thor (>= 0.14, < 2.0)
|
165
|
-
libv8 (6.
|
176
|
+
libv8 (6.3.292.48.1)
|
177
|
+
listen (3.1.5)
|
178
|
+
rb-fsevent (~> 0.9, >= 0.9.4)
|
179
|
+
rb-inotify (~> 0.9, >= 0.9.7)
|
180
|
+
ruby_dep (~> 1.2)
|
166
181
|
loofah (2.2.2)
|
167
182
|
crass (~> 1.0.2)
|
168
183
|
nokogiri (>= 1.5.9)
|
@@ -176,11 +191,11 @@ GEM
|
|
176
191
|
mimemagic (0.3.2)
|
177
192
|
mini_mime (1.0.1)
|
178
193
|
mini_portile2 (2.3.0)
|
179
|
-
mini_racer (0.
|
180
|
-
libv8 (
|
194
|
+
mini_racer (0.1.15)
|
195
|
+
libv8 (~> 6.3)
|
181
196
|
minitest (5.11.3)
|
182
197
|
multi_json (1.13.1)
|
183
|
-
mutations (0.
|
198
|
+
mutations (0.8.3)
|
184
199
|
activesupport
|
185
200
|
mysql2 (0.5.2)
|
186
201
|
nio4r (2.3.1)
|
@@ -223,7 +238,7 @@ GEM
|
|
223
238
|
interception (>= 0.5)
|
224
239
|
pry
|
225
240
|
public_suffix (3.0.3)
|
226
|
-
puma (3.
|
241
|
+
puma (3.12.0)
|
227
242
|
pusher (1.3.1)
|
228
243
|
httpclient (~> 2.7)
|
229
244
|
multi_json (~> 1.0)
|
@@ -264,6 +279,9 @@ GEM
|
|
264
279
|
rainbow (2.2.2)
|
265
280
|
rake
|
266
281
|
rake (12.3.1)
|
282
|
+
rb-fsevent (0.10.3)
|
283
|
+
rb-inotify (0.9.10)
|
284
|
+
ffi (>= 0.5.0, < 2)
|
267
285
|
react-rails (2.4.7)
|
268
286
|
babel-transpiler (>= 0.7.0)
|
269
287
|
connection_pool
|
@@ -310,6 +328,7 @@ GEM
|
|
310
328
|
ruby-progressbar (~> 1.7)
|
311
329
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
312
330
|
ruby-progressbar (1.10.0)
|
331
|
+
ruby_dep (1.5.0)
|
313
332
|
rubyzip (1.2.2)
|
314
333
|
selenium-webdriver (3.14.0)
|
315
334
|
childprocess (~> 0.5)
|
@@ -343,10 +362,10 @@ GEM
|
|
343
362
|
timecop (0.8.1)
|
344
363
|
tzinfo (1.2.5)
|
345
364
|
thread_safe (~> 0.1)
|
346
|
-
uglifier (4.1.
|
365
|
+
uglifier (4.1.19)
|
347
366
|
execjs (>= 0.3.0, < 3)
|
348
367
|
unicode-display_width (1.4.0)
|
349
|
-
unparser (0.
|
368
|
+
unparser (0.2.8)
|
350
369
|
abstract_type (~> 0.0.7)
|
351
370
|
adamantium (~> 0.2.0)
|
352
371
|
concord (~> 0.1.5)
|
@@ -354,6 +373,7 @@ GEM
|
|
354
373
|
equalizer (~> 0.0.9)
|
355
374
|
parser (>= 2.3.1.2, < 2.6)
|
356
375
|
procto (~> 0.0.2)
|
376
|
+
websocket (1.2.8)
|
357
377
|
websocket-driver (0.7.0)
|
358
378
|
websocket-extensions (>= 0.1.0)
|
359
379
|
websocket-extensions (0.1.3)
|
@@ -372,10 +392,11 @@ DEPENDENCIES
|
|
372
392
|
hyper-component!
|
373
393
|
hyper-model!
|
374
394
|
hyper-operation!
|
395
|
+
hyper-state!
|
375
396
|
hyper-store!
|
376
|
-
|
377
|
-
libv8 (~> 6.
|
378
|
-
mini_racer (~> 0.
|
397
|
+
hyperstack-config!
|
398
|
+
libv8 (~> 6.3.0)
|
399
|
+
mini_racer (~> 0.1.15)
|
379
400
|
mysql2
|
380
401
|
opal-activesupport (~> 0.3.1)
|
381
402
|
opal-browser (~> 0.2.0)
|
@@ -404,7 +425,7 @@ DEPENDENCIES
|
|
404
425
|
spring-commands-rspec
|
405
426
|
sqlite3
|
406
427
|
timecop (~> 0.8.1)
|
407
|
-
unparser
|
428
|
+
unparser
|
408
429
|
|
409
430
|
BUNDLED WITH
|
410
|
-
1.
|
431
|
+
1.16.1
|
data/hyper-model.gemspec
CHANGED
@@ -13,11 +13,11 @@ Gem::Specification.new do |spec|
|
|
13
13
|
'API. HyperModel also implements push notifications (via a number of '\
|
14
14
|
'possible technologies) so changes to records on the server are '\
|
15
15
|
'dynamically updated on all authorised clients.'
|
16
|
-
spec.homepage = 'http://ruby-
|
16
|
+
spec.homepage = 'http://ruby-hyperstack.org'
|
17
17
|
spec.license = 'MIT'
|
18
18
|
# spec.metadata = {
|
19
|
-
# "homepage_uri" => 'http://ruby-
|
20
|
-
# "source_code_uri" => 'https://github.com/ruby-
|
19
|
+
# "homepage_uri" => 'http://ruby-hyperstack.org',
|
20
|
+
# "source_code_uri" => 'https://github.com/ruby-hyperstack/hyper-component'
|
21
21
|
# }
|
22
22
|
|
23
23
|
spec.files = `git ls-files`.split("\n").reject { |f| f.match(%r{^(examples|gemfiles|pkg|reactive_record_test_app|spec)/}) }
|
@@ -29,11 +29,12 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.add_dependency 'activerecord', '>= 4.0.0'
|
30
30
|
spec.add_dependency 'hyper-component', HyperModel::VERSION
|
31
31
|
spec.add_dependency 'hyper-operation', HyperModel::VERSION
|
32
|
+
spec.add_dependency 'hyper-store', HyperModel::VERSION # only for Hyperstack::Internal::Store::State which should be moved
|
32
33
|
spec.add_development_dependency 'bundler'
|
33
34
|
spec.add_development_dependency 'capybara'
|
34
35
|
spec.add_development_dependency 'chromedriver-helper', '1.2.0'
|
35
|
-
spec.add_development_dependency 'libv8', '~> 6.
|
36
|
-
spec.add_development_dependency 'mini_racer', '~> 0.
|
36
|
+
spec.add_development_dependency 'libv8', '~> 6.3.0' # see https://github.com/discourse/mini_racer/issues/92
|
37
|
+
spec.add_development_dependency 'mini_racer', '~> 0.1.15'
|
37
38
|
spec.add_development_dependency 'selenium-webdriver'
|
38
39
|
spec.add_development_dependency 'database_cleaner'
|
39
40
|
spec.add_development_dependency 'factory_bot_rails'
|
@@ -65,5 +66,5 @@ Gem::Specification.new do |spec|
|
|
65
66
|
spec.add_development_dependency 'spring-commands-rspec'
|
66
67
|
spec.add_development_dependency 'sqlite3'
|
67
68
|
spec.add_development_dependency 'timecop', '~> 0.8.1'
|
68
|
-
spec.add_development_dependency 'unparser'
|
69
|
+
spec.add_development_dependency 'unparser'
|
69
70
|
end
|
data/lib/active_record_base.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Monkey patches to ActiveRecord for scoping, security, and to synchronize models
|
2
2
|
module ActiveRecord
|
3
|
-
#
|
3
|
+
# hyperstack adds new features to scopes to allow for computing scopes on client side
|
4
4
|
# and for hinting at what joins are involved in a scope. _synchromesh_scope_args_check
|
5
5
|
# processes these arguments, and the will always leave the true server side scoping
|
6
6
|
# proc in the `:server` opts. This method is common to client and server.
|
@@ -43,7 +43,7 @@ module ActiveRecord
|
|
43
43
|
return self if __synchromesh_permission_granted
|
44
44
|
return self if __secure_remote_access_to_all(self, acting_user).__synchromesh_permission_granted
|
45
45
|
return self if __secure_remote_access_to_unscoped(self, acting_user).__synchromesh_permission_granted
|
46
|
-
|
46
|
+
Hyperstack::InternalPolicy.raise_operation_access_violation(:scoped_permission_not_granted, "Last relation: #{self}, acting_user: #{acting_user}")
|
47
47
|
end
|
48
48
|
end
|
49
49
|
# Monkey patches and extensions to base
|
@@ -53,11 +53,11 @@ module ActiveRecord
|
|
53
53
|
# __secure_remote_access_to_
|
54
54
|
|
55
55
|
# The wrapper method may simply return the normal result or may act to secure the data.
|
56
|
-
# The simpliest case is for the method to call `denied!` which will raise a
|
56
|
+
# The simpliest case is for the method to call `denied!` which will raise a Hyperstack
|
57
57
|
# access protection fault.
|
58
58
|
|
59
59
|
def denied!
|
60
|
-
|
60
|
+
Hyperstack::InternalPolicy.raise_operation_access_violation(:scoped_denied, "#{self} regulation denies scope access. Called from #{caller_locations(1)}")
|
61
61
|
end
|
62
62
|
|
63
63
|
# Here we set up the base `all` and `unscoped` methods. See below for more on how
|
@@ -199,7 +199,7 @@ module ActiveRecord
|
|
199
199
|
regulate_scope(:all, &block)
|
200
200
|
end
|
201
201
|
|
202
|
-
# monkey patch scope and default_scope macros to process
|
202
|
+
# monkey patch scope and default_scope macros to process hyperstack special opts,
|
203
203
|
# and add regulations if present
|
204
204
|
|
205
205
|
alias pre_synchromesh_scope scope
|
@@ -276,7 +276,7 @@ module ActiveRecord
|
|
276
276
|
end
|
277
277
|
|
278
278
|
def denied!
|
279
|
-
|
279
|
+
Hyperstack::InternalPolicy.raise_operation_access_violation(:scoped_denied, "#{self.class} regulation denies scope access. Called from #{caller_locations(1)}")
|
280
280
|
end
|
281
281
|
|
282
282
|
# call do_not_synchronize to block synchronization of a model
|
@@ -314,9 +314,9 @@ module ActiveRecord
|
|
314
314
|
ReactiveRecord::Broadcast.after_commit :destroy, self
|
315
315
|
end
|
316
316
|
|
317
|
-
def
|
317
|
+
def __hyperstack_secure_attributes(acting_user)
|
318
318
|
accessible_attributes =
|
319
|
-
|
319
|
+
Hyperstack::InternalPolicy.accessible_attributes_for(self, acting_user)
|
320
320
|
attributes.select { |attr| accessible_attributes.include? attr.to_sym }
|
321
321
|
end
|
322
322
|
|
data/lib/hyper-model.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'set'
|
2
|
-
require '
|
2
|
+
require 'hyperstack-config'
|
3
3
|
require 'hyper-component'
|
4
4
|
if RUBY_ENGINE == 'opal'
|
5
5
|
require 'hyper-operation'
|
@@ -9,6 +9,8 @@ if RUBY_ENGINE == 'opal'
|
|
9
9
|
require 'kernel/itself' unless Object.instance_methods.include?(:itself)
|
10
10
|
require 'object/tap'
|
11
11
|
require 'active_model_client_stubs'
|
12
|
+
require 'hyper-state'
|
13
|
+
require 'hyper-store'
|
12
14
|
require "reactive_record/active_record_error"
|
13
15
|
require "reactive_record/active_record/errors"
|
14
16
|
require "reactive_record/active_record/error"
|
@@ -36,14 +38,14 @@ if RUBY_ENGINE == 'opal'
|
|
36
38
|
require "reactive_record/active_record/instance_methods"
|
37
39
|
require "reactive_record/active_record/base"
|
38
40
|
require 'hyper_react/input_tags'
|
39
|
-
require '
|
41
|
+
require 'hyperstack/model/load'
|
40
42
|
require_relative 'hyper_model/version'
|
41
43
|
require_relative 'opal/parse_patch'
|
42
44
|
require_relative 'opal/set_patches'
|
43
45
|
require_relative 'opal/equality_patches'
|
44
|
-
|
46
|
+
Hyperstack::Component::IsomorphicHelpers.log(
|
45
47
|
"The gem 'hyper-mesh' is deprecated. Use gem 'hyper-model' instead.", :warning
|
46
|
-
) unless defined?
|
48
|
+
) unless defined? Hyperstack::Model
|
47
49
|
else
|
48
50
|
require 'opal'
|
49
51
|
require 'hyper-operation'
|
data/lib/hyper_model/version.rb
CHANGED
@@ -7,40 +7,43 @@
|
|
7
7
|
# flag then we know that within that expression there is a value still being loaded, and the react
|
8
8
|
# key will be set accordingly.
|
9
9
|
|
10
|
-
module
|
11
|
-
module
|
12
|
-
module
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
opts[:
|
30
|
-
|
31
|
-
|
10
|
+
module Hyperstack
|
11
|
+
module Internal
|
12
|
+
module Component
|
13
|
+
module Tags
|
14
|
+
%i[INPUT SELECT TEXTAREA].each do |component|
|
15
|
+
remove_method component
|
16
|
+
send(:remove_const, component)
|
17
|
+
tag = component.downcase
|
18
|
+
klass = Class.new do
|
19
|
+
include Hyperstack::Component
|
20
|
+
collect_other_params_as :opts
|
21
|
+
render do
|
22
|
+
opts = props.dup # should be opts = params.opts.dup but requires next release candiate of hyper-react
|
23
|
+
default_value = opts[:defaultValue] || opts[:defaultChecked]
|
24
|
+
if default_value.respond_to? :call
|
25
|
+
begin
|
26
|
+
saved_waiting_on_resources = Hyperstack::Internal::Component::RenderingContext.waiting_on_resources
|
27
|
+
Hyperstack::Internal::Component::RenderingContext.waiting_on_resources = false
|
28
|
+
default_value = default_value.call
|
29
|
+
opts[:key] = Hyperstack::Internal::Component::RenderingContext.waiting_on_resources
|
30
|
+
if opts[:defaultValue]
|
31
|
+
opts[:defaultValue] = default_value
|
32
|
+
else
|
33
|
+
opts[:defaultChecked] = default_value
|
34
|
+
end
|
35
|
+
ensure
|
36
|
+
Hyperstack::Internal::Component::RenderingContext.waiting_on_resources = !!saved_waiting_on_resources
|
32
37
|
end
|
33
|
-
|
34
|
-
|
38
|
+
else
|
39
|
+
opts[:key] = !!default_value.loading?
|
35
40
|
end
|
36
|
-
|
37
|
-
opts
|
41
|
+
opts[:value] = opts[:value].to_s if opts.key? :value # this may not be needed
|
42
|
+
Hyperstack::Internal::Component::RenderingContext.render(tag, opts) { children.each(&:render) }
|
38
43
|
end
|
39
|
-
opts[:value] = opts[:value].to_s if opts.key? :value # this may not be needed
|
40
|
-
React::RenderingContext.render(tag, opts) { children.each(&:render) }
|
41
44
|
end
|
45
|
+
const_set component, klass
|
42
46
|
end
|
43
|
-
const_set component, klass
|
44
47
|
end
|
45
48
|
end
|
46
49
|
end
|
@@ -210,7 +210,7 @@ module ActiveModel
|
|
210
210
|
alias :blank? :empty?
|
211
211
|
|
212
212
|
def reactive_empty?
|
213
|
-
|
213
|
+
Hyperstack::Internal::Store::State.get_state(self, 'ERRORS?')
|
214
214
|
end
|
215
215
|
|
216
216
|
# Clear the error messages.
|
@@ -368,7 +368,7 @@ module ActiveModel
|
|
368
368
|
end
|
369
369
|
|
370
370
|
def reactive_empty!(state = empty?)
|
371
|
-
|
371
|
+
Hyperstack::Internal::Store::State.set_state(self, 'ERRORS?', state) unless ReactiveRecord::Base.data_loading?
|
372
372
|
end
|
373
373
|
end
|
374
374
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
module
|
2
|
-
define_setting :public_model_directories, [File.join('app','
|
1
|
+
module Hyperstack
|
2
|
+
define_setting :public_model_directories, [File.join('app','hyperstack','models'), File.join('app','models','public')]
|
3
3
|
end
|
4
4
|
|
5
5
|
module ActiveRecord
|
@@ -9,7 +9,7 @@ module ActiveRecord
|
|
9
9
|
def self.public_columns_hash
|
10
10
|
return @public_columns_hash if @public_columns_hash && Rails.env.production?
|
11
11
|
files = []
|
12
|
-
|
12
|
+
Hyperstack.public_model_directories.each do |dir|
|
13
13
|
dir_length = Rails.root.join(dir).to_s.length + 1
|
14
14
|
Dir.glob(Rails.root.join(dir, '**', '*.rb')).each do |file|
|
15
15
|
require_dependency(file) # still the file is loaded to make sure for development and test env
|