passenger 5.2.3 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (241) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +13 -0
  3. data/CONTRIBUTORS +5 -1
  4. data/build/agent.rb +22 -2
  5. data/build/cxx_tests.rb +41 -5
  6. data/build/misc.rb +4 -1
  7. data/build/support/cxx_dependency_map.rb +1746 -908
  8. data/build/support/vendor/cxx_hinted_parser/CxxHintedParser.sublime-project +8 -0
  9. data/build/support/vendor/cxx_hinted_parser/Gemfile +5 -0
  10. data/build/support/vendor/cxx_hinted_parser/Gemfile.lock +30 -0
  11. data/{src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core → build/support/vendor/cxx_hinted_parser}/LICENSE.md +1 -1
  12. data/build/support/vendor/cxx_hinted_parser/README.md +95 -0
  13. data/build/support/vendor/cxx_hinted_parser/Rakefile +4 -0
  14. data/{src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/lib/union_station_hooks_rails/initialize.rb → build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser.rb} +2 -9
  15. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser/parser.rb +239 -0
  16. data/dev/ci/README.md +15 -2
  17. data/dev/ci/lib/set-container-envvars.sh +6 -0
  18. data/dev/ci/lib/setup-container.sh +4 -1
  19. data/dev/ci/scripts/debug-console-wrapper.sh +3 -1
  20. data/dev/ci/setup-host +5 -0
  21. data/dev/ci/tests/binaries/Jenkinsfile +105 -0
  22. data/dev/ci/tests/binaries/build-linux +38 -0
  23. data/dev/ci/tests/binaries/build-macos +40 -0
  24. data/dev/ci/tests/binaries/prepare-macos +38 -0
  25. data/dev/ci/tests/binaries/test-linux +45 -0
  26. data/dev/ci/tests/binaries/test-macos +38 -0
  27. data/dev/ci/tests/debian/Jenkinsfile +2 -2
  28. data/dev/ci/tests/rpm/Jenkinsfile +1 -1
  29. data/dev/configkit-schemas/index.json +3 -24
  30. data/dev/vagrant/nginx_rakefile +0 -1
  31. data/package.json +15 -5
  32. data/resources/templates/error_renderer/.editorconfig +19 -0
  33. data/resources/templates/error_renderer/with_details/README.md +9 -0
  34. data/resources/templates/error_renderer/with_details/dist/bundle.js +33 -0
  35. data/resources/templates/error_renderer/with_details/dist/styles.css +17 -0
  36. data/resources/templates/error_renderer/with_details/src/DetailsView.jsx +52 -0
  37. data/resources/templates/error_renderer/with_details/src/GetHelpView.jsx +61 -0
  38. data/resources/templates/error_renderer/with_details/src/JourneyView.css +50 -0
  39. data/resources/templates/error_renderer/with_details/src/JourneyView.jsx +621 -0
  40. data/resources/templates/error_renderer/with_details/src/PageMain.css +114 -0
  41. data/resources/templates/error_renderer/with_details/src/PageMain.jsx +136 -0
  42. data/resources/templates/error_renderer/with_details/src/ProblemDescriptionView.jsx +14 -0
  43. data/resources/templates/error_renderer/with_details/src/ProcessDetailsView.jsx +56 -0
  44. data/resources/templates/error_renderer/with_details/src/SolutionDescriptionView.css +5 -0
  45. data/resources/templates/error_renderer/with_details/src/SolutionDescriptionView.jsx +15 -0
  46. data/resources/templates/error_renderer/with_details/src/SummaryView.jsx +35 -0
  47. data/resources/templates/error_renderer/with_details/src/SystemComponentView.css +34 -0
  48. data/resources/templates/error_renderer/with_details/src/SystemComponentView.jsx +168 -0
  49. data/resources/templates/error_renderer/with_details/src/SystemComponentsView.css +13 -0
  50. data/resources/templates/error_renderer/with_details/src/SystemComponentsView.jsx +116 -0
  51. data/resources/templates/error_renderer/with_details/src/Tab.jsx +12 -0
  52. data/resources/templates/error_renderer/with_details/src/Tabs.jsx +104 -0
  53. data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.css +3446 -0
  54. data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.js +293 -0
  55. data/resources/templates/error_renderer/with_details/src/bootstrap/config.json +401 -0
  56. data/resources/templates/error_renderer/with_details/src/index.html.template +22 -0
  57. data/resources/templates/error_renderer/with_details/src/index.jsx +23 -0
  58. data/resources/templates/error_renderer/with_details/webpack.config.js +47 -0
  59. data/resources/templates/error_renderer/without_details/dist/bundle.js +1 -0
  60. data/resources/templates/error_renderer/without_details/dist/styles.css +1 -0
  61. data/resources/templates/{undisclosed_error.html.template → error_renderer/without_details/src/index.html.template} +7 -11
  62. data/resources/templates/error_renderer/without_details/src/index.js +1 -0
  63. data/resources/templates/{error_layout.css → error_renderer/without_details/src/main.css} +5 -2
  64. data/resources/templates/error_renderer/without_details/webpack.config.js +42 -0
  65. data/src/agent/AgentMain.cpp +3 -3
  66. data/src/agent/Core/ApplicationPool/BasicProcessInfo.h +13 -0
  67. data/src/agent/Core/ApplicationPool/Common.h +3 -4
  68. data/src/agent/Core/ApplicationPool/Context.h +27 -17
  69. data/src/agent/Core/ApplicationPool/Group.h +3 -1
  70. data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +2 -12
  71. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +55 -10
  72. data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +1 -1
  73. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +1 -1
  74. data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +13 -6
  75. data/src/agent/Core/ApplicationPool/Implementation.cpp +16 -100
  76. data/src/agent/Core/ApplicationPool/Options.h +8 -65
  77. data/src/agent/Core/ApplicationPool/Pool.h +4 -21
  78. data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +1 -60
  79. data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +10 -13
  80. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +3 -8
  81. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +2 -34
  82. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +1 -1
  83. data/src/agent/Core/ApplicationPool/Process.cpp +17 -12
  84. data/src/agent/Core/ApplicationPool/Process.h +146 -93
  85. data/src/agent/Core/ApplicationPool/Session.h +2 -2
  86. data/src/agent/Core/ApplicationPool/Socket.h +28 -27
  87. data/src/agent/Core/Config.h +1 -3
  88. data/src/agent/Core/ConfigChange.cpp +2 -4
  89. data/src/agent/Core/Controller.h +2 -8
  90. data/src/agent/Core/Controller/BufferBody.cpp +0 -2
  91. data/src/agent/Core/Controller/CheckoutSession.cpp +12 -24
  92. data/src/agent/Core/Controller/Config.h +1 -9
  93. data/src/agent/Core/Controller/ForwardResponse.cpp +0 -34
  94. data/src/agent/Core/Controller/Hooks.cpp +0 -7
  95. data/src/agent/Core/Controller/InitRequest.cpp +0 -43
  96. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +0 -4
  97. data/src/agent/Core/Controller/Request.h +1 -35
  98. data/src/agent/Core/Controller/SendRequest.cpp +0 -32
  99. data/src/agent/Core/CoreMain.cpp +19 -32
  100. data/src/agent/Core/SpawningKit/Config.h +329 -55
  101. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h +369 -0
  102. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h.cxxcodebuilder +307 -0
  103. data/src/agent/Core/SpawningKit/Context.h +211 -0
  104. data/src/agent/Core/SpawningKit/DirectSpawner.h +112 -122
  105. data/src/agent/Core/SpawningKit/DummySpawner.h +59 -20
  106. data/src/agent/Core/SpawningKit/ErrorRenderer.h +117 -0
  107. data/src/agent/Core/SpawningKit/Exceptions.h +1157 -0
  108. data/src/agent/Core/SpawningKit/Factory.h +24 -17
  109. data/src/agent/Core/SpawningKit/{BackgroundIOCapturer.h → Handshake/BackgroundIOCapturer.h} +48 -18
  110. data/src/agent/Core/SpawningKit/Handshake/Perform.h +1650 -0
  111. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +582 -0
  112. data/src/agent/Core/SpawningKit/Handshake/Session.h +91 -0
  113. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +100 -0
  114. data/src/agent/Core/SpawningKit/Journey.h +561 -0
  115. data/src/agent/Core/SpawningKit/PipeWatcher.h +41 -18
  116. data/src/agent/Core/SpawningKit/README.md +534 -0
  117. data/src/agent/Core/SpawningKit/Result.h +182 -7
  118. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h +69 -0
  119. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h.cxxcodebuilder +110 -0
  120. data/src/agent/Core/SpawningKit/SmartSpawner.h +1027 -562
  121. data/src/agent/Core/SpawningKit/Spawner.h +70 -1134
  122. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +3 -33
  123. data/src/agent/README.md +2 -3
  124. data/src/agent/Shared/ApiServerUtils.h +2 -3
  125. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +932 -0
  126. data/src/agent/Watchdog/Config.h +1 -3
  127. data/src/agent/Watchdog/WatchdogMain.cpp +2 -1
  128. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +5 -0
  129. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +5 -0
  130. data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +22 -13
  131. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +5 -0
  132. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +3 -0
  133. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +13 -0
  134. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +7 -0
  135. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +13 -0
  136. data/src/cxx_supportlib/Constants.h +3 -1
  137. data/src/cxx_supportlib/Exceptions.h +0 -121
  138. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +7 -6
  139. data/src/cxx_supportlib/LoggingKit/Logging.h +3 -1
  140. data/src/cxx_supportlib/Utils.cpp +42 -0
  141. data/src/cxx_supportlib/Utils.h +7 -0
  142. data/src/cxx_supportlib/Utils/IOUtils.cpp +58 -0
  143. data/src/cxx_supportlib/Utils/IOUtils.h +13 -0
  144. data/src/cxx_supportlib/Utils/JsonUtils.h +130 -23
  145. data/src/cxx_supportlib/Utils/ScopeGuard.h +9 -4
  146. data/src/cxx_supportlib/Utils/StrIntUtils.cpp +7 -0
  147. data/src/cxx_supportlib/Utils/StrIntUtils.h +1 -0
  148. data/src/cxx_supportlib/Utils/SystemTime.h +1 -1
  149. data/src/cxx_supportlib/Utils/Timer.h +1 -1
  150. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +6 -4
  151. data/src/cxx_supportlib/vendor-copy/adhoc_lve.h +1 -0
  152. data/src/helper-scripts/node-loader.js +54 -59
  153. data/src/helper-scripts/rack-loader.rb +63 -60
  154. data/src/helper-scripts/rack-preloader.rb +125 -72
  155. data/src/helper-scripts/wsgi-loader.py +100 -43
  156. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +120 -112
  157. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +15 -8
  158. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +142 -142
  159. data/src/nginx_module/ConfigGeneral/ManifestGeneration.c +26 -15
  160. data/src/nginx_module/ConfigGeneral/ManifestGeneration.h +3 -0
  161. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +76 -70
  162. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +114 -99
  163. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +170 -156
  164. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +38 -35
  165. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +5 -1
  166. data/src/ruby_supportlib/phusion_passenger.rb +5 -5
  167. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +14 -1
  168. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +8 -0
  169. data/src/ruby_supportlib/phusion_passenger/common_library.rb +0 -3
  170. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +0 -1
  171. data/src/ruby_supportlib/phusion_passenger/constants.rb +2 -0
  172. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +646 -238
  173. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +117 -95
  174. data/src/ruby_supportlib/phusion_passenger/packaging.rb +0 -1
  175. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +5 -1
  176. data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +92 -69
  177. data/src/ruby_supportlib/phusion_passenger/public_api.rb +0 -17
  178. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +0 -3
  179. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +4 -5
  180. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +0 -22
  181. metadata +64 -67
  182. data/resources/templates/error_layout.html.template +0 -86
  183. data/resources/templates/general_error.html.template +0 -1
  184. data/resources/templates/general_error_with_html.html.template +0 -1
  185. data/src/agent/Core/ApplicationPool/ErrorRenderer.h +0 -131
  186. data/src/agent/Core/SpawningKit/Options.h +0 -41
  187. data/src/agent/Core/UnionStation/Connection.h +0 -173
  188. data/src/agent/Core/UnionStation/Context.h +0 -536
  189. data/src/agent/Core/UnionStation/StopwatchLog.h +0 -147
  190. data/src/agent/Core/UnionStation/Transaction.h +0 -249
  191. data/src/agent/SpawnPreparer/SpawnPreparerMain.cpp +0 -208
  192. data/src/cxx_supportlib/UnionStationFilterSupport.cpp +0 -67
  193. data/src/cxx_supportlib/UnionStationFilterSupport.h +0 -1622
  194. data/src/nodejs_supportlib/phusion_passenger/log_express.js +0 -106
  195. data/src/nodejs_supportlib/phusion_passenger/log_mongodb.js +0 -202
  196. data/src/nodejs_supportlib/phusion_passenger/ustreporter.js +0 -227
  197. data/src/nodejs_supportlib/phusion_passenger/ustrouter_connector.js +0 -448
  198. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/CONFIG.md +0 -37
  199. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/Gemfile +0 -17
  200. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/Gemfile.lock +0 -59
  201. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/README-API.md +0 -5
  202. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/README.md +0 -117
  203. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/Rakefile +0 -115
  204. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core.rb +0 -423
  205. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/api.rb +0 -238
  206. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/connection.rb +0 -67
  207. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/context.rb +0 -281
  208. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/lock.rb +0 -62
  209. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/log.rb +0 -66
  210. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/message_channel.rb +0 -157
  211. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/request_reporter.rb +0 -150
  212. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/request_reporter/basics.rb +0 -199
  213. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/request_reporter/controllers.rb +0 -187
  214. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/request_reporter/misc.rb +0 -303
  215. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/request_reporter/view_rendering.rb +0 -91
  216. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/simple_json.rb +0 -396
  217. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/spec_helper.rb +0 -279
  218. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/time_point.rb +0 -39
  219. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/transaction.rb +0 -173
  220. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/utils.rb +0 -177
  221. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/version.rb +0 -32
  222. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/version_data.rb +0 -44
  223. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/ruby_versions.yml.example +0 -16
  224. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/ruby_versions.yml.travis +0 -20
  225. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/ruby_versions.yml.travis-with-sudo +0 -18
  226. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/union_station_hooks_core.gemspec +0 -23
  227. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/Gemfile +0 -14
  228. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/Gemfile.lock +0 -45
  229. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/LICENSE.md +0 -19
  230. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/README.md +0 -104
  231. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/Rakefile +0 -160
  232. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/lib/union_station_hooks_rails.rb +0 -200
  233. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/lib/union_station_hooks_rails/action_controller_extension.rb +0 -45
  234. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/lib/union_station_hooks_rails/action_view_subscriber.rb +0 -55
  235. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/lib/union_station_hooks_rails/active_record_subscriber.rb +0 -41
  236. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/lib/union_station_hooks_rails/active_support_benchmarkable_extension.rb +0 -47
  237. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/lib/union_station_hooks_rails/active_support_cache_subscriber.rb +0 -79
  238. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/lib/union_station_hooks_rails/exception_logger.rb +0 -57
  239. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/lib/union_station_hooks_rails/version.rb +0 -32
  240. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/lib/union_station_hooks_rails/version_data.rb +0 -44
  241. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/union_station_hooks_rails.gemspec +0 -34
@@ -1,160 +0,0 @@
1
- # Union Station - https://www.unionstationapp.com/
2
- # Copyright (c) 2015 Phusion Holding B.V.
3
- #
4
- # "Union Station" and "Passenger" are trademarks of Phusion Holding B.V.
5
- #
6
- # Permission is hereby granted, free of charge, to any person obtaining a copy
7
- # of this software and associated documentation files (the "Software"), to deal
8
- # in the Software without restriction, including without limitation the rights
9
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- # copies of the Software, and to permit persons to whom the Software is
11
- # furnished to do so, subject to the following conditions:
12
- #
13
- # The above copyright notice and this permission notice shall be included in
14
- # all copies or substantial portions of the Software.
15
- #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
- # THE SOFTWARE.
23
-
24
- TRAVIS_PASSENGER_BRANCH = 'master'
25
-
26
- if defined?(Bundler)
27
- # Undo Bundler environment so that calls to 'bundle install' won't try to
28
- # access the .bundle directory in the gem's toplevel directory.
29
- clean_env = nil
30
- Bundler.with_clean_env do
31
- clean_env = ENV.to_hash
32
- end
33
- ENV.replace(clean_env)
34
- ARGV.each do |arg|
35
- if arg =~ /^(\w+)=(.*)$/m
36
- ENV[$1] = $2
37
- end
38
- end
39
- end
40
-
41
- ush_core_path = ENV['USH_CORE_PATH']
42
- if ush_core_path
43
- require "#{ush_core_path}/lib/union_station_hooks_core"
44
- else
45
- require 'union_station_hooks_core'
46
- end
47
-
48
- require File.expand_path(File.dirname(__FILE__) + '/lib/union_station_hooks_rails')
49
-
50
- require 'shellwords'
51
-
52
- desc 'Install the gem bundles of test apps'
53
- task :install_test_app_bundles do
54
- bundle_args = ENV['BUNDLE_ARGS']
55
- Dir['rails_test_apps/*'].each do |dir|
56
- next if !should_run_rails_test?(dir)
57
- puts "Installing gem bundle for Rails #{File.basename(dir)}"
58
- sh "mkdir -p tmp.bundler"
59
- begin
60
- sh "cp #{dir}/Gemfile #{dir}/Gemfile.lock tmp.bundler/"
61
-
62
- puts "Editing tmp.bundler/Gemfile.lock"
63
- content = File.open("tmp.bundler/Gemfile.lock", "r") do |f|
64
- f.read
65
- end
66
- content.gsub!(/union_station_hooks_core \(.+\)/,
67
- "union_station_hooks_core (#{UnionStationHooks::VERSION_STRING})")
68
- content.gsub!(/union_station_hooks_rails \(.+\)/,
69
- "union_station_hooks_rails (#{UnionStationHooksRails::VERSION_STRING})")
70
- File.open("tmp.bundler/Gemfile.lock", "w") do |f|
71
- f.write(content)
72
- end
73
-
74
- sh "cd tmp.bundler && " \
75
- "ln -s #{Shellwords.escape UnionStationHooks::ROOT} ush_core && " \
76
- "ln -s #{Shellwords.escape UnionStationHooksRails::ROOT} ush_rails && " \
77
- "bundle install --without development doc #{bundle_args}"
78
- ensure
79
- sh "rm -rf tmp.bundler"
80
- end
81
- end
82
- end
83
-
84
- desc 'Run tests'
85
- task :spec do
86
- if ENV['E']
87
- arg = "-e #{Shellwords.escape ENV['E']}"
88
- end
89
- sh "bundle exec rspec -c -f d #{arg}".strip
90
- end
91
-
92
- task :test => :spec
93
-
94
- desc 'Run tests in Travis'
95
- task "spec:travis" do
96
- if !ENV['PASSENGER_CONFIG']
97
- Rake::Task['travis:install_passenger'].invoke
98
- end
99
- Rake::Task['spec'].invoke
100
- end
101
-
102
- desc 'Build gem'
103
- task :gem do
104
- sh 'gem build union_station_hooks_rails.gemspec'
105
- end
106
-
107
-
108
- namespace :travis do
109
- task :install_passenger do
110
- if File.exist?('../../../../../bin/passenger-config')
111
- # We are vendored into Passenger
112
- Rake::Task['travis:install_passenger_vendor'].invoke
113
- else
114
- Rake::Task['travis:install_passenger_git'].invoke
115
- end
116
- end
117
-
118
- task :install_passenger_vendor do
119
- passenger_config = File.expand_path('../../../../../bin/passenger-config')
120
- ENV['PASSENGER_CONFIG'] = passenger_config
121
- sh "#{passenger_config} install-standalone-runtime --auto"
122
- end
123
-
124
- task :install_passenger_git do
125
- if !File.exist?('passenger/.git')
126
- sh "git clone --recursive --branch #{TRAVIS_PASSENGER_BRANCH} git://github.com/phusion/passenger.git"
127
- else
128
- puts 'cd passenger'
129
- Dir.chdir('passenger') do
130
- sh 'git fetch'
131
- sh 'rake clean'
132
- sh "git reset --hard origin/#{TRAVIS_PASSENGER_BRANCH}"
133
- sh 'git submodule update --init --recursive'
134
- end
135
- puts 'cd ..'
136
- end
137
-
138
- passenger_config = "#{Dir.pwd}/passenger/bin/passenger-config"
139
- envs = {
140
- 'PASSENGER_CONFIG' => passenger_config,
141
- 'CC' => 'ccache cc',
142
- 'CXX' => 'ccache c++',
143
- 'CCACHE_COMPRESS' => '1',
144
- 'CCACHE_COMPRESS_LEVEL' => '3',
145
- 'CCACHE_DIR' => "#{Dir.pwd}/passenger/.ccache"
146
- }
147
- envs.each_pair do |key, val|
148
- ENV[key] = val
149
- puts "$ export #{key}='#{val}'"
150
- end
151
- sh 'mkdir -p passenger/.ccache'
152
- sh "#{passenger_config} install-standalone-runtime --auto"
153
- end
154
- end
155
-
156
-
157
- def should_run_rails_test?(dir)
158
- # Rails >= 4.0 requires Ruby >= 1.9
159
- RUBY_VERSION >= '1.9' || File.basename(dir) < '4.0'
160
- end
@@ -1,200 +0,0 @@
1
- # Union Station - https://www.unionstationapp.com/
2
- # Copyright (c) 2010-2015 Phusion Holding B.V.
3
- #
4
- # "Union Station" and "Passenger" are trademarks of Phusion Holding B.V.
5
- #
6
- # Permission is hereby granted, free of charge, to any person obtaining a copy
7
- # of this software and associated documentation files (the "Software"), to deal
8
- # in the Software without restriction, including without limitation the rights
9
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- # copies of the Software, and to permit persons to whom the Software is
11
- # furnished to do so, subject to the following conditions:
12
- #
13
- # The above copyright notice and this permission notice shall be included in
14
- # all copies or substantial portions of the Software.
15
- #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
- # THE SOFTWARE.
23
-
24
- # Important notes:
25
- #
26
- # - We can't define a Railtie in this gem because union_station_hooks_rails
27
- # may be loaded from Passenger, before Rails is loaded.
28
- # - Make sure that you do not install any actual hooks until `initialize!`
29
- # is called. Otherwise, union_station_hooks_core won't be able to properly
30
- # upgrade the Union Station hook code vendored in Passenger.
31
- # See https://github.com/phusion/union_station_hooks/hacking/Vendoring.md
32
- # for more information.
33
-
34
- if defined?(UnionStationHooksRails::VERSION_STRING)
35
- if UnionStationHooksRails.initialized?
36
- raise 'Attempted to load union_station_hooks_core even though an ' \
37
- 'alternative version was already loaded and initialized'
38
- end
39
- if UnionStationHooksRails.vendored?
40
- # Passenger loaded its vendored Union Station hooks code, but the
41
- # application has also included 'union_station_hooks_*' in its Gemfile. We
42
- # want the version in the Gemfile to take precedence, so we unload the old
43
- # version. At this point, the Union Station hooks aren't installed yet, so
44
- # removing the module is enough to unload the old version.
45
- #
46
- # See also:
47
- # https://github.com/phusion/union_station_hooks/blob/master/hacking/Vendoring.md
48
- if defined?(UnionStationHooks)
49
- UnionStationHooks.initializers.delete(UnionStationHooksRails)
50
- end
51
- Object.send(:remove_const, :UnionStationHooksRails)
52
- end
53
- end
54
-
55
- module UnionStationHooksRails
56
- # The path to the `union_station_hooks_rails` Ruby library directory.
57
- #
58
- # @private
59
- LIBROOT = File.expand_path(File.dirname(__FILE__))
60
-
61
- # The path to the `union_station_hooks_rails` gem root directory.
62
- #
63
- # @private
64
- ROOT = File.dirname(LIBROOT)
65
-
66
- class << self
67
- # @private
68
- @@initialized = false
69
- # @private
70
- @@vendored = false
71
-
72
- # Initializes `union_station_hooks_rails`. This method is automatically
73
- # called by `UnionStationHooks.initialized!` because we registered
74
- # ourselves in `UnionStationHooks.initializers`. The application does
75
- # not need to call this.
76
- #
77
- # If this method successfully initializes, then it returns true.
78
- #
79
- # Calling this method may or may not actually initialize
80
- # `union_station_hooks_rails`. If this gem determines that initialization
81
- # is not desired, then this method won't do anything and will return
82
- # `false`. See {UnionStationHooksRails#should_initialize?}.
83
- #
84
- # Initializing twice is a no-op. It only causes this method to return true.
85
- #
86
- # @private
87
- # @return [Boolean] Whether initialization was successful.
88
- def initialize!
89
- return false if !should_initialize?
90
- return true if initialized?
91
-
92
- begin
93
- require_lib('initialize')
94
- require_lib('active_record_subscriber')
95
- require_lib('exception_logger')
96
- if defined?(ActionView)
97
- require_lib('action_view_subscriber')
98
- end
99
- if defined?(ActiveSupport::Cache::Store)
100
- require_lib('active_support_cache_subscriber')
101
- end
102
- if defined?(ActionController::Base)
103
- require_lib('action_controller_extension')
104
- end
105
- if defined?(ActiveSupport::Benchmarkable)
106
- require_lib('active_support_benchmarkable_extension')
107
- end
108
- rescue => e
109
- if UnionStationHooks.config[:initialize_from_check]
110
- # The union_station_hooks_core gem already reported the error
111
- # to Union Station.
112
- STDERR.puts(' *** WARNING: an error occurred while initializing ' \
113
- 'the Union Station Rails hooks. This is because you did not ' \
114
- 'initialize the Union Station hooks from an initializer file. ' \
115
- 'Please create an initializer file ' \
116
- '`config/initializers/union_station.rb` in which you call ' \
117
- "this:\n\n" \
118
- " if defined?(UnionStationHooks)\n" \
119
- " UnionStationHooks.initialize!\n" \
120
- " end\n\n" \
121
- "The error is as follows:\n" \
122
- "#{e} (#{e.class})\n " +
123
- e.backtrace.join("\n "))
124
- else
125
- raise e
126
- end
127
- end
128
-
129
- @@initialized = true
130
-
131
- true
132
- end
133
-
134
- # Returns whether the Union Station hooks are initialized.
135
- def initialized?
136
- @@initialized
137
- end
138
-
139
- # Returns whether the Union Station hooks should be initialized. If this
140
- # method returns false, then {UnionStationHooksRails.initialize!} doesn't
141
- # do anything.
142
- #
143
- # This method only returns true if ActiveSupport >= 3 is currently loaded.
144
- def should_initialize?
145
- if defined?(::ActiveSupport) && !defined?(::ActiveSupport::VERSION)
146
- require 'active_support/version'
147
- end
148
- defined?(::ActiveSupport) && ::ActiveSupport::VERSION::MAJOR >= 3
149
- end
150
-
151
- # Returns whether this `union_station_hooks_rails` gem is bundled with
152
- # Passenger (as opposed to a standalone gem added to the Gemfile).
153
- # See the README and the file `hacking/Vendoring.md` in the
154
- # `union_station_hooks_core` gem for information about how Passenger
155
- # bundles `union_station_hooks_*` gems.
156
- #
157
- # @private
158
- def vendored?
159
- @@vendored
160
- end
161
-
162
- # @private
163
- def vendored=(val)
164
- @@vendored = val
165
- end
166
-
167
- # @private
168
- def require_lib(name)
169
- require("#{LIBROOT}/union_station_hooks_rails/#{name}")
170
- end
171
-
172
- # @private
173
- def require_and_check_union_station_hooks_core
174
- if !defined?(UnionStationHooks::VERSION_STRING)
175
- require 'union_station_hooks_core'
176
- end
177
-
178
- # If you update the dependency version here, also update
179
- # the version in the gemspec and in the Gemfile.
180
- compatible = UnionStationHooks::MAJOR_VERSION == 2 &&
181
- ush_core_minor_and_tiny_version_compatible?
182
- if !compatible
183
- raise "This version of the union_station_hooks_rails gem " \
184
- "(#{VERSION_STRING}) is only compatible with the " \
185
- "union_station_hooks_core gem 2.x.x, starting from v2.0.3. " \
186
- "However, you have loaded union_station_hooks_core #{UnionStationHooks::VERSION_STRING}"
187
- end
188
- end
189
-
190
- # @private
191
- def ush_core_minor_and_tiny_version_compatible?
192
- UnionStationHooks::MINOR_VERSION >= 1 ||
193
- UnionStationHooks::TINY_VERSION >= 4
194
- end
195
- end
196
- end
197
-
198
- UnionStationHooksRails.require_lib('version')
199
- UnionStationHooksRails.require_and_check_union_station_hooks_core
200
- UnionStationHooks.initializers << UnionStationHooksRails
@@ -1,45 +0,0 @@
1
- # Union Station - https://www.unionstationapp.com/
2
- # Copyright (c) 2010-2015 Phusion Holding B.V.
3
- #
4
- # "Union Station" and "Passenger" are trademarks of Phusion Holding B.V.
5
- #
6
- # Permission is hereby granted, free of charge, to any person obtaining a copy
7
- # of this software and associated documentation files (the "Software"), to deal
8
- # in the Software without restriction, including without limitation the rights
9
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- # copies of the Software, and to permit persons to whom the Software is
11
- # furnished to do so, subject to the following conditions:
12
- #
13
- # The above copyright notice and this permission notice shall be included in
14
- # all copies or substantial portions of the Software.
15
- #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
- # THE SOFTWARE.
23
-
24
-
25
- module UnionStationHooksRails
26
- module ActionControllerExtension
27
- def process_action(action, *args)
28
- reporter = request.env['union_station_hooks']
29
- return super if !reporter
30
-
31
- options = {
32
- :controller_name => self.class.name,
33
- :action_name => action_name,
34
- :method => request.request_method
35
- }
36
- reporter.log_controller_action_block(options) do
37
- super
38
- end
39
- end
40
- end
41
- end
42
-
43
- ActionController::Base.class_eval do
44
- include UnionStationHooksRails::ActionControllerExtension
45
- end
@@ -1,55 +0,0 @@
1
- # Union Station - https://www.unionstationapp.com/
2
- # Copyright (c) 2015 Phusion Holding B.V.
3
- #
4
- # "Union Station" and "Passenger" are trademarks of Phusion Holding B.V.
5
- #
6
- # Permission is hereby granted, free of charge, to any person obtaining a copy
7
- # of this software and associated documentation files (the "Software"), to deal
8
- # in the Software without restriction, including without limitation the rights
9
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- # copies of the Software, and to permit persons to whom the Software is
11
- # furnished to do so, subject to the following conditions:
12
- #
13
- # The above copyright notice and this permission notice shall be included in
14
- # all copies or substantial portions of the Software.
15
- #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
- # THE SOFTWARE.
23
-
24
- module UnionStationHooksRails
25
- class ActionViewSubscriber < ActiveSupport::LogSubscriber
26
- def render_collection(event)
27
- log_view_rendering(event)
28
- end
29
-
30
- def render_template(event)
31
- log_view_rendering(event)
32
- end
33
-
34
- def render_partial(event)
35
- log_view_rendering(event)
36
- end
37
-
38
- private
39
-
40
- def log_view_rendering(event)
41
- reporter = Thread.current[:union_station_hooks]
42
- return if !reporter
43
-
44
- UnionStationHooks.call_event_pre_hook(event)
45
- reporter.log_view_rendering(
46
- :begin_time => event.time,
47
- :end_time => UnionStationHooks.now,
48
- :name => event.payload[:identifier],
49
- :has_error => event.payload[:exception]
50
- )
51
- end
52
- end
53
- end
54
-
55
- UnionStationHooksRails::ActionViewSubscriber.attach_to(:action_view)