appsignal 2.0.3 → 2.0.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.
@@ -6,10 +6,12 @@ require 'appsignal/demo'
6
6
  module Appsignal
7
7
  class CLI
8
8
  class Install
9
+ extend CLI::Helpers
10
+
9
11
  EXCLUDED_ENVIRONMENTS = ['test'].freeze
10
12
 
11
13
  class << self
12
- def run(push_api_key, config)
14
+ def run(push_api_key)
13
15
  puts
14
16
  puts colorize "#######################################", :green
15
17
  puts colorize "## Starting AppSignal Installer ##", :green
@@ -25,9 +27,9 @@ module Appsignal
25
27
  puts " - Already signed up? Click 'New app' on the account overview page"
26
28
  puts
27
29
  puts colorize 'Exiting installer...', :red
28
- return false
30
+ return
29
31
  end
30
-
32
+ config = new_config
31
33
  config[:push_api_key] = push_api_key
32
34
 
33
35
  print 'Validating API key'
@@ -37,31 +39,28 @@ module Appsignal
37
39
  auth_check = Appsignal::AuthCheck.new(config)
38
40
  unless auth_check.perform == '200'
39
41
  puts "\n API key '#{config[:push_api_key]}' is not valid, please get a new one on https://appsignal.com"
40
- return false
42
+ return
41
43
  end
42
- rescue Exception => e
44
+ rescue => e
43
45
  puts " There was an error validating your API key:"
44
46
  puts colorize "'#{e}'", :red
45
47
  puts " Please try again"
46
- return false
48
+ return
47
49
  end
48
50
  puts colorize ' API key valid!', :green
49
51
  puts
50
52
 
51
53
  if installed_frameworks.include?(:rails)
52
54
  install_for_rails(config)
53
- elsif installed_frameworks.include?(:sinatra) && !installed_frameworks.include?(:padrino)
54
- install_for_sinatra(config)
55
55
  elsif installed_frameworks.include?(:padrino)
56
56
  install_for_padrino(config)
57
57
  elsif installed_frameworks.include?(:grape)
58
58
  install_for_grape(config)
59
+ elsif installed_frameworks.include?(:sinatra)
60
+ install_for_sinatra(config)
59
61
  else
60
62
  puts "We could not detect which framework you are using. We'd be very grateful if you email us on support@appsignal.com with information about your setup."
61
- return false
62
63
  end
63
-
64
- true
65
64
  end
66
65
 
67
66
  def install_for_rails(config)
@@ -93,16 +92,17 @@ module Appsignal
93
92
  puts " Add this line beneath require 'sinatra':"
94
93
  puts
95
94
  puts " require 'appsignal/integrations/sinatra'"
95
+ puts
96
+ puts " You can find more information in the documentation:"
97
+ puts " http://docs.appsignal.com/getting-started/supported-frameworks.html#sinatra"
96
98
  press_any_key
97
99
  done_notice
98
100
  end
99
101
 
100
102
  def install_for_padrino(config)
101
103
  puts 'Installing for Padrino'
102
-
103
104
  config[:name] = required_input(' Enter application name: ')
104
105
  puts
105
-
106
106
  configure(config, ['development', 'production', 'staging'], true)
107
107
 
108
108
  puts "Finish Padrino installation"
@@ -126,7 +126,7 @@ module Appsignal
126
126
  configure(config, ['development', 'production', 'staging'], true)
127
127
 
128
128
  puts "Manual Grape configuration needed"
129
- puts " See the installation instructions here:"
129
+ puts " See the installation instructions at:"
130
130
  puts " http://docs.appsignal.com/getting-started/supported-frameworks.html#grape"
131
131
  press_any_key
132
132
  done_notice
@@ -147,56 +147,6 @@ module Appsignal
147
147
  puts
148
148
  end
149
149
 
150
- def colorize(text, color)
151
- return text if Gem.win_platform?
152
- color_code = case color
153
- when :red then 31
154
- when :green then 32
155
- when :yellow then 33
156
- when :blue then 34
157
- when :pink then 35
158
- else 0
159
- end
160
- "\e[#{color_code}m#{text}\e[0m"
161
- end
162
-
163
- def periods
164
- 3.times do
165
- print "."
166
- sleep(0.5)
167
- end
168
- end
169
-
170
- def press_any_key
171
- puts
172
- print " Ready? Press any key:"
173
- STDIN.getch
174
- puts
175
- puts
176
- end
177
-
178
- def yes_or_no(prompt)
179
- loop do
180
- print prompt
181
- input = gets.chomp
182
- if input == 'y'
183
- return true
184
- elsif input == 'n'
185
- return false
186
- end
187
- end
188
- end
189
-
190
- def required_input(prompt)
191
- loop do
192
- print prompt
193
- input = gets.chomp
194
- if input.length > 0
195
- return input
196
- end
197
- end
198
- end
199
-
200
150
  def configure(config, environments, name_overwritten)
201
151
  install_for_capistrano
202
152
 
@@ -207,8 +157,8 @@ module Appsignal
207
157
  puts " (2) environment variables"
208
158
  loop do
209
159
  print " Choose (1/2): "
210
- input = gets.chomp
211
- if input == '1'
160
+ case ask_for_input
161
+ when '1'
212
162
  puts
213
163
  print "Writing config file"
214
164
  periods
@@ -221,14 +171,13 @@ module Appsignal
221
171
  )
222
172
  puts
223
173
  break
224
- elsif input == '2'
174
+ when '2'
225
175
  ENV["APPSIGNAL_ACTIVE"] = "true"
226
176
  ENV["APPSIGNAL_PUSH_API_KEY"] = config[:push_api_key]
227
177
  ENV["APPSIGNAL_APP_NAME"] = config[:name]
228
178
 
229
179
  puts
230
180
  puts "Add the following environment variables to configure AppSignal:"
231
- puts " export APPSIGNAL_ACTIVE=true"
232
181
  puts " export APPSIGNAL_PUSH_API_KEY=#{config[:push_api_key]}"
233
182
  if name_overwritten
234
183
  puts " export APPSIGNAL_APP_NAME=#{config[:name]}"
@@ -291,7 +240,7 @@ module Appsignal
291
240
  end
292
241
 
293
242
  def rails_environments
294
- @environments ||= Dir.glob(
243
+ Dir.glob(
295
244
  File.join(Dir.pwd, 'config/environments/*.rb')
296
245
  ).map { |o| File.basename(o, ".rb") }.sort - EXCLUDED_ENVIRONMENTS
297
246
  end
@@ -308,6 +257,10 @@ module Appsignal
308
257
  FileUtils.mkdir_p(File.join(Dir.pwd, 'config'))
309
258
  File.write(File.join(Dir.pwd, 'config/appsignal.yml'), config)
310
259
  end
260
+
261
+ def new_config
262
+ Appsignal::Config.new(Dir.pwd, "")
263
+ end
311
264
  end
312
265
  end
313
266
  end
@@ -5,7 +5,7 @@ require 'socket'
5
5
 
6
6
  module Appsignal
7
7
  class Config
8
- SYSTEM_TMP_DIR = '/tmp'
8
+ SYSTEM_TMP_DIR = File.realpath('/tmp')
9
9
  DEFAULT_CONFIG = {
10
10
  :debug => false,
11
11
  :log => 'file',
@@ -63,7 +63,7 @@ module Appsignal
63
63
 
64
64
  def initialize(root_path, env, initial_config={}, logger=Appsignal.logger)
65
65
  @root_path = root_path
66
- @env = env.to_s
66
+ @env = ENV.fetch("APPSIGNAL_APP_ENV".freeze, env.to_s)
67
67
  @initial_config = initial_config
68
68
  @logger = logger
69
69
  @valid = false
@@ -90,7 +90,7 @@ module Appsignal
90
90
  end
91
91
 
92
92
  def log_file_path
93
- path = config_hash[:log_path] || root_path
93
+ path = config_hash[:log_path] || root_path && File.join(root_path, 'log')
94
94
  if path && File.writable?(path)
95
95
  return File.join(File.realpath(path), 'appsignal.log')
96
96
  end
@@ -8,7 +8,7 @@ module Appsignal::Integrations
8
8
  root = Padrino.mounted_root
9
9
  Appsignal.config = Appsignal::Config.new(
10
10
  root,
11
- ENV.fetch('APPSIGNAL_APP_ENV'.freeze, Padrino.env.to_s),
11
+ Padrino.env,
12
12
  :log_path => File.join(root, 'log')
13
13
  )
14
14
 
@@ -13,7 +13,7 @@ module Appsignal
13
13
  # Load config
14
14
  Appsignal.config = Appsignal::Config.new(
15
15
  Rails.root,
16
- ENV.fetch('APPSIGNAL_APP_ENV', Rails.env),
16
+ Rails.env,
17
17
  :name => Rails.application.class.parent_name,
18
18
  :log_path => Rails.root.join('log')
19
19
  )
@@ -6,7 +6,7 @@ Appsignal.logger.info("Loading Sinatra (#{Sinatra::VERSION}) integration")
6
6
  app_settings = ::Sinatra::Application.settings
7
7
  Appsignal.config = Appsignal::Config.new(
8
8
  app_settings.root || Dir.pwd,
9
- ENV.fetch('APPSIGNAL_APP_ENV'.freeze, app_settings.environment)
9
+ app_settings.environment
10
10
  )
11
11
 
12
12
  Appsignal.start_logger
@@ -1,5 +1,5 @@
1
1
  require 'yaml'
2
2
 
3
3
  module Appsignal
4
- VERSION = '2.0.3'
4
+ VERSION = '2.0.4'
5
5
  end
@@ -4,7 +4,8 @@ if DependencyHelper.capistrano2_present?
4
4
  require 'appsignal/capistrano'
5
5
 
6
6
  describe "Capistrano 2 integration" do
7
- let(:out_stream) { StringIO.new }
7
+ let(:out_stream) { std_stream }
8
+ let(:output) { out_stream.read }
8
9
  let(:config) { project_fixture_config }
9
10
  let(:capistrano_config) do
10
11
  Capistrano::Configuration.new.tap do |c|
@@ -16,11 +17,12 @@ if DependencyHelper.capistrano2_present?
16
17
  c.dry_run = false
17
18
  end
18
19
  end
19
- before do
20
- Appsignal::Capistrano.tasks(capistrano_config)
21
- end
22
- around do |example|
23
- capture_stdout(out_stream) { example.run }
20
+ before { Appsignal::Capistrano.tasks(capistrano_config) }
21
+
22
+ def run
23
+ capture_stdout(out_stream) do
24
+ capistrano_config.find_and_execute_task('appsignal:deploy')
25
+ end
24
26
  end
25
27
 
26
28
  it "should have a deploy task" do
@@ -111,9 +113,7 @@ if DependencyHelper.capistrano2_present?
111
113
  end
112
114
  end
113
115
 
114
- after do
115
- capistrano_config.find_and_execute_task('appsignal:deploy')
116
- end
116
+ after { run }
117
117
  end
118
118
 
119
119
  describe "markers" do
@@ -131,9 +131,9 @@ if DependencyHelper.capistrano2_present?
131
131
  context "when active for this environment" do
132
132
  it "transmits marker" do
133
133
  stub_marker_request.to_return(:status => 200)
134
- capistrano_config.find_and_execute_task('appsignal:deploy')
134
+ run
135
135
 
136
- expect(out_stream.string).to include \
136
+ expect(output).to include \
137
137
  'Notifying AppSignal of deploy with: revision: 503ce0923ed177a3ce000005, user: batman',
138
138
  'AppSignal has been notified of this deploy!'
139
139
  end
@@ -142,11 +142,11 @@ if DependencyHelper.capistrano2_present?
142
142
  before do
143
143
  capistrano_config.set(:appsignal_revision, 'abc123')
144
144
  stub_marker_request(:revision => 'abc123').to_return(:status => 200)
145
- capistrano_config.find_and_execute_task('appsignal:deploy')
145
+ run
146
146
  end
147
147
 
148
148
  it "transmits the overriden revision" do
149
- expect(out_stream.string).to include \
149
+ expect(output).to include \
150
150
  'Notifying AppSignal of deploy with: revision: abc123, user: batman',
151
151
  'AppSignal has been notified of this deploy!'
152
152
  end
@@ -155,11 +155,10 @@ if DependencyHelper.capistrano2_present?
155
155
  context "with failed request" do
156
156
  before do
157
157
  stub_marker_request.to_return(:status => 500)
158
- capistrano_config.find_and_execute_task('appsignal:deploy')
158
+ run
159
159
  end
160
160
 
161
161
  it "does not transmit marker" do
162
- output = out_stream.string
163
162
  expect(output).to include \
164
163
  'Notifying AppSignal of deploy with: revision: 503ce0923ed177a3ce000005, user: batman',
165
164
  'Something went wrong while trying to notify AppSignal:'
@@ -170,11 +169,11 @@ if DependencyHelper.capistrano2_present?
170
169
  context "when dry run" do
171
170
  before do
172
171
  capistrano_config.dry_run = true
173
- capistrano_config.find_and_execute_task('appsignal:deploy')
172
+ run
174
173
  end
175
174
 
176
175
  it "does not transmit marker" do
177
- expect(out_stream.string).to include \
176
+ expect(output).to include \
178
177
  'Dry run: AppSignal deploy marker not actually sent.'
179
178
  end
180
179
  end
@@ -183,11 +182,11 @@ if DependencyHelper.capistrano2_present?
183
182
  context "when not active for this environment" do
184
183
  before do
185
184
  capistrano_config.set(:rails_env, 'nonsense')
186
- capistrano_config.find_and_execute_task('appsignal:deploy')
185
+ run
187
186
  end
188
187
 
189
188
  it "does not transmit marker" do
190
- expect(out_stream.string).to include \
189
+ expect(output).to include \
191
190
  "Not notifying of deploy, config is not active for environment: nonsense"
192
191
  end
193
192
  end
@@ -7,7 +7,8 @@ if DependencyHelper.capistrano3_present?
7
7
 
8
8
  describe "Capistrano 3 integration" do
9
9
  let(:config) { project_fixture_config }
10
- let(:out_stream) { StringIO.new }
10
+ let(:out_stream) { std_stream }
11
+ let(:output) { out_stream.read }
11
12
  let(:logger) { Logger.new(out_stream) }
12
13
  let!(:capistrano_config) do
13
14
  Capistrano::Configuration.reset!
@@ -21,11 +22,12 @@ if DependencyHelper.capistrano3_present?
21
22
  c.set(:current_revision, '503ce0923ed177a3ce000005')
22
23
  end
23
24
  end
24
- before do
25
- Rake::Task['appsignal:deploy'].reenable
26
- end
27
- around do |example|
28
- capture_std_streams(out_stream, out_stream) { example.run }
25
+ before { Rake::Task['appsignal:deploy'].reenable }
26
+
27
+ def run
28
+ capture_std_streams(out_stream, out_stream) do
29
+ invoke('appsignal:deploy')
30
+ end
29
31
  end
30
32
 
31
33
  it "should have a deploy task" do
@@ -112,9 +114,7 @@ if DependencyHelper.capistrano3_present?
112
114
  end
113
115
  end
114
116
 
115
- after do
116
- invoke('appsignal:deploy')
117
- end
117
+ after { run }
118
118
  end
119
119
 
120
120
  describe "markers" do
@@ -132,9 +132,9 @@ if DependencyHelper.capistrano3_present?
132
132
  context "when active for this environment" do
133
133
  it "transmits marker" do
134
134
  stub_marker_request.to_return(:status => 200)
135
- invoke('appsignal:deploy')
135
+ run
136
136
 
137
- expect(out_stream.string).to include \
137
+ expect(output).to include \
138
138
  'Notifying AppSignal of deploy with: revision: 503ce0923ed177a3ce000005, user: batman',
139
139
  'AppSignal has been notified of this deploy!'
140
140
  end
@@ -143,11 +143,11 @@ if DependencyHelper.capistrano3_present?
143
143
  before do
144
144
  capistrano_config.set(:appsignal_revision, 'abc123')
145
145
  stub_marker_request(:revision => 'abc123').to_return(:status => 200)
146
- invoke('appsignal:deploy')
146
+ run
147
147
  end
148
148
 
149
149
  it "transmits the overriden revision" do
150
- expect(out_stream.string).to include \
150
+ expect(output).to include \
151
151
  'Notifying AppSignal of deploy with: revision: abc123, user: batman',
152
152
  'AppSignal has been notified of this deploy!'
153
153
  end
@@ -156,11 +156,10 @@ if DependencyHelper.capistrano3_present?
156
156
  context "with failed request" do
157
157
  before do
158
158
  stub_marker_request.to_return(:status => 500)
159
- invoke('appsignal:deploy')
159
+ run
160
160
  end
161
161
 
162
162
  it "does not transmit marker" do
163
- output = out_stream.string
164
163
  expect(output).to include \
165
164
  'Notifying AppSignal of deploy with: revision: 503ce0923ed177a3ce000005, user: batman',
166
165
  'Something went wrong while trying to notify AppSignal:'
@@ -172,11 +171,11 @@ if DependencyHelper.capistrano3_present?
172
171
  context "when not active for this environment" do
173
172
  before do
174
173
  capistrano_config.set(:rails_env, 'nonsense')
175
- invoke('appsignal:deploy')
174
+ run
176
175
  end
177
176
 
178
177
  it "should not send deploy marker" do
179
- expect(out_stream.string).to include \
178
+ expect(output).to include \
180
179
  "Not notifying of deploy, config is not active for environment: nonsense"
181
180
  end
182
181
  end
@@ -4,8 +4,9 @@ describe Appsignal::CLI::Demo do
4
4
  include CLIHelpers
5
5
 
6
6
  let(:options) { {} }
7
- let(:out_stream) { StringIO.new }
8
- let(:output) { out_stream.string }
7
+ let(:out_stream) { std_stream }
8
+ let(:output) { out_stream.read }
9
+ before(:all) { Appsignal.stop }
9
10
  before do
10
11
  ENV.delete("APPSIGNAL_APP_ENV")
11
12
  ENV.delete("RAILS_ENV")
@@ -13,7 +14,6 @@ describe Appsignal::CLI::Demo do
13
14
  stub_api_request config, "auth"
14
15
  end
15
16
  after { Appsignal.config = nil }
16
- around { |example| capture_stdout(out_stream) { example.run } }
17
17
 
18
18
  def run
19
19
  run_within_dir project_fixture_path
@@ -21,7 +21,7 @@ describe Appsignal::CLI::Demo do
21
21
 
22
22
  def run_within_dir(chdir)
23
23
  Dir.chdir chdir do
24
- run_cli("demo", options)
24
+ capture_stdout(out_stream) { run_cli("demo", options) }
25
25
  end
26
26
  end
27
27