forest_liana 7.6.1 → 7.6.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/services/forest_liana/base_getter.rb +22 -0
- data/app/services/forest_liana/has_many_getter.rb +2 -6
- data/app/services/forest_liana/pie_stat_getter.rb +1 -1
- data/app/services/forest_liana/resource_getter.rb +1 -1
- data/app/services/forest_liana/resources_getter.rb +3 -3
- data/app/services/forest_liana/schema_adapter.rb +2 -0
- data/app/services/forest_liana/search_query_builder.rb +3 -1
- data/app/services/forest_liana/value_stat_getter.rb +1 -1
- data/lib/forest_liana/bootstrapper.rb +2 -2
- data/lib/forest_liana/version.rb +1 -1
- data/spec/dummy/app/models/island.rb +1 -0
- data/spec/dummy/app/models/tree.rb +5 -0
- data/spec/helpers/forest_liana/query_helper_spec.rb +18 -11
- data/spec/lib/forest_liana/bootstrapper_spec.rb +104 -0
- data/spec/services/forest_liana/resources_getter_spec.rb +15 -0
- data/spec/services/forest_liana/schema_adapter_spec.rb +13 -1
- metadata +129 -129
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f706a8e009cd73a7493662f62db58e8fa05daccd6c51b3303919354573bbdb6
|
4
|
+
data.tar.gz: 28c20ebe192a3e9aa366026c1e2f65401cc5627806c6e1348ca6a29297b3889b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7119a64a459718a8f65b7c5a85cefcd6e427360ce14a8f5bd0749ef5eb88b30441ea82c1f409e706a60919fc7615f2f2b7b7d21d41e10490d8f9f3f2010205f
|
7
|
+
data.tar.gz: e85658a00033eccc188f75e59cb15a4b299044e4f7e012f92b07dad854a40b3811b524a3ba7bfedd74f2d00193d01d53424c5da09468947f5c998fd24595380b
|
@@ -29,5 +29,27 @@ module ForestLiana
|
|
29
29
|
def compute_includes
|
30
30
|
@includes = ForestLiana::QueryHelper.get_one_association_names_symbol(@resource)
|
31
31
|
end
|
32
|
+
|
33
|
+
def optimize_record_loading(resource, records)
|
34
|
+
instance_dependent_associations = instance_dependent_associations(resource)
|
35
|
+
eager_loads = @includes - instance_dependent_associations
|
36
|
+
|
37
|
+
result = records.eager_load(eager_loads)
|
38
|
+
|
39
|
+
# Rails 7 can mix `eager_load` and `preload` in the same scope
|
40
|
+
# Rails 6 cannot mix `eager_load` and `preload` in the same scope
|
41
|
+
# Rails 6 and 7 cannot mix `eager_load` and `includes` in the same scope
|
42
|
+
if Rails::VERSION::MAJOR >= 7
|
43
|
+
result = result.preload(instance_dependent_associations)
|
44
|
+
end
|
45
|
+
|
46
|
+
result
|
47
|
+
end
|
48
|
+
|
49
|
+
def instance_dependent_associations(resource)
|
50
|
+
@includes.select do |association_name|
|
51
|
+
resource.reflect_on_association(association_name)&.scope&.arity&.positive?
|
52
|
+
end
|
53
|
+
end
|
32
54
|
end
|
33
55
|
end
|
@@ -64,12 +64,8 @@ module ForestLiana
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def prepare_query
|
67
|
-
|
68
|
-
|
69
|
-
.find(@params[:id])
|
70
|
-
.send(@params[:association_name])
|
71
|
-
.eager_load(@includes)
|
72
|
-
)
|
67
|
+
association = get_resource().find(@params[:id]).send(@params[:association_name])
|
68
|
+
@records = optimize_record_loading(association, @search_query_builder.perform(association))
|
73
69
|
end
|
74
70
|
|
75
71
|
def offset
|
@@ -5,7 +5,7 @@ module ForestLiana
|
|
5
5
|
def perform
|
6
6
|
if @params[:group_by_field]
|
7
7
|
timezone_offset = @params[:timezone].to_i
|
8
|
-
resource =
|
8
|
+
resource = optimize_record_loading(@resource, get_resource)
|
9
9
|
|
10
10
|
filters = ForestLiana::ScopeManager.append_scope_for_user(@params[:filters], @user, @resource.name)
|
11
11
|
|
@@ -12,7 +12,7 @@ module ForestLiana
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def perform
|
15
|
-
records = get_resource()
|
15
|
+
records = optimize_record_loading(@resource, get_resource())
|
16
16
|
scoped_records = ForestLiana::ScopeManager.apply_scopes_on_records(records, @user, @collection_name, @params[:timezone])
|
17
17
|
@record = scoped_records.find(@params[:id])
|
18
18
|
end
|
@@ -66,13 +66,13 @@ module ForestLiana
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def perform
|
69
|
-
@records = @records
|
69
|
+
@records = optimize_record_loading(@resource, @records)
|
70
70
|
end
|
71
71
|
|
72
72
|
def count
|
73
|
-
# NOTICE: For performance reasons, do not
|
73
|
+
# NOTICE: For performance reasons, do not optimize loading the data if there is no search or
|
74
74
|
# filters on associations.
|
75
|
-
@records_count = @count_needs_includes ? @records
|
75
|
+
@records_count = @count_needs_includes ? optimize_record_loading(@resource, @records).count : @records.count
|
76
76
|
end
|
77
77
|
|
78
78
|
def query_for_batch
|
@@ -8,6 +8,8 @@ module ForestLiana
|
|
8
8
|
add_columns
|
9
9
|
add_associations
|
10
10
|
|
11
|
+
collection.fields.sort_by! { |k| k[:field].to_s }
|
12
|
+
|
11
13
|
# NOTICE: Add ActsAsTaggable fields
|
12
14
|
if @model.try(:taggable?) && @model.respond_to?(:acts_as_taggable) &&
|
13
15
|
@model.acts_as_taggable.respond_to?(:to_a)
|
@@ -61,7 +61,7 @@ module ForestLiana
|
|
61
61
|
conditions = []
|
62
62
|
|
63
63
|
@resource.columns.each_with_index do |column, index|
|
64
|
-
@fields_searched << column.name if text_type? column.type
|
64
|
+
@fields_searched << column.name if text_type?(column.type) || column.type == :uuid
|
65
65
|
column_name = format_column_name(@resource.table_name, column.name)
|
66
66
|
if (@collection.search_fields && !@collection.search_fields.include?(column.name))
|
67
67
|
conditions
|
@@ -73,6 +73,8 @@ module ForestLiana
|
|
73
73
|
conditions << "#{@resource.table_name}.id = :search_value_for_uuid"
|
74
74
|
end
|
75
75
|
# NOTICE: Rails 3 do not have a defined_enums method
|
76
|
+
elsif REGEX_UUID.match(@search) && column.type == :uuid
|
77
|
+
conditions << "#{column_name} = :search_value_for_uuid"
|
76
78
|
elsif @resource.respond_to?(:defined_enums) &&
|
77
79
|
@resource.defined_enums.has_key?(column.name) &&
|
78
80
|
!@resource.defined_enums[column.name][@search.downcase].nil?
|
@@ -4,7 +4,7 @@ module ForestLiana
|
|
4
4
|
|
5
5
|
def perform
|
6
6
|
return if @params[:aggregate].blank?
|
7
|
-
resource =
|
7
|
+
resource = optimize_record_loading(@resource, get_resource)
|
8
8
|
|
9
9
|
filters = ForestLiana::ScopeManager.append_scope_for_user(@params[:filters], @user, @resource.name)
|
10
10
|
|
@@ -59,8 +59,8 @@ module ForestLiana
|
|
59
59
|
c = get_collection(collection['name'])
|
60
60
|
unless c.nil?
|
61
61
|
a = get_action(c, action['name'])
|
62
|
-
load = !a.hooks.nil? && a.hooks.key?(:load) && a.hooks[:load].is_a?(Proc)
|
63
|
-
change = !a.hooks.nil? && a.hooks.key?(:change) && a.hooks[:change].is_a?(Hash) ? a.hooks[:change].keys : []
|
62
|
+
load = !a.nil? && !a.hooks.nil? && a.hooks.key?(:load) && a.hooks[:load].is_a?(Proc)
|
63
|
+
change = !a.nil? && !a.hooks.nil? && a.hooks.key?(:change) && a.hooks[:change].is_a?(Hash) ? a.hooks[:change].keys : []
|
64
64
|
action['hooks'] = {'load' => load, 'change' => change}
|
65
65
|
end
|
66
66
|
end
|
data/lib/forest_liana/version.rb
CHANGED
@@ -2,4 +2,9 @@ class Tree < ActiveRecord::Base
|
|
2
2
|
belongs_to :owner, class_name: 'User', inverse_of: :trees_owned
|
3
3
|
belongs_to :cutter, class_name: 'User', inverse_of: :trees_cut
|
4
4
|
belongs_to :island
|
5
|
+
belongs_to :eponymous_island,
|
6
|
+
->(record) { where(name: record.name) },
|
7
|
+
class_name: 'Island',
|
8
|
+
inverse_of: :eponymous_tree,
|
9
|
+
optional: true
|
5
10
|
end
|
@@ -14,29 +14,35 @@ module ForestLiana
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
context 'on a model having
|
17
|
+
context 'on a model having some belongsTo associations' do
|
18
|
+
let(:expected_association_attributes) do
|
19
|
+
[
|
20
|
+
{ name: :owner, klass: User },
|
21
|
+
{ name: :cutter, klass: User },
|
22
|
+
{ name: :island, klass: Island },
|
23
|
+
{ name: :eponymous_island, klass: Island },
|
24
|
+
]
|
25
|
+
end
|
26
|
+
|
18
27
|
it 'should return the one-one associations' do
|
19
28
|
associations = QueryHelper.get_one_associations(Tree)
|
20
|
-
expect(associations.length).to eq(
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
expect(associations.second.klass).to eq(User)
|
25
|
-
expect(associations.third.name).to eq(:island)
|
26
|
-
expect(associations.third.klass).to eq(Island)
|
29
|
+
expect(associations.length).to eq(expected_association_attributes.length)
|
30
|
+
associations.zip(expected_association_attributes).each do |association, expected_attributes|
|
31
|
+
expect(association).to have_attributes(expected_attributes)
|
32
|
+
end
|
27
33
|
end
|
28
34
|
end
|
29
35
|
end
|
30
36
|
|
31
37
|
describe 'get_one_association_names_symbol' do
|
32
38
|
it 'should return the one-one associations names as symbols' do
|
33
|
-
expect(QueryHelper.get_one_association_names_symbol(Tree)).to eq([:owner, :cutter, :island])
|
39
|
+
expect(QueryHelper.get_one_association_names_symbol(Tree)).to eq([:owner, :cutter, :island, :eponymous_island])
|
34
40
|
end
|
35
41
|
end
|
36
42
|
|
37
43
|
describe 'get_one_association_names_string' do
|
38
44
|
it 'should return the one-one associations names as strings' do
|
39
|
-
expect(QueryHelper.get_one_association_names_string(Tree)).to eq(['owner', 'cutter', 'island'])
|
45
|
+
expect(QueryHelper.get_one_association_names_string(Tree)).to eq(['owner', 'cutter', 'island', 'eponymous_island'])
|
40
46
|
end
|
41
47
|
end
|
42
48
|
|
@@ -64,8 +70,9 @@ module ForestLiana
|
|
64
70
|
end
|
65
71
|
|
66
72
|
it 'should return relationships on models having a custom table name' do
|
67
|
-
expect(tables_associated_to_relations_name['isle'].length).to eq(
|
73
|
+
expect(tables_associated_to_relations_name['isle'].length).to eq(2)
|
68
74
|
expect(tables_associated_to_relations_name['isle'].first).to eq(:island)
|
75
|
+
expect(tables_associated_to_relations_name['isle'].second).to eq(:eponymous_island)
|
69
76
|
end
|
70
77
|
end
|
71
78
|
end
|
@@ -8,5 +8,109 @@ module ForestLiana
|
|
8
8
|
.to include(:database_type)
|
9
9
|
end
|
10
10
|
end
|
11
|
+
|
12
|
+
describe 'generate_action_hooks' do
|
13
|
+
schema = '{
|
14
|
+
"collections": [
|
15
|
+
{
|
16
|
+
"name": "Island",
|
17
|
+
"name_old": "Island",
|
18
|
+
"icon": null,
|
19
|
+
"is_read_only": false,
|
20
|
+
"is_searchable": true,
|
21
|
+
"is_virtual": false,
|
22
|
+
"only_for_relationships": false,
|
23
|
+
"pagination_type": "page",
|
24
|
+
"fields": [
|
25
|
+
{
|
26
|
+
"field": "id",
|
27
|
+
"type": "Number",
|
28
|
+
"default_value": null,
|
29
|
+
"enums": null,
|
30
|
+
"integration": null,
|
31
|
+
"is_filterable": true,
|
32
|
+
"is_read_only": false,
|
33
|
+
"is_required": false,
|
34
|
+
"is_sortable": true,
|
35
|
+
"is_virtual": false,
|
36
|
+
"reference": null,
|
37
|
+
"inverse_of": null,
|
38
|
+
"widget": null,
|
39
|
+
"validations": []
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"field": "first_name",
|
43
|
+
"type": "String",
|
44
|
+
"default_value": null,
|
45
|
+
"enums": null,
|
46
|
+
"integration": null,
|
47
|
+
"is_filterable": true,
|
48
|
+
"is_read_only": false,
|
49
|
+
"is_required": false,
|
50
|
+
"is_sortable": true,
|
51
|
+
"is_virtual": false,
|
52
|
+
"reference": null,
|
53
|
+
"inverse_of": null,
|
54
|
+
"widget": null,
|
55
|
+
"validations": []
|
56
|
+
},
|
57
|
+
{
|
58
|
+
"field": "last_name",
|
59
|
+
"type": "String",
|
60
|
+
"default_value": null,
|
61
|
+
"enums": null,
|
62
|
+
"integration": null,
|
63
|
+
"is_filterable": true,
|
64
|
+
"is_read_only": false,
|
65
|
+
"is_required": false,
|
66
|
+
"is_sortable": true,
|
67
|
+
"is_virtual": false,
|
68
|
+
"reference": null,
|
69
|
+
"inverse_of": null,
|
70
|
+
"widget": null,
|
71
|
+
"validations": []
|
72
|
+
}
|
73
|
+
],
|
74
|
+
"segments": [],
|
75
|
+
"actions": [
|
76
|
+
{
|
77
|
+
"name": "foo",
|
78
|
+
"type": "bulk",
|
79
|
+
"base_url": null,
|
80
|
+
"endpoint": "forest/actions/mark-as-live",
|
81
|
+
"http_method": "POST",
|
82
|
+
"redirect": null,
|
83
|
+
"download": false,
|
84
|
+
"fields": [],
|
85
|
+
"hooks": {
|
86
|
+
"load": false,
|
87
|
+
"change": []
|
88
|
+
}
|
89
|
+
}
|
90
|
+
]
|
91
|
+
}
|
92
|
+
],
|
93
|
+
"meta": {
|
94
|
+
"liana": "forest-rails",
|
95
|
+
"liana_version": "7.6.0",
|
96
|
+
"stack": {
|
97
|
+
"database_type": "postgresql",
|
98
|
+
"orm_version": "7.0.2.4"
|
99
|
+
}
|
100
|
+
}
|
101
|
+
}'
|
102
|
+
|
103
|
+
|
104
|
+
it "Should return actions hooks empty for the island collection" do
|
105
|
+
allow(ForestLiana).to receive(:env_secret).and_return(nil)
|
106
|
+
bootstrapper = Bootstrapper.new
|
107
|
+
content = JSON.parse(schema)
|
108
|
+
bootstrapper.instance_variable_set(:@collections_sent, content['collections'])
|
109
|
+
bootstrapper.instance_variable_set(:@meta_sent, content['meta'])
|
110
|
+
bootstrapper.send(:generate_action_hooks)
|
111
|
+
|
112
|
+
expect(bootstrapper.instance_variable_get("@collections_sent").first['actions'].first['hooks']).to eq({"load"=>false, "change"=>[]})
|
113
|
+
end
|
114
|
+
end
|
11
115
|
end
|
12
116
|
end
|
@@ -155,6 +155,21 @@ module ForestLiana
|
|
155
155
|
end
|
156
156
|
end
|
157
157
|
|
158
|
+
describe 'when getting instance dependent associations' do
|
159
|
+
let(:resource) { Island }
|
160
|
+
let(:fields) { { 'Island' => 'id,eponymous_tree', 'eponymous_tree' => 'id,name'} }
|
161
|
+
|
162
|
+
it 'should get only the expected records' do
|
163
|
+
getter.perform
|
164
|
+
records = getter.records
|
165
|
+
count = getter.count
|
166
|
+
|
167
|
+
expect(records.count).to eq Island.count
|
168
|
+
expect(count).to eq Island.count
|
169
|
+
expect(records.map(&:name)).to match_array(Island.pluck(:name))
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
158
173
|
describe 'when filtering on an ambiguous field' do
|
159
174
|
let(:resource) { Tree }
|
160
175
|
let(:pageSize) { 5 }
|
@@ -8,7 +8,19 @@ module ForestLiana
|
|
8
8
|
end
|
9
9
|
|
10
10
|
expect(collection.fields.map { |field| field[:field] }).to eq(
|
11
|
-
["
|
11
|
+
["created_at", "eponymous_tree", "id", "location", "name", "trees", "updated_at"]
|
12
|
+
)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'with standard fields' do
|
17
|
+
it 'should be sort by alphabetical order' do
|
18
|
+
collection = ForestLiana.apimap.find do |object|
|
19
|
+
object.name.to_s == ForestLiana.name_for(Tree)
|
20
|
+
end
|
21
|
+
|
22
|
+
expect(collection.fields.map { |field| field[:field].to_s}).to eq(
|
23
|
+
["age", "created_at", "cutter", "eponymous_island", "id", "island", "name", "owner", "updated_at"]
|
12
24
|
)
|
13
25
|
end
|
14
26
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: forest_liana
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.6.
|
4
|
+
version: 7.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sandro Munda
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-06-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -515,176 +515,176 @@ signing_key:
|
|
515
515
|
specification_version: 4
|
516
516
|
summary: Official Rails Liana for Forest
|
517
517
|
test_files:
|
518
|
-
- test/
|
519
|
-
- test/fixtures/has_many_field.yml
|
520
|
-
- test/fixtures/serialize_field.yml
|
521
|
-
- test/fixtures/tree.yml
|
522
|
-
- test/fixtures/string_field.yml
|
523
|
-
- test/fixtures/has_many_through_field.yml
|
524
|
-
- test/fixtures/has_one_field.yml
|
525
|
-
- test/fixtures/reference.yml
|
526
|
-
- test/fixtures/owner.yml
|
518
|
+
- test/test_helper.rb
|
527
519
|
- test/forest_liana_test.rb
|
528
520
|
- test/routing/route_test.rb
|
529
|
-
- test/test_helper.rb
|
530
|
-
- test/services/forest_liana/operator_date_interval_parser_test.rb
|
531
521
|
- test/services/forest_liana/schema_adapter_test.rb
|
522
|
+
- test/services/forest_liana/operator_date_interval_parser_test.rb
|
523
|
+
- test/dummy/app/helpers/application_helper.rb
|
524
|
+
- test/dummy/app/models/serialize_field.rb
|
525
|
+
- test/dummy/app/models/float_field.rb
|
526
|
+
- test/dummy/app/models/belongs_to_field.rb
|
527
|
+
- test/dummy/app/models/has_many_class_name_field.rb
|
528
|
+
- test/dummy/app/models/reference.rb
|
529
|
+
- test/dummy/app/models/has_many_field.rb
|
530
|
+
- test/dummy/app/models/has_many_through_field.rb
|
531
|
+
- test/dummy/app/models/integer_field.rb
|
532
|
+
- test/dummy/app/models/string_field.rb
|
533
|
+
- test/dummy/app/models/owner.rb
|
534
|
+
- test/dummy/app/models/decimal_field.rb
|
535
|
+
- test/dummy/app/models/has_and_belongs_to_many_field.rb
|
536
|
+
- test/dummy/app/models/polymorphic_field.rb
|
537
|
+
- test/dummy/app/models/tree.rb
|
538
|
+
- test/dummy/app/models/belongs_to_class_name_field.rb
|
539
|
+
- test/dummy/app/models/has_one_field.rb
|
540
|
+
- test/dummy/app/models/date_field.rb
|
541
|
+
- test/dummy/app/models/boolean_field.rb
|
542
|
+
- test/dummy/app/views/layouts/application.html.erb
|
543
|
+
- test/dummy/app/controllers/application_controller.rb
|
544
|
+
- test/dummy/app/assets/config/manifest.js
|
545
|
+
- test/dummy/app/assets/javascripts/application.js
|
546
|
+
- test/dummy/app/assets/stylesheets/application.css
|
547
|
+
- test/dummy/public/422.html
|
532
548
|
- test/dummy/public/favicon.ico
|
533
549
|
- test/dummy/public/404.html
|
534
550
|
- test/dummy/public/500.html
|
535
|
-
- test/dummy/public/422.html
|
536
|
-
- test/dummy/db/migrate/20150608132621_create_string_field.rb
|
537
|
-
- test/dummy/db/migrate/20160628173505_add_timestamps.rb
|
538
|
-
- test/dummy/db/migrate/20160627172951_create_tree.rb
|
539
|
-
- test/dummy/db/migrate/20150608130516_create_date_field.rb
|
540
|
-
- test/dummy/db/migrate/20150609114636_create_belongs_to_class_name_field.rb
|
541
|
-
- test/dummy/db/migrate/20150814081918_create_has_many_through_field.rb
|
542
|
-
- test/dummy/db/migrate/20160627172810_create_owner.rb
|
543
|
-
- test/dummy/db/migrate/20150623115554_create_has_many_class_name_field.rb
|
544
|
-
- test/dummy/db/migrate/20150608132159_create_boolean_field.rb
|
545
|
-
- test/dummy/db/migrate/20150608131430_create_integer_field.rb
|
546
|
-
- test/dummy/db/migrate/20150612112520_create_has_and_belongs_to_many_field.rb
|
547
|
-
- test/dummy/db/migrate/20150608133038_create_belongs_to_field.rb
|
548
|
-
- test/dummy/db/migrate/20170614141921_create_serialize_field.rb
|
549
|
-
- test/dummy/db/migrate/20150608131610_create_float_field.rb
|
550
|
-
- test/dummy/db/migrate/20150608131603_create_decimal_field.rb
|
551
|
-
- test/dummy/db/migrate/20150608150016_create_has_many_field.rb
|
552
|
-
- test/dummy/db/migrate/20150608133044_create_has_one_field.rb
|
553
|
-
- test/dummy/db/migrate/20181111162121_create_references_table.rb
|
554
|
-
- test/dummy/db/migrate/20150616150629_create_polymorphic_field.rb
|
555
|
-
- test/dummy/db/schema.rb
|
556
551
|
- test/dummy/config.ru
|
552
|
+
- test/dummy/config/routes.rb
|
553
|
+
- test/dummy/config/secrets.yml
|
557
554
|
- test/dummy/config/application.rb
|
555
|
+
- test/dummy/config/boot.rb
|
558
556
|
- test/dummy/config/environments/development.rb
|
559
557
|
- test/dummy/config/environments/production.rb
|
560
558
|
- test/dummy/config/environments/test.rb
|
561
|
-
- test/dummy/config/
|
562
|
-
- test/dummy/config/routes.rb
|
563
|
-
- test/dummy/config/secrets.yml
|
559
|
+
- test/dummy/config/environment.rb
|
564
560
|
- test/dummy/config/database.yml
|
561
|
+
- test/dummy/config/initializers/assets.rb
|
562
|
+
- test/dummy/config/initializers/backtrace_silencers.rb
|
563
|
+
- test/dummy/config/initializers/filter_parameter_logging.rb
|
564
|
+
- test/dummy/config/initializers/cookies_serializer.rb
|
565
565
|
- test/dummy/config/initializers/wrap_parameters.rb
|
566
|
+
- test/dummy/config/initializers/inflections.rb
|
566
567
|
- test/dummy/config/initializers/mime_types.rb
|
567
|
-
- test/dummy/config/initializers/cookies_serializer.rb
|
568
|
-
- test/dummy/config/initializers/filter_parameter_logging.rb
|
569
568
|
- test/dummy/config/initializers/session_store.rb
|
570
|
-
- test/dummy/config/initializers/assets.rb
|
571
|
-
- test/dummy/config/initializers/inflections.rb
|
572
|
-
- test/dummy/config/initializers/backtrace_silencers.rb
|
573
|
-
- test/dummy/config/environment.rb
|
574
569
|
- test/dummy/config/locales/en.yml
|
575
|
-
- test/dummy/
|
576
|
-
- test/dummy/app/controllers/application_controller.rb
|
577
|
-
- test/dummy/app/models/has_many_through_field.rb
|
578
|
-
- test/dummy/app/models/polymorphic_field.rb
|
579
|
-
- test/dummy/app/models/string_field.rb
|
580
|
-
- test/dummy/app/models/date_field.rb
|
581
|
-
- test/dummy/app/models/belongs_to_class_name_field.rb
|
582
|
-
- test/dummy/app/models/owner.rb
|
583
|
-
- test/dummy/app/models/decimal_field.rb
|
584
|
-
- test/dummy/app/models/tree.rb
|
585
|
-
- test/dummy/app/models/has_many_field.rb
|
586
|
-
- test/dummy/app/models/has_many_class_name_field.rb
|
587
|
-
- test/dummy/app/models/boolean_field.rb
|
588
|
-
- test/dummy/app/models/integer_field.rb
|
589
|
-
- test/dummy/app/models/belongs_to_field.rb
|
590
|
-
- test/dummy/app/models/serialize_field.rb
|
591
|
-
- test/dummy/app/models/has_and_belongs_to_many_field.rb
|
592
|
-
- test/dummy/app/models/float_field.rb
|
593
|
-
- test/dummy/app/models/has_one_field.rb
|
594
|
-
- test/dummy/app/models/reference.rb
|
595
|
-
- test/dummy/app/views/layouts/application.html.erb
|
596
|
-
- test/dummy/app/assets/javascripts/application.js
|
597
|
-
- test/dummy/app/assets/stylesheets/application.css
|
598
|
-
- test/dummy/app/assets/config/manifest.js
|
599
|
-
- test/dummy/app/helpers/application_helper.rb
|
600
|
-
- test/dummy/Rakefile
|
570
|
+
- test/dummy/bin/setup
|
601
571
|
- test/dummy/bin/rake
|
602
572
|
- test/dummy/bin/rails
|
603
573
|
- test/dummy/bin/bundle
|
604
|
-
- test/dummy/
|
574
|
+
- test/dummy/Rakefile
|
575
|
+
- test/dummy/db/schema.rb
|
576
|
+
- test/dummy/db/migrate/20150608131610_create_float_field.rb
|
577
|
+
- test/dummy/db/migrate/20150609114636_create_belongs_to_class_name_field.rb
|
578
|
+
- test/dummy/db/migrate/20150814081918_create_has_many_through_field.rb
|
579
|
+
- test/dummy/db/migrate/20181111162121_create_references_table.rb
|
580
|
+
- test/dummy/db/migrate/20150623115554_create_has_many_class_name_field.rb
|
581
|
+
- test/dummy/db/migrate/20170614141921_create_serialize_field.rb
|
582
|
+
- test/dummy/db/migrate/20150608131603_create_decimal_field.rb
|
583
|
+
- test/dummy/db/migrate/20150608132621_create_string_field.rb
|
584
|
+
- test/dummy/db/migrate/20150608130516_create_date_field.rb
|
585
|
+
- test/dummy/db/migrate/20160628173505_add_timestamps.rb
|
586
|
+
- test/dummy/db/migrate/20160627172810_create_owner.rb
|
587
|
+
- test/dummy/db/migrate/20150608133044_create_has_one_field.rb
|
588
|
+
- test/dummy/db/migrate/20160627172951_create_tree.rb
|
589
|
+
- test/dummy/db/migrate/20150608150016_create_has_many_field.rb
|
590
|
+
- test/dummy/db/migrate/20150608131430_create_integer_field.rb
|
591
|
+
- test/dummy/db/migrate/20150608133038_create_belongs_to_field.rb
|
592
|
+
- test/dummy/db/migrate/20150608132159_create_boolean_field.rb
|
593
|
+
- test/dummy/db/migrate/20150616150629_create_polymorphic_field.rb
|
594
|
+
- test/dummy/db/migrate/20150612112520_create_has_and_belongs_to_many_field.rb
|
595
|
+
- test/dummy/README.rdoc
|
596
|
+
- test/fixtures/serialize_field.yml
|
597
|
+
- test/fixtures/belongs_to_field.yml
|
598
|
+
- test/fixtures/has_one_field.yml
|
599
|
+
- test/fixtures/string_field.yml
|
600
|
+
- test/fixtures/reference.yml
|
601
|
+
- test/fixtures/owner.yml
|
602
|
+
- test/fixtures/tree.yml
|
603
|
+
- test/fixtures/has_many_through_field.yml
|
604
|
+
- test/fixtures/has_many_field.yml
|
605
|
+
- spec/helpers/forest_liana/query_helper_spec.rb
|
606
|
+
- spec/helpers/forest_liana/schema_helper_spec.rb
|
605
607
|
- spec/lib/forest_liana/schema_file_updater_spec.rb
|
606
608
|
- spec/lib/forest_liana/bootstrapper_spec.rb
|
607
|
-
- spec/
|
608
|
-
- spec/rails_helper.rb
|
609
|
+
- spec/services/forest_liana/permissions_checker_acl_enabled_spec.rb
|
609
610
|
- spec/services/forest_liana/scope_manager_spec.rb
|
610
|
-
- spec/services/forest_liana/value_stat_getter_spec.rb
|
611
|
-
- spec/services/forest_liana/line_stat_getter_spec.rb
|
612
|
-
- spec/services/forest_liana/schema_adapter_spec.rb
|
613
|
-
- spec/services/forest_liana/permissions_formatter_spec.rb
|
614
|
-
- spec/services/forest_liana/pie_stat_getter_spec.rb
|
615
611
|
- spec/services/forest_liana/has_many_getter_spec.rb
|
612
|
+
- spec/services/forest_liana/smart_action_field_validator_spec.rb
|
616
613
|
- spec/services/forest_liana/permissions_getter_spec.rb
|
617
|
-
- spec/services/forest_liana/
|
614
|
+
- spec/services/forest_liana/apimap_sorter_spec.rb
|
615
|
+
- spec/services/forest_liana/resources_getter_spec.rb
|
616
|
+
- spec/services/forest_liana/ip_whitelist_checker_spec.rb
|
617
|
+
- spec/services/forest_liana/value_stat_getter_spec.rb
|
618
|
+
- spec/services/forest_liana/schema_adapter_spec.rb
|
619
|
+
- spec/services/forest_liana/permissions_checker_acl_disabled_spec.rb
|
618
620
|
- spec/services/forest_liana/filters_parser_spec.rb
|
621
|
+
- spec/services/forest_liana/pie_stat_getter_spec.rb
|
619
622
|
- spec/services/forest_liana/permissions_checker_live_queries_spec.rb
|
620
|
-
- spec/services/forest_liana/ip_whitelist_checker_spec.rb
|
621
623
|
- spec/services/forest_liana/resource_updater_spec.rb
|
622
|
-
- spec/services/forest_liana/
|
623
|
-
- spec/services/forest_liana/
|
624
|
-
- spec/
|
625
|
-
- spec/
|
626
|
-
- spec/dummy/
|
624
|
+
- spec/services/forest_liana/line_stat_getter_spec.rb
|
625
|
+
- spec/services/forest_liana/permissions_formatter_spec.rb
|
626
|
+
- spec/config/initializers/logger_spec.rb
|
627
|
+
- spec/dummy/app/helpers/application_helper.rb
|
628
|
+
- spec/dummy/app/models/reference.rb
|
629
|
+
- spec/dummy/app/models/owner.rb
|
630
|
+
- spec/dummy/app/models/location.rb
|
631
|
+
- spec/dummy/app/models/tree.rb
|
632
|
+
- spec/dummy/app/models/product.rb
|
633
|
+
- spec/dummy/app/models/user.rb
|
634
|
+
- spec/dummy/app/models/island.rb
|
635
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
636
|
+
- spec/dummy/app/controllers/forest/islands_controller.rb
|
637
|
+
- spec/dummy/app/controllers/application_controller.rb
|
638
|
+
- spec/dummy/app/config/routes.rb
|
639
|
+
- spec/dummy/app/assets/config/manifest.js
|
640
|
+
- spec/dummy/app/assets/javascripts/application.js
|
641
|
+
- spec/dummy/app/assets/stylesheets/application.css
|
642
|
+
- spec/dummy/config.ru
|
627
643
|
- spec/dummy/lib/forest_liana/controllers/owner_trees_controller.rb
|
644
|
+
- spec/dummy/lib/forest_liana/controllers/owners_controller.rb
|
645
|
+
- spec/dummy/lib/forest_liana/collections/location.rb
|
628
646
|
- spec/dummy/lib/forest_liana/collections/user.rb
|
629
647
|
- spec/dummy/lib/forest_liana/collections/island.rb
|
630
|
-
- spec/dummy/
|
631
|
-
- spec/dummy/
|
632
|
-
- spec/dummy/db/migrate/20190226173051_create_isle.rb
|
633
|
-
- spec/dummy/db/migrate/20190226172951_create_user.rb
|
634
|
-
- spec/dummy/db/migrate/20210526084712_create_products.rb
|
635
|
-
- spec/dummy/db/migrate/20210326140855_create_locations.rb
|
636
|
-
- spec/dummy/db/migrate/20190716130830_add_age_to_tree.rb
|
637
|
-
- spec/dummy/db/migrate/20190226174951_create_tree.rb
|
638
|
-
- spec/dummy/db/migrate/20190716135241_add_type_to_user.rb
|
639
|
-
- spec/dummy/db/migrate/20210326110524_create_references.rb
|
640
|
-
- spec/dummy/db/schema.rb
|
641
|
-
- spec/dummy/config.ru
|
648
|
+
- spec/dummy/config/routes.rb
|
649
|
+
- spec/dummy/config/secrets.yml
|
642
650
|
- spec/dummy/config/application.rb
|
651
|
+
- spec/dummy/config/boot.rb
|
643
652
|
- spec/dummy/config/environments/development.rb
|
644
653
|
- spec/dummy/config/environments/production.rb
|
645
654
|
- spec/dummy/config/environments/test.rb
|
646
|
-
- spec/dummy/config/
|
647
|
-
- spec/dummy/config/routes.rb
|
648
|
-
- spec/dummy/config/secrets.yml
|
655
|
+
- spec/dummy/config/environment.rb
|
649
656
|
- spec/dummy/config/database.yml
|
650
|
-
- spec/dummy/config/initializers/
|
651
|
-
- spec/dummy/config/initializers/
|
652
|
-
- spec/dummy/config/initializers/cookies_serializer.rb
|
657
|
+
- spec/dummy/config/initializers/assets.rb
|
658
|
+
- spec/dummy/config/initializers/backtrace_silencers.rb
|
653
659
|
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
660
|
+
- spec/dummy/config/initializers/cookies_serializer.rb
|
654
661
|
- spec/dummy/config/initializers/forest_liana.rb
|
655
|
-
- spec/dummy/config/initializers/
|
656
|
-
- spec/dummy/config/initializers/assets.rb
|
662
|
+
- spec/dummy/config/initializers/wrap_parameters.rb
|
657
663
|
- spec/dummy/config/initializers/inflections.rb
|
658
|
-
- spec/dummy/config/initializers/
|
659
|
-
- spec/dummy/config/
|
660
|
-
- spec/dummy/
|
661
|
-
- spec/dummy/app/controllers/application_controller.rb
|
662
|
-
- spec/dummy/app/controllers/forest/islands_controller.rb
|
663
|
-
- spec/dummy/app/config/routes.rb
|
664
|
-
- spec/dummy/app/models/user.rb
|
665
|
-
- spec/dummy/app/models/product.rb
|
666
|
-
- spec/dummy/app/models/owner.rb
|
667
|
-
- spec/dummy/app/models/tree.rb
|
668
|
-
- spec/dummy/app/models/island.rb
|
669
|
-
- spec/dummy/app/models/reference.rb
|
670
|
-
- spec/dummy/app/models/location.rb
|
671
|
-
- spec/dummy/app/views/layouts/application.html.erb
|
672
|
-
- spec/dummy/app/assets/javascripts/application.js
|
673
|
-
- spec/dummy/app/assets/stylesheets/application.css
|
674
|
-
- spec/dummy/app/assets/config/manifest.js
|
675
|
-
- spec/dummy/app/helpers/application_helper.rb
|
676
|
-
- spec/dummy/Rakefile
|
664
|
+
- spec/dummy/config/initializers/mime_types.rb
|
665
|
+
- spec/dummy/config/initializers/session_store.rb
|
666
|
+
- spec/dummy/bin/setup
|
677
667
|
- spec/dummy/bin/rake
|
678
668
|
- spec/dummy/bin/rails
|
679
669
|
- spec/dummy/bin/bundle
|
680
|
-
- spec/dummy/
|
681
|
-
- spec/
|
682
|
-
- spec/
|
683
|
-
- spec/
|
684
|
-
- spec/
|
670
|
+
- spec/dummy/Rakefile
|
671
|
+
- spec/dummy/db/schema.rb
|
672
|
+
- spec/dummy/db/migrate/20190226173051_create_isle.rb
|
673
|
+
- spec/dummy/db/migrate/20210326140855_create_locations.rb
|
674
|
+
- spec/dummy/db/migrate/20190716130830_add_age_to_tree.rb
|
675
|
+
- spec/dummy/db/migrate/20210326110524_create_references.rb
|
676
|
+
- spec/dummy/db/migrate/20210526084712_create_products.rb
|
677
|
+
- spec/dummy/db/migrate/20210511141752_create_owners.rb
|
678
|
+
- spec/dummy/db/migrate/20190226172951_create_user.rb
|
679
|
+
- spec/dummy/db/migrate/20190716135241_add_type_to_user.rb
|
680
|
+
- spec/dummy/db/migrate/20190226174951_create_tree.rb
|
681
|
+
- spec/dummy/README.rdoc
|
682
|
+
- spec/rails_helper.rb
|
685
683
|
- spec/requests/test.ru
|
686
|
-
- spec/requests/stats_spec.rb
|
687
684
|
- spec/requests/count_spec.rb
|
688
685
|
- spec/requests/cors_spec.rb
|
686
|
+
- spec/requests/stats_spec.rb
|
687
|
+
- spec/requests/resources_spec.rb
|
689
688
|
- spec/requests/authentications_spec.rb
|
689
|
+
- spec/requests/actions_controller_spec.rb
|
690
690
|
- spec/spec_helper.rb
|