forest_liana 2.13.7 → 2.14.0
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e5ad26fa4fc70fb9b65e3327884b7d2c9f0b7bb
|
4
|
+
data.tar.gz: 06a6093675ef2b6906dd45b585d3be366230a718
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a209c7f717e94558c2c2f23235b3f45d65542d5cb52a2b9d559dea1e3d31ee3bea929ab77c8502c7923013c4e97b9fea713a107741f17aab5d1805f16722c91
|
7
|
+
data.tar.gz: 05ac2085057362df3aa8bd4424d53d15399fad2efe1bc97a64e6ec56be8451bd04e4c279d3c069ae893a232aeaa9ebd43b04b5a4b15cdf3e28d4c7feff9a8457
|
@@ -18,7 +18,7 @@ module ForestLiana
|
|
18
18
|
headers = { 'email' => @auth_data[:email], 'password' => @auth_data[:password] }
|
19
19
|
end
|
20
20
|
|
21
|
-
query_parameters = {
|
21
|
+
query_parameters = {}
|
22
22
|
|
23
23
|
if @two_factor_registration
|
24
24
|
query_parameters['two-factor-registration'] = true
|
@@ -1,9 +1,7 @@
|
|
1
1
|
module ForestLiana
|
2
2
|
class Bootstraper
|
3
3
|
|
4
|
-
def initialize
|
5
|
-
@app = app
|
6
|
-
|
4
|
+
def initialize
|
7
5
|
@integration_stripe_valid = false
|
8
6
|
@integration_intercom_valid = false
|
9
7
|
|
@@ -17,23 +15,39 @@ module ForestLiana
|
|
17
15
|
end
|
18
16
|
end
|
19
17
|
|
20
|
-
def perform
|
21
|
-
|
22
|
-
check_integrations_setup
|
23
|
-
namespace_duplicated_models
|
24
|
-
create_factories
|
18
|
+
def perform(with_feedback=false)
|
19
|
+
introspect_and_generate_factories
|
25
20
|
|
26
21
|
if ForestLiana.env_secret
|
27
|
-
|
28
|
-
|
29
|
-
|
22
|
+
generate_apimap
|
23
|
+
send_apimap(with_feedback)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def display_apimap
|
28
|
+
introspect_and_generate_factories
|
30
29
|
|
31
|
-
|
30
|
+
if ForestLiana.env_secret
|
31
|
+
generate_apimap
|
32
|
+
puts " = Current Forest Apimap:\n#{JSON.pretty_generate(get_apimap_serialized)}"
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
35
36
|
private
|
36
37
|
|
38
|
+
def introspect_and_generate_factories
|
39
|
+
fetch_models
|
40
|
+
check_integrations_setup
|
41
|
+
namespace_duplicated_models
|
42
|
+
create_factories
|
43
|
+
end
|
44
|
+
|
45
|
+
def generate_apimap
|
46
|
+
create_apimap
|
47
|
+
require_lib_forest_liana
|
48
|
+
format_and_validate_smart_actions
|
49
|
+
end
|
50
|
+
|
37
51
|
def is_sti_parent_model?(model)
|
38
52
|
return false unless model.try(:table_exists?)
|
39
53
|
|
@@ -199,26 +213,32 @@ module ForestLiana
|
|
199
213
|
end
|
200
214
|
end
|
201
215
|
|
202
|
-
def
|
216
|
+
def get_apimap_serialized
|
217
|
+
apimap = JSONAPI::Serializer.serialize(ForestLiana.apimap, {
|
218
|
+
is_collection: true,
|
219
|
+
include: ['actions', 'segments'],
|
220
|
+
meta: {
|
221
|
+
liana: 'forest-rails',
|
222
|
+
liana_version: liana_version,
|
223
|
+
framework_version: Gem.loaded_specs["rails"].version.version,
|
224
|
+
orm_version: Gem.loaded_specs["activerecord"].version.version,
|
225
|
+
database_type: database_type
|
226
|
+
}
|
227
|
+
})
|
228
|
+
|
229
|
+
ForestLiana::ApimapSorter.new(apimap).perform
|
230
|
+
end
|
231
|
+
|
232
|
+
def send_apimap(with_feedback=false)
|
203
233
|
if ForestLiana.env_secret && ForestLiana.env_secret.length != 64
|
204
234
|
FOREST_LOGGER.error "Your env_secret does not seem to be correct. " \
|
205
235
|
"Can you check on Forest that you copied it properly in the " \
|
206
236
|
"forest_liana initializer?"
|
207
237
|
else
|
208
|
-
apimap =
|
209
|
-
is_collection: true,
|
210
|
-
include: ['actions', 'segments'],
|
211
|
-
meta: {
|
212
|
-
liana: 'forest-rails',
|
213
|
-
liana_version: liana_version,
|
214
|
-
framework_version: Gem.loaded_specs["rails"].version.version,
|
215
|
-
orm_version: Gem.loaded_specs["activerecord"].version.version,
|
216
|
-
database_type: database_type
|
217
|
-
}
|
218
|
-
})
|
238
|
+
apimap = get_apimap_serialized
|
219
239
|
|
220
240
|
begin
|
221
|
-
|
241
|
+
puts " = Sending Forest Apimap:\n#{JSON.pretty_generate(apimap)}" if with_feedback
|
222
242
|
uri = URI.parse("#{forest_url}/forest/apimaps")
|
223
243
|
http = Net::HTTP.new(uri.host, uri.port)
|
224
244
|
http.use_ssl = true if forest_url.start_with?('https')
|
@@ -234,6 +254,14 @@ module ForestLiana
|
|
234
254
|
warning = JSON.parse(response.body)['warning']
|
235
255
|
end
|
236
256
|
|
257
|
+
if with_feedback
|
258
|
+
if response.is_a?(Net::HTTPOK) || response.is_a?(Net::HTTPNoContent)
|
259
|
+
puts " = Apimap Received - nothing changed"
|
260
|
+
elsif response.is_a?(Net::HTTPAccepted)
|
261
|
+
puts " = Apimap Received - update detected (currently updating the UI)"
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
237
265
|
if response.is_a?(Net::HTTPNotFound) # NOTICE: HTTP 404 Error
|
238
266
|
FOREST_LOGGER.error "Cannot find the project related to the " \
|
239
267
|
"env_secret you configured. Can you check on Forest that " \
|
@@ -242,10 +270,10 @@ module ForestLiana
|
|
242
270
|
FOREST_LOGGER.error "An error occured with the apimap sent " \
|
243
271
|
"to Forest. Please contact support@forestadmin.com for " \
|
244
272
|
"further investigations."
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
273
|
+
elsif response.is_a?(Net::HTTPServiceUnavailable) # NOTICE: HTTP 503 Error
|
274
|
+
FOREST_LOGGER.warn "Forest is in maintenance for a few " \
|
275
|
+
"minutes. We are upgrading your experience in the " \
|
276
|
+
"forest. We just need a few more minutes to get it right."
|
249
277
|
elsif warning
|
250
278
|
FOREST_LOGGER.warn warning
|
251
279
|
end
|
data/lib/forest_liana/engine.rb
CHANGED
@@ -67,11 +67,13 @@ module ForestLiana
|
|
67
67
|
"domains for CORS constraint:\n#{error}"
|
68
68
|
end
|
69
69
|
|
70
|
-
|
70
|
+
unless ENV['FOREST_DEACTIVATE_AUTOMATIC_APIMAP']
|
71
|
+
eager_load_active_record_descendants(app)
|
71
72
|
|
72
|
-
|
73
|
-
|
74
|
-
|
73
|
+
if database_available?
|
74
|
+
# NOTICE: Do not run the code below on rails g forest_liana:install.
|
75
|
+
Bootstraper.new().perform if ForestLiana.env_secret || ForestLiana.secret_key
|
76
|
+
end
|
75
77
|
end
|
76
78
|
end
|
77
79
|
end
|
data/lib/forest_liana/version.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
namespace :forest do
|
2
|
+
desc "Synchronize the models/customization with Forest servers"
|
3
|
+
task(:send_apimap).clear
|
4
|
+
task send_apimap: :environment do
|
5
|
+
if ForestLiana.env_secret
|
6
|
+
bootstraper = ForestLiana::Bootstraper.new()
|
7
|
+
bootstraper.perform(true)
|
8
|
+
else
|
9
|
+
puts 'Cannot send the Apimap, Forest cannot find your env_secret'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
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: 2.
|
4
|
+
version: 2.14.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: 2018-10-
|
11
|
+
date: 2018-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -288,6 +288,8 @@ files:
|
|
288
288
|
- lib/forest_liana/mixpanel_event.rb
|
289
289
|
- lib/forest_liana/version.rb
|
290
290
|
- lib/generators/forest_liana/install_generator.rb
|
291
|
+
- lib/tasks/display_apimap.rake
|
292
|
+
- lib/tasks/send_apimap.rake
|
291
293
|
- test/dummy/README.rdoc
|
292
294
|
- test/dummy/Rakefile
|
293
295
|
- test/dummy/app/assets/javascripts/application.js
|