skylight 3.1.4 → 5.3.4
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/CHANGELOG.md +465 -294
- data/CLA.md +1 -1
- data/CONTRIBUTING.md +11 -3
- data/ERRORS.md +3 -0
- data/LICENSE.md +8 -18
- data/README.md +1 -2
- data/bin/skylight +1 -1
- data/ext/extconf.rb +118 -122
- data/ext/libskylight.yml +8 -6
- data/ext/skylight_native.c +56 -100
- data/lib/skylight/api.rb +41 -27
- data/lib/skylight/cli/doctor.rb +68 -70
- data/lib/skylight/cli/helpers.rb +3 -5
- data/lib/skylight/cli/merger.rb +99 -92
- data/lib/skylight/cli.rb +40 -43
- data/lib/skylight/config.rb +656 -201
- data/lib/skylight/data/cacert.pem +730 -1023
- data/lib/skylight/deprecation.rb +17 -0
- data/lib/skylight/errors.rb +34 -16
- data/lib/skylight/extensions/source_location.rb +291 -0
- data/lib/skylight/extensions.rb +95 -0
- data/lib/skylight/formatters/http.rb +18 -0
- data/lib/skylight/gc.rb +99 -0
- data/lib/skylight/helpers.rb +82 -39
- data/lib/skylight/instrumenter.rb +339 -9
- data/lib/skylight/middleware.rb +147 -1
- data/lib/skylight/native.rb +71 -23
- data/lib/skylight/native_ext_fetcher.rb +39 -47
- data/lib/skylight/normalizers/action_controller/process_action.rb +68 -0
- data/lib/skylight/normalizers/action_controller/send_file.rb +51 -0
- data/lib/skylight/normalizers/action_dispatch/process_middleware.rb +22 -0
- data/lib/skylight/normalizers/action_dispatch/route_set.rb +27 -0
- data/lib/skylight/normalizers/action_view/render_collection.rb +24 -0
- data/lib/skylight/normalizers/action_view/render_layout.rb +25 -0
- data/lib/skylight/normalizers/action_view/render_partial.rb +23 -0
- data/lib/skylight/normalizers/action_view/render_template.rb +23 -0
- data/lib/skylight/normalizers/active_job/perform.rb +87 -0
- data/lib/skylight/normalizers/active_model_serializers/render.rb +32 -0
- data/lib/skylight/normalizers/active_record/instantiation.rb +16 -0
- data/lib/skylight/normalizers/active_record/sql.rb +20 -0
- data/lib/skylight/normalizers/active_storage.rb +28 -0
- data/lib/skylight/normalizers/active_support/cache.rb +11 -0
- data/lib/skylight/normalizers/active_support/cache_clear.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_decrement.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_delete.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_exist.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_fetch_hit.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_generate.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_increment.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_read.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_read_multi.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_write.rb +16 -0
- data/lib/skylight/normalizers/coach/handler_finish.rb +44 -0
- data/lib/skylight/normalizers/coach/middleware_finish.rb +33 -0
- data/lib/skylight/normalizers/couch_potato/query.rb +20 -0
- data/lib/skylight/normalizers/data_mapper/sql.rb +12 -0
- data/lib/skylight/normalizers/default.rb +24 -0
- data/lib/skylight/normalizers/elasticsearch/request.rb +20 -0
- data/lib/skylight/normalizers/faraday/request.rb +38 -0
- data/lib/skylight/normalizers/grape/endpoint.rb +28 -0
- data/lib/skylight/normalizers/grape/endpoint_render.rb +25 -0
- data/lib/skylight/normalizers/grape/endpoint_run.rb +39 -0
- data/lib/skylight/normalizers/grape/endpoint_run_filters.rb +20 -0
- data/lib/skylight/normalizers/grape/format_response.rb +20 -0
- data/lib/skylight/normalizers/graphiti/render.rb +22 -0
- data/lib/skylight/normalizers/graphiti/resolve.rb +31 -0
- data/lib/skylight/normalizers/graphql/base.rb +127 -0
- data/lib/skylight/normalizers/render.rb +79 -0
- data/lib/skylight/normalizers/sequel/sql.rb +12 -0
- data/lib/skylight/normalizers/shrine.rb +32 -0
- data/lib/skylight/normalizers/sql.rb +41 -0
- data/lib/skylight/normalizers.rb +157 -0
- data/lib/skylight/probes/action_controller.rb +52 -0
- data/lib/skylight/probes/action_dispatch/request_id.rb +33 -0
- data/lib/skylight/probes/action_dispatch/routing/route_set.rb +30 -0
- data/lib/skylight/probes/action_dispatch.rb +2 -0
- data/lib/skylight/probes/action_view.rb +42 -0
- data/lib/skylight/probes/active_job.rb +27 -0
- data/lib/skylight/probes/active_job_enqueue.rb +35 -0
- data/lib/skylight/probes/active_model_serializers.rb +50 -0
- data/lib/skylight/probes/active_record_async.rb +96 -0
- data/lib/skylight/probes/delayed_job.rb +144 -0
- data/lib/skylight/probes/elasticsearch.rb +45 -0
- data/lib/skylight/probes/excon/middleware.rb +65 -0
- data/lib/skylight/probes/excon.rb +25 -0
- data/lib/skylight/probes/faraday.rb +23 -0
- data/lib/skylight/probes/graphql.rb +38 -0
- data/lib/skylight/probes/httpclient.rb +44 -0
- data/lib/skylight/probes/middleware.rb +135 -0
- data/lib/skylight/probes/mongo.rb +169 -0
- data/lib/skylight/probes/mongoid.rb +6 -0
- data/lib/skylight/probes/net_http.rb +54 -0
- data/lib/skylight/probes/rack_builder.rb +37 -0
- data/lib/skylight/probes/redis.rb +68 -0
- data/lib/skylight/probes/sequel.rb +29 -0
- data/lib/skylight/probes/sinatra.rb +66 -0
- data/lib/skylight/probes/sinatra_add_middleware.rb +10 -10
- data/lib/skylight/probes/tilt.rb +25 -0
- data/lib/skylight/probes.rb +172 -0
- data/lib/skylight/railtie.rb +172 -15
- data/lib/skylight/sidekiq.rb +47 -0
- data/lib/skylight/sinatra.rb +2 -2
- data/lib/skylight/subscriber.rb +130 -0
- data/lib/skylight/test.rb +147 -0
- data/lib/skylight/trace.rb +331 -15
- data/lib/skylight/user_config.rb +60 -0
- data/lib/skylight/util/allocation_free.rb +26 -0
- data/lib/skylight/util/clock.rb +57 -0
- data/lib/skylight/util/component.rb +47 -9
- data/lib/skylight/util/deploy.rb +24 -40
- data/lib/skylight/util/gzip.rb +20 -0
- data/lib/skylight/util/hostname.rb +4 -4
- data/lib/skylight/util/http.rb +62 -71
- data/lib/skylight/util/instrumenter_method.rb +26 -0
- data/lib/skylight/util/logging.rb +136 -0
- data/lib/skylight/util/lru_cache.rb +36 -0
- data/lib/skylight/util/platform.rb +74 -0
- data/lib/skylight/util/proxy.rb +13 -0
- data/lib/skylight/util/ssl.rb +4 -28
- data/lib/skylight/util.rb +12 -0
- data/lib/skylight/vendor/cli/thor/rake_compat.rb +1 -1
- data/lib/skylight/version.rb +5 -1
- data/lib/skylight/vm/gc.rb +60 -0
- data/lib/skylight.rb +213 -24
- metadata +171 -53
data/lib/skylight/cli/merger.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
require
|
|
4
|
-
require
|
|
1
|
+
require "ostruct"
|
|
2
|
+
require "skylight/util/http"
|
|
3
|
+
require "thor"
|
|
4
|
+
require "highline"
|
|
5
5
|
|
|
6
6
|
module Skylight
|
|
7
7
|
module CLI
|
|
@@ -13,9 +13,9 @@ module Skylight
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
STRINGS = {
|
|
16
|
-
get_token:
|
|
16
|
+
get_token: "get your merge token from `https://www.skylight.io/merging`",
|
|
17
17
|
unlisted: "My app isn't listed here :("
|
|
18
|
-
}
|
|
18
|
+
}.freeze
|
|
19
19
|
|
|
20
20
|
argument :merge_token, type: :string, desc: STRINGS[:get_token]
|
|
21
21
|
|
|
@@ -23,8 +23,8 @@ module Skylight
|
|
|
23
23
|
say "\nHello! Welcome to the `skylight merge` CLI!\n", :green
|
|
24
24
|
|
|
25
25
|
say "This CLI is for Skylight users who already have Skylight Environments set up\n" \
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
"using the legacy method of creating a separate Skylight app per environment.\n" \
|
|
27
|
+
"Use this CLI to merge legacy environment apps into their parent apps as Environments."
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def fetch_apps
|
|
@@ -40,23 +40,24 @@ module Skylight
|
|
|
40
40
|
rescue Skylight::Api::Unauthorized
|
|
41
41
|
done!(
|
|
42
42
|
success: false,
|
|
43
|
-
message:
|
|
44
|
-
"
|
|
45
|
-
|
|
43
|
+
message:
|
|
44
|
+
"Provided merge token is invalid.\n" \
|
|
45
|
+
"Please #{STRINGS[:get_token]}" \
|
|
46
|
+
"and run `skylight merge <merge token>` again."
|
|
46
47
|
)
|
|
47
48
|
end
|
|
48
49
|
|
|
49
50
|
def ask_for_parent_app
|
|
50
|
-
@parents ||=
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
h[i + 1] = OpenStruct.new(app)
|
|
51
|
+
@parents ||=
|
|
52
|
+
begin
|
|
53
|
+
a = (@apps + [{ name: STRINGS[:unlisted], components: [], unlisted: true }])
|
|
54
|
+
a.each_with_object({}).with_index { |(app, h), i| h[i + 1] = OpenStruct.new(app) }
|
|
54
55
|
end
|
|
55
|
-
end
|
|
56
56
|
|
|
57
57
|
say "\nLet's begin!\n\n" \
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
"Please specify the \"parent\" app.\n" \
|
|
59
|
+
"In most cases, this will be the production app handling web requests.",
|
|
60
|
+
:green
|
|
60
61
|
|
|
61
62
|
@parent_app = ask_for_app(@parents)
|
|
62
63
|
end
|
|
@@ -76,8 +77,9 @@ module Skylight
|
|
|
76
77
|
|
|
77
78
|
def ask_for_child_env
|
|
78
79
|
say "\nWhat environment is the child app?\n" \
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
"In many cases, this will be equivalent to the Rails " \
|
|
81
|
+
"environment, i.e., `development`.",
|
|
82
|
+
:green
|
|
81
83
|
|
|
82
84
|
say "1. development"
|
|
83
85
|
say "2. staging"
|
|
@@ -85,15 +87,18 @@ module Skylight
|
|
|
85
87
|
|
|
86
88
|
i = ask("\nWhich number?").chomp.to_i
|
|
87
89
|
|
|
88
|
-
@child_env =
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
90
|
+
@child_env =
|
|
91
|
+
case i
|
|
92
|
+
when 1
|
|
93
|
+
"development"
|
|
94
|
+
when 2
|
|
95
|
+
"staging"
|
|
96
|
+
when 3
|
|
97
|
+
specify_child_env
|
|
98
|
+
else
|
|
99
|
+
say("\nEh? Please enter 1, 2, or 3.", :red)
|
|
100
|
+
ask_for_child_env
|
|
101
|
+
end
|
|
97
102
|
end
|
|
98
103
|
|
|
99
104
|
def confirm_child_env
|
|
@@ -102,7 +107,7 @@ module Skylight
|
|
|
102
107
|
|
|
103
108
|
def confirm_everything
|
|
104
109
|
say "\nOk! Now we're going to merge `#{set_color(format_component(@child_app), :yellow)}` " \
|
|
105
|
-
|
|
110
|
+
"into `#{set_color(@parent_app.name, :green)}` as `#{set_color(@child_env, :yellow)}`."
|
|
106
111
|
end
|
|
107
112
|
|
|
108
113
|
def do_confirm
|
|
@@ -112,10 +117,7 @@ module Skylight
|
|
|
112
117
|
when "Y", ""
|
|
113
118
|
do_merge
|
|
114
119
|
when "N"
|
|
115
|
-
done!(
|
|
116
|
-
success: true,
|
|
117
|
-
message: "Ok, come back any time."
|
|
118
|
-
)
|
|
120
|
+
done!(success: true, message: "Ok, come back any time.")
|
|
119
121
|
else
|
|
120
122
|
say("Please respond 'Y' to merge or 'n' to cancel.", :red)
|
|
121
123
|
do_confirm
|
|
@@ -128,37 +130,43 @@ module Skylight
|
|
|
128
130
|
say "=======================================================\n", :yellow
|
|
129
131
|
|
|
130
132
|
say "IMPORTANT!\n" \
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
133
|
+
"If you use a config/skylight.yml file to configure Skylight:\n",
|
|
134
|
+
:yellow
|
|
135
|
+
|
|
136
|
+
say "The #{@child_env} environment for the #{@parent_app.name} app\n" \
|
|
137
|
+
"will now connect using the default authentication token for the app.\n" \
|
|
138
|
+
"Remove any environment-specific `authentication` configs from the\n" \
|
|
139
|
+
"#{@parent_app.name} #{@child_env} environment.\n",
|
|
140
|
+
:yellow
|
|
141
|
+
|
|
142
|
+
say "If you're running in Rails and your Rails environment exactly matches `#{@child_env}`,\n" \
|
|
143
|
+
"we will automatically detect and report that environment when your agent connects.\n" \
|
|
144
|
+
"Otherwise, you should set `env: '#{@child_env}'` as environment-specific configuration for\n" \
|
|
145
|
+
"#{@child_env}'s Rails environment. For example:\n" \
|
|
146
|
+
"```yml\n" \
|
|
147
|
+
"staging:\n" \
|
|
148
|
+
" env: staging-42\n" \
|
|
149
|
+
"```\n",
|
|
150
|
+
:yellow
|
|
146
151
|
|
|
147
152
|
say "=======================================================\n", :yellow
|
|
148
153
|
|
|
149
154
|
say "IMPORTANT!\n" \
|
|
150
|
-
|
|
155
|
+
"If you configure Skylight using environment variables:\n",
|
|
156
|
+
:yellow
|
|
151
157
|
|
|
152
158
|
say "Deploy the latest agent before updating your environment variables.\n", :yellow
|
|
153
159
|
|
|
154
|
-
say "The
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
160
|
+
say "The #{@child_env} environment for the #{@parent_app.name} app\n" \
|
|
161
|
+
"will now connect using the default authentication token for the app.\n" \
|
|
162
|
+
"Set `SKYLIGHT_AUTHENTICATION` in the #{@child_env} environment to the\n" \
|
|
163
|
+
"#{@parent_app.name} app's authentication token.\n",
|
|
164
|
+
:yellow
|
|
158
165
|
|
|
159
|
-
say "If you're running in Rails and your Rails environment exactly matches
|
|
160
|
-
|
|
161
|
-
|
|
166
|
+
say "If you're running in Rails and your Rails environment exactly matches `#{@child_env}`,\n" \
|
|
167
|
+
"we will automatically detect and report that environment when your agent connects.\n" \
|
|
168
|
+
"Otherwise, you should set `SKYLIGHT_ENV=#{@child_env}` when running in this environment.\n",
|
|
169
|
+
:yellow
|
|
162
170
|
|
|
163
171
|
say "=======================================================", :yellow
|
|
164
172
|
|
|
@@ -170,12 +178,13 @@ module Skylight
|
|
|
170
178
|
def do_merge
|
|
171
179
|
say "Merging..."
|
|
172
180
|
|
|
173
|
-
api.merge_apps!(
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
181
|
+
api.merge_apps!(
|
|
182
|
+
@merge_token,
|
|
183
|
+
app_guid: @parent_app.guid,
|
|
184
|
+
component_guid: @child_app.guid,
|
|
185
|
+
environment: @child_env
|
|
186
|
+
)
|
|
187
|
+
rescue StandardError => e
|
|
179
188
|
say("Something went wrong. Please contact support@skylight.io for more information.", :red)
|
|
180
189
|
done!(message: e.message, success: false)
|
|
181
190
|
end
|
|
@@ -197,9 +206,7 @@ module Skylight
|
|
|
197
206
|
|
|
198
207
|
def ask_for_app(app_list, &formatter)
|
|
199
208
|
formatter ||= :name.to_proc
|
|
200
|
-
app_list.each
|
|
201
|
-
say("\t#{index}. #{formatter.(app)}")
|
|
202
|
-
end
|
|
209
|
+
app_list.each { |index, app| say("\t#{index}. #{formatter.call(app)}") }
|
|
203
210
|
|
|
204
211
|
n = ask("\nWhich number?").chomp.to_i
|
|
205
212
|
|
|
@@ -207,10 +214,7 @@ module Skylight
|
|
|
207
214
|
say "\nHmm?"
|
|
208
215
|
ask_for_app(app_list, &formatter)
|
|
209
216
|
elsif app_list[n].unlisted
|
|
210
|
-
done!(
|
|
211
|
-
success: false,
|
|
212
|
-
message: "Sorry, `skylight merge` is only able to merge apps that you own."
|
|
213
|
-
)
|
|
217
|
+
done!(success: false, message: "Sorry, `skylight merge` is only able to merge apps that you own.")
|
|
214
218
|
else
|
|
215
219
|
app_list[n]
|
|
216
220
|
end
|
|
@@ -221,14 +225,15 @@ module Skylight
|
|
|
221
225
|
end
|
|
222
226
|
|
|
223
227
|
def format_component(component)
|
|
224
|
-
parts =
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
+
parts =
|
|
229
|
+
[].tap do |ary|
|
|
230
|
+
ary << component.name unless component.name == "web"
|
|
231
|
+
ary << component.environment unless component.environment == "production"
|
|
232
|
+
end
|
|
228
233
|
|
|
229
|
-
str =
|
|
234
|
+
str = ""
|
|
230
235
|
str << component.app_name
|
|
231
|
-
str << Thor::Shell::Color.new.set_color(" (#{parts.join(
|
|
236
|
+
str << Thor::Shell::Color.new.set_color(" (#{parts.join(":")})", :yellow) if parts.any?
|
|
232
237
|
str
|
|
233
238
|
end
|
|
234
239
|
|
|
@@ -240,8 +245,9 @@ module Skylight
|
|
|
240
245
|
end
|
|
241
246
|
|
|
242
247
|
if @parent_app && parent_component_fingerprints.include?([child_app.name, child_env])
|
|
243
|
-
errors <<
|
|
244
|
-
"
|
|
248
|
+
errors <<
|
|
249
|
+
"Sorry, `#{@parent_app.name}` already has a `#{child_env}` " \
|
|
250
|
+
"component that conflicts with this merge request. Please choose a new environment."
|
|
245
251
|
end
|
|
246
252
|
|
|
247
253
|
return child_env unless errors.any?
|
|
@@ -253,28 +259,31 @@ module Skylight
|
|
|
253
259
|
|
|
254
260
|
def valid_component?(component_name, env)
|
|
255
261
|
return false unless env
|
|
256
|
-
|
|
262
|
+
|
|
263
|
+
Util::Component.new(env, component_name) && true
|
|
257
264
|
rescue ArgumentError
|
|
258
265
|
false
|
|
259
266
|
end
|
|
260
267
|
|
|
261
268
|
def parent_component_fingerprints
|
|
262
|
-
@parent_app.components.map { |x| x.values_at(
|
|
269
|
+
@parent_app.components.map { |x| x.values_at("name", "environment") }
|
|
263
270
|
end
|
|
264
271
|
|
|
265
272
|
def children
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
273
|
+
ret =
|
|
274
|
+
Enumerator.new do |yielder|
|
|
275
|
+
@parents.each do |_, app|
|
|
276
|
+
next if app == @parent_app
|
|
277
|
+
|
|
278
|
+
app.components.each { |component| yielder << OpenStruct.new({ app_name: app.name }.merge(component)) }
|
|
271
279
|
end
|
|
280
|
+
|
|
281
|
+
yielder << OpenStruct.new(app_name: STRINGS[:unlisted], unlisted: true)
|
|
272
282
|
end
|
|
273
283
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
end.tap do |result|
|
|
284
|
+
ret = ret.each_with_object({}).with_index { |(c, r), i| r[i + 1] = c }
|
|
285
|
+
|
|
286
|
+
ret.tap do |result|
|
|
278
287
|
if result.values.all?(&:unlisted)
|
|
279
288
|
done!(
|
|
280
289
|
success: false,
|
|
@@ -288,9 +297,7 @@ module Skylight
|
|
|
288
297
|
validate_mergeability(
|
|
289
298
|
@child_app,
|
|
290
299
|
ask("Please enter your environment name (only lowercase letters, numbers, or hyphens): ", :green).chomp
|
|
291
|
-
)
|
|
292
|
-
specify_child_env
|
|
293
|
-
end
|
|
300
|
+
) { specify_child_env }
|
|
294
301
|
end
|
|
295
302
|
end
|
|
296
303
|
end
|
data/lib/skylight/cli.rb
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path("vendor/cli", __dir__)
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
7
|
-
require
|
|
3
|
+
require "skylight"
|
|
4
|
+
require "thor"
|
|
5
|
+
require "yaml"
|
|
6
|
+
require "highline"
|
|
7
|
+
require "active_support/inflector"
|
|
8
8
|
|
|
9
|
-
require
|
|
10
|
-
require
|
|
11
|
-
require
|
|
9
|
+
require "skylight/cli/helpers"
|
|
10
|
+
require "skylight/cli/doctor"
|
|
11
|
+
require "skylight/cli/merger"
|
|
12
12
|
|
|
13
13
|
module Skylight
|
|
14
14
|
module CLI
|
|
@@ -22,45 +22,46 @@ module Skylight
|
|
|
22
22
|
desc "setup TOKEN", "Sets up a new app using the provided token"
|
|
23
23
|
def setup(token)
|
|
24
24
|
if File.exist?(config_path)
|
|
25
|
-
say
|
|
26
|
-
A config/skylight.yml already exists for your application.
|
|
25
|
+
say <<~OUT, :green
|
|
26
|
+
A config/skylight.yml already exists for your application.
|
|
27
27
|
|
|
28
|
-
Visit your app at https://www.skylight.io/app or remove config/skylight.yml
|
|
29
|
-
to set it up as a new app in Skylight.
|
|
28
|
+
Visit your app at https://www.skylight.io/app or remove config/skylight.yml
|
|
29
|
+
to set it up as a new app in Skylight.
|
|
30
30
|
OUT
|
|
31
|
+
|
|
31
32
|
return
|
|
32
33
|
end
|
|
33
34
|
|
|
34
35
|
res = api.create_app(app_name, token)
|
|
35
36
|
|
|
36
|
-
config[:application]
|
|
37
|
-
config[:authentication] = res.get(
|
|
37
|
+
config[:application] = res.get("app.id")
|
|
38
|
+
config[:authentication] = res.get("app.token")
|
|
38
39
|
config.write(config_path)
|
|
39
40
|
|
|
40
41
|
say "Congratulations. Your application is on Skylight! https://www.skylight.io", :green
|
|
41
|
-
say
|
|
42
|
+
say <<~OUT
|
|
42
43
|
|
|
43
|
-
The application was registered for you and we generated a config file
|
|
44
|
-
containing your API token at:
|
|
44
|
+
The application was registered for you and we generated a config file
|
|
45
|
+
containing your API token at:
|
|
45
46
|
|
|
46
|
-
|
|
47
|
+
#{relative_config_path}
|
|
47
48
|
|
|
48
|
-
The next step is for you to deploy your application to production. The
|
|
49
|
-
easiest way is to just commit the config file to your source control
|
|
50
|
-
repository and deploy from there. You can learn more about the process at:
|
|
49
|
+
The next step is for you to deploy your application to production. The
|
|
50
|
+
easiest way is to just commit the config file to your source control
|
|
51
|
+
repository and deploy from there. You can learn more about the process at:
|
|
51
52
|
|
|
52
|
-
|
|
53
|
+
https://docs.skylight.io/getting-set-up/#deployment
|
|
53
54
|
|
|
54
|
-
If you want to specify the authentication token as an environment variable,
|
|
55
|
-
you should set the `SKYLIGHT_AUTHENTICATION` variable to:
|
|
55
|
+
If you want to specify the authentication token as an environment variable,
|
|
56
|
+
you should set the `SKYLIGHT_AUTHENTICATION` variable to:
|
|
56
57
|
|
|
57
|
-
|
|
58
|
+
#{config[:authentication]}
|
|
58
59
|
|
|
59
60
|
OUT
|
|
60
61
|
rescue Api::CreateFailed => e
|
|
61
62
|
say "Could not create the application. Please run `bundle exec skylight doctor` for diagnostics.", :red
|
|
62
63
|
say e.to_s, :yellow
|
|
63
|
-
rescue Interrupt
|
|
64
|
+
rescue Interrupt # rubocop:disable Lint/SuppressedException
|
|
64
65
|
end
|
|
65
66
|
|
|
66
67
|
desc "disable_dev_warning", "Disables warning about running Skylight in development mode for all local apps"
|
|
@@ -71,7 +72,9 @@ you should set the `SKYLIGHT_AUTHENTICATION` variable to:
|
|
|
71
72
|
say "Development mode warning disabled", :green
|
|
72
73
|
end
|
|
73
74
|
|
|
74
|
-
desc "disable_env_warning",
|
|
75
|
+
desc "disable_env_warning",
|
|
76
|
+
"Disables warning about running Skylight in environments not defined in " \
|
|
77
|
+
"config.skylight.environments"
|
|
75
78
|
def disable_env_warning
|
|
76
79
|
user_config.disable_env_warning = true
|
|
77
80
|
user_config.save
|
|
@@ -79,25 +82,26 @@ you should set the `SKYLIGHT_AUTHENTICATION` variable to:
|
|
|
79
82
|
say "Environment warning disabled", :green
|
|
80
83
|
end
|
|
81
84
|
|
|
82
|
-
|
|
85
|
+
private
|
|
83
86
|
|
|
84
87
|
def app_name
|
|
85
88
|
@app_name ||=
|
|
86
89
|
begin
|
|
87
90
|
name = nil
|
|
88
91
|
|
|
89
|
-
if
|
|
92
|
+
if rails?
|
|
90
93
|
# Get the name in a process so that we don't pollute our environment here
|
|
91
94
|
# This is especially important since users may have things like WebMock that
|
|
92
95
|
# will prevent us from communicating with the Skylight API
|
|
93
96
|
begin
|
|
94
|
-
namefile = Tempfile.new(
|
|
97
|
+
namefile = Tempfile.new("skylight-app-name")
|
|
98
|
+
|
|
95
99
|
# Windows appears to need double quotes for `rails runner`
|
|
96
100
|
`rails runner "File.open('#{namefile.path}', 'w') {|f| f.write(Rails.application.class.name) rescue '' }"`
|
|
97
101
|
name = namefile.read.split("::").first.underscore.titleize
|
|
98
102
|
name = nil if name.empty?
|
|
99
|
-
rescue => e
|
|
100
|
-
if ENV[
|
|
103
|
+
rescue StandardError => e
|
|
104
|
+
if ENV["DEBUG"]
|
|
101
105
|
puts e.class.name
|
|
102
106
|
puts e.to_s
|
|
103
107
|
puts e.backtrace.join("\n")
|
|
@@ -107,22 +111,16 @@ you should set the `SKYLIGHT_AUTHENTICATION` variable to:
|
|
|
107
111
|
namefile.unlink
|
|
108
112
|
end
|
|
109
113
|
|
|
110
|
-
unless name
|
|
111
|
-
warn "Unable to determine Rails application name. Using directory name."
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
unless name
|
|
116
|
-
name = File.basename(File.expand_path('.')).titleize
|
|
114
|
+
warn "Unable to determine Rails application name. Using directory name." unless name
|
|
117
115
|
end
|
|
118
116
|
|
|
119
|
-
name
|
|
117
|
+
name || File.basename(File.expand_path(".")).titleize
|
|
120
118
|
end
|
|
121
119
|
end
|
|
122
120
|
|
|
123
121
|
# Is this duplicated?
|
|
124
122
|
def relative_config_path
|
|
125
|
-
|
|
123
|
+
"config/skylight.yml"
|
|
126
124
|
end
|
|
127
125
|
|
|
128
126
|
def config_path
|
|
@@ -136,7 +134,6 @@ you should set the `SKYLIGHT_AUTHENTICATION` variable to:
|
|
|
136
134
|
def user_config
|
|
137
135
|
config.user_config
|
|
138
136
|
end
|
|
139
|
-
|
|
140
137
|
end
|
|
141
138
|
end
|
|
142
139
|
end
|