appsignal 2.9.2.alpha.1 → 2.9.18.beta.2
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 +5 -5
- data/.github/ISSUE_TEMPLATE/bug_report.md +31 -0
- data/.github/ISSUE_TEMPLATE/chore.md +14 -0
- data/.gitignore +1 -2
- data/.rubocop.yml +3 -0
- data/.travis.yml +25 -27
- data/CHANGELOG.md +632 -535
- data/README.md +8 -3
- data/Rakefile +118 -122
- data/SUPPORT.md +16 -0
- data/appsignal.gemspec +14 -4
- data/build_matrix.yml +16 -8
- data/ext/Rakefile +2 -3
- data/ext/agent.yml +40 -37
- data/ext/base.rb +37 -14
- data/ext/extconf.rb +3 -4
- data/gemfiles/capistrano2.gemfile +5 -0
- data/gemfiles/capistrano3.gemfile +5 -0
- data/gemfiles/grape.gemfile +5 -0
- data/gemfiles/no_dependencies.gemfile +5 -0
- data/gemfiles/padrino.gemfile +5 -0
- data/gemfiles/que.gemfile +5 -0
- data/gemfiles/que_beta.gemfile +10 -0
- data/gemfiles/rails-3.2.gemfile +5 -0
- data/gemfiles/rails-4.0.gemfile +5 -0
- data/gemfiles/rails-4.1.gemfile +5 -0
- data/gemfiles/rails-4.2.gemfile +5 -0
- data/gemfiles/rails-6.0.gemfile +1 -1
- data/gemfiles/resque.gemfile +5 -0
- data/lib/appsignal.rb +1 -4
- data/lib/appsignal/cli/demo.rb +5 -2
- data/lib/appsignal/cli/diagnose/utils.rb +2 -0
- data/lib/appsignal/cli/install.rb +34 -10
- data/lib/appsignal/cli/notify_of_deploy.rb +10 -0
- data/lib/appsignal/config.rb +5 -2
- data/lib/appsignal/event_formatter/action_view/render_formatter.rb +10 -8
- data/lib/appsignal/helpers/instrumentation.rb +18 -9
- data/lib/appsignal/helpers/metrics.rb +0 -1
- data/lib/appsignal/hooks.rb +3 -1
- data/lib/appsignal/hooks/active_support_notifications.rb +2 -5
- data/lib/appsignal/hooks/puma.rb +15 -13
- data/lib/appsignal/hooks/sequel.rb +1 -1
- data/lib/appsignal/hooks/sidekiq.rb +33 -8
- data/lib/appsignal/integrations/que.rb +9 -8
- data/lib/appsignal/minutely.rb +38 -19
- data/lib/appsignal/transaction.rb +5 -0
- data/lib/appsignal/utils/rails_helper.rb +4 -0
- data/lib/appsignal/version.rb +1 -1
- data/lib/puma/plugin/appsignal.rb +26 -0
- data/spec/lib/appsignal/cli/diagnose/utils_spec.rb +40 -0
- data/spec/lib/appsignal/cli/install_spec.rb +51 -7
- data/spec/lib/appsignal/cli/notify_of_deploy_spec.rb +10 -0
- data/spec/lib/appsignal/config_spec.rb +13 -8
- data/spec/lib/appsignal/event_formatter/action_view/render_formatter_spec.rb +38 -28
- data/spec/lib/appsignal/hooks/active_support_notifications_spec.rb +104 -25
- data/spec/lib/appsignal/hooks/puma_spec.rb +69 -39
- data/spec/lib/appsignal/hooks/sidekiq_spec.rb +65 -3
- data/spec/lib/appsignal/hooks_spec.rb +4 -0
- data/spec/lib/appsignal/minutely_spec.rb +150 -88
- data/spec/lib/appsignal/transaction_spec.rb +27 -4
- data/spec/lib/appsignal_spec.rb +62 -11
- data/spec/lib/puma/appsignal_spec.rb +91 -0
- data/spec/support/{project_fixture → fixtures/projects/valid}/config/application.rb +0 -0
- data/spec/support/{project_fixture → fixtures/projects/valid}/config/appsignal.yml +0 -0
- data/spec/support/{project_fixture → fixtures/projects/valid}/config/environments/development.rb +0 -0
- data/spec/support/{project_fixture → fixtures/projects/valid}/config/environments/production.rb +0 -0
- data/spec/support/{project_fixture → fixtures/projects/valid}/config/environments/test.rb +0 -0
- data/spec/support/{project_fixture → fixtures/projects/valid}/log/.gitkeep +0 -0
- data/spec/support/helpers/config_helpers.rb +1 -1
- data/spec/support/helpers/wait_for_helper.rb +28 -0
- data/spec/support/mocks/mock_probe.rb +11 -0
- metadata +38 -30
- data/spec/support/fixtures/containers/cgroups/docker +0 -14
- data/spec/support/fixtures/containers/cgroups/docker_systemd +0 -8
- data/spec/support/fixtures/containers/cgroups/lxc +0 -10
- data/spec/support/fixtures/containers/cgroups/no_permission +0 -0
- data/spec/support/fixtures/containers/cgroups/none +0 -1
data/ext/Rakefile
CHANGED
|
@@ -15,14 +15,13 @@ task :default do
|
|
|
15
15
|
report["language"]["implementation"] = "jruby"
|
|
16
16
|
report["build"]["library_type"] = library_type
|
|
17
17
|
next unless check_architecture
|
|
18
|
-
arch_config = AGENT_CONFIG["triples"][ARCH]
|
|
19
18
|
|
|
20
19
|
if local_build?
|
|
21
20
|
report["build"]["source"] = "local"
|
|
22
21
|
else
|
|
23
|
-
archive = download_archive(
|
|
22
|
+
archive = download_archive(library_type)
|
|
24
23
|
next unless archive
|
|
25
|
-
next unless verify_archive(archive,
|
|
24
|
+
next unless verify_archive(archive, library_type)
|
|
26
25
|
unarchive(archive)
|
|
27
26
|
end
|
|
28
27
|
successful_installation
|
data/ext/agent.yml
CHANGED
|
@@ -1,67 +1,70 @@
|
|
|
1
1
|
---
|
|
2
|
-
version:
|
|
2
|
+
version: c348132
|
|
3
|
+
mirrors:
|
|
4
|
+
- https://appsignal-agent-releases.global.ssl.fastly.net
|
|
5
|
+
- https://d135dj0rjqvssy.cloudfront.net
|
|
3
6
|
triples:
|
|
4
7
|
x86_64-darwin:
|
|
5
8
|
static:
|
|
6
|
-
checksum:
|
|
7
|
-
|
|
9
|
+
checksum: cb287c8e2072fe5b8cf14449bd6892989c392d0c651ce339895ae0302cb69785
|
|
10
|
+
filename: appsignal-x86_64-darwin-all-static.tar.gz
|
|
8
11
|
dynamic:
|
|
9
|
-
checksum:
|
|
10
|
-
|
|
12
|
+
checksum: af1ed2e9d29859ffbfc8e6903e4c51764dee94d7b4877ca8d30270b6f133a10f
|
|
13
|
+
filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
|
|
11
14
|
universal-darwin:
|
|
12
15
|
static:
|
|
13
|
-
checksum:
|
|
14
|
-
|
|
16
|
+
checksum: cb287c8e2072fe5b8cf14449bd6892989c392d0c651ce339895ae0302cb69785
|
|
17
|
+
filename: appsignal-x86_64-darwin-all-static.tar.gz
|
|
15
18
|
dynamic:
|
|
16
|
-
checksum:
|
|
17
|
-
|
|
19
|
+
checksum: af1ed2e9d29859ffbfc8e6903e4c51764dee94d7b4877ca8d30270b6f133a10f
|
|
20
|
+
filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
|
|
18
21
|
i686-linux:
|
|
19
22
|
static:
|
|
20
|
-
checksum:
|
|
21
|
-
|
|
23
|
+
checksum: 2c3bcd102592bf38fbdb27e7c70502dccbe54a0dc2739a9d54aaa694fcfb41fb
|
|
24
|
+
filename: appsignal-i686-linux-all-static.tar.gz
|
|
22
25
|
dynamic:
|
|
23
|
-
checksum:
|
|
24
|
-
|
|
26
|
+
checksum: 1c037b8370b755d706340e25d3e4b2f4acb279dd03873cc53bcf0a6ec0832653
|
|
27
|
+
filename: appsignal-i686-linux-all-dynamic.tar.gz
|
|
25
28
|
x86-linux:
|
|
26
29
|
static:
|
|
27
|
-
checksum:
|
|
28
|
-
|
|
30
|
+
checksum: 2c3bcd102592bf38fbdb27e7c70502dccbe54a0dc2739a9d54aaa694fcfb41fb
|
|
31
|
+
filename: appsignal-i686-linux-all-static.tar.gz
|
|
29
32
|
dynamic:
|
|
30
|
-
checksum:
|
|
31
|
-
|
|
33
|
+
checksum: 1c037b8370b755d706340e25d3e4b2f4acb279dd03873cc53bcf0a6ec0832653
|
|
34
|
+
filename: appsignal-i686-linux-all-dynamic.tar.gz
|
|
32
35
|
i686-linux-musl:
|
|
33
36
|
static:
|
|
34
|
-
checksum:
|
|
35
|
-
|
|
37
|
+
checksum: 0add9eed4452feda7fc5e1bbd0acdff32c353e4ea0b5d527959df57deb1bdcb2
|
|
38
|
+
filename: appsignal-i686-linux-musl-all-static.tar.gz
|
|
36
39
|
x86-linux-musl:
|
|
37
40
|
static:
|
|
38
|
-
checksum:
|
|
39
|
-
|
|
41
|
+
checksum: 0add9eed4452feda7fc5e1bbd0acdff32c353e4ea0b5d527959df57deb1bdcb2
|
|
42
|
+
filename: appsignal-i686-linux-musl-all-static.tar.gz
|
|
40
43
|
x86_64-linux:
|
|
41
44
|
static:
|
|
42
|
-
checksum:
|
|
43
|
-
|
|
45
|
+
checksum: d11221c127c00128da16b419c503281407e429c0ea6f5bfe1691640b8e995e4e
|
|
46
|
+
filename: appsignal-x86_64-linux-all-static.tar.gz
|
|
44
47
|
dynamic:
|
|
45
|
-
checksum:
|
|
46
|
-
|
|
48
|
+
checksum: 6869ab461fde55487d55805c396d55f36cb881998556f44236035b949939b0af
|
|
49
|
+
filename: appsignal-x86_64-linux-all-dynamic.tar.gz
|
|
47
50
|
x86_64-linux-musl:
|
|
48
51
|
static:
|
|
49
|
-
checksum:
|
|
50
|
-
|
|
52
|
+
checksum: 7ce44dc23c578933ca37a79d244bc367fdc2438408c2a61558adb92bcfebb1fa
|
|
53
|
+
filename: appsignal-x86_64-linux-musl-all-static.tar.gz
|
|
51
54
|
dynamic:
|
|
52
|
-
checksum:
|
|
53
|
-
|
|
55
|
+
checksum: 78d98f468e3a12cc09baff9e68bc4d9cd3b79f4a3bbe744036bff685415546a4
|
|
56
|
+
filename: appsignal-x86_64-linux-musl-all-dynamic.tar.gz
|
|
54
57
|
x86_64-freebsd:
|
|
55
58
|
static:
|
|
56
|
-
checksum:
|
|
57
|
-
|
|
59
|
+
checksum: df5f8b61e6ecca40f349cf5c83d5f37f031850d367793dee90dc56f13974431d
|
|
60
|
+
filename: appsignal-x86_64-freebsd-all-static.tar.gz
|
|
58
61
|
dynamic:
|
|
59
|
-
checksum:
|
|
60
|
-
|
|
62
|
+
checksum: 30d0303e97386014640c5b8194b777a5741e08ab5497ba58a7d8229bd4890fc5
|
|
63
|
+
filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
|
|
61
64
|
amd64-freebsd:
|
|
62
65
|
static:
|
|
63
|
-
checksum:
|
|
64
|
-
|
|
66
|
+
checksum: df5f8b61e6ecca40f349cf5c83d5f37f031850d367793dee90dc56f13974431d
|
|
67
|
+
filename: appsignal-x86_64-freebsd-all-static.tar.gz
|
|
65
68
|
dynamic:
|
|
66
|
-
checksum:
|
|
67
|
-
|
|
69
|
+
checksum: 30d0303e97386014640c5b8194b777a5741e08ab5497ba58a7d8229bd4890fc5
|
|
70
|
+
filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
|
data/ext/base.rb
CHANGED
|
@@ -10,8 +10,9 @@ require File.expand_path("../../lib/appsignal/system.rb", __FILE__)
|
|
|
10
10
|
EXT_PATH = File.expand_path("..", __FILE__).freeze
|
|
11
11
|
AGENT_CONFIG = YAML.load(File.read(File.join(EXT_PATH, "agent.yml"))).freeze
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
ARCH
|
|
13
|
+
AGENT_PLATFORM = Appsignal::System.agent_platform
|
|
14
|
+
ARCH = "#{RbConfig::CONFIG["host_cpu"]}-#{AGENT_PLATFORM}".freeze
|
|
15
|
+
ARCH_CONFIG = AGENT_CONFIG["triples"][ARCH].freeze
|
|
15
16
|
CA_CERT_PATH = File.join(EXT_PATH, "../resources/cacert.pem").freeze
|
|
16
17
|
|
|
17
18
|
def ext_path(path)
|
|
@@ -35,9 +36,9 @@ def report
|
|
|
35
36
|
},
|
|
36
37
|
"build" => {
|
|
37
38
|
"time" => Time.now.utc,
|
|
38
|
-
"package_path" => File.dirname(
|
|
39
|
+
"package_path" => File.dirname(EXT_PATH),
|
|
39
40
|
"architecture" => rbconfig["host_cpu"],
|
|
40
|
-
"target" =>
|
|
41
|
+
"target" => AGENT_PLATFORM,
|
|
41
42
|
"musl_override" => Appsignal::System.force_musl_build?,
|
|
42
43
|
"dependencies" => {},
|
|
43
44
|
"flags" => {}
|
|
@@ -102,31 +103,53 @@ def check_architecture
|
|
|
102
103
|
end
|
|
103
104
|
end
|
|
104
105
|
|
|
105
|
-
def download_archive(
|
|
106
|
+
def download_archive(type)
|
|
106
107
|
report["build"]["source"] = "remote"
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
report["download"]["download_url"] = download_url
|
|
110
|
-
open(download_url, :ssl_ca_cert => CA_CERT_PATH)
|
|
111
|
-
else
|
|
108
|
+
|
|
109
|
+
unless ARCH_CONFIG.key?(type)
|
|
112
110
|
abort_installation(
|
|
113
111
|
"AppSignal currently does not support your system. " \
|
|
114
|
-
"Expected config for architecture '#{
|
|
112
|
+
"Expected config for architecture '#{arch}' and package type '#{type}', but none found. " \
|
|
115
113
|
"For a full list of supported systems visit: " \
|
|
116
114
|
"https://docs.appsignal.com/support/operating-systems.html"
|
|
117
115
|
)
|
|
116
|
+
return
|
|
118
117
|
end
|
|
118
|
+
|
|
119
|
+
version = AGENT_CONFIG["version"]
|
|
120
|
+
filename = ARCH_CONFIG[type]["filename"]
|
|
121
|
+
attempted_mirror_urls = []
|
|
122
|
+
|
|
123
|
+
AGENT_CONFIG["mirrors"].each do |mirror|
|
|
124
|
+
download_url = [mirror, version, filename].join("/")
|
|
125
|
+
attempted_mirror_urls << download_url
|
|
126
|
+
report["download"]["download_url"] = download_url
|
|
127
|
+
|
|
128
|
+
begin
|
|
129
|
+
return open(download_url, :ssl_ca_cert => CA_CERT_PATH)
|
|
130
|
+
rescue
|
|
131
|
+
next
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
attempted_mirror_urls_mapped = attempted_mirror_urls.map { |mirror| "- #{mirror}" }
|
|
136
|
+
abort_installation(
|
|
137
|
+
"Could not download archive from any of our mirrors. " \
|
|
138
|
+
"Attempted to download the archive from the following urls:\n" \
|
|
139
|
+
"#{attempted_mirror_urls_mapped.join("\n")}\n" \
|
|
140
|
+
"Please make sure your network allows access to any of these mirrors."
|
|
141
|
+
)
|
|
119
142
|
end
|
|
120
143
|
|
|
121
|
-
def verify_archive(archive,
|
|
122
|
-
if Digest::SHA256.hexdigest(archive.read) ==
|
|
144
|
+
def verify_archive(archive, type)
|
|
145
|
+
if Digest::SHA256.hexdigest(archive.read) == ARCH_CONFIG[type]["checksum"]
|
|
123
146
|
report["download"]["checksum"] = "verified"
|
|
124
147
|
true
|
|
125
148
|
else
|
|
126
149
|
report["download"]["checksum"] = "invalid"
|
|
127
150
|
abort_installation(
|
|
128
151
|
"Checksum of downloaded archive could not be verified: " \
|
|
129
|
-
"Expected '#{
|
|
152
|
+
"Expected '#{ARCH_CONFIG[type]["checksum"]}', got '#{checksum}'."
|
|
130
153
|
)
|
|
131
154
|
end
|
|
132
155
|
end
|
data/ext/extconf.rb
CHANGED
|
@@ -11,21 +11,20 @@ def install
|
|
|
11
11
|
report["language"]["implementation"] = "ruby"
|
|
12
12
|
report["build"]["library_type"] = library_type
|
|
13
13
|
return unless check_architecture
|
|
14
|
-
arch_config = AGENT_CONFIG["triples"][ARCH]
|
|
15
14
|
|
|
16
15
|
if local_build?
|
|
17
16
|
report["build"]["source"] = "local"
|
|
18
17
|
else
|
|
19
|
-
archive = download_archive(
|
|
18
|
+
archive = download_archive(library_type)
|
|
20
19
|
return unless archive
|
|
21
|
-
return unless verify_archive(archive,
|
|
20
|
+
return unless verify_archive(archive, library_type)
|
|
22
21
|
unarchive(archive)
|
|
23
22
|
end
|
|
24
23
|
|
|
25
24
|
is_linux_system = [
|
|
26
25
|
Appsignal::System::LINUX_TARGET,
|
|
27
26
|
Appsignal::System::MUSL_TARGET
|
|
28
|
-
].include?(
|
|
27
|
+
].include?(AGENT_PLATFORM)
|
|
29
28
|
|
|
30
29
|
require "mkmf"
|
|
31
30
|
link_libraries if is_linux_system
|
|
@@ -3,5 +3,10 @@ source 'https://rubygems.org'
|
|
|
3
3
|
gem 'capistrano', '< 3.0'
|
|
4
4
|
gem 'net-ssh', '2.9.2'
|
|
5
5
|
gem 'rack', '~> 1.6'
|
|
6
|
+
if Gem::Version.new(RUBY_VERSION) <= Gem::Version.new("2.1.0")
|
|
7
|
+
gem 'public_suffix', "~> 2.0.0"
|
|
8
|
+
else
|
|
9
|
+
gem 'public_suffix'
|
|
10
|
+
end
|
|
6
11
|
|
|
7
12
|
gemspec :path => '../'
|
|
@@ -4,5 +4,10 @@ gem 'capistrano', '~> 3.0'
|
|
|
4
4
|
gem 'i18n', '~> 1.2.0'
|
|
5
5
|
gem 'net-ssh', '2.9.2'
|
|
6
6
|
gem 'rack', '~> 1.6'
|
|
7
|
+
if Gem::Version.new(RUBY_VERSION) <= Gem::Version.new("2.1.0")
|
|
8
|
+
gem 'public_suffix', "~> 2.0.0"
|
|
9
|
+
else
|
|
10
|
+
gem 'public_suffix'
|
|
11
|
+
end
|
|
7
12
|
|
|
8
13
|
gemspec :path => '../'
|
data/gemfiles/grape.gemfile
CHANGED
|
@@ -3,5 +3,10 @@ source 'https://rubygems.org'
|
|
|
3
3
|
gem 'grape', '0.14.0'
|
|
4
4
|
gem 'rack', '~> 1.6'
|
|
5
5
|
gem 'activesupport', '~> 4.2'
|
|
6
|
+
if Gem::Version.new(RUBY_VERSION) <= Gem::Version.new("2.1.0")
|
|
7
|
+
gem 'public_suffix', "~> 2.0.0"
|
|
8
|
+
else
|
|
9
|
+
gem 'public_suffix'
|
|
10
|
+
end
|
|
6
11
|
|
|
7
12
|
gemspec :path => '../'
|
data/gemfiles/padrino.gemfile
CHANGED
|
@@ -3,5 +3,10 @@ source 'https://rubygems.org'
|
|
|
3
3
|
gem 'padrino', '~> 0.13.0'
|
|
4
4
|
gem 'rack', '~> 1.6'
|
|
5
5
|
gem 'activesupport', '~> 4.2'
|
|
6
|
+
if Gem::Version.new(RUBY_VERSION) <= Gem::Version.new("2.1.0")
|
|
7
|
+
gem 'public_suffix', "~> 2.0.0"
|
|
8
|
+
else
|
|
9
|
+
gem 'public_suffix'
|
|
10
|
+
end
|
|
6
11
|
|
|
7
12
|
gemspec :path => '../'
|
data/gemfiles/que.gemfile
CHANGED
data/gemfiles/rails-3.2.gemfile
CHANGED
data/gemfiles/rails-4.0.gemfile
CHANGED
data/gemfiles/rails-4.1.gemfile
CHANGED
data/gemfiles/rails-4.2.gemfile
CHANGED
data/gemfiles/rails-6.0.gemfile
CHANGED
data/gemfiles/resque.gemfile
CHANGED
|
@@ -10,3 +10,8 @@ gemspec :path => '../'
|
|
|
10
10
|
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.1.0")
|
|
11
11
|
gem 'nokogiri', '~> 1.6.0'
|
|
12
12
|
end
|
|
13
|
+
if Gem::Version.new(RUBY_VERSION) <= Gem::Version.new("2.1.0")
|
|
14
|
+
gem 'public_suffix', "~> 2.0.0"
|
|
15
|
+
else
|
|
16
|
+
gem 'public_suffix'
|
|
17
|
+
end
|
data/lib/appsignal.rb
CHANGED
|
@@ -135,10 +135,7 @@ module Appsignal
|
|
|
135
135
|
Appsignal::Extension.install_allocation_event_hook
|
|
136
136
|
end
|
|
137
137
|
|
|
138
|
-
if config[:enable_gc_instrumentation]
|
|
139
|
-
GC::Profiler.enable
|
|
140
|
-
Appsignal::Minutely.register_garbage_collection_probe
|
|
141
|
-
end
|
|
138
|
+
GC::Profiler.enable if config[:enable_gc_instrumentation]
|
|
142
139
|
|
|
143
140
|
Appsignal::Minutely.start if config[:enable_minutely_probes]
|
|
144
141
|
else
|
data/lib/appsignal/cli/demo.rb
CHANGED
|
@@ -54,8 +54,11 @@ module Appsignal
|
|
|
54
54
|
puts "Demonstration sample data sent!"
|
|
55
55
|
puts "It may take about a minute for the data to appear on https://appsignal.com/accounts"
|
|
56
56
|
else
|
|
57
|
-
puts "
|
|
58
|
-
puts "Please use
|
|
57
|
+
puts "\nError: Unable to start the AppSignal agent and send data to AppSignal.com."
|
|
58
|
+
puts "Please use the diagnose command (https://docs.appsignal.com/ruby/command-line/diagnose.html) to debug your configuration:"
|
|
59
|
+
puts
|
|
60
|
+
puts " bundle exec appsignal diagnose --environment=production"
|
|
61
|
+
puts
|
|
59
62
|
exit 1
|
|
60
63
|
end
|
|
61
64
|
end
|
|
@@ -6,12 +6,14 @@ module Appsignal
|
|
|
6
6
|
passwd_struct = Etc.getpwuid(uid)
|
|
7
7
|
return unless passwd_struct
|
|
8
8
|
passwd_struct.name
|
|
9
|
+
rescue ArgumentError # rubocop:disable Lint/HandleExceptions
|
|
9
10
|
end
|
|
10
11
|
|
|
11
12
|
def self.group_for_gid(gid)
|
|
12
13
|
passwd_struct = Etc.getgrgid(gid)
|
|
13
14
|
return unless passwd_struct
|
|
14
15
|
passwd_struct.name
|
|
16
|
+
rescue ArgumentError # rubocop:disable Lint/HandleExceptions
|
|
15
17
|
end
|
|
16
18
|
|
|
17
19
|
def self.read_file_content(path, bytes_to_read)
|
|
@@ -75,18 +75,39 @@ module Appsignal
|
|
|
75
75
|
def install_for_rails(config)
|
|
76
76
|
puts "Installing for Ruby on Rails"
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
name_overwritten = configure_rails_app_name(config)
|
|
79
|
+
configure(config, rails_environments, name_overwritten)
|
|
80
|
+
done_notice
|
|
81
|
+
end
|
|
79
82
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
def configure_rails_app_name(config)
|
|
84
|
+
loaded =
|
|
85
|
+
begin
|
|
86
|
+
load Appsignal::Utils::RailsHelper.application_config_path
|
|
87
|
+
true
|
|
88
|
+
rescue LoadError, StandardError
|
|
89
|
+
false
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
name_overwritten = false
|
|
93
|
+
if loaded
|
|
94
|
+
config[:name] = Appsignal::Utils::RailsHelper.detected_rails_app_name
|
|
95
|
+
puts
|
|
96
|
+
name_overwritten = yes_or_no(
|
|
97
|
+
" Your app's name is: '#{config[:name]}' \n " \
|
|
98
|
+
"Do you want to change how this is displayed in AppSignal? " \
|
|
99
|
+
"(y/n): "
|
|
100
|
+
)
|
|
101
|
+
if name_overwritten
|
|
102
|
+
config[:name] = required_input(" Choose app's display name: ")
|
|
103
|
+
puts
|
|
104
|
+
end
|
|
105
|
+
else
|
|
106
|
+
puts " Unable to automatically detect your Rails app's name."
|
|
107
|
+
config[:name] = required_input(" Choose your app's display name for AppSignal.com: ")
|
|
85
108
|
puts
|
|
86
109
|
end
|
|
87
|
-
|
|
88
|
-
configure(config, rails_environments, name_overwritten)
|
|
89
|
-
done_notice
|
|
110
|
+
name_overwritten
|
|
90
111
|
end
|
|
91
112
|
|
|
92
113
|
def install_for_sinatra(config)
|
|
@@ -227,7 +248,10 @@ module Appsignal
|
|
|
227
248
|
|
|
228
249
|
def installed_frameworks
|
|
229
250
|
[].tap do |out|
|
|
230
|
-
|
|
251
|
+
if framework_available?("rails") &&
|
|
252
|
+
File.exist?(Appsignal::Utils::RailsHelper.application_config_path)
|
|
253
|
+
out << :rails
|
|
254
|
+
end
|
|
231
255
|
out << :sinatra if framework_available? "sinatra"
|
|
232
256
|
out << :padrino if framework_available? "padrino"
|
|
233
257
|
out << :grape if framework_available? "grape"
|