passenger 2.1.3 → 2.2.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.
- data/DEVELOPERS.TXT +2 -0
- data/INSTALL +3 -1
- data/LICENSE +19 -355
- data/NEWS +3 -0
- data/README +11 -4
- data/Rakefile +435 -236
- data/bin/passenger-config +20 -14
- data/bin/passenger-install-apache2-module +67 -201
- data/bin/passenger-install-nginx-module +477 -0
- data/bin/passenger-make-enterprisey +17 -12
- data/bin/passenger-memory-stats +33 -23
- data/bin/passenger-spawn-server +17 -12
- data/bin/passenger-status +18 -13
- data/bin/passenger-stress-test +17 -12
- data/doc/{Users guide.html → Users guide Apache.html } +79 -61
- data/doc/{Users guide.txt → Users guide Apache.txt } +43 -939
- data/doc/Users guide Nginx.html +2276 -0
- data/doc/Users guide Nginx.txt +776 -0
- data/doc/cxxapi/ApplicationPoolServer_8h-source.html +9 -4
- data/doc/cxxapi/ApplicationPool_8h-source.html +9 -4
- data/doc/cxxapi/Application_8h-source.html +26 -21
- data/doc/cxxapi/Bucket_8h-source.html +54 -44
- data/doc/cxxapi/CachedFileStat_8h-source.html +9 -4
- data/doc/cxxapi/Configuration_8h-source.html +357 -339
- data/doc/cxxapi/DirectoryMapper_8h-source.html +294 -280
- data/doc/cxxapi/DummySpawnManager_8h-source.html +9 -4
- data/doc/cxxapi/Exceptions_8h-source.html +9 -4
- data/doc/cxxapi/FileChecker_8h-source.html +9 -4
- data/doc/cxxapi/Hooks_8h-source.html +50 -40
- data/doc/cxxapi/Logging_8h-source.html +9 -4
- data/doc/cxxapi/MessageChannel_8h-source.html +20 -15
- data/doc/cxxapi/PoolOptions_8h-source.html +10 -5
- data/doc/cxxapi/SpawnManager_8h-source.html +9 -4
- data/doc/cxxapi/StandardApplicationPool_8h-source.html +10 -5
- data/doc/cxxapi/SystemTime_8h-source.html +9 -4
- data/doc/cxxapi/Utils_8h-source.html +242 -214
- data/doc/cxxapi/annotated.html +4 -28
- data/doc/cxxapi/classClient-members.html +4 -4
- data/doc/cxxapi/classClient.html +14 -11
- data/doc/cxxapi/classHooks-members.html +4 -5
- data/doc/cxxapi/classHooks.html +26 -24
- data/doc/cxxapi/classPassenger_1_1Application-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1Application.html +40 -37
- data/doc/cxxapi/classPassenger_1_1ApplicationPool-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1ApplicationPool.html +95 -92
- data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer.html +26 -23
- data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.map +1 -1
- data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.md5 +1 -1
- data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1Application_1_1Session-members.html +17 -17
- data/doc/cxxapi/classPassenger_1_1Application_1_1Session.html +139 -136
- data/doc/cxxapi/classPassenger_1_1BufferedUpload-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1BufferedUpload.html +13 -10
- data/doc/cxxapi/classPassenger_1_1BusyException-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1BusyException.html +11 -8
- data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +11 -8
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +4 -5
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +45 -43
- data/doc/cxxapi/classPassenger_1_1DummySpawnManager-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1DummySpawnManager.html +13 -10
- data/doc/cxxapi/classPassenger_1_1FileChecker-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1FileChecker.html +22 -19
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +12 -9
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.map +1 -1
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.md5 +1 -1
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1FileSystemException.html +14 -11
- data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.map +1 -1
- data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.md5 +1 -1
- data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1IOException-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1IOException.html +12 -9
- data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.map +1 -1
- data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.md5 +1 -1
- data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1MessageChannel.html +228 -225
- data/doc/cxxapi/classPassenger_1_1RuntimeException-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1RuntimeException.html +11 -8
- data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1SpawnException.html +14 -11
- data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1SpawnManager.html +50 -47
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool.html +73 -70
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.map +1 -1
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.md5 +1 -1
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1SystemException-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1SystemException.html +17 -14
- data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.map +1 -1
- data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.md5 +1 -1
- data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1SystemTime-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1SystemTime.html +14 -11
- data/doc/cxxapi/classes.html +35 -0
- data/doc/cxxapi/definitions_8h-source.html +9 -4
- data/doc/cxxapi/doxygen.css +311 -303
- data/doc/cxxapi/files.html +9 -18
- data/doc/cxxapi/functions.html +5 -224
- data/doc/cxxapi/functions_func.html +5 -185
- data/doc/cxxapi/functions_type.html +4 -4
- data/doc/cxxapi/functions_vars.html +4 -4
- data/doc/cxxapi/graph_legend.dot +19 -19
- data/doc/cxxapi/graph_legend.html +5 -5
- data/doc/cxxapi/graph_legend.png +0 -0
- data/doc/cxxapi/group__Configuration.html +11 -13
- data/doc/cxxapi/group__Configuration.png +0 -0
- data/doc/cxxapi/group__Core.html +10 -12
- data/doc/cxxapi/group__Core.png +0 -0
- data/doc/cxxapi/group__Exceptions.html +5 -7
- data/doc/cxxapi/group__Hooks.html +5 -7
- data/doc/cxxapi/group__Hooks.png +0 -0
- data/doc/cxxapi/group__Support.html +5 -624
- data/doc/cxxapi/hierarchy.html +6 -6
- data/doc/cxxapi/inherit__graph__0.map +1 -1
- data/doc/cxxapi/inherit__graph__0.md5 +1 -1
- data/doc/cxxapi/inherit__graph__0.png +0 -0
- data/doc/cxxapi/inherit__graph__1.map +1 -1
- data/doc/cxxapi/inherit__graph__1.md5 +1 -1
- data/doc/cxxapi/inherit__graph__1.png +0 -0
- data/doc/cxxapi/inherit__graph__10.map +1 -1
- data/doc/cxxapi/inherit__graph__10.md5 +1 -1
- data/doc/cxxapi/inherit__graph__10.png +0 -0
- data/doc/cxxapi/inherit__graph__11.map +1 -1
- data/doc/cxxapi/inherit__graph__11.md5 +1 -1
- data/doc/cxxapi/inherit__graph__11.png +0 -0
- data/doc/cxxapi/inherit__graph__12.map +1 -1
- data/doc/cxxapi/inherit__graph__12.md5 +1 -1
- data/doc/cxxapi/inherit__graph__12.png +0 -0
- data/doc/cxxapi/inherit__graph__13.map +1 -2
- data/doc/cxxapi/inherit__graph__13.md5 +1 -1
- data/doc/cxxapi/inherit__graph__13.png +0 -0
- data/doc/cxxapi/inherit__graph__14.map +2 -1
- data/doc/cxxapi/inherit__graph__14.md5 +1 -1
- data/doc/cxxapi/inherit__graph__14.png +0 -0
- data/doc/cxxapi/inherit__graph__15.map +1 -1
- data/doc/cxxapi/inherit__graph__15.md5 +1 -1
- data/doc/cxxapi/inherit__graph__15.png +0 -0
- data/doc/cxxapi/inherit__graph__16.map +1 -1
- data/doc/cxxapi/inherit__graph__16.md5 +1 -1
- data/doc/cxxapi/inherit__graph__16.png +0 -0
- data/doc/cxxapi/inherit__graph__17.map +1 -1
- data/doc/cxxapi/inherit__graph__17.md5 +1 -1
- data/doc/cxxapi/inherit__graph__17.png +0 -0
- data/doc/cxxapi/inherit__graph__18.map +1 -1
- data/doc/cxxapi/inherit__graph__18.md5 +1 -1
- data/doc/cxxapi/inherit__graph__18.png +0 -0
- data/doc/cxxapi/inherit__graph__19.map +1 -1
- data/doc/cxxapi/inherit__graph__19.md5 +1 -1
- data/doc/cxxapi/inherit__graph__19.png +0 -0
- data/doc/cxxapi/inherit__graph__2.map +1 -1
- data/doc/cxxapi/inherit__graph__2.md5 +1 -1
- data/doc/cxxapi/inherit__graph__2.png +0 -0
- data/doc/cxxapi/inherit__graph__20.map +2 -2
- data/doc/cxxapi/inherit__graph__20.md5 +1 -1
- data/doc/cxxapi/inherit__graph__20.png +0 -0
- data/doc/cxxapi/inherit__graph__21.map +1 -1
- data/doc/cxxapi/inherit__graph__21.md5 +1 -1
- data/doc/cxxapi/inherit__graph__21.png +0 -0
- data/doc/cxxapi/inherit__graph__3.map +1 -1
- data/doc/cxxapi/inherit__graph__3.md5 +1 -1
- data/doc/cxxapi/inherit__graph__3.png +0 -0
- data/doc/cxxapi/inherit__graph__4.map +1 -1
- data/doc/cxxapi/inherit__graph__4.md5 +1 -1
- data/doc/cxxapi/inherit__graph__4.png +0 -0
- data/doc/cxxapi/inherit__graph__5.map +1 -2
- data/doc/cxxapi/inherit__graph__5.md5 +1 -1
- data/doc/cxxapi/inherit__graph__5.png +0 -0
- data/doc/cxxapi/inherit__graph__6.map +2 -1
- data/doc/cxxapi/inherit__graph__6.md5 +1 -1
- data/doc/cxxapi/inherit__graph__6.png +0 -0
- data/doc/cxxapi/inherit__graph__7.map +1 -1
- data/doc/cxxapi/inherit__graph__7.md5 +1 -1
- data/doc/cxxapi/inherit__graph__7.png +0 -0
- data/doc/cxxapi/inherit__graph__8.map +1 -1
- data/doc/cxxapi/inherit__graph__8.md5 +1 -1
- data/doc/cxxapi/inherit__graph__8.png +0 -0
- data/doc/cxxapi/inherit__graph__9.map +1 -1
- data/doc/cxxapi/inherit__graph__9.md5 +1 -1
- data/doc/cxxapi/inherit__graph__9.png +0 -0
- data/doc/cxxapi/inherits.html +41 -41
- data/doc/cxxapi/main.html +4 -4
- data/doc/cxxapi/modules.html +4 -5
- data/doc/cxxapi/structPassenger_1_1AnythingToString-members.html +4 -4
- data/doc/cxxapi/structPassenger_1_1AnythingToString.html +13 -10
- data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html +5 -5
- data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html +16 -13
- data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +4 -4
- data/doc/cxxapi/structPassenger_1_1PoolOptions.html +63 -60
- data/doc/cxxapi/tabs.css +5 -2
- data/doc/cxxapi/tree.html +7 -81
- data/doc/rdoc/classes/ConditionVariable.html +59 -59
- data/doc/rdoc/classes/Exception.html +11 -11
- data/doc/rdoc/classes/GC.html +4 -4
- data/doc/rdoc/classes/IO.html +14 -14
- data/doc/rdoc/classes/PhusionPassenger.html +75 -20
- data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +153 -0
- data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +125 -130
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +236 -236
- data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +213 -213
- data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +28 -28
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +91 -75
- data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +10 -10
- data/doc/rdoc/classes/PhusionPassenger/Application.html +64 -64
- data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +34 -34
- data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +13 -13
- data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +30 -30
- data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +10 -10
- data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +136 -136
- data/doc/rdoc/classes/PhusionPassenger/NativeSupport.html +24 -24
- data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +42 -42
- data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +55 -53
- data/doc/rdoc/classes/PhusionPassenger/Railz.html +1 -1
- data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +25 -30
- data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +23 -23
- data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +116 -117
- data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +22 -22
- data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +118 -124
- data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +10 -10
- data/doc/rdoc/classes/PhusionPassenger/Utils.html +354 -354
- data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +9 -9
- data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +37 -37
- data/doc/rdoc/classes/PlatformInfo.html +282 -261
- data/doc/rdoc/classes/RakeExtensions.html +7 -7
- data/doc/rdoc/classes/Signal.html +26 -26
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/DEVELOPERS_TXT.html +6 -1
- data/doc/rdoc/files/README.html +15 -6
- data/doc/rdoc/files/ext/phusion_passenger/native_support_c.html +1 -1
- data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +129 -0
- data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +20 -13
- data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +19 -13
- data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +19 -13
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +31 -1
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +31 -1
- data/doc/rdoc/files/lib/phusion_passenger/application_rb.html +19 -13
- data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +19 -13
- data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +21 -12
- data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +19 -13
- data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +19 -13
- data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +19 -13
- data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +19 -13
- data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +19 -13
- data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +122 -0
- data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +19 -13
- data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +22 -12
- data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +21 -12
- data/doc/rdoc/files/lib/phusion_passenger/railz/application_spawner_rb.html +19 -13
- data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +1 -1
- data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +19 -13
- data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +21 -12
- data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +19 -13
- data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +19 -13
- data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +27 -21
- data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +21 -12
- data/doc/rdoc/files/misc/rake/extensions_rb.html +21 -12
- data/doc/rdoc/fr_class_index.html +1 -0
- data/doc/rdoc/fr_file_index.html +2 -0
- data/doc/rdoc/fr_method_index.html +116 -112
- data/doc/users_guide_snippets/analysis_and_system_maintenance_tools.txt +144 -0
- data/doc/users_guide_snippets/appendix_a_about.txt +13 -0
- data/doc/users_guide_snippets/appendix_b_terminology.txt +63 -0
- data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +304 -0
- data/doc/users_guide_snippets/global_queueing_explained.txt +78 -0
- data/doc/users_guide_snippets/rackup_specifications.txt +75 -0
- data/doc/users_guide_snippets/rails_spawn_method.txt +48 -0
- data/doc/users_guide_snippets/tips.txt +173 -0
- data/ext/apache2/Bucket.cpp +17 -12
- data/ext/apache2/Bucket.h +17 -12
- data/ext/apache2/Configuration.cpp +17 -12
- data/ext/apache2/Configuration.h +27 -14
- data/ext/apache2/DirectoryMapper.h +21 -12
- data/ext/apache2/Hooks.cpp +67 -21
- data/ext/apache2/Hooks.h +17 -12
- data/ext/apache2/mod_passenger.c +17 -12
- data/ext/{apache2 → common}/Application.h +19 -14
- data/ext/{apache2 → common}/ApplicationPool.h +17 -12
- data/ext/{apache2 → common}/ApplicationPoolServer.h +18 -72
- data/ext/{apache2 → common}/ApplicationPoolServerExecutable.cpp +45 -104
- data/ext/common/ApplicationPoolStatusReporter.h +212 -0
- data/ext/{apache2 → common}/CachedFileStat.cpp +17 -12
- data/ext/{apache2 → common}/CachedFileStat.h +17 -12
- data/ext/{apache2 → common}/DummySpawnManager.h +17 -12
- data/ext/{apache2 → common}/Exceptions.h +17 -12
- data/ext/{apache2 → common}/FileChecker.h +17 -12
- data/ext/common/Logging.cpp +65 -0
- data/ext/{apache2 → common}/Logging.h +17 -12
- data/ext/{apache2 → common}/MessageChannel.h +17 -12
- data/ext/{apache2 → common}/PoolOptions.h +17 -12
- data/ext/{apache2 → common}/SpawnManager.h +17 -12
- data/ext/{apache2 → common}/StandardApplicationPool.h +17 -12
- data/ext/common/StaticString.h +147 -0
- data/ext/common/SystemTime.cpp +33 -0
- data/ext/{apache2 → common}/SystemTime.h +17 -12
- data/ext/{apache2 → common}/Utils.cpp +69 -12
- data/ext/{apache2 → common}/Utils.h +41 -12
- data/ext/nginx/Configuration.c +1091 -0
- data/ext/nginx/Configuration.h +71 -0
- data/ext/nginx/ContentHandler.c +1154 -0
- data/ext/nginx/ContentHandler.h +64 -0
- data/ext/nginx/HelperServer.cpp +857 -0
- data/ext/nginx/HttpStatusExtractor.h +161 -0
- data/ext/nginx/ScgiRequestParser.h +317 -0
- data/ext/nginx/StaticContentHandler.c +222 -0
- data/ext/nginx/StaticContentHandler.h +37 -0
- data/ext/nginx/config +41 -0
- data/ext/nginx/ngx_http_passenger_module.c +572 -0
- data/ext/nginx/ngx_http_passenger_module.h +72 -0
- data/ext/oxt/backtrace.cpp +8 -1
- data/ext/oxt/system_calls.cpp +40 -0
- data/ext/oxt/system_calls.hpp +14 -7
- data/ext/phusion_passenger/extconf.rb +17 -12
- data/ext/phusion_passenger/native_support.c +19 -12
- data/lib/phusion_passenger/abstract_installer.rb +196 -0
- data/lib/phusion_passenger/abstract_request_handler.rb +19 -24
- data/lib/phusion_passenger/abstract_server.rb +17 -12
- data/lib/phusion_passenger/abstract_server_collection.rb +17 -12
- data/lib/phusion_passenger/admin_tools.rb +23 -0
- data/lib/phusion_passenger/admin_tools/control_process.rb +39 -13
- data/lib/phusion_passenger/application.rb +17 -12
- data/lib/phusion_passenger/console_text_template.rb +17 -12
- data/lib/phusion_passenger/constants.rb +22 -11
- data/lib/phusion_passenger/dependencies.rb +47 -12
- data/lib/phusion_passenger/events.rb +17 -12
- data/lib/phusion_passenger/exceptions.rb +17 -12
- data/lib/phusion_passenger/html_template.rb +17 -12
- data/lib/phusion_passenger/message_channel.rb +17 -12
- data/lib/phusion_passenger/packaging.rb +39 -0
- data/lib/phusion_passenger/platform_info.rb +48 -22
- data/lib/phusion_passenger/rack/application_spawner.rb +22 -11
- data/lib/phusion_passenger/rack/request_handler.rb +21 -12
- data/lib/phusion_passenger/railz/application_spawner.rb +23 -23
- data/lib/phusion_passenger/railz/framework_spawner.rb +18 -14
- data/lib/phusion_passenger/railz/request_handler.rb +18 -11
- data/lib/phusion_passenger/simple_benchmarking.rb +17 -12
- data/lib/phusion_passenger/spawn_manager.rb +17 -20
- data/lib/phusion_passenger/templates/{apache_must_be_compiled_with_compatible_mpm.txt.erb → apache2/apache_must_be_compiled_with_compatible_mpm.txt.erb} +0 -0
- data/lib/phusion_passenger/templates/{apache2_config_snippets.txt.erb → apache2/config_snippets.txt.erb} +0 -0
- data/lib/phusion_passenger/templates/{deployment_example.txt.erb → apache2/deployment_example.txt.erb} +0 -0
- data/lib/phusion_passenger/templates/{no_write_permission_to_passenger_root.txt.erb → apache2/no_write_permission_to_passenger_root.txt.erb} +0 -0
- data/lib/phusion_passenger/templates/{possible_solutions_for_compilation_and_installation_problems.txt.erb → apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb} +0 -0
- data/lib/phusion_passenger/templates/{run_installer_as_root.txt.erb → apache2/run_installer_as_root.txt.erb} +0 -0
- data/lib/phusion_passenger/templates/{welcome.txt.erb → apache2/welcome.txt.erb} +0 -0
- data/lib/phusion_passenger/templates/nginx/ask_for_extra_configure_flags.txt.erb +8 -0
- data/lib/phusion_passenger/templates/nginx/cannot_write_to_dir.txt.erb +11 -0
- data/lib/phusion_passenger/templates/nginx/config_snippets.txt.erb +17 -0
- data/lib/phusion_passenger/templates/nginx/config_snippets_inserted.txt.erb +20 -0
- data/lib/phusion_passenger/templates/nginx/confirm_extra_configure_flags.txt.erb +5 -0
- data/lib/phusion_passenger/templates/nginx/deployment_example.txt.erb +22 -0
- data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_downloaded.txt.erb +11 -0
- data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_extracted.txt.erb +11 -0
- data/lib/phusion_passenger/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +11 -0
- data/lib/phusion_passenger/templates/nginx/possible_solutions_for_download_and_extraction_problems.txt.erb +20 -0
- data/lib/phusion_passenger/templates/nginx/query_download_and_install.txt.erb +21 -0
- data/lib/phusion_passenger/templates/nginx/run_installer_as_root.txt.erb +8 -0
- data/lib/phusion_passenger/templates/nginx/welcome.txt.erb +15 -0
- data/lib/phusion_passenger/utils.rb +20 -15
- data/lib/phusion_passenger/wsgi/application_spawner.rb +18 -11
- data/lib/phusion_passenger/wsgi/request_handler.py +23 -0
- data/misc/copy_boost_headers.rb +23 -0
- data/misc/find_owner_pipe_leaks.rb +18 -11
- data/misc/rake/cplusplus.rb +18 -11
- data/misc/rake/extensions.rb +21 -14
- data/misc/render_error_pages.rb +18 -11
- data/test/ApplicationPoolServerTest.cpp +1 -3
- data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +1 -1
- data/test/CxxTestMain.cpp +19 -3
- data/test/HttpStatusExtractorTest.cpp +181 -0
- data/test/ScgiRequestParserTest.cpp +337 -0
- data/test/StaticStringTest.cpp +51 -0
- data/test/UtilsTest.cpp +32 -0
- data/test/config.yml.example +5 -0
- data/test/{integration_tests.rb → integration_tests/apache2_tests.rb} +7 -299
- data/test/integration_tests/hello_world_rack_spec.rb +36 -0
- data/test/integration_tests/hello_world_wsgi_spec.rb +41 -0
- data/test/integration_tests/mycook_spec.rb +192 -0
- data/test/integration_tests/nginx_tests.rb +98 -0
- data/test/ruby/rack/application_spawner_spec.rb +40 -0
- data/test/stub/nginx/koi-utf +109 -0
- data/test/stub/nginx/koi-win +103 -0
- data/test/stub/nginx/mime.types +70 -0
- data/test/stub/nginx/nginx.conf.erb +57 -0
- data/test/stub/nginx/win-utf +126 -0
- data/test/stub/rails_apps/mycook/app/controllers/uploads_controller.rb +4 -0
- data/test/stub/rails_apps/mycook/config/routes.rb +1 -1
- data/test/stub/wsgi/passenger_wsgi.pyc +0 -0
- data/test/support/Support.h +40 -0
- data/test/support/nginx_controller.rb +98 -0
- data/test/support/test_helper.rb +79 -0
- metadata +1091 -1028
- data/benchmark/DummyRequestHandler.cpp +0 -101
- data/ext/apache2/Logging.cpp +0 -60
- data/ext/apache2/SystemTime.cpp +0 -28
@@ -85,7 +85,7 @@ given Ruby on Rails Gem version specification.
|
|
85
85
|
|
86
86
|
<div class="sectiontitle">Methods</div>
|
87
87
|
<ul>
|
88
|
-
<li><a href="#
|
88
|
+
<li><a href="#M000090">new</a></li>
|
89
89
|
</ul>
|
90
90
|
|
91
91
|
|
@@ -106,7 +106,7 @@ given Ruby on Rails Gem version specification.
|
|
106
106
|
<div class="sectiontitle">Public Class methods</div>
|
107
107
|
<div class="method">
|
108
108
|
<div class="title">
|
109
|
-
<a name="
|
109
|
+
<a name="M000090"></a><b>new</b>(message, gem_version_spec)
|
110
110
|
</div>
|
111
111
|
<div class="description">
|
112
112
|
<ul>
|
@@ -120,14 +120,14 @@ caused this error.
|
|
120
120
|
</ul>
|
121
121
|
</div>
|
122
122
|
<div class="sourcecode">
|
123
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
124
|
-
<div id="
|
123
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000090_source')" id="l_M000090_source">show source</a> ]</p>
|
124
|
+
<div id="M000090_source" class="dyn-source">
|
125
125
|
<pre>
|
126
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/exceptions.rb, line
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
126
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/exceptions.rb, line 33</span>
|
127
|
+
33: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">message</span>, <span class="ruby-identifier">gem_version_spec</span>)
|
128
|
+
34: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">message</span>)
|
129
|
+
35: <span class="ruby-ivar">@gem_version_spec</span> = <span class="ruby-identifier">gem_version_spec</span>
|
130
|
+
36: <span class="ruby-keyword kw">end</span>
|
131
131
|
</pre>
|
132
132
|
</div>
|
133
133
|
</div>
|
@@ -84,8 +84,8 @@ Class for spawning <a href="../WSGI.html">WSGI</a> applications.
|
|
84
84
|
|
85
85
|
<div class="sectiontitle">Methods</div>
|
86
86
|
<ul>
|
87
|
-
<li><a href="#
|
88
|
-
<li><a href="#
|
87
|
+
<li><a href="#M000037">spawn_application</a></li>
|
88
|
+
<li><a href="#M000038">spawn_application</a></li>
|
89
89
|
</ul>
|
90
90
|
|
91
91
|
<div class="sectiontitle">Included Modules</div>
|
@@ -108,17 +108,17 @@ Class for spawning <a href="../WSGI.html">WSGI</a> applications.
|
|
108
108
|
<div class="sectiontitle">Public Class methods</div>
|
109
109
|
<div class="method">
|
110
110
|
<div class="title">
|
111
|
-
<a name="
|
111
|
+
<a name="M000037"></a><b>spawn_application</b>(*args)
|
112
112
|
</div>
|
113
113
|
<div class="sourcecode">
|
114
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
115
|
-
<div id="
|
114
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000037_source')" id="l_M000037_source">show source</a> ]</p>
|
115
|
+
<div id="M000037_source" class="dyn-source">
|
116
116
|
<pre>
|
117
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/wsgi/application_spawner.rb, line
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
117
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/wsgi/application_spawner.rb, line 36</span>
|
118
|
+
36: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">spawn_application</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
|
119
|
+
37: <span class="ruby-ivar">@@instance</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">ApplicationSpawner</span>.<span class="ruby-identifier">new</span>
|
120
|
+
38: <span class="ruby-ivar">@@instance</span>.<span class="ruby-identifier">spawn_application</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
|
121
|
+
39: <span class="ruby-keyword kw">end</span>
|
122
122
|
</pre>
|
123
123
|
</div>
|
124
124
|
</div>
|
@@ -126,7 +126,7 @@ Class for spawning <a href="../WSGI.html">WSGI</a> applications.
|
|
126
126
|
<div class="sectiontitle">Public Instance methods</div>
|
127
127
|
<div class="method">
|
128
128
|
<div class="title">
|
129
|
-
<a name="
|
129
|
+
<a name="M000038"></a><b>spawn_application</b>(app_root, lower_privilege = true, lowest_user = "nobody", environment = "production")
|
130
130
|
</div>
|
131
131
|
<div class="description">
|
132
132
|
<p>
|
@@ -149,33 +149,33 @@ exit() during startup.
|
|
149
149
|
</ul>
|
150
150
|
</div>
|
151
151
|
<div class="sourcecode">
|
152
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
153
|
-
<div id="
|
152
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000038_source')" id="l_M000038_source">show source</a> ]</p>
|
153
|
+
<div id="M000038_source" class="dyn-source">
|
154
154
|
<pre>
|
155
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/wsgi/application_spawner.rb, line
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
155
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/wsgi/application_spawner.rb, line 49</span>
|
156
|
+
49: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">spawn_application</span>(<span class="ruby-identifier">app_root</span>, <span class="ruby-identifier">lower_privilege</span> = <span class="ruby-keyword kw">true</span>, <span class="ruby-identifier">lowest_user</span> = <span class="ruby-value str">"nobody"</span>, <span class="ruby-identifier">environment</span> = <span class="ruby-value str">"production"</span>)
|
157
|
+
50: <span class="ruby-identifier">a</span>, <span class="ruby-identifier">b</span> = <span class="ruby-constant">UNIXSocket</span>.<span class="ruby-identifier">pair</span>
|
158
|
+
51: <span class="ruby-identifier">pid</span> = <span class="ruby-identifier">safe_fork</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">do</span>
|
159
|
+
52: <span class="ruby-identifier">a</span>.<span class="ruby-identifier">close</span>
|
160
|
+
53:
|
161
|
+
54: <span class="ruby-identifier">file_descriptors_to_leave_open</span> = [<span class="ruby-value">0</span>, <span class="ruby-value">1</span>, <span class="ruby-value">2</span>, <span class="ruby-identifier">b</span>.<span class="ruby-identifier">fileno</span>]
|
162
|
+
55: <span class="ruby-constant">NativeSupport</span>.<span class="ruby-identifier">close_all_file_descriptors</span>(<span class="ruby-identifier">file_descriptors_to_leave_open</span>)
|
163
|
+
56: <span class="ruby-identifier">close_all_io_objects_for_fds</span>(<span class="ruby-identifier">file_descriptors_to_leave_open</span>)
|
164
|
+
57:
|
165
|
+
58: <span class="ruby-identifier">run</span>(<span class="ruby-constant">MessageChannel</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">b</span>), <span class="ruby-identifier">app_root</span>, <span class="ruby-identifier">lower_privilege</span>, <span class="ruby-identifier">lowest_user</span>, <span class="ruby-identifier">environment</span>)
|
166
|
+
59: <span class="ruby-keyword kw">end</span>
|
167
|
+
60: <span class="ruby-identifier">b</span>.<span class="ruby-identifier">close</span>
|
168
|
+
61: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">waitpid</span>(<span class="ruby-identifier">pid</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
|
169
|
+
62:
|
170
|
+
63: <span class="ruby-identifier">channel</span> = <span class="ruby-constant">MessageChannel</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">a</span>)
|
171
|
+
64: <span class="ruby-identifier">pid</span>, <span class="ruby-identifier">socket_name</span>, <span class="ruby-identifier">socket_type</span> = <span class="ruby-identifier">channel</span>.<span class="ruby-identifier">read</span>
|
172
|
+
65: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pid</span>.<span class="ruby-identifier">nil?</span>
|
173
|
+
66: <span class="ruby-identifier">raise</span> <span class="ruby-constant">IOError</span>, <span class="ruby-value str">"Connection closed"</span>
|
174
|
+
67: <span class="ruby-keyword kw">end</span>
|
175
|
+
68: <span class="ruby-identifier">owner_pipe</span> = <span class="ruby-identifier">channel</span>.<span class="ruby-identifier">recv_io</span>
|
176
|
+
69: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">Application</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@app_root</span>, <span class="ruby-identifier">pid</span>, <span class="ruby-identifier">socket_name</span>,
|
177
|
+
70: <span class="ruby-identifier">socket_type</span>, <span class="ruby-identifier">owner_pipe</span>)
|
178
|
+
71: <span class="ruby-keyword kw">end</span>
|
179
179
|
</pre>
|
180
180
|
</div>
|
181
181
|
</div>
|
@@ -155,14 +155,14 @@ The absolute path to the Apache 2 ‘bin’ directory.
|
|
155
155
|
<p class="source-link">[ <a href="javascript:toggleSource('M000019_source')" id="l_M000019_source">show source</a> ]</p>
|
156
156
|
<div id="M000019_source" class="dyn-source">
|
157
157
|
<pre>
|
158
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
158
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 312</span>
|
159
|
+
312: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apache2_bindir</span>
|
160
|
+
313: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">apxs2</span>.<span class="ruby-identifier">nil?</span>
|
161
|
+
314: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
|
162
|
+
315: <span class="ruby-keyword kw">else</span>
|
163
|
+
316: <span class="ruby-keyword kw">return</span> <span class="ruby-node">`#{apxs2} -q BINDIR 2>/dev/null`</span>.<span class="ruby-identifier">strip</span>
|
164
|
+
317: <span class="ruby-keyword kw">end</span>
|
165
|
+
318: <span class="ruby-keyword kw">end</span>
|
166
166
|
</pre>
|
167
167
|
</div>
|
168
168
|
</div>
|
@@ -174,48 +174,69 @@ The absolute path to the Apache 2 ‘bin’ directory.
|
|
174
174
|
<div class="description">
|
175
175
|
<p>
|
176
176
|
The C compiler flags that are necessary to compile an Apache module.
|
177
|
-
|
177
|
+
Possibly includes APR and APU compiler flags.
|
178
178
|
</p>
|
179
179
|
</div>
|
180
180
|
<div class="sourcecode">
|
181
181
|
<p class="source-link">[ <a href="javascript:toggleSource('M000024_source')" id="l_M000024_source">show source</a> ]</p>
|
182
182
|
<div id="M000024_source" class="dyn-source">
|
183
183
|
<pre>
|
184
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
184
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 383</span>
|
185
|
+
383: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apache2_module_cflags</span>(<span class="ruby-identifier">with_apr_flags</span> = <span class="ruby-keyword kw">true</span>)
|
186
|
+
384: <span class="ruby-identifier">flags</span> = [<span class="ruby-value str">"-fPIC"</span>]
|
187
|
+
385: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">with_apr_flags</span>
|
188
|
+
386: <span class="ruby-identifier">flags</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">apr_flags</span>
|
189
|
+
387: <span class="ruby-identifier">flags</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">apu_flags</span>
|
190
|
+
388: <span class="ruby-keyword kw">end</span>
|
191
|
+
389: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">apxs2</span>.<span class="ruby-identifier">nil?</span>
|
192
|
+
390: <span class="ruby-identifier">apxs2_flags</span> = <span class="ruby-node">`#{apxs2} -q CFLAGS`</span>.<span class="ruby-identifier">strip</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">" -I"</span> <span class="ruby-operator"><<</span> <span class="ruby-node">`#{apxs2} -q INCLUDEDIR`</span>.<span class="ruby-identifier">strip</span>
|
193
|
+
391: <span class="ruby-identifier">apxs2_flags</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/-O\d? /</span>, <span class="ruby-value str">''</span>)
|
194
|
+
392:
|
195
|
+
393: <span class="ruby-comment cmt"># Remove flags not supported by GCC</span>
|
196
|
+
394: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/solaris/</span> <span class="ruby-comment cmt"># TODO: Add support for people using SunStudio</span>
|
197
|
+
395: <span class="ruby-comment cmt"># The big problem is Coolstack apxs includes a bunch of solaris -x directives.</span>
|
198
|
+
396: <span class="ruby-identifier">options</span> = <span class="ruby-identifier">apxs2_flags</span>.<span class="ruby-identifier">split</span>
|
199
|
+
397: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">reject!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^\-x/</span> }
|
200
|
+
398: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">reject!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^\-Xa/</span> }
|
201
|
+
399: <span class="ruby-identifier">apxs2_flags</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">' '</span>)
|
202
|
+
400: <span class="ruby-keyword kw">end</span>
|
203
|
+
401:
|
204
|
+
402: <span class="ruby-identifier">apxs2_flags</span>.<span class="ruby-identifier">strip!</span>
|
205
|
+
403: <span class="ruby-identifier">flags</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">apxs2_flags</span>
|
206
|
+
404: <span class="ruby-keyword kw">end</span>
|
207
|
+
405: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">httpd</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&&</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/darwin/</span>
|
208
|
+
406: <span class="ruby-comment cmt"># The default Apache install on OS X is a universal binary.</span>
|
209
|
+
407: <span class="ruby-comment cmt"># Figure out which architectures it's compiled for and do the same</span>
|
210
|
+
408: <span class="ruby-comment cmt"># thing for mod_passenger. We use the 'file' utility to do this.</span>
|
211
|
+
409: <span class="ruby-comment cmt">#</span>
|
212
|
+
410: <span class="ruby-comment cmt"># Running 'file' on the Apache executable usually outputs something</span>
|
213
|
+
411: <span class="ruby-comment cmt"># like this:</span>
|
214
|
+
412: <span class="ruby-comment cmt">#</span>
|
215
|
+
413: <span class="ruby-comment cmt"># /usr/sbin/httpd: Mach-O universal binary with 4 architectures</span>
|
216
|
+
414: <span class="ruby-comment cmt"># /usr/sbin/httpd (for architecture ppc7400): Mach-O executable ppc</span>
|
217
|
+
415: <span class="ruby-comment cmt"># /usr/sbin/httpd (for architecture ppc64): Mach-O 64-bit executable ppc64</span>
|
218
|
+
416: <span class="ruby-comment cmt"># /usr/sbin/httpd (for architecture i386): Mach-O executable i386</span>
|
219
|
+
417: <span class="ruby-comment cmt"># /usr/sbin/httpd (for architecture x86_64): Mach-O 64-bit executable x86_64</span>
|
220
|
+
418: <span class="ruby-comment cmt">#</span>
|
221
|
+
419: <span class="ruby-comment cmt"># But on some machines, it may output just:</span>
|
222
|
+
420: <span class="ruby-comment cmt">#</span>
|
223
|
+
421: <span class="ruby-comment cmt"># /usr/sbin/httpd: Mach-O fat file with 4 architectures</span>
|
224
|
+
422: <span class="ruby-comment cmt">#</span>
|
225
|
+
423: <span class="ruby-comment cmt"># (http://code.google.com/p/phusion-passenger/issues/detail?id=236)</span>
|
226
|
+
424: <span class="ruby-identifier">output</span> = <span class="ruby-node">`file "#{httpd}"`</span>.<span class="ruby-identifier">strip</span>
|
227
|
+
425: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">output</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/Mach-O fat file/</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">output</span> <span class="ruby-operator">!~</span> <span class="ruby-regexp re">/for architecture/</span>
|
228
|
+
426: <span class="ruby-identifier">architectures</span> = [<span class="ruby-value str">"-arch i386 -arch ppc -arch x86_64 -arch ppc64"</span>]
|
229
|
+
427: <span class="ruby-keyword kw">else</span>
|
230
|
+
428: <span class="ruby-identifier">architectures</span> = []
|
231
|
+
429: <span class="ruby-identifier">output</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">"\n"</span>).<span class="ruby-identifier">grep</span>(<span class="ruby-regexp re">/for architecture/</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
|
232
|
+
430: <span class="ruby-identifier">line</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/for architecture (.*?)\)/</span>
|
233
|
+
431: <span class="ruby-identifier">architectures</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"-arch #{$1}"</span>
|
234
|
+
432: <span class="ruby-keyword kw">end</span>
|
235
|
+
433: <span class="ruby-keyword kw">end</span>
|
236
|
+
434: <span class="ruby-identifier">flags</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">architectures</span>.<span class="ruby-identifier">compact</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">' '</span>)
|
237
|
+
435: <span class="ruby-keyword kw">end</span>
|
238
|
+
436: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">flags</span>.<span class="ruby-identifier">compact</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">' '</span>).<span class="ruby-identifier">strip</span>
|
239
|
+
437: <span class="ruby-keyword kw">end</span>
|
219
240
|
</pre>
|
220
241
|
</div>
|
221
242
|
</div>
|
@@ -226,20 +247,20 @@ Includes <a href="PlatformInfo.html#M000021">portability_cflags</a>.
|
|
226
247
|
</div>
|
227
248
|
<div class="description">
|
228
249
|
<p>
|
229
|
-
Linker flags that are necessary for linking an Apache module.
|
230
|
-
|
250
|
+
Linker flags that are necessary for linking an Apache module. Possibly
|
251
|
+
includes APR and APU linker flags.
|
231
252
|
</p>
|
232
253
|
</div>
|
233
254
|
<div class="sourcecode">
|
234
255
|
<p class="source-link">[ <a href="javascript:toggleSource('M000025_source')" id="l_M000025_source">show source</a> ]</p>
|
235
256
|
<div id="M000025_source" class="dyn-source">
|
236
257
|
<pre>
|
237
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
258
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 442</span>
|
259
|
+
442: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apache2_module_ldflags</span>
|
260
|
+
443: <span class="ruby-identifier">flags</span> = <span class="ruby-node">"-fPIC #{apr_libs} #{apu_libs}"</span>
|
261
|
+
444: <span class="ruby-identifier">flags</span>.<span class="ruby-identifier">strip!</span>
|
262
|
+
445: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">flags</span>
|
263
|
+
446: <span class="ruby-keyword kw">end</span>
|
243
264
|
</pre>
|
244
265
|
</div>
|
245
266
|
</div>
|
@@ -257,14 +278,14 @@ The absolute path to the Apache 2 ‘sbin’ directory.
|
|
257
278
|
<p class="source-link">[ <a href="javascript:toggleSource('M000020_source')" id="l_M000020_source">show source</a> ]</p>
|
258
279
|
<div id="M000020_source" class="dyn-source">
|
259
280
|
<pre>
|
260
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
281
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 322</span>
|
282
|
+
322: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apache2_sbindir</span>
|
283
|
+
323: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">apxs2</span>.<span class="ruby-identifier">nil?</span>
|
284
|
+
324: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
|
285
|
+
325: <span class="ruby-keyword kw">else</span>
|
286
|
+
326: <span class="ruby-keyword kw">return</span> <span class="ruby-node">`#{apxs2} -q SBINDIR`</span>.<span class="ruby-identifier">strip</span>
|
287
|
+
327: <span class="ruby-keyword kw">end</span>
|
288
|
+
328: <span class="ruby-keyword kw">end</span>
|
268
289
|
</pre>
|
269
290
|
</div>
|
270
291
|
</div>
|
@@ -283,10 +304,10 @@ href="PlatformInfo.html#M000015">apache2ctl</a>’ binary.
|
|
283
304
|
<p class="source-link">[ <a href="javascript:toggleSource('M000015_source')" id="l_M000015_source">show source</a> ]</p>
|
284
305
|
<div id="M000015_source" class="dyn-source">
|
285
306
|
<pre>
|
286
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
287
|
-
|
288
|
-
|
289
|
-
|
307
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 234</span>
|
308
|
+
234: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apache2ctl</span>
|
309
|
+
235: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">find_apache2_executable</span>(<span class="ruby-value str">'apache2ctl'</span>, <span class="ruby-value str">'apachectl2'</span>, <span class="ruby-value str">'apachectl'</span>)
|
310
|
+
236: <span class="ruby-keyword kw">end</span>
|
290
311
|
</pre>
|
291
312
|
</div>
|
292
313
|
</div>
|
@@ -305,29 +326,29 @@ The absolute path to the ‘apr-config’ or
|
|
305
326
|
<p class="source-link">[ <a href="javascript:toggleSource('M000017_source')" id="l_M000017_source">show source</a> ]</p>
|
306
327
|
<div id="M000017_source" class="dyn-source">
|
307
328
|
<pre>
|
308
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
329
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 258</span>
|
330
|
+
258: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apr_config</span>
|
331
|
+
259: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">env_defined?</span>(<span class="ruby-value str">'APR_CONFIG'</span>)
|
332
|
+
260: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">ENV</span>[<span class="ruby-value str">'APR_CONFIG'</span>]
|
333
|
+
261: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">apxs2</span>.<span class="ruby-identifier">nil?</span>
|
334
|
+
262: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
|
335
|
+
263: <span class="ruby-keyword kw">else</span>
|
336
|
+
264: <span class="ruby-identifier">filename</span> = <span class="ruby-node">`#{apxs2} -q APR_CONFIG 2>/dev/null`</span>.<span class="ruby-identifier">strip</span>
|
337
|
+
265: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">filename</span>.<span class="ruby-identifier">empty?</span>
|
338
|
+
266: <span class="ruby-identifier">apr_bindir</span> = <span class="ruby-node">`#{apxs2} -q APR_BINDIR 2>/dev/null`</span>.<span class="ruby-identifier">strip</span>
|
339
|
+
267: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">apr_bindir</span>.<span class="ruby-identifier">empty?</span>
|
340
|
+
268: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
|
341
|
+
269: <span class="ruby-keyword kw">else</span>
|
342
|
+
270: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">select_executable</span>(<span class="ruby-identifier">apr_bindir</span>,
|
343
|
+
271: <span class="ruby-value str">"apr-1-config"</span>, <span class="ruby-value str">"apr-config"</span>)
|
344
|
+
272: <span class="ruby-keyword kw">end</span>
|
345
|
+
273: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">filename</span>)
|
346
|
+
274: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">filename</span>
|
347
|
+
275: <span class="ruby-keyword kw">else</span>
|
348
|
+
276: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
|
349
|
+
277: <span class="ruby-keyword kw">end</span>
|
350
|
+
278: <span class="ruby-keyword kw">end</span>
|
351
|
+
279: <span class="ruby-keyword kw">end</span>
|
331
352
|
</pre>
|
332
353
|
</div>
|
333
354
|
</div>
|
@@ -350,19 +371,19 @@ won‘t be necessary in that case.
|
|
350
371
|
<p class="source-link">[ <a href="javascript:toggleSource('M000030_source')" id="l_M000030_source">show source</a> ]</p>
|
351
372
|
<div id="M000030_source" class="dyn-source">
|
352
373
|
<pre>
|
353
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
374
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 478</span>
|
375
|
+
478: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apr_config_needed_for_building_apache_modules?</span>
|
376
|
+
479: <span class="ruby-identifier">filename</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-node">"/tmp/passenger-platform-check-#{Process.pid}.c"</span>)
|
377
|
+
480: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">filename</span>, <span class="ruby-value str">"w"</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span>
|
378
|
+
481: <span class="ruby-identifier">f</span>.<span class="ruby-identifier">puts</span>(<span class="ruby-value str">"#include <apr.h>"</span>)
|
379
|
+
482: <span class="ruby-keyword kw">end</span>
|
380
|
+
483: <span class="ruby-keyword kw">begin</span>
|
381
|
+
484: <span class="ruby-keyword kw">return</span> <span class="ruby-operator">!</span><span class="ruby-identifier">system</span>(<span class="ruby-node">"(gcc #{apache2_module_cflags(false)} -c '#{filename}' -o '#{filename}.o') >/dev/null 2>/dev/null"</span>)
|
382
|
+
485: <span class="ruby-keyword kw">ensure</span>
|
383
|
+
486: <span class="ruby-constant">File</span>.<span class="ruby-identifier">unlink</span>(<span class="ruby-identifier">filename</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
|
384
|
+
487: <span class="ruby-constant">File</span>.<span class="ruby-identifier">unlink</span>(<span class="ruby-node">"#{filename}.o"</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
|
385
|
+
488: <span class="ruby-keyword kw">end</span>
|
386
|
+
489: <span class="ruby-keyword kw">end</span>
|
366
387
|
</pre>
|
367
388
|
</div>
|
368
389
|
</div>
|
@@ -380,10 +401,10 @@ The C compiler flags that are necessary for programs that use APR.
|
|
380
401
|
<p class="source-link">[ <a href="javascript:toggleSource('M000026_source')" id="l_M000026_source">show source</a> ]</p>
|
381
402
|
<div id="M000026_source" class="dyn-source">
|
382
403
|
<pre>
|
383
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
384
|
-
|
385
|
-
|
386
|
-
|
404
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 450</span>
|
405
|
+
450: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apr_flags</span>
|
406
|
+
451: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">determine_apr_info</span>[<span class="ruby-value">0</span>]
|
407
|
+
452: <span class="ruby-keyword kw">end</span>
|
387
408
|
</pre>
|
388
409
|
</div>
|
389
410
|
</div>
|
@@ -401,10 +422,10 @@ The linker flags that are necessary for linking programs that use APR.
|
|
401
422
|
<p class="source-link">[ <a href="javascript:toggleSource('M000027_source')" id="l_M000027_source">show source</a> ]</p>
|
402
423
|
<div id="M000027_source" class="dyn-source">
|
403
424
|
<pre>
|
404
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
405
|
-
|
406
|
-
|
407
|
-
|
425
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 455</span>
|
426
|
+
455: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apr_libs</span>
|
427
|
+
456: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">determine_apr_info</span>[<span class="ruby-value">1</span>]
|
428
|
+
457: <span class="ruby-keyword kw">end</span>
|
408
429
|
</pre>
|
409
430
|
</div>
|
410
431
|
</div>
|
@@ -423,29 +444,29 @@ The absolute path to the ‘apu-config’ or
|
|
423
444
|
<p class="source-link">[ <a href="javascript:toggleSource('M000018_source')" id="l_M000018_source">show source</a> ]</p>
|
424
445
|
<div id="M000018_source" class="dyn-source">
|
425
446
|
<pre>
|
426
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
447
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 283</span>
|
448
|
+
283: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apu_config</span>
|
449
|
+
284: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">env_defined?</span>(<span class="ruby-value str">'APU_CONFIG'</span>)
|
450
|
+
285: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">ENV</span>[<span class="ruby-value str">'APU_CONFIG'</span>]
|
451
|
+
286: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">apxs2</span>.<span class="ruby-identifier">nil?</span>
|
452
|
+
287: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
|
453
|
+
288: <span class="ruby-keyword kw">else</span>
|
454
|
+
289: <span class="ruby-identifier">filename</span> = <span class="ruby-node">`#{apxs2} -q APU_CONFIG 2>/dev/null`</span>.<span class="ruby-identifier">strip</span>
|
455
|
+
290: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">filename</span>.<span class="ruby-identifier">empty?</span>
|
456
|
+
291: <span class="ruby-identifier">apu_bindir</span> = <span class="ruby-node">`#{apxs2} -q APU_BINDIR 2>/dev/null`</span>.<span class="ruby-identifier">strip</span>
|
457
|
+
292: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">apu_bindir</span>.<span class="ruby-identifier">empty?</span>
|
458
|
+
293: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
|
459
|
+
294: <span class="ruby-keyword kw">else</span>
|
460
|
+
295: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">select_executable</span>(<span class="ruby-identifier">apu_bindir</span>,
|
461
|
+
296: <span class="ruby-value str">"apu-1-config"</span>, <span class="ruby-value str">"apu-config"</span>)
|
462
|
+
297: <span class="ruby-keyword kw">end</span>
|
463
|
+
298: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">filename</span>)
|
464
|
+
299: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">filename</span>
|
465
|
+
300: <span class="ruby-keyword kw">else</span>
|
466
|
+
301: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
|
467
|
+
302: <span class="ruby-keyword kw">end</span>
|
468
|
+
303: <span class="ruby-keyword kw">end</span>
|
469
|
+
304: <span class="ruby-keyword kw">end</span>
|
449
470
|
</pre>
|
450
471
|
</div>
|
451
472
|
</div>
|
@@ -463,10 +484,10 @@ The C compiler flags that are necessary for programs that use APR-Util.
|
|
463
484
|
<p class="source-link">[ <a href="javascript:toggleSource('M000028_source')" id="l_M000028_source">show source</a> ]</p>
|
464
485
|
<div id="M000028_source" class="dyn-source">
|
465
486
|
<pre>
|
466
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
467
|
-
|
468
|
-
|
469
|
-
|
487
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 460</span>
|
488
|
+
460: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apu_flags</span>
|
489
|
+
461: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">determine_apu_info</span>[<span class="ruby-value">0</span>]
|
490
|
+
462: <span class="ruby-keyword kw">end</span>
|
470
491
|
</pre>
|
471
492
|
</div>
|
472
493
|
</div>
|
@@ -484,10 +505,10 @@ The linker flags that are necessary for linking programs that use APR-Util.
|
|
484
505
|
<p class="source-link">[ <a href="javascript:toggleSource('M000029_source')" id="l_M000029_source">show source</a> ]</p>
|
485
506
|
<div id="M000029_source" class="dyn-source">
|
486
507
|
<pre>
|
487
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
488
|
-
|
489
|
-
|
490
|
-
|
508
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 465</span>
|
509
|
+
465: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apu_libs</span>
|
510
|
+
466: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">determine_apu_info</span>[<span class="ruby-value">1</span>]
|
511
|
+
467: <span class="ruby-keyword kw">end</span>
|
491
512
|
</pre>
|
492
513
|
</div>
|
493
514
|
</div>
|
@@ -507,19 +528,19 @@ found.
|
|
507
528
|
<p class="source-link">[ <a href="javascript:toggleSource('M000014_source')" id="l_M000014_source">show source</a> ]</p>
|
508
529
|
<div id="M000014_source" class="dyn-source">
|
509
530
|
<pre>
|
510
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
531
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 219</span>
|
532
|
+
219: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apxs2</span>
|
533
|
+
220: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">env_defined?</span>(<span class="ruby-value str">"APXS2"</span>)
|
534
|
+
221: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">ENV</span>[<span class="ruby-value str">"APXS2"</span>]
|
535
|
+
222: <span class="ruby-keyword kw">end</span>
|
536
|
+
223: [<span class="ruby-value str">'apxs2'</span>, <span class="ruby-value str">'apxs'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span><span class="ruby-operator">|</span>
|
537
|
+
224: <span class="ruby-identifier">command</span> = <span class="ruby-identifier">find_command</span>(<span class="ruby-identifier">name</span>)
|
538
|
+
225: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">command</span>.<span class="ruby-identifier">nil?</span>
|
539
|
+
226: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">command</span>
|
540
|
+
227: <span class="ruby-keyword kw">end</span>
|
541
|
+
228: <span class="ruby-keyword kw">end</span>
|
542
|
+
229: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
|
543
|
+
230: <span class="ruby-keyword kw">end</span>
|
523
544
|
</pre>
|
524
545
|
</div>
|
525
546
|
</div>
|
@@ -538,17 +559,17 @@ information.
|
|
538
559
|
<p class="source-link">[ <a href="javascript:toggleSource('M000023_source')" id="l_M000023_source">show source</a> ]</p>
|
539
560
|
<div id="M000023_source" class="dyn-source">
|
540
561
|
<pre>
|
541
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
562
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 370</span>
|
563
|
+
370: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">debugging_cflags</span>
|
564
|
+
371: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/openbsd/</span>
|
565
|
+
372: <span class="ruby-comment cmt"># According to OpenBSD's pthreads man page, pthreads do not work</span>
|
566
|
+
373: <span class="ruby-comment cmt"># correctly when an app is compiled with -g. It recommends using</span>
|
567
|
+
374: <span class="ruby-comment cmt"># -ggdb instead.</span>
|
568
|
+
375: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'-ggdb'</span>
|
569
|
+
376: <span class="ruby-keyword kw">else</span>
|
570
|
+
377: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'-g'</span>
|
571
|
+
378: <span class="ruby-keyword kw">end</span>
|
572
|
+
379: <span class="ruby-keyword kw">end</span>
|
552
573
|
</pre>
|
553
574
|
</div>
|
554
575
|
</div>
|
@@ -571,16 +592,16 @@ always behave correctly, for some weird reason.
|
|
571
592
|
<p class="source-link">[ <a href="javascript:toggleSource('M000011_source')" id="l_M000011_source">show source</a> ]</p>
|
572
593
|
<div id="M000011_source" class="dyn-source">
|
573
594
|
<pre>
|
574
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
595
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 188</span>
|
596
|
+
188: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">find_command</span>(<span class="ruby-identifier">name</span>)
|
597
|
+
189: <span class="ruby-constant">ENV</span>[<span class="ruby-value str">'PATH'</span>].<span class="ruby-identifier">split</span>(<span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">PATH_SEPARATOR</span>).<span class="ruby-identifier">detect</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">directory</span><span class="ruby-operator">|</span>
|
598
|
+
190: <span class="ruby-identifier">path</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">directory</span>, <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>)
|
599
|
+
191: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">executable?</span>(<span class="ruby-identifier">path</span>)
|
600
|
+
192: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">path</span>
|
601
|
+
193: <span class="ruby-keyword kw">end</span>
|
602
|
+
194: <span class="ruby-keyword kw">end</span>
|
603
|
+
195: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
|
604
|
+
196: <span class="ruby-keyword kw">end</span>
|
584
605
|
</pre>
|
585
606
|
</div>
|
586
607
|
</div>
|
@@ -600,22 +621,22 @@ href="PlatformInfo.html#M000016">httpd</a>’, ‘httpd2’,
|
|
600
621
|
<p class="source-link">[ <a href="javascript:toggleSource('M000016_source')" id="l_M000016_source">show source</a> ]</p>
|
601
622
|
<div id="M000016_source" class="dyn-source">
|
602
623
|
<pre>
|
603
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
624
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 240</span>
|
625
|
+
240: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">httpd</span>
|
626
|
+
241: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">env_defined?</span>(<span class="ruby-value str">'HTTPD'</span>)
|
627
|
+
242: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">ENV</span>[<span class="ruby-value str">'HTTPD'</span>]
|
628
|
+
243: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">apxs2</span>.<span class="ruby-identifier">nil?</span>
|
629
|
+
244: [<span class="ruby-value str">"apache2"</span>, <span class="ruby-value str">"httpd2"</span>, <span class="ruby-value str">"apache"</span>, <span class="ruby-value str">"httpd"</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span><span class="ruby-operator">|</span>
|
630
|
+
245: <span class="ruby-identifier">command</span> = <span class="ruby-identifier">find_command</span>(<span class="ruby-identifier">name</span>)
|
631
|
+
246: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">command</span>.<span class="ruby-identifier">nil?</span>
|
632
|
+
247: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">command</span>
|
633
|
+
248: <span class="ruby-keyword kw">end</span>
|
634
|
+
249: <span class="ruby-keyword kw">end</span>
|
635
|
+
250: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
|
636
|
+
251: <span class="ruby-keyword kw">else</span>
|
637
|
+
252: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">find_apache2_executable</span>(<span class="ruby-node">`#{apxs2} -q TARGET`</span>.<span class="ruby-identifier">strip</span>)
|
638
|
+
253: <span class="ruby-keyword kw">end</span>
|
639
|
+
254: <span class="ruby-keyword kw">end</span>
|
619
640
|
</pre>
|
620
641
|
</div>
|
621
642
|
</div>
|
@@ -634,14 +655,14 @@ most Unices).
|
|
634
655
|
<p class="source-link">[ <a href="javascript:toggleSource('M000031_source')" id="l_M000031_source">show source</a> ]</p>
|
635
656
|
<div id="M000031_source" class="dyn-source">
|
636
657
|
<pre>
|
637
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
638
|
-
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
658
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 493</span>
|
659
|
+
493: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">library_extension</span>
|
660
|
+
494: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/darwin/</span>
|
661
|
+
495: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">"bundle"</span>
|
662
|
+
496: <span class="ruby-keyword kw">else</span>
|
663
|
+
497: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">"so"</span>
|
664
|
+
498: <span class="ruby-keyword kw">end</span>
|
665
|
+
499: <span class="ruby-keyword kw">end</span>
|
645
666
|
</pre>
|
646
667
|
</div>
|
647
668
|
</div>
|
@@ -660,36 +681,36 @@ system is not Linux.
|
|
660
681
|
<p class="source-link">[ <a href="javascript:toggleSource('M000032_source')" id="l_M000032_source">show source</a> ]</p>
|
661
682
|
<div id="M000032_source" class="dyn-source">
|
662
683
|
<pre>
|
663
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
684
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 502</span>
|
685
|
+
502: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">linux_distro</span>
|
686
|
+
503: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">!~</span> <span class="ruby-regexp re">/linux/</span>
|
687
|
+
504: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
|
688
|
+
505: <span class="ruby-keyword kw">end</span>
|
689
|
+
506: <span class="ruby-identifier">lsb_release</span> = <span class="ruby-identifier">read_file</span>(<span class="ruby-value str">"/etc/lsb-release"</span>)
|
690
|
+
507: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lsb_release</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/Ubuntu/</span>
|
691
|
+
508: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">:ubuntu</span>
|
692
|
+
509: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-value str">"/etc/debian_version"</span>)
|
693
|
+
510: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">:debian</span>
|
694
|
+
511: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-value str">"/etc/redhat-release"</span>)
|
695
|
+
512: <span class="ruby-identifier">redhat_release</span> = <span class="ruby-identifier">read_file</span>(<span class="ruby-value str">"/etc/redhat-release"</span>)
|
696
|
+
513: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">redhat_release</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/CentOS/</span>
|
697
|
+
514: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">:centos</span>
|
698
|
+
515: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">redhat_release</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/Fedora/</span> <span class="ruby-comment cmt"># is this correct?</span>
|
699
|
+
516: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">:fedora</span>
|
700
|
+
517: <span class="ruby-keyword kw">else</span>
|
701
|
+
518: <span class="ruby-comment cmt"># On official RHEL distros, the content is in the form of</span>
|
702
|
+
519: <span class="ruby-comment cmt"># "Red Hat Enterprise Linux Server release 5.1 (Tikanga)"</span>
|
703
|
+
520: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">:rhel</span>
|
704
|
+
521: <span class="ruby-keyword kw">end</span>
|
705
|
+
522: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-value str">"/etc/suse-release"</span>)
|
706
|
+
523: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">:suse</span>
|
707
|
+
524: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-value str">"/etc/gentoo-release"</span>)
|
708
|
+
525: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">:gentoo</span>
|
709
|
+
526: <span class="ruby-keyword kw">else</span>
|
710
|
+
527: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">:unknown</span>
|
711
|
+
528: <span class="ruby-keyword kw">end</span>
|
712
|
+
529: <span class="ruby-comment cmt"># TODO: Slackware, Mandrake/Mandriva</span>
|
713
|
+
530: <span class="ruby-keyword kw">end</span>
|
693
714
|
</pre>
|
694
715
|
</div>
|
695
716
|
</div>
|
@@ -709,24 +730,24 @@ the compiler.
|
|
709
730
|
<p class="source-link">[ <a href="javascript:toggleSource('M000021_source')" id="l_M000021_source">show source</a> ]</p>
|
710
731
|
<div id="M000021_source" class="dyn-source">
|
711
732
|
<pre>
|
712
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
733
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 338</span>
|
734
|
+
338: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">portability_cflags</span>
|
735
|
+
339: <span class="ruby-comment cmt"># _GLIBCPP__PTHREADS is for fixing Boost compilation on OpenBSD.</span>
|
736
|
+
340: <span class="ruby-identifier">flags</span> = [<span class="ruby-value str">"-D_REENTRANT -I/usr/local/include"</span>]
|
737
|
+
341: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/solaris/</span>
|
738
|
+
342: <span class="ruby-identifier">flags</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">'-D_XOPEN_SOURCE=500 -D_XPG4_2 -D__EXTENSIONS__ -D__SOLARIS__'</span>
|
739
|
+
343: <span class="ruby-identifier">flags</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">'-DBOOST_HAS_STDINT_H'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/solaris2.9/</span>
|
740
|
+
344: <span class="ruby-identifier">flags</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">'-D__SOLARIS9__ -DBOOST__STDC_CONSTANT_MACROS_DEFINED'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/solaris2.9/</span>
|
741
|
+
345: <span class="ruby-identifier">flags</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">'-mcpu=ultrasparc'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/sparc/</span>
|
742
|
+
346: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/openbsd/</span>
|
743
|
+
347: <span class="ruby-identifier">flags</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">'-DBOOST_HAS_STDINT_H -D_GLIBCPP__PTHREADS'</span>
|
744
|
+
348: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/aix/</span>
|
745
|
+
349: <span class="ruby-identifier">flags</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">'-DOXT_DISABLE_BACKTRACES'</span>
|
746
|
+
350: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/sparc-linux/</span>
|
747
|
+
351: <span class="ruby-identifier">flags</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">'-DBOOST_SP_USE_PTHREADS'</span>
|
748
|
+
352: <span class="ruby-keyword kw">end</span>
|
749
|
+
353: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">flags</span>.<span class="ruby-identifier">compact</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">" "</span>).<span class="ruby-identifier">strip</span>
|
750
|
+
354: <span class="ruby-keyword kw">end</span>
|
730
751
|
</pre>
|
731
752
|
</div>
|
732
753
|
</div>
|
@@ -746,14 +767,14 @@ the linker.
|
|
746
767
|
<p class="source-link">[ <a href="javascript:toggleSource('M000022_source')" id="l_M000022_source">show source</a> ]</p>
|
747
768
|
<div id="M000022_source" class="dyn-source">
|
748
769
|
<pre>
|
749
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
770
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 360</span>
|
771
|
+
360: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">portability_ldflags</span>
|
772
|
+
361: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/solaris/</span>
|
773
|
+
362: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'-lxnet -lrt -lsocket -lnsl -lpthread'</span>
|
774
|
+
363: <span class="ruby-keyword kw">else</span>
|
775
|
+
364: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'-lpthread'</span>
|
776
|
+
365: <span class="ruby-keyword kw">end</span>
|
777
|
+
366: <span class="ruby-keyword kw">end</span>
|
757
778
|
</pre>
|
758
779
|
</div>
|
759
780
|
</div>
|
@@ -772,10 +793,10 @@ current Ruby interpreter. Returns nil if it doesn‘t exist.
|
|
772
793
|
<p class="source-link">[ <a href="javascript:toggleSource('M000012_source')" id="l_M000012_source">show source</a> ]</p>
|
773
794
|
<div id="M000012_source" class="dyn-source">
|
774
795
|
<pre>
|
775
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
776
|
-
|
777
|
-
|
778
|
-
|
796
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 205</span>
|
797
|
+
205: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">rake</span>
|
798
|
+
206: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">locate_ruby_executable</span>(<span class="ruby-value str">'rake'</span>)
|
799
|
+
207: <span class="ruby-keyword kw">end</span>
|
779
800
|
</pre>
|
780
801
|
</div>
|
781
802
|
</div>
|
@@ -794,10 +815,10 @@ current Ruby interpreter. Returns nil if it doesn‘t exist.
|
|
794
815
|
<p class="source-link">[ <a href="javascript:toggleSource('M000013_source')" id="l_M000013_source">show source</a> ]</p>
|
795
816
|
<div id="M000013_source" class="dyn-source">
|
796
817
|
<pre>
|
797
|
-
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line
|
798
|
-
|
799
|
-
|
800
|
-
|
818
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 213</span>
|
819
|
+
213: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">rspec</span>
|
820
|
+
214: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">locate_ruby_executable</span>(<span class="ruby-value str">'spec'</span>)
|
821
|
+
215: <span class="ruby-keyword kw">end</span>
|
801
822
|
</pre>
|
802
823
|
</div>
|
803
824
|
</div>
|