appsignal 3.2.2 → 3.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b85a454d1a7609add364698fe5407bfe438db4d4f15966ec5cb0ada9e015e11
4
- data.tar.gz: 24fcedd7b116b6a017e247c1e049b1ad575d789372894504aaa80270b6cabfd0
3
+ metadata.gz: d701cc0bc82c45e4aef51b6851ed978fb39a952c480e00de135e4c5c2946e5b7
4
+ data.tar.gz: 9b7eebe7a6a535445a6baed7ddffe8f779d373d6936fb7de4bb000c7a0bd3c3d
5
5
  SHA512:
6
- metadata.gz: 5fd91fd5250d78ab967151497a5a22dd017070af9a31cfb87de396755b88ae02eb12fc1844dd6cbe63a934c4896b98ce86c4770b0523a6b8ea76bfdb3a152e31
7
- data.tar.gz: ceeac6a2e2b545b64e6f820b1acc34e0d9465500f2abf7d050c004120c3845bead373bbfcf777f725d488ec589e57791f059879e64b5f8e6af35581d96b06811
6
+ metadata.gz: 9d1277d10dad273ca39aaaf3ed1a95d7c4d42d4c07011205ca7309597f3043d1307488dc4e38f3dbe4d6b929134fc6b25296f94b1a96cab27c6d349f14597720
7
+ data.tar.gz: 44ea1982e6b2319c0a469d128cecaf1ab91bc21ebbaabd50d6a3c9eb082dbafea62145e204e419ca4f0180367788ae3bddb019f00411d7bb83f87f022de901b5
data/.rubocop_todo.yml CHANGED
@@ -88,6 +88,7 @@ Style/Alias:
88
88
  Style/ClassAndModuleChildren:
89
89
  Exclude:
90
90
  - 'lib/appsignal/integrations/padrino.rb'
91
+ - 'lib/appsignal/integrations/hanami.rb'
91
92
 
92
93
  # Offense count: 1
93
94
  Style/DoubleNegation:
@@ -24,12 +24,6 @@ global_job_config:
24
24
  commands:
25
25
  - checkout
26
26
  - rm -f $HOME/.rbenv/plugins/rbenv-gem-rehash/etc/rbenv.d/exec/~gem-rehash.bash
27
- - |
28
- if [ -n "$_LIBYAML" ]; then
29
- install-package --update libyaml-dev
30
- else
31
- echo Skipping libyaml-dev install
32
- fi
33
27
  - |
34
28
  if [ -n "$_C_VERSION" ]; then
35
29
  sem-version c $_C_VERSION
@@ -349,9 +343,9 @@ blocks:
349
343
  - name: BUNDLE_GEMFILE
350
344
  value: gemfiles/no_dependencies.gemfile
351
345
  - name: _RUBYGEMS_VERSION
352
- value: latest
346
+ value: 3.3.26
353
347
  - name: _BUNDLER_VERSION
354
- value: latest
348
+ value: 2.3.26
355
349
  commands:
356
350
  - "./support/bundler_wrapper exec rake test"
357
351
  - "./support/bundler_wrapper exec rake test:failure"
@@ -1368,6 +1362,24 @@ blocks:
1368
1362
  value: latest
1369
1363
  commands:
1370
1364
  - "./support/bundler_wrapper exec rake test"
1365
+ - name: Ruby 3.0.4 for hanami
1366
+ env_vars:
1367
+ - *2
1368
+ - *3
1369
+ - *4
1370
+ - *5
1371
+ - name: RUBY_VERSION
1372
+ value: 3.0.4
1373
+ - name: GEMSET
1374
+ value: hanami
1375
+ - name: BUNDLE_GEMFILE
1376
+ value: gemfiles/hanami.gemfile
1377
+ - name: _RUBYGEMS_VERSION
1378
+ value: latest
1379
+ - name: _BUNDLER_VERSION
1380
+ value: latest
1381
+ commands:
1382
+ - "./support/bundler_wrapper exec rake test"
1371
1383
  - name: Ruby 3.0.4 for http5
1372
1384
  env_vars:
1373
1385
  - *2
@@ -1707,6 +1719,24 @@ blocks:
1707
1719
  value: latest
1708
1720
  commands:
1709
1721
  - "./support/bundler_wrapper exec rake test"
1722
+ - name: Ruby 3.1.2 for hanami
1723
+ env_vars:
1724
+ - *2
1725
+ - *3
1726
+ - *4
1727
+ - *5
1728
+ - name: RUBY_VERSION
1729
+ value: 3.1.2
1730
+ - name: GEMSET
1731
+ value: hanami
1732
+ - name: BUNDLE_GEMFILE
1733
+ value: gemfiles/hanami.gemfile
1734
+ - name: _RUBYGEMS_VERSION
1735
+ value: latest
1736
+ - name: _BUNDLER_VERSION
1737
+ value: latest
1738
+ commands:
1739
+ - "./support/bundler_wrapper exec rake test"
1710
1740
  - name: Ruby 3.1.2 for http5
1711
1741
  env_vars:
1712
1742
  - *2
@@ -1923,7 +1953,7 @@ blocks:
1923
1953
  value: latest
1924
1954
  commands:
1925
1955
  - "./support/bundler_wrapper exec rake test"
1926
- - name: Ruby 3.2.0-preview3
1956
+ - name: Ruby 3.2.0
1927
1957
  dependencies:
1928
1958
  - Validation
1929
1959
  task:
@@ -1939,14 +1969,14 @@ blocks:
1939
1969
  - "./support/bundler_wrapper exec rake extension:install"
1940
1970
  epilogue: *1
1941
1971
  jobs:
1942
- - name: Ruby 3.2.0-preview3 for no_dependencies
1972
+ - name: Ruby 3.2.0 for no_dependencies
1943
1973
  env_vars:
1944
1974
  - *2
1945
1975
  - *3
1946
1976
  - *4
1947
1977
  - *5
1948
1978
  - name: RUBY_VERSION
1949
- value: 3.2.0-preview3
1979
+ value: 3.2.0
1950
1980
  - name: GEMSET
1951
1981
  value: no_dependencies
1952
1982
  - name: BUNDLE_GEMFILE
@@ -1955,15 +1985,12 @@ blocks:
1955
1985
  value: latest
1956
1986
  - name: _BUNDLER_VERSION
1957
1987
  value: latest
1958
- - &6
1959
- name: _LIBYAML
1960
- value: '1'
1961
1988
  commands:
1962
1989
  - "./support/bundler_wrapper exec rake test"
1963
1990
  - "./support/bundler_wrapper exec rake test:failure"
1964
- - name: Ruby 3.2.0-preview3 - Gems
1991
+ - name: Ruby 3.2.0 - Gems
1965
1992
  dependencies:
1966
- - Ruby 3.2.0-preview3
1993
+ - Ruby 3.2.0
1967
1994
  task:
1968
1995
  prologue:
1969
1996
  commands:
@@ -1977,14 +2004,14 @@ blocks:
1977
2004
  - "./support/bundler_wrapper exec rake extension:install"
1978
2005
  epilogue: *1
1979
2006
  jobs:
1980
- - name: Ruby 3.2.0-preview3 for capistrano2
2007
+ - name: Ruby 3.2.0 for capistrano2
1981
2008
  env_vars:
1982
2009
  - *2
1983
2010
  - *3
1984
2011
  - *4
1985
2012
  - *5
1986
2013
  - name: RUBY_VERSION
1987
- value: 3.2.0-preview3
2014
+ value: 3.2.0
1988
2015
  - name: GEMSET
1989
2016
  value: capistrano2
1990
2017
  - name: BUNDLE_GEMFILE
@@ -1993,17 +2020,16 @@ blocks:
1993
2020
  value: latest
1994
2021
  - name: _BUNDLER_VERSION
1995
2022
  value: latest
1996
- - *6
1997
2023
  commands:
1998
2024
  - "./support/bundler_wrapper exec rake test"
1999
- - name: Ruby 3.2.0-preview3 for capistrano3
2025
+ - name: Ruby 3.2.0 for capistrano3
2000
2026
  env_vars:
2001
2027
  - *2
2002
2028
  - *3
2003
2029
  - *4
2004
2030
  - *5
2005
2031
  - name: RUBY_VERSION
2006
- value: 3.2.0-preview3
2032
+ value: 3.2.0
2007
2033
  - name: GEMSET
2008
2034
  value: capistrano3
2009
2035
  - name: BUNDLE_GEMFILE
@@ -2012,17 +2038,16 @@ blocks:
2012
2038
  value: latest
2013
2039
  - name: _BUNDLER_VERSION
2014
2040
  value: latest
2015
- - *6
2016
2041
  commands:
2017
2042
  - "./support/bundler_wrapper exec rake test"
2018
- - name: Ruby 3.2.0-preview3 for grape
2043
+ - name: Ruby 3.2.0 for grape
2019
2044
  env_vars:
2020
2045
  - *2
2021
2046
  - *3
2022
2047
  - *4
2023
2048
  - *5
2024
2049
  - name: RUBY_VERSION
2025
- value: 3.2.0-preview3
2050
+ value: 3.2.0
2026
2051
  - name: GEMSET
2027
2052
  value: grape
2028
2053
  - name: BUNDLE_GEMFILE
@@ -2031,17 +2056,34 @@ blocks:
2031
2056
  value: latest
2032
2057
  - name: _BUNDLER_VERSION
2033
2058
  value: latest
2034
- - *6
2035
2059
  commands:
2036
2060
  - "./support/bundler_wrapper exec rake test"
2037
- - name: Ruby 3.2.0-preview3 for http5
2061
+ - name: Ruby 3.2.0 for hanami
2062
+ env_vars:
2063
+ - *2
2064
+ - *3
2065
+ - *4
2066
+ - *5
2067
+ - name: RUBY_VERSION
2068
+ value: 3.2.0
2069
+ - name: GEMSET
2070
+ value: hanami
2071
+ - name: BUNDLE_GEMFILE
2072
+ value: gemfiles/hanami.gemfile
2073
+ - name: _RUBYGEMS_VERSION
2074
+ value: latest
2075
+ - name: _BUNDLER_VERSION
2076
+ value: latest
2077
+ commands:
2078
+ - "./support/bundler_wrapper exec rake test"
2079
+ - name: Ruby 3.2.0 for http5
2038
2080
  env_vars:
2039
2081
  - *2
2040
2082
  - *3
2041
2083
  - *4
2042
2084
  - *5
2043
2085
  - name: RUBY_VERSION
2044
- value: 3.2.0-preview3
2086
+ value: 3.2.0
2045
2087
  - name: GEMSET
2046
2088
  value: http5
2047
2089
  - name: BUNDLE_GEMFILE
@@ -2050,17 +2092,16 @@ blocks:
2050
2092
  value: latest
2051
2093
  - name: _BUNDLER_VERSION
2052
2094
  value: latest
2053
- - *6
2054
2095
  commands:
2055
2096
  - "./support/bundler_wrapper exec rake test"
2056
- - name: Ruby 3.2.0-preview3 for padrino
2097
+ - name: Ruby 3.2.0 for padrino
2057
2098
  env_vars:
2058
2099
  - *2
2059
2100
  - *3
2060
2101
  - *4
2061
2102
  - *5
2062
2103
  - name: RUBY_VERSION
2063
- value: 3.2.0-preview3
2104
+ value: 3.2.0
2064
2105
  - name: GEMSET
2065
2106
  value: padrino
2066
2107
  - name: BUNDLE_GEMFILE
@@ -2069,17 +2110,16 @@ blocks:
2069
2110
  value: latest
2070
2111
  - name: _BUNDLER_VERSION
2071
2112
  value: latest
2072
- - *6
2073
2113
  commands:
2074
2114
  - "./support/bundler_wrapper exec rake test"
2075
- - name: Ruby 3.2.0-preview3 for psych-3
2115
+ - name: Ruby 3.2.0 for psych-3
2076
2116
  env_vars:
2077
2117
  - *2
2078
2118
  - *3
2079
2119
  - *4
2080
2120
  - *5
2081
2121
  - name: RUBY_VERSION
2082
- value: 3.2.0-preview3
2122
+ value: 3.2.0
2083
2123
  - name: GEMSET
2084
2124
  value: psych-3
2085
2125
  - name: BUNDLE_GEMFILE
@@ -2088,17 +2128,16 @@ blocks:
2088
2128
  value: latest
2089
2129
  - name: _BUNDLER_VERSION
2090
2130
  value: latest
2091
- - *6
2092
2131
  commands:
2093
2132
  - "./support/bundler_wrapper exec rake test"
2094
- - name: Ruby 3.2.0-preview3 for psych-4
2133
+ - name: Ruby 3.2.0 for psych-4
2095
2134
  env_vars:
2096
2135
  - *2
2097
2136
  - *3
2098
2137
  - *4
2099
2138
  - *5
2100
2139
  - name: RUBY_VERSION
2101
- value: 3.2.0-preview3
2140
+ value: 3.2.0
2102
2141
  - name: GEMSET
2103
2142
  value: psych-4
2104
2143
  - name: BUNDLE_GEMFILE
@@ -2107,17 +2146,16 @@ blocks:
2107
2146
  value: latest
2108
2147
  - name: _BUNDLER_VERSION
2109
2148
  value: latest
2110
- - *6
2111
2149
  commands:
2112
2150
  - "./support/bundler_wrapper exec rake test"
2113
- - name: Ruby 3.2.0-preview3 for que
2151
+ - name: Ruby 3.2.0 for que
2114
2152
  env_vars:
2115
2153
  - *2
2116
2154
  - *3
2117
2155
  - *4
2118
2156
  - *5
2119
2157
  - name: RUBY_VERSION
2120
- value: 3.2.0-preview3
2158
+ value: 3.2.0
2121
2159
  - name: GEMSET
2122
2160
  value: que
2123
2161
  - name: BUNDLE_GEMFILE
@@ -2126,17 +2164,16 @@ blocks:
2126
2164
  value: latest
2127
2165
  - name: _BUNDLER_VERSION
2128
2166
  value: latest
2129
- - *6
2130
2167
  commands:
2131
2168
  - "./support/bundler_wrapper exec rake test"
2132
- - name: Ruby 3.2.0-preview3 for que_beta
2169
+ - name: Ruby 3.2.0 for que_beta
2133
2170
  env_vars:
2134
2171
  - *2
2135
2172
  - *3
2136
2173
  - *4
2137
2174
  - *5
2138
2175
  - name: RUBY_VERSION
2139
- value: 3.2.0-preview3
2176
+ value: 3.2.0
2140
2177
  - name: GEMSET
2141
2178
  value: que_beta
2142
2179
  - name: BUNDLE_GEMFILE
@@ -2145,17 +2182,16 @@ blocks:
2145
2182
  value: latest
2146
2183
  - name: _BUNDLER_VERSION
2147
2184
  value: latest
2148
- - *6
2149
2185
  commands:
2150
2186
  - "./support/bundler_wrapper exec rake test"
2151
- - name: Ruby 3.2.0-preview3 for rails-6.1
2187
+ - name: Ruby 3.2.0 for rails-6.1
2152
2188
  env_vars:
2153
2189
  - *2
2154
2190
  - *3
2155
2191
  - *4
2156
2192
  - *5
2157
2193
  - name: RUBY_VERSION
2158
- value: 3.2.0-preview3
2194
+ value: 3.2.0
2159
2195
  - name: GEMSET
2160
2196
  value: rails-6.1
2161
2197
  - name: BUNDLE_GEMFILE
@@ -2164,17 +2200,16 @@ blocks:
2164
2200
  value: latest
2165
2201
  - name: _BUNDLER_VERSION
2166
2202
  value: latest
2167
- - *6
2168
2203
  commands:
2169
2204
  - "./support/bundler_wrapper exec rake test"
2170
- - name: Ruby 3.2.0-preview3 for rails-7.0
2205
+ - name: Ruby 3.2.0 for rails-7.0
2171
2206
  env_vars:
2172
2207
  - *2
2173
2208
  - *3
2174
2209
  - *4
2175
2210
  - *5
2176
2211
  - name: RUBY_VERSION
2177
- value: 3.2.0-preview3
2212
+ value: 3.2.0
2178
2213
  - name: GEMSET
2179
2214
  value: rails-7.0
2180
2215
  - name: BUNDLE_GEMFILE
@@ -2183,17 +2218,16 @@ blocks:
2183
2218
  value: latest
2184
2219
  - name: _BUNDLER_VERSION
2185
2220
  value: latest
2186
- - *6
2187
2221
  commands:
2188
2222
  - "./support/bundler_wrapper exec rake test"
2189
- - name: Ruby 3.2.0-preview3 for resque-2
2223
+ - name: Ruby 3.2.0 for resque-2
2190
2224
  env_vars:
2191
2225
  - *2
2192
2226
  - *3
2193
2227
  - *4
2194
2228
  - *5
2195
2229
  - name: RUBY_VERSION
2196
- value: 3.2.0-preview3
2230
+ value: 3.2.0
2197
2231
  - name: GEMSET
2198
2232
  value: resque-2
2199
2233
  - name: BUNDLE_GEMFILE
@@ -2202,17 +2236,16 @@ blocks:
2202
2236
  value: latest
2203
2237
  - name: _BUNDLER_VERSION
2204
2238
  value: latest
2205
- - *6
2206
2239
  commands:
2207
2240
  - "./support/bundler_wrapper exec rake test"
2208
- - name: Ruby 3.2.0-preview3 for sequel
2241
+ - name: Ruby 3.2.0 for sequel
2209
2242
  env_vars:
2210
2243
  - *2
2211
2244
  - *3
2212
2245
  - *4
2213
2246
  - *5
2214
2247
  - name: RUBY_VERSION
2215
- value: 3.2.0-preview3
2248
+ value: 3.2.0
2216
2249
  - name: GEMSET
2217
2250
  value: sequel
2218
2251
  - name: BUNDLE_GEMFILE
@@ -2221,17 +2254,16 @@ blocks:
2221
2254
  value: latest
2222
2255
  - name: _BUNDLER_VERSION
2223
2256
  value: latest
2224
- - *6
2225
2257
  commands:
2226
2258
  - "./support/bundler_wrapper exec rake test"
2227
- - name: Ruby 3.2.0-preview3 for sinatra
2259
+ - name: Ruby 3.2.0 for sinatra
2228
2260
  env_vars:
2229
2261
  - *2
2230
2262
  - *3
2231
2263
  - *4
2232
2264
  - *5
2233
2265
  - name: RUBY_VERSION
2234
- value: 3.2.0-preview3
2266
+ value: 3.2.0
2235
2267
  - name: GEMSET
2236
2268
  value: sinatra
2237
2269
  - name: BUNDLE_GEMFILE
@@ -2240,17 +2272,16 @@ blocks:
2240
2272
  value: latest
2241
2273
  - name: _BUNDLER_VERSION
2242
2274
  value: latest
2243
- - *6
2244
2275
  commands:
2245
2276
  - "./support/bundler_wrapper exec rake test"
2246
- - name: Ruby 3.2.0-preview3 for webmachine
2277
+ - name: Ruby 3.2.0 for webmachine
2247
2278
  env_vars:
2248
2279
  - *2
2249
2280
  - *3
2250
2281
  - *4
2251
2282
  - *5
2252
2283
  - name: RUBY_VERSION
2253
- value: 3.2.0-preview3
2284
+ value: 3.2.0
2254
2285
  - name: GEMSET
2255
2286
  value: webmachine
2256
2287
  - name: BUNDLE_GEMFILE
@@ -2259,7 +2290,6 @@ blocks:
2259
2290
  value: latest
2260
2291
  - name: _BUNDLER_VERSION
2261
2292
  value: latest
2262
- - *6
2263
2293
  commands:
2264
2294
  - "./support/bundler_wrapper exec rake test"
2265
2295
  - name: Ruby jruby-9.3.9.0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # AppSignal for Ruby gem Changelog
2
2
 
3
+ ## 3.3.1
4
+
5
+ ### Added
6
+
7
+ - [7f62ada8](https://github.com/appsignal/appsignal-ruby/commit/7f62ada8deb67a2b7d355ec0c1bc2ad1d1e2d8d1) patch - Track the Operating System release/distro in the diagnose report. This helps us with debugging what exact version of Linux an app is running on, for example.
8
+
9
+ ### Fixed
10
+
11
+ - [1443e05f](https://github.com/appsignal/appsignal-ruby/commit/1443e05f0fa5bf6af69c40753b2d135f082871de) patch - Attempt to load C extension from lib/ directory. Fixes an issue where JRuby would fail to load
12
+ the extension from the ext/ directory, as the directory is cleaned after installation when using
13
+ RubyGems 3.4.0.
14
+
15
+ ## 3.3.0
16
+
17
+ ### Added
18
+
19
+ - [e4314b5b](https://github.com/appsignal/appsignal-ruby/commit/e4314b5b2d3fdf7865555535b2324094ec620349) minor - Hanami 2 is now supported. Requests will now appear as performance measurements.
20
+
3
21
  ## 3.2.2
4
22
 
5
23
  ### Changed
data/README.md CHANGED
@@ -232,6 +232,7 @@ configurations you need to run the spec suite with a specific Gemfile.
232
232
  BUNDLE_GEMFILE=gemfiles/capistrano2.gemfile bundle exec rspec
233
233
  BUNDLE_GEMFILE=gemfiles/capistrano3.gemfile bundle exec rspec
234
234
  BUNDLE_GEMFILE=gemfiles/grape.gemfile bundle exec rspec
235
+ BUNDLE_GEMFILE=gemfiles/hanami.gemfile bundle exec rspec
235
236
  BUNDLE_GEMFILE=gemfiles/http5.gemfile bundle exec rspec
236
237
  BUNDLE_GEMFILE=gemfiles/no_dependencies.gemfile bundle exec rspec
237
238
  BUNDLE_GEMFILE=gemfiles/padrino.gemfile bundle exec rspec
data/build_matrix.yml CHANGED
@@ -25,12 +25,6 @@ semaphore: # Default `.semaphore/semaphore.yml` contents
25
25
  commands:
26
26
  - checkout
27
27
  - rm -f $HOME/.rbenv/plugins/rbenv-gem-rehash/etc/rbenv.d/exec/~gem-rehash.bash
28
- - |
29
- if [ -n "$_LIBYAML" ]; then
30
- install-package --update libyaml-dev
31
- else
32
- echo Skipping libyaml-dev install
33
- fi
34
28
  - |
35
29
  if [ -n "$_C_VERSION" ]; then
36
30
  sem-version c $_C_VERSION
@@ -197,6 +191,8 @@ matrix:
197
191
  gems: "none"
198
192
  - ruby: "2.3.8"
199
193
  gems: "none"
194
+ rubygems: "3.3.26"
195
+ bundler: "2.3.26"
200
196
  - ruby: "2.4.10"
201
197
  gems: "none"
202
198
  - ruby: "2.5.8"
@@ -205,10 +201,7 @@ matrix:
205
201
  - ruby: "2.7.7"
206
202
  - ruby: "3.0.4"
207
203
  - ruby: "3.1.2"
208
- - ruby: "3.2.0-preview3"
209
- env_vars:
210
- - name: "_LIBYAML"
211
- value: "1"
204
+ - ruby: "3.2.0"
212
205
  - ruby: "jruby-9.3.9.0"
213
206
  gems: "minimal"
214
207
  - ruby: "jruby-9.4.0.0"
@@ -218,6 +211,12 @@ matrix:
218
211
  - gem: "capistrano2"
219
212
  - gem: "capistrano3"
220
213
  - gem: "grape"
214
+ - gem: "hanami"
215
+ only:
216
+ ruby:
217
+ - "3.0.4"
218
+ - "3.1.2"
219
+ - "3.2.0"
221
220
  - gem: "http5"
222
221
  - gem: "padrino"
223
222
  - gem: "psych-3"
@@ -225,13 +224,13 @@ matrix:
225
224
  ruby:
226
225
  - "3.0.4"
227
226
  - "3.1.2"
228
- - "3.2.0-preview3"
227
+ - "3.2.0"
229
228
  - gem: "psych-4"
230
229
  only:
231
230
  ruby:
232
231
  - "3.0.4"
233
232
  - "3.1.2"
234
- - "3.2.0-preview3"
233
+ - "3.2.0"
235
234
  - gem: "que"
236
235
  - gem: "que_beta"
237
236
  - gem: "rails-3.2"
@@ -304,7 +303,7 @@ matrix:
304
303
  - "2.7.7"
305
304
  - "3.0.4"
306
305
  - "3.1.2"
307
- - "3.2.0-preview3"
306
+ - "3.2.0"
308
307
  - "jruby-9.4.0.0"
309
308
  - gem: "rails-7.0"
310
309
  only:
@@ -312,7 +311,7 @@ matrix:
312
311
  - "2.7.7"
313
312
  - "3.0.4"
314
313
  - "3.1.2"
315
- - "3.2.0-preview3"
314
+ - "3.2.0"
316
315
  - "jruby-9.4.0.0"
317
316
  - gem: "resque-1"
318
317
  bundler: "1.17.3"
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem "hanami", "~> 2.0.0"
4
+ gem "hanami-router", "~> 2.0.0"
5
+ gem "hanami-controller", "~> 2.0.0"
6
+
7
+ gemspec :path => '../'
@@ -443,6 +443,9 @@ module Appsignal
443
443
  save :os, os
444
444
  puts_value "Operating System", os_label
445
445
 
446
+ distribution_file = "/etc/os-release"
447
+ save :os_distribution, File.exist?(distribution_file) ? File.read(distribution_file) : ""
448
+
446
449
  language_version = "#{rbconfig["RUBY_PROGRAM_VERSION"]}-p#{rbconfig["PATCHLEVEL"]}"
447
450
  save :language_version, language_version
448
451
  puts_format "Ruby version", language_version
@@ -61,6 +61,8 @@ module Appsignal
61
61
  install_for_padrino(config)
62
62
  elsif installed_frameworks.include?(:grape)
63
63
  install_for_grape(config)
64
+ elsif installed_frameworks.include?(:hanami)
65
+ install_for_hanami(config)
64
66
  elsif installed_frameworks.include?(:sinatra)
65
67
  install_for_sinatra(config)
66
68
  else
@@ -162,6 +164,24 @@ module Appsignal
162
164
  done_notice
163
165
  end
164
166
 
167
+ def install_for_hanami(config)
168
+ puts "Installing for Hanami"
169
+ config[:name] = required_input(" Enter application name: ")
170
+ puts
171
+ configure(config, %w[development production staging], true)
172
+
173
+ puts "Finish Hanami installation"
174
+ puts " Hanami requires some manual configuration."
175
+ puts " After installing the gem, add the following line to config.ru:"
176
+ puts
177
+ puts " require 'appsignal/integrations/hanami'"
178
+ puts
179
+ puts " You can find more information in the documentation:"
180
+ puts " http://docs.appsignal.com/ruby/integrations/hanami.html"
181
+ press_any_key
182
+ done_notice
183
+ end
184
+
165
185
  def install_for_capistrano
166
186
  capfile = File.join(Dir.pwd, "Capfile")
167
187
  return unless File.exist?(capfile)
@@ -256,6 +276,7 @@ module Appsignal
256
276
  out << :sinatra if framework_available? "sinatra"
257
277
  out << :padrino if framework_available? "padrino"
258
278
  out << :grape if framework_available? "grape"
279
+ out << :hanami if framework_available? "hanami"
259
280
  end
260
281
  end
261
282
 
@@ -50,7 +50,12 @@ module Appsignal
50
50
  end
51
51
 
52
52
  begin
53
- ffi_lib File.join(File.dirname(__FILE__), "../../../ext/libappsignal.#{lib_extension}")
53
+ begin
54
+ # RubyGems will install the extension in the gem's lib directory.
55
+ ffi_lib File.join(File.dirname(__FILE__), "../../../lib/libappsignal.#{lib_extension}")
56
+ rescue LoadError
57
+ ffi_lib File.join(File.dirname(__FILE__), "../../../ext/libappsignal.#{lib_extension}")
58
+ end
54
59
  typedef AppsignalString.by_value, :appsignal_string
55
60
 
56
61
  attach_function :appsignal_start, [], :void
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "appsignal"
4
+
5
+ module Appsignal
6
+ module Integrations
7
+ module HanamiPlugin
8
+ def self.init
9
+ Appsignal.logger.debug("Loading Hanami integration")
10
+
11
+ hanami_app_config = ::Hanami.app.config
12
+ Appsignal.config = Appsignal::Config.new(
13
+ hanami_app_config.root || Dir.pwd,
14
+ hanami_app_config.env
15
+ )
16
+
17
+ Appsignal.start_logger
18
+ Appsignal.start
19
+
20
+ ::Hanami::Action.send(:prepend, Appsignal::Integrations::HanamiIntegration) if Appsignal.active?
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ module Appsignal::Integrations::HanamiIntegration
27
+ def call(env)
28
+ params = ::Hanami::Action::BaseParams.new(env)
29
+ request = ::Hanami::Action::Request.new(
30
+ :env => env,
31
+ :params => params,
32
+ :sessions_enabled => true
33
+ )
34
+
35
+ transaction = Appsignal::Transaction.create(
36
+ SecureRandom.uuid,
37
+ Appsignal::Transaction::HTTP_REQUEST,
38
+ request
39
+ )
40
+
41
+ begin
42
+ Appsignal.instrument("process_action.hanami") do
43
+ super.tap do |response|
44
+ transaction.set_metadata("status", response.status.to_s)
45
+ end
46
+ end
47
+ rescue Exception => error # rubocop:disable Lint/RescueException
48
+ transaction.set_error(error)
49
+ transaction.set_metadata("status", "500")
50
+ raise error
51
+ ensure
52
+ transaction.params = request.params.to_h
53
+ transaction.set_action_if_nil(self.class.name)
54
+ transaction.set_metadata("path", request.path)
55
+ transaction.set_metadata("method", request.request_method)
56
+ transaction.set_http_or_background_queue_start
57
+ Appsignal::Transaction.complete_current!
58
+ end
59
+ end
60
+ end
61
+
62
+ Appsignal::Integrations::HanamiPlugin.init
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Appsignal
4
- VERSION = "3.2.2".freeze
4
+ VERSION = "3.3.1".freeze
5
5
  end
@@ -636,9 +636,12 @@ describe Appsignal::CLI::Diagnose, :api_stub => true, :send_report => :yes_cli_i
636
636
  run
637
637
  host_report = received_report["host"]
638
638
  host_report.delete("running_in_container") # Tested elsewhere
639
+ distribution_file = "/etc/os-release"
640
+ os_distribution = File.exist?(distribution_file) ? File.read(distribution_file) : ""
639
641
  expect(host_report).to eq(
640
642
  "architecture" => rbconfig["host_cpu"],
641
643
  "os" => rbconfig["host_os"],
644
+ "os_distribution" => os_distribution,
642
645
  "language_version" => language_version,
643
646
  "heroku" => false,
644
647
  "root" => false
@@ -660,7 +660,73 @@ describe Appsignal::CLI::Install do
660
660
  end
661
661
  end
662
662
 
663
- if !rails_present? && !sinatra_present? && !padrino_present? && !grape_present?
663
+ if hanami2_present?
664
+ context "with hanami" do
665
+ it_behaves_like "push_api_key validation"
666
+ it_behaves_like "requires an application name"
667
+
668
+ describe "hanami specific tests" do
669
+ let(:installation_instructions) do
670
+ [
671
+ "Installing for Hanami",
672
+ "Hanami requires some manual configuration.",
673
+ "http://docs.appsignal.com/ruby/integrations/hanami.html"
674
+ ]
675
+ end
676
+ let(:app_name) { "Test app" }
677
+ before { enter_app_name app_name }
678
+
679
+ describe "configuration with environment variables" do
680
+ before { choose_environment_config }
681
+
682
+ it_behaves_like "windows installation"
683
+ it_behaves_like "capistrano install"
684
+ it_behaves_like "demo data"
685
+
686
+ it "prints environment variables" do
687
+ run
688
+
689
+ expect(output).to include_env_push_api_key(push_api_key)
690
+ expect(output).to include_env_app_name(app_name)
691
+ end
692
+
693
+ it "completes the installation" do
694
+ run
695
+
696
+ expect(output).to include(*installation_instructions)
697
+ expect(output).to include_complete_install
698
+ end
699
+ end
700
+
701
+ describe "configure with a configuration file" do
702
+ before { choose_config_file }
703
+
704
+ it_behaves_like "windows installation"
705
+ it_behaves_like "capistrano install"
706
+ it_behaves_like "demo data"
707
+
708
+ it "writes configuration to file" do
709
+ run
710
+ expect(output).to include_file_config
711
+ expect(config_file).to configure_app_name(app_name)
712
+ expect(config_file).to configure_push_api_key(push_api_key)
713
+ expect(config_file).to configure_environment("development")
714
+ expect(config_file).to configure_environment("staging")
715
+ expect(config_file).to configure_environment("production")
716
+ end
717
+
718
+ it "completes the installation" do
719
+ run
720
+
721
+ expect(output).to include(*installation_instructions)
722
+ expect(output).to include_complete_install
723
+ end
724
+ end
725
+ end
726
+ end
727
+ end
728
+
729
+ if !rails_present? && !sinatra_present? && !padrino_present? && !grape_present? && !hanami2_present?
664
730
  context "with unknown framework" do
665
731
  let(:push_api_key) { "my_key" }
666
732
 
@@ -0,0 +1,116 @@
1
+ # frozen_string_literal: true
2
+
3
+ if DependencyHelper.hanami2_present?
4
+ describe "Hanami integration" do
5
+ require "appsignal/integrations/hanami"
6
+
7
+ before do
8
+ allow(Appsignal).to receive(:active?).and_return(true)
9
+ allow(Appsignal).to receive(:start).and_return(true)
10
+ allow(Appsignal).to receive(:start_logger).and_return(true)
11
+ end
12
+
13
+ describe Appsignal::Integrations::HanamiPlugin do
14
+ it "starts AppSignal on init" do
15
+ expect(Appsignal).to receive(:start)
16
+ end
17
+
18
+ it "starts the logger on init" do
19
+ expect(Appsignal).to receive(:start_logger)
20
+ end
21
+
22
+ it "prepends the integration to Hanami" do
23
+ expect(::Hanami::Action).to receive(:send).with(:prepend, Appsignal::Integrations::HanamiIntegration)
24
+ end
25
+
26
+ context "when not active" do
27
+ before { allow(Appsignal).to receive(:active?).and_return(false) }
28
+
29
+ it "does not prepend the integration" do
30
+ expect(::Hanami::Action).to_not receive(:send).with(:prepend, Appsignal::Integrations::HanamiIntegration)
31
+ end
32
+ end
33
+
34
+ context "when APPSIGNAL_APP_ENV ENV var is provided" do
35
+ it "uses this as the environment" do
36
+ ENV["APPSIGNAL_APP_ENV"] = "custom"
37
+
38
+ # Reset the plugin to pull down the latest data
39
+ Appsignal::Integrations::HanamiPlugin.init
40
+
41
+ expect(Appsignal.config.env).to eq("custom")
42
+ end
43
+ end
44
+
45
+ context "when APPSIGNAL_APP_ENV ENV var is not provided" do
46
+ it "uses the Hanami environment" do
47
+ # Reset the plugin to pull down the latest data
48
+ Appsignal::Integrations::HanamiPlugin.init
49
+
50
+ expect(Appsignal.config.env).to eq("test")
51
+ end
52
+ end
53
+
54
+ after { Appsignal::Integrations::HanamiPlugin.init }
55
+ end
56
+
57
+ describe "Hanami Actions" do
58
+ let(:env) do
59
+ Rack::MockRequest.env_for(
60
+ "/books",
61
+ "router.params" => router_params,
62
+ :method => "GET"
63
+ )
64
+ end
65
+
66
+ let(:router_params) { { :foo => "bar", :baz => "qux" } }
67
+
68
+ describe "#call", :error => false do
69
+ it "sets params" do
70
+ expect_any_instance_of(Appsignal::Transaction).to receive(:params=).with(router_params)
71
+ end
72
+
73
+ it "sets the action name" do
74
+ expect_any_instance_of(Appsignal::Transaction).to receive(:set_action_if_nil).with("HanamiApp::Actions::Books::Index")
75
+ end
76
+
77
+ it "sets the metadata" do
78
+ expect_any_instance_of(Appsignal::Transaction).to receive(:set_metadata).with("status", "200")
79
+ expect_any_instance_of(Appsignal::Transaction).to receive(:set_metadata).with("path", "/books")
80
+ expect_any_instance_of(Appsignal::Transaction).to receive(:set_metadata).with("method", "GET")
81
+ end
82
+
83
+ it "sets the queue start" do
84
+ expect_any_instance_of(Appsignal::Transaction).to receive(:set_http_or_background_queue_start)
85
+ end
86
+
87
+ context "with error", :error => true do
88
+ let(:error) { HanamiApp::ExampleError }
89
+
90
+ it "records the exception" do
91
+ expect_any_instance_of(Appsignal::Transaction).to receive(:set_error).with(error)
92
+ end
93
+
94
+ it "sets the status to 500" do
95
+ expect_any_instance_of(Appsignal::Transaction).to receive(:set_metadata).with("status", "500")
96
+ expect_any_instance_of(Appsignal::Transaction).to receive(:set_metadata).twice
97
+ end
98
+ end
99
+
100
+ after(:error => false) do
101
+ Appsignal::Integrations::HanamiPlugin.init
102
+
103
+ action = HanamiApp::Actions::Books::Index.new
104
+ action.call(env)
105
+ end
106
+
107
+ after(:error => true) do
108
+ Appsignal::Integrations::HanamiPlugin.init
109
+
110
+ action = HanamiApp::Actions::Books::Error.new
111
+ expect { action.call(env) }.to raise_error(error)
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end
data/spec/spec_helper.rb CHANGED
@@ -29,6 +29,11 @@ if DependencyHelper.rails_present?
29
29
  require f
30
30
  end
31
31
  end
32
+ if DependencyHelper.hanami2_present?
33
+ Dir[File.join(DirectoryHelper.support_dir, "hanami", "*.rb")].each do |f|
34
+ require f
35
+ end
36
+ end
32
37
  require "pry" if DependencyHelper.dependency_present?("pry")
33
38
  require "appsignal"
34
39
  # Include patches of AppSignal modules and classes to make test helpers
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "hanami"
4
+ require "hanami/action"
5
+
6
+ module HanamiApp
7
+ class App < Hanami::App
8
+ end
9
+
10
+ class Routes < Hanami::Routes
11
+ get "/books", :to => "books.index"
12
+ end
13
+
14
+ module Actions
15
+ module Books
16
+ class Index < Hanami::Action
17
+ def handle(_request, response)
18
+ response.body = "YOU REQUESTED BOOKS!"
19
+ end
20
+ end
21
+
22
+ class Error < Hanami::Action
23
+ def handle(_request, _response)
24
+ raise ExampleError
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ class ExampleError < StandardError; end
31
+ end
@@ -9,6 +9,10 @@ module DependencyHelper
9
9
  ruby_version.segments.take(2) == [2, 0]
10
10
  end
11
11
 
12
+ def ruby_3_0_or_newer?
13
+ ruby_version >= Gem::Version.new("3.0.0")
14
+ end
15
+
12
16
  def ruby_3_1_or_newer?
13
17
  ruby_version >= Gem::Version.new("3.1.0")
14
18
  end
@@ -115,6 +119,14 @@ module DependencyHelper
115
119
  dependency_present? "que"
116
120
  end
117
121
 
122
+ def hanami_present?
123
+ dependency_present? "hanami"
124
+ end
125
+
126
+ def hanami2_present?
127
+ ruby_3_0_or_newer? && hanami_present? && Gem.loaded_specs["hanami"].version >= Gem::Version.new("2.0")
128
+ end
129
+
118
130
  def dependency_present?(dependency_file)
119
131
  Gem.loaded_specs.key? dependency_file
120
132
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appsignal
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.2
4
+ version: 3.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Beekman
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2022-12-13 00:00:00.000000000 Z
13
+ date: 2023-01-12 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rack
@@ -161,6 +161,7 @@ files:
161
161
  - gemfiles/capistrano2.gemfile
162
162
  - gemfiles/capistrano3.gemfile
163
163
  - gemfiles/grape.gemfile
164
+ - gemfiles/hanami.gemfile
164
165
  - gemfiles/http5.gemfile
165
166
  - gemfiles/no_dependencies.gemfile
166
167
  - gemfiles/padrino.gemfile
@@ -240,6 +241,7 @@ files:
240
241
  - lib/appsignal/integrations/delayed_job_plugin.rb
241
242
  - lib/appsignal/integrations/excon.rb
242
243
  - lib/appsignal/integrations/grape.rb
244
+ - lib/appsignal/integrations/hanami.rb
243
245
  - lib/appsignal/integrations/http.rb
244
246
  - lib/appsignal/integrations/mongo_ruby_driver.rb
245
247
  - lib/appsignal/integrations/net_http.rb
@@ -339,6 +341,7 @@ files:
339
341
  - spec/lib/appsignal/hooks_spec.rb
340
342
  - spec/lib/appsignal/integrations/data_mapper_spec.rb
341
343
  - spec/lib/appsignal/integrations/grape_spec.rb
344
+ - spec/lib/appsignal/integrations/hanami_spec.rb
342
345
  - spec/lib/appsignal/integrations/http_spec.rb
343
346
  - spec/lib/appsignal/integrations/mongo_ruby_driver_spec.rb
344
347
  - spec/lib/appsignal/integrations/object_spec.rb
@@ -378,6 +381,7 @@ files:
378
381
  - spec/support/fixtures/projects/valid/config/environments/test.rb
379
382
  - spec/support/fixtures/projects/valid/log/.gitkeep
380
383
  - spec/support/fixtures/uploaded_file.txt
384
+ - spec/support/hanami/hanami_app.rb
381
385
  - spec/support/helpers/action_mailer_helpers.rb
382
386
  - spec/support/helpers/activejob_helpers.rb
383
387
  - spec/support/helpers/api_request_helper.rb
@@ -434,7 +438,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
434
438
  - !ruby/object:Gem::Version
435
439
  version: '0'
436
440
  requirements: []
437
- rubygems_version: 3.3.26
441
+ rubygems_version: 3.4.2
438
442
  signing_key:
439
443
  specification_version: 4
440
444
  summary: Logs performance and exception data from your app to appsignal.com
@@ -494,6 +498,7 @@ test_files:
494
498
  - spec/lib/appsignal/hooks_spec.rb
495
499
  - spec/lib/appsignal/integrations/data_mapper_spec.rb
496
500
  - spec/lib/appsignal/integrations/grape_spec.rb
501
+ - spec/lib/appsignal/integrations/hanami_spec.rb
497
502
  - spec/lib/appsignal/integrations/http_spec.rb
498
503
  - spec/lib/appsignal/integrations/mongo_ruby_driver_spec.rb
499
504
  - spec/lib/appsignal/integrations/object_spec.rb
@@ -533,6 +538,7 @@ test_files:
533
538
  - spec/support/fixtures/projects/valid/config/environments/test.rb
534
539
  - spec/support/fixtures/projects/valid/log/.gitkeep
535
540
  - spec/support/fixtures/uploaded_file.txt
541
+ - spec/support/hanami/hanami_app.rb
536
542
  - spec/support/helpers/action_mailer_helpers.rb
537
543
  - spec/support/helpers/activejob_helpers.rb
538
544
  - spec/support/helpers/api_request_helper.rb