passenger 1.0.1
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 +52 -0
- data/INSTALL +2 -0
- data/LICENSE +352 -0
- data/README +19 -0
- data/Rakefile +435 -0
- data/benchmark/DummyRequestHandler.cpp +101 -0
- data/benchmark/accept_vs_socketpair_vs_named_pipes.rb +126 -0
- data/benchmark/dispatcher.rb +46 -0
- data/benchmark/overhead_of_password_checking.rb +81 -0
- data/benchmark/socket_connections_vs_persistent_pipe.rb +99 -0
- data/benchmark/unix_sockets_vs_pipes.rb +83 -0
- data/bin/passenger-install-apache2-module +274 -0
- data/bin/passenger-spawn-server +38 -0
- data/doc/ApplicationPool algorithm.txt +290 -0
- data/doc/Architectural overview.html +740 -0
- data/doc/Architectural overview.txt +339 -0
- data/doc/Doxyfile +241 -0
- data/doc/Security of user switching support.html +605 -0
- data/doc/Security of user switching support.txt +197 -0
- data/doc/Users guide.html +1356 -0
- data/doc/Users guide.txt +707 -0
- data/doc/cxxapi/ApplicationPoolClientServer_8h-source.html +673 -0
- data/doc/cxxapi/ApplicationPool_8h-source.html +189 -0
- data/doc/cxxapi/Application_8h-source.html +402 -0
- data/doc/cxxapi/Configuration_8h-source.html +145 -0
- data/doc/cxxapi/DummySpawnManager_8h-source.html +121 -0
- data/doc/cxxapi/Exceptions_8h-source.html +188 -0
- data/doc/cxxapi/Hooks_8h-source.html +58 -0
- data/doc/cxxapi/Logging_8h-source.html +103 -0
- data/doc/cxxapi/MessageChannel_8h-source.html +483 -0
- data/doc/cxxapi/SpawnManager_8h-source.html +552 -0
- data/doc/cxxapi/StandardApplicationPool_8h-source.html +554 -0
- data/doc/cxxapi/Utils_8h-source.html +176 -0
- data/doc/cxxapi/annotated.html +43 -0
- data/doc/cxxapi/classPassenger_1_1Application-members.html +33 -0
- data/doc/cxxapi/classPassenger_1_1Application.html +224 -0
- data/doc/cxxapi/classPassenger_1_1ApplicationPool-members.html +34 -0
- data/doc/cxxapi/classPassenger_1_1ApplicationPool.html +272 -0
- data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer-members.html +31 -0
- data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer.html +216 -0
- data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.map +1 -0
- data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.md5 +1 -0
- data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1Application_1_1Session-members.html +36 -0
- data/doc/cxxapi/classPassenger_1_1Application_1_1Session.html +294 -0
- data/doc/cxxapi/classPassenger_1_1DummySpawnManager-members.html +28 -0
- data/doc/cxxapi/classPassenger_1_1DummySpawnManager.html +46 -0
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +28 -0
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +46 -0
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.map +1 -0
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.md5 +1 -0
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1IOException-members.html +28 -0
- data/doc/cxxapi/classPassenger_1_1IOException.html +49 -0
- data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.map +1 -0
- data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.md5 +1 -0
- data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +42 -0
- data/doc/cxxapi/classPassenger_1_1MessageChannel.html +568 -0
- data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +30 -0
- data/doc/cxxapi/classPassenger_1_1SpawnException.html +74 -0
- data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +32 -0
- data/doc/cxxapi/classPassenger_1_1SpawnManager.html +234 -0
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool-members.html +35 -0
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool.html +320 -0
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.map +1 -0
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.md5 +1 -0
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1SystemException-members.html +32 -0
- data/doc/cxxapi/classPassenger_1_1SystemException.html +144 -0
- data/doc/cxxapi/definitions_8h-source.html +25 -0
- data/doc/cxxapi/doxygen.css +358 -0
- data/doc/cxxapi/doxygen.png +0 -0
- data/doc/cxxapi/files.html +35 -0
- data/doc/cxxapi/ftv2blank.png +0 -0
- data/doc/cxxapi/ftv2doc.png +0 -0
- data/doc/cxxapi/ftv2folderclosed.png +0 -0
- data/doc/cxxapi/ftv2folderopen.png +0 -0
- data/doc/cxxapi/ftv2lastnode.png +0 -0
- data/doc/cxxapi/ftv2link.png +0 -0
- data/doc/cxxapi/ftv2mlastnode.png +0 -0
- data/doc/cxxapi/ftv2mnode.png +0 -0
- data/doc/cxxapi/ftv2node.png +0 -0
- data/doc/cxxapi/ftv2plastnode.png +0 -0
- data/doc/cxxapi/ftv2pnode.png +0 -0
- data/doc/cxxapi/ftv2vertline.png +0 -0
- data/doc/cxxapi/functions.html +160 -0
- data/doc/cxxapi/functions_func.html +158 -0
- data/doc/cxxapi/functions_type.html +40 -0
- data/doc/cxxapi/graph_legend.dot +22 -0
- data/doc/cxxapi/graph_legend.html +82 -0
- data/doc/cxxapi/graph_legend.png +0 -0
- data/doc/cxxapi/group__Configuration.html +231 -0
- data/doc/cxxapi/group__Configuration.png +0 -0
- data/doc/cxxapi/group__Core.html +39 -0
- data/doc/cxxapi/group__Core.png +0 -0
- data/doc/cxxapi/group__Exceptions.html +32 -0
- data/doc/cxxapi/group__Hooks.html +41 -0
- data/doc/cxxapi/group__Hooks.png +0 -0
- data/doc/cxxapi/group__Support.html +258 -0
- data/doc/cxxapi/hierarchy.html +51 -0
- data/doc/cxxapi/index.html +11 -0
- data/doc/cxxapi/inherit__graph__0.map +1 -0
- data/doc/cxxapi/inherit__graph__0.md5 +1 -0
- data/doc/cxxapi/inherit__graph__0.png +0 -0
- data/doc/cxxapi/inherit__graph__1.map +1 -0
- data/doc/cxxapi/inherit__graph__1.md5 +1 -0
- data/doc/cxxapi/inherit__graph__1.png +0 -0
- data/doc/cxxapi/inherit__graph__2.map +1 -0
- data/doc/cxxapi/inherit__graph__2.md5 +1 -0
- data/doc/cxxapi/inherit__graph__2.png +0 -0
- data/doc/cxxapi/inherit__graph__3.map +1 -0
- data/doc/cxxapi/inherit__graph__3.md5 +1 -0
- data/doc/cxxapi/inherit__graph__3.png +0 -0
- data/doc/cxxapi/inherit__graph__4.map +2 -0
- data/doc/cxxapi/inherit__graph__4.md5 +1 -0
- data/doc/cxxapi/inherit__graph__4.png +0 -0
- data/doc/cxxapi/inherit__graph__5.map +1 -0
- data/doc/cxxapi/inherit__graph__5.md5 +1 -0
- data/doc/cxxapi/inherit__graph__5.png +0 -0
- data/doc/cxxapi/inherit__graph__6.map +1 -0
- data/doc/cxxapi/inherit__graph__6.md5 +1 -0
- data/doc/cxxapi/inherit__graph__6.png +0 -0
- data/doc/cxxapi/inherit__graph__7.map +5 -0
- data/doc/cxxapi/inherit__graph__7.md5 +1 -0
- data/doc/cxxapi/inherit__graph__7.png +0 -0
- data/doc/cxxapi/inherit__graph__8.map +1 -0
- data/doc/cxxapi/inherit__graph__8.md5 +1 -0
- data/doc/cxxapi/inherit__graph__8.png +0 -0
- data/doc/cxxapi/inherit__graph__9.map +1 -0
- data/doc/cxxapi/inherit__graph__9.md5 +1 -0
- data/doc/cxxapi/inherit__graph__9.png +0 -0
- data/doc/cxxapi/inherits.html +61 -0
- data/doc/cxxapi/main.html +22 -0
- data/doc/cxxapi/modules.html +29 -0
- data/doc/cxxapi/structPassenger_1_1AnythingToString-members.html +28 -0
- data/doc/cxxapi/structPassenger_1_1AnythingToString.html +44 -0
- data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html +28 -0
- data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html +44 -0
- data/doc/cxxapi/tab_b.gif +0 -0
- data/doc/cxxapi/tab_l.gif +0 -0
- data/doc/cxxapi/tab_r.gif +0 -0
- data/doc/cxxapi/tabs.css +102 -0
- data/doc/cxxapi/tree.html +138 -0
- data/doc/definitions.h +5 -0
- data/doc/images/by_sa.png +0 -0
- data/doc/images/icons/README +5 -0
- data/doc/images/icons/callouts/1.png +0 -0
- data/doc/images/icons/callouts/10.png +0 -0
- data/doc/images/icons/callouts/11.png +0 -0
- data/doc/images/icons/callouts/12.png +0 -0
- data/doc/images/icons/callouts/13.png +0 -0
- data/doc/images/icons/callouts/14.png +0 -0
- data/doc/images/icons/callouts/15.png +0 -0
- data/doc/images/icons/callouts/2.png +0 -0
- data/doc/images/icons/callouts/3.png +0 -0
- data/doc/images/icons/callouts/4.png +0 -0
- data/doc/images/icons/callouts/5.png +0 -0
- data/doc/images/icons/callouts/6.png +0 -0
- data/doc/images/icons/callouts/7.png +0 -0
- data/doc/images/icons/callouts/8.png +0 -0
- data/doc/images/icons/callouts/9.png +0 -0
- data/doc/images/icons/caution.png +0 -0
- data/doc/images/icons/example.png +0 -0
- data/doc/images/icons/home.png +0 -0
- data/doc/images/icons/important.png +0 -0
- data/doc/images/icons/next.png +0 -0
- data/doc/images/icons/note.png +0 -0
- data/doc/images/icons/prev.png +0 -0
- data/doc/images/icons/tip.png +0 -0
- data/doc/images/icons/up.png +0 -0
- data/doc/images/icons/warning.png +0 -0
- data/doc/images/passenger_architecture.png +0 -0
- data/doc/images/passenger_architecture.svg +401 -0
- data/doc/images/phusion_banner.png +0 -0
- data/doc/images/spawn_server_architecture.png +0 -0
- data/doc/images/spawn_server_architecture.svg +655 -0
- data/doc/images/typical_isolated_web_application.png +0 -0
- data/doc/images/typical_isolated_web_application.svg +213 -0
- data/doc/rdoc/classes/ConditionVariable.html +158 -0
- data/doc/rdoc/classes/Exception.html +120 -0
- data/doc/rdoc/classes/GC.html +113 -0
- data/doc/rdoc/classes/IO.html +150 -0
- data/doc/rdoc/classes/Passenger.html +117 -0
- data/doc/rdoc/classes/Passenger/AbstractServer.html +609 -0
- data/doc/rdoc/classes/Passenger/AbstractServer/ServerAlreadyStarted.html +97 -0
- data/doc/rdoc/classes/Passenger/AbstractServer/ServerError.html +96 -0
- data/doc/rdoc/classes/Passenger/AbstractServer/ServerNotStarted.html +97 -0
- data/doc/rdoc/classes/Passenger/AbstractServer/UnknownMessage.html +96 -0
- data/doc/rdoc/classes/Passenger/AppInitError.html +106 -0
- data/doc/rdoc/classes/Passenger/Application.html +297 -0
- data/doc/rdoc/classes/Passenger/ApplicationSpawner.html +334 -0
- data/doc/rdoc/classes/Passenger/ApplicationSpawner/Error.html +98 -0
- data/doc/rdoc/classes/Passenger/CGIFixed.html +200 -0
- data/doc/rdoc/classes/Passenger/ConsoleTextTemplate.html +172 -0
- data/doc/rdoc/classes/Passenger/FrameworkInitError.html +144 -0
- data/doc/rdoc/classes/Passenger/FrameworkSpawner.html +429 -0
- data/doc/rdoc/classes/Passenger/FrameworkSpawner/Error.html +98 -0
- data/doc/rdoc/classes/Passenger/HTMLTemplate.html +175 -0
- data/doc/rdoc/classes/Passenger/InitializationError.html +141 -0
- data/doc/rdoc/classes/Passenger/MessageChannel.html +488 -0
- data/doc/rdoc/classes/Passenger/NativeSupport.html +320 -0
- data/doc/rdoc/classes/Passenger/RequestHandler.html +415 -0
- data/doc/rdoc/classes/Passenger/SpawnManager.html +373 -0
- data/doc/rdoc/classes/Passenger/UnknownError.html +125 -0
- data/doc/rdoc/classes/Passenger/Utils.html +352 -0
- data/doc/rdoc/classes/Passenger/VersionNotFound.html +140 -0
- data/doc/rdoc/classes/PlatformInfo.html +279 -0
- data/doc/rdoc/classes/RakeExtensions.html +197 -0
- data/doc/rdoc/created.rid +1 -0
- data/doc/rdoc/files/DEVELOPERS_TXT.html +178 -0
- data/doc/rdoc/files/README.html +120 -0
- data/doc/rdoc/files/ext/passenger/native_support_c.html +92 -0
- data/doc/rdoc/files/lib/passenger/abstract_server_rb.html +121 -0
- data/doc/rdoc/files/lib/passenger/application_rb.html +119 -0
- data/doc/rdoc/files/lib/passenger/application_spawner_rb.html +128 -0
- data/doc/rdoc/files/lib/passenger/cgi_fixed_rb.html +127 -0
- data/doc/rdoc/files/lib/passenger/console_text_template_rb.html +118 -0
- data/doc/rdoc/files/lib/passenger/dependencies_rb.html +124 -0
- data/doc/rdoc/files/lib/passenger/framework_spawner_rb.html +135 -0
- data/doc/rdoc/files/lib/passenger/html_template_rb.html +118 -0
- data/doc/rdoc/files/lib/passenger/message_channel_rb.html +118 -0
- data/doc/rdoc/files/lib/passenger/platform_info_rb.html +118 -0
- data/doc/rdoc/files/lib/passenger/request_handler_rb.html +122 -0
- data/doc/rdoc/files/lib/passenger/simple_benchmarking_rb.html +114 -0
- data/doc/rdoc/files/lib/passenger/spawn_manager_rb.html +124 -0
- data/doc/rdoc/files/lib/passenger/utils_rb.html +123 -0
- data/doc/rdoc/files/lib/rake/extensions_rb.html +122 -0
- data/doc/rdoc/fr_class_index.html +76 -0
- data/doc/rdoc/fr_file_index.html +64 -0
- data/doc/rdoc/fr_method_index.html +125 -0
- data/doc/rdoc/index.html +26 -0
- data/doc/rdoc/rdoc-style.css +187 -0
- data/doc/template/horo.rb +613 -0
- data/ext/apache2/Application.h +382 -0
- data/ext/apache2/ApplicationPool.h +169 -0
- data/ext/apache2/ApplicationPoolClientServer.h +653 -0
- data/ext/apache2/Configuration.cpp +294 -0
- data/ext/apache2/Configuration.h +125 -0
- data/ext/apache2/DummySpawnManager.h +101 -0
- data/ext/apache2/Exceptions.h +168 -0
- data/ext/apache2/Hooks.cpp +630 -0
- data/ext/apache2/Hooks.h +38 -0
- data/ext/apache2/LICENSE-CNRI.TXT +64 -0
- data/ext/apache2/Logging.cpp +48 -0
- data/ext/apache2/Logging.h +83 -0
- data/ext/apache2/MessageChannel.h +463 -0
- data/ext/apache2/SpawnManager.h +532 -0
- data/ext/apache2/StandardApplicationPool.h +534 -0
- data/ext/apache2/Utils.cpp +108 -0
- data/ext/apache2/Utils.h +156 -0
- data/ext/apache2/mod_passenger.c +31 -0
- data/ext/boost/LICENSE.TXT +23 -0
- data/ext/boost/VERSION.TXT +1 -0
- data/ext/boost/assert.hpp +37 -0
- data/ext/boost/bind.hpp +1651 -0
- data/ext/boost/bind/apply.hpp +74 -0
- data/ext/boost/bind/arg.hpp +36 -0
- data/ext/boost/bind/bind_cc.hpp +117 -0
- data/ext/boost/bind/bind_mf_cc.hpp +227 -0
- data/ext/boost/bind/bind_template.hpp +226 -0
- data/ext/boost/bind/make_adaptable.hpp +187 -0
- data/ext/boost/bind/mem_fn_cc.hpp +103 -0
- data/ext/boost/bind/mem_fn_template.hpp +1020 -0
- data/ext/boost/bind/mem_fn_vw.hpp +130 -0
- data/ext/boost/bind/placeholders.hpp +68 -0
- data/ext/boost/bind/protect.hpp +144 -0
- data/ext/boost/bind/storage.hpp +475 -0
- data/ext/boost/checked_delete.hpp +69 -0
- data/ext/boost/config.hpp +70 -0
- data/ext/boost/config/abi/borland_prefix.hpp +27 -0
- data/ext/boost/config/abi/borland_suffix.hpp +12 -0
- data/ext/boost/config/abi/msvc_prefix.hpp +8 -0
- data/ext/boost/config/abi/msvc_suffix.hpp +8 -0
- data/ext/boost/config/abi_prefix.hpp +20 -0
- data/ext/boost/config/abi_suffix.hpp +23 -0
- data/ext/boost/config/auto_link.hpp +363 -0
- data/ext/boost/config/compiler/borland.hpp +190 -0
- data/ext/boost/config/compiler/comeau.hpp +59 -0
- data/ext/boost/config/compiler/common_edg.hpp +62 -0
- data/ext/boost/config/compiler/compaq_cxx.hpp +19 -0
- data/ext/boost/config/compiler/digitalmars.hpp +49 -0
- data/ext/boost/config/compiler/gcc.hpp +105 -0
- data/ext/boost/config/compiler/gcc_xml.hpp +30 -0
- data/ext/boost/config/compiler/greenhills.hpp +28 -0
- data/ext/boost/config/compiler/hp_acc.hpp +72 -0
- data/ext/boost/config/compiler/intel.hpp +158 -0
- data/ext/boost/config/compiler/kai.hpp +35 -0
- data/ext/boost/config/compiler/metrowerks.hpp +104 -0
- data/ext/boost/config/compiler/mpw.hpp +51 -0
- data/ext/boost/config/compiler/sgi_mipspro.hpp +24 -0
- data/ext/boost/config/compiler/sunpro_cc.hpp +92 -0
- data/ext/boost/config/compiler/vacpp.hpp +57 -0
- data/ext/boost/config/compiler/visualc.hpp +178 -0
- data/ext/boost/config/no_tr1/complex.hpp +28 -0
- data/ext/boost/config/no_tr1/functional.hpp +28 -0
- data/ext/boost/config/no_tr1/memory.hpp +28 -0
- data/ext/boost/config/no_tr1/utility.hpp +28 -0
- data/ext/boost/config/platform/aix.hpp +33 -0
- data/ext/boost/config/platform/amigaos.hpp +15 -0
- data/ext/boost/config/platform/beos.hpp +26 -0
- data/ext/boost/config/platform/bsd.hpp +73 -0
- data/ext/boost/config/platform/cygwin.hpp +48 -0
- data/ext/boost/config/platform/hpux.hpp +85 -0
- data/ext/boost/config/platform/irix.hpp +31 -0
- data/ext/boost/config/platform/linux.hpp +98 -0
- data/ext/boost/config/platform/macos.hpp +78 -0
- data/ext/boost/config/platform/qnxnto.hpp +31 -0
- data/ext/boost/config/platform/solaris.hpp +21 -0
- data/ext/boost/config/platform/win32.hpp +58 -0
- data/ext/boost/config/posix_features.hpp +95 -0
- data/ext/boost/config/requires_threads.hpp +92 -0
- data/ext/boost/config/select_compiler_config.hpp +87 -0
- data/ext/boost/config/select_platform_config.hpp +90 -0
- data/ext/boost/config/select_stdlib_config.hpp +68 -0
- data/ext/boost/config/stdlib/dinkumware.hpp +106 -0
- data/ext/boost/config/stdlib/libcomo.hpp +46 -0
- data/ext/boost/config/stdlib/libstdcpp3.hpp +73 -0
- data/ext/boost/config/stdlib/modena.hpp +30 -0
- data/ext/boost/config/stdlib/msl.hpp +59 -0
- data/ext/boost/config/stdlib/roguewave.hpp +127 -0
- data/ext/boost/config/stdlib/sgi.hpp +111 -0
- data/ext/boost/config/stdlib/stlport.hpp +201 -0
- data/ext/boost/config/stdlib/vacpp.hpp +18 -0
- data/ext/boost/config/suffix.hpp +569 -0
- data/ext/boost/config/user.hpp +124 -0
- data/ext/boost/cstdint.hpp +446 -0
- data/ext/boost/detail/bad_weak_ptr.hpp +59 -0
- data/ext/boost/detail/reference_content.hpp +141 -0
- data/ext/boost/detail/shared_count.hpp +376 -0
- data/ext/boost/detail/sp_counted_base.hpp +69 -0
- data/ext/boost/detail/sp_counted_base_cw_ppc.hpp +170 -0
- data/ext/boost/detail/sp_counted_base_cw_x86.hpp +158 -0
- data/ext/boost/detail/sp_counted_base_gcc_ia64.hpp +157 -0
- data/ext/boost/detail/sp_counted_base_gcc_ppc.hpp +181 -0
- data/ext/boost/detail/sp_counted_base_gcc_x86.hpp +173 -0
- data/ext/boost/detail/sp_counted_base_nt.hpp +107 -0
- data/ext/boost/detail/sp_counted_base_pt.hpp +135 -0
- data/ext/boost/detail/sp_counted_base_w32.hpp +130 -0
- data/ext/boost/detail/sp_counted_impl.hpp +232 -0
- data/ext/boost/detail/workaround.hpp +74 -0
- data/ext/boost/format.hpp +59 -0
- data/ext/boost/format/alt_sstream.hpp +176 -0
- data/ext/boost/format/alt_sstream_impl.hpp +296 -0
- data/ext/boost/format/detail/compat_workarounds.hpp +86 -0
- data/ext/boost/format/detail/config_macros.hpp +97 -0
- data/ext/boost/format/detail/msvc_disambiguater.hpp +56 -0
- data/ext/boost/format/detail/unset_macros.hpp +34 -0
- data/ext/boost/format/detail/workarounds_gcc-2_95.hpp +162 -0
- data/ext/boost/format/detail/workarounds_stlport.hpp +42 -0
- data/ext/boost/format/exceptions.hpp +103 -0
- data/ext/boost/format/feed_args.hpp +267 -0
- data/ext/boost/format/format_class.hpp +143 -0
- data/ext/boost/format/format_fwd.hpp +49 -0
- data/ext/boost/format/format_implementation.hpp +277 -0
- data/ext/boost/format/free_funcs.hpp +70 -0
- data/ext/boost/format/group.hpp +676 -0
- data/ext/boost/format/internals.hpp +199 -0
- data/ext/boost/format/internals_fwd.hpp +60 -0
- data/ext/boost/format/parsing.hpp +491 -0
- data/ext/boost/function.hpp +64 -0
- data/ext/boost/function/detail/function_iterate.hpp +16 -0
- data/ext/boost/function/detail/gen_maybe_include.pl +37 -0
- data/ext/boost/function/detail/maybe_include.hpp +267 -0
- data/ext/boost/function/detail/prologue.hpp +24 -0
- data/ext/boost/function/function0.hpp +12 -0
- data/ext/boost/function/function1.hpp +12 -0
- data/ext/boost/function/function10.hpp +12 -0
- data/ext/boost/function/function2.hpp +12 -0
- data/ext/boost/function/function3.hpp +12 -0
- data/ext/boost/function/function4.hpp +12 -0
- data/ext/boost/function/function5.hpp +12 -0
- data/ext/boost/function/function6.hpp +12 -0
- data/ext/boost/function/function7.hpp +12 -0
- data/ext/boost/function/function8.hpp +12 -0
- data/ext/boost/function/function9.hpp +12 -0
- data/ext/boost/function/function_base.hpp +736 -0
- data/ext/boost/function/function_template.hpp +837 -0
- data/ext/boost/function/gen_function_N.pl +26 -0
- data/ext/boost/function_equal.hpp +28 -0
- data/ext/boost/get_pointer.hpp +29 -0
- data/ext/boost/limits.hpp +144 -0
- data/ext/boost/mem_fn.hpp +389 -0
- data/ext/boost/mpl/O1_size.hpp +40 -0
- data/ext/boost/mpl/O1_size_fwd.hpp +24 -0
- data/ext/boost/mpl/accumulate.hpp +39 -0
- data/ext/boost/mpl/advance.hpp +76 -0
- data/ext/boost/mpl/advance_fwd.hpp +28 -0
- data/ext/boost/mpl/alias.hpp +21 -0
- data/ext/boost/mpl/always.hpp +39 -0
- data/ext/boost/mpl/and.hpp +56 -0
- data/ext/boost/mpl/apply.hpp +225 -0
- data/ext/boost/mpl/apply_fwd.hpp +107 -0
- data/ext/boost/mpl/apply_wrap.hpp +200 -0
- data/ext/boost/mpl/arg.hpp +131 -0
- data/ext/boost/mpl/arg_fwd.hpp +28 -0
- data/ext/boost/mpl/arithmetic.hpp +25 -0
- data/ext/boost/mpl/as_sequence.hpp +38 -0
- data/ext/boost/mpl/assert.hpp +361 -0
- data/ext/boost/mpl/at.hpp +52 -0
- data/ext/boost/mpl/at_fwd.hpp +24 -0
- data/ext/boost/mpl/aux_/O1_size_impl.hpp +87 -0
- data/ext/boost/mpl/aux_/adl_barrier.hpp +48 -0
- data/ext/boost/mpl/aux_/advance_backward.hpp +124 -0
- data/ext/boost/mpl/aux_/advance_forward.hpp +123 -0
- data/ext/boost/mpl/aux_/apply_1st.hpp +35 -0
- data/ext/boost/mpl/aux_/arg_typedef.hpp +31 -0
- data/ext/boost/mpl/aux_/arithmetic_op.hpp +92 -0
- data/ext/boost/mpl/aux_/arity.hpp +39 -0
- data/ext/boost/mpl/aux_/arity_spec.hpp +67 -0
- data/ext/boost/mpl/aux_/at_impl.hpp +45 -0
- data/ext/boost/mpl/aux_/back_impl.hpp +43 -0
- data/ext/boost/mpl/aux_/basic_bind.hpp +21 -0
- data/ext/boost/mpl/aux_/begin_end_impl.hpp +100 -0
- data/ext/boost/mpl/aux_/clear_impl.hpp +35 -0
- data/ext/boost/mpl/aux_/common_name_wknd.hpp +34 -0
- data/ext/boost/mpl/aux_/comparison_op.hpp +83 -0
- data/ext/boost/mpl/aux_/config/adl.hpp +40 -0
- data/ext/boost/mpl/aux_/config/arrays.hpp +30 -0
- data/ext/boost/mpl/aux_/config/bind.hpp +33 -0
- data/ext/boost/mpl/aux_/config/compiler.hpp +64 -0
- data/ext/boost/mpl/aux_/config/ctps.hpp +30 -0
- data/ext/boost/mpl/aux_/config/dependent_nttp.hpp +35 -0
- data/ext/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp +27 -0
- data/ext/boost/mpl/aux_/config/dtp.hpp +46 -0
- data/ext/boost/mpl/aux_/config/eti.hpp +47 -0
- data/ext/boost/mpl/aux_/config/forwarding.hpp +27 -0
- data/ext/boost/mpl/aux_/config/gcc.hpp +23 -0
- data/ext/boost/mpl/aux_/config/has_apply.hpp +32 -0
- data/ext/boost/mpl/aux_/config/has_xxx.hpp +33 -0
- data/ext/boost/mpl/aux_/config/integral.hpp +38 -0
- data/ext/boost/mpl/aux_/config/intel.hpp +21 -0
- data/ext/boost/mpl/aux_/config/lambda.hpp +32 -0
- data/ext/boost/mpl/aux_/config/msvc.hpp +21 -0
- data/ext/boost/mpl/aux_/config/msvc_typename.hpp +26 -0
- data/ext/boost/mpl/aux_/config/nttp.hpp +41 -0
- data/ext/boost/mpl/aux_/config/operators.hpp +33 -0
- data/ext/boost/mpl/aux_/config/overload_resolution.hpp +29 -0
- data/ext/boost/mpl/aux_/config/preprocessor.hpp +39 -0
- data/ext/boost/mpl/aux_/config/static_constant.hpp +25 -0
- data/ext/boost/mpl/aux_/config/ttp.hpp +39 -0
- data/ext/boost/mpl/aux_/config/typeof.hpp +38 -0
- data/ext/boost/mpl/aux_/config/use_preprocessed.hpp +19 -0
- data/ext/boost/mpl/aux_/config/workaround.hpp +19 -0
- data/ext/boost/mpl/aux_/contains_impl.hpp +61 -0
- data/ext/boost/mpl/aux_/count_args.hpp +105 -0
- data/ext/boost/mpl/aux_/count_impl.hpp +44 -0
- data/ext/boost/mpl/aux_/empty_impl.hpp +43 -0
- data/ext/boost/mpl/aux_/erase_impl.hpp +69 -0
- data/ext/boost/mpl/aux_/erase_key_impl.hpp +32 -0
- data/ext/boost/mpl/aux_/filter_iter.hpp +140 -0
- data/ext/boost/mpl/aux_/find_if_pred.hpp +31 -0
- data/ext/boost/mpl/aux_/fold_impl.hpp +43 -0
- data/ext/boost/mpl/aux_/fold_impl_body.hpp +365 -0
- data/ext/boost/mpl/aux_/fold_op.hpp +37 -0
- data/ext/boost/mpl/aux_/fold_pred.hpp +37 -0
- data/ext/boost/mpl/aux_/front_impl.hpp +41 -0
- data/ext/boost/mpl/aux_/full_lambda.hpp +350 -0
- data/ext/boost/mpl/aux_/has_apply.hpp +32 -0
- data/ext/boost/mpl/aux_/has_begin.hpp +23 -0
- data/ext/boost/mpl/aux_/has_key_impl.hpp +34 -0
- data/ext/boost/mpl/aux_/has_rebind.hpp +99 -0
- data/ext/boost/mpl/aux_/has_size.hpp +23 -0
- data/ext/boost/mpl/aux_/has_tag.hpp +23 -0
- data/ext/boost/mpl/aux_/has_type.hpp +23 -0
- data/ext/boost/mpl/aux_/include_preprocessed.hpp +42 -0
- data/ext/boost/mpl/aux_/insert_impl.hpp +68 -0
- data/ext/boost/mpl/aux_/insert_range_impl.hpp +77 -0
- data/ext/boost/mpl/aux_/inserter_algorithm.hpp +159 -0
- data/ext/boost/mpl/aux_/integral_wrapper.hpp +93 -0
- data/ext/boost/mpl/aux_/is_msvc_eti_arg.hpp +64 -0
- data/ext/boost/mpl/aux_/iter_apply.hpp +47 -0
- data/ext/boost/mpl/aux_/iter_fold_if_impl.hpp +210 -0
- data/ext/boost/mpl/aux_/iter_fold_impl.hpp +42 -0
- data/ext/boost/mpl/aux_/iter_push_front.hpp +36 -0
- data/ext/boost/mpl/aux_/joint_iter.hpp +120 -0
- data/ext/boost/mpl/aux_/lambda_arity_param.hpp +25 -0
- data/ext/boost/mpl/aux_/lambda_no_ctps.hpp +193 -0
- data/ext/boost/mpl/aux_/lambda_spec.hpp +49 -0
- data/ext/boost/mpl/aux_/lambda_support.hpp +169 -0
- data/ext/boost/mpl/aux_/largest_int.hpp +63 -0
- data/ext/boost/mpl/aux_/logical_op.hpp +165 -0
- data/ext/boost/mpl/aux_/msvc_dtw.hpp +68 -0
- data/ext/boost/mpl/aux_/msvc_eti_base.hpp +77 -0
- data/ext/boost/mpl/aux_/msvc_is_class.hpp +58 -0
- data/ext/boost/mpl/aux_/msvc_never_true.hpp +34 -0
- data/ext/boost/mpl/aux_/msvc_type.hpp +62 -0
- data/ext/boost/mpl/aux_/na.hpp +95 -0
- data/ext/boost/mpl/aux_/na_assert.hpp +34 -0
- data/ext/boost/mpl/aux_/na_fwd.hpp +31 -0
- data/ext/boost/mpl/aux_/na_spec.hpp +175 -0
- data/ext/boost/mpl/aux_/nested_type_wknd.hpp +48 -0
- data/ext/boost/mpl/aux_/nttp_decl.hpp +35 -0
- data/ext/boost/mpl/aux_/numeric_cast_utils.hpp +77 -0
- data/ext/boost/mpl/aux_/numeric_op.hpp +311 -0
- data/ext/boost/mpl/aux_/order_impl.hpp +76 -0
- data/ext/boost/mpl/aux_/overload_names.hpp +48 -0
- data/ext/boost/mpl/aux_/partition_op.hpp +58 -0
- data/ext/boost/mpl/aux_/pop_back_impl.hpp +34 -0
- data/ext/boost/mpl/aux_/pop_front_impl.hpp +44 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp +456 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/arg.hpp +117 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp +300 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/bind.hpp +397 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp +558 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/inherit.hpp +139 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/quote.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/template_arity.hpp +40 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp +456 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp +306 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/bind.hpp +403 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp +558 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/inherit.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/quote.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp +40 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp +84 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp +406 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/bind.hpp +515 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp +53 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp +536 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/inherit.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/quote.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/template_arity.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp +84 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp +440 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/bind.hpp +561 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp +558 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/inherit.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/quote.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp +132 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp +132 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/and.hpp +73 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/apply.hpp +166 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp +247 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/bind.hpp +432 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/bitand.hpp +149 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/bitor.hpp +149 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp +149 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/deque.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/divides.hpp +148 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp +293 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/greater.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/inherit.hpp +166 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp +293 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/less.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/list.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/list_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/map.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/minus.hpp +148 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/modulus.hpp +115 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/or.hpp +73 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/plus.hpp +148 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/quote.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp +343 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp +343 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/set.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/set_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp +114 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp +114 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/times.hpp +148 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp +109 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/vector.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/and.hpp +71 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/apply.hpp +160 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp +138 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/bind.hpp +432 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/bitand.hpp +151 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/bitor.hpp +151 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp +151 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/deque.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/divides.hpp +150 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp +245 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/greater.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/inherit.hpp +166 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp +245 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/less.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/list.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/list_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/map.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/minus.hpp +150 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/modulus.hpp +115 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/or.hpp +71 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/plus.hpp +150 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/quote.hpp +116 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/set.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/set_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp +114 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp +114 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/times.hpp +150 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp +109 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/vector.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp +456 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp +440 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/bind.hpp +561 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/inherit.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/quote.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/and.hpp +73 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/apply.hpp +268 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp +50 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp +78 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp +486 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/bind.hpp +590 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp +134 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp +134 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp +134 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/deque.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/divides.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp +245 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp +166 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp +245 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/list.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/map.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/minus.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/or.hpp +73 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/plus.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/quote.hpp +116 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/set.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp +40 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/times.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp +109 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/vector.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp +84 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp +369 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/bind.hpp +466 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp +157 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp +157 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp +157 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/divides.hpp +156 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/greater.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/less.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/minus.hpp +156 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp +111 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/plus.hpp +156 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/quote.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp +110 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp +110 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp +40 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/times.hpp +156 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/and.hpp +64 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/apply.hpp +139 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp +84 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/basic_bind.hpp +440 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/bind.hpp +561 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/bitand.hpp +142 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/bitor.hpp +142 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/bitxor.hpp +142 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/divides.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/equal_to.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/greater.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/greater_equal.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/inherit.hpp +125 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp +228 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/less.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/less_equal.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/minus.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/modulus.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/or.hpp +64 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/plus.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/quote.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/shift_left.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/shift_right.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/template_arity.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/times.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/unpack_args.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessor/add.hpp +65 -0
- data/ext/boost/mpl/aux_/preprocessor/def_params_tail.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessor/default_params.hpp +67 -0
- data/ext/boost/mpl/aux_/preprocessor/enum.hpp +62 -0
- data/ext/boost/mpl/aux_/preprocessor/ext_params.hpp +78 -0
- data/ext/boost/mpl/aux_/preprocessor/filter_params.hpp +28 -0
- data/ext/boost/mpl/aux_/preprocessor/is_seq.hpp +54 -0
- data/ext/boost/mpl/aux_/preprocessor/params.hpp +65 -0
- data/ext/boost/mpl/aux_/preprocessor/partial_spec_params.hpp +32 -0
- data/ext/boost/mpl/aux_/preprocessor/range.hpp +23 -0
- data/ext/boost/mpl/aux_/preprocessor/repeat.hpp +51 -0
- data/ext/boost/mpl/aux_/preprocessor/sub.hpp +65 -0
- data/ext/boost/mpl/aux_/preprocessor/token_equal.hpp +56 -0
- data/ext/boost/mpl/aux_/preprocessor/tuple.hpp +29 -0
- data/ext/boost/mpl/aux_/ptr_to_ref.hpp +46 -0
- data/ext/boost/mpl/aux_/push_back_impl.hpp +55 -0
- data/ext/boost/mpl/aux_/push_front_impl.hpp +56 -0
- data/ext/boost/mpl/aux_/range_c/O1_size.hpp +31 -0
- data/ext/boost/mpl/aux_/range_c/back.hpp +34 -0
- data/ext/boost/mpl/aux_/range_c/empty.hpp +37 -0
- data/ext/boost/mpl/aux_/range_c/front.hpp +33 -0
- data/ext/boost/mpl/aux_/range_c/iterator.hpp +106 -0
- data/ext/boost/mpl/aux_/range_c/size.hpp +37 -0
- data/ext/boost/mpl/aux_/range_c/tag.hpp +24 -0
- data/ext/boost/mpl/aux_/reverse_fold_impl.hpp +44 -0
- data/ext/boost/mpl/aux_/reverse_fold_impl_body.hpp +412 -0
- data/ext/boost/mpl/aux_/reverse_iter_fold_impl.hpp +43 -0
- data/ext/boost/mpl/aux_/sequence_wrapper.hpp +292 -0
- data/ext/boost/mpl/aux_/shift_op.hpp +87 -0
- data/ext/boost/mpl/aux_/single_element_iter.hpp +118 -0
- data/ext/boost/mpl/aux_/size_impl.hpp +52 -0
- data/ext/boost/mpl/aux_/sort_impl.hpp +121 -0
- data/ext/boost/mpl/aux_/static_cast.hpp +27 -0
- data/ext/boost/mpl/aux_/template_arity.hpp +189 -0
- data/ext/boost/mpl/aux_/template_arity_fwd.hpp +23 -0
- data/ext/boost/mpl/aux_/test.hpp +32 -0
- data/ext/boost/mpl/aux_/test/assert.hpp +29 -0
- data/ext/boost/mpl/aux_/test/data.hpp +25 -0
- data/ext/boost/mpl/aux_/test/test_case.hpp +21 -0
- data/ext/boost/mpl/aux_/traits_lambda_spec.hpp +56 -0
- data/ext/boost/mpl/aux_/transform_iter.hpp +123 -0
- data/ext/boost/mpl/aux_/type_wrapper.hpp +47 -0
- data/ext/boost/mpl/aux_/unwrap.hpp +47 -0
- data/ext/boost/mpl/aux_/value_wknd.hpp +89 -0
- data/ext/boost/mpl/aux_/yes_no.hpp +58 -0
- data/ext/boost/mpl/back.hpp +39 -0
- data/ext/boost/mpl/back_fwd.hpp +24 -0
- data/ext/boost/mpl/back_inserter.hpp +34 -0
- data/ext/boost/mpl/base.hpp +35 -0
- data/ext/boost/mpl/begin.hpp +19 -0
- data/ext/boost/mpl/begin_end.hpp +57 -0
- data/ext/boost/mpl/begin_end_fwd.hpp +27 -0
- data/ext/boost/mpl/bind.hpp +547 -0
- data/ext/boost/mpl/bind_fwd.hpp +99 -0
- data/ext/boost/mpl/bitand.hpp +23 -0
- data/ext/boost/mpl/bitor.hpp +23 -0
- data/ext/boost/mpl/bitwise.hpp +24 -0
- data/ext/boost/mpl/bitxor.hpp +23 -0
- data/ext/boost/mpl/bool.hpp +39 -0
- data/ext/boost/mpl/bool_fwd.hpp +33 -0
- data/ext/boost/mpl/clear.hpp +39 -0
- data/ext/boost/mpl/clear_fwd.hpp +24 -0
- data/ext/boost/mpl/comparison.hpp +24 -0
- data/ext/boost/mpl/contains.hpp +41 -0
- data/ext/boost/mpl/contains_fwd.hpp +25 -0
- data/ext/boost/mpl/copy.hpp +58 -0
- data/ext/boost/mpl/copy_if.hpp +96 -0
- data/ext/boost/mpl/count.hpp +40 -0
- data/ext/boost/mpl/count_fwd.hpp +24 -0
- data/ext/boost/mpl/count_if.hpp +79 -0
- data/ext/boost/mpl/deque.hpp +58 -0
- data/ext/boost/mpl/deref.hpp +41 -0
- data/ext/boost/mpl/distance.hpp +78 -0
- data/ext/boost/mpl/distance_fwd.hpp +28 -0
- data/ext/boost/mpl/divides.hpp +21 -0
- data/ext/boost/mpl/empty.hpp +39 -0
- data/ext/boost/mpl/empty_base.hpp +59 -0
- data/ext/boost/mpl/empty_fwd.hpp +24 -0
- data/ext/boost/mpl/empty_sequence.hpp +42 -0
- data/ext/boost/mpl/end.hpp +19 -0
- data/ext/boost/mpl/equal.hpp +112 -0
- data/ext/boost/mpl/equal_to.hpp +21 -0
- data/ext/boost/mpl/erase.hpp +42 -0
- data/ext/boost/mpl/erase_fwd.hpp +24 -0
- data/ext/boost/mpl/erase_key.hpp +41 -0
- data/ext/boost/mpl/erase_key_fwd.hpp +24 -0
- data/ext/boost/mpl/eval_if.hpp +71 -0
- data/ext/boost/mpl/filter_view.hpp +46 -0
- data/ext/boost/mpl/find.hpp +38 -0
- data/ext/boost/mpl/find_if.hpp +50 -0
- data/ext/boost/mpl/fold.hpp +48 -0
- data/ext/boost/mpl/for_each.hpp +112 -0
- data/ext/boost/mpl/front.hpp +39 -0
- data/ext/boost/mpl/front_fwd.hpp +24 -0
- data/ext/boost/mpl/front_inserter.hpp +33 -0
- data/ext/boost/mpl/greater.hpp +21 -0
- data/ext/boost/mpl/greater_equal.hpp +21 -0
- data/ext/boost/mpl/has_key.hpp +41 -0
- data/ext/boost/mpl/has_key_fwd.hpp +25 -0
- data/ext/boost/mpl/has_xxx.hpp +233 -0
- data/ext/boost/mpl/identity.hpp +45 -0
- data/ext/boost/mpl/if.hpp +135 -0
- data/ext/boost/mpl/index_if.hpp +60 -0
- data/ext/boost/mpl/index_of.hpp +39 -0
- data/ext/boost/mpl/inherit.hpp +229 -0
- data/ext/boost/mpl/inherit_linearly.hpp +39 -0
- data/ext/boost/mpl/insert.hpp +41 -0
- data/ext/boost/mpl/insert_fwd.hpp +24 -0
- data/ext/boost/mpl/insert_range.hpp +41 -0
- data/ext/boost/mpl/insert_range_fwd.hpp +24 -0
- data/ext/boost/mpl/inserter.hpp +32 -0
- data/ext/boost/mpl/int.hpp +22 -0
- data/ext/boost/mpl/int_fwd.hpp +27 -0
- data/ext/boost/mpl/integral_c.hpp +51 -0
- data/ext/boost/mpl/integral_c_fwd.hpp +32 -0
- data/ext/boost/mpl/integral_c_tag.hpp +26 -0
- data/ext/boost/mpl/is_placeholder.hpp +67 -0
- data/ext/boost/mpl/is_sequence.hpp +112 -0
- data/ext/boost/mpl/iter_fold.hpp +49 -0
- data/ext/boost/mpl/iter_fold_if.hpp +117 -0
- data/ext/boost/mpl/iterator_category.hpp +35 -0
- data/ext/boost/mpl/iterator_range.hpp +42 -0
- data/ext/boost/mpl/iterator_tags.hpp +27 -0
- data/ext/boost/mpl/joint_view.hpp +65 -0
- data/ext/boost/mpl/key_type.hpp +42 -0
- data/ext/boost/mpl/key_type_fwd.hpp +25 -0
- data/ext/boost/mpl/lambda.hpp +29 -0
- data/ext/boost/mpl/lambda_fwd.hpp +57 -0
- data/ext/boost/mpl/less.hpp +21 -0
- data/ext/boost/mpl/less_equal.hpp +21 -0
- data/ext/boost/mpl/limits/arity.hpp +21 -0
- data/ext/boost/mpl/limits/list.hpp +21 -0
- data/ext/boost/mpl/limits/map.hpp +21 -0
- data/ext/boost/mpl/limits/set.hpp +21 -0
- data/ext/boost/mpl/limits/unrolling.hpp +21 -0
- data/ext/boost/mpl/limits/vector.hpp +21 -0
- data/ext/boost/mpl/list.hpp +57 -0
- data/ext/boost/mpl/list/aux_/O1_size.hpp +33 -0
- data/ext/boost/mpl/list/aux_/begin_end.hpp +44 -0
- data/ext/boost/mpl/list/aux_/clear.hpp +34 -0
- data/ext/boost/mpl/list/aux_/empty.hpp +34 -0
- data/ext/boost/mpl/list/aux_/front.hpp +33 -0
- data/ext/boost/mpl/list/aux_/include_preprocessed.hpp +35 -0
- data/ext/boost/mpl/list/aux_/item.hpp +55 -0
- data/ext/boost/mpl/list/aux_/iterator.hpp +76 -0
- data/ext/boost/mpl/list/aux_/numbered.hpp +68 -0
- data/ext/boost/mpl/list/aux_/numbered_c.hpp +71 -0
- data/ext/boost/mpl/list/aux_/pop_front.hpp +34 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list10.hpp +149 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp +164 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list20.hpp +169 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp +173 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list30.hpp +189 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp +183 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list40.hpp +209 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp +193 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list50.hpp +229 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp +203 -0
- data/ext/boost/mpl/list/aux_/push_back.hpp +36 -0
- data/ext/boost/mpl/list/aux_/push_front.hpp +39 -0
- data/ext/boost/mpl/list/aux_/size.hpp +33 -0
- data/ext/boost/mpl/list/aux_/tag.hpp +24 -0
- data/ext/boost/mpl/list/list0.hpp +42 -0
- data/ext/boost/mpl/list/list0_c.hpp +31 -0
- data/ext/boost/mpl/list/list10.hpp +43 -0
- data/ext/boost/mpl/list/list10_c.hpp +43 -0
- data/ext/boost/mpl/list/list20.hpp +43 -0
- data/ext/boost/mpl/list/list20_c.hpp +43 -0
- data/ext/boost/mpl/list/list30.hpp +43 -0
- data/ext/boost/mpl/list/list30_c.hpp +43 -0
- data/ext/boost/mpl/list/list40.hpp +43 -0
- data/ext/boost/mpl/list/list40_c.hpp +43 -0
- data/ext/boost/mpl/list/list50.hpp +43 -0
- data/ext/boost/mpl/list/list50_c.hpp +43 -0
- data/ext/boost/mpl/list_c.hpp +60 -0
- data/ext/boost/mpl/logical.hpp +21 -0
- data/ext/boost/mpl/long.hpp +22 -0
- data/ext/boost/mpl/long_fwd.hpp +27 -0
- data/ext/boost/mpl/lower_bound.hpp +143 -0
- data/ext/boost/mpl/map.hpp +57 -0
- data/ext/boost/mpl/map/aux_/at_impl.hpp +144 -0
- data/ext/boost/mpl/map/aux_/begin_end_impl.hpp +50 -0
- data/ext/boost/mpl/map/aux_/clear_impl.hpp +35 -0
- data/ext/boost/mpl/map/aux_/contains_impl.hpp +43 -0
- data/ext/boost/mpl/map/aux_/empty_impl.hpp +34 -0
- data/ext/boost/mpl/map/aux_/erase_impl.hpp +41 -0
- data/ext/boost/mpl/map/aux_/erase_key_impl.hpp +53 -0
- data/ext/boost/mpl/map/aux_/has_key_impl.hpp +44 -0
- data/ext/boost/mpl/map/aux_/include_preprocessed.hpp +53 -0
- data/ext/boost/mpl/map/aux_/insert_impl.hpp +72 -0
- data/ext/boost/mpl/map/aux_/item.hpp +138 -0
- data/ext/boost/mpl/map/aux_/iterator.hpp +169 -0
- data/ext/boost/mpl/map/aux_/key_type_impl.hpp +36 -0
- data/ext/boost/mpl/map/aux_/map0.hpp +74 -0
- data/ext/boost/mpl/map/aux_/numbered.hpp +110 -0
- data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map10.hpp +350 -0
- data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map20.hpp +370 -0
- data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map30.hpp +390 -0
- data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map40.hpp +410 -0
- data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map50.hpp +430 -0
- data/ext/boost/mpl/map/aux_/preprocessed/plain/map10.hpp +290 -0
- data/ext/boost/mpl/map/aux_/preprocessed/plain/map20.hpp +310 -0
- data/ext/boost/mpl/map/aux_/preprocessed/plain/map30.hpp +330 -0
- data/ext/boost/mpl/map/aux_/preprocessed/plain/map40.hpp +350 -0
- data/ext/boost/mpl/map/aux_/preprocessed/plain/map50.hpp +370 -0
- data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map10.hpp +150 -0
- data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map20.hpp +170 -0
- data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map30.hpp +190 -0
- data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map40.hpp +210 -0
- data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map50.hpp +230 -0
- data/ext/boost/mpl/map/aux_/size_impl.hpp +33 -0
- data/ext/boost/mpl/map/aux_/tag.hpp +24 -0
- data/ext/boost/mpl/map/aux_/value_type_impl.hpp +36 -0
- data/ext/boost/mpl/map/map0.hpp +36 -0
- data/ext/boost/mpl/map/map10.hpp +44 -0
- data/ext/boost/mpl/map/map20.hpp +44 -0
- data/ext/boost/mpl/map/map30.hpp +44 -0
- data/ext/boost/mpl/map/map40.hpp +44 -0
- data/ext/boost/mpl/map/map50.hpp +44 -0
- data/ext/boost/mpl/math/fixed_c.hpp +36 -0
- data/ext/boost/mpl/math/is_even.hpp +54 -0
- data/ext/boost/mpl/math/rational_c.hpp +37 -0
- data/ext/boost/mpl/max.hpp +19 -0
- data/ext/boost/mpl/max_element.hpp +72 -0
- data/ext/boost/mpl/min.hpp +19 -0
- data/ext/boost/mpl/min_element.hpp +40 -0
- data/ext/boost/mpl/min_max.hpp +46 -0
- data/ext/boost/mpl/minus.hpp +21 -0
- data/ext/boost/mpl/modulus.hpp +22 -0
- data/ext/boost/mpl/multiplies.hpp +53 -0
- data/ext/boost/mpl/multiset/aux_/count_impl.hpp +82 -0
- data/ext/boost/mpl/multiset/aux_/insert_impl.hpp +34 -0
- data/ext/boost/mpl/multiset/aux_/item.hpp +114 -0
- data/ext/boost/mpl/multiset/aux_/multiset0.hpp +34 -0
- data/ext/boost/mpl/multiset/aux_/tag.hpp +23 -0
- data/ext/boost/mpl/multiset/multiset0.hpp +36 -0
- data/ext/boost/mpl/negate.hpp +81 -0
- data/ext/boost/mpl/next.hpp +19 -0
- data/ext/boost/mpl/next_prior.hpp +49 -0
- data/ext/boost/mpl/not.hpp +51 -0
- data/ext/boost/mpl/not_equal_to.hpp +21 -0
- data/ext/boost/mpl/numeric_cast.hpp +41 -0
- data/ext/boost/mpl/or.hpp +57 -0
- data/ext/boost/mpl/order.hpp +41 -0
- data/ext/boost/mpl/order_fwd.hpp +25 -0
- data/ext/boost/mpl/pair.hpp +70 -0
- data/ext/boost/mpl/pair_view.hpp +169 -0
- data/ext/boost/mpl/partition.hpp +53 -0
- data/ext/boost/mpl/placeholders.hpp +100 -0
- data/ext/boost/mpl/plus.hpp +21 -0
- data/ext/boost/mpl/pop_back.hpp +39 -0
- data/ext/boost/mpl/pop_back_fwd.hpp +24 -0
- data/ext/boost/mpl/pop_front.hpp +39 -0
- data/ext/boost/mpl/pop_front_fwd.hpp +24 -0
- data/ext/boost/mpl/print.hpp +74 -0
- data/ext/boost/mpl/prior.hpp +19 -0
- data/ext/boost/mpl/protect.hpp +55 -0
- data/ext/boost/mpl/push_back.hpp +53 -0
- data/ext/boost/mpl/push_back_fwd.hpp +24 -0
- data/ext/boost/mpl/push_front.hpp +52 -0
- data/ext/boost/mpl/push_front_fwd.hpp +24 -0
- data/ext/boost/mpl/quote.hpp +140 -0
- data/ext/boost/mpl/range_c.hpp +48 -0
- data/ext/boost/mpl/remove.hpp +52 -0
- data/ext/boost/mpl/remove_if.hpp +83 -0
- data/ext/boost/mpl/replace.hpp +55 -0
- data/ext/boost/mpl/replace_if.hpp +88 -0
- data/ext/boost/mpl/reverse.hpp +38 -0
- data/ext/boost/mpl/reverse_fold.hpp +50 -0
- data/ext/boost/mpl/reverse_iter_fold.hpp +56 -0
- data/ext/boost/mpl/same_as.hpp +55 -0
- data/ext/boost/mpl/sequence_tag.hpp +124 -0
- data/ext/boost/mpl/sequence_tag_fwd.hpp +26 -0
- data/ext/boost/mpl/set.hpp +57 -0
- data/ext/boost/mpl/set/aux_/at_impl.hpp +40 -0
- data/ext/boost/mpl/set/aux_/begin_end_impl.hpp +43 -0
- data/ext/boost/mpl/set/aux_/clear_impl.hpp +35 -0
- data/ext/boost/mpl/set/aux_/empty_impl.hpp +34 -0
- data/ext/boost/mpl/set/aux_/erase_impl.hpp +41 -0
- data/ext/boost/mpl/set/aux_/erase_key_impl.hpp +53 -0
- data/ext/boost/mpl/set/aux_/has_key_impl.hpp +60 -0
- data/ext/boost/mpl/set/aux_/include_preprocessed.hpp +42 -0
- data/ext/boost/mpl/set/aux_/insert_impl.hpp +65 -0
- data/ext/boost/mpl/set/aux_/item.hpp +82 -0
- data/ext/boost/mpl/set/aux_/iterator.hpp +97 -0
- data/ext/boost/mpl/set/aux_/key_type_impl.hpp +34 -0
- data/ext/boost/mpl/set/aux_/numbered.hpp +48 -0
- data/ext/boost/mpl/set/aux_/numbered_c.hpp +48 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set10.hpp +140 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set10_c.hpp +145 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set20.hpp +168 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set20_c.hpp +154 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set30.hpp +195 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set30_c.hpp +164 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set40.hpp +221 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set40_c.hpp +174 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set50.hpp +250 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set50_c.hpp +184 -0
- data/ext/boost/mpl/set/aux_/set0.hpp +69 -0
- data/ext/boost/mpl/set/aux_/size_impl.hpp +33 -0
- data/ext/boost/mpl/set/aux_/tag.hpp +24 -0
- data/ext/boost/mpl/set/aux_/value_type_impl.hpp +34 -0
- data/ext/boost/mpl/set/set0.hpp +35 -0
- data/ext/boost/mpl/set/set0_c.hpp +32 -0
- data/ext/boost/mpl/set/set10.hpp +44 -0
- data/ext/boost/mpl/set/set10_c.hpp +45 -0
- data/ext/boost/mpl/set/set20.hpp +44 -0
- data/ext/boost/mpl/set/set20_c.hpp +45 -0
- data/ext/boost/mpl/set/set30.hpp +44 -0
- data/ext/boost/mpl/set/set30_c.hpp +45 -0
- data/ext/boost/mpl/set/set40.hpp +44 -0
- data/ext/boost/mpl/set/set40_c.hpp +45 -0
- data/ext/boost/mpl/set/set50.hpp +44 -0
- data/ext/boost/mpl/set/set50_c.hpp +45 -0
- data/ext/boost/mpl/set_c.hpp +60 -0
- data/ext/boost/mpl/shift_left.hpp +22 -0
- data/ext/boost/mpl/shift_right.hpp +22 -0
- data/ext/boost/mpl/single_view.hpp +38 -0
- data/ext/boost/mpl/size.hpp +42 -0
- data/ext/boost/mpl/size_fwd.hpp +24 -0
- data/ext/boost/mpl/size_t.hpp +25 -0
- data/ext/boost/mpl/size_t_fwd.hpp +28 -0
- data/ext/boost/mpl/sizeof.hpp +36 -0
- data/ext/boost/mpl/sort.hpp +27 -0
- data/ext/boost/mpl/stable_partition.hpp +75 -0
- data/ext/boost/mpl/switch.hpp +49 -0
- data/ext/boost/mpl/tag.hpp +52 -0
- data/ext/boost/mpl/times.hpp +21 -0
- data/ext/boost/mpl/transform.hpp +145 -0
- data/ext/boost/mpl/transform_view.hpp +46 -0
- data/ext/boost/mpl/unique.hpp +85 -0
- data/ext/boost/mpl/unpack_args.hpp +146 -0
- data/ext/boost/mpl/upper_bound.hpp +141 -0
- data/ext/boost/mpl/value_type.hpp +42 -0
- data/ext/boost/mpl/value_type_fwd.hpp +25 -0
- data/ext/boost/mpl/vector.hpp +57 -0
- data/ext/boost/mpl/vector/aux_/O1_size.hpp +56 -0
- data/ext/boost/mpl/vector/aux_/at.hpp +116 -0
- data/ext/boost/mpl/vector/aux_/back.hpp +59 -0
- data/ext/boost/mpl/vector/aux_/begin_end.hpp +49 -0
- data/ext/boost/mpl/vector/aux_/clear.hpp +55 -0
- data/ext/boost/mpl/vector/aux_/empty.hpp +68 -0
- data/ext/boost/mpl/vector/aux_/front.hpp +56 -0
- data/ext/boost/mpl/vector/aux_/include_preprocessed.hpp +55 -0
- data/ext/boost/mpl/vector/aux_/item.hpp +103 -0
- data/ext/boost/mpl/vector/aux_/iterator.hpp +130 -0
- data/ext/boost/mpl/vector/aux_/numbered.hpp +218 -0
- data/ext/boost/mpl/vector/aux_/numbered_c.hpp +77 -0
- data/ext/boost/mpl/vector/aux_/pop_back.hpp +40 -0
- data/ext/boost/mpl/vector/aux_/pop_front.hpp +40 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp +1528 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp +149 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp +1804 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp +195 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp +2124 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp +238 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp +2444 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp +281 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp +2764 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp +325 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp +829 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp +149 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp +1144 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp +195 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp +1464 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp +238 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp +1784 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp +281 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp +2104 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp +325 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp +139 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp +154 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp +159 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp +163 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp +179 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp +173 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp +199 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp +183 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp +219 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp +193 -0
- data/ext/boost/mpl/vector/aux_/push_back.hpp +40 -0
- data/ext/boost/mpl/vector/aux_/push_front.hpp +40 -0
- data/ext/boost/mpl/vector/aux_/size.hpp +49 -0
- data/ext/boost/mpl/vector/aux_/tag.hpp +32 -0
- data/ext/boost/mpl/vector/aux_/vector0.hpp +52 -0
- data/ext/boost/mpl/vector/vector0.hpp +34 -0
- data/ext/boost/mpl/vector/vector0_c.hpp +31 -0
- data/ext/boost/mpl/vector/vector10.hpp +45 -0
- data/ext/boost/mpl/vector/vector10_c.hpp +46 -0
- data/ext/boost/mpl/vector/vector20.hpp +45 -0
- data/ext/boost/mpl/vector/vector20_c.hpp +46 -0
- data/ext/boost/mpl/vector/vector30.hpp +45 -0
- data/ext/boost/mpl/vector/vector30_c.hpp +47 -0
- data/ext/boost/mpl/vector/vector40.hpp +45 -0
- data/ext/boost/mpl/vector/vector40_c.hpp +46 -0
- data/ext/boost/mpl/vector/vector50.hpp +45 -0
- data/ext/boost/mpl/vector/vector50_c.hpp +46 -0
- data/ext/boost/mpl/vector_c.hpp +60 -0
- data/ext/boost/mpl/void.hpp +76 -0
- data/ext/boost/mpl/void_fwd.hpp +26 -0
- data/ext/boost/mpl/zip_view.hpp +64 -0
- data/ext/boost/next_prior.hpp +51 -0
- data/ext/boost/noncopyable.hpp +36 -0
- data/ext/boost/none.hpp +43 -0
- data/ext/boost/optional.hpp +18 -0
- data/ext/boost/optional/optional.hpp +922 -0
- data/ext/boost/optional/optional_fwd.hpp +22 -0
- data/ext/boost/optional/optional_io.hpp +84 -0
- data/ext/boost/preprocessor/arithmetic.hpp +25 -0
- data/ext/boost/preprocessor/arithmetic/add.hpp +51 -0
- data/ext/boost/preprocessor/arithmetic/dec.hpp +288 -0
- data/ext/boost/preprocessor/arithmetic/detail/div_base.hpp +61 -0
- data/ext/boost/preprocessor/arithmetic/div.hpp +39 -0
- data/ext/boost/preprocessor/arithmetic/inc.hpp +288 -0
- data/ext/boost/preprocessor/arithmetic/mod.hpp +39 -0
- data/ext/boost/preprocessor/arithmetic/mul.hpp +53 -0
- data/ext/boost/preprocessor/arithmetic/sub.hpp +50 -0
- data/ext/boost/preprocessor/array.hpp +27 -0
- data/ext/boost/preprocessor/array/data.hpp +28 -0
- data/ext/boost/preprocessor/array/elem.hpp +29 -0
- data/ext/boost/preprocessor/array/insert.hpp +55 -0
- data/ext/boost/preprocessor/array/pop_back.hpp +37 -0
- data/ext/boost/preprocessor/array/pop_front.hpp +38 -0
- data/ext/boost/preprocessor/array/push_back.hpp +33 -0
- data/ext/boost/preprocessor/array/push_front.hpp +33 -0
- data/ext/boost/preprocessor/array/remove.hpp +54 -0
- data/ext/boost/preprocessor/array/replace.hpp +49 -0
- data/ext/boost/preprocessor/array/reverse.hpp +29 -0
- data/ext/boost/preprocessor/array/size.hpp +28 -0
- data/ext/boost/preprocessor/assert_msg.hpp +17 -0
- data/ext/boost/preprocessor/cat.hpp +35 -0
- data/ext/boost/preprocessor/comma.hpp +17 -0
- data/ext/boost/preprocessor/comma_if.hpp +17 -0
- data/ext/boost/preprocessor/comparison.hpp +24 -0
- data/ext/boost/preprocessor/comparison/equal.hpp +34 -0
- data/ext/boost/preprocessor/comparison/greater.hpp +38 -0
- data/ext/boost/preprocessor/comparison/greater_equal.hpp +38 -0
- data/ext/boost/preprocessor/comparison/less.hpp +46 -0
- data/ext/boost/preprocessor/comparison/less_equal.hpp +39 -0
- data/ext/boost/preprocessor/comparison/not_equal.hpp +814 -0
- data/ext/boost/preprocessor/config/config.hpp +70 -0
- data/ext/boost/preprocessor/config/limits.hpp +29 -0
- data/ext/boost/preprocessor/control.hpp +22 -0
- data/ext/boost/preprocessor/control/deduce_d.hpp +22 -0
- data/ext/boost/preprocessor/control/detail/dmc/while.hpp +536 -0
- data/ext/boost/preprocessor/control/detail/edg/while.hpp +534 -0
- data/ext/boost/preprocessor/control/detail/msvc/while.hpp +277 -0
- data/ext/boost/preprocessor/control/detail/while.hpp +536 -0
- data/ext/boost/preprocessor/control/expr_if.hpp +30 -0
- data/ext/boost/preprocessor/control/expr_iif.hpp +31 -0
- data/ext/boost/preprocessor/control/if.hpp +30 -0
- data/ext/boost/preprocessor/control/iif.hpp +34 -0
- data/ext/boost/preprocessor/control/while.hpp +312 -0
- data/ext/boost/preprocessor/debug.hpp +18 -0
- data/ext/boost/preprocessor/debug/assert.hpp +44 -0
- data/ext/boost/preprocessor/debug/error.hpp +33 -0
- data/ext/boost/preprocessor/debug/line.hpp +35 -0
- data/ext/boost/preprocessor/dec.hpp +17 -0
- data/ext/boost/preprocessor/detail/auto_rec.hpp +293 -0
- data/ext/boost/preprocessor/detail/check.hpp +48 -0
- data/ext/boost/preprocessor/detail/dmc/auto_rec.hpp +286 -0
- data/ext/boost/preprocessor/detail/is_binary.hpp +30 -0
- data/ext/boost/preprocessor/detail/is_nullary.hpp +30 -0
- data/ext/boost/preprocessor/detail/is_unary.hpp +30 -0
- data/ext/boost/preprocessor/detail/null.hpp +17 -0
- data/ext/boost/preprocessor/detail/split.hpp +35 -0
- data/ext/boost/preprocessor/empty.hpp +17 -0
- data/ext/boost/preprocessor/enum.hpp +17 -0
- data/ext/boost/preprocessor/enum_params.hpp +17 -0
- data/ext/boost/preprocessor/enum_params_with_a_default.hpp +17 -0
- data/ext/boost/preprocessor/enum_params_with_defaults.hpp +17 -0
- data/ext/boost/preprocessor/enum_shifted.hpp +17 -0
- data/ext/boost/preprocessor/enum_shifted_params.hpp +17 -0
- data/ext/boost/preprocessor/expand.hpp +17 -0
- data/ext/boost/preprocessor/expr_if.hpp +17 -0
- data/ext/boost/preprocessor/facilities.hpp +21 -0
- data/ext/boost/preprocessor/facilities/apply.hpp +34 -0
- data/ext/boost/preprocessor/facilities/empty.hpp +21 -0
- data/ext/boost/preprocessor/facilities/expand.hpp +28 -0
- data/ext/boost/preprocessor/facilities/identity.hpp +23 -0
- data/ext/boost/preprocessor/facilities/intercept.hpp +277 -0
- data/ext/boost/preprocessor/facilities/is_1.hpp +23 -0
- data/ext/boost/preprocessor/facilities/is_empty.hpp +43 -0
- data/ext/boost/preprocessor/facilities/is_empty_or_1.hpp +30 -0
- data/ext/boost/preprocessor/for.hpp +17 -0
- data/ext/boost/preprocessor/identity.hpp +17 -0
- data/ext/boost/preprocessor/if.hpp +17 -0
- data/ext/boost/preprocessor/inc.hpp +17 -0
- data/ext/boost/preprocessor/iterate.hpp +17 -0
- data/ext/boost/preprocessor/iteration.hpp +19 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/lower1.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/lower2.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/lower3.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/lower4.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/lower5.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/upper1.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/upper2.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/upper3.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/upper4.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/upper5.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/finish.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward1.hpp +1342 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward2.hpp +1338 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward3.hpp +1338 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward4.hpp +1338 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward5.hpp +1338 -0
- data/ext/boost/preprocessor/iteration/detail/iter/reverse1.hpp +1296 -0
- data/ext/boost/preprocessor/iteration/detail/iter/reverse2.hpp +1296 -0
- data/ext/boost/preprocessor/iteration/detail/iter/reverse3.hpp +1296 -0
- data/ext/boost/preprocessor/iteration/detail/iter/reverse4.hpp +1296 -0
- data/ext/boost/preprocessor/iteration/detail/iter/reverse5.hpp +1296 -0
- data/ext/boost/preprocessor/iteration/detail/local.hpp +812 -0
- data/ext/boost/preprocessor/iteration/detail/rlocal.hpp +782 -0
- data/ext/boost/preprocessor/iteration/detail/self.hpp +21 -0
- data/ext/boost/preprocessor/iteration/detail/start.hpp +99 -0
- data/ext/boost/preprocessor/iteration/iterate.hpp +82 -0
- data/ext/boost/preprocessor/iteration/local.hpp +26 -0
- data/ext/boost/preprocessor/iteration/self.hpp +19 -0
- data/ext/boost/preprocessor/library.hpp +34 -0
- data/ext/boost/preprocessor/limits.hpp +17 -0
- data/ext/boost/preprocessor/list.hpp +35 -0
- data/ext/boost/preprocessor/list/adt.hpp +73 -0
- data/ext/boost/preprocessor/list/append.hpp +40 -0
- data/ext/boost/preprocessor/list/at.hpp +39 -0
- data/ext/boost/preprocessor/list/cat.hpp +42 -0
- data/ext/boost/preprocessor/list/detail/dmc/fold_left.hpp +279 -0
- data/ext/boost/preprocessor/list/detail/edg/fold_left.hpp +536 -0
- data/ext/boost/preprocessor/list/detail/edg/fold_right.hpp +794 -0
- data/ext/boost/preprocessor/list/detail/fold_left.hpp +279 -0
- data/ext/boost/preprocessor/list/detail/fold_right.hpp +277 -0
- data/ext/boost/preprocessor/list/enum.hpp +41 -0
- data/ext/boost/preprocessor/list/filter.hpp +54 -0
- data/ext/boost/preprocessor/list/first_n.hpp +58 -0
- data/ext/boost/preprocessor/list/fold_left.hpp +303 -0
- data/ext/boost/preprocessor/list/fold_right.hpp +40 -0
- data/ext/boost/preprocessor/list/for_each.hpp +49 -0
- data/ext/boost/preprocessor/list/for_each_i.hpp +65 -0
- data/ext/boost/preprocessor/list/for_each_product.hpp +141 -0
- data/ext/boost/preprocessor/list/rest_n.hpp +55 -0
- data/ext/boost/preprocessor/list/reverse.hpp +40 -0
- data/ext/boost/preprocessor/list/size.hpp +58 -0
- data/ext/boost/preprocessor/list/to_tuple.hpp +38 -0
- data/ext/boost/preprocessor/list/transform.hpp +49 -0
- data/ext/boost/preprocessor/logical.hpp +29 -0
- data/ext/boost/preprocessor/logical/and.hpp +30 -0
- data/ext/boost/preprocessor/logical/bitand.hpp +38 -0
- data/ext/boost/preprocessor/logical/bitnor.hpp +38 -0
- data/ext/boost/preprocessor/logical/bitor.hpp +38 -0
- data/ext/boost/preprocessor/logical/bitxor.hpp +38 -0
- data/ext/boost/preprocessor/logical/bool.hpp +288 -0
- data/ext/boost/preprocessor/logical/compl.hpp +36 -0
- data/ext/boost/preprocessor/logical/nor.hpp +30 -0
- data/ext/boost/preprocessor/logical/not.hpp +30 -0
- data/ext/boost/preprocessor/logical/or.hpp +30 -0
- data/ext/boost/preprocessor/logical/xor.hpp +30 -0
- data/ext/boost/preprocessor/max.hpp +17 -0
- data/ext/boost/preprocessor/min.hpp +17 -0
- data/ext/boost/preprocessor/punctuation.hpp +20 -0
- data/ext/boost/preprocessor/punctuation/comma.hpp +21 -0
- data/ext/boost/preprocessor/punctuation/comma_if.hpp +31 -0
- data/ext/boost/preprocessor/punctuation/paren.hpp +23 -0
- data/ext/boost/preprocessor/punctuation/paren_if.hpp +38 -0
- data/ext/boost/preprocessor/repeat.hpp +17 -0
- data/ext/boost/preprocessor/repeat_2nd.hpp +17 -0
- data/ext/boost/preprocessor/repeat_3rd.hpp +17 -0
- data/ext/boost/preprocessor/repeat_from_to.hpp +17 -0
- data/ext/boost/preprocessor/repeat_from_to_2nd.hpp +17 -0
- data/ext/boost/preprocessor/repeat_from_to_3rd.hpp +17 -0
- data/ext/boost/preprocessor/repetition.hpp +32 -0
- data/ext/boost/preprocessor/repetition/deduce_r.hpp +22 -0
- data/ext/boost/preprocessor/repetition/deduce_z.hpp +22 -0
- data/ext/boost/preprocessor/repetition/detail/dmc/for.hpp +536 -0
- data/ext/boost/preprocessor/repetition/detail/edg/for.hpp +534 -0
- data/ext/boost/preprocessor/repetition/detail/for.hpp +536 -0
- data/ext/boost/preprocessor/repetition/detail/msvc/for.hpp +277 -0
- data/ext/boost/preprocessor/repetition/enum.hpp +66 -0
- data/ext/boost/preprocessor/repetition/enum_binary_params.hpp +54 -0
- data/ext/boost/preprocessor/repetition/enum_params.hpp +41 -0
- data/ext/boost/preprocessor/repetition/enum_params_with_a_default.hpp +25 -0
- data/ext/boost/preprocessor/repetition/enum_params_with_defaults.hpp +24 -0
- data/ext/boost/preprocessor/repetition/enum_shifted.hpp +68 -0
- data/ext/boost/preprocessor/repetition/enum_shifted_binary_params.hpp +51 -0
- data/ext/boost/preprocessor/repetition/enum_shifted_params.hpp +44 -0
- data/ext/boost/preprocessor/repetition/enum_trailing.hpp +63 -0
- data/ext/boost/preprocessor/repetition/enum_trailing_binary_params.hpp +53 -0
- data/ext/boost/preprocessor/repetition/enum_trailing_params.hpp +38 -0
- data/ext/boost/preprocessor/repetition/for.hpp +306 -0
- data/ext/boost/preprocessor/repetition/repeat.hpp +825 -0
- data/ext/boost/preprocessor/repetition/repeat_from_to.hpp +87 -0
- data/ext/boost/preprocessor/selection.hpp +18 -0
- data/ext/boost/preprocessor/selection/max.hpp +39 -0
- data/ext/boost/preprocessor/selection/min.hpp +39 -0
- data/ext/boost/preprocessor/seq.hpp +41 -0
- data/ext/boost/preprocessor/seq/cat.hpp +48 -0
- data/ext/boost/preprocessor/seq/detail/split.hpp +284 -0
- data/ext/boost/preprocessor/seq/elem.hpp +304 -0
- data/ext/boost/preprocessor/seq/enum.hpp +288 -0
- data/ext/boost/preprocessor/seq/filter.hpp +54 -0
- data/ext/boost/preprocessor/seq/first_n.hpp +30 -0
- data/ext/boost/preprocessor/seq/fold_left.hpp +1070 -0
- data/ext/boost/preprocessor/seq/fold_right.hpp +288 -0
- data/ext/boost/preprocessor/seq/for_each.hpp +60 -0
- data/ext/boost/preprocessor/seq/for_each_i.hpp +61 -0
- data/ext/boost/preprocessor/seq/for_each_product.hpp +126 -0
- data/ext/boost/preprocessor/seq/insert.hpp +28 -0
- data/ext/boost/preprocessor/seq/pop_back.hpp +29 -0
- data/ext/boost/preprocessor/seq/pop_front.hpp +27 -0
- data/ext/boost/preprocessor/seq/push_back.hpp +19 -0
- data/ext/boost/preprocessor/seq/push_front.hpp +19 -0
- data/ext/boost/preprocessor/seq/remove.hpp +29 -0
- data/ext/boost/preprocessor/seq/replace.hpp +29 -0
- data/ext/boost/preprocessor/seq/rest_n.hpp +30 -0
- data/ext/boost/preprocessor/seq/reverse.hpp +39 -0
- data/ext/boost/preprocessor/seq/seq.hpp +44 -0
- data/ext/boost/preprocessor/seq/size.hpp +548 -0
- data/ext/boost/preprocessor/seq/subseq.hpp +28 -0
- data/ext/boost/preprocessor/seq/to_array.hpp +28 -0
- data/ext/boost/preprocessor/seq/to_tuple.hpp +27 -0
- data/ext/boost/preprocessor/seq/transform.hpp +48 -0
- data/ext/boost/preprocessor/slot.hpp +17 -0
- data/ext/boost/preprocessor/slot/counter.hpp +25 -0
- data/ext/boost/preprocessor/slot/detail/counter.hpp +269 -0
- data/ext/boost/preprocessor/slot/detail/def.hpp +49 -0
- data/ext/boost/preprocessor/slot/detail/shared.hpp +247 -0
- data/ext/boost/preprocessor/slot/detail/slot1.hpp +267 -0
- data/ext/boost/preprocessor/slot/detail/slot2.hpp +267 -0
- data/ext/boost/preprocessor/slot/detail/slot3.hpp +267 -0
- data/ext/boost/preprocessor/slot/detail/slot4.hpp +267 -0
- data/ext/boost/preprocessor/slot/detail/slot5.hpp +267 -0
- data/ext/boost/preprocessor/slot/slot.hpp +32 -0
- data/ext/boost/preprocessor/stringize.hpp +33 -0
- data/ext/boost/preprocessor/tuple.hpp +24 -0
- data/ext/boost/preprocessor/tuple/eat.hpp +57 -0
- data/ext/boost/preprocessor/tuple/elem.hpp +385 -0
- data/ext/boost/preprocessor/tuple/rem.hpp +72 -0
- data/ext/boost/preprocessor/tuple/reverse.hpp +62 -0
- data/ext/boost/preprocessor/tuple/to_list.hpp +62 -0
- data/ext/boost/preprocessor/tuple/to_seq.hpp +60 -0
- data/ext/boost/preprocessor/while.hpp +17 -0
- data/ext/boost/preprocessor/wstringize.hpp +29 -0
- data/ext/boost/ref.hpp +178 -0
- data/ext/boost/shared_ptr.hpp +558 -0
- data/ext/boost/src/barrier.cpp +42 -0
- data/ext/boost/src/condition.cpp +692 -0
- data/ext/boost/src/exceptions.cpp +147 -0
- data/ext/boost/src/mutex.cpp +561 -0
- data/ext/boost/src/mutex.inl +128 -0
- data/ext/boost/src/once.cpp +213 -0
- data/ext/boost/src/recursive_mutex.cpp +1040 -0
- data/ext/boost/src/thread.cpp +371 -0
- data/ext/boost/src/timeconv.inl +130 -0
- data/ext/boost/src/tss.cpp +251 -0
- data/ext/boost/src/tss_dll.cpp +72 -0
- data/ext/boost/src/tss_hooks.cpp +212 -0
- data/ext/boost/src/tss_null.cpp +33 -0
- data/ext/boost/src/tss_pe.cpp +179 -0
- data/ext/boost/src/xtime.cpp +158 -0
- data/ext/boost/static_assert.hpp +118 -0
- data/ext/boost/thread.hpp +19 -0
- data/ext/boost/thread/barrier.hpp +44 -0
- data/ext/boost/thread/condition.hpp +201 -0
- data/ext/boost/thread/detail/config.hpp +95 -0
- data/ext/boost/thread/detail/force_cast.hpp +39 -0
- data/ext/boost/thread/detail/lock.hpp +209 -0
- data/ext/boost/thread/detail/read_write_lock.hpp +1106 -0
- data/ext/boost/thread/detail/singleton.hpp +59 -0
- data/ext/boost/thread/detail/tss_hooks.hpp +78 -0
- data/ext/boost/thread/exceptions.hpp +97 -0
- data/ext/boost/thread/mutex.hpp +170 -0
- data/ext/boost/thread/once.hpp +37 -0
- data/ext/boost/thread/recursive_mutex.hpp +184 -0
- data/ext/boost/thread/thread.hpp +90 -0
- data/ext/boost/thread/tss.hpp +128 -0
- data/ext/boost/thread/xtime.hpp +54 -0
- data/ext/boost/throw_exception.hpp +46 -0
- data/ext/boost/type.hpp +18 -0
- data/ext/boost/type_traits/add_const.hpp +47 -0
- data/ext/boost/type_traits/add_cv.hpp +48 -0
- data/ext/boost/type_traits/add_pointer.hpp +72 -0
- data/ext/boost/type_traits/add_reference.hpp +89 -0
- data/ext/boost/type_traits/add_volatile.hpp +47 -0
- data/ext/boost/type_traits/aligned_storage.hpp +13 -0
- data/ext/boost/type_traits/alignment_of.hpp +100 -0
- data/ext/boost/type_traits/alignment_traits.hpp +15 -0
- data/ext/boost/type_traits/arithmetic_traits.hpp +20 -0
- data/ext/boost/type_traits/array_traits.hpp +15 -0
- data/ext/boost/type_traits/broken_compiler_spec.hpp +117 -0
- data/ext/boost/type_traits/composite_traits.hpp +29 -0
- data/ext/boost/type_traits/config.hpp +76 -0
- data/ext/boost/type_traits/conversion_traits.hpp +17 -0
- data/ext/boost/type_traits/cv_traits.hpp +24 -0
- data/ext/boost/type_traits/decay.hpp +44 -0
- data/ext/boost/type_traits/detail/bool_trait_def.hpp +173 -0
- data/ext/boost/type_traits/detail/bool_trait_undef.hpp +27 -0
- data/ext/boost/type_traits/detail/cv_traits_impl.hpp +97 -0
- data/ext/boost/type_traits/detail/false_result.hpp +28 -0
- data/ext/boost/type_traits/detail/ice_and.hpp +35 -0
- data/ext/boost/type_traits/detail/ice_eq.hpp +36 -0
- data/ext/boost/type_traits/detail/ice_not.hpp +31 -0
- data/ext/boost/type_traits/detail/ice_or.hpp +34 -0
- data/ext/boost/type_traits/detail/is_function_ptr_helper.hpp +220 -0
- data/ext/boost/type_traits/detail/is_function_ptr_tester.hpp +654 -0
- data/ext/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +817 -0
- data/ext/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +2759 -0
- data/ext/boost/type_traits/detail/size_t_trait_def.hpp +58 -0
- data/ext/boost/type_traits/detail/size_t_trait_undef.hpp +16 -0
- data/ext/boost/type_traits/detail/template_arity_spec.hpp +31 -0
- data/ext/boost/type_traits/detail/type_trait_def.hpp +61 -0
- data/ext/boost/type_traits/detail/type_trait_undef.hpp +19 -0
- data/ext/boost/type_traits/detail/wrap.hpp +18 -0
- data/ext/boost/type_traits/detail/yes_no_type.hpp +26 -0
- data/ext/boost/type_traits/extent.hpp +134 -0
- data/ext/boost/type_traits/function_traits.hpp +236 -0
- data/ext/boost/type_traits/has_nothrow_assign.hpp +38 -0
- data/ext/boost/type_traits/has_nothrow_constructor.hpp +38 -0
- data/ext/boost/type_traits/has_nothrow_copy.hpp +38 -0
- data/ext/boost/type_traits/has_nothrow_destructor.hpp +25 -0
- data/ext/boost/type_traits/has_trivial_assign.hpp +50 -0
- data/ext/boost/type_traits/has_trivial_constructor.hpp +42 -0
- data/ext/boost/type_traits/has_trivial_copy.hpp +48 -0
- data/ext/boost/type_traits/has_trivial_destructor.hpp +42 -0
- data/ext/boost/type_traits/has_virtual_destructor.hpp +25 -0
- data/ext/boost/type_traits/ice.hpp +20 -0
- data/ext/boost/type_traits/integral_constant.hpp +53 -0
- data/ext/boost/type_traits/intrinsics.hpp +137 -0
- data/ext/boost/type_traits/is_abstract.hpp +137 -0
- data/ext/boost/type_traits/is_arithmetic.hpp +43 -0
- data/ext/boost/type_traits/is_array.hpp +90 -0
- data/ext/boost/type_traits/is_base_and_derived.hpp +223 -0
- data/ext/boost/type_traits/is_base_of.hpp +40 -0
- data/ext/boost/type_traits/is_class.hpp +128 -0
- data/ext/boost/type_traits/is_compound.hpp +40 -0
- data/ext/boost/type_traits/is_const.hpp +142 -0
- data/ext/boost/type_traits/is_convertible.hpp +416 -0
- data/ext/boost/type_traits/is_empty.hpp +211 -0
- data/ext/boost/type_traits/is_enum.hpp +180 -0
- data/ext/boost/type_traits/is_float.hpp +27 -0
- data/ext/boost/type_traits/is_floating_point.hpp +27 -0
- data/ext/boost/type_traits/is_function.hpp +88 -0
- data/ext/boost/type_traits/is_fundamental.hpp +41 -0
- data/ext/boost/type_traits/is_integral.hpp +71 -0
- data/ext/boost/type_traits/is_member_function_pointer.hpp +126 -0
- data/ext/boost/type_traits/is_member_object_pointer.hpp +46 -0
- data/ext/boost/type_traits/is_member_pointer.hpp +108 -0
- data/ext/boost/type_traits/is_object.hpp +53 -0
- data/ext/boost/type_traits/is_pod.hpp +135 -0
- data/ext/boost/type_traits/is_pointer.hpp +149 -0
- data/ext/boost/type_traits/is_polymorphic.hpp +102 -0
- data/ext/boost/type_traits/is_reference.hpp +116 -0
- data/ext/boost/type_traits/is_same.hpp +103 -0
- data/ext/boost/type_traits/is_scalar.hpp +55 -0
- data/ext/boost/type_traits/is_signed.hpp +117 -0
- data/ext/boost/type_traits/is_stateless.hpp +48 -0
- data/ext/boost/type_traits/is_union.hpp +49 -0
- data/ext/boost/type_traits/is_unsigned.hpp +114 -0
- data/ext/boost/type_traits/is_void.hpp +33 -0
- data/ext/boost/type_traits/is_volatile.hpp +131 -0
- data/ext/boost/type_traits/msvc/remove_all_extents.hpp +47 -0
- data/ext/boost/type_traits/msvc/remove_bounds.hpp +43 -0
- data/ext/boost/type_traits/msvc/remove_const.hpp +143 -0
- data/ext/boost/type_traits/msvc/remove_cv.hpp +190 -0
- data/ext/boost/type_traits/msvc/remove_extent.hpp +43 -0
- data/ext/boost/type_traits/msvc/remove_pointer.hpp +42 -0
- data/ext/boost/type_traits/msvc/remove_reference.hpp +42 -0
- data/ext/boost/type_traits/msvc/remove_volatile.hpp +143 -0
- data/ext/boost/type_traits/msvc/typeof.hpp +50 -0
- data/ext/boost/type_traits/object_traits.hpp +33 -0
- data/ext/boost/type_traits/rank.hpp +81 -0
- data/ext/boost/type_traits/reference_traits.hpp +15 -0
- data/ext/boost/type_traits/remove_all_extents.hpp +48 -0
- data/ext/boost/type_traits/remove_bounds.hpp +48 -0
- data/ext/boost/type_traits/remove_const.hpp +78 -0
- data/ext/boost/type_traits/remove_cv.hpp +61 -0
- data/ext/boost/type_traits/remove_extent.hpp +48 -0
- data/ext/boost/type_traits/remove_pointer.hpp +43 -0
- data/ext/boost/type_traits/remove_reference.hpp +50 -0
- data/ext/boost/type_traits/remove_volatile.hpp +77 -0
- data/ext/boost/type_traits/same_traits.hpp +15 -0
- data/ext/boost/type_traits/transform_traits.hpp +21 -0
- data/ext/boost/type_traits/transform_traits_spec.hpp +14 -0
- data/ext/boost/type_traits/type_with_alignment.hpp +288 -0
- data/ext/boost/utility.hpp +19 -0
- data/ext/boost/utility/addressof.hpp +58 -0
- data/ext/boost/utility/base_from_member.hpp +87 -0
- data/ext/boost/utility/compare_pointees.hpp +68 -0
- data/ext/boost/utility/enable_if.hpp +119 -0
- data/ext/boost/utility/in_place_factory.hpp +58 -0
- data/ext/boost/utility/result_of.hpp +66 -0
- data/ext/boost/utility/typed_in_place_factory.hpp +57 -0
- data/ext/boost/utility/value_init.hpp +77 -0
- data/ext/boost/visit_each.hpp +29 -0
- data/ext/boost/weak_ptr.hpp +194 -0
- data/ext/passenger/extconf.rb +17 -0
- data/ext/passenger/native_support.c +247 -0
- data/lib/passenger/abstract_server.rb +308 -0
- data/lib/passenger/application.rb +120 -0
- data/lib/passenger/application_spawner.rb +295 -0
- data/lib/passenger/cgi_fixed.rb +66 -0
- data/lib/passenger/console_text_template.rb +59 -0
- data/lib/passenger/dependencies.rb +285 -0
- data/lib/passenger/framework_spawner.rb +349 -0
- data/lib/passenger/html_template.rb +102 -0
- data/lib/passenger/message_channel.rb +221 -0
- data/lib/passenger/platform_info.rb +246 -0
- data/lib/passenger/request_handler.rb +324 -0
- data/lib/passenger/simple_benchmarking.rb +45 -0
- data/lib/passenger/spawn_manager.rb +251 -0
- data/lib/passenger/templates/apache2_config_snippets.txt.erb +13 -0
- data/lib/passenger/templates/apache_must_be_compiled_with_prefork_mpm.txt.erb +8 -0
- data/lib/passenger/templates/app_exited_during_initialization.html.erb +18 -0
- data/lib/passenger/templates/app_init_error.html.erb +64 -0
- data/lib/passenger/templates/database_error.html.erb +59 -0
- data/lib/passenger/templates/deployment_example.txt.erb +18 -0
- data/lib/passenger/templates/error_layout.css +97 -0
- data/lib/passenger/templates/error_layout.html.erb +39 -0
- data/lib/passenger/templates/framework_init_error.html.erb +39 -0
- data/lib/passenger/templates/general_error.html.erb +22 -0
- data/lib/passenger/templates/invalid_app_root.html.erb +9 -0
- data/lib/passenger/templates/load_error.html.erb +46 -0
- data/lib/passenger/templates/no_write_permission_to_passenger_root.txt.erb +9 -0
- data/lib/passenger/templates/osx_broken_apache_warning.txt.erb +23 -0
- data/lib/passenger/templates/possible_solutions_for_compilation_and_installation_problems.txt.erb +11 -0
- data/lib/passenger/templates/run_installer_as_root.txt.erb +8 -0
- data/lib/passenger/templates/version_not_found.html.erb +25 -0
- data/lib/passenger/templates/welcome.txt.erb +15 -0
- data/lib/passenger/utils.rb +222 -0
- data/lib/rake/cplusplus.rb +43 -0
- data/lib/rake/extensions.rb +175 -0
- data/lib/rake/gempackagetask.rb +105 -0
- data/lib/rake/packagetask.rb +186 -0
- data/lib/rake/rdoctask.rb +148 -0
- data/misc/find_owner_pipe_leaks.rb +121 -0
- data/misc/render_error_pages.rb +105 -0
- data/test/ApplicationPoolServerTest.cpp +100 -0
- data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +23 -0
- data/test/ApplicationPoolTest.cpp +348 -0
- data/test/CxxTestMain.cpp +24 -0
- data/test/MessageChannelTest.cpp +310 -0
- data/test/SpawnManagerTest.cpp +64 -0
- data/test/StandardApplicationPoolTest.cpp +21 -0
- data/test/UtilsTest.cpp +100 -0
- data/test/abstract_server_spec.rb +17 -0
- data/test/application_spawner_spec.rb +78 -0
- data/test/application_spec.rb +25 -0
- data/test/config.yml.example +21 -0
- data/test/framework_spawner_spec.rb +99 -0
- data/test/integration_tests.rb +356 -0
- data/test/message_channel_spec.rb +171 -0
- data/test/minimal_spawner_spec.rb +19 -0
- data/test/spawn_manager_spec.rb +105 -0
- data/test/spawn_server_spec.rb +25 -0
- data/test/spawner_error_handling_spec.rb +35 -0
- data/test/spawner_privilege_lowering_spec.rb +71 -0
- data/test/stub/apache2/httpd.conf +72 -0
- data/test/stub/apache2/httpd.conf.erb +77 -0
- data/test/stub/apache2/mime.types +748 -0
- data/test/stub/broken-railsapp/config/environment.rb +2 -0
- data/test/stub/broken-railsapp/public/useless.txt +1 -0
- data/test/stub/broken-railsapp2/config/environment.rb +3 -0
- data/test/stub/broken-railsapp3/config/environment.rb +4 -0
- data/test/stub/broken-railsapp4/config/environment.rb +1 -0
- data/test/stub/broken-railsapp4/public/useless.txt +1 -0
- data/test/stub/broken-railsapp5/config/environment.rb +1 -0
- data/test/stub/broken-railsapp5/public/useless.txt +1 -0
- data/test/stub/broken-railsapp5/vendor/rails/actionmailer/lib/action_mailer.rb +0 -0
- data/test/stub/broken-railsapp5/vendor/rails/actionpack/lib/action_controller.rb +0 -0
- data/test/stub/broken-railsapp5/vendor/rails/actionpack/lib/action_pack.rb +0 -0
- data/test/stub/broken-railsapp5/vendor/rails/actionpack/lib/action_view.rb +0 -0
- data/test/stub/broken-railsapp5/vendor/rails/activerecord/lib/active_record.rb +0 -0
- data/test/stub/broken-railsapp5/vendor/rails/activeresource/lib/active_resource.rb +0 -0
- data/test/stub/broken-railsapp5/vendor/rails/activesupport/lib/active_support.rb +17 -0
- data/test/stub/broken-railsapp5/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +0 -0
- data/test/stub/broken-railsapp5/vendor/rails/railties/lib/dispatcher.rb +0 -0
- data/test/stub/broken-railsapp5/vendor/rails/railties/lib/initializer.rb +9 -0
- data/test/stub/broken-railsapp5/vendor/rails/railties/lib/ruby_version_check.rb +1 -0
- data/test/stub/garbage1.dat +0 -0
- data/test/stub/garbage2.dat +0 -0
- data/test/stub/garbage3.dat +0 -0
- data/test/stub/http_request.yml +23 -0
- data/test/stub/message_channel.rb +9 -0
- data/test/stub/message_channel_2.rb +10 -0
- data/test/stub/message_channel_3.rb +15 -0
- data/test/stub/minimal-railsapp/README +3 -0
- data/test/stub/minimal-railsapp/config/application.rb +0 -0
- data/test/stub/minimal-railsapp/config/environment.rb +3 -0
- data/test/stub/minimal-railsapp/vendor/rails/actionmailer/lib/action_mailer.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_controller.rb +6 -0
- data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_pack.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_view.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/activerecord/lib/active_record.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/activeresource/lib/active_resource.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/activesupport/lib/active_support.rb +17 -0
- data/test/stub/minimal-railsapp/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/railties/lib/dispatcher.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/railties/lib/initializer.rb +8 -0
- data/test/stub/minimal-railsapp/vendor/rails/railties/lib/ruby_version_check.rb +1 -0
- data/test/stub/mycook/app/controllers/application.rb +12 -0
- data/test/stub/mycook/app/controllers/recipes_controller.rb +5 -0
- data/test/stub/mycook/app/controllers/uploads_controller.rb +11 -0
- data/test/stub/mycook/app/controllers/welcome_controller.rb +23 -0
- data/test/stub/mycook/app/helpers/application_helper.rb +3 -0
- data/test/stub/mycook/app/views/layouts/default.rhtml +26 -0
- data/test/stub/mycook/app/views/recipes/create.rhtml +13 -0
- data/test/stub/mycook/app/views/recipes/index.rhtml +3 -0
- data/test/stub/mycook/app/views/recipes/new.rhtml +8 -0
- data/test/stub/mycook/app/views/uploads/index.rhtml +1 -0
- data/test/stub/mycook/app/views/uploads/new.html.erb +8 -0
- data/test/stub/mycook/app/views/welcome/cached.rhtml +1 -0
- data/test/stub/mycook/app/views/welcome/index.rhtml +20 -0
- data/test/stub/mycook/config/boot.rb +108 -0
- data/test/stub/mycook/config/database.yml +19 -0
- data/test/stub/mycook/config/environment.rb +61 -0
- data/test/stub/mycook/config/environments/development.rb +18 -0
- data/test/stub/mycook/config/environments/production.rb +19 -0
- data/test/stub/mycook/config/environments/test.rb +22 -0
- data/test/stub/mycook/config/initializers/inflections.rb +10 -0
- data/test/stub/mycook/config/initializers/mime_types.rb +5 -0
- data/test/stub/mycook/config/routes.rb +38 -0
- data/test/stub/mycook/public/404.html +30 -0
- data/test/stub/mycook/public/422.html +30 -0
- data/test/stub/mycook/public/500.html +30 -0
- data/test/stub/mycook/public/dispatch.cgi +10 -0
- data/test/stub/mycook/public/dispatch.fcgi +24 -0
- data/test/stub/mycook/public/dispatch.rb +10 -0
- data/test/stub/mycook/public/favicon.ico +0 -0
- data/test/stub/mycook/public/images/angrywizard.gif +0 -0
- data/test/stub/mycook/public/images/cookbook.gif +0 -0
- data/test/stub/mycook/public/images/header.png +0 -0
- data/test/stub/mycook/public/images/rails.png +0 -0
- data/test/stub/mycook/public/javascripts/application.js +2 -0
- data/test/stub/mycook/public/javascripts/controls.js +963 -0
- data/test/stub/mycook/public/javascripts/dragdrop.js +972 -0
- data/test/stub/mycook/public/javascripts/effects.js +1120 -0
- data/test/stub/mycook/public/javascripts/prototype.js +4225 -0
- data/test/stub/mycook/public/robots.txt +5 -0
- data/test/stub/mycook/public/uploads.html +26 -0
- data/test/stub/mycook/public/welcome/cached.html +26 -0
- data/test/stub/railsapp-without-version-spec/app/controllers/application.rb +12 -0
- data/test/stub/railsapp-without-version-spec/app/controllers/foo_controller.rb +5 -0
- data/test/stub/railsapp-without-version-spec/app/helpers/application_helper.rb +3 -0
- data/test/stub/railsapp-without-version-spec/config/boot.rb +108 -0
- data/test/stub/railsapp-without-version-spec/config/database.yml +19 -0
- data/test/stub/railsapp-without-version-spec/config/environment.rb +58 -0
- data/test/stub/railsapp-without-version-spec/config/environments/development.rb +18 -0
- data/test/stub/railsapp-without-version-spec/config/environments/production.rb +19 -0
- data/test/stub/railsapp-without-version-spec/config/environments/test.rb +22 -0
- data/test/stub/railsapp-without-version-spec/config/initializers/inflections.rb +10 -0
- data/test/stub/railsapp-without-version-spec/config/initializers/mime_types.rb +5 -0
- data/test/stub/railsapp-without-version-spec/config/routes.rb +35 -0
- data/test/stub/railsapp-without-version-spec/public/useless.txt +1 -0
- data/test/stub/railsapp/app/controllers/application.rb +12 -0
- data/test/stub/railsapp/app/controllers/bar_controller_1.rb +5 -0
- data/test/stub/railsapp/app/controllers/bar_controller_2.rb +5 -0
- data/test/stub/railsapp/app/controllers/foo_controller.rb +5 -0
- data/test/stub/railsapp/app/helpers/application_helper.rb +3 -0
- data/test/stub/railsapp/config/boot.rb +108 -0
- data/test/stub/railsapp/config/database.yml +19 -0
- data/test/stub/railsapp/config/environment.rb +59 -0
- data/test/stub/railsapp/config/environments/development.rb +18 -0
- data/test/stub/railsapp/config/environments/production.rb +19 -0
- data/test/stub/railsapp/config/environments/test.rb +22 -0
- data/test/stub/railsapp/config/initializers/inflections.rb +10 -0
- data/test/stub/railsapp/config/initializers/mime_types.rb +5 -0
- data/test/stub/railsapp/config/routes.rb +35 -0
- data/test/stub/railsapp/public/useless.txt +1 -0
- data/test/stub/railsapp2/app/controllers/application.rb +12 -0
- data/test/stub/railsapp2/app/controllers/foo_controller.rb +5 -0
- data/test/stub/railsapp2/app/helpers/application_helper.rb +3 -0
- data/test/stub/railsapp2/config/boot.rb +108 -0
- data/test/stub/railsapp2/config/database.yml +19 -0
- data/test/stub/railsapp2/config/environment.rb +59 -0
- data/test/stub/railsapp2/config/environments/development.rb +18 -0
- data/test/stub/railsapp2/config/environments/production.rb +19 -0
- data/test/stub/railsapp2/config/environments/test.rb +22 -0
- data/test/stub/railsapp2/config/initializers/inflections.rb +10 -0
- data/test/stub/railsapp2/config/initializers/mime_types.rb +5 -0
- data/test/stub/railsapp2/config/routes.rb +35 -0
- data/test/stub/railsapp2/public/useless.txt +1 -0
- data/test/stub/spawn_server.rb +17 -0
- data/test/stub/zsfa/header.png +0 -0
- data/test/stub/zsfa/index.html +14 -0
- data/test/stub/zsfa/zsfa.png +0 -0
- data/test/support/apache2_config_writer.rb +44 -0
- data/test/support/config.rb +10 -0
- data/test/support/multipart.rb +62 -0
- data/test/support/run_rspec_tests.rb +10 -0
- data/test/support/tut.h +1219 -0
- data/test/support/tut_reporter.h +256 -0
- data/test/support/valgrind.h +2539 -0
- metadata +2204 -0
@@ -0,0 +1,197 @@
|
|
1
|
+
Security of user switching support in Passenger
|
2
|
+
===============================================
|
3
|
+
|
4
|
+
Problem description
|
5
|
+
-------------------
|
6
|
+
TIP: It is strongly recommended that you first read our
|
7
|
+
link:Architectural%20overview.html[Architectural Overview].
|
8
|
+
|
9
|
+
A straightforward implementation of Passenger will spawn Rails applications in
|
10
|
+
the same user context as Apache itself. On server machines which host multiple
|
11
|
+
websites for multiple users, this may not be desired. All Rails applications
|
12
|
+
spawned by Passenger will be able to read and write to all directories that the
|
13
|
+
web server can. So for example, Joe's Rails applications could read Jane's
|
14
|
+
Rails application's 'database.yml' or delete her application files. This is
|
15
|
+
also a problem that typically plagues PHP web hosts.
|
16
|
+
|
17
|
+
There are multiple ways to solve this problem. The goal of this document is to
|
18
|
+
inform the reader about the solutions have we have analyzed, so that
|
19
|
+
Passenger's security may be peer reviewed.
|
20
|
+
|
21
|
+
|
22
|
+
Analysis of possible solutions
|
23
|
+
------------------------------
|
24
|
+
It seems that the only way to solve this problem on Unix, is to run each Rails
|
25
|
+
application server as its owner's user and group. Passenger can make use of
|
26
|
+
one of the following methods to implement this:
|
27
|
+
|
28
|
+
1. Apache (and thus Passenger) must already be running as root.
|
29
|
+
2. Using Apache's suEXEC.
|
30
|
+
3. A setuid root wrapper application must exist, to allow non-root processes
|
31
|
+
to obtain root privileges (or at least, the privilege to switch user).
|
32
|
+
4. For each user $X that Passenger will need to switch to, there must exist
|
33
|
+
a setuid $X wrapper application.
|
34
|
+
5. Using 'su'.
|
35
|
+
6. Using 'sudo'.
|
36
|
+
|
37
|
+
Let us take a look at each method in detail.
|
38
|
+
|
39
|
+
[[apache_root]]
|
40
|
+
Apache must already be running as root
|
41
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
42
|
+
First, let us take a look at the typical Apache setup, in which Apache is bound
|
43
|
+
to port 80, and uses the prefork MPM. Binding to any port lower than 1024
|
44
|
+
requires root privileges, so Apache is typically run as root. This poses an
|
45
|
+
unacceptable security risk, so Apache's prefork MPM will, upon receiving an
|
46
|
+
HTTP request, spawn a child process with the privileges of a normal user,
|
47
|
+
typically 'www-data' or 'nobody'.
|
48
|
+
See http://httpd.apache.org/docs/2.2/mod/prefork.html[the documentation for the
|
49
|
+
prefork MPM] - in particular the ``User'' and ``Group'' directives - for details.
|
50
|
+
The process which is responsible for spawning child processes (also called the
|
51
|
+
control process) is run as root. This is also true for
|
52
|
+
http://httpd.apache.org/docs/2.2/mod/worker.html[the worker MPM].
|
53
|
+
|
54
|
+
Since Passenger has access to the control process, in the typical Apache setup,
|
55
|
+
Passenger can already launch Rails applications as a different user. But now we
|
56
|
+
have to ask this question:
|
57
|
+
|
58
|
+
=================================
|
59
|
+
If Apache is not running as root, are there still any Passenger users who
|
60
|
+
want to run Rails applications as different users?
|
61
|
+
=================================
|
62
|
+
|
63
|
+
If the answer is yes, then we cannot use this method.
|
64
|
+
|
65
|
+
The advantage of this method is that setting up Apache to run as root is
|
66
|
+
incredibly easy, and requires no new framework to be written. However, testing
|
67
|
+
this method in automated unit tests will require running the unit test suit as
|
68
|
+
root.
|
69
|
+
|
70
|
+
Using Apache's suEXEC
|
71
|
+
~~~~~~~~~~~~~~~~~~~~~
|
72
|
+
Apache's http://httpd.apache.org/docs/2.0/suexec.html[suEXEC] allows one to
|
73
|
+
run CGI processes as different users. But it seems that suEXEC can only be
|
74
|
+
used for CGI, and is not a general-purpose mechanism. The
|
75
|
+
http://alain.knaff.lu/howto/PhpSuexec/[PHP-suEXEC] software allows one to run
|
76
|
+
PHP applications via suEXEC, but it requires patching suEXEC. If Passenger is
|
77
|
+
to use suEXEC, then it is likely that we'll have to patch suEXEC. The suEXEC
|
78
|
+
website strongly discourages patching.
|
79
|
+
|
80
|
+
Using a setuid root wrapper application
|
81
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
82
|
+
If we use this method, we must be extremely careful. It must not be possible
|
83
|
+
for arbitrary processes to gain root privileges. We want Passenger, and only
|
84
|
+
Passenger, to be able to gain root privileges.
|
85
|
+
|
86
|
+
There are multiple ways to implement this security. The first one is to use
|
87
|
+
a password file, which only Apache and the wrapper can read, through
|
88
|
+
the use of proper file permissions. The password file must never be world
|
89
|
+
readable or writable.
|
90
|
+
|
91
|
+
It works as follows:
|
92
|
+
|
93
|
+
1. Passenger runs the wrapper.
|
94
|
+
2. Passenger passes the content of the password file to the wrapper, via
|
95
|
+
an anonymous pipe (or some other anonymous channel, that no other
|
96
|
+
processes can access).
|
97
|
+
3. The wrapper checks whether the passed content is the same as what is in
|
98
|
+
the password file. If it is, then it is proven that whatever application
|
99
|
+
ran the wrapper has read access to the password file, and thus is authorized
|
100
|
+
to use the wrapper.
|
101
|
+
|
102
|
+
An obvious problem that arises is: how does the wrapper locate its own password
|
103
|
+
file? We obviously do not want to be able to specify the password filename as
|
104
|
+
an argument to the wrapper: that would defeat the point of the password file.
|
105
|
+
The solution is that the filename is to be hardcoded into the binary during
|
106
|
+
compile time.
|
107
|
+
|
108
|
+
Another way to implement security is to use a whitelist of users that are
|
109
|
+
allowed to use the wrapper. The wrapper can then check whether the calling
|
110
|
+
process's user is in the whitelist.
|
111
|
+
|
112
|
+
Writing a wrapper is not too hard. Furthermore, unit tests do not have to be
|
113
|
+
run as root, in contrast to the run-Apache-as-root method.
|
114
|
+
|
115
|
+
[[setuid_root]]
|
116
|
+
Using a setuid $X wrapper application
|
117
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
118
|
+
A setuid $X wrapper will work in a fashion similar to the setuid root wrapper,
|
119
|
+
i.e. it will use a password file for authorization.
|
120
|
+
|
121
|
+
Passenger does not spawn Rails applications itself, but does so via the spawn
|
122
|
+
server. This spawn server is also responsible for preloading the Rails
|
123
|
+
framework and the Rails application code, in order to speed up the spawning
|
124
|
+
of Rails applications. See the design document of the spawn server for details.
|
125
|
+
The spawn server never calls `exec()`: doing so will make preloading useless.
|
126
|
+
If Passenger is to use a setuid $X wrapper, then it must start the spawn
|
127
|
+
server via the wrapper. The spawn server itself cannot use the wrapper.
|
128
|
+
|
129
|
+
However, doing so will make preloading less efficient. Passenger will be forced
|
130
|
+
to run a spawn server for each user. The different spawn servers do not share
|
131
|
+
memory with each other, so a lot of memory is wasted compared to the other
|
132
|
+
methods.
|
133
|
+
|
134
|
+
Implementing this will also take more work. One has to create a different
|
135
|
+
wrapper for each user, and to install it.
|
136
|
+
|
137
|
+
Using 'su'
|
138
|
+
~~~~~~~~~~
|
139
|
+
The standard Unix 'su' tool asks for the root password. It's a bad idea for
|
140
|
+
Apache to know the root password, so using 'su' is not a viable alternative.
|
141
|
+
|
142
|
+
Using 'sudo'
|
143
|
+
~~~~~~~~~~~~
|
144
|
+
It might be possible to use the 'sudo' utility. sudo can be configured in
|
145
|
+
such a way that the user Apache runs as can use sudo without having to enter a
|
146
|
+
password.
|
147
|
+
|
148
|
+
However, Passenger uses an anonymous communication channel (an unnamed Unix
|
149
|
+
socket) to communicate with the spawn server. sudo seems to close all file
|
150
|
+
descriptors before executing an application, so Passenger will have to
|
151
|
+
communicate with the spawn server via a non-anonymous channel, such as a named
|
152
|
+
Unix socket. Because other processes can access this channel, it can introduce
|
153
|
+
potential security problems. Note that passing information via program arguments
|
154
|
+
is not secure: it is possible to view that information with tools like 'ps',
|
155
|
+
or (on Linux) by reading the file `/proc/$PID/cmdline`.
|
156
|
+
|
157
|
+
So it seems 'sudo' is not a viable alternative.
|
158
|
+
|
159
|
+
Common security issues
|
160
|
+
~~~~~~~~~~~~~~~~~~~~~~
|
161
|
+
Whatever method Passenger will use, the following security principles must be
|
162
|
+
honored:
|
163
|
+
|
164
|
+
- Rails applications must never be run as root.
|
165
|
+
|
166
|
+
It might also be worthy to look into suEXEC's security model for inspiration.
|
167
|
+
|
168
|
+
Also, the following questions remain:
|
169
|
+
|
170
|
+
- Is there a need for a user whitelist/blacklist? That is, is there a need for
|
171
|
+
the ability to restrict the set of users that Passenger can switch to?
|
172
|
+
|
173
|
+
|
174
|
+
Chosen solution
|
175
|
+
---------------
|
176
|
+
Running Apache as root and writing a setuid root wrapper are the main
|
177
|
+
contestants. The former is preferred, because it's easier to implement.
|
178
|
+
|
179
|
+
We have had some conversations with people on the IRC channel #rubyonrails.
|
180
|
+
Among those people, nobody has ever run Apache as non-root. Because of this
|
181
|
+
we have chosen to implement the <<apache_root,Running Apache as root>>
|
182
|
+
solution, until a significant number of users request us to implement the
|
183
|
+
<<setuid_root,setuid root wrapper>> solution.
|
184
|
+
|
185
|
+
Please read link:rdoc/index.html[the Ruby API documentation] -- in particular
|
186
|
+
that of the 'ApplicationSpawner' class -- for implementation details. But to
|
187
|
+
make a long story short: it will switch to the owner of the file
|
188
|
+
'config/environment.rb'. User whitelisting/blacklisting is currently not
|
189
|
+
implemented. We rely on the system administrator to set the correct owner
|
190
|
+
on that file.
|
191
|
+
|
192
|
+
We have also not implemented suEXEC's security model. suEXEC's model is quite
|
193
|
+
paranoid, and although paranoia is good to a certain extend, it can be in the
|
194
|
+
way of usability while proving little extra security. We are not entirely
|
195
|
+
convinced that implementing suEXEC's full security model will provide
|
196
|
+
significant benefits, but if you have good reasons to think otherwise, please
|
197
|
+
feel free to discuss it with us.
|
@@ -0,0 +1,1356 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
6
|
+
<meta name="generator" content="AsciiDoc 8.2.5" />
|
7
|
+
<style type="text/css">
|
8
|
+
/* Debug borders */
|
9
|
+
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
|
10
|
+
/*
|
11
|
+
border: 1px solid red;
|
12
|
+
*/
|
13
|
+
}
|
14
|
+
|
15
|
+
body {
|
16
|
+
margin: 1em 5% 1em 5%;
|
17
|
+
}
|
18
|
+
|
19
|
+
a {
|
20
|
+
color: blue;
|
21
|
+
text-decoration: underline;
|
22
|
+
}
|
23
|
+
a:visited {
|
24
|
+
color: fuchsia;
|
25
|
+
}
|
26
|
+
|
27
|
+
em {
|
28
|
+
font-style: italic;
|
29
|
+
}
|
30
|
+
|
31
|
+
strong {
|
32
|
+
font-weight: bold;
|
33
|
+
}
|
34
|
+
|
35
|
+
tt {
|
36
|
+
color: navy;
|
37
|
+
}
|
38
|
+
|
39
|
+
h1, h2, h3, h4, h5, h6 {
|
40
|
+
color: #527bbd;
|
41
|
+
font-family: sans-serif;
|
42
|
+
margin-top: 1.2em;
|
43
|
+
margin-bottom: 0.5em;
|
44
|
+
line-height: 1.3;
|
45
|
+
}
|
46
|
+
|
47
|
+
h1, h2, h3 {
|
48
|
+
border-bottom: 2px solid silver;
|
49
|
+
}
|
50
|
+
h2 {
|
51
|
+
padding-top: 0.5em;
|
52
|
+
}
|
53
|
+
h3 {
|
54
|
+
float: left;
|
55
|
+
}
|
56
|
+
h3 + * {
|
57
|
+
clear: left;
|
58
|
+
}
|
59
|
+
|
60
|
+
div.sectionbody {
|
61
|
+
font-family: serif;
|
62
|
+
margin-left: 0;
|
63
|
+
}
|
64
|
+
|
65
|
+
hr {
|
66
|
+
border: 1px solid silver;
|
67
|
+
}
|
68
|
+
|
69
|
+
p {
|
70
|
+
margin-top: 0.5em;
|
71
|
+
margin-bottom: 0.5em;
|
72
|
+
}
|
73
|
+
|
74
|
+
pre {
|
75
|
+
padding: 0;
|
76
|
+
margin: 0;
|
77
|
+
}
|
78
|
+
|
79
|
+
span#author {
|
80
|
+
color: #527bbd;
|
81
|
+
font-family: sans-serif;
|
82
|
+
font-weight: bold;
|
83
|
+
font-size: 1.1em;
|
84
|
+
}
|
85
|
+
span#email {
|
86
|
+
}
|
87
|
+
span#revision {
|
88
|
+
font-family: sans-serif;
|
89
|
+
}
|
90
|
+
|
91
|
+
div#footer {
|
92
|
+
font-family: sans-serif;
|
93
|
+
font-size: small;
|
94
|
+
border-top: 2px solid silver;
|
95
|
+
padding-top: 0.5em;
|
96
|
+
margin-top: 4.0em;
|
97
|
+
}
|
98
|
+
div#footer-text {
|
99
|
+
float: left;
|
100
|
+
padding-bottom: 0.5em;
|
101
|
+
}
|
102
|
+
div#footer-badges {
|
103
|
+
float: right;
|
104
|
+
padding-bottom: 0.5em;
|
105
|
+
}
|
106
|
+
|
107
|
+
div#preamble,
|
108
|
+
div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
|
109
|
+
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
|
110
|
+
div.admonitionblock {
|
111
|
+
margin-right: 10%;
|
112
|
+
margin-top: 1.5em;
|
113
|
+
margin-bottom: 1.5em;
|
114
|
+
}
|
115
|
+
div.admonitionblock {
|
116
|
+
margin-top: 2.5em;
|
117
|
+
margin-bottom: 2.5em;
|
118
|
+
}
|
119
|
+
|
120
|
+
div.content { /* Block element content. */
|
121
|
+
padding: 0;
|
122
|
+
}
|
123
|
+
|
124
|
+
/* Block element titles. */
|
125
|
+
div.title, caption.title {
|
126
|
+
font-family: sans-serif;
|
127
|
+
font-weight: bold;
|
128
|
+
text-align: left;
|
129
|
+
margin-top: 1.0em;
|
130
|
+
margin-bottom: 0.5em;
|
131
|
+
}
|
132
|
+
div.title + * {
|
133
|
+
margin-top: 0;
|
134
|
+
}
|
135
|
+
|
136
|
+
td div.title:first-child {
|
137
|
+
margin-top: 0.0em;
|
138
|
+
}
|
139
|
+
div.content div.title:first-child {
|
140
|
+
margin-top: 0.0em;
|
141
|
+
}
|
142
|
+
div.content + div.title {
|
143
|
+
margin-top: 0.0em;
|
144
|
+
}
|
145
|
+
|
146
|
+
div.sidebarblock > div.content {
|
147
|
+
background: #ffffee;
|
148
|
+
border: 1px solid silver;
|
149
|
+
padding: 0.5em;
|
150
|
+
}
|
151
|
+
|
152
|
+
div.listingblock {
|
153
|
+
margin-right: 0%;
|
154
|
+
}
|
155
|
+
div.listingblock > div.content {
|
156
|
+
border: 1px solid silver;
|
157
|
+
background: #f4f4f4;
|
158
|
+
padding: 0.5em;
|
159
|
+
}
|
160
|
+
|
161
|
+
div.quoteblock > div.content {
|
162
|
+
padding-left: 2.0em;
|
163
|
+
}
|
164
|
+
|
165
|
+
div.attribution {
|
166
|
+
text-align: right;
|
167
|
+
}
|
168
|
+
div.verseblock + div.attribution {
|
169
|
+
text-align: left;
|
170
|
+
}
|
171
|
+
|
172
|
+
div.admonitionblock .icon {
|
173
|
+
vertical-align: top;
|
174
|
+
font-size: 1.1em;
|
175
|
+
font-weight: bold;
|
176
|
+
text-decoration: underline;
|
177
|
+
color: #527bbd;
|
178
|
+
padding-right: 0.5em;
|
179
|
+
}
|
180
|
+
div.admonitionblock td.content {
|
181
|
+
padding-left: 0.5em;
|
182
|
+
border-left: 2px solid silver;
|
183
|
+
}
|
184
|
+
|
185
|
+
div.exampleblock > div.content {
|
186
|
+
border-left: 2px solid silver;
|
187
|
+
padding: 0.5em;
|
188
|
+
}
|
189
|
+
|
190
|
+
div.verseblock div.content {
|
191
|
+
white-space: pre;
|
192
|
+
}
|
193
|
+
|
194
|
+
div.imageblock div.content { padding-left: 0; }
|
195
|
+
div.imageblock img { border: 1px solid silver; }
|
196
|
+
span.image img { border-style: none; }
|
197
|
+
|
198
|
+
dl {
|
199
|
+
margin-top: 0.8em;
|
200
|
+
margin-bottom: 0.8em;
|
201
|
+
}
|
202
|
+
dt {
|
203
|
+
margin-top: 0.5em;
|
204
|
+
margin-bottom: 0;
|
205
|
+
font-style: italic;
|
206
|
+
}
|
207
|
+
dd > *:first-child {
|
208
|
+
margin-top: 0;
|
209
|
+
}
|
210
|
+
|
211
|
+
ul, ol {
|
212
|
+
list-style-position: outside;
|
213
|
+
}
|
214
|
+
div.olist2 ol {
|
215
|
+
list-style-type: lower-alpha;
|
216
|
+
}
|
217
|
+
|
218
|
+
div.tableblock > table {
|
219
|
+
border: 3px solid #527bbd;
|
220
|
+
}
|
221
|
+
thead {
|
222
|
+
font-family: sans-serif;
|
223
|
+
font-weight: bold;
|
224
|
+
}
|
225
|
+
tfoot {
|
226
|
+
font-weight: bold;
|
227
|
+
}
|
228
|
+
|
229
|
+
div.hlist {
|
230
|
+
margin-top: 0.8em;
|
231
|
+
margin-bottom: 0.8em;
|
232
|
+
}
|
233
|
+
div.hlist td {
|
234
|
+
padding-bottom: 5px;
|
235
|
+
}
|
236
|
+
td.hlist1 {
|
237
|
+
vertical-align: top;
|
238
|
+
font-style: italic;
|
239
|
+
padding-right: 0.8em;
|
240
|
+
}
|
241
|
+
td.hlist2 {
|
242
|
+
vertical-align: top;
|
243
|
+
}
|
244
|
+
|
245
|
+
@media print {
|
246
|
+
div#footer-badges { display: none; }
|
247
|
+
}
|
248
|
+
|
249
|
+
div#toctitle {
|
250
|
+
color: #527bbd;
|
251
|
+
font-family: sans-serif;
|
252
|
+
font-size: 1.1em;
|
253
|
+
font-weight: bold;
|
254
|
+
margin-top: 1.0em;
|
255
|
+
margin-bottom: 0.1em;
|
256
|
+
}
|
257
|
+
|
258
|
+
div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
|
259
|
+
margin-top: 0;
|
260
|
+
margin-bottom: 0;
|
261
|
+
}
|
262
|
+
div.toclevel2 {
|
263
|
+
margin-left: 2em;
|
264
|
+
font-size: 0.9em;
|
265
|
+
}
|
266
|
+
div.toclevel3 {
|
267
|
+
margin-left: 4em;
|
268
|
+
font-size: 0.9em;
|
269
|
+
}
|
270
|
+
div.toclevel4 {
|
271
|
+
margin-left: 6em;
|
272
|
+
font-size: 0.9em;
|
273
|
+
}
|
274
|
+
/* Workarounds for IE6's broken and incomplete CSS2. */
|
275
|
+
|
276
|
+
div.sidebar-content {
|
277
|
+
background: #ffffee;
|
278
|
+
border: 1px solid silver;
|
279
|
+
padding: 0.5em;
|
280
|
+
}
|
281
|
+
div.sidebar-title, div.image-title {
|
282
|
+
font-family: sans-serif;
|
283
|
+
font-weight: bold;
|
284
|
+
margin-top: 0.0em;
|
285
|
+
margin-bottom: 0.5em;
|
286
|
+
}
|
287
|
+
|
288
|
+
div.listingblock div.content {
|
289
|
+
border: 1px solid silver;
|
290
|
+
background: #f4f4f4;
|
291
|
+
padding: 0.5em;
|
292
|
+
}
|
293
|
+
|
294
|
+
div.quoteblock-content {
|
295
|
+
padding-left: 2.0em;
|
296
|
+
}
|
297
|
+
|
298
|
+
div.exampleblock-content {
|
299
|
+
border-left: 2px solid silver;
|
300
|
+
padding-left: 0.5em;
|
301
|
+
}
|
302
|
+
|
303
|
+
/* IE6 sets dynamically generated links as visited. */
|
304
|
+
div#toc a:visited { color: blue; }
|
305
|
+
</style>
|
306
|
+
<script type="text/javascript">
|
307
|
+
/*<![CDATA[*/
|
308
|
+
window.onload = function(){generateToc(3)}
|
309
|
+
/* Author: Mihai Bazon, September 2002
|
310
|
+
* http://students.infoiasi.ro/~mishoo
|
311
|
+
*
|
312
|
+
* Table Of Content generator
|
313
|
+
* Version: 0.4
|
314
|
+
*
|
315
|
+
* Feel free to use this script under the terms of the GNU General Public
|
316
|
+
* License, as long as you do not remove or alter this notice.
|
317
|
+
*/
|
318
|
+
|
319
|
+
/* modified by Troy D. Hanson, September 2006. License: GPL */
|
320
|
+
/* modified by Stuart Rackham, October 2006. License: GPL */
|
321
|
+
|
322
|
+
function getText(el) {
|
323
|
+
var text = "";
|
324
|
+
for (var i = el.firstChild; i != null; i = i.nextSibling) {
|
325
|
+
if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
|
326
|
+
text += i.data;
|
327
|
+
else if (i.firstChild != null)
|
328
|
+
text += getText(i);
|
329
|
+
}
|
330
|
+
return text;
|
331
|
+
}
|
332
|
+
|
333
|
+
function TocEntry(el, text, toclevel) {
|
334
|
+
this.element = el;
|
335
|
+
this.text = text;
|
336
|
+
this.toclevel = toclevel;
|
337
|
+
}
|
338
|
+
|
339
|
+
function tocEntries(el, toclevels) {
|
340
|
+
var result = new Array;
|
341
|
+
var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
|
342
|
+
// Function that scans the DOM tree for header elements (the DOM2
|
343
|
+
// nodeIterator API would be a better technique but not supported by all
|
344
|
+
// browsers).
|
345
|
+
var iterate = function (el) {
|
346
|
+
for (var i = el.firstChild; i != null; i = i.nextSibling) {
|
347
|
+
if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
|
348
|
+
var mo = re.exec(i.tagName)
|
349
|
+
if (mo)
|
350
|
+
result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
|
351
|
+
iterate(i);
|
352
|
+
}
|
353
|
+
}
|
354
|
+
}
|
355
|
+
iterate(el);
|
356
|
+
return result;
|
357
|
+
}
|
358
|
+
|
359
|
+
// This function does the work. toclevels = 1..4.
|
360
|
+
function generateToc(toclevels) {
|
361
|
+
var toc = document.getElementById("toc");
|
362
|
+
var entries = tocEntries(document.getElementsByTagName("body")[0], toclevels);
|
363
|
+
for (var i = 0; i < entries.length; ++i) {
|
364
|
+
var entry = entries[i];
|
365
|
+
if (entry.element.id == "")
|
366
|
+
entry.element.id = "toc" + i;
|
367
|
+
var a = document.createElement("a");
|
368
|
+
a.href = "#" + entry.element.id;
|
369
|
+
a.appendChild(document.createTextNode(entry.text));
|
370
|
+
var div = document.createElement("div");
|
371
|
+
div.appendChild(a);
|
372
|
+
div.className = "toclevel" + entry.toclevel;
|
373
|
+
toc.appendChild(div);
|
374
|
+
}
|
375
|
+
}
|
376
|
+
/*]]>*/
|
377
|
+
</script>
|
378
|
+
<title>Passenger users guide</title>
|
379
|
+
</head>
|
380
|
+
<body>
|
381
|
+
<div id="header">
|
382
|
+
<h1>Passenger users guide</h1>
|
383
|
+
<div id="toc">
|
384
|
+
<div id="toctitle">Table of Contents</div>
|
385
|
+
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
|
386
|
+
</div>
|
387
|
+
</div>
|
388
|
+
<div id="preamble">
|
389
|
+
<div class="sectionbody">
|
390
|
+
<div class="para"><p><span class="image">
|
391
|
+
<a class="image" href="http://www.phusion.nl/">
|
392
|
+
<img src="images/phusion_banner.png" alt="images/phusion_banner.png" />
|
393
|
+
</a>
|
394
|
+
</span></p></div>
|
395
|
+
<div class="para"><p>Passenger is an Apache module, which makes deploying Ruby on Rails applications
|
396
|
+
on Apache a breeze. It follows the usual Ruby on Rails conventions, such as
|
397
|
+
"Don't-Repeat-Yourself" and ease of setup.</p></div>
|
398
|
+
<div class="para"><p>This users guide will teach you:</p></div>
|
399
|
+
<div class="ilist"><ul>
|
400
|
+
<li>
|
401
|
+
<p>
|
402
|
+
How to install Passenger.
|
403
|
+
</p>
|
404
|
+
</li>
|
405
|
+
<li>
|
406
|
+
<p>
|
407
|
+
How to configure Passenger.
|
408
|
+
</p>
|
409
|
+
</li>
|
410
|
+
<li>
|
411
|
+
<p>
|
412
|
+
How to deploy a Ruby on Rails application.
|
413
|
+
</p>
|
414
|
+
</li>
|
415
|
+
<li>
|
416
|
+
<p>
|
417
|
+
How to solve common problems.
|
418
|
+
</p>
|
419
|
+
</li>
|
420
|
+
</ul></div>
|
421
|
+
<div class="para"><p>This guide assumes that the reader is somewhat familiar with Apache and with
|
422
|
+
using the commandline.</p></div>
|
423
|
+
</div>
|
424
|
+
</div>
|
425
|
+
<h2 id="_installation">1. Installation</h2>
|
426
|
+
<div class="sectionbody">
|
427
|
+
<h3 id="_supported_operating_systems">1.1. Supported operating systems</h3><div style="clear:left"></div>
|
428
|
+
<div class="para"><p>Passenger works on any POSIX-compliant operating system. In other words:
|
429
|
+
practically any operating system on earth, except Microsoft Windows.</p></div>
|
430
|
+
<div class="para"><p>Passenger has been tested on:</p></div>
|
431
|
+
<div class="ilist"><ul>
|
432
|
+
<li>
|
433
|
+
<p>
|
434
|
+
Ubuntu Linux 6.06 (x86)
|
435
|
+
</p>
|
436
|
+
</li>
|
437
|
+
<li>
|
438
|
+
<p>
|
439
|
+
Ubuntu Linux 7.10 (x86)
|
440
|
+
</p>
|
441
|
+
</li>
|
442
|
+
<li>
|
443
|
+
<p>
|
444
|
+
Debian Sarge (x86)
|
445
|
+
</p>
|
446
|
+
</li>
|
447
|
+
<li>
|
448
|
+
<p>
|
449
|
+
Debian Etch (x86)
|
450
|
+
</p>
|
451
|
+
</li>
|
452
|
+
<li>
|
453
|
+
<p>
|
454
|
+
Debian Lenny/Sid (x86)
|
455
|
+
</p>
|
456
|
+
</li>
|
457
|
+
<li>
|
458
|
+
<p>
|
459
|
+
CentOS 5 (x86)
|
460
|
+
</p>
|
461
|
+
</li>
|
462
|
+
<li>
|
463
|
+
<p>
|
464
|
+
Red Hat Enterprise Linux 5 (x86)
|
465
|
+
</p>
|
466
|
+
</li>
|
467
|
+
<li>
|
468
|
+
<p>
|
469
|
+
Gentoo, March 14 2008 (AMD64)
|
470
|
+
</p>
|
471
|
+
</li>
|
472
|
+
<li>
|
473
|
+
<p>
|
474
|
+
FreeBSD 6.1-RELEASE (x86)
|
475
|
+
</p>
|
476
|
+
</li>
|
477
|
+
<li>
|
478
|
+
<p>
|
479
|
+
MacOS X Tiger (x86)
|
480
|
+
</p>
|
481
|
+
</li>
|
482
|
+
<li>
|
483
|
+
<p>
|
484
|
+
MacOS X Leopard (x86)
|
485
|
+
</p>
|
486
|
+
</li>
|
487
|
+
</ul></div>
|
488
|
+
<div class="para"><p>Other operating systems have not been tested, but Passenger will probably work
|
489
|
+
fine on them. Please
|
490
|
+
<a href="http://code.google.com/p/phusion-passenger/issues/list">report a bug</a>
|
491
|
+
or
|
492
|
+
<a href="http://groups.google.com/group/phusion-passenger">join our discussion list</a>
|
493
|
+
if it doesn't.</p></div>
|
494
|
+
<h3 id="install_passenger">1.2. Overview of download and installation methods</h3><div style="clear:left"></div>
|
495
|
+
<div class="para"><p>There are two ways to install Passenger:</p></div>
|
496
|
+
<div class="olist"><ol>
|
497
|
+
<li>
|
498
|
+
<p>
|
499
|
+
By installing the Passenger gem, as instructed on the “Install” page
|
500
|
+
on the Passenger website.
|
501
|
+
</p>
|
502
|
+
</li>
|
503
|
+
<li>
|
504
|
+
<p>
|
505
|
+
By downloading the source tarball from the Passenger website
|
506
|
+
(<em>passenger-x.x.x.tar.gz</em>).
|
507
|
+
</p>
|
508
|
+
</li>
|
509
|
+
</ol></div>
|
510
|
+
<div class="para"><p>In our opinion, installing the gem is easiest.</p></div>
|
511
|
+
<div class="para"><p>Passenger provides an easy-to-use installer for installing the Passenger
|
512
|
+
Apache module (<em>mod_passenger</em>).</p></div>
|
513
|
+
<div class="admonitionblock">
|
514
|
+
<table><tr>
|
515
|
+
<td class="icon">
|
516
|
+
<img src="./images/icons/note.png" alt="Note" />
|
517
|
+
</td>
|
518
|
+
<td class="content">You might have to run the installation commands in the following sections
|
519
|
+
as <em>root</em>. If the installer fails because of permission errors, it will tell
|
520
|
+
you.</td>
|
521
|
+
</tr></table>
|
522
|
+
</div>
|
523
|
+
<h3 id="specifying_correct_apache_install">1.3. Specifying the correct Apache installation</h3><div style="clear:left"></div>
|
524
|
+
<div class="para"><p>If your system has multiple Apache installations (this is likely the case on
|
525
|
+
MacOS X), then you will need to tell the Passenger installer which one to use.
|
526
|
+
If you only have one Apache installation (the case on most Linux systems), then
|
527
|
+
you can skip this section because Passenger will automatically detect it.</p></div>
|
528
|
+
<div class="para"><p>Every Apache installation has its own <tt>apxs</tt> program. You will need to tell
|
529
|
+
Passenger the location of this program, by specifying the <tt>APXS2</tt> environment
|
530
|
+
variable. Suppose that you want to use the Apache installation in
|
531
|
+
<em>/opt/apache2</em>. Then, assuming that the corresponding <tt>apxs</tt> program is located
|
532
|
+
<em>/opt/apache2/bin/apxs</em>, type:</p></div>
|
533
|
+
<div class="listingblock">
|
534
|
+
<div class="content">
|
535
|
+
<pre><tt>export APXS2=/opt/apache2/bin/apxs</tt></pre>
|
536
|
+
</div></div>
|
537
|
+
<div class="admonitionblock">
|
538
|
+
<table><tr>
|
539
|
+
<td class="icon">
|
540
|
+
<img src="./images/icons/note.png" alt="Note" />
|
541
|
+
</td>
|
542
|
+
<td class="content">On some systems, the <tt>apxs</tt> program might be called <tt>apxs2</tt>, and it might
|
543
|
+
be located in the <tt>sbin</tt> folder instead of the <tt>bin</tt> folder.</td>
|
544
|
+
</tr></table>
|
545
|
+
</div>
|
546
|
+
<h3 id="specifying_ruby_installation">1.4. Specifying the correct Ruby installation</h3><div style="clear:left"></div>
|
547
|
+
<div class="para"><p>If your system has multiple Ruby installations (this is likely the case on
|
548
|
+
MacOS X), then you will need to tell the Passenger installer which one to use.
|
549
|
+
If you only have one Ruby installation (the case on most Linux systems), then
|
550
|
+
you can skip this section because Passenger will automatically detect it.</p></div>
|
551
|
+
<div class="para"><p>To specify the Ruby installation, prepend your Ruby installation's <tt>bin</tt>
|
552
|
+
directory to the <tt>PATH</tt> environment variable. For example, if you have the
|
553
|
+
following Ruby installations:</p></div>
|
554
|
+
<div class="ilist"><ul>
|
555
|
+
<li>
|
556
|
+
<p>
|
557
|
+
/usr/bin/ruby
|
558
|
+
</p>
|
559
|
+
</li>
|
560
|
+
<li>
|
561
|
+
<p>
|
562
|
+
/opt/myruby/bin/ruby
|
563
|
+
</p>
|
564
|
+
</li>
|
565
|
+
</ul></div>
|
566
|
+
<div class="para"><p>and you want to use the latter, then type:</p></div>
|
567
|
+
<div class="listingblock">
|
568
|
+
<div class="content">
|
569
|
+
<pre><tt>export PATH=/opt/myruby/bin:$PATH</tt></pre>
|
570
|
+
</div></div>
|
571
|
+
<h3 id="_installing_via_the_gem">1.5. Installing via the gem</h3><div style="clear:left"></div>
|
572
|
+
<div class="para"><p>Please install the gem and then run the Passenger installer, by typing the
|
573
|
+
following commands:</p></div>
|
574
|
+
<div class="listingblock">
|
575
|
+
<div class="content">
|
576
|
+
<pre><tt>gem install passenger-x.x.x.gem
|
577
|
+
passenger-install-apache2-module</tt></pre>
|
578
|
+
</div></div>
|
579
|
+
<div class="para"><p>Please follow the instructions given by the installer.</p></div>
|
580
|
+
<h3 id="_installing_via_the_source_tarball">1.6. Installing via the source tarball</h3><div style="clear:left"></div>
|
581
|
+
<div class="para"><p>Extract the tarball to whatever location you prefer. The Passenger files
|
582
|
+
are to reside in that location permanently. For example, if you would like
|
583
|
+
Passenger to reside in <tt>/opt/passenger-x.x.x</tt>:</p></div>
|
584
|
+
<div class="listingblock">
|
585
|
+
<div class="content">
|
586
|
+
<pre><tt>cd /opt
|
587
|
+
tar xzvf ~/YourDownloadsFolder/passenger-x.x.x.tar.gz</tt></pre>
|
588
|
+
</div></div>
|
589
|
+
<div class="para"><p>Next, run the included installer:</p></div>
|
590
|
+
<div class="listingblock">
|
591
|
+
<div class="content">
|
592
|
+
<pre><tt>/opt/passenger-x.x.x/bin/passenger-install-apache2-module</tt></pre>
|
593
|
+
</div></div>
|
594
|
+
<div class="para"><p>Please follow the instructions given by the installer.</p></div>
|
595
|
+
<div class="admonitionblock">
|
596
|
+
<table><tr>
|
597
|
+
<td class="icon">
|
598
|
+
<img src="./images/icons/important.png" alt="Important" />
|
599
|
+
</td>
|
600
|
+
<td class="content">Please do not remove the <em>passenger-x.x.x</em> folder after
|
601
|
+
installation. Furthermore, the <em>passenger-x.x.x</em> folder must be accessible by Apache.</td>
|
602
|
+
</tr></table>
|
603
|
+
</div>
|
604
|
+
</div>
|
605
|
+
<h2 id="_deploying_a_ruby_on_rails_application">2. Deploying a Ruby on Rails application</h2>
|
606
|
+
<div class="sectionbody">
|
607
|
+
<div class="para"><p>Suppose you have a Ruby on Rails application in <em>/webapps/mycook</em>, and you own
|
608
|
+
the domain <em>www.mycook.com</em>. You can either deploy your application in the
|
609
|
+
virtual host's root (i.e. the application will be accessible from the root URL,
|
610
|
+
<em>http://www.mycook.com/</em>), or in a sub URI (i.e. the application will be
|
611
|
+
accessible from a sub URL, such as <em>http://www.mycook.com/railsapplication</em>).</p></div>
|
612
|
+
<div class="admonitionblock">
|
613
|
+
<table><tr>
|
614
|
+
<td class="icon">
|
615
|
+
<img src="./images/icons/note.png" alt="Note" />
|
616
|
+
</td>
|
617
|
+
<td class="content">The default <tt>RAILS_ENV</tt> environment in which deployed Rails applications
|
618
|
+
are run, is “production”. You can change this by changing the
|
619
|
+
<a href="#rails_env"><em>RailsEnv</em></a> configuration option.</td>
|
620
|
+
</tr></table>
|
621
|
+
</div>
|
622
|
+
<h3 id="_deploying_to_a_virtual_host_s_root">2.1. Deploying to a virtual host's root</h3><div style="clear:left"></div>
|
623
|
+
<div class="para"><p>Add a virtual host entry to your Apache configuration file. The virtual host's
|
624
|
+
document root must point to your Ruby on Rails application's <em>public</em> folder.
|
625
|
+
For example:</p></div>
|
626
|
+
<div class="listingblock">
|
627
|
+
<div class="content">
|
628
|
+
<pre><tt><VirtualHost *:80>
|
629
|
+
ServerName www.mycook.com
|
630
|
+
DocumentRoot /webapps/mycook/public
|
631
|
+
</VirtualHost></tt></pre>
|
632
|
+
</div></div>
|
633
|
+
<div class="para"><p>Then restart Apache. The application has now been deployed.</p></div>
|
634
|
+
<h3 id="deploying_to_sub_uri">2.2. Deploying to a sub URI</h3><div style="clear:left"></div>
|
635
|
+
<div class="para"><p>Suppose that you already have a virtual host:</p></div>
|
636
|
+
<div class="listingblock">
|
637
|
+
<div class="content">
|
638
|
+
<pre><tt><VirtualHost *:80>
|
639
|
+
ServerName www.phusion.nl
|
640
|
+
DocumentRoot /websites/phusion
|
641
|
+
</VirtualHost></tt></pre>
|
642
|
+
</div></div>
|
643
|
+
<div class="para"><p>And you want your Ruby on Rails application to be accessible from the URL
|
644
|
+
<em>http://www.phusion.nl/rails</em>.</p></div>
|
645
|
+
<div class="para"><p>To do this, make a symlink from your Ruby on Rails application's <em>public</em>
|
646
|
+
folder to a directory in the document root. For example:</p></div>
|
647
|
+
<div class="listingblock">
|
648
|
+
<div class="content">
|
649
|
+
<pre><tt>ln -s /webapps/mycook/public /websites/phusion/rails</tt></pre>
|
650
|
+
</div></div>
|
651
|
+
<div class="para"><p>Next, add a <tt>RailsBaseURI</tt> option to the virtual host configuration:</p></div>
|
652
|
+
<div class="listingblock">
|
653
|
+
<div class="content">
|
654
|
+
<pre><tt><VirtualHost *:80>
|
655
|
+
ServerName www.phusion.nl
|
656
|
+
DocumentRoot /websites/phusion
|
657
|
+
RailsBaseURI /rails # This line has been added.
|
658
|
+
</VirtualHost></tt></pre>
|
659
|
+
</div></div>
|
660
|
+
<div class="para"><p>Then restart Apache. The application has now been deployed.</p></div>
|
661
|
+
<h3 id="_redeploying_restarting_the_ruby_on_rails_application">2.3. Redeploying (restarting the Ruby on Rails application)</h3><div style="clear:left"></div>
|
662
|
+
<div class="para"><p>Deploying a new version of a Ruby on Rails application is as simple as
|
663
|
+
re-uploading the application files, and restarting the application.</p></div>
|
664
|
+
<div class="para"><p>There are two ways to restart the application:</p></div>
|
665
|
+
<div class="olist"><ol>
|
666
|
+
<li>
|
667
|
+
<p>
|
668
|
+
By restarting Apache.
|
669
|
+
</p>
|
670
|
+
</li>
|
671
|
+
<li>
|
672
|
+
<p>
|
673
|
+
By creating or modifying the file <em>tmp/restart.txt</em> in the Rails
|
674
|
+
application's root folder. Passenger will automatically restart the
|
675
|
+
application.
|
676
|
+
</p>
|
677
|
+
</li>
|
678
|
+
</ol></div>
|
679
|
+
<div class="para"><p>For example, to restart our example MyCook application, we type this in the
|
680
|
+
command line:</p></div>
|
681
|
+
<div class="listingblock">
|
682
|
+
<div class="content">
|
683
|
+
<pre><tt>touch /webapps/mycook/tmp/restart.txt</tt></pre>
|
684
|
+
</div></div>
|
685
|
+
</div>
|
686
|
+
<h2 id="_configuring_passenger">3. Configuring Passenger</h2>
|
687
|
+
<div class="sectionbody">
|
688
|
+
<div class="para"><p>After installation, Passenger does not need any further configurations.
|
689
|
+
Nevertheless, the system administrator may be interested in changing
|
690
|
+
Passenger's behavior. Passenger's Apache module supports the following
|
691
|
+
configuration options:</p></div>
|
692
|
+
<div class="vlist"><dl>
|
693
|
+
<dt>
|
694
|
+
RailsSpawnServer <filename>
|
695
|
+
</dt>
|
696
|
+
<dd>
|
697
|
+
<p>
|
698
|
+
The location to the Passenger spawn server. This configuration option is
|
699
|
+
essential to Passenger. The correct value is given by the installer,
|
700
|
+
and should usually not be changed manually.
|
701
|
+
</p>
|
702
|
+
<div class="para"><p>This option may only occur once, in the global server configuration. If
|
703
|
+
this option is not given, then Passenger will look for the program
|
704
|
+
<tt>passenger-spawn-server</tt> in <tt>$PATH</tt>.</p></div>
|
705
|
+
</dd>
|
706
|
+
<dt>
|
707
|
+
RailsBaseURI <uri>
|
708
|
+
</dt>
|
709
|
+
<dd>
|
710
|
+
<p>
|
711
|
+
Used to specify that the given URI is a Rails application. See
|
712
|
+
<a href="#deploying_to_sub_uri">Deploying to a sub URI</a> for an example.
|
713
|
+
</p>
|
714
|
+
<div class="para"><p>This option may occur multiple times, in the global server configuration or in a
|
715
|
+
virtual host configuration block.</p></div>
|
716
|
+
</dd>
|
717
|
+
<dt>
|
718
|
+
RailsAutoDetect <on|off>
|
719
|
+
</dt>
|
720
|
+
<dd>
|
721
|
+
<p>
|
722
|
+
Whether Passenger should automatically detect whether a virtual host's
|
723
|
+
document root is a Ruby on Rails application. The default is <em>on</em>.
|
724
|
+
</p>
|
725
|
+
<div class="para"><p>This option may occur in the global server configuration or in a virtual host
|
726
|
+
configuration block.</p></div>
|
727
|
+
<div class="para"><p>For example, consider the following configuration:</p></div>
|
728
|
+
<div class="listingblock">
|
729
|
+
<div class="content">
|
730
|
+
<pre><tt>RailsAutoDetect off
|
731
|
+
<VirtualHost *:80>
|
732
|
+
ServerName www.mycook.com
|
733
|
+
DocumentRoot /webapps/mycook/public
|
734
|
+
</VirtualHost></tt></pre>
|
735
|
+
</div></div>
|
736
|
+
<div class="para"><p>If one goes to <em>http://www.mycook.com/</em>, the visitor will see the contents of
|
737
|
+
the <em>/webapps/mycook/public</em> folder, instead of the output of the Ruby on Rails
|
738
|
+
application.</p></div>
|
739
|
+
<div class="para"><p>It is possible to explicitly specify that the host is a Ruby on Rails
|
740
|
+
application by using the <tt>RailsBaseURI</tt> configuration option:</p></div>
|
741
|
+
<div class="listingblock">
|
742
|
+
<div class="content">
|
743
|
+
<pre><tt>RailsAutoDetect off
|
744
|
+
<VirtualHost *:80>
|
745
|
+
ServerName www.mycook.com
|
746
|
+
DocumentRoot /webapps/mycook/public
|
747
|
+
RailsBaseURI /
|
748
|
+
</VirtualHost></tt></pre>
|
749
|
+
</div></div>
|
750
|
+
</dd>
|
751
|
+
</dl></div>
|
752
|
+
<div class="vlist" id="RailsAllowModRewrite"><dl>
|
753
|
+
<dt>
|
754
|
+
RailsAllowModRewrite <on|off>
|
755
|
+
</dt>
|
756
|
+
<dd>
|
757
|
+
<p>
|
758
|
+
If enabled, Passenger will not override mod_rewrite rules. Please read
|
759
|
+
<a href="#conflicting_apache_modules">Conflicting Apache modules</a> for details.
|
760
|
+
</p>
|
761
|
+
<div class="para"><p>This option may occur in the global server configuration or in a virtual host
|
762
|
+
configuration block. The default value is <em>off</em>.</p></div>
|
763
|
+
</dd>
|
764
|
+
<dt>
|
765
|
+
RailsRuby <filename>
|
766
|
+
</dt>
|
767
|
+
<dd>
|
768
|
+
<p>
|
769
|
+
This option allows one to specify the Ruby interpreter to use.
|
770
|
+
</p>
|
771
|
+
<div class="para"><p>This option may only occur once, in the global server configuration.
|
772
|
+
The default is <em>ruby</em>.</p></div>
|
773
|
+
</dd>
|
774
|
+
</dl></div>
|
775
|
+
<div class="vlist" id="rails_env"><dl>
|
776
|
+
<dt>
|
777
|
+
RailsEnv <string>
|
778
|
+
</dt>
|
779
|
+
<dd>
|
780
|
+
<p>
|
781
|
+
This option allows one to specify the default <tt>RAILS_ENV</tt> value.
|
782
|
+
</p>
|
783
|
+
<div class="para"><p>This option may only occur once, in the global server configuration.
|
784
|
+
The default is <em>production</em>.</p></div>
|
785
|
+
<div class="admonitionblock">
|
786
|
+
<table><tr>
|
787
|
+
<td class="icon">
|
788
|
+
<img src="./images/icons/tip.png" alt="Tip" />
|
789
|
+
</td>
|
790
|
+
<td class="content">Even though it is not possible to specify a different RailsEnv
|
791
|
+
per virtual host in the Apache configuration file, one can set the
|
792
|
+
Rails environment by editing <tt>RAILS_ENV=…</tt> in the application's
|
793
|
+
<em>config/environment.rb</em>.</td>
|
794
|
+
</tr></table>
|
795
|
+
</div>
|
796
|
+
</dd>
|
797
|
+
<dt>
|
798
|
+
RailsMaxPoolSize <integer>
|
799
|
+
</dt>
|
800
|
+
<dd>
|
801
|
+
<p>
|
802
|
+
The maximum number of Ruby on Rails application instances that may
|
803
|
+
be simultaneously active. A larger number results in higher memory usage,
|
804
|
+
but improved ability to handle concurrent HTTP clients.
|
805
|
+
</p>
|
806
|
+
<div class="para"><p>The optimal value depends on your system's hardware and the server's average
|
807
|
+
load. You should experiment with different values. But generally speaking,
|
808
|
+
the value should be at least equal to the number of CPUs (or CPU cores) that
|
809
|
+
you have. If your system has 2 GB of RAM, then we recommend a value of <em>30</em>.
|
810
|
+
If your system is a Virtual Private Server (VPS) and has about 256 MB RAM, and
|
811
|
+
is also running other services such as MySQL, then we recommend a value of <em>2</em>.</p></div>
|
812
|
+
<div class="para"><p>If you find that your server is unable to handle the load on your Rails websites
|
813
|
+
(i.e. running out of memory) then you should lower this value. (Though if your
|
814
|
+
sites are really that popular, then you should strongly consider upgrading your
|
815
|
+
hardware or getting more servers.)</p></div>
|
816
|
+
<div class="para"><p>This option may only occur once, in the global server configuration.
|
817
|
+
The default value is <em>20</em>.</p></div>
|
818
|
+
<div class="admonitionblock">
|
819
|
+
<table><tr>
|
820
|
+
<td class="icon">
|
821
|
+
<img src="./images/icons/tip.png" alt="Tip" />
|
822
|
+
</td>
|
823
|
+
<td class="content">We strongly recommend you to <a href="#reducing_memory_usage">use Ruby Enterprise Edition</a>. This allows you to reduce your memory usage by about 33%. And it's
|
824
|
+
not hard to install.</td>
|
825
|
+
</tr></table>
|
826
|
+
</div>
|
827
|
+
</dd>
|
828
|
+
<dt>
|
829
|
+
RailsPoolIdleTime <integer>
|
830
|
+
</dt>
|
831
|
+
<dd>
|
832
|
+
<p>
|
833
|
+
The maximum number of seconds that a Ruby on Rails application instance
|
834
|
+
may be idle. That is, if an application instance hasn't done anything after
|
835
|
+
the given number of seconds, then it will be shutdown in order to conserve
|
836
|
+
memory.
|
837
|
+
</p>
|
838
|
+
<div class="para"><p>Decreasing this value means that Rails applications will have to be spawned
|
839
|
+
more often. Since spawning is a relatively slow operation, some visitors may
|
840
|
+
notice a small delay when they visit your Rails site. However, it will also
|
841
|
+
free up resources used by Rails applications more quickly.</p></div>
|
842
|
+
<div class="para"><p>The optimal value depends on the average time that a visitor spends on a single
|
843
|
+
Rails web page. We recommend a value of <tt>2 * x</tt>, where <tt>x</tt> is the average
|
844
|
+
number of seconds that a visitor spends on a single Rails web page. But your
|
845
|
+
mileage may vary.</p></div>
|
846
|
+
<div class="para"><p>This option may only occur once, in the global server configuration.
|
847
|
+
The default value is <em>120</em>.</p></div>
|
848
|
+
</dd>
|
849
|
+
</dl></div>
|
850
|
+
<div class="vlist" id="RailsUserSwitching"><dl>
|
851
|
+
<dt>
|
852
|
+
RailsUserSwitching <on|off>
|
853
|
+
</dt>
|
854
|
+
<dd>
|
855
|
+
<p>
|
856
|
+
Whether to enable <a href="#user_switching">user switching support</a>.
|
857
|
+
</p>
|
858
|
+
<div class="para"><p>This option may only occur once, in the global server configuration.
|
859
|
+
The default value is <em>on</em>.</p></div>
|
860
|
+
</dd>
|
861
|
+
</dl></div>
|
862
|
+
<div class="vlist" id="RailsDefaultUser"><dl>
|
863
|
+
<dt>
|
864
|
+
RailsDefaultUser <username>
|
865
|
+
</dt>
|
866
|
+
<dd>
|
867
|
+
<p>
|
868
|
+
Passenger enables <a href="#user_switching">user switching support</a> by default.
|
869
|
+
This configuration option allows one to specify which user Rails
|
870
|
+
applications must run as, if user switching fails or is disabled.
|
871
|
+
</p>
|
872
|
+
<div class="para"><p>This option may only occur once, in the global server configuration.
|
873
|
+
The default value is <em>nobody</em>.</p></div>
|
874
|
+
</dd>
|
875
|
+
</dl></div>
|
876
|
+
</div>
|
877
|
+
<h2 id="_troubleshooting">4. Troubleshooting</h2>
|
878
|
+
<div class="sectionbody">
|
879
|
+
<h3 id="_problems_during_installation">4.1. Problems during installation</h3><div style="clear:left"></div>
|
880
|
+
<h4 id="installing_ruby_dev">4.1.1. Ruby development headers aren't installed</h4>
|
881
|
+
<div class="sidebarblock">
|
882
|
+
<div class="sidebar-content">
|
883
|
+
<div class="sidebar-title">Symptoms</div>
|
884
|
+
<div class="para"><p>Installing Passenger fails because of one of the following errors:</p></div>
|
885
|
+
<div class="ilist"><ul>
|
886
|
+
<li>
|
887
|
+
<p>
|
888
|
+
The Passenger installer tells you that the Ruby development headers aren't
|
889
|
+
installed.
|
890
|
+
</p>
|
891
|
+
</li>
|
892
|
+
<li>
|
893
|
+
<p>
|
894
|
+
The error message “<em>no such file to load — mkmf”</em> occurs.
|
895
|
+
</p>
|
896
|
+
</li>
|
897
|
+
<li>
|
898
|
+
<p>
|
899
|
+
The error message “<em>ruby.h: No such file or directory”</em> occurs.
|
900
|
+
</p>
|
901
|
+
</li>
|
902
|
+
</ul></div>
|
903
|
+
</div></div>
|
904
|
+
<div class="para"><p>Passenger makes use of a native extension, so the Ruby development headers
|
905
|
+
must be installed. On most Linux systems, Ruby and the Ruby development headers
|
906
|
+
are contained in separate packages, so having Ruby installed does not
|
907
|
+
automatically imply having the development headers installed.</p></div>
|
908
|
+
<div class="para"><p>Here's how you can install the development headers:</p></div>
|
909
|
+
<div class="vlist"><dl>
|
910
|
+
<dt>
|
911
|
+
Ubuntu/Debian
|
912
|
+
</dt>
|
913
|
+
<dd>
|
914
|
+
<p>
|
915
|
+
Please type:
|
916
|
+
</p>
|
917
|
+
<div class="listingblock">
|
918
|
+
<div class="content">
|
919
|
+
<pre><tt>sudo apt-get install ruby1.8-dev</tt></pre>
|
920
|
+
</div></div>
|
921
|
+
</dd>
|
922
|
+
<dt>
|
923
|
+
Fedora/CentOS/RHEL
|
924
|
+
</dt>
|
925
|
+
<dd>
|
926
|
+
<p>
|
927
|
+
Please type:
|
928
|
+
</p>
|
929
|
+
<div class="listingblock">
|
930
|
+
<div class="content">
|
931
|
+
<pre><tt>su -c 'yum install ruby-devel'</tt></pre>
|
932
|
+
</div></div>
|
933
|
+
</dd>
|
934
|
+
<dt>
|
935
|
+
FreeBSD
|
936
|
+
</dt>
|
937
|
+
<dd>
|
938
|
+
<p>
|
939
|
+
Please install Ruby from <em>ports</em> or with <tt>pkg_add</tt>. If that fails,
|
940
|
+
please install Ruby from source.
|
941
|
+
</p>
|
942
|
+
</dd>
|
943
|
+
<dt>
|
944
|
+
MacOS X
|
945
|
+
</dt>
|
946
|
+
<dd>
|
947
|
+
<p>
|
948
|
+
Please install Ruby from source.
|
949
|
+
</p>
|
950
|
+
</dd>
|
951
|
+
<dt>
|
952
|
+
Other operating systems
|
953
|
+
</dt>
|
954
|
+
<dd>
|
955
|
+
<p>
|
956
|
+
Please consult your operating system's native package database.
|
957
|
+
There should be a package containing the Ruby development headers.
|
958
|
+
If that fails, please install Ruby from source.
|
959
|
+
</p>
|
960
|
+
</dd>
|
961
|
+
</dl></div>
|
962
|
+
<div class="admonitionblock">
|
963
|
+
<table><tr>
|
964
|
+
<td class="icon">
|
965
|
+
<img src="./images/icons/note.png" alt="Note" />
|
966
|
+
</td>
|
967
|
+
<td class="content">If you've installed a new Ruby version (i.e. your system now contains
|
968
|
+
multiple Ruby installations), then you will need to tell Passenger which Ruby
|
969
|
+
installation you want to use. Please read
|
970
|
+
<a href="#specifying_ruby_installation">Specifying the correct Ruby installation</a>.</td>
|
971
|
+
</tr></table>
|
972
|
+
</div>
|
973
|
+
<h4 id="_apache_development_headers_aren_t_installed">4.1.2. Apache development headers aren't installed</h4>
|
974
|
+
<div class="sidebarblock">
|
975
|
+
<div class="sidebar-content">
|
976
|
+
<div class="sidebar-title">Symptoms</div>
|
977
|
+
<div class="para"><p>Installing Passenger fails because of one of the following errors:</p></div>
|
978
|
+
<div class="ilist"><ul>
|
979
|
+
<li>
|
980
|
+
<p>
|
981
|
+
The installer says that the Apache development headers aren't installed.
|
982
|
+
</p>
|
983
|
+
</li>
|
984
|
+
<li>
|
985
|
+
<p>
|
986
|
+
The error message “<em>httpd.h: No such file or directory”</em> occurs.
|
987
|
+
</p>
|
988
|
+
<div class="para"><p>(Instead of <em>httpd.h</em>, the message might also be <em>http_config.h</em> or something
|
989
|
+
else similar to <em>http_*.h</em>.)</p></div>
|
990
|
+
</li>
|
991
|
+
</ul></div>
|
992
|
+
</div></div>
|
993
|
+
<div class="vlist"><dl>
|
994
|
+
<dt>
|
995
|
+
Ubuntu
|
996
|
+
</dt>
|
997
|
+
<dd>
|
998
|
+
<p>
|
999
|
+
Please type:
|
1000
|
+
</p>
|
1001
|
+
<div class="listingblock">
|
1002
|
+
<div class="content">
|
1003
|
+
<pre><tt>sudo apt-get install apache2-prefork-dev</tt></pre>
|
1004
|
+
</div></div>
|
1005
|
+
</dd>
|
1006
|
+
<dt>
|
1007
|
+
Debian
|
1008
|
+
</dt>
|
1009
|
+
<dd>
|
1010
|
+
<p>
|
1011
|
+
Please type:
|
1012
|
+
</p>
|
1013
|
+
<div class="listingblock">
|
1014
|
+
<div class="content">
|
1015
|
+
<pre><tt>sudo apt-get install apache2-dev</tt></pre>
|
1016
|
+
</div></div>
|
1017
|
+
</dd>
|
1018
|
+
<dt>
|
1019
|
+
Fedora/CentOS/RHEL
|
1020
|
+
</dt>
|
1021
|
+
<dd>
|
1022
|
+
<p>
|
1023
|
+
Please type:
|
1024
|
+
</p>
|
1025
|
+
<div class="listingblock">
|
1026
|
+
<div class="content">
|
1027
|
+
<pre><tt>su -c 'yum install httpd-devel'</tt></pre>
|
1028
|
+
</div></div>
|
1029
|
+
</dd>
|
1030
|
+
<dt>
|
1031
|
+
FreeBSD
|
1032
|
+
</dt>
|
1033
|
+
<dd>
|
1034
|
+
<p>
|
1035
|
+
Please install Apache from <em>ports</em> or with <tt>pkg_add</tt>. If that fails,
|
1036
|
+
please install Apache from source.
|
1037
|
+
</p>
|
1038
|
+
</dd>
|
1039
|
+
<dt>
|
1040
|
+
MacOS X
|
1041
|
+
</dt>
|
1042
|
+
<dd>
|
1043
|
+
<p>
|
1044
|
+
Please install Apache from source.
|
1045
|
+
</p>
|
1046
|
+
</dd>
|
1047
|
+
<dt>
|
1048
|
+
Other operating systems
|
1049
|
+
</dt>
|
1050
|
+
<dd>
|
1051
|
+
<p>
|
1052
|
+
Please consult your operating system's native package database.
|
1053
|
+
There should be a package containing the Apache development headers.
|
1054
|
+
If that fails, please install Apache from source.
|
1055
|
+
</p>
|
1056
|
+
</dd>
|
1057
|
+
</dl></div>
|
1058
|
+
<h4 id="_apr_development_headers_aren_t_installed">4.1.3. APR development headers aren't installed</h4>
|
1059
|
+
<div class="sidebarblock">
|
1060
|
+
<div class="sidebar-content">
|
1061
|
+
<div class="sidebar-title">Symptoms</div>
|
1062
|
+
<div class="para"><p>Installing Passenger fails because one of the following errors:</p></div>
|
1063
|
+
<div class="ilist"><ul>
|
1064
|
+
<li>
|
1065
|
+
<p>
|
1066
|
+
The installer tells you that APR development headers aren't installed.
|
1067
|
+
</p>
|
1068
|
+
</li>
|
1069
|
+
<li>
|
1070
|
+
<p>
|
1071
|
+
The error message “<em>apr_pools.h: No such file or directory”</em> occurs.
|
1072
|
+
</p>
|
1073
|
+
</li>
|
1074
|
+
<li>
|
1075
|
+
<p>
|
1076
|
+
The error message “<em>apr_strings.h: No such file or directory”</em> occurs.
|
1077
|
+
</p>
|
1078
|
+
</li>
|
1079
|
+
</ul></div>
|
1080
|
+
</div></div>
|
1081
|
+
<div class="vlist"><dl>
|
1082
|
+
<dt>
|
1083
|
+
Ubuntu
|
1084
|
+
</dt>
|
1085
|
+
<dd>
|
1086
|
+
<p>
|
1087
|
+
Please type:
|
1088
|
+
</p>
|
1089
|
+
<div class="listingblock">
|
1090
|
+
<div class="content">
|
1091
|
+
<pre><tt>sudo apt-get install libapr1-dev</tt></pre>
|
1092
|
+
</div></div>
|
1093
|
+
</dd>
|
1094
|
+
<dt>
|
1095
|
+
Debian
|
1096
|
+
</dt>
|
1097
|
+
<dd>
|
1098
|
+
<p>
|
1099
|
+
Please type:
|
1100
|
+
</p>
|
1101
|
+
<div class="listingblock">
|
1102
|
+
<div class="content">
|
1103
|
+
<pre><tt>sudo apt-get install libapr1-dev</tt></pre>
|
1104
|
+
</div></div>
|
1105
|
+
</dd>
|
1106
|
+
<dt>
|
1107
|
+
Fedora/CentOS/RHEL
|
1108
|
+
</dt>
|
1109
|
+
<dd>
|
1110
|
+
<p>
|
1111
|
+
Please type:
|
1112
|
+
</p>
|
1113
|
+
<div class="listingblock">
|
1114
|
+
<div class="content">
|
1115
|
+
<pre><tt>su -c 'yum install apr-devel'</tt></pre>
|
1116
|
+
</div></div>
|
1117
|
+
</dd>
|
1118
|
+
<dt>
|
1119
|
+
Other Linux distributions
|
1120
|
+
</dt>
|
1121
|
+
<dd>
|
1122
|
+
<p>
|
1123
|
+
Please consult your distribution's package database. There should be a
|
1124
|
+
package which provides APR development headers.
|
1125
|
+
</p>
|
1126
|
+
</dd>
|
1127
|
+
<dt>
|
1128
|
+
Other operating systems
|
1129
|
+
</dt>
|
1130
|
+
<dd>
|
1131
|
+
<p>
|
1132
|
+
The APR development are bundled with Apache. If the APR headers aren't,
|
1133
|
+
then it probably means that they have been removed after Apache's been
|
1134
|
+
installed. Please reinstall Apache to get back the APR headers.
|
1135
|
+
</p>
|
1136
|
+
</dd>
|
1137
|
+
</dl></div>
|
1138
|
+
<h4 id="_passenger_is_using_the_wrong_apache_during_installation">4.1.4. Passenger is using the wrong Apache during installation</h4>
|
1139
|
+
<div class="para"><p>Please <a href="#specifying_correct_apache_install">Specifying the correct Apache installation</a>, and re-run the Passenger installer.</p></div>
|
1140
|
+
<h4 id="_passenger_is_using_the_wrong_ruby_during_installation">4.1.5. Passenger is using the wrong Ruby during installation</h4>
|
1141
|
+
<div class="para"><p>Please <a href="#specifying_ruby_installation">Specifying the correct Ruby installation</a>, and re-run the Passenger installer.</p></div>
|
1142
|
+
<h3 id="_problems_after_installation">4.2. Problems after installation</h3><div style="clear:left"></div>
|
1143
|
+
<div class="admonitionblock">
|
1144
|
+
<table><tr>
|
1145
|
+
<td class="icon">
|
1146
|
+
<img src="./images/icons/tip.png" alt="Tip" />
|
1147
|
+
</td>
|
1148
|
+
<td class="content">
|
1149
|
+
<div class="title">The golden tip: read your Apache error logs!</div>
|
1150
|
+
<div class="para"><p><em>mod_passenger</em> will write all errors to the Apache error log. So if
|
1151
|
+
you're experiencing post-installation problems, please look
|
1152
|
+
inside the Apache error logs. It will tell you what exactly went wrong.</p></div>
|
1153
|
+
</td>
|
1154
|
+
</tr></table>
|
1155
|
+
</div>
|
1156
|
+
<h4 id="_passenger_has_been_compiled_against_the_wrong_apache_installation">4.2.1. Passenger has been compiled against the wrong Apache installation</h4>
|
1157
|
+
<div class="sidebarblock">
|
1158
|
+
<div class="sidebar-content">
|
1159
|
+
<div class="sidebar-title">Symptoms</div>
|
1160
|
+
<div class="para"><p>Apache crashes during startup (after being daemonized). The Apache error log
|
1161
|
+
says “<em>seg fault or similar nasty error detected in the parent process”</em>.</p></div>
|
1162
|
+
</div></div>
|
1163
|
+
<div class="para"><p>This problem is most likely to occur on MacOS X. Most OS X users have multiple
|
1164
|
+
Apache installations on their system.</p></div>
|
1165
|
+
<div class="para"><p>To solve this problem, please <a href="#specifying_correct_apache_install">specify the correct Apache installation</a>, and <a href="#install_passenger">reinstall Passenger</a>.</p></div>
|
1166
|
+
<h4 id="_the_apache_error_log_says_that_the_spawn_manager_script_does_not_exist_or_that_it_does_not_have_permission_to_execute_it">4.2.2. The Apache error log says that the spawn manager script does not exist, or that it does not have permission to execute it</h4>
|
1167
|
+
<div class="para"><p>If you are sure that the RailsSpawnServer configuration option is set correctly,
|
1168
|
+
then this problem is most likely caused by the fact that you're running Apache
|
1169
|
+
with SELinux. On Fedora, CentOS and RedHat Enterprise Linux, Apache is locked
|
1170
|
+
down by SELinux policies.</p></div>
|
1171
|
+
<div class="para"><p>To solve this problem, you must set some permissions on the Passenger files and
|
1172
|
+
folders, so that Apache can access them.</p></div>
|
1173
|
+
<div class="ilist"><ul>
|
1174
|
+
<li>
|
1175
|
+
<p>
|
1176
|
+
If you've installed Passenger via a gem, then you must first find out the
|
1177
|
+
location in which RubyGems stores gem files. Type the following command:
|
1178
|
+
</p>
|
1179
|
+
<div class="listingblock">
|
1180
|
+
<div class="content">
|
1181
|
+
<pre><tt>gem environment | grep 'INSTALLATION DIRECTORY'</tt></pre>
|
1182
|
+
</div></div>
|
1183
|
+
<div class="para"><p>It should show something along the lines of:</p></div>
|
1184
|
+
<div class="listingblock">
|
1185
|
+
<div class="content">
|
1186
|
+
<pre><tt> - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8</tt></pre>
|
1187
|
+
</div></div>
|
1188
|
+
<div class="para"><p>The directory name that you see in the output is the RubyGems gem folder.
|
1189
|
+
Next, we'll fix the Passenger folder permissions as follows:</p></div>
|
1190
|
+
<div class="listingblock">
|
1191
|
+
<div class="content">
|
1192
|
+
<pre><tt>cd /usr/lib/ruby/gems/1.8 # Replace this with whatever your gem folder is.
|
1193
|
+
cd gems
|
1194
|
+
chcon -R -h -t httpd_sys_content_t passenger-*</tt></pre>
|
1195
|
+
</div></div>
|
1196
|
+
</li>
|
1197
|
+
<li>
|
1198
|
+
<p>
|
1199
|
+
If you've installed Passenger via the source tarball, then run the following
|
1200
|
+
command:
|
1201
|
+
</p>
|
1202
|
+
<div class="listingblock">
|
1203
|
+
<div class="content">
|
1204
|
+
<pre><tt>chcon -R -h -t httpd_sys_content_t /path/to/passenger/folder</tt></pre>
|
1205
|
+
</div></div>
|
1206
|
+
</li>
|
1207
|
+
</ul></div>
|
1208
|
+
<div class="para"><p>Once the permissions are fixed, restart Apache.</p></div>
|
1209
|
+
<h3 id="_the_rails_application_reports_that_it_s_unable_to_start_because_of_a_permission_error">4.3. The Rails application reports that it's unable to start because of a permission error</h3><div style="clear:left"></div>
|
1210
|
+
<div class="para"><p>Please check whether your Rails application's folder has the correct
|
1211
|
+
permissions. By default, Rails applications are started as the owner of the
|
1212
|
+
file <em>config/environment.rb</em>, except if the file is owned by root. If the
|
1213
|
+
file is owned by root, then the Rails application will be started as <em>nobody</em>
|
1214
|
+
(or as the user specify by <a href="#RailsDefaultUser">RailsDefaultUser</a>, if that's
|
1215
|
+
specified).</p></div>
|
1216
|
+
<div class="para"><p>Please read <a href="#user_switching">User switching (security)</a> for details.</p></div>
|
1217
|
+
</div>
|
1218
|
+
<h2 id="_tips_and_notes">5. Tips and notes</h2>
|
1219
|
+
<div class="sectionbody">
|
1220
|
+
<h3 id="user_switching">5.1. User switching (security)</h3><div style="clear:left"></div>
|
1221
|
+
<div class="para"><p>There is a problem that plagues most PHP web host, namely the fact that all PHP
|
1222
|
+
applications are run in the same user context as the web server. So for
|
1223
|
+
example, Joe's PHP application will be able to read Jane's PHP application's
|
1224
|
+
passwords. This is obviously undesirable on many servers.</p></div>
|
1225
|
+
<div class="para"><p>Passenger solves this problem by implementing <em>user switching</em>. A Rails
|
1226
|
+
application is started as the owner of the file <em>config/environment.rb</em>. So if
|
1227
|
+
<em>/home/webapps/foo/config/environment.rb</em> is owned by <em>joe</em>, then Passenger
|
1228
|
+
will launch the corresponding Rails application as <em>joe</em> as well.</p></div>
|
1229
|
+
<div class="para"><p>This behavior is the default, and you don't need to configure anything. But
|
1230
|
+
there are things that you should keep in mind:</p></div>
|
1231
|
+
<div class="ilist"><ul>
|
1232
|
+
<li>
|
1233
|
+
<p>
|
1234
|
+
The owner of <em>environment.rb</em> must have read access to the Rails application's
|
1235
|
+
folder, and read/write access to the Rails application's <em>logs</em> folder.
|
1236
|
+
</p>
|
1237
|
+
</li>
|
1238
|
+
<li>
|
1239
|
+
<p>
|
1240
|
+
This feature is only available if Apache is started by <em>root</em>. This is the
|
1241
|
+
case on most Apache installations.
|
1242
|
+
</p>
|
1243
|
+
</li>
|
1244
|
+
<li>
|
1245
|
+
<p>
|
1246
|
+
Under no circumstances will Rails applications be run as <em>root</em>. If
|
1247
|
+
<em>environment.rb</em> is owned as root or by an unknown user, then the Rails
|
1248
|
+
application will run as the user specified by
|
1249
|
+
<a href="#RailsDefaultUser">RailsDefaultUser</a>.
|
1250
|
+
</p>
|
1251
|
+
</li>
|
1252
|
+
</ul></div>
|
1253
|
+
<div class="para"><p>User switching can be disabled with the
|
1254
|
+
<a href="#RailsUserSwitching">RailsUserSwitching</a> option.</p></div>
|
1255
|
+
<h3 id="reducing_memory_usage">5.2. Reducing memory consumption of Ruby on Rails apps by 33%</h3><div style="clear:left"></div>
|
1256
|
+
<div class="para"><p>Is it possible to reduce memory consumption of your Rails apps by 33% on average,
|
1257
|
+
by using <a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a>.
|
1258
|
+
Please visit the website for details.</p></div>
|
1259
|
+
<h3 id="_moving_passenger_to_a_different_directory">5.3. Moving Passenger to a different directory</h3><div style="clear:left"></div>
|
1260
|
+
<div class="para"><p>It is possible to relocate the Passenger files to a different directory. It
|
1261
|
+
involves two steps:</p></div>
|
1262
|
+
<div class="olist"><ol>
|
1263
|
+
<li>
|
1264
|
+
<p>
|
1265
|
+
Moving the directory.
|
1266
|
+
</p>
|
1267
|
+
</li>
|
1268
|
+
<li>
|
1269
|
+
<p>
|
1270
|
+
Updating the “RailsSpawnServer” configuration option in Apache.
|
1271
|
+
</p>
|
1272
|
+
</li>
|
1273
|
+
</ol></div>
|
1274
|
+
<div class="para"><p>For example, if Passenger is located in <em>/opt/passenger/</em>, and you'd like to
|
1275
|
+
move it to <em>/usr/local/passenger/</em>, then do this:</p></div>
|
1276
|
+
<div class="olist"><ol>
|
1277
|
+
<li>
|
1278
|
+
<p>
|
1279
|
+
Run the following command:
|
1280
|
+
</p>
|
1281
|
+
<div class="listingblock">
|
1282
|
+
<div class="content">
|
1283
|
+
<pre><tt>mv /opt/passenger /usr/local/passenger</tt></pre>
|
1284
|
+
</div></div>
|
1285
|
+
</li>
|
1286
|
+
<li>
|
1287
|
+
<p>
|
1288
|
+
Edit your Apache configuration file, and set:
|
1289
|
+
</p>
|
1290
|
+
<div class="listingblock">
|
1291
|
+
<div class="content">
|
1292
|
+
<pre><tt>RailsSpawnServer /usr/local/passenger/bin/passenger-spawn-server</tt></pre>
|
1293
|
+
</div></div>
|
1294
|
+
</li>
|
1295
|
+
</ol></div>
|
1296
|
+
<h3 id="_installing_multiple_ruby_on_rails_versions">5.4. Installing multiple Ruby on Rails versions</h3><div style="clear:left"></div>
|
1297
|
+
<div class="para"><p>Each Ruby on Rails applications that are going to be deployed may require a
|
1298
|
+
specific Ruby on Rails version. You can install a specific version with
|
1299
|
+
this command:</p></div>
|
1300
|
+
<div class="listingblock">
|
1301
|
+
<div class="content">
|
1302
|
+
<pre><tt>gem install rails -v X.X.X</tt></pre>
|
1303
|
+
</div></div>
|
1304
|
+
<div class="para"><p>where <em>X.X.X</em> is the version number of Ruby on Rails.</p></div>
|
1305
|
+
<div class="para"><p>All of these versions will exist in parallel, and will not conflict with each
|
1306
|
+
other. Passenger will automatically make use of the correct version.</p></div>
|
1307
|
+
<h3 id="_x_sendfile_support">5.5. X-Sendfile support</h3><div style="clear:left"></div>
|
1308
|
+
<div class="para"><p>Passenger does not provide X-Sendfile support by itself. Please install
|
1309
|
+
<a href="http://tn123.ath.cx/mod_xsendfile/">mod_xsendfile</a> for X-Sendfile support.</p></div>
|
1310
|
+
<h3 id="conflicting_apache_modules">5.6. Conflicting Apache modules</h3><div style="clear:left"></div>
|
1311
|
+
<div class="para"><p>Passenger conflicts with <em>mod_rewrite</em> and <em>mod_alias</em>. Those modules may be
|
1312
|
+
installed and loaded together with <em>mod_passenger</em>, and they will work fine
|
1313
|
+
outside virtual hosts that contain a Rails application, but we recommend you
|
1314
|
+
not to use their features inside virtual hosts that contain a Rails
|
1315
|
+
application.</p></div>
|
1316
|
+
<div class="para"><p>By default, Passenger will override mod_rewrite rules on Rails hosts. This is
|
1317
|
+
because the default .htaccess, as provided by Ruby on Rails, redirects all
|
1318
|
+
requests to `dispatch.cgi' using mod_rewrite. This is a CGI application which
|
1319
|
+
loads the entire Ruby on Rails framework for every request, and thus is very
|
1320
|
+
slow. If we do not override mod_rewrite, then Ruby on Rails apps will be slow
|
1321
|
+
on Passenger by default — but we want a good out-of-the-box experience.</p></div>
|
1322
|
+
<div class="para"><p>Furthermore, the primary reason why people use mod_rewrite with Rails
|
1323
|
+
applications, is to accelerate page caching. Passenger supports page caching
|
1324
|
+
out-of-the-box, without mod_rewrite.</p></div>
|
1325
|
+
<div class="para"><p>It is not fully understood how mod_alias conflicts with Passenger, but we
|
1326
|
+
recommend you not to use it on Rails virtual hosts. mod_alias rules can result
|
1327
|
+
in surprising problems.</p></div>
|
1328
|
+
<div class="para"><p>If you really want to use mod_rewrite on Rails virtual hosts, then please set
|
1329
|
+
the <a href="#RailsAllowModRewrite">RailsAllowModRewrite</a> configuration option. But
|
1330
|
+
please note that you will have to delete Rails applications' default .htaccess
|
1331
|
+
file, or add rewrite rules to negate its effects.</p></div>
|
1332
|
+
</div>
|
1333
|
+
<h2 id="_appendix_a_about_this_document">6. Appendix A: About this document</h2>
|
1334
|
+
<div class="sectionbody">
|
1335
|
+
<div class="para"><p>The text of this document is licensed under the
|
1336
|
+
<a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons
|
1337
|
+
Attribution-Share Alike 3.0 Unported License</a>.</p></div>
|
1338
|
+
<div class="para"><p><span class="image">
|
1339
|
+
<a class="image" href="http://creativecommons.org/licenses/by-sa/3.0/">
|
1340
|
+
<img src="images/by_sa.png" alt="images/by_sa.png" />
|
1341
|
+
</a>
|
1342
|
+
</span></p></div>
|
1343
|
+
<div class="para"><p>Passenger is brought to you by Phusion.</p></div>
|
1344
|
+
<div class="para"><p><span class="image">
|
1345
|
+
<a class="image" href="http://www.phusion.nl/">
|
1346
|
+
<img src="images/phusion_banner.png" alt="images/phusion_banner.png" />
|
1347
|
+
</a>
|
1348
|
+
</span></p></div>
|
1349
|
+
</div>
|
1350
|
+
<div id="footer">
|
1351
|
+
<div id="footer-text">
|
1352
|
+
Last updated 2008-04-10 21:31:28 CEST
|
1353
|
+
</div>
|
1354
|
+
</div>
|
1355
|
+
</body>
|
1356
|
+
</html>
|