skylight 3.1.4 → 5.3.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|