forest_liana 7.3.0 → 7.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/forest_liana/actions_controller.rb +3 -0
  3. data/app/controllers/forest_liana/associations_controller.rb +4 -0
  4. data/app/controllers/forest_liana/base_controller.rb +1 -0
  5. data/app/controllers/forest_liana/resources_controller.rb +8 -0
  6. data/app/controllers/forest_liana/router.rb +1 -0
  7. data/app/controllers/forest_liana/scopes_controller.rb +1 -0
  8. data/app/controllers/forest_liana/smart_actions_controller.rb +4 -0
  9. data/app/controllers/forest_liana/stats_controller.rb +2 -0
  10. data/app/services/forest_liana/intercom_attributes_getter.rb +1 -0
  11. data/app/services/forest_liana/intercom_conversation_getter.rb +1 -0
  12. data/app/services/forest_liana/intercom_conversations_getter.rb +1 -0
  13. data/app/services/forest_liana/ip_whitelist.rb +1 -0
  14. data/app/services/forest_liana/permissions_getter.rb +1 -0
  15. data/app/services/forest_liana/resources_getter.rb +1 -0
  16. data/app/services/forest_liana/schema_adapter.rb +1 -0
  17. data/app/services/forest_liana/search_query_builder.rb +1 -0
  18. data/app/services/forest_liana/stripe_invoices_getter.rb +1 -0
  19. data/app/services/forest_liana/stripe_payments_getter.rb +1 -0
  20. data/app/services/forest_liana/stripe_sources_getter.rb +1 -0
  21. data/app/services/forest_liana/stripe_subscriptions_getter.rb +1 -0
  22. data/config/initializers/logger.rb +8 -1
  23. data/lib/forest_liana/bootstrapper.rb +3 -1
  24. data/lib/forest_liana/collection.rb +1 -0
  25. data/lib/forest_liana/engine.rb +3 -0
  26. data/lib/forest_liana/schema_file_updater.rb +1 -0
  27. data/lib/forest_liana/version.rb +1 -1
  28. data/lib/forest_liana.rb +2 -0
  29. data/spec/config/initializers/logger_spec.rb +37 -0
  30. metadata +135 -135
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 49f243178b884ac1cb390de7cfd5f6f623774d9d1f2241b32689073246901ca3
4
- data.tar.gz: 8c5321b9d1cf53813d658ec2e4d68120b960bc876db8182fd6d4c0320e1c210d
3
+ metadata.gz: adc1d7ec157183e6001f0c62980ae41cac6812a06e4fb8d1d5189609e478c2c6
4
+ data.tar.gz: 21ccd896ff434a672683d6d384aa70e80b531c95189294551c3466a5ead3a5b6
5
5
  SHA512:
6
- metadata.gz: 3544aa210b494fa79f79f668d4799cc7e31abcf6d07a1a7f018b8c4c8b2e50f27d94126da130acd2a8d307697cca589d5d267a6c643d2126ea7f6e76518a6450
7
- data.tar.gz: 60bf4a968d0e805f0af82d5e5018d9d05e809cdeb80d6243881cb9ef0c8088cd30d96c0f05538b401255b0739751706a28de521b836fc8153a029ded5be6a722
6
+ metadata.gz: ce716a35923e78b2d00f066aa717e2a4fcd62506fe9073d370cbf30af90b1474a26cf940cd0a2aed1cf959b6c93cfe9314268e4a9ed048042ec3f04b9a227826
7
+ data.tar.gz: 5bb96fed2cc7218d162d4f0ac9df00b6270efa909deaab5ed84289cebe41606b36230423844584b9d65efd7b19588f06f42f90798d6515a05c0a2e2c2755011d
@@ -5,6 +5,7 @@ module ForestLiana
5
5
  begin
6
6
  params[:data][:attributes]
7
7
  rescue => error
8
+ FOREST_REPORTER.report error
8
9
  FOREST_LOGGER.error "Smart Action hook request error: #{error}"
9
10
  {}
10
11
  end
@@ -19,6 +20,7 @@ module ForestLiana
19
20
  begin
20
21
  collection.actions.find {|action| ActiveSupport::Inflector.parameterize(action.name) == params[:action_name]}
21
22
  rescue => error
23
+ FOREST_REPORTER.report error
22
24
  FOREST_LOGGER.error "Smart Action get action retrieval error: #{error}"
23
25
  nil
24
26
  end
@@ -57,6 +59,7 @@ module ForestLiana
57
59
  rescue ForestLiana::Errors::SmartActionInvalidFieldError => invalid_field_error
58
60
  FOREST_LOGGER.warn invalid_field_error.message
59
61
  rescue ForestLiana::Errors::SmartActionInvalidFieldHookError => invalid_hook_error
62
+ FOREST_REPORTER.report invalid_hook_error
60
63
  FOREST_LOGGER.error invalid_hook_error.message
61
64
  return render status: 500, json: { error: invalid_hook_error.message }
62
65
  end
@@ -18,6 +18,7 @@ module ForestLiana
18
18
  format.csv { render_csv(getter, @association.klass) }
19
19
  end
20
20
  rescue => error
21
+ FOREST_REPORTER.report error
21
22
  FOREST_LOGGER.error "Association Index error: #{error}\n#{format_stacktrace(error)}"
22
23
  internal_server_error
23
24
  end
@@ -30,6 +31,7 @@ module ForestLiana
30
31
 
31
32
  render serializer: nil, json: { count: getter.records_count }
32
33
  rescue => error
34
+ FOREST_REPORTER.report error
33
35
  FOREST_LOGGER.error "Association Index Count error: #{error}\n#{format_stacktrace(error)}"
34
36
  internal_server_error
35
37
  end
@@ -47,6 +49,7 @@ module ForestLiana
47
49
  head :no_content
48
50
  end
49
51
  rescue => error
52
+ FOREST_REPORTER.report error
50
53
  FOREST_LOGGER.error "Association Update error: #{error}\n#{format_stacktrace(error)}"
51
54
  internal_server_error
52
55
  end
@@ -59,6 +62,7 @@ module ForestLiana
59
62
 
60
63
  head :no_content
61
64
  rescue => error
65
+ FOREST_REPORTER.report error
62
66
  FOREST_LOGGER.error "Association Associate error: #{error}\n#{format_stacktrace(error)}"
63
67
  internal_server_error
64
68
  end
@@ -30,6 +30,7 @@ module ForestLiana
30
30
  }])
31
31
  render(serializer: nil, json: error_data, status: exception.status)
32
32
  rescue => exception
33
+ FOREST_REPORTER.report exception
33
34
  FOREST_LOGGER.error(exception)
34
35
  FOREST_LOGGER.error(exception.backtrace.join("\n"))
35
36
  render(serializer: nil, json: nil, status: :internal_server_error)
@@ -47,6 +47,7 @@ module ForestLiana
47
47
  }])
48
48
  render(serializer: nil, json: error_data, status: error.status)
49
49
  rescue => error
50
+ FOREST_REPORTER.report error
50
51
  FOREST_LOGGER.error "Records Index error: #{error}\n#{format_stacktrace(error)}"
51
52
  internal_server_error
52
53
  end
@@ -79,6 +80,7 @@ module ForestLiana
79
80
  }])
80
81
  render(serializer: nil, json: error_data, status: error.status)
81
82
  rescue => error
83
+ FOREST_REPORTER.report error
82
84
  FOREST_LOGGER.error "Records Index Count error: #{error}\n#{format_stacktrace(error)}"
83
85
  internal_server_error
84
86
  end
@@ -96,6 +98,7 @@ module ForestLiana
96
98
  rescue ActiveRecord::RecordNotFound
97
99
  render serializer: nil, json: { status: 404 }, status: :not_found
98
100
  rescue => error
101
+ FOREST_REPORTER.report error
99
102
  FOREST_LOGGER.error "Record Show error: #{error}\n#{format_stacktrace(error)}"
100
103
  internal_server_error
101
104
  end
@@ -119,6 +122,7 @@ module ForestLiana
119
122
  creator.record.errors), status: 400
120
123
  end
121
124
  rescue => error
125
+ FOREST_REPORTER.report error
122
126
  FOREST_LOGGER.error "Record Create error: #{error}\n#{format_stacktrace(error)}"
123
127
  internal_server_error
124
128
  end
@@ -142,6 +146,7 @@ module ForestLiana
142
146
  updater.record.errors), status: 400
143
147
  end
144
148
  rescue => error
149
+ FOREST_REPORTER.report error
145
150
  FOREST_LOGGER.error "Record Update error: #{error}\n#{format_stacktrace(error)}"
146
151
  internal_server_error
147
152
  end
@@ -162,6 +167,7 @@ module ForestLiana
162
167
 
163
168
  head :no_content
164
169
  rescue => error
170
+ FOREST_REPORTER.report error
165
171
  FOREST_LOGGER.error "Record Destroy error: #{error}\n#{format_stacktrace(error)}"
166
172
  internal_server_error
167
173
  end
@@ -175,6 +181,7 @@ module ForestLiana
175
181
 
176
182
  head :no_content
177
183
  rescue => error
184
+ FOREST_REPORTER.report error
178
185
  FOREST_LOGGER.error "Records Destroy error: #{error}\n#{format_stacktrace(error)}"
179
186
  internal_server_error
180
187
  end
@@ -190,6 +197,7 @@ module ForestLiana
190
197
  render serializer: nil, json: { status: 404 }, status: :not_found
191
198
  end
192
199
  rescue => error
200
+ FOREST_REPORTER.report error
193
201
  FOREST_LOGGER.error "Find Collection error: #{error}\n#{format_stacktrace(error)}"
194
202
  render serializer: nil, json: { status: 404 }, status: :not_found
195
203
  end
@@ -39,6 +39,7 @@ class ForestLiana::Router
39
39
 
40
40
  controller.action(action.to_sym).call(env)
41
41
  rescue NoMethodError => exception
42
+ FOREST_REPORTER.report exception
42
43
  FOREST_LOGGER.error "Routing error: #{exception}\n#{exception.backtrace.join("\n\t")}"
43
44
  ForestLiana::BaseController.action(:route_not_found).call(env)
44
45
  end
@@ -12,6 +12,7 @@ module ForestLiana
12
12
  ForestLiana::ScopeManager.invalidate_scope_cache(rendering_id)
13
13
  return render serializer: nil, json: { status: 200 }, status: :ok
14
14
  rescue => error
15
+ FOREST_REPORTER.report error
15
16
  FOREST_LOGGER.error "Error during scope cache invalidation: #{error.message}"
16
17
  render serializer: nil, json: {status: 500 }, status: :internal_server_error
17
18
  end
@@ -12,6 +12,7 @@ module ForestLiana
12
12
  begin
13
13
  params[:data][:attributes]
14
14
  rescue => error
15
+ FOREST_REPORTER.report error
15
16
  FOREST_LOGGER.error "Smart Action execution error: #{error}"
16
17
  {}
17
18
  end
@@ -47,6 +48,7 @@ module ForestLiana
47
48
  # target records are out of scope
48
49
  render serializer: nil, json: { error: 'Smart Action: target record not found' }, status: :bad_request
49
50
  rescue => error
51
+ FOREST_REPORTER.report error
50
52
  FOREST_LOGGER.error "Smart Action: #{error}\n#{format_stacktrace(error)}"
51
53
  render serializer: nil, json: { error: 'Smart Action: failed to evaluate permissions' }, status: :internal_server_error
52
54
  end
@@ -70,6 +72,7 @@ module ForestLiana
70
72
  render serializer: nil, json: { status: 400 }, status: :bad_request
71
73
  end
72
74
  rescue => error
75
+ FOREST_REPORTER.report error
73
76
  FOREST_LOGGER.error "Smart Action execution error: #{error}"
74
77
  render serializer: nil, json: { status: 400 }, status: :bad_request
75
78
  end
@@ -85,6 +88,7 @@ module ForestLiana
85
88
  end
86
89
  resource
87
90
  rescue => error
91
+ FOREST_REPORTER.report error
88
92
  FOREST_LOGGER.error "Find Collection error: #{error}\n#{format_stacktrace(error)}"
89
93
  render serializer: nil, json: { status: 404 }, status: :not_found
90
94
  end
@@ -60,6 +60,7 @@ module ForestLiana
60
60
  render json: { errors: [{ status: 422, detail: error.message }] },
61
61
  status: :unprocessable_entity, serializer: nil
62
62
  rescue => error
63
+ FOREST_REPORTER.report error
63
64
  FOREST_LOGGER.error "Live Query error: #{error.message}"
64
65
  render json: { errors: [{ status: 422, detail: error.message }] },
65
66
  status: :unprocessable_entity, serializer: nil
@@ -110,6 +111,7 @@ module ForestLiana
110
111
 
111
112
  return head :forbidden unless checker.is_authorized?
112
113
  rescue => error
114
+ FOREST_REPORTER.report error
113
115
  FOREST_LOGGER.error "Stats execution error: #{error}"
114
116
  render serializer: nil, json: { status: 400 }, status: :bad_request
115
117
  end
@@ -18,6 +18,7 @@ module ForestLiana
18
18
  @record = user
19
19
  rescue Intercom::ResourceNotFound
20
20
  rescue Intercom::UnexpectedError => exception
21
+ FOREST_REPORTER.report exception
21
22
  FOREST_LOGGER.error "Cannot retrieve the Intercom attributes: #{exception.message}"
22
23
  end
23
24
  end
@@ -14,6 +14,7 @@ module ForestLiana
14
14
  rescue Intercom::ResourceNotFound
15
15
  @record = nil
16
16
  rescue Intercom::UnexpectedError => exception
17
+ FOREST_REPORTER.report exception
17
18
  FOREST_LOGGER.error "Cannot retrieve the Intercom conversation: #{exception.message}"
18
19
  @record = nil
19
20
  end
@@ -31,6 +31,7 @@ module ForestLiana
31
31
  rescue Intercom::ResourceNotFound
32
32
  @records = []
33
33
  rescue Intercom::UnexpectedError => exception
34
+ FOREST_REPORTER.report exception
34
35
  FOREST_LOGGER.error "Cannot retrieve the Intercom conversations: #{exception.message}"
35
36
  @records = []
36
37
  end
@@ -21,6 +21,7 @@ module ForestLiana
21
21
  false
22
22
  end
23
23
  rescue => exception
24
+ FOREST_REPORTER.report exception
24
25
  FOREST_LOGGER.error 'Cannot retrieve the IP Whitelist from the Forest server.'
25
26
  FOREST_LOGGER.error 'Which was caused by:'
26
27
  ForestLiana::Errors::ExceptionHelper.recursively_print(exception, margin: ' ', is_error: true)
@@ -47,6 +47,7 @@ module ForestLiana
47
47
  raise "Forest API returned an #{ForestLiana::Errors::HTTPErrorHelper.format(response)}"
48
48
  end
49
49
  rescue => exception
50
+ FOREST_REPORTER.report exception
50
51
  FOREST_LOGGER.error 'Cannot retrieve the permissions from the Forest server.'
51
52
  FOREST_LOGGER.error 'Which was caused by:'
52
53
  ForestLiana::Errors::ExceptionHelper.recursively_print(exception, margin: ' ', is_error: true)
@@ -179,6 +179,7 @@ module ForestLiana
179
179
  )
180
180
  rescue => error
181
181
  error_message = "Live Query Segment: #{error.message}"
182
+ FOREST_REPORTER.report error
182
183
  FOREST_LOGGER.error(error_message)
183
184
  raise ForestLiana::Errors::LiveQueryError.new(error_message)
184
185
  end
@@ -261,6 +261,7 @@ module ForestLiana
261
261
  FOREST_LOGGER.warn "The association \"#{association.name.to_s}\" " \
262
262
  "does not seem to exist for model \"#{@model.name}\"."
263
263
  rescue => exception
264
+ FOREST_REPORTER.report exception
264
265
  FOREST_LOGGER.error "An error occured trying to add " \
265
266
  "\"#{association.name.to_s}\" association:\n#{exception}"
266
267
  end
@@ -31,6 +31,7 @@ module ForestLiana
31
31
  begin
32
32
  @records = field[:search].call(@records, @search)
33
33
  rescue => exception
34
+ FOREST_REPORTER.report exception
34
35
  FOREST_LOGGER.error "Cannot search properly on Smart Field:\n" \
35
36
  "#{exception}"
36
37
  end
@@ -50,6 +50,7 @@ module ForestLiana
50
50
  d
51
51
  end
52
52
  rescue ::Stripe::InvalidRequestError => error
53
+ FOREST_REPORTER.report error
53
54
  FOREST_LOGGER.error "Stripe error: #{error.message}"
54
55
  @records = []
55
56
  end
@@ -48,6 +48,7 @@ module ForestLiana
48
48
  d
49
49
  end
50
50
  rescue ::Stripe::InvalidRequestError => error
51
+ FOREST_REPORTER.report error
51
52
  FOREST_LOGGER.error "Stripe error: #{error.message}"
52
53
  @records = []
53
54
  end
@@ -46,6 +46,7 @@ module ForestLiana
46
46
  d
47
47
  end
48
48
  rescue ::Stripe::InvalidRequestError => error
49
+ FOREST_REPORTER.report error
49
50
  FOREST_LOGGER.error "Stripe error: #{error.message}"
50
51
  @records = []
51
52
  end
@@ -43,6 +43,7 @@ module ForestLiana
43
43
  d
44
44
  end
45
45
  rescue ::Stripe::InvalidRequestError => error
46
+ FOREST_REPORTER.report error
46
47
  FOREST_LOGGER.error "Stripe error: #{error.message}"
47
48
  @records = []
48
49
  end
@@ -18,12 +18,19 @@ module ForestLiana
18
18
  displayed_message = "[#{datetime.to_s(:db)}] Forest 🌳🌳🌳 " \
19
19
  "#{message}\n"
20
20
  "\e[#{logger_colors[severity.to_sym]}m#{displayed_message}\033[0m"
21
- end
21
+ end
22
22
  logger
23
23
  end
24
24
  end
25
25
  end
26
26
  end
27
+
28
+ class Reporter
29
+ def self.report (error)
30
+ ForestLiana.reporter.report error if ForestLiana.reporter
31
+ end
32
+ end
27
33
  end
28
34
 
29
35
  FOREST_LOGGER = ForestLiana::Logger.log
36
+ FOREST_REPORTER = ForestLiana::Reporter
@@ -82,7 +82,8 @@ module ForestLiana
82
82
  @collections_sent = content['collections']
83
83
  @meta_sent = content['meta']
84
84
  generate_action_hooks
85
- rescue JSON::JSONError
85
+ rescue JSON::JSONError => error
86
+ FOREST_REPORTER.report error
86
87
  FOREST_LOGGER.error "The content of .forestadmin-schema.json file is not a correct JSON."
87
88
  FOREST_LOGGER.error "The schema cannot be synchronized with Forest Admin servers."
88
89
  end
@@ -122,6 +123,7 @@ module ForestLiana
122
123
  end
123
124
  end
124
125
  rescue => exception
126
+ FOREST_REPORTER.report exception
125
127
  FOREST_LOGGER.error "Cannot fetch properly model #{model.name}:\n" \
126
128
  "#{exception}"
127
129
  end
@@ -91,6 +91,7 @@ module ForestLiana::Collection
91
91
  begin
92
92
  object.instance_eval(&block)
93
93
  rescue => exception
94
+ FOREST_REPORTER.report exception
94
95
  FOREST_LOGGER.error "Cannot retrieve the " + name.to_s + " value because of an " \
95
96
  "internal error in the getter implementation: " + exception.message
96
97
  nil
@@ -37,6 +37,7 @@ module ForestLiana
37
37
  end
38
38
  nil
39
39
  rescue => exception
40
+ FOREST_REPORTER.report exception
40
41
  exception
41
42
  end
42
43
  end
@@ -51,6 +52,7 @@ module ForestLiana
51
52
  ActiveRecord::Base.connection_pool.with_connection { |connection| connection.active? }
52
53
  rescue => error
53
54
  database_available = false
55
+ FOREST_REPORTER.report error
54
56
  FOREST_LOGGER.error "No Apimap sent to Forest servers, it seems that the database is not accessible:\n#{error}"
55
57
  end
56
58
  database_available
@@ -75,6 +77,7 @@ module ForestLiana
75
77
 
76
78
  config.after_initialize do |app|
77
79
  if error
80
+ FOREST_REPORTER.report error
78
81
  FOREST_LOGGER.error "Impossible to set the whitelisted Forest " \
79
82
  "domains for CORS constraint:\n#{error}"
80
83
  end
@@ -102,6 +102,7 @@ module ForestLiana
102
102
  rescue ForestLiana::Errors::SmartActionInvalidFieldError => invalid_field_error
103
103
  FOREST_LOGGER.warn invalid_field_error.message
104
104
  rescue ForestLiana::Errors::SmartActionInvalidFieldHookError => invalid_hook_error
105
+ FOREST_REPORTER.report invalid_hook_error
105
106
  FOREST_LOGGER.error invalid_hook_error.message
106
107
  end
107
108
  action['fields'] = action['fields'].map { |field| field.slice(*KEYS_ACTION_FIELD) }
@@ -1,3 +1,3 @@
1
1
  module ForestLiana
2
- VERSION = "7.3.0"
2
+ VERSION = "7.4.0"
3
3
  end
data/lib/forest_liana.rb CHANGED
@@ -28,6 +28,7 @@ module ForestLiana
28
28
  mattr_accessor :names_overriden
29
29
  mattr_accessor :meta
30
30
  mattr_accessor :logger
31
+ mattr_accessor :reporter
31
32
  # TODO: Remove once lianas prior to 2.0.0 are not supported anymore.
32
33
  mattr_accessor :names_old_overriden
33
34
 
@@ -40,6 +41,7 @@ module ForestLiana
40
41
  self.names_overriden = {}
41
42
  self.meta = {}
42
43
  self.logger = nil
44
+ self.reporter = nil
43
45
 
44
46
  @config_dir = 'lib/forest_liana/**/*.rb'
45
47
 
@@ -27,4 +27,41 @@ module ForestLiana
27
27
  end
28
28
  end
29
29
  end
30
+
31
+ describe Reporter do
32
+ describe 'self.reporter' do
33
+ describe 'with a reporter provided' do
34
+ it 'should report the error' do
35
+ class SampleReporter
36
+ def report(error)
37
+ end
38
+ end
39
+
40
+ spier = spy('sampleReporter')
41
+
42
+ ForestLiana.reporter = spier
43
+ FOREST_REPORTER.report(Exception.new "sample error")
44
+
45
+ expect(spier).to have_received(:report)
46
+ ForestLiana.reporter = nil
47
+ end
48
+ end
49
+
50
+ describe 'without any reporter provided' do
51
+ it 'should not report the error' do
52
+ class ErrorReporter
53
+ def report(error)
54
+ expect(false).to be_truthy
55
+ end
56
+ end
57
+
58
+ spier = spy('errorReporter')
59
+
60
+ FOREST_REPORTER.report(Exception.new "sample error")
61
+
62
+ expect(spier).not_to have_received(:export)
63
+ end
64
+ end
65
+ end
66
+ end
30
67
  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.3.0
4
+ version: 7.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sandro Munda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-13 00:00:00.000000000 Z
11
+ date: 2021-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -510,171 +510,171 @@ signing_key:
510
510
  specification_version: 4
511
511
  summary: Official Rails Liana for Forest
512
512
  test_files:
513
- - test/services/forest_liana/schema_adapter_test.rb
514
- - test/services/forest_liana/operator_date_interval_parser_test.rb
515
- - test/routing/route_test.rb
516
- - test/forest_liana_test.rb
517
513
  - test/test_helper.rb
518
- - test/fixtures/has_one_field.yml
519
- - test/fixtures/belongs_to_field.yml
520
- - test/fixtures/reference.yml
521
- - test/fixtures/serialize_field.yml
522
- - test/fixtures/tree.yml
523
- - test/fixtures/string_field.yml
524
- - test/fixtures/has_many_through_field.yml
525
- - test/fixtures/has_many_field.yml
526
- - test/fixtures/owner.yml
514
+ - test/dummy/config.ru
515
+ - test/dummy/bin/setup
516
+ - test/dummy/bin/bundle
517
+ - test/dummy/bin/rake
518
+ - test/dummy/bin/rails
519
+ - test/dummy/Rakefile
520
+ - test/dummy/db/schema.rb
521
+ - test/dummy/db/migrate/20150612112520_create_has_and_belongs_to_many_field.rb
522
+ - test/dummy/db/migrate/20150623115554_create_has_many_class_name_field.rb
523
+ - test/dummy/db/migrate/20150608130516_create_date_field.rb
524
+ - test/dummy/db/migrate/20150608132621_create_string_field.rb
525
+ - test/dummy/db/migrate/20160627172810_create_owner.rb
526
+ - test/dummy/db/migrate/20170614141921_create_serialize_field.rb
527
+ - test/dummy/db/migrate/20150608131430_create_integer_field.rb
528
+ - test/dummy/db/migrate/20150608133038_create_belongs_to_field.rb
529
+ - test/dummy/db/migrate/20150608131610_create_float_field.rb
530
+ - test/dummy/db/migrate/20160628173505_add_timestamps.rb
531
+ - test/dummy/db/migrate/20150608150016_create_has_many_field.rb
532
+ - test/dummy/db/migrate/20150608131603_create_decimal_field.rb
533
+ - test/dummy/db/migrate/20150616150629_create_polymorphic_field.rb
534
+ - test/dummy/db/migrate/20150609114636_create_belongs_to_class_name_field.rb
535
+ - test/dummy/db/migrate/20181111162121_create_references_table.rb
536
+ - test/dummy/db/migrate/20160627172951_create_tree.rb
537
+ - test/dummy/db/migrate/20150608133044_create_has_one_field.rb
538
+ - test/dummy/db/migrate/20150814081918_create_has_many_through_field.rb
539
+ - test/dummy/db/migrate/20150608132159_create_boolean_field.rb
540
+ - test/dummy/public/422.html
527
541
  - test/dummy/public/favicon.ico
528
542
  - test/dummy/public/500.html
529
543
  - test/dummy/public/404.html
530
- - test/dummy/public/422.html
531
- - test/dummy/Rakefile
544
+ - test/dummy/README.rdoc
545
+ - test/dummy/config/secrets.yml
546
+ - test/dummy/config/environments/test.rb
547
+ - test/dummy/config/environments/production.rb
548
+ - test/dummy/config/environments/development.rb
549
+ - test/dummy/config/boot.rb
550
+ - test/dummy/config/routes.rb
551
+ - test/dummy/config/locales/en.yml
532
552
  - test/dummy/config/application.rb
533
- - test/dummy/config/environment.rb
534
553
  - test/dummy/config/database.yml
535
- - test/dummy/config/routes.rb
536
- - test/dummy/config/boot.rb
537
- - test/dummy/config/initializers/mime_types.rb
554
+ - test/dummy/config/environment.rb
538
555
  - test/dummy/config/initializers/cookies_serializer.rb
539
- - test/dummy/config/initializers/session_store.rb
540
- - test/dummy/config/initializers/filter_parameter_logging.rb
556
+ - test/dummy/config/initializers/wrap_parameters.rb
541
557
  - test/dummy/config/initializers/inflections.rb
542
- - test/dummy/config/initializers/backtrace_silencers.rb
558
+ - test/dummy/config/initializers/session_store.rb
543
559
  - test/dummy/config/initializers/assets.rb
544
- - test/dummy/config/initializers/wrap_parameters.rb
545
- - test/dummy/config/environments/development.rb
546
- - test/dummy/config/environments/test.rb
547
- - test/dummy/config/environments/production.rb
548
- - test/dummy/config/secrets.yml
549
- - test/dummy/config/locales/en.yml
550
- - test/dummy/bin/rails
551
- - test/dummy/bin/rake
552
- - test/dummy/bin/setup
553
- - test/dummy/bin/bundle
560
+ - test/dummy/config/initializers/backtrace_silencers.rb
561
+ - test/dummy/config/initializers/mime_types.rb
562
+ - test/dummy/config/initializers/filter_parameter_logging.rb
554
563
  - test/dummy/app/helpers/application_helper.rb
555
- - test/dummy/app/assets/config/manifest.js
556
- - test/dummy/app/assets/javascripts/application.js
557
- - test/dummy/app/assets/stylesheets/application.css
558
- - test/dummy/app/controllers/application_controller.rb
559
564
  - test/dummy/app/views/layouts/application.html.erb
560
- - test/dummy/app/models/decimal_field.rb
561
- - test/dummy/app/models/integer_field.rb
562
- - test/dummy/app/models/belongs_to_field.rb
563
- - test/dummy/app/models/has_many_through_field.rb
564
- - test/dummy/app/models/polymorphic_field.rb
565
- - test/dummy/app/models/reference.rb
566
- - test/dummy/app/models/owner.rb
567
- - test/dummy/app/models/tree.rb
568
- - test/dummy/app/models/serialize_field.rb
565
+ - test/dummy/app/controllers/application_controller.rb
566
+ - test/dummy/app/models/date_field.rb
569
567
  - test/dummy/app/models/belongs_to_class_name_field.rb
570
- - test/dummy/app/models/has_many_field.rb
571
568
  - test/dummy/app/models/float_field.rb
572
- - test/dummy/app/models/has_one_field.rb
569
+ - test/dummy/app/models/has_many_through_field.rb
570
+ - test/dummy/app/models/decimal_field.rb
571
+ - test/dummy/app/models/serialize_field.rb
573
572
  - test/dummy/app/models/has_and_belongs_to_many_field.rb
574
- - test/dummy/app/models/has_many_class_name_field.rb
573
+ - test/dummy/app/models/has_many_field.rb
574
+ - test/dummy/app/models/owner.rb
575
+ - test/dummy/app/models/polymorphic_field.rb
576
+ - test/dummy/app/models/tree.rb
575
577
  - test/dummy/app/models/string_field.rb
578
+ - test/dummy/app/models/belongs_to_field.rb
579
+ - test/dummy/app/models/integer_field.rb
580
+ - test/dummy/app/models/has_one_field.rb
576
581
  - test/dummy/app/models/boolean_field.rb
577
- - test/dummy/app/models/date_field.rb
578
- - test/dummy/db/schema.rb
579
- - test/dummy/db/migrate/20150608133038_create_belongs_to_field.rb
580
- - test/dummy/db/migrate/20150616150629_create_polymorphic_field.rb
581
- - test/dummy/db/migrate/20150608133044_create_has_one_field.rb
582
- - test/dummy/db/migrate/20160628173505_add_timestamps.rb
583
- - test/dummy/db/migrate/20150608131603_create_decimal_field.rb
584
- - test/dummy/db/migrate/20170614141921_create_serialize_field.rb
585
- - test/dummy/db/migrate/20160627172810_create_owner.rb
586
- - test/dummy/db/migrate/20150623115554_create_has_many_class_name_field.rb
587
- - test/dummy/db/migrate/20150608130516_create_date_field.rb
588
- - test/dummy/db/migrate/20150608132621_create_string_field.rb
589
- - test/dummy/db/migrate/20150612112520_create_has_and_belongs_to_many_field.rb
590
- - test/dummy/db/migrate/20150608150016_create_has_many_field.rb
591
- - test/dummy/db/migrate/20150609114636_create_belongs_to_class_name_field.rb
592
- - test/dummy/db/migrate/20150608132159_create_boolean_field.rb
593
- - test/dummy/db/migrate/20150608131430_create_integer_field.rb
594
- - test/dummy/db/migrate/20181111162121_create_references_table.rb
595
- - test/dummy/db/migrate/20150814081918_create_has_many_through_field.rb
596
- - test/dummy/db/migrate/20160627172951_create_tree.rb
597
- - test/dummy/db/migrate/20150608131610_create_float_field.rb
598
- - test/dummy/config.ru
599
- - test/dummy/README.rdoc
600
- - spec/spec_helper.rb
601
- - spec/services/forest_liana/resource_updater_spec.rb
602
- - spec/services/forest_liana/pie_stat_getter_spec.rb
603
- - spec/services/forest_liana/resources_getter_spec.rb
604
- - spec/services/forest_liana/permissions_getter_spec.rb
605
- - spec/services/forest_liana/filters_parser_spec.rb
606
- - spec/services/forest_liana/schema_adapter_spec.rb
607
- - spec/services/forest_liana/smart_action_field_validator_spec.rb
608
- - spec/services/forest_liana/scope_manager_spec.rb
609
- - spec/services/forest_liana/has_many_getter_spec.rb
610
- - spec/services/forest_liana/apimap_sorter_spec.rb
611
- - spec/services/forest_liana/permissions_formatter_spec.rb
612
- - spec/services/forest_liana/permissions_checker_acl_disabled_spec.rb
613
- - spec/services/forest_liana/line_stat_getter_spec.rb
614
- - spec/services/forest_liana/value_stat_getter_spec.rb
615
- - spec/services/forest_liana/ip_whitelist_checker_spec.rb
616
- - spec/services/forest_liana/permissions_checker_live_queries_spec.rb
617
- - spec/services/forest_liana/permissions_checker_acl_enabled_spec.rb
618
- - spec/lib/forest_liana/bootstrapper_spec.rb
619
- - spec/lib/forest_liana/schema_file_updater_spec.rb
620
- - spec/config/initializers/logger_spec.rb
621
- - spec/helpers/forest_liana/schema_helper_spec.rb
582
+ - test/dummy/app/models/has_many_class_name_field.rb
583
+ - test/dummy/app/models/reference.rb
584
+ - test/dummy/app/assets/javascripts/application.js
585
+ - test/dummy/app/assets/stylesheets/application.css
586
+ - test/dummy/app/assets/config/manifest.js
587
+ - test/routing/route_test.rb
588
+ - test/services/forest_liana/schema_adapter_test.rb
589
+ - test/services/forest_liana/operator_date_interval_parser_test.rb
590
+ - test/fixtures/belongs_to_field.yml
591
+ - test/fixtures/tree.yml
592
+ - test/fixtures/owner.yml
593
+ - test/fixtures/reference.yml
594
+ - test/fixtures/has_many_through_field.yml
595
+ - test/fixtures/has_one_field.yml
596
+ - test/fixtures/serialize_field.yml
597
+ - test/fixtures/string_field.yml
598
+ - test/fixtures/has_many_field.yml
599
+ - test/forest_liana_test.rb
622
600
  - spec/helpers/forest_liana/query_helper_spec.rb
601
+ - spec/helpers/forest_liana/schema_helper_spec.rb
602
+ - spec/requests/stats_spec.rb
603
+ - spec/requests/resources_spec.rb
604
+ - spec/requests/authentications_spec.rb
605
+ - spec/requests/actions_controller_spec.rb
606
+ - spec/dummy/config.ru
607
+ - spec/dummy/bin/setup
608
+ - spec/dummy/bin/bundle
609
+ - spec/dummy/bin/rake
610
+ - spec/dummy/bin/rails
623
611
  - spec/dummy/lib/forest_liana/collections/user.rb
624
612
  - spec/dummy/lib/forest_liana/collections/island.rb
625
613
  - spec/dummy/lib/forest_liana/collections/location.rb
626
614
  - spec/dummy/Rakefile
615
+ - spec/dummy/db/schema.rb
616
+ - spec/dummy/db/migrate/20190716130830_add_age_to_tree.rb
617
+ - spec/dummy/db/migrate/20190226174951_create_tree.rb
618
+ - spec/dummy/db/migrate/20210526084712_create_products.rb
619
+ - spec/dummy/db/migrate/20190226172951_create_user.rb
620
+ - spec/dummy/db/migrate/20210326110524_create_references.rb
621
+ - spec/dummy/db/migrate/20190226173051_create_isle.rb
622
+ - spec/dummy/db/migrate/20210326140855_create_locations.rb
623
+ - spec/dummy/db/migrate/20190716135241_add_type_to_user.rb
624
+ - spec/dummy/db/migrate/20210511141752_create_owners.rb
625
+ - spec/dummy/README.rdoc
626
+ - spec/dummy/config/secrets.yml
627
+ - spec/dummy/config/environments/test.rb
628
+ - spec/dummy/config/environments/production.rb
629
+ - spec/dummy/config/environments/development.rb
630
+ - spec/dummy/config/boot.rb
631
+ - spec/dummy/config/routes.rb
627
632
  - spec/dummy/config/application.rb
628
- - spec/dummy/config/environment.rb
629
633
  - spec/dummy/config/database.yml
630
- - spec/dummy/config/routes.rb
631
- - spec/dummy/config/boot.rb
632
- - spec/dummy/config/initializers/mime_types.rb
634
+ - spec/dummy/config/environment.rb
633
635
  - spec/dummy/config/initializers/cookies_serializer.rb
636
+ - spec/dummy/config/initializers/wrap_parameters.rb
637
+ - spec/dummy/config/initializers/inflections.rb
634
638
  - spec/dummy/config/initializers/session_store.rb
635
639
  - spec/dummy/config/initializers/forest_liana.rb
636
- - spec/dummy/config/initializers/filter_parameter_logging.rb
637
- - spec/dummy/config/initializers/inflections.rb
638
- - spec/dummy/config/initializers/backtrace_silencers.rb
639
640
  - spec/dummy/config/initializers/assets.rb
640
- - spec/dummy/config/initializers/wrap_parameters.rb
641
- - spec/dummy/config/environments/development.rb
642
- - spec/dummy/config/environments/test.rb
643
- - spec/dummy/config/environments/production.rb
644
- - spec/dummy/config/secrets.yml
645
- - spec/dummy/bin/rails
646
- - spec/dummy/bin/rake
647
- - spec/dummy/bin/setup
648
- - spec/dummy/bin/bundle
649
- - spec/dummy/app/config/routes.rb
641
+ - spec/dummy/config/initializers/backtrace_silencers.rb
642
+ - spec/dummy/config/initializers/mime_types.rb
643
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
650
644
  - spec/dummy/app/helpers/application_helper.rb
651
- - spec/dummy/app/assets/config/manifest.js
652
- - spec/dummy/app/assets/javascripts/application.js
653
- - spec/dummy/app/assets/stylesheets/application.css
645
+ - spec/dummy/app/views/layouts/application.html.erb
654
646
  - spec/dummy/app/controllers/forest/islands_controller.rb
655
647
  - spec/dummy/app/controllers/application_controller.rb
656
- - spec/dummy/app/views/layouts/application.html.erb
657
- - spec/dummy/app/models/reference.rb
648
+ - spec/dummy/app/models/product.rb
649
+ - spec/dummy/app/models/user.rb
658
650
  - spec/dummy/app/models/owner.rb
659
651
  - spec/dummy/app/models/tree.rb
660
- - spec/dummy/app/models/user.rb
661
652
  - spec/dummy/app/models/island.rb
662
653
  - spec/dummy/app/models/location.rb
663
- - spec/dummy/app/models/product.rb
664
- - spec/dummy/db/schema.rb
665
- - spec/dummy/db/migrate/20190226173051_create_isle.rb
666
- - spec/dummy/db/migrate/20210526084712_create_products.rb
667
- - spec/dummy/db/migrate/20190226172951_create_user.rb
668
- - spec/dummy/db/migrate/20210326140855_create_locations.rb
669
- - spec/dummy/db/migrate/20190716135241_add_type_to_user.rb
670
- - spec/dummy/db/migrate/20190226174951_create_tree.rb
671
- - spec/dummy/db/migrate/20210326110524_create_references.rb
672
- - spec/dummy/db/migrate/20190716130830_add_age_to_tree.rb
673
- - spec/dummy/db/migrate/20210511141752_create_owners.rb
674
- - spec/dummy/config.ru
675
- - spec/dummy/README.rdoc
676
- - spec/requests/authentications_spec.rb
677
- - spec/requests/stats_spec.rb
678
- - spec/requests/resources_spec.rb
679
- - spec/requests/actions_controller_spec.rb
654
+ - spec/dummy/app/models/reference.rb
655
+ - spec/dummy/app/assets/javascripts/application.js
656
+ - spec/dummy/app/assets/stylesheets/application.css
657
+ - spec/dummy/app/assets/config/manifest.js
658
+ - spec/dummy/app/config/routes.rb
680
659
  - spec/rails_helper.rb
660
+ - spec/services/forest_liana/permissions_getter_spec.rb
661
+ - spec/services/forest_liana/filters_parser_spec.rb
662
+ - spec/services/forest_liana/schema_adapter_spec.rb
663
+ - spec/services/forest_liana/permissions_checker_acl_disabled_spec.rb
664
+ - spec/services/forest_liana/smart_action_field_validator_spec.rb
665
+ - spec/services/forest_liana/apimap_sorter_spec.rb
666
+ - spec/services/forest_liana/permissions_formatter_spec.rb
667
+ - spec/services/forest_liana/line_stat_getter_spec.rb
668
+ - spec/services/forest_liana/pie_stat_getter_spec.rb
669
+ - spec/services/forest_liana/has_many_getter_spec.rb
670
+ - spec/services/forest_liana/permissions_checker_acl_enabled_spec.rb
671
+ - spec/services/forest_liana/ip_whitelist_checker_spec.rb
672
+ - spec/services/forest_liana/resources_getter_spec.rb
673
+ - spec/services/forest_liana/value_stat_getter_spec.rb
674
+ - spec/services/forest_liana/scope_manager_spec.rb
675
+ - spec/services/forest_liana/permissions_checker_live_queries_spec.rb
676
+ - spec/services/forest_liana/resource_updater_spec.rb
677
+ - spec/lib/forest_liana/bootstrapper_spec.rb
678
+ - spec/lib/forest_liana/schema_file_updater_spec.rb
679
+ - spec/spec_helper.rb
680
+ - spec/config/initializers/logger_spec.rb